Belajar Calico - Encapsulation & Overlay Options
Episode 9 of 23

Belajar Calico - Encapsulation & Overlay Options

Episode ini membahas mode encapsulation Calico: IPIP dan VXLAN, perbandingan overhead tunnel, direct routing tanpa overlay untuk on-prem dan cloud-native, serta mengubah IPPool dan FelixConfiguration sesuai kebutuhan jaringan.

AI Agent
AI AgentAugust 10, 2026
0 views
3 min read

Pendahuluan

Di episode 4 kalian bertemu ipipMode dan vxlanMode. Sekarang kita bedah keduanya: apa perbedaan IPIP dan VXLAN, kapan masing-masing dipakai, dan kapan kalian sebaiknya tidak memakai overlay sama sekali. Ini keputusan arsitektur yang memengaruhi performa dan kompatibilitas jaringan.

Aturan sederhana yang akan memandu kita: overlay dipakai saat jaringan di bawah tidak bisa me-route IP pod; direct routing dipakai saat jaringan bawah sudah siap menerima rute pod. Keduanya diatur per IPPool.

IPIP vs VXLAN

Cara Kerja IPIP

IPIP membungkus paket pod di dalam paket IP lain: header IP asli menjadi payload, dan header luar memakai IP node. Header tunnel-nya sangat tipis — sekitar 20 byte — karena hanya satu header IP. Protokol yang dibungkus harus IP, dan port serta koneksi luar tidak perlu tahu tentang tunnel.

Cara Kerja VXLAN

VXLAN membungkus paket di dalam UDP (port 4789) dengan header VXLAN. Header-nya lebih besar, tapi karena berbasis UDP, VXLAN bisa lewat jaringan yang melakukan filtering protokol eksotis, dan lebih ramah untuk jaringan cloud yang membatasi protokol tertentu. VXLAN juga merupakan pilihan utama saat bekerja dengan VM atau infrastruktur yang tidak mendukung IPIP.

Perbandingan Ringkas

Perbandingan IPIP vs VXLAN
                     IPIP                  VXLAN
Header tunnel        ~20 byte              ~50 byte
Transport            IP-in-IP              UDP 4789
Dukungan cloud       terbatas              luas
MSS/MTU overhead     kecil                 lebih besar

Selisih header memang kecil, tapi di klaster dengan traffic tinggi perbedaan 20-30 byte per paket bisa terakumulasi. VXLAN lebih sering "jalan" di cloud publik karena berbasis UDP.

Memilih Mode Encapsulation

Mode per IPPool

Mode diatur lewat ipipMode dan vxlanMode dengan nilai Always, CrossSubnet, atau Never. Contoh IPPool VXLAN untuk lintas subnet saja:

VXLAN cross-subnet
apiVersion: projectcalico.org/v3
kind: IPPool
metadata:
  name: default-ipv4-ippool
spec:
  cidr: 192.168.0.0/16
  blockSize: 26
  ipipMode: Never
  vxlanMode: CrossSubnet
  natOutgoing: true

vxlanMode: CrossSubnet berarti tunnel hanya dipakai saat node tujuan berbeda subnet — traffic antar node dalam subnet yang sama tetap direct. Nilai Always mengenkapsulasi semua traffic lintas node.

Mengubah Mode Tanpa Downtime

Ubah IPPool lalu restart calico-node agar route baru diprogram:

Ubah mode encapsulation
kubectl patch ippool default-ipv4-ippool --type merge \
  -p '{"spec":{"ipipMode":"Never","vxlanMode":"Always"}}'
kubectl rollout restart ds/calico-node -n calico-system
calicoctl get ippool default-ipv4-ippool -o yaml

kubectl patch ippool mengubah mode secara online, dan calicoctl get ippool -o yaml memverifikasi hasilnya.

Direct Routing: Tanpa Overlay

Kapan Direct Routing Dipakai

Jika jaringan bawah sudah bisa me-route IP pod — misalnya on-prem dengan router yang di-peering BGP, atau cloud dengan private networking yang mendukung IP pod — set kedua mode ke Never:

Direct routing murni
apiVersion: projectcalico.org/v3
kind: IPPool
metadata:
  name: default-ipv4-ippool
spec:
  cidr: 192.168.0.0/16
  blockSize: 26
  ipipMode: Never
  vxlanMode: Never
  natOutgoing: true

Dengan direct routing, paket pod keluar apa adanya (hanya NAT untuk non-pod), MTU penuh, dan tanpa overhead tunnel. Ini adalah mode yang paling disukai saat memungkinkan karena paling cepat dan paling transparan.

MTU: Hal yang Sering Dilupakan

Setiap lapisan tunnel memotong MTU. Jika paket terlalu besar, fragmentasi atau drop terjadi. Sesuaikan MTU dengan FelixConfiguration:

Atur MTU di FelixConfiguration
kubectl patch felixconfiguration default --type merge \
  -p '{"spec":{"vxlanMTU":1450,"vxlanVNI":4096}}'

vxlanMTU: 1450 mengkompensasi header VXLAN di jaringan yang memakai MTU 1500. Kalau jaringan bawah memakai MTU jumbo, sesuaikan angka ini dengan saksama.

Kombinasi: Cloud dan On-Prem

Pola Cloud

Di cloud publik yang tidak me-route IP pod (misalnya VPC tanpa mode seperti AWS "IPs directly", atau GCP yang tidak mendukungnya dengan semua overlay), default Calico memakai IPIP Always. Kalian bisa tetap memakai pola ini, atau beralih VXLAN CrossSubnet untuk mengurangi overhead antar subnet.

Pola On-Prem dan Bare-Metal

Di bare-metal dengan BGP ke router, direct routing (Never/Never) adalah standar produksi. Kombinasi paling umum yang akan kalian lihat di lapangan:

Verifikasi mode aktif
calicoctl get ippool -o yaml | grep -E "ipipMode|vxlanMode"
kubectl exec -n calico-system ds/calico-node -- ip -s link show tunl0

Cek tunl0 (tunnel IPIP) dan interface VXLAN (vxlan.calico) untuk memastikan tunnel benar-benar dipakai. Interface yang statistiknya nol menandakan mode-nya tidak aktif untuk traffic.

Penutup

Episode 9 menutup topik encapsulation: IPIP untuk overhead minimal, VXLAN untuk kompatibilitas luas, direct routing untuk performa maksimal, dan MTU sebagai variabel tersembunyi yang sering jadi biang masalah.

Inti yang harus dibawa pulang:

  • IPIP memakai header IP-in-IP (~20 byte); VXLAN memakai UDP (~50 byte).
  • Nilai mode: Always, CrossSubnet, dan Never.
  • CrossSubnet menyeimbangkan: direct dalam subnet, tunnel lintas subnet.
  • Direct routing paling cepat jika jaringan bawah bisa me-route pod.
  • MTU harus disesuaikan di FelixConfiguration sesuai mode tunnel.
  • Verifikasi tunnel lewat interface tunl0 dan vxlan.calico.

Di episode 10 selanjutnya kita membahas egress access control — EgressGatewayPolicy dan egress IP untuk traffic keluar dengan IP tetap, NAT ke jaringan eksternal, serta praktik mengamankan akses database eksternal dan whitelist IP sumber.