Belajar Flannel - Optimasi Performa & MTU
Episode 16 of 23

Belajar Flannel - Optimasi Performa & MTU

Episode ini mengoptimalkan performa Flannel: menghitung MTU yang benar dengan overhead VXLAN 50 bytes, menghindari fragmentasi, serta mengaktifkan direct routing untuk mempercepat traffic intra-subnet dan mengukur hasilnya dengan benchmark sederhana.

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

Pendahuluan

Flannel bekerja dengan baik secara default, tetapi jaringan tidak selalu ideal: MTU host berbeda-beda, ada hop dengan batas paket lebih kecil, dan aplikasi heavy network butuh throughput maksimal. Di sinilah optimasi dimulai.

Episode 16 membahas penghitungan MTU yang benar, cara menghindari fragmentasi, dan pengaktifan direct routing untuk traffic intra-subnet. Semua dibungkus dengan cara mengukur hasilnya.

Menghitung MTU yang Benar

Overhead 50 Bytes VXLAN

Setiap paket yang melewati tunnel VXLAN menambah overhead 50 bytes. MTU efektif di dalam Pod adalah MTU host dikurangi overhead tersebut. Jika host memakai 1500, MTU Pod harus 1450.

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

Perintah ip link show eth0 menampilkan MTU host, dan ip link show flannel.1 menampilkan MTU yang dihitung flanneld. Selisihnya harus 50 untuk backend VXLAN.

Menghindari Fragmentasi

Kesalahan paling umum adalah MTU Pod lebih besar dari yang bisa ditampung jalur tunnel. Akibatnya paket dipecah di tengah jalan, performa anjlok, atau koneksi TCP gagal. Gejala khasnya: ping kecil berhasil, tetapi transfer besar berhenti di tengah jalan.

Aturan praktisnya: turunkan MTU sampai jalur terendah di seluruh cluster. Jika ragu, gunakan MTU yang lebih kecil dan stabil daripada yang besar tetapi rapuh.

Mengatur MTU di Flannel

Field MTU di net-conf

Secara default flanneld menghitung MTU otomatis. Kalian bisa memaksakan nilai tertentu lewat field MTU di net-conf.json:

Set MTU di net-conf
net-conf.json: |
  {
    "Network": "10.244.0.0/16",
    "MTU": 1450,
    "Backend": {
      "Type": "vxlan"
    }
  }

Nilai 1450 aman untuk host dengan MTU 1500. Untuk host jumbo frame 9000, kalian bisa memakai 8950, selama seluruh hop di jaringan mengizinkan.

Menguji MTU Setelah Diubah

Setelah mengubah MTU dan me-restart DaemonSet, uji dengan paket sebesar MTU:

Uji paket besar tanpa fragmentasi
kubectl exec -it <pod> -- ping -c 2 -s 1450 -M do <ip-pod-node-lain>

Opsi -M do pada ping meminta don't fragment. Jika paket 1450 bytes berhasil, MTU terpasang benar. Jika gagal, MTU terlalu besar untuk jalur.

Direct Routing untuk Intra-subnet

Kapan Direct Routing Bekerja

Traffic antara node yang berada pada subnet host yang sama tidak perlu encapsulation: node bisa saling menjangkau langsung. Opsi DirectRouting di backend VXLAN memanfaatkan ini dengan memakai route langsung untuk traffic intra-subnet, dan kembali ke VXLAN untuk lintas subnet.

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

Verifikasi Route Hasil Direct Routing

Setelah aktif, route menuju node di subnet yang sama berubah menjadi route langsung tanpa interface flannel.1:

Cek route direct
ip route | grep flannel

Output dari ip route | grep flannel menampilkan route via dev flannel.1 untuk node di subnet berbeda, dan via dev eth0 untuk node di subnet yang sama. Ini bukti direct routing bekerja.

Benchmark Sederhana

Mengukur Throughput

Untuk membuktikan dampak optimasi, ukur throughput sebelum dan sesudah perubahan. Tool sederhana yang bisa dipakai: iperf di dalam Pod.

Jalankan server iperf
kubectl run iperf-srv --image=networkstatic/iperf --restart=Never --command -- iperf -s
kubectl run iperf-cli --image=networkstatic/iperf --restart=Never --rm -it --command -- iperf -c <ip-pod-srv>

Output iperf menampilkan bandwidth antara dua Pod. Bandingkan hasil dengan backend vxlan biasa, dengan DirectRouting, dan dengan host-gw. Pola hasilnya akan konsisten: semakin sedikit overhead, semakin tinggi throughput.

Interpretasi Hasil

Jangan hanya mengejar angka tertinggi. Pertimbangkan keseimbangan: host-gw memang tercepat tetapi menuntut node saling reachable. VXLAN dengan DirectRouting memberi kompromi yang baik untuk jaringan campuran. Gunakan data benchmark untuk mendukung keputusan di episode 21.

Penutup

Episode 16 mengoptimalkan performa Flannel: menghitung MTU dengan overhead 50 bytes, menghindari fragmentasi, mengaktifkan direct routing, dan mengukur hasilnya dengan benchmark.

Inti yang harus dibawa pulang:

  • Overhead VXLAN 50 bytes menentukan MTU Pod yang benar.
  • MTU yang terlalu besar menyebabkan fragmentasi dan koneksi putus.
  • Field MTU di net-conf.json bisa memaksa nilai yang diinginkan.
  • DirectRouting mempercepat traffic intra-subnet tanpa encapsulation.
  • Verifikasi MTU dengan ping -M do seukuran MTU.
  • Benchmark iperf memberi data untuk memilih backend dan konfigurasi.

Di episode 17 selanjutnya kita akan keluar dari satu cluster: multi-cluster dan advanced topology — membangun overlay lintas cluster, memahami keterbatasan Flannel, menggabungkan node dengan backend berbeda, serta topologi lanjutan seperti IPv6 dan pembatasan alokasi subnet.

Belajar Flannel - Optimasi Performa & MTU | Belajar Flannel