4 poin oleh GN⁺ 2025-12-20 | 1 komentar | Bagikan ke WhatsApp
  • GotaTun adalah implementasi WireGuard yang ditulis dalam Rust, dengan tujuan menghadirkan koneksi VPN yang cepat, efisien, dan stabil
  • Dikembangkan dengan fork dari proyek BoringTun milik Cloudflare, serta mengintegrasikan fitur privasi Mullvad seperti DAITA dan Multihop
  • Pertama diterapkan pada versi Android untuk mengatasi masalah crash yang terjadi pada wireguard-go yang ada, dengan tingkat crash turun dari 0.40% → 0.01%
  • Dengan beralih ke basis Rust, Mullvad menghapus masalah kompleksitas FFI dan ketidakstabilan runtime Go, sekaligus meningkatkan kemudahan pemeliharaan dan efisiensi debugging
  • Mullvad berencana memperluas GotaTun ke semua platform pada 2026 serta melakukan audit keamanan dan peningkatan performa

Gambaran umum GotaTun

  • GotaTun adalah implementasi WireGuard® berbasis Rust yang dikembangkan oleh Mullvad VPN, dengan fokus pada kecepatan, stabilitas, dan efisiensi
    • Dikembangkan dengan melakukan fork dari BoringTun milik Cloudflare
    • Namanya merupakan gabungan dari BoringTun dan terowongan Götatunneln di Göteborg, Swedia
  • Mengintegrasikan fitur peningkatan privasi Mullvad seperti DAITA dan Multihop
  • Mengoptimalkan performa dengan memanfaatkan multithreading aman di Rust dan strategi memori zero-copy
  • Sudah dirilis untuk versi Android pada akhir November 2024, dan platform lain dijadwalkan hadir pada 2026
Iklan

Keterbatasan wireguard-go sebelumnya

  • Aplikasi mobile Mullvad selama bertahun-tahun menggunakan wireguard-go berbasis Go
    • Banyak penyedia VPN juga menggunakan implementasi yang sama
  • Sejak pertengahan 2024, Mullvad melakukan fork dan pemeliharaan terhadap wireguard-go untuk mendukung DAITA dan Multihop
  • Namun, lebih dari 85% crash yang dilaporkan di Google Play Developer Console berasal dari wireguard-go
    • Sebagian masalah telah diperbaiki, tetapi banyak yang masih tersisa
  • Ada kompleksitas dan ketidakstabilan akibat penggunaan FFI (foreign function interface) antara Rust dan Go
    • Perilaku runtime Go tidak transparan dari kode Rust, dan saat crash terjadi, pemulihan stack trace menjadi sulit
    • Hal ini membuat debugging dan pemeliharaan jangka panjang menjadi lebih sulit
Iklan

Hasil di Android

  • Setelah GotaTun diterapkan, tidak terjadi satu pun crash
    • Semua crash yang sebelumnya berasal dari wireguard-go berhasil dihilangkan
  • Sejak aplikasi Android versi 2025.10 (rilis akhir November), tingkat crash yang dirasakan pengguna turun dari 0.40% → 0.01%
  • Umpan balik pengguna juga melaporkan peningkatan kecepatan dan penurunan penggunaan baterai

Rencana ke depan

  • Audit keamanan pihak ketiga dijadwalkan pada awal 2026
  • Semua platform (termasuk desktop dan iOS) akan mengganti wireguard-go dengan GotaTun
  • Peningkatan performa akan terus dilanjutkan
  • Mullvad menetapkan 2026 sebagai titik balik utama untuk ekspansi GotaTun

1 komentar

 
GN⁺ 2025-12-20
Komentar Hacker News
  • Di Pixel 8, peningkatan performanya terasa jelas
    Dulu wireguard-go bahkan tidak bisa menembus 100Mbps, tetapi pada versi GotaTun bisa mencapai lebih dari 500Mbps
    Namun, karena bug baru, perangkat tidak bisa masuk ke mode deep sleep, sehingga baterai mendadak habis 10 kali lebih cepat

    • Di Samsung A5 lama saya, baterai tetap awet meski wireguard dinyalakan 24/7
      Pixel 8 jauh lebih bertenaga, jadi kalau masalah seperti ini terjadi, kemungkinan besar ini bug di sisi Android
    • Saya juga melihat gejala serupa di ZeroTier dan MizuDroid. Sepertinya ini masalah pada network stack Android
    • Saya mengalami hal yang sama di Raspberry Pi 5 juga. Mungkin karena kurangnya optimasi ARM
    • Mungkin ini terkait masalah MTU 1320
    • Ternyata ini alasan aplikasi Mullvad di Pixel 6a mendadak mulai terhubung hanya dalam 1 detik. Dulu butuh 5~10 detik
  • Saya sangat menyukai WireGuard sampai-sampai membuat sendiri proyek bernama WrapGuard
    Saya menulisnya dalam Go agar aplikasi bisa dijalankan tanpa akses root
    Saya tidak begitu paham Rust, jadi saya penasaran apakah Rust memang lebih cocok untuk firmware atau software jaringan
    Tautan GitHub WrapGuard

    • Firmware harus berjalan di lingkungan tanpa GC, jadi Rust lebih cocok
      Rust lebih andal berkat timing yang dapat diprediksi dan sistem tipe yang kuat
      Namun untuk software jaringan, Go juga sudah cukup baik, dan pada akhirnya kesimpulannya adalah “lebih baik pakai bahasa yang sudah dikuasai
    • Pada akhirnya, seperti pepatah “pilih setan yang sudah dikenal”, memakai bahasa yang kita kuasai adalah pilihan yang realistis
    • Go punya FFI yang sulit, jadi untuk dipakai sebagai library embedded, Rust lebih unggul
    • Saya sedang memikirkan mana yang lebih baik untuk local container networking yang tidak memerlukan kriptografi
      Saya ingin mencoba container tool baru dari Apple
    • Akan bagus jika ada fitur untuk menggabungkan beberapa tunnel VPN menjadi satu
      Misalnya, airVPN mengizinkan 5 koneksi simultan, jadi akan menarik jika itu bisa digabung untuk menyatukan trafik
  • Saya harap GotaTun juga diterapkan di aplikasi Android Tailscale. Saya memakai Tailscale untuk terhubung ke Mullvad

    • GotaTun adalah fitur khusus Mullvad, jadi kecil kemungkinan Tailscale akan mengadopsinya
      Tim Tailscale sangat mahir mengoptimalkan library berbasis Go,
      dan pada April 2023 mereka mencapai performa 10Gbps dengan wireguard-go
      Posting blog terkait
  • Isu tentang paging memori di Go dan pencegahan stack overflow pada goroutine terasa menarik
    Saya penasaran kenapa GoString melakukan page-in memori sebanyak itu
    Lihat isu #6727 dan isu #7728

  • Akan bagus jika protokol WireGuard sendiri juga ditingkatkan
    Saat ini ada keterbatasan karena sulit menembus pemblokiran oleh pemerintah atau ISP

    • Ini bukan peran WireGuard, melainkan seharusnya ditangani oleh protokol enkapsulasi seperti shadowsocks
      WireGuard dirancang sebagai tunnel UDP L3 yang sederhana
    • Karena alasan ini, ada fork seperti amnezia-wg
    • Aplikasi Mullvad punya opsi bypass seperti shadowsocks dan lainnya,
      tetapi rasanya akan lebih baik jika itu tertanam langsung di protokolnya
    • Jika ingin membaca lebih lanjut, lihat bagian Known Limitations di dokumentasi resmi
  • Kalau ada tim implementasinya di sini, saya ingin bertanya — kenapa perubahan ini tidak di-upstream ke BoringTun

    • BoringTun sudah 3 tahun menjalani refaktor struktur, jadi bisa dipahami jika Mullvad memilih berjalan sendiri
      Semakin banyak implementasi yang ada, semakin tinggi stabilitas dan keandalan protokol
      Secara pribadi, saya lebih percaya Mullvad daripada Cloudflare
    • BoringTun pada dasarnya berada dalam status hampir tidak dipelihara
      Obscura VPN telah beralih ke fork NepTUN
      Tautan GitHub NepTUN
      Saya penasaran kenapa Mullvad membuat fork baru dan apakah ada rencana untuk mengintegrasikannya dengan fork yang sudah ada
  • Saya rasa Mullvad adalah pilihan paling tepercaya di antara layanan VPN
    Tetapi orang-orang lebih tertarik pada kode diskon dari YouTuber

    • Mullvad adalah yang terbaik dari sisi privasi, tetapi masuk ke sebagian besar daftar blokir VPN
      NordVPN lebih bagus dalam menghindari itu. Misalnya, Mullvad diblokir saat mengakses Imgur atau dari dalam Inggris
    • Bagi pengguna umum, tujuan utamanya adalah membuka blokir geografis, jadi Mullvad kurang menarik
    • Banyak juga yang mencoretnya dari pilihan setelah port forwarding dihentikan
    • IP Mullvad sering diblokir oleh layanan streaming, jadi akhirnya tidak ada pilihan selain memakai Nord
    • Selain itu, banyak merek VPN yang diakuisisi satu perusahaan lalu di-rebranding
  • Saya kira WireGuard di Android berjalan di dalam kernel

    • Sebenarnya harus diaktifkan sebagai modul, dan di kernel Android itu dinonaktifkan
  • Saya ingin melihat lebih banyak data analisis penyebab crash pada wireguard-go
    Saya penasaran apakah itu bug di library itu sendiri atau masalah FFI

    • Karena WireGuard berbasis UDP yang sederhana, agak mengejutkan kalau ada crash
  • Saya tidak memakai kode proxy berbasis Go di aplikasi MintFlow
    Sebagai gantinya, saya mengimplementasikan sebagian protokol proxy dalam Rust
    Untuk WireGuard, saya memakai implementasi C berbasis plugin fdio vpp

    • Cukup mengejutkan bahwa implementasi berbasis vpp bisa dijalankan di iOS
      Saya juga pernah mengutak-atik vpp sekitar 6 bulan, dan itu cukup menarik