Belajar WireGuard - Performance & Kernel Optimizations
Episode 15 of 23

Belajar WireGuard - Performance & Kernel Optimizations

Episode ini membahas performa WireGuard dan optimasi kernel: keuntungan berjalan di kernel-space, multiqueue TUN, offloading GRO dan GSO, benchmark throughput dan latensi dengan iperf3, serta perbandingan WireGuard dengan OpenVPN dan IPsec.

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

Pendahuluan

Salah satu alasan WireGuard populer adalah kecepatannya. Berjalan di kernel-space dan memakai kriptografi modern yang bisa diakselerasi perangkat keras membuatnya jauh lebih cepat dari VPN userspace seperti OpenVPN. Namun kecepatan itu bukan sesuatu yang otomatis — perlu pengukuran dan sedikit penyesuaian agar optimal.

Episode 15 membahas fondasi performa WireGuard, optimasi yang tersedia di kernel, cara mengukur dengan iperf3, dan posisi WireGuard dibanding OpenVPN serta IPsec.

Mengapa WireGuard Cepat

Kernel-Space dan Multiqueue

WireGuard memproses paket di dalam kernel, sehingga tidak ada pertukaran konteks antara kernel dan proses userspace untuk setiap paket. Interface wg0 juga mendukung multiqueue: antrian paralel yang memungkinkan beberapa CPU memproses paket secara bersamaan, sangat membantu pada mesin dengan banyak core.

Cek jumlah queue interface wg0
ip link show wg0

Pada sistem yang besar, kalian juga bisa menambah jumlah queue interface saat membuatnya agar sejalan dengan jumlah CPU:

Buat wg0 dengan banyak queue
sudo ip link add dev wg0 type wireguard
sudo ethtool -l wg0

Offloading GRO dan GSO

Kernel bisa menggabungkan paket kecil menjadi lebih besar sebelum diproses dan memecahnya lagi saat dikirim — inilah GRO dan GSO. Penggabungan mengurangi overhead per paket dan meningkatkan throughput:

Cek status offload di NIC
ethtool -k eth0 | grep -E "generic-receive-offload|generic-segmentation-offload"

NIC modern juga menyediakan checksum offload yang meringankan CPU. Kombinasi GRO, GSO, dan checksum offload biasanya sudah aktif secara default.

Mengukur dengan iperf3

Mengukur Throughput

Untuk mengukur kecepatan maksimum tunnel, jalankan server iperf3 di satu sisi dan client di sisi lain lewat alamat tunnel:

Server iperf3 di sisi satu
iperf3 -s
Client iperf3 di sisi lain
iperf3 -c 10.0.0.1 -t 20

Angka 20 di iperf3 -c 10.0.0.1 -t 20 berarti pengukuran selama 20 detik. Bandingkan hasilnya dengan pengukuran tanpa tunnel (langsung ke alamat publik) untuk mengetahui overhead WireGuard. Overhead normal berada di kisaran beberapa persen.

Mengukur Latensi

Latensi diukur dengan ping lewat alamat tunnel:

Ukur RTT lewat tunnel
ping -c 20 10.0.0.1

Perhatikan RTT rata-rata dan nilai minimum. RTT tunnel selalu sedikit di atas RTT langsung karena overhead enkripsi, tetapi selisihnya harus kecil dan stabil.

MTU dan Penyesuaian

Mengapa MTU 1420

wg-quick memakai MTU 1420 secara default untuk IPv4. Angka ini berasal dari MTU 1500 standar dikurangi overhead kapsulasi WireGuard sebesar 80 byte. Jika link fisik kalian punya MTU lebih kecil, tunnel perlu MTU yang lebih kecil juga:

Set MTU di wg0.conf
[Interface]
Address = 10.0.0.1/24
ListenPort = 51820
PrivateKey = <kunci privat>
MTU = 1360

MTU = 1360 dipakai untuk link PPPoE yang biasanya hanya membawa 1492 byte. MTU yang terlalu besar memicu fragmentasi dan penurunan throughput drastis.

Uji MTU dengan Ping

Cari MTU ideal dengan ping bertanda no-fragment:

Uji payload maksimum
ping -M do -s 1400 -c 3 10.0.0.1

Jika ping -M do -s 1400 berhasil tetapi 1500 gagal, itu menandakan batas MTU berada di antara keduanya, dan MTU tunnel harus dikurangi.

Perbandingan dengan OpenVPN dan IPsec

Hasil Umum di Lapangan

Secara konsisten di berbagai benchmark publik, WireGuard unggul dalam throughput pada perangkat keras yang sama karena berjalan di kernel-space dan memakai kriptografi yang ringan. OpenVPN yang berjalan di userspace biasanya lebih lambat, terutama pada single-core. IPsec bisa menyaingi WireGuard, tetapi dengan kompleksitas konfigurasi yang jauh lebih tinggi.

Untuk kebutuhan kalian, angka pastinya sangat bergantung pada CPU, NIC, dan versi kernel. Selalu ukur di environment sendiri sebelum memilih — satu kali iperf3 memberi jawaban yang lebih meyakinkan daripada klaim di internet.

Penutup

Episode 15 menuntaskan topik performa: keuntungan kernel-space dan multiqueue, peran GRO dan GSO, pengukuran dengan iperf3, penyesuaian MTU, serta posisi WireGuard dalam perbandingan dengan OpenVPN dan IPsec.

Inti yang harus dibawa pulang:

  • WireGuard memproses paket di kernel-space tanpa konteks switch per paket.
  • Multiqueue TUN memanfaatkan banyak CPU.
  • GRO dan GSO menggabungkan paket untuk throughput lebih tinggi.
  • iperf3 -c <alamat-tunnel> -t 20 mengukur throughput nyata.
  • MTU 1420 default; kurangi untuk link PPPoE.
  • Selalu ukur di environment sendiri sebelum membandingkan protokol.

Di episode 16 selanjutnya kita membahas cross-platform dan mobile — WireGuard-Go sebagai implementasi userspace, WireGuardNT untuk Windows, aplikasi Android dan iOS dengan impor konfigurasi via QR code, serta optimasi baterai untuk perangkat seluler.

Belajar WireGuard - Performance & Kernel Optimizations | Belajar WireGuard