피드로 돌아가기
Building a 5G UPF That Actually Saturates a 10G Link: VPP + DPDK + Open5GS in Production
Dev.toDev.to
Infrastructure

VPP와 DPDK 기반 커널 바이패스로 850Mbps에서 9Gbps 달성

Building a 5G UPF That Actually Saturates a 10G Link: VPP + DPDK + Open5GS in Production

Nalin Banga2026년 6월 28일8advanced

Context

Open5GS 기반 5G UPF의 초기 Socket-based forwarding 구조가 커널 인터럽트와 메모리 복사 오버헤드로 인해 10G 링크의 8.5%인 850Mbps 수준에 머문 한계 상황.

Technical Solution

  • DPDK Poll-mode drivers 도입을 통한 Kernel Bypass 및 Zero-copy I/O 구현으로 패킷 처리 경로에서 커널 제거
  • VPP의 Graph-node 아키텍처를 활용하여 패킷을 Vector 단위로 처리함으로써 Cache Miss 및 Branch Misprediction 비용 최소화
  • GTP-U Decap/Encap 기능을 독립적인 Custom Graph Node로 분리하여 각 노드의 기능 범위를 좁히고 Cache Locality 최적화
  • TEID 기반 Hash Table에 Prefetching 기법을 적용하여 Session Lookup 단계의 파이프라인 스톨 방지
  • PFCP 세션 업데이트 로직을 Packet Processing 경로에서 분리하여 Per-worker Message Queue 방식으로 구조 변경함으로써 데이터 오염 제거

Impact

  • 처리 성능이 기존 850Mbps에서 최대 9Gbps로 약 10배 이상 향상
  • Node 분리 및 Cache Locality 최적화만으로 약 800Mbps의 추가 성능 회복

Key Takeaway

고성능 데이터 평면 설계 시 단순한 라이브러리 도입보다 Cache Locality를 고려한 Node의 세밀한 분리와 Fast Path 내의 커널 개입 완전 제거가 핵심 성능 결정 요인임.


1. 고속 패킷 처리 설계 시 Packet-by-packet 대신 Vector-based 처리 모델 검토

2. 단일 노드 내 과도한 기능 통합이 Cache Locality를 저해하는지 Profiler로 확인

3. Control Plane의 상태 업데이트가 Data Plane의 Critical Path에 영향을 주는지 분석 후 비동기 큐로 분리

4. 하드웨어 제약 사항(PCIe Bus 등)을 확인하여 소프트웨어 최적화의 한계 지점 파악

원문 읽기