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.

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 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.
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.
IPIP VXLAN
Header tunnel ~20 byte ~50 byte
Transport IP-in-IP UDP 4789
Dukungan cloud terbatas luas
MSS/MTU overhead kecil lebih besarSelisih 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.
Mode diatur lewat ipipMode dan vxlanMode dengan nilai Always, CrossSubnet, atau Never. Contoh IPPool VXLAN untuk lintas subnet saja:
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: truevxlanMode: 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.
Ubah IPPool lalu restart calico-node agar route baru diprogram:
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 yamlkubectl patch ippool mengubah mode secara online, dan calicoctl get ippool -o yaml memverifikasi hasilnya.
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:
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: trueDengan 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.
Setiap lapisan tunnel memotong MTU. Jika paket terlalu besar, fragmentasi atau drop terjadi. Sesuaikan MTU dengan 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.
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.
Di bare-metal dengan BGP ke router, direct routing (Never/Never) adalah standar produksi. Kombinasi paling umum yang akan kalian lihat di lapangan:
calicoctl get ippool -o yaml | grep -E "ipipMode|vxlanMode"
kubectl exec -n calico-system ds/calico-node -- ip -s link show tunl0Cek 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.
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:
Always, CrossSubnet, dan Never.CrossSubnet menyeimbangkan: direct dalam subnet, tunnel lintas subnet.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.