#keywords 프로그래밍,DPDK,Data,Plane,Development,Kit #title DPDK(Data Plane Development Kit) [wiki:Home 대문] / [wiki:CategoryProgramming 프로그래밍], [wiki:CategoryNetwork 네트웍] / [wiki:DPDK DPDK(Data Plane Development Kit)] ---- == [wiki:DPDK DPDK(Data Plane Development Kit)] == * 작성자 조재혁([mailto:minzkn@minzkn.com]) * 고친과정 2024년 2월 4일 : 처음씀 (작성 중, 학습 중) * 주요 내용 출처 : [^https://doc.dpdk.org/] [[TableOfContents]] === 개요 === [[attachment:dpdk-logo.png https://www.dpdk.org/about/]] 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, ... === DPDK 개발 환경 === [^https://doc.dpdk.org/guides/linux_gsg/sys_reqs.html#compilation-of-the-dpdk Compilation of the DPDK] 를 참고하실 수 있습니다. 기본 빌드 환경에 필요한 요구사항 * 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 Ubuntu/Debian Linux 환경 {{{#!plain $ 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 다운로드 및 빌드 실습 {{{#!plain $ 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" }}} === DPDK 실행 환경 === [^https://doc.dpdk.org/guides/linux_gsg/sys_reqs.html#running-dpdk-applications Running DPDK Applications] 를 참고하실 수 있습니다. 기본 실행 환경에 필요한 요구사항 * Kernel version >= 4.14 * HUGETLBFS * PROC_PAGE_MONITOR support * HPET and HPET_MMAP * glibc >= 2.7 === EAL (Environment Abstraction Layer) === [^https://doc.dpdk.org/guides/prog_guide/overview.html#environment-abstraction-layer Environment Abstraction Layer] 를 참고하실 수 있습니다. 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) === 참고자료 === * [^https://doc.dpdk.org/] * License {{{#!plain 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를 참고 ... }}} * [^https://doc.dpdk.org/guides/linux_gsg/ Getting Started Guide for Linux] * [^https://doc.dpdk.org/guides/linux_gsg/sys_reqs.html#compilation-of-the-dpdk Compilation of the DPDK] * [^https://doc.dpdk.org/guides/linux_gsg/sys_reqs.html#running-dpdk-applications Running DPDK Applications] * [^https://doc.dpdk.org/guides/linux_gsg/build_dpdk.html Compiling the DPDK Target from Source] * '''[^https://doc.dpdk.org/guides/prog_guide/ Programmer’s Guide]''' * [^https://doc.dpdk.org/api/ API Documentation] * [^https://core.dpdk.org/supported/ Supported Hardware] * [^https://fast.dpdk.org/rel/dpdk-23.11.tar.xz DPDK 23.11 Download] * [^https://git.dpdk.org/ DPDK repositories (git.dpdk.org)] {{{#!plain $ git clone https://dpdk.org/git/dpdk }}} * [^https://github.com/DPDK DPDK - Github] {{{#!plain $ git clone https://github.com/DPDK/dpdk.git }}} * [^https://elixir.bootlin.com/dpdk/latest/source] * [^https://www.youtube.com/@dpdkproject DPDK Project - YouTube] * [^https://en.wikipedia.org/wiki/Data_Plane_Development_Kit Data Plane Development Kit - WIKIPEDIA] * [^https://namu.wiki/w/Intel%20DPDK Intel DPDK - 나무위키] * [wiki:XDP XDP(eXpress Data Path)] * [^https://www.nvidia.com/en-us/networking/products/data-processing-unit/ NVIDIA BlueField Networking Platform - NVIDIA] * [^https://developer.nvidia.com/networking/dpdk Achieve fast packet processing and low latency with NVIDIA Poll Mode Driver (PMD) in DPDK] * [^https://www.marvell.com/products/data-processing-units.html Data Processing Units (DPU) - MARVELL PRODUCTS] * [^https://fd.io/ The Fast Data Project (FD.io), Vector Packet Processing (VPP)] * [^https://cloud.google.com/compute/docs/networking/use-dpdk DPDK로 더 빠른 네트워크 패킷 처리 사용 설정 - Google Cloud] * [^https://slowbootkernelhacks.blogspot.com/2020/10/dpdk-fdio-vpp-security-gateway.html DPDK와 FD.io VPP로 고성능 Security Gateway 만들기] |Kernel-bypass techniques for high-speed network packet processing| 참고 영상 || || [[Play(https://youtu.be/MpjlWt7fvrw)]] || |Understanding the Performance of DPDK as a Computer Architect| 참고 영상 || || [[Play(https://youtu.be/VdskkbCzglE)]] || |A high speed user level TCP stack on DPDK| 참고 영상 || || [[Play(https://youtu.be/59FlzV2q3_k)]] || |13 Poll Mode Driver for XDP Zero Copy Sivaprasad Tummala, Intel India| 참고 영상 || || [[Play(https://youtu.be/rsr_eIDCm8M)]] || |DPDK PMD for AF_XDP| 참고 영상 || || [[Play(https://youtu.be/gZdeTmcazjE)]] ||