DPDK(Data Plane Development Kit)
- 작성자
- 고친과정
2024년 2월 4일 : 처음씀 (작성 중, 학습 중)
- 주요 내용 출처 : https://doc.dpdk.org/
1.1. 개요
DPDK(Data Plane Development Kit)는 EAL(Environment Abstraction Layer, 환경 추상화 계층)을 통해 다양한 CPU 아키텍처에서 실행되는 패킷 처리 계층을 가속화하기 위한 표준 인터페이스 라이브러리들로 구성된 프레임 워크입니다.
이 문서는 개인적으로 DPDK(Data Plane Development Kit)을 조사하면서 수집된 문서들을 바탕으로 이를 정리하는 것을 목표로 작성되었습니다. 경우에 따라서 개인적인 해석관점에서 작성되어 잘못된 내용이 있을 수 있다는 점은 염두하면서 읽어주시고 바로 잡아야 할 내용이 있으면 저에게 피드백을 요청드리면서 이 문서를 여러분과 함께 작성해보고자 하며 이미 선두에서 DPDK(Data Plane Development Kit)를 탄생시키고 학습하고 자료를 남겨주신 선배님들과 피드백을 주실 모든 분들에게 감사의 뜻을 전합니다.
현재 이 문서는 아직 학습 및 작성 중에 있는 문서입니다.
TODO: EAL, mempool, ring, mbuf, pmd, ...
1.2. DPDK 개발 환경
Compilation of the DPDK 를 참고하실 수 있습니다.
기본 빌드 환경에 필요한 요구사항
DPDK source 다운로드 및 빌드 실습
기본 빌드 환경에 필요한 요구사항
- GCC (version 5.0+) or Clang (version 3.6+)
- pkg-config or pkgconf
- Python 3.6+
- Meson (version 0.53.2+)
- pyelftools (version 0.22+)
- libnuma library
$ apt install build-essential $ apt install meson ninja-build $ apt install python3-pyelftools $ apt install libnuma-dev $ apt install python3-sphinx python3-sphinx-rtd-theme doxygen
DPDK source 다운로드 및 빌드 실습
$ git clone https://github.com/DPDK/dpdk.git MyDPDK $ cd MyDPDK $ meson setup -D enable_docs=true -D examples=all build $ cd build $ ninja ... $ meson install --destdir "$(HOME)/MyRootFS"
1.3. DPDK 실행 환경
Running DPDK Applications 를 참고하실 수 있습니다.
기본 실행 환경에 필요한 요구사항
기본 실행 환경에 필요한 요구사항
- Kernel version >= 4.14
- HUGETLBFS
- PROC_PAGE_MONITOR support
- HPET and HPET_MMAP
- glibc >= 2.7
1.4. EAL (Environment Abstraction Layer)
Environment Abstraction Layer 를 참고하실 수 있습니다.
EAL (Environment Abstraction Layer, 환경 추상화 계층)은 DPDK의 Application 및 Library에서 실행되는 다양한 환경의 H/W 및 Memory space 같은 하위 수준의 자원(resources)등의 접근에 필요한 권한을 확보하도록 일반적인 추상화 인터페이스로 제공합니다.
EAL이 제공하는 기본적인 서비스는 다음과 같습니다.
EAL (Environment Abstraction Layer, 환경 추상화 계층)은 DPDK의 Application 및 Library에서 실행되는 다양한 환경의 H/W 및 Memory space 같은 하위 수준의 자원(resources)등의 접근에 필요한 권한을 확보하도록 일반적인 추상화 인터페이스로 제공합니다.
EAL이 제공하는 기본적인 서비스는 다음과 같습니다.
- DPDK loading and launching
- Support for multi-process and multi-thread execution types
- Core affinity/assignment procedures
- System memory allocation/de-allocation
- Atomic/lock operations
- Time reference
- PCI bus access
- Trace and debug functions
- CPU feature identification
- Interrupt handling
- Alarm operations
- Memory management (malloc)
1.5. 참고자료
- https://doc.dpdk.org/
- License
The DPDK uses the Open Source BSD-3-Clause license for the core libraries and drivers. The kernel components are GPL-2.0 licensed. ... 상세한 내용은 DPDK source 의 license 디렉토리에서 README를 참고 ...
- Getting Started Guide for Linux
- Programmer’s Guide
- API Documentation
- Supported Hardware
- DPDK 23.11 Download
- DPDK repositories (git.dpdk.org)
$ git clone https://dpdk.org/git/dpdk
- DPDK - Github
$ git clone https://github.com/DPDK/dpdk.git
- https://elixir.bootlin.com/dpdk/latest/source
- License
- DPDK Project - YouTube
- Data Plane Development Kit - WIKIPEDIA
- Intel DPDK - 나무위키
- XDP(eXpress Data Path)
- NVIDIA BlueField Networking Platform - NVIDIA
- Achieve fast packet processing and low latency with NVIDIA Poll Mode Driver (PMD) in DPDK
- Data Processing Units (DPU) - MARVELL PRODUCTS
- The Fast Data Project (FD.io), Vector Packet Processing (VPP)
- DPDK로 더 빠른 네트워크 패킷 처리 사용 설정 - Google Cloud
- DPDK와 FD.io VPP로 고성능 Security Gateway 만들기
Kernel-bypass techniques for high-speed network packet processing 참고 영상
Understanding the Performance of DPDK as a Computer Architect 참고 영상
A high speed user level TCP stack on DPDK 참고 영상
13 Poll Mode Driver for XDP Zero Copy Sivaprasad Tummala, Intel India 참고 영상
DPDK PMD for AF_XDP 참고 영상