콘텐츠로 이동

Blog

Overlay 비교

Network Overlay MTU & Encryption (IPIP, VXLAN, Geneve)

Kubernetes CNI 설정 시 오버레이 프로토콜별 암호화 지원 및 추가 오버헤드 영향 정리

비교표 (IPv4 기준)

프로토콜 기본 오버헤드(캡슐화) 권장 MTU 산식 예(언더레이 1500) 암호화 지원/방식 암호화 추가 오버헤드(예) 암호화 적용 후 MTU 예시 자원/특이점
IP-in-IP 약 20B 1500 − 20 = 1480 자체 암호화 없음, 필요 시 IPsec(ESP) 등 적용 IPsec ESP 전형치 30~40B대(+NAT-T/패딩 가변) 1500 − (20 + ~36) ≈ 1444 (프로파일별 상이) 소프트웨어 암복호화 시 CPU 부하↑, NIC 오프로드 시 경감
VXLAN 약 50B (IPv6는 ~70B) 1500 − 50 = 1450 자체 암호화 없음, 언더레이에 IPsec/WG 추가 가능 WG 60B, IPsec ~36B 등 합산 VXLAN+WG: 1500 − (50 + 60) = 1390 UDP 캡슐화, VTEP/오프로드 유무에 성능 민감
Geneve 약 50B(+옵션 가변) 1500 − 50 = 1450 (옵션 가산 시 감소) 자체 암호화 없음, 언더레이 암호화 IPsec ~36B 등 합산 예: 1500 − (64 + 36) = 1400 옵션(TLV)로 가변 헤더 → MTU 마진 넉넉히 확보 권장

검증 체크리스트

  • ping -M do -s N으로 DF 기반 PMTU 탐색, 경로별 대형 페이로드 송신 테스트(gRPC/HTTP2 등)
  • 특정 경로만 타임아웃/리트랜스 발생 시 MTU/DF/ICMP Block 여부 점검

예시 계산(언더레이 MTU 1500, IPv4)

  • IPIP 단독: 1500 − 20 = 1480
  • VXLAN 단독: 1500 − 50 = 1450
  • Geneve(옵션 14B 가정, 총 64B): 1500 − 64 = 1436
  • VXLAN + WireGuard: 1500 − (50 + 60) = 1390
  • IPIP + IPsec(ESP ~36B): 1500 − (20 + 36) ≈ 1444

참고

  • MTU 계산 원칙: 유효 MTU = 언더레이 MTU − (캡슐화/암호화 헤더 오버헤드 합). 일반적으로 IPv4 기준 대략 IP-in-IP 20B, VXLAN 50B, Geneve 50B(옵션에 따라 가산)로 본다
  • 암호화 적용 시: VXLAN/Geneve/IPIP에 암호화를 더할 경우 IPsec(ESP) 등 추가 오버헤드가 더해져 MTU를 더 낮춰야 한다
  • IPv6는 기본 헤더가 더 커서 동일 캡슐화에서도 오버헤드가 증가(일반적으로 +20B)한다
  • 중첩 터널(예: VXLAN 위 WireGuard)을 쓰면 오버헤드를 합산한다. 예: 1500 언더레이에서 VXLAN(50)+WG(60)=110 → 권장 MTU ≈ 1390
  • VXLAN 오버헤드(IPv4) ~50B, IPv6 ~70B
  • Geneve 기본 오버헤드는 VXLAN과 같은 ~50B, 옵션(TLV)에 따라 가산(안정적 MTU를 위해 보수적으로 산정)
  • IPsec ESP 오버헤드는 암호화/인증 알고리즘, NAT-T, 패딩에 따라 변동. 실무에서는 1400 근처 권장값을 사용하는 사례가 많음

Kubernetes CNI 비교

CNI 오버레이/암호화 옵션 데이터플레인/서비스 처리 kube-proxy 대체
Amazon VPC CNI 오버레이 없음(언더레이 VPC 네이티브). Prefix Delegation, SG for Pods 등. 암호화는 VPC 계층(VPN/PrivateLink/WireGuard 외부)로 처리. 리눅스 기본 스택(Netfilter 경로 사용 가능). 네트워크 폴리시 네이티브 지원 추가됨. 서비스 처리는 기본 kube-proxy에 의존. 기본은 미대체(별도 eBPF LB 없음). kube-proxy 사용 권장.
Calico 오버레이 off(BGP 라우팅) 또는 on(VXLAN/IPIP). eBPF 모드에서는 IPIP 미지원, VXLAN 또는 비오버레이 권장. WireGuard로 암호화 가능. 표준 리눅스 데이터플레인(iptables 또는 nftables) 또는 eBPF 데이터플레인 선택. 정책/서비스를 해당 데이터플레인으로 집행. eBPF 모드에서 kube-proxy-free 가능(서비스 LB/NAT을 eBPF로). 표준 모드에선 kube-proxy 사용.
Cilium 오버레이 on(VXLAN/Geneve) 또는 네이티브 라우팅 모드. BGP 등 유연한 라우팅 통합. eBPF 기반 데이터플레인. L3/L4 LB, 정책, 관측 기능을 eBPF로 처리. 소켓 레벨 LB, XDP 가속 등. 완전 대체 가능(kube-proxy-free). eBPF 해시테이블로 대규모 스케일 지원.
Flannel 주로 VXLAN 오버레이(단순/경량). 다른 백엔드도 있으나 VXLAN 권장. 암호화는 기본 제공 X(외부 조합). 단순 오버레이(데이터플레인 특화 기능 적음). 정책 집행은 별도 엔진(예: Calico policy-only) 필요. 서비스는 kube-proxy. 미대체. kube-proxy 필요.
Antrea (OVS) 오버레이 on(VXLAN/Geneve). 선택적 IPsec 암호화 제공. Open vSwitch(OVS) 데이터플레인. 에이전트가 OVS 브리지/플로우 설치로 포워딩·정책 집행. 기본적으로 kube-proxy 사용. 일부 기능으로 서비스 가속 있으나 일반적으로 대체 아님.
Weave Net
참고: Weaveworks 폐업(2024)으로 신규 채택 비권장
메쉬 오버레이(“fast datapath”로 커널 OVS datapath 활용, fallback “sleeve”). 암호화 선택 가능(구성에 따라). 커널 OVS datapath 활용한 빠른 경로와 캡슐화 경로 혼용. 정책은 별도 또는 Weave 자체 기능 범위. 일반적으로 kube-proxy 사용. 대체 아님.