참고
Data Plane : 패킷을 처리하는 코드 덩어리를 의미한다.
Control Plane : 기능을 설정하는 코드 덩어리를 의미한다.
Plane은 Flow나 Path와 동일하다.
10.2 DPDK Overview
DPDK의 주요 목표는 Data Plane 애플리케이션에서 빠른 패킷 처리를 위한 간단하고 완전한 프레임워크를 제공하는 것이다. 프레임워크의 일부로 제공되는 API를 사용하는 애플리케이션은 기본(underlying) 네트워크 인프라의 기능을 활용할 수 있다.
프레임워크는 일관된 API 세트 아래에 모든 디바이스 글루 로직을 숨기는 Environment Abstraction Layer(EAL)로 계층화된 대상 환경에 대한 라이브러리의 세트를 생성한다. 이러한 환경은 구성 파일을 사용하여 생성된다. EAL 라이브러리가 생성되면, 사용자는 라이브러리와 연결하여 자신의 애플리케이션을 생성할 수 있다. Hash, Longest Prefix Match(LPM) 그리고 링 라이브러리를 포함하여, EAL 외부의 다양한 다른 라이브러리도 특정 작업을 수행하는 데 사용할 수 있다. DPDK 프레임 워크의 다양한 기능과 용도를 이해하는 데 도움이 되는 샘플 애플리케이션도 제공된다.
DPDK는 논리 처리 코어에서 실행 단위 실행되는 데이터 플레인 애플리케이션을 호출하기 전에 모든 리소스를 할당해야 하는 패킷 처리를 위한 실행-완료 모델을 구현한다. 또한, 링을 통해 코어 사이에 패킷이나 메시지를 전달하여 파이프라인 모델을 사용할 수도 있다. 이를 통해 작업을 단계적으로 수행할 수 있으므로, 코어에서 코드를 보다 효율적으로 사용할 수 있다.
Data Plane Development Kit(DPDK)는 빠른 패킷 처리를 위한 다양한 사용자 공간 라이브러리와 드라이버로 구성된 사용자 공간의 패킷 처리 프레임워크(Linux Foundation 아래의)이다. DPDK는 Fast-Path와 Poll Mode Driver(PMD)를 기반으로 패킷 처리량, 작동 방식과 성능의 핵심을 최적화하기 위해 다양한 기술을 사용한다.
Fast-Path (Kernel bypass) - 커널을 바이패스하여 NIC에서 사용자 공간 내의 애플리케이션으로 빠른 경로가 생성된다. 이는 사용자 공간/커널 공간 사이에서 프레임을 이동할 때 컨텍스트 전환을 제거한다. 또한, 커널 스택/네트워크 드라이버와 이로 인해 발생하는 성능 저하를 무효화하여 더 많은 이점을 얻을 수 있다.
Poll Mode Driver - 프레임이 수신될 때, CPU에 대한 인터럽트를 NIC가 발생시키는 대신, CPU는 폴 모드 드라이버를 실행하여 새 패킷에 대해 NIC를 지속적으로 폴링한다. 그러나 이것은 CPU 코어가 PMD 실행에 전용되고 할당되어야 함을 의미한다.
DPDK의 일반적인 작업에 대한 자세한 내용은 DPDK 웹 사이트에서 확인할 수 있다.
10.2.1 DPDK Platform Support
이 섹션에서는 NXP Data Path Acceleration Architecture에 대해 설명한다. 아래 다이어그램을 참조한다.
10.2.2 ENETFEC: Supported DPDK Features
아래는 ENETFEC 드라이버가 지원하는 DPDK NIC 기능 목록이다:
- 기본 통계
- 패킷 유형 분석
- Promiscuous(무차별) 모드
- VLAN 오프로드
- L3/L4 체크섬 오프로드
- Linux
- Arm v8
i.MX 8에서 검증된 애플리케이션:
- dpdk-l2fwd
- dpdk-l3fwd
- dpdk-testpmd
- RX 전용, TX 전용 그리고 포워드 모드
제한 사항:
- 멀티 큐는 지원되지 않는다.
- 단일 Ethernet 인터페이스
참고:
ENETFEC 기반 DPDK 기능은 Kernel 5.15 이상에서 지원된다.