데이터 평면 개발 키트

Data Plane Development Kit
DPDK
Data Plane Development Kit.png
안정적 해제
22.03 / 2022년 3월 17일(2022-03-17)[1]
리포지토리git.dpdk.org/dpdk/
기록 위치C
운영 체제Linux, FreeBSD, Windows
유형패킷 처리
면허증BSD
웹사이트www.dpdk.org

DPDK(Data Plane Development Kit)는 리눅스 재단이 관리하는 오픈 소스 소프트웨어 프로젝트다.운영 체제 커널에서 사용자 공간에서 실행되는 프로세스TCP 패킷 처리를 오프로드하기 위한 일련의 데이터 평면 라이브러리와 네트워크 인터페이스 컨트롤러 폴링 모드 드라이버를 제공한다.이러한 오프로드 작업은 커널에서 제공되는 인터럽트 기반 프로세싱을 사용하는 것보다 더 높은 컴퓨팅 효율성과 높은 패킷 처리량을 달성한다.

DPDK는 x86, ARM, PowerPC 프로세서를 위한 프로그래밍 프레임워크를 제공하며 고속 데이터 패킷 네트워킹 애플리케이션의 신속한 개발을 가능하게 한다.[2][3]인텔 아톰과 같은 모바일 프로세서에서 인텔 Xeon과 같은 서버급 프로세서로 확장된다.인텔, IBM POWER8, EZchip, ARM 등의 명령 집합 아키텍처를 지원한다.[4]오픈 소스[5] BSD 라이센스에 따라 제공 및 지원된다.

DPDK는 인텔 엔지니어 벤키 벤카테산(Benky Venkatesan)에 의해 만들어졌는데, 그는 애칭으로 "DPDK의 아버지"로 알려져 있다.암과의 오랜 투병 끝에 2018년 세상을 떠났다.

개요

DPDK 프레임워크는 환경 추상화 계층(EAL)의 생성을 통해 특정 하드웨어/소프트웨어 환경을 위한 라이브러리 세트를 만든다.[6][7]EAL은 환경 세부사항을 숨기고 라이브러리, 사용 가능한 하드웨어 가속기 및 기타 하드웨어 및 운영 체제(리눅스, FreeB)에 표준 프로그래밍 인터페이스를 제공한다.SD) 요소.특정 환경에 대해 EAL이 생성되면 개발자는 라이브러리에 연결하여 응용프로그램을 만든다.예를 들어, EAL은 Linux, FreeBSD, Intel IA-32 또는 64비트, IBM POWER9ARM 32 또는 64비트를 지원하는 프레임워크를 제공한다.

또한 EAL은 시간 참조, 일반 버스 액세스, 추적 및 디버그 기능, 경보 작동을 포함한 추가 서비스를 제공한다.

DPDK 라이브러리를 사용하면 커널과 커널을 사용자 복사본으로 제거하는 사용자 공간에서 낮은 오버헤드 완성, 파이프라인 또는 스테이징, 이벤트 기반 또는 하이브리드 모델을 완전히 구현할 수 있다.NIC/Regex/Accelerator의 하드웨어 지원, ISA([8]Intelligence Storage Acceleration)를 사용하여 대량 성능을 높이고 폴링을 통해 디바이스에 액세스할 수 있도록 향상된 라이브러리는 인터럽트의 성능 오버헤드 제거에도 도움이 된다.대용량 메모리 풀 할당에 대용량 페이지가 사용되어 조회 및 페이지 관리량이 감소한다.[9]

또한 DPDK에는 소프트웨어 아키텍처에 대한 모범 사례, 데이터 구조 설계 및 스토리지에 대한 팁, 애플리케이션 프로파일링 및 성능 튜닝 유틸리티와 일반적인 네트워크 성능 결손을 해결하는 팁이 포함되어 있다.

도서관

DPDK에는 다음과 같은 데이터 평면 라이브러리와 최적화된 NIC(네트워크 인터페이스 컨트롤러) 드라이버가 포함되어 있다.[10]

  • 대기열 관리자가 잠금 없는 대기열 구현
  • 버퍼 관리자가 고정 크기 버퍼를 사전 할당
  • 메모리 관리자는 메모리에 있는 객체 풀을 할당하고 링을 사용하여 여유 객체를 저장하며, 객체가 모든 DRAM 채널에 균등하게 분산되도록 보장
  • PMD(Poll Mode Driver)는 비동기 알림 없이 작동하도록 설계되어 오버헤드 감소
  • 패킷 프레임워크 – 패킷 처리를 개발하는 데 도움이 되는 라이브러리 세트

모든 라이브러리가 dpdk/lib/librte_* 디렉토리에 저장됨

플러그인

DPDK에는 많은 하드웨어 유형의 드라이버가 포함되어 있다.[11]과거에는 사용되지 않는 것으로 간주되는 일부 추가 Out-of-Tree 플러그인 드라이버가 있었다.

  • librete_pmd_mbnet3.따라서 – 기본 DPDK에서 전체 VMXNET3 지원으로 대체된 Vmxnet3 반가상화 NIC를 지원하는 PMD 이더넷 계층 제공
  • librete_pmd_memnic_copy.so – 패킷의 메모리 복사본 2개를 기반으로 공유 메모리를 통해 가상 PMD 이더넷 계층 제공

환경

DPDK는 원래 현재 사용되지 않는 베어 메탈 모드를 사용하여 실행되도록 설계되었다.사실, DPDK의 EAL은 리눅스나 FreeB에 대한 지원을 제공한다.SD userland 애플리케이션.

모든 프로세서를 지원하기 위해 EAL을 확장할 수 있다.

생태계

DPDK는 현재 리눅스 재단의 오픈소스 프로젝트로 많은 기업들이 지원하고 있다.DPDK는 이사회의 지배를 받는다.기술 활동은 기술 위원회가 감독한다.[12]DPDK에 기여하고 있는 인텔 외에도 몇몇 다른 벤더들도 DPDK를 제품 내에서 지원하고 일부는 추가 교육, 지원 및 프로페셔널 서비스를 제공한다.DPDK 지원을 발표한 공급업체 목록에는 6WIND,[13] ALTEN 칼소프트 랩스,[14][15] 어드벤텍,[16] Brocade,[17] 빅 스위치 네트워크, 멜라노스 테크놀로지,[18] 라디시스,[19] 티에토,[20] 윈드 리버,[21] 래너,[22] NXP 등이 포함되어 있다.[23]

프로젝트

pfSense 프로젝트는 2015년 2월 25일 개발자 짐 톰슨이 DPDK를 이용해 pf, 네트워크 패킷 포워딩 및 쉐이핑, 링크 본딩, IPsec 등 pfSense 코어를 다시 쓰는 로드맵을 발표했다. "우리는 최소한 14.88Mpps의 패킷 필터링으로 포워드 할 수 있다는 목표를 가지고 있다.이것은 10Gbps 인터페이스의 '라인 레이트'이다.오늘날의 FreeBSD(또는 Linux) 인커널 스택을 이러한 유형의 로드에 사용할 방법이 전혀 없다."[24]

OVS(Open vSwitch)에는 Linux 커널 OVS 처리를 바이패스하는 데 활용할 수 있는 userland를 실행하는 제한된 기능 세트가 있다.DPDK 사용자랜드가 있는 OVS의 이 사용 사례는 대개 OVS-DPDK로 명명된다.주로 OpenStack Neutron과 함께 구축되지만 Openstack의 많은 기능과 SDN(소프트웨어 정의 네트워킹) 기능이 비활성화된 것으로 가정한다.예를 들어, OVS-DPDK를 사용할 때 중성자는 OVS 커널을 사용할 때보다 낮은 수준의 보안을 제공한다(상태 저장 방화벽이 없고 보안 그룹이 적음).

FD.IO VPP 플랫폼은 즉시 사용 가능한 생산 품질 스위치/라우터 기능을 제공하는 확장 가능한 프레임워크다.시스코의 VPP(Vector Packet Processing) 기술의 오픈 소스 버전으로, 범용 CPU에서 실행할 수 있는 고성능 패킷 처리 스택과 NIC 및 암호 가속 하드웨어 및 라이브러리 모두에 대해 폴 모드 드라이버를 활용할 수 있다.[25]VPP는 DPDK 라이브러리를 지원하고 사용한다.[26]

TRex는 DPDK를 사용하는 오픈 소스 트래픽 생성기다.실제 트래픽 템플릿의 전처리 및 스마트 재생을 기반으로 L4–7 트래픽을 생성한다.TRex는 클라이언트 및 서버측 트래픽을 모두 증폭하며 Intel XL710을 사용하여 UCS 1개로 200Gbit/s까지 확장할 수 있다.또한 TRex는 다중 스트림을 지원하고, 패킷 필드를 변경할 수 있으며 스트림별 통계, 지연 시간 및 지터를 제공한다.[27]

DTS(DPDK Test Suite)는 기능 테스트 및 벤치마크를 위한 파이썬 기반 프레임워크다.2014년부터 시작된 오픈소스 프로젝트로 dpdk.org에서 진행하고 있다.스캐피나 dpdk-pktgen 같은 소프트웨어 트래픽 발생기와 이샤 같은 하드웨어 트래픽 발생기를 모두 지원한다.[28]

DPDK는 여러 SRIOV 네트워크 드라이버를 지원하여 PF(물리적 기능) 및 VF를 생성할 수 있으며, 또한 VM(예: QEMU VM)을 시작하고 PCI 패스스루를 사용하여 VF를 할당할 수 있다.

DDP(Dynamic Device Personalization)는 DPDK로 구현된 새로운 고급 기능 중 하나이다.호스트를 재설정하지 않고도 장치에 대한 펌웨어를 동적으로 로드할 수 있다.[30]

참조

  1. ^ "DPDK". core.dpdk.org.
  2. ^ Simon Stanley, All Change for Packet Processing 2016년 8월 21일 Wayback Machine, Havy Reading, 2013년 8월 21일 보관
  3. ^ Shamus McGillicudy, DPDK, 스위치서버 참조 설계는 SDN 에코시스템을 전진, SearchSDN, 2013년 4월
  4. ^ "DPDK: Data Plane Development Kit – What it is". dpdk.org. dpdk.org. Retrieved 29 March 2016.
  5. ^ 사이먼 스탠리, DDDK, 오픈소스, 인텔 임베디드 커뮤니티, 2013년 5월
  6. ^ DPDK 문서, 데이터 평면 개발 키트: 프로그래머 가이드, 2017년 9월
  7. ^ "How can DPDK access devices from user space?". CodiLime. 22 August 2019. Retrieved 28 August 2019.
  8. ^ "How DPDK can Deflate your Data! SNIA". www.snia.org. Retrieved 21 June 2021.
  9. ^ PANTHEON.tech (9 January 2020). "VPP 105: Memory Management & DPDK APIs". PANTHEON.tech. Retrieved 21 June 2021.
  10. ^ Intel Communications Infrastructure Division, Data Plane Development Kit 개요, 2012년 12월
  11. ^ "지원되는 NICS"
  12. ^ DPDK 기술 위원회
  13. ^ PRWeb, 6WIND, 데이터 평면 개발 키트로 휴대용 패킷 처리 소프트웨어 확장, 2011년 9월
  14. ^ Calsoft Labs to offer professional services and support for Data Plane Development Kit, ALTEN Calsoft Labs, 18 February 2014, archived from the original on 4 March 2016, retrieved 28 October 2014
  15. ^ https://builders.intel.com/docs/ALTEN-Calsoft-Labs-and-Intel-Improving-Network-Agility-with-Virtual-CPE.pdf[bare URL PDF]
  16. ^ COTS Journal, ATCA 블레이드, 2016년 3월 4일 웨이백 머신보관Xeon E5-2600 프로세서 제공, 2012년 6월
  17. ^ Brocade vRouter
  18. ^ Technologies, Mellanox. "Data Plane Development Kit (DPDK) Poll Mode Driver (PMD)". Mellanox. Retrieved 10 February 2021.
  19. ^ MarketWatch, Radisys, 2012년 9월 업계 최초의 데이터 평면 개발 키트 40G 솔루션 제공
  20. ^ Tieto, Tieto는 Data Plane Development Kit, 2012년 2월에 전문적인 소프트웨어 서비스와 지원을 제공한다.
  21. ^ 로이터, Wind River에서 고성능 패킷 처리를 위한 데이터 평면 개발 키트에 대한 지원서비스 제공, 2012년 5월
  22. ^ Get Flying with the Data Plane Development Kit, Lanner Electronics Inc., 20 February 2013, retrieved 11 July 2013
  23. ^ NXP Platform support in Data Plane Development Kit
  24. ^ Thompson, Jim (25 February 2015). "Further (a roadmap for pfSense)". blog.pfsense.org. Electric Sheep Fencing LLC. Retrieved 21 April 2015.
  25. ^ "VPP fd.io". wiki.fd.io. Linux Foundation. Retrieved 29 December 2016.
  26. ^ PANTHEON.tech (9 January 2020). "VPP 105: Memory Management & DPDK APIs". PANTHEON.tech. Retrieved 21 June 2021.
  27. ^ 이름=Trex
  28. ^ Rami Rosen, DPDK를 통한 네트워크 가속, lwn.net, 2017년 7월
  29. ^ Rami Rosen, Userspace Networking with DPDK, Linux Journal, 2018년 4월.
  30. ^ 라미 로젠, 깊이 DPDK, 커널 TLV, 2018년 8월