VPN provider Mullvad, which develops the Mullvad Browser web browser and provides infrastructure for the Mozilla VPN service, has unveiled the GotaTun project, which implements a VPN protocol. WireGuard, written in Rust and running in user space. The project's code is distributed under a BSD license. Mullvad has already used GotaTun in its VPN client for the platform. Android and next year intends to migrate desktop and iOS applications to it.
GotaTun is a fork of the BoringTun toolkit developed by Cloudflare and used in the WARP app. GotaTun differs from BoringTun in that it fully supports the platform. Android, performance optimizations, and additional privacy protection features.
GotaTun integrates support for DAITA (Defense Against AI-guided Traffic Analysis) technology to protect against encrypted transit traffic analysis performed using machine learning-based tools. DAITA normalizes the size of sent packets, adds random background traffic, and distorts typical data flow patterns. GotaTun also implements a Multihop mode, allowing access to VPN-servers not directly, but through a series of transit nodes, which, for example, allows for the organization of traffic flow along more optimal routes.
To improve performance, GotaTun implements multi-threaded processing and uses a zero-copy memory management strategy, without intermediate buffering, using only the initially provided buffer.
Previously, Mullvad's applications used a fork of the implementation WireGuard in the Go language β wireguard-go, expanded with DAITA and Multihop support. According to Google statistics, 85% of all user-submitted crash reports Android-Mulvad clients were linked to the code wireguard-go, so Mullvad decided to replace the implementation WireGuard to a more reliable option.
The Rust implementation was chosen because the Mullvad VPN application is written in Rust, except for the code wireguard-go, interaction with which was organized through a complex FFI (foreign function interface) interface that utilized unsafe blocks. In the release published at the end of November Android-Mulvad client implementation wireguard-go was replaced by GotaTun, which solved reliability issues - compared to previous versions, the metric reflecting the number of crashes changed from 0.40% to 0.01%.
Source: opennet.ru
