[논문 리뷰] hXDP: Efficient Software Packet Processing on FPGA NICs
hXDP는 병렬성과 자원 사용을 최소화하는 고유한 최적화된 명령어 집합 아키텍처(ISA)로 수정되지 않은 eBPF/XDP 프로그램을 컴파일하여 FPGA NIC에서 고성능, 저지연 패킷 처리를 가능하게 한다. 156MHz에서 CPU 코어 수준의 처리량을 달성하면서도 FPGA 자원 사용률이 15% 미만이며, 고성능 CPU보다 지연 시간이 훨씬 낮고 동적 프로그램 로딩을 지원한다.
FPGA accelerators on the NIC enable the offloading of expensive packet processing tasks from the CPU. However, FPGAs have limited resources that may need to be shared among diverse applications, and programming them is difficult. We present a solution to run Linux's eXpress Data Path programs written in eBPF on FPGAs, using only a fraction of the available hardware resources while matching the performance of high-end CPUs. The iterative execution model of eBPF is not a good fit for FPGA accelerators. Nonetheless, we show that many of the instructions of an eBPF program can be compressed, parallelized or completely removed, when targeting a purpose-built FPGA executor, thereby significantly improving performance. We leverage that to design hXDP, which includes (i) an optimizing-compiler that parallelizes and translates eBPF bytecode to an extended eBPF Instruction-set Architecture defined by us; a (ii) soft-CPU to execute such instructions on FPGA; and (iii) an FPGA-based infrastructure to provide XDP's maps and helper functions as defined within the Linux kernel. We implement hXDP on an FPGA NIC and evaluate it running real-world unmodified eBPF programs. Our implementation is clocked at 156.25MHz, uses about 15% of the FPGA resources, and can run dynamically loaded programs. Despite these modest requirements, it achieves the packet processing throughput of a high-end CPU core and provides a 10x lower packet forwarding latency.
연구 동기 및 목표
- 자원이 제한된 FPGA NIC에 XDP 패킷 처리를 효율적으로 오프로드하면서도 기존 Linux eBPF/XDP 프로그램과의 호환성을 유지하는 데 도전한다.
- eBPF의 순차적 실행 모델과 FPGA의 본질적 병렬성 간의 불일치로 인해 eBPF를 FPGA에 직접 매핑했을 때 성능이 제한되는 문제를 해결한다.
- 자원 소비를 최소화하여 여러 가속기 간에 FPGA를 공유할 수 있도록 하여 다른 네트워크 기능을 위한 충분한 용량을 확보한다.
- 기존 XDP 프로그램과의 완전한 호환성을 위해 동적 로딩을 지원하고 XDP 맵 및 헬퍼 함수를 에뮬레이트함으로써 Linux 커널과의 원활한 통합 경로를 제공한다.
제안 방법
- 3-연산자 명령어, 6바이트 로드/스토어 연산, 매ram터화된 종료 명령어를 포함한 확장된 eBPF ISA를 설계하여 FPGA에서의 코드 조밀도와 실행 효율을 향상시킨다.
- 확장된 ISA를 네이티브로 실행할 수 있는 FPGA 하드웨어에 맞는 맞춤형 소프트-CPU를 구현하여 효율적이고 병렬적인 명령어 처리를 가능하게 한다.
- 지정된 FPGA 환경에서 안전할 경우 중복된 명령어(예: 경계 검사, 초기화)를 제거하는 지침 수준의 병렬성 분석과 최적화를 수행하는 정적 컴파일러를 개발한다.
- Linux 커널에서 정의된 그대로 XDP 맵과 헬퍼 함수를 에뮬레이트하는 완전한 FPGA 기반 인fra를 구축하여 기존 XDP 프로그램과의 완전한 호환성을 확보한다.
- hXDP의 실사용 및 평가를 위한 오픈소스 배포를 가능하게 하기 위해 NetFPGA 플랫폼과 시스템을 통합한다.
- PCIe 전송을 최소화하기 위해 데이터 이동을 최적화하고 NIC 내부 실행을 활용하여 CPU 및 시스템 오버헤드를 감소시킨다.
실험 결과
연구 질문
- RQ1eBPF의 순차적 실행 모델과 FPGA의 본질적 병렬성 간의 불일치에도 불구하고, eBPF 프로그램을 FPGA에서 효율적으로 컴파일하고 실행할 수 있는가?
- RQ2XDP 오프로드를 위해 최소한의 FPGA 자원을 사용하면서도 고성능을 달성하기 위해 필요한 하드웨어 및 소프트웨어 최적화는 무엇인가?
- RQ3목적에 맞는 FPGA 실행자에 대응할 때, 중복되거나 맥락에 따라 필요한 eBPF 명령어를 얼마나 제거하거나 대체할 수 있는가?
- RQ4고유한 ISA 확장과 컴파일러 파이프라인은 최소한의 자원 오버헤드로 고처리량, 저지연 패킷 처리를 FPGA에서 가능하게 할 수 있는가?
- RQ5수정되지 않은 XDP 프로그램을 FPGA NIC에서 동적 로딩할 수 있으며, Linux 커널의 XDP 인터페이스와 호환성을 유지할 수 있는가?
주요 결과
- hXDP는 156.25MHz의 클럭 주파수에도 불구하고 고성능 x86 CPU 코어 수준의 패킷 처리 처리량을 달성한다.
- 시스템은 FPGA 자원의 15% 미만을 사용하여 다른 가속기와의 효율적 공유가 가능하다.
- hXDP는 고성능 CPU 코어 대비 패킷 포워딩 지연 시간을 10배 감소시킨다.
- 컴파일러와 하드웨어 스택은 FPGA 환경에서 정확성을 해치지 않으면서도 중복된 eBPF 명령어(예: 경계 검사, 초기화)를 성공적으로 제거하거나 최적화한다.
- 수정되지 않은 XDP 프로그램의 동적 로딩을 지원하여 런타임 재구성과 Linux 커널과의 원활한 통합을 가능하게 한다.
- NetFPGA에 구현된 결과, 지시 수준의 병렬성과 ISA 수준 최적화 덕분에 낮은 클럭 주파수에서도 고성능을 달성할 수 있음을 입증했다.
더 나은 연구,지금 바로 시작하세요
연구 설계부터 논문 작성까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.