| 검색 | ?

DPDK(Data Plane Development Kit)

1.1. 개요

https://www.dpdk.org/about/
[PNG image (15.58 KB)]


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 개발 환경

[https]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 환경
$ 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 실행 환경

[https]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)

[https]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)

1.5. 참고자료



Copyright ⓒ MINZKN.COM
All Rights Reserved.