맨위로가기

DPDK

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

DPDK(Data Plane Development Kit)는 고속 데이터 처리를 위한 라이브러리 및 드라이버 집합이다. 환경 추상화 계층(EAL)을 통해 다양한 하드웨어 및 운영 체제를 지원하며, 폴링 방식을 사용하여 인터럽트 오버헤드를 줄여 빠른 데이터 플레인 성능을 제공한다. 큐 관리자, 버퍼 관리자, 메모리 관리자 등을 포함하는 라이브러리와 다양한 하드웨어 드라이버를 제공하며, 오픈 소스 프로젝트로 여러 기업의 지원을 받는다. pfSense, Open vSwitch, FD.IO VPP 플랫폼 등 다양한 활용 사례가 있으며, 트래픽 생성기인 TRex와 DPDK 테스트 스위트(DTS)와 같은 관련 프로젝트도 존재한다.

더 읽어볼만한 페이지

  • 리눅스 재단 프로젝트 - 하이퍼레저
    하이퍼레저는 리눅스 재단에서 주도하는 오픈소스 블록체인 프로젝트로, 산업 전반의 블록체인 기술 협력 및 발전을 목표하며 글로벌 비즈니스 거래를 지원하기 위해 시스템 성능과 안정성 향상에 중점을 두고 다양한 하위 플랫폼과 도구를 제공하는 것이 특징이다.
  • 리눅스 재단 프로젝트 - 쿠버네티스
    쿠버네티스는 컨테이너화된 애플리케이션을 자동으로 배포, 스케일링, 관리하는 오픈 소스 시스템으로, 구글의 Borg 시스템에서 영감을 받아 설계되었으며 파드, 서비스 등의 기능을 제공하여 클라우드 네이티브 환경에서 중요한 역할을 한다.
  • 이더넷 - 기가비트 이더넷
    기가비트 이더넷은 1 Gbit/s의 전송 속도를 지원하는 이더넷 표준으로, 광섬유 및 UTP 케이블을 통해 다양한 기기에 적용되어 광대역 인터넷과 기업 네트워크의 주요 기술로 사용되었으나, 더 빠른 이더넷 기술의 발전으로 비중은 줄어들고 있지만 비용 효율성과 호환성으로 인해 중요한 역할을 지속할 것으로 예상된다.
  • 이더넷 - 네트워크 인터페이스 컨트롤러
    네트워크 인터페이스 컨트롤러(NIC)는 컴퓨터를 네트워크에 연결하는 하드웨어 구성 요소이며, 다양한 네트워크 표준을 지원하고, 최근에는 성능 향상 기술과 가상 네트워크 인터페이스를 지원하기도 한다.
DPDK - [IT 관련 정보]에 관한 문서
일반 정보
DPDK 로고
DPDK 로고
최신 릴리스 버전24.11
최신 릴리스 날짜2024년 11월 30일
운영 체제리눅스
FreeBSD
윈도우
장르패킷 처리
프로그래밍 언어C
저장소DPDK 저장소
라이선스BSD
웹사이트DPDK 공식 웹사이트

2. 역사

(이전 단계에서 결과물이 없었으므로, 수정할 내용이 없습니다. 원본 소스와 요약 정보가 제공되어야 DPDK 문서의 '역사' 섹션을 작성하고, 그 결과물을 검토 및 수정할 수 있습니다.)

3. 기술적 특징

DPDK는 환경 추상화 계층(EAL)을 통해 특정 하드웨어 및 소프트웨어 환경에 맞는 라이브러리 집합을 제공한다.[36] EAL은 환경 관련 세부 정보를 숨기고, 라이브러리에 사용 가능한 하드웨어 가속기 및 기타 하드웨어와 운영 체제(리눅스, FreeBSD) 요소에 대한 표준 프로그래밍 인터페이스를 제공한다. 개발자는 특정 환경을 위한 EAL이 만들어지면 라이브러리에 링크하여 자신의 응용 프로그램을 만들 수 있다.

DPDK는 빠른 데이터 플레인 성능을 위해 낮은 오버헤드(low overhead) run-to-completion 모델을 구현했고, 폴링을 통해 장치에 접근하여 인터럽트 처리의 성능 오버헤드를 제거하였다. 또한, 커널 및 커널-사용자 복사를 제거하여 사용자 공간에서 파이프라인, 스테이지, 이벤트 구동 또는 하이브리드 모델을 구현할 수 있다. NIC/정규 표현식/가속기의 하드웨어 지원, 대량 성능을 위해 지능형 스토리지 가속(ISA)를 활용하도록 향상된 라이브러리[9]인터럽트의 성능 오버헤드를 제거하는 데 도움이 된다.

DPDK에는 소프트웨어 아키텍처의 모범 사례, 데이터 구조 설계 및 스토리지에 대한 팁, 응용 프로그램 프로파일링 및 성능 튜닝 유틸리티, 일반적인 네트워크 성능 결함을 해결하는 팁을 강조하는 소프트웨어 예제가 포함되어 있다.

3. 1. 환경 추상화 계층 (EAL: Environment Abstraction Layer)

DPDK 프레임워크는 환경 추상화 계층(EAL)을 만들어 특정 하드웨어/소프트웨어 환경을 위한 라이브러리 집합을 만든다.[36] EAL은 환경 특화 요소들을 숨기고, 사용 가능한 하드웨어 가속기와 다른 하드웨어와 운영 체제(리눅스, FreeBSD) 요소인 표준 프로그래밍 인터페이스를 라이브러리에 제공한다. 특정 환경을 위한 EAL이 만들어지면 개발자는 라이브러리에 링크하여 자신의 응용 프로그램을 만들 수 있다. 이를테면 EAL은 리눅스, FreeBSD, 인텔 IA-32/64비트, IBM POWER9 및 ARM 32비트 또는 64비트를 지원하는 프레임워크를 제공한다.

EAL은 시간 참조, 일반 버스 접근, 추적 및 디버그 기능, 알람 작업을 포함한 추가 서비스도 제공한다.

DPDK 라이브러리를 사용하면 커널 및 커널-사용자 복사를 제거하여 낮은 오버헤드 run-to-completion, 파이프라인 또는 스테이지, 이벤트 구동 또는 하이브리드 모델을 완전히 사용자 공간에서 구현할 수 있다. NIC/정규 표현식/가속기의 하드웨어 지원, 대량 성능을 위해 지능형 스토리지 가속(ISA)를 활용하도록 향상된 라이브러리[9]폴링을 통해 장치에 접근하면 인터럽트의 성능 오버헤드도 제거하는 데 도움이 된다. 대량 메모리 풀 할당을 위해 Hugepage를 사용하여 조회를 줄이고 페이지 관리를 줄인다.[10]

DPDK는 원래 현재 사용이 중단된 베어 메탈 모드를 사용하여 실행되도록 설계되었다. DPDK의 EAL은 리눅스 또는 FreeBSD 사용자 공간 응용 프로그램을 지원한다.

EAL은 모든 프로세서를 지원하도록 확장될 수 있다.

3. 2. 폴링 모드 드라이버 (PMD: Poll Mode Driver)

DPDK는 환경 추상화 계층(EAL)을 통해 특정 하드웨어/소프트웨어 환경을 위한 라이브러리 집합을 제공한다.[36] EAL은 환경 특화 요소를 숨기고, 사용 가능한 하드웨어 가속기와 다른 하드웨어 및 운영 체제(리눅스, FreeBSD) 요소에 대한 표준 프로그래밍 인터페이스를 라이브러리에 제공한다. 개발자는 특정 환경을 위한 EAL이 만들어지면 라이브러리에 링크하여 자신의 응용 프로그램을 만들 수 있다. 예를 들어, EAL은 리눅스, FreeBSD, 인텔 IA 32/64비트, IBM 파워8을 지원하는 프레임워크를 제공한다.

DPDK는 빠른 데이터 플레인 성능을 위해 인터럽트 처리의 성능 오버헤드를 제거하는 폴링 방식의 low overhead run-to-completion 모델을 구현했다.

3. 3. 메모리 관리

DPDK 프레임워크는 환경 추상화 계층(EAL)을 통해 특정 하드웨어나 소프트웨어 환경을 위한 라이브러리 집합을 제공한다.[36] EAL은 환경 특화 요소를 숨기고, 사용 가능한 하드웨어 가속기와 기타 하드웨어 및 운영 체제( 리눅스, FreeBSD) 요소에 대한 표준 프로그래밍 인터페이스를 라이브러리에 제공한다. 개발자는 특정 환경에 맞게 만들어진 EAL에 라이브러리를 링크하여 응용 프로그램을 개발할 수 있다. 예를 들어, EAL은 리눅스, FreeBSD, 인텔 IA 32/64비트, IBM 파워8을 지원하는 프레임워크를 제공한다.

EAL은 메모리 관리 외에도 시간 참조, 일반 버스 접근, 추적 및 디버그 기능, 알람 작업 등 추가 서비스도 제공한다.

DPDK는 빠른 데이터 플레인 성능을 위해 인터럽트 처리 오버헤드를 제거하는 폴링 방식의 low overhead run-to-completion 모델을 구현했다.[37]

또한 DPDK는 소프트웨어 아키텍처 모범 사례를 강조하는 소프트웨어 예제, 데이터 구조 설계 및 저장 팁, 응용 프로그램 프로파일링 및 성능 조정 유틸리티, 일반적인 네트워크 성능 결함에 대한 팀을 포함한다.

DPDK에 포함된 최적화된 NIC 드라이버 및 데이터 플레인 라이브러리는 다음과 같다:[37]

  • 큐 관리자: 락이 없는 큐(lockless queues)를 구현한다.
  • 버퍼 관리자: 고정 크기 버퍼를 미리 할당한다.
  • 메모리 관리자: 메모리에 오브젝트 풀을 할당하고 링을 사용하여 빈(free) 오브젝트를 저장한다. 모든 DRAM 채널에 객체가 균등하게 분산되도록 한다.
  • 폴 모드 드라이버(PMD): 비동기 통보 없이 동작하도록 설계되어 부하를 줄인다.
  • 패킷 프레임워크: 패킷 처리 개발을 돕는 라이브러리 집합이다.


모든 라이브러리는 `dpdk/lib/librte_*` 디렉터리에 저장된다.

3. 4. 큐 관리

DPDK는 최적화된 NIC 드라이버와 데이터 플레인 라이브러리를 포함한다.[37] 락이 없는 큐(lockless queues)를 구현하는 큐 관리자가 여기에 포함된다.

3. 5. 기타 기능

DPDK는 환경 추상화 계층(EAL)을 만들어 특정 하드웨어나 소프트웨어 환경에 맞는 라이브러리 집합을 생성한다.[36] EAL은 환경 특화 요소들을 숨기고, 사용 가능한 하드웨어 가속기와 다른 하드웨어 및 운영 체제(리눅스, FreeBSD) 요소인 표준 프로그래밍 인터페이스를 라이브러리에 제공한다. 특정 환경을 위한 EAL이 만들어지면 개발자는 라이브러리에 링크하여 자신의 응용 프로그램을 만들 수 있다. 이를테면 EAL은 프레임워크를 제공하여 리눅스, FreeBSD, 인텔 IA-32/64비트, IBM POWER9를 지원할 수 있다.

또한 EAL은 시간 참조, 일반 버스 접근, 추적 및 디버그 기능, 알람 작업을 포함한 추가 서비스를 제공한다.

DPDK는 빠른 데이터 플레인 성능을 위한 low overhead run-to-completion 모델을 구현했고, 폴링을 통해 장치에 접근하여 인터럽트 처리의 성능 오버헤드를 제거하였다.

또한 DPDK에는 소프트웨어 아키텍처의 모범 사례를 강조하는 소프트웨어 예제, 데이터 구조 디자인 및 저장에 대한 팁, 응용 프로그램 프로파일링 및 성능 조정 유틸리티, 일반적인 네트워크 성능 결함에 대한 팁이 포함되어 있다.

4. 라이브러리 및 플러그인

DPDK는 데이터 평면 라이브러리와 최적화된 네트워크 인터페이스 컨트롤러(NIC) 드라이버를 포함하며, 여기에는 다음이 포함된다:[11]


  • 락이 없는 큐, 버퍼, 메모리 관리자
  • 폴 모드 드라이버(PMD)
  • 패킷 프레임워크


모든 라이브러리는 dpdk/lib/librte_\* 디렉토리에 저장된다. DPDK는 다양한 하드웨어 유형에 대한 드라이버를 포함하며,[12] 과거에는 몇몇 추가적인 트리 외부 플러그인 드라이버가 있었지만, 현재는 사용이 중단된 것으로 간주된다.

4. 1. 라이브러리

DPDK는 다음과 같은 기능을 위한 데이터 평면 라이브러리와 최적화된 NIC 드라이버를 포함한다.[11][37]

  • 락이 없는 큐를 구현하는 큐 관리자
  • 고정 크기 버퍼를 미리 할당하는 버퍼 관리자
  • 메모리에 객체 풀을 할당하고 자유 객체를 저장하기 위해 링을 사용하는 메모리 관리자; 모든 DRAM 채널에서 객체가 동일하게 분산되도록 보장
  • 비동기 알림 없이 작동하도록 설계되어 오버헤드를 줄이는 폴 모드 드라이버(PMD)
  • 패킷 처리를 개발하는 데 도움이 되는 라이브러리 집합인 패킷 프레임워크


모든 라이브러리는 dpdk/lib/librte_* 디렉토리에 저장된다.

4. 2. 플러그인

DPDK는 다양한 하드웨어 유형에 대한 드라이버를 포함하고 있다.[12][38] 과거에는 몇몇 추가적인 트리 외부 플러그인 드라이버가 있었지만, 현재는 사용이 중단된 것으로 간주된다.

  • `librte_pmd_vmxnet3.so`는 Vmxnet3 반가상화 NIC를 지원하는 PMD 이더넷 계층을 제공한다. 네이티브 DPDK에서 전체 VMXNET3 지원으로 대체되었다.
  • `librte_pmd_memnic_copy.so`는 패킷의 두 번의 메모리 복사를 기반으로 하는 공유 메모리를 통해 가상 PMD 이더넷 계층을 제공한다.

5. 생태계 및 활용 사례

DPDK는 리눅스 재단 산하의 오픈 소스 프로젝트로, 운영 위원회와 기술 위원회의 관리를 받으며 발전하고 있다.[13] 인텔을 비롯한 여러 기업들이 DPDK를 지원하며, 다양한 활용 사례를 보여준다. (자세한 내용은 하위 섹션 참조)

5. 1. 지원 기업

DPDK는 현재 리눅스 재단 산하의 오픈 소스 프로젝트이며, 많은 기업의 지원을 받고 있다. DPDK는 운영 위원회에 의해 관리되며, 기술적인 활동은 기술 위원회에서 감독한다.[13] 인텔 외에도 여러 공급업체들이 자사 제품 내에서 DPDK를 지원하며, 추가적인 교육, 지원 및 전문 서비스를 제공하기도 한다. DPDK 지원을 발표한 공급업체 목록은 다음과 같다.

5. 2. 활용 사례

pfSense 프로젝트는 2015년 2월 25일에 로드맵을 발표했으며, 개발자 짐 톰슨은 DPDK를 사용하여 pfSense 코어—pf, 네트워크 패킷 전달 및 셰이핑, 링크 본딩, IPsec을 포함—를 다시 작성한다고 발표했다. "우리는 최소 14.88Mpps의 속도로 패킷 필터링을 통해 전달할 수 있는 것을 목표로 합니다. 이는 10Gbps 인터페이스에서 '회선 속도'입니다. 오늘날의 FreeBSD(또는 Linux) 인커널 스택을 이러한 유형의 부하에 사용할 방법은 없습니다."[25]

Open vSwitch(OVS)는 Linux 커널 OVS 처리를 우회하기 위해 활용할 수 있는 제한된 기능 집합을 사용자 공간에서 실행한다. DPDK 사용자 공간과 함께 OVS를 사용하는 이 사용 사례는 일반적으로 OVS-DPDK라고 불린다. 이는 대부분 OpenStack Neutron과 함께 배포되지만, Openstack의 많은 기능과 소프트웨어 정의 네트워킹(SDN) 기능을 비활성화한다고 가정한다. 예를 들어 OVS-DPDK를 사용하면 Neutron은 OVS 커널을 사용할 때보다 낮은 수준의 보안을 제공한다(상태 저장 방화벽 없음, 보안 그룹 감소).

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

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

DTS(DPDK 테스트 스위트)는 기능 테스트 및 벤치마크를 위한 Python 기반 프레임워크이다. 2014년에 시작된 오픈 소스 프로젝트이며 dpdk.org에서 호스팅된다. Scapy 및 dpdk-pktgen과 같은 소프트웨어 트래픽 생성기와 Ixia와 같은 하드웨어 트래픽 생성기를 모두 지원한다.[29]

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

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

참조

[1] 웹사이트 DPDK http://core.dpdk.org[...]
[2] 뉴스 All Change for Packet Processing http://www.heavyread[...] Heavy Reading 2013
[3] 뉴스 DPDK, switch and server ref designs push SDN ecosystem forward http://searchsdn.tec[...] SearchSDN 2013-04
[4] 웹사이트 DPDK: Data Plane Development Kit – What it is http://dpdk.org/ 2016-03-29
[5] 뉴스 DPDK Goes Open-Source http://embedded.comm[...] Intel Embedded Community 2013-05
[6] 웹사이트 In Loving Memory: Venky Venkatesan, "The Father of DPDK" https://www.dpdk.org[...] 2022-05-12
[7] 간행물 Data Plane Development Kit: Programmers Guide http://dpdk.org/doc/[...] DPDK Docs 2017-09
[8] 웹사이트 How can DPDK access devices from user space? https://codilime.com[...] 2019-08-28
[9] 웹사이트 How DPDK can Deflate your Data! https://www.snia.org[...] 2021-06-21
[10] 웹사이트 VPP 105: Memory Management & DPDK APIs https://pantheon.tec[...] 2021-06-21
[11] 간행물 Data Plane Development Kit Overview http://www.intel.com[...] Intel Communications Infrastructure Division 2012-12
[12] 문서 Supported NICS http://dpdk.org/doc/[...]
[13] 문서 DPDK Technical Board http://dpdk.org/abou[...]
[14] 뉴스 6WIND Extends Portable Packet Processing Software to Support Data Plane Development Kit http://www.prweb.com[...] PRWeb 2011-09
[15] 간행물 Calsoft Labs to offer professional services and support for Data Plane Development Kit http://www.calsoftla[...] ALTEN Calsoft Labs 2014-10-28
[16] PDF https://builders.int[...] 2022-03
[17] 뉴스 ATCA Blade Serves Up Xeon E5-2600 Processor http://www.cotsjourn[...] COTS Journal 2012-06
[18] 문서 Brocade vRouter http://www.brocade.c[...]
[19] 웹사이트 Data Plane Development Kit (DPDK) {{!}} Poll Mode Driver (PMD) https://www.mellanox[...] 2021-02-10
[20] 뉴스 Radisys Delivers Industry's First 40G Solution for Data Plane Development Kit http://www.marketwat[...] MarketWatch 2012-09
[21] 뉴스 Tieto provides professional software services and support for the Data Plane Development Kit https://www.dpdk.org[...] Tieto 2012-02
[22] 뉴스 Wind River Delivers Support and Services for Data Plane Development Kit for High-Performance Packet Processing https://archive.toda[...] Reuters 2012-05
[23] 간행물 Get Flying with the Data Plane Development Kit http://www.lannerinc[...] Lanner Electronics Inc. 2013-07-11
[24] 간행물 NXP Platform support in Data Plane Development Kit http://core.dpdk.org[...]
[25] 웹사이트 Further (a roadmap for pfSense) https://blog.pfsense[...] Electric Sheep Fencing LLC. 2015-04-21
[26] 웹사이트 VPP fd.io https://wiki.fd.io/v[...] Linux Foundation 2016-12-29
[27] 웹사이트 VPP 105: Memory Management & DPDK APIs https://pantheon.tec[...] 2021-06-21
[28] 웹사이트 TRex https://trex-tgn.cis[...] Cisco Systems 2016-12-29
[29] 뉴스 Network acceleration with DPDK https://lwn.net/Arti[...] lwn.net 2017-07
[30] 뉴스 Userspace Networking with DPDK https://www.linuxjou[...] Linux Journal 2018-04
[31] 문서 DPDK in depth http://docs.wixstati[...] Kernel TLV 2018-08
[32] 뉴스 All Change for Packet Processing http://www.heavyread[...] Heavy Reading 2013
[33] 뉴스 Intel DPDK, switch and server ref designs push SDN ecosystem forward http://searchsdn.tec[...] SearchSDN 2013-04
[34] 웹인용 DPDK: Data Plane Development Kit – What it is http://dpdk.org/ dpdk.org 2015-03-16
[35] 뉴스 DPDK Goes Open-Source http://embedded.comm[...] Intel Embedded Community 2013-05
[36] 간행물 Intel® Data Plane Development Kit: Programmers Guide http://www.intel.com[...] Intel Corporation 2012-11
[37] 웹인용 Data Plane Development Kit Overview http://www.intel.com[...] Intel Communications Infrastructure Division 2012-12
[38] 웹인용 Supported NICs in DPDK doc http://dpdk.org/doc/[...]



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com