XDP (eXpress Data Path)

1. XDP (eXpress Data Path)의 개념 및 특징

개념특징
고속 데이터 전송을 위해 리눅스 커널 내 eBPF Hook 기반 OS 네트워크 스택을 우회, 전송하는 데이터 송수신 기술– 리눅스 커널 내 이벤트는 사용자 정의 함수 기반 샌드박스 환경 동작
– 커널 코드 수정 없이 프로그램을 운영체제 커널 공간에서 실행
  • XDP는 eBPF Hook의 한 종류로 패킷을 고속으로 처리하기 위해 iptables의 패킷 처리 기능을 네트워크 드라이버 수준에서 사용할 수 있도록 커널에서 명령어 제공

 

2. XDP의 구성도 및 동작 과정

(1) XDP의 구성도

(2) XDP 프로그램 구성 요소

구성 요소역할
XDP driver hookXDP의 주요 인입 구간이며, H/W에서 패킷 도착 시 실행
eBPF virtual machineXDP 프로그램의 byte code 실행, 성능 향상 위해 just-in-time-compile 형태로 동작
BPF maps다른 시스템과 정보 교환을 위한 Key-Value 저장
eBPF verifier프로그램 로드 전 커널 내 문제 발생 영향도 분석
  • 패킷이 시스템에 도착하면 device driver에서 eBPF 프로그램이 패킷 Drop, Redirect, Forwarding 등 결정

 

3. XDP의 동작 과정 및 프로그램 리턴 코드

(1) XDP의 동작 과정

① 패킷이 도착하면 프로그램은 패킷 헤더를 구문 분석하여 반응 정보 추출
② 여러 소스 중 하나에서 메타데이터를 읽거나 업데이트
③ 패킷이 재생성 될 수 있고 패킷 제어 방식 최종 결정
(프로그램은 패킷 구문 분석, 메타데이터 조회/재생성을 번갈아 수행 가능)
④ 패킷 제어 방식 최종 결정 후 결과는 프로그램 반환 코드 형태로 제공

(2) XDP 프로그램 리턴 코드

구분핵심 기능세부 동작
Packet
Drop
XDP_ABORTED패킷을 버리고 xdp_exception 발생
XDP_DROP패킷을 버림
Packet
Forwarding
XDP_PASS패킷을 커널로 보냄
XDP_TX패킷을 수신된 인터페이스로 재전송
XDP_REDIRECT패킷을 다른 인터페이스로 전달
  • XDP는 Intel의 DPDK(Data Plane Development Kit)와 비교하여 성능이 낮고 일부 메모리 접근 제한 등 한계점이 있지만 다양한 네트워크 벤더의 H/W 사용 가능하며, Linux Kernel에서 꾸준히 개선되고 있고 안정적인 프로그램 인터페이스 제공 가능

 

4. XDP의 한계점 및 대응 방안

한계점대응 방안
Loop 및 최대 프로그램 크기, 일부 메모리 접근 제한커널 안정성 보장을 위한 제약사항이며, eBPF verifier 효율 개선
메모리 할당, Lock 등 표준 라이브러리 부재커널의 help function, execution context management로 완화
Network Interface 별 하나의 XDP 프로그램만 사용 가능패킷 내용 확인 후 실행할 XDP 프로그램 결정 등 협업으로 해결
  • XDP는 Intel의 DPDK 등 다른 고성능 패킷 처리 시스템과 비교하여 조금 부족한 성능을 보이지만 Kernel Security 활용, 호환성, Kernel 기능 취사 선택, 안정적인 인터페이스 제공 등 여러 장점이 있고, 특수 하드웨어가 필요하지 않아 다양한 환경에서 사용 가능

 
[참고]

  • ACM CoNEXT 2018, The eXpress Data Path: Fast Programmable Packet Processing in the Operating System Kernel
  • MONITORAPP, XDP를 활용한 네트워크 패킷 처리

콘텐츠 사용 시 출처 표기 부탁 드리고, 댓글은 큰 힘이 됩니다^^