Belajar Flannel - Backend VXLAN (Default)
Episode 4 of 23

Belajar Flannel - Backend VXLAN (Default)

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.

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

Pendahuluan

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.

Bagaimana VXLAN Bekerja

Encapsulation UDP di Port 4789

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.

Lihat detail interface VXLAN
ip -d link show flannel.1

Output 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 dan Learning FDB

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.

Cek FDB dan neighbor
bridge fdb show dev flannel.1
ip neigh show dev flannel.1

Perintah 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.

Konfigurasi Backend VXLAN

Mengatur VNI dan Port

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.

Backend VXLAN custom
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.

Direct Routing: Opsi Penghemat Overhead

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.

Aktifkan direct routing
net-conf.json: |
  {
    "Network": "10.244.0.0/16",
    "Backend": {
      "Type": "vxlan",
      "DirectRouting": true
    }
  }

Keterbatasan VXLAN

Overhead 50 Bytes

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.

Cek MTU host dan tunnel
ip link show eth0
ip link show flannel.1

Jika 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.

Overhead CPU dan Batas Jaringan

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.

Memeriksa VXLAN Secara Langsung

Menelusuri Paket Encapsulated

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.

Tangkap paket VXLAN
sudo tcpdump -ni eth0 udp port 4789

Output tcpdump akan menunjukkan paket UDP dengan port tujuan 4789. Kalian bisa mengonfirmasi bahwa setiap percakapan antar Pod lewat jalan ini, persis seperti desain VXLAN.

Verifikasi End-to-End

Terakhir, lakukan uji fungsional sederhana untuk memastikan overlay sehat:

Uji antar Pod
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.

Penutup

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:

  • VXLAN membungkus frame Pod dalam UDP port 4789 menuju IP host tujuan.
  • Interface flannel.1 adalah pintu encapsulation di setiap node.
  • FDB menghubungkan subnet remote dengan MAC dan IP host remote.
  • VNI dan Port bisa disesuaikan lewat net-conf.json, defaultnya 1 dan 4789.
  • Overhead VXLAN 50 bytes membuat MTU Pod = MTU host dikurangi 50.
  • DirectRouting menghemat overhead untuk traffic intra-subnet.

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.