Belajar L2TP IPsec - Performance Tuning & MTU
Episode 15 of 23

Belajar L2TP IPsec - Performance Tuning & MTU

Episode ini mengoptimalkan kinerja L2TP/IPsec: menghitung overhead enkapsulasi, menerapkan MSS clamping, mengatur mtu interface PPP, serta memanfaatkan AES-NI, multiprosesor, dan offload ESP.

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

Pendahuluan

VPN yang lambat jarang disebabkan CPU server — hampir selalu karena MTU dan fragmentasi. Episode 15 membahas dua hal sekaligus: bagaimana overhead enkapsulasi L2TP/IPsec memangkas ukuran paket yang bisa dikirim, dan bagaimana mengoptimalkan kinerja dari sisi perangkat keras serta proses daemon.

Pemahaman tentang MTU membuat kalian bisa mengatasi gejala klasik "website tidak bisa dibuka tapi ping lancar" — gangguan yang hampir selalu berakar pada paket besar yang terfragmentasi. Setelah itu kita naik ke tuning kinerja untuk deployment berskala besar.

Menghitung Overhead L2TP/IPsec

Berapa Byte yang Hilang

Setiap paket yang melewati VPN menumpuk header dari setiap lapisan: PPP, L2TP, UDP, ESP, dan header IP luar. Totalnya sekitar 60-80 byte per paket. Dengan MTU ethernet 1500, MTU yang tersedia untuk data di dalam tunnel biasanya berada di kisaran 1350-1420 byte.

Rincian overhead:

Overhead per lapisan
PPP + L2TP + UDP : 12 byte (6 + 8 + 4 di atas UDP header)
ESP header       : 8-16 byte
ESP trailer + ICV: 16-24 byte
Header IP luar   : 20 byte
Total            : kira-kira 60-80 byte

Karena itu MTU ppp0 yang umum dipakai adalah 1400, memberi ruang aman untuk hampir semua kombinasi algoritma.

MSS Clamping

Menghentikan Fragmentasi di Sumber

MSS clamping mengubah nilai Maximum Segment Size di paket TCP SYN sehingga TCP tidak pernah mengirim segmen yang terlalu besar untuk tunnel. Ini adalah perbaikan paling ampuh dan dilakukan di firewall, bukan di aplikasi.

MSS clamping dengan nftables
sudo nft add rule inet filter forward tcp flags syn tcp option maxseg size set rt mtu
sudo nft add rule inet filter forward tcp flags syn tcp option maxseg size set 1360

Atau versi iptables yang klasik:

MSS clamping dengan iptables
sudo iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN \
  -j TCPMSS --clamp-mss-to-pmtu

Baris TCPMSS --clamp-mss-to-pmtu menghitung MSS dari path MTU yang terdeteksi. Untuk hasil deterministik, set nilai tetap 1360 seperti baris nftables di atas.

Mengatur MTU Interface PPP

Menyetel mtu dan mru

Selain clamping, setel MTU dan MRU di interface ppp0 lewat opsi pppd:

options.xl2tpd dengan MTU
ipcp-accept-local
ipcp-accept-remote
mtu 1400
mru 1400
ms-dns 8.8.8.8

Tambahkan dua baris mtu 1400 dan mru 1400 pada /etc/ppp/options.xl2tpd. Interface ppp0 yang terbentuk akan memakai nilai ini, dan IPCP menawarkannya ke client saat negosiasi.

Periksa nilai MTU aktif:

Cek MTU ppp0
ip addr show ppp0

Jika mtu 1400 tercantum di output, pengaturan berhasil. Bila masalah fragmentasi masih muncul, turunkan bertahap ke 1350 lalu uji dengan ping berukuran besar:

Uji ukuran paket tanpa fragmentasi
ping -M do -s 1372 -c 3 192.168.42.50

Performance Tuning

AES-NI dan Offload Perangkat Keras

CPU modern punya instruksi AES-NI yang mempercepat enkripsi AES di perangkat keras. Pastikan kernel menggunakannya:

Cek dukungan AES-NI
grep -o aes /proc/cpuinfo | head -1

Jika processor mendukung, aes muncul di flags. Untuk mesin dengan NIC yang punya offload IPsec, aktifkan ESP hardware offload di driver NIC — ini memindahkan enkripsi dari CPU ke kartu jaringan.

Multiprosesor di strongSwan

Charon mendukung beberapa worker thread untuk menangani banyak koneksi IKE sekaligus. Sesuaikan dengan jumlah inti CPU di strongswan.conf:

Charon threads
charon {
    threads = 16
    keep_alive = 20s
}

Ukur dulu jumlah inti dengan nproc, lalu set threads = 16 (atau nilai yang sesuai). Jangan berlebihan — terlalu banyak thread untuk sedikit koneksi justru menambah overhead scheduling.

Penutup

Episode 15 membekali kalian trik performa yang paling berdampak: perhitungan overhead 60-80 byte, MSS clamping di firewall, MTU interface PPP, serta pemanfaatan AES-NI, ESP offload, dan thread charon.

Inti yang harus dibawa pulang:

  • Overhead L2TP/IPsec sekitar 60-80 byte per paket.
  • MTU ppp0 yang aman biasanya 1400 atau lebih rendah.
  • MSS clamping dengan TCPMSS --clamp-mss-to-pmtu mencegah fragmentasi.
  • Set mtu 1400 dan mru 1400 di options.xl2tpd.
  • Uji ukuran paket dengan ping -M do -s 1372.
  • Manfaatkan AES-NI, offload NIC, dan thread charon untuk skala besar.

Di episode 16 selanjutnya kita akan membahas certificate management — membangun hirarki CA, menerbitkan sertifikat dengan certutil dan pki, serta menangani revocation melalui CRL dan OCSP.

Belajar L2TP IPsec - Performance Tuning & MTU | Belajar L2TP IPsec