GotaTun is a WireGuard庐 implementation written in Rust aimed at being fast, efficient and reliable. GotaTun is a fork of the BoringTun project from Cloudflare. This is not a new protocol or connection method, just WireGuard庐 written in Rust. The name GotaTun is a combination of the original project, BoringTun, and G枚tatunneln, a physical tunnel located in Gothenburg. We have integrated privacy enhancing features like DAITA & Multihop, added first-class support for Android and used Rust to achieve great performance by using safe multi-threading and zero-copy memory strategies. Last month we rolled it out to all our Android users, and we aim to ship it to the remaining platforms next year. Why GotaTun? Our mobile apps have relied on wireguard-go for several years, a cross-platform userspace implementation of WireGuard庐 in Go. wireguard-go has been the de-facto userspace implementation of WireGuard庐 to this date, and many VPN providers besides Mullvad use it. Since mid-2024 we have been maintaining a fork of wireguard-go to support features like DAITA & Multihop. While wireguard-go has served its purpose for many years it has not been without its challenges. For Android apps distributed via the Google Play Store, Google collects crash reports and makes them available to developers. In the developer console we have seen that more than 85% of all crashes reported have stemmed from the wireguard-go. We have managed to solve some of the obscure issues over the years (#6727 and #7728 to name two examples), but many still remain. For these reasons we chose Android as the first platform to release GotaTun on, allowing us to see the impact right away. Another challenge we have faced is interoperating Rust and Go. Currently, most of the service components of the Mullvad VPN app are written in Rust with the exception of wireguard-go. Crossing the boundary between Rust and Go is done using a foreign function interface (FFI), which is inherently unsafe and complex. Since Go is a m...
First seen: 2025-12-19 12:16
Last seen: 2025-12-20 06:23