익스프레스 데이터 경로

Express Data Path
XDP
원본 작성자브렌든 블랑코, 톰 허버트
초기 릴리즈2016
기록 위치C
운영 체제리눅스
유형패킷 필터링
면허증GPL
리눅스 커널의 패킷 흐름 경로.XDP는 패킷 메타데이터에 대한 네트워킹 스택메모리 할당을 우회한다.

XDP(eXpress Data Path)는 버전 4.8 이후 Linux 커널에 병합된 eBPF 기반 고성능 데이터 경로다.[1]

데이터 경로

XDP의 이면에 있는 아이디어는 커널의 RX 경로에 초기 후크를 추가하고, 사용자가 제공한 eBPF 프로그램이 패킷의 운명을 결정하도록 하는 것이다.메모리 할당은 비용이 많이 드는 작업이 될 수 있기 때문에, 네트워크 스택 자체에서 필요로 하는 메모리 할당 직전에, 그리고 네트워크 인터페이스 컨트롤러(NIC) 드라이버에 후크를 배치한다.이 설계로 인해 XDP는 상용 하드웨어로 코어당 초당 2600만 패킷을 줄일 수 있다.[2]

eBPF 프로그램은 커널 공간에서 악성 코드가 실행되지 않도록 로드되기 전에 사전 검증자[3] 테스트를 통과해야 한다.사전 확인자는 프로그램에 Out of Bounds 액세스, 루프 또는 전역 변수가 없는지 검사한다.

프로그램은 패킷 데이터를 편집할 수 있으며, eBPF 프로그램이 반환된 후 조치 코드가 패킷으로 수행할 작업을 결정한다.

  • XDP_PASS: 패킷이 네트워크 스택을 통해 계속되도록 허용
  • XDP_DROP: 패킷을 자동으로 삭제
  • XDP_ABORTED: 추적점 예외가 있는 패킷 삭제
  • XDP_TX: 패킷을 도착한 NIC로 다시 바운스
  • XDP_REDIRECT: AF_XDP 주소 패밀리를 통해 패킷을 다른 NIC 또는 사용자 공간 소켓으로 리디렉션

XDP는 NIC 드라이버에 대한 지원이 필요하지만 모든 드라이버가 이를 지원하는 것은 아니므로 성능은 느리지만 네트워크 스택에서 eBPF 처리를 수행하는 일반 구현으로 되돌아갈 수 있다.[4]

XDP는 eBPF 프로그램을 지원하는 네트워크 인터페이스 컨트롤러로 오프로드하여 CPU 로드를 줄일 수 있는 인프라를 갖추고 있다.당시에는 인텔멜라노스가 작업하는 등 [5]넷로놈 카드만 지원한다.[6]

AF_XDP

XDP와 함께 4.18부터 리눅스 커널에 입력된 새로운 주소 패밀리가 있다.[7]AF_XDP(이전에는 AF_로 알려져 있음)메인라인 커널에 포함되지 않았던 PACKETv4는 고성능 패킷 처리에 최적화된 원시 소켓으로 커널과 애플리케이션 간 제로 복사가 가능하다.[8]소켓은 수신과 송신 모두에 사용할 수 있기 때문에, 순수하게 사용자 공간에서 고성능 네트워크 애플리케이션을 지원한다.[9]

참조

  1. ^ "[GIT] Networking - David Miller". lore.kernel.org. Retrieved 2019-05-14.
  2. ^ Høiland-Jørgensen, Toke (2019-05-03), Source text and experimental data for our paper describing XDP: tohojo/xdp-paper, retrieved 2019-05-21
  3. ^ "A thorough introduction to eBPF [LWN.net]". lwn.net. Retrieved 2019-05-14.
  4. ^ "net: Generic XDP". www.mail-archive.com. Retrieved 2019-05-14.
  5. ^ "BPF, eBPF, XDP and Bpfilter… What are these things and what do they mean for the enterprise? - Netronome". www.netronome.com. Retrieved 2019-05-14.
  6. ^ "XDP acceleration using NIC metadata" (PDF).
  7. ^ "kernel/git/torvalds/linux.git - Linux kernel source tree". git.kernel.org. Retrieved 2019-05-16.
  8. ^ "Questions about AF_PACKET V4 and AF_XDP". Kernel.org.
  9. ^ "Accelerating networking with AF_XDP [LWN.net]". lwn.net. Retrieved 2019-05-16.

외부 링크