VPC CNI vs Cilium CNI 성능 비교 벤치마크
📅 작성일: 2026-02-09 | 수정일: 2026-02-14 | ⏱️ 읽는 시간: 약 16분
Amazon EKS 1.31 환경에서 VPC CNI와 Cilium CNI의 성능을 5개 시나리오로 정량 비교한 벤치마크 보고서입니다.
벤치마크 결론
=
≈ 동일
TCP Throughput
NIC 대역폭 포화 (12.5 Gbps), CNI 무관
⚙️
기능 차이
UDP 패킷 손실
Bandwidth Manager 유무 차이 (iperf3 극한 조건, 일반 환경에서 발생 어려움)
🔗
-36% RTT
Multi-hop 추론 파이프라인
Gateway→Router→vLLM→RAG→VectorDB 다단 hop에서 RTT 절감 누적, HTTP/gRPC 실시간 추론 서빙 시 유의미
🔍
기능 > 성능
핵심 선택 기준
L7 정책, FQDN 필터링, Hubble 관찰성, kube-proxy-less
두 CNI의 성능 차이는 실환경에서 미미하며, 선택의 핵심은 eBPF 기반 관찰성·정책·아키텍처 등 기능입니다. 다만 multi-hop 추론 파이프라인에서는 RTT 누적 절감이 체감될 수 있습니다.
5개 시나리오:
- A VPC CNI 기본 (베이스라인)
- B Cilium + kube-proxy (전환 영향 측정)
- C Cilium kube-proxy-less (kube-proxy 제거 효과)
- D Cilium ENI 모드 (Overlay vs Native Routing)
- E Cilium ENI + 풀 튜닝 (누적 최적화 효과)
주요 시사점:
| 지표 | VPC CNI (A) | Cilium ENI+Tuning (E) | 개선폭 |
|---|
| TCP 처리량 | 12.41 Gbps | 12.40 Gbps | 동일 (NIC 포화) |
| UDP 패킷 손실 | 20.39% | 0.03% | Bandwidth Manager 적용 |
| Pod 간 RTT | 4,894 µs | 3,135 µs | 36% 단축 |
| HTTP p99 @QPS=1000 | 10.92 ms | 8.75 ms* | 20% 감소 |
| 서비스 스케일링 (1000 svc) | iptables 101배 증가, 연결당 +16% | O(1) 성능 일정 | O(1) vs O(n) |
* HTTP p99 개선은 최적화된 네트워크 경로와 감소된 지연시간을 반영
🤖AI/ML 워크로드 관련성 가이드
본 CNI 벤치마크가 EKS 기반 Training 및 Inference에 미치는 영향
-20%
HTTP p99 Latency
Inference 서빙
-36%
Pod-to-Pod RTT
Pipeline hop 누적
O(1)
Service Scaling
Model Endpoint
워크로드 유형별 관련성
HTTP/gRPC 기반 · Service Scaling 결과 직접 적용
🔗Inference Pipeline (multi-hop)
높음RTT 개선이 hop마다 누적
Throughput 중심 · CNI 차이 미미
참고: 본 벤치마크는 m6i.xlarge (12.5 Gbps, GPU 미탑재) 환경에서 측정되었습니다. GPU 인스턴스(g5, p4d, p5, inf2)는 25–400 Gbps NIC과 EFA를 지원하므로, 프로덕션 사이징을 위해서는 GPU 인스턴스 전용 AI/ML 벤치마크를 별도로 수행하는 것을 권장합니다.
테스트 환경
🖥️ 테스트 환경
EKS 1.31 · 단일 AZ · 최소 3회 반복 측정 중앙값
EKS 버전
1.31 (Platform: eks.51)
Cilium 버전
1.16.5 (Helm Chart: cilium-1.16.5)
노드 타입
m6i.xlarge (4 vCPU, 16 GB RAM, ENA NIC)
노드 수
3 (단일 AZ: ap-northeast-2a)
OS / Kernel
Amazon Linux 2023 · 6.1.159-182.297.amzn2023
Service CIDR
10.100.0.0/16
도구
kubectl 1.31+, Cilium CLI 0.16+, Helm 3.16+, Fortio 1.65+, iperf3 3.17+
측정 방식
최소 3회 반복 측정 후 중앙값 사용
클러스터 구성: scripts/benchmarks/cni-benchmark/cluster.yaml 참조
워크로드 배포: scripts/benchmarks/cni-benchmark/workloads.yaml 참조
테스트 시나리오
5개 시나리오는 CNI, kube-proxy 모드, IP 할당 방식, 튜닝 적용 여부를 조합하여 각 변수의 독립적 영향을 측정하도록 설계했습니다.
🧪 테스트 시나리오
CNI, kube-proxy 모드, IP 할당 방식, 튜닝 적용 여부를 조합한 5개 구성
AVPC CNI 기본베이스라인
CNI: VPC CNIkube-proxy: iptablesIP 할당: ENI Secondary IP튜닝: 기본값
BCilium + kube-proxyCNI 전환 영향
CNI: Ciliumkube-proxy: iptables 유지IP 할당: Overlay (VXLAN)튜닝: 기본값
CCilium kube-proxy-lesskube-proxy 제거 효과
CNI: Ciliumkube-proxy: eBPF 대체IP 할당: Overlay (VXLAN)튜닝: 기본값
DCilium ENI 모드Overlay vs Native
CNI: Ciliumkube-proxy: eBPF 대체IP 할당: AWS ENI (native)튜닝: 기본값
ECilium ENI + 풀 튜닝튜닝 누적 효과
CNI: Ciliumkube-proxy: eBPF 대체IP 할당: AWS ENI (native)튜닝: 전체 적용
시나리오 E 튜닝 포인트
| 튜닝 항목 | Helm 값 | 효과 | 적용 여부 |
|---|
| BPF Host Routing | bpf.hostLegacyRouting=false | Host NS iptables bypass | ✅적용됨 |
| DSR | loadBalancer.mode=dsr | NodePort/LB direct return | ❌미적용 (ENA compat) |
| Bandwidth Manager | bandwidthManager.enabled=true | EDT rate limiting | ✅적용됨 |
| BPF Masquerade | bpf.masquerade=true | iptables MASQUERADE → eBPF | ✅적용됨 |
| Socket-level LB | socketLB.enabled=true | LB at connect() | ✅적용됨 |
| XDP Acceleration | loadBalancer.acceleration=native | NIC driver processing | ❌미적용 (ENA bpf_link) |
| BBR | bandwidthManager.bbr=true | Google BBR congestion | ✅적용됨 |
| Native Routing | routingMode=native | Remove VXLAN | ✅적용됨 |
| CT Table Expansion | bpf.ctGlobalAnyMax/TcpMax | Expand Connection Tracking | ✅적용됨 |
| Hubble Disabled | hubble.enabled=false | Remove observability overhead | ✅적용됨 |
m6i.xlarge 인스턴스의 ENA 드라이버는 XDP bpf_link 기능을 지원하지 않아 XDP acceleration(native/best-effort)을 사용할 수 없습니다. DSR 모드 또한 Pod 크래시를 유발하여 기본 SNAT 모드로 회귀했습니다. 시나리오 E는 나머지 8개 튜닝을 적용한 결과입니다.
아키텍처
패킷 경로 비교: VPC CNI vs Cilium
VPC CNI(kube-proxy)와 Cilium(eBPF)에서 Pod-to-Service 트래픽의 패킷 경로 차이를 비교합니다.
Cilium 아키텍처 개요
Cilium Daemon이 커널의 BPF 프로그램을 관리하며, 각 컨테이너와 네트워크 인터페이스(eth0)에 eBPF 프로그램을 주입합니다.
출처: Cilium Component Overview
Cilium eBPF 패킷 경로
Pod-to-Pod 통신에서 eBPF 프로그램은 veth pair(lxc)에 부착되어 iptables를 완전히 우회합니다. 아래 다이어그램은 Endpoint 간 직접 통신 경로를 보여줍니다.
출처: Cilium - Life of a Packet
Cilium Native Routing (ENI 모드)
Native Routing 모드에서 Pod 트래픽은 VXLAN 캡슐화 없이 호스트의 라우팅 테이블을 통해 직접 전달됩니다. ENI 모드에서는 Pod IP가 VPC CIDR에서 직접 할당됩니다.
출처: Cilium Routing
Cilium ENI IPAM 아키텍처
Cilium Operator가 EC2 API를 통해 ENI에서 IP를 할당하고, CiliumNode CRD를 통해 각 노드의 Agent에 IP Pool을 제공합니다.
출처: Cilium ENI Mode
5개 시나리오별 데이터 플레인 스택
각 시나리오의 Service LB, CNI Agent, 네트워크 계층 구성과 주요 성능 지표를 비교합니다.

테스트 방법
테스트 워크로드
- httpbin: HTTP 에코 서버 (2 replicas)
- Fortio: HTTP 부하 생성기
- iperf3: 네트워크 처리량 측정 서버/클라이언트
측정 메트릭
- 네트워크 성능: TCP/UDP Throughput, Pod-to-Pod Latency (p50/p99), Connection Setup Rate
- HTTP 성능: QPS별 처리량 및 지연 (Fortio → httpbin)
- DNS 성능: 해석 지연 (p50/p99), QPS Capacity
- 리소스 사용량: CNI 자체 CPU/메모리 오버헤드
- 튜닝 효과: 개별 튜닝 포인트의 성능 기여도
벤치마크 실행
전체 시나리오 일괄 실행:
./scripts/benchmarks/cni-benchmark/run-all-scenarios.sh
개별 시나리오 실행:
./scripts/benchmarks/cni-benchmark/run-benchmark.sh <scenario-name>
상세 테스트 절차는 스크립트 내부 주석 참조.
벤치마크 결과