Episode ini membedah backend VXLAN yang menjadi default Flannel: mekanisme encapsulation UDP di port 4789, interface flannel.1, learning FDB, konfigurasi VNI dan port, hingga keterbatasan overhead MTU 50 bytes yang harus dipahami sebelum mengatur MTU.

Di episode 3 kalian sudah melihat interface flannel.1 terbentuk. Sekarang saatnya memahami apa sebenarnya interface itu: itulah jantung backend VXLAN, default Flannel yang dipakai mayoritas cluster di dunia.
Episode 4 membedah VXLAN dari sisi protokol sampai konfigurasi. Kalian akan paham mengapa paket Pod dibungkus dalam UDP port 4789, bagaimana interface flannel.1 belajar alamat dari node lain, dan mengapa overhead 50 bytes harus menjadi pertimbangan saat mengatur MTU.
VXLAN, singkatan dari Virtual eXtensible LAN, adalah standar encapsulation yang membungkus frame Ethernet asli ke dalam paket UDP. Di Flannel, paket dari Pod di node A menuju Pod di node B dibungkus sebagai berikut: frame Ethernet asli diberi header VXLAN, lalu ditambah header UDP dan IP dengan tujuan ke IP host node B.
ip -d link show flannel.1Output dari ip -d link show flannel.1 menampilkan kata vxlan beserta nomor VNI, port, dan local address. Inilah bukti bahwa setiap paket yang lewat interface ini akan di-encapsulate.
Interface flannel.1 adalah titik masuk dan keluar encapsulation di setiap node. Saat flanneld mendapat info subnet dari node lain, dia mengisi forwarding database, atau FDB, dengan pasangan alamat: subnet remote, alamat MAC virtual flannel.1 di node remote, dan IP host remote.
bridge fdb show dev flannel.1
ip neigh show dev flannel.1Perintah bridge fdb show dev flannel.1 memperlihatkan pemetaan MAC ke IP host, sedangkan ip neigh show dev flannel.1 menunjukkan alamat yang sudah dipelajari. Kombinasi keduanya menentukan ke mana paket harus dibungkus.
VNI adalah identifier virtual network, default 1, dan port default adalah 4789. Keduanya bisa disesuaikan melalui net-conf.json jika port 4789 berbenturan dengan layanan lain di host.
net-conf.json: |
{
"Network": "10.244.0.0/16",
"Backend": {
"Type": "vxlan",
"VNI": 1,
"Port": 4789
}
}Perhatikan bahwa field Type: vxlan adalah kunci yang memilih backend. Nilai VNI dan Port di atas adalah default Flannel, jadi menulisnya eksplisit hanya berguna jika kalian ingin mengubahnya. Pastikan perubahan ini konsisten di seluruh node karena semuanya membaca ConfigMap yang sama.
Untuk traffic antar node yang berada pada subnet yang sama, Flannel menyediakan opsi DirectRouting. Ketika diaktifkan, paket intra-subnet diteruskan langsung tanpa encapsulation, seperti backend host-gw, sementara lintas subnet tetap memakai VXLAN. Ini kompromi antara performa dan fleksibilitas.
net-conf.json: |
{
"Network": "10.244.0.0/16",
"Backend": {
"Type": "vxlan",
"DirectRouting": true
}
}Setiap paket VXLAN membawa overhead 50 bytes: 14 bytes Ethernet asli dihitung ulang, 8 bytes header VXLAN, 8 bytes UDP, dan 20 bytes IP. Konsekuensinya, MTU efektif di dalam Pod menjadi MTU host dikurangi 50.
ip link show eth0
ip link show flannel.1Jika eth0 ber-MTU 1500, flannel.1 otomatis ber-MTU 1450. Perhitungan dan penyesuaian MTU ini akan dibahas tuntas di episode 16, termasuk cara menghindari fragmentasi.
Encapsulation dan decapsulation memakai CPU di setiap node, meskipun dengan kernel modern dan offload VXLAN bebannya relatif kecil. Di jaringan dengan throughput sangat tinggi, overhead ini bisa terasa. Untuk skenario tersebut, kalian bisa mempertimbangkan host-gw yang dijelaskan di episode 5.
Untuk membuktikan encapsulation bekerja, kalian bisa menangkap paket di interface eth0 saat dua Pod lintas node saling ping. Trafik yang tampil bukan lagi ICMP langsung, melainkan UDP port 4789 yang membungkus ICMP tersebut.
sudo tcpdump -ni eth0 udp port 4789Output tcpdump akan menunjukkan paket UDP dengan port tujuan 4789. Kalian bisa mengonfirmasi bahwa setiap percakapan antar Pod lewat jalan ini, persis seperti desain VXLAN.
Terakhir, lakukan uji fungsional sederhana untuk memastikan overlay sehat:
kubectl run nettest --image=busybox --restart=Never -- sleep 3600
kubectl exec -it nettest -- ping -c 3 <ip-pod-node-lain>Jika ping berhasil, seluruh rantai bekerja: Pod, bridge, route, interface flannel.1, dan encapsulation VXLAN.
Episode 4 membuka kotak hitam backend VXLAN: encapsulation UDP di port 4789, peran interface flannel.1 dan FDB, konfigurasi VNI dan port, plus overhead 50 bytes yang melekat pada desain ini.
Inti yang harus dibawa pulang:
Di episode 5 selanjutnya kita akan mengeksplorasi backend host-gw dan alternatif lain — routing langsung tanpa encapsulation untuk performa maksimal, plus wireguard, ipsec, ipip, udp, dan extension beserta catatan keamanan CVE-2026-32241. Kalian akan bisa memilih backend yang tepat untuk kebutuhan kalian.