- GotaTun es una implementación de WireGuard escrita en Rust, orientada a ofrecer conexiones VPN rápidas, eficientes y estables
- Fue desarrollada a partir de un fork del proyecto BoringTun de Cloudflare, e integra funciones de privacidad de Mullvad como DAITA y Multihop
- Se aplicó primero en la versión de Android para resolver problemas de fallos que ocurrían en wireguard-go, reduciendo la tasa de fallos de 0.40% a 0.01%
- Al migrar a una base en Rust, se eliminaron los problemas de complejidad de FFI e inestabilidad del runtime de Go, mejorando la mantenibilidad y la eficiencia de depuración
- Mullvad planea en 2026 expandir GotaTun a todas las plataformas, además de realizar auditorías de seguridad y mejoras de rendimiento
Resumen de GotaTun
- GotaTun es una implementación de WireGuard® basada en Rust desarrollada por Mullvad VPN, con el objetivo de ofrecer alta velocidad, estabilidad y eficiencia
- Fue desarrollada a partir de un fork de BoringTun de Cloudflare
- El nombre combina BoringTun con Götatunneln, el túnel de Gotemburgo en Suecia
- Integra funciones de refuerzo de privacidad de Mullvad como DAITA y Multihop
- Optimiza el rendimiento aprovechando el multithreading seguro de Rust y una estrategia de memoria zero-copy
- Su despliegue en Android se completó a fines de noviembre de 2024, y su llegada a otras plataformas está prevista para 2026
Limitaciones del wireguard-go existente
- Durante años, la app móvil de Mullvad utilizó wireguard-go, basado en Go
- Varios proveedores de VPN usan la misma implementación
- Desde mediados de 2024, Mullvad mantuvo un fork de wireguard-go para dar soporte a DAITA y Multihop
- Sin embargo, más del 85% de los fallos reportados en la Google Play Developer Console se originaban en wireguard-go
- Algunos problemas se resolvieron, pero muchos seguían pendientes
- También existían complejidad e inestabilidad derivadas del uso de FFI (interfaz de funciones externas) entre Rust y Go
- El comportamiento del runtime de Go era opaco desde el código Rust, y cuando ocurrían fallos, era difícil recuperar el stack trace
- Esto complicaba la depuración y el mantenimiento a largo plazo
Resultados en Android
- Tras la adopción de GotaTun, no se produjo ni un solo fallo
- Se eliminaron todos los fallos que ocurrían en wireguard-go
- Desde la versión 2025.10 de la app para Android (lanzada a fines de noviembre), la tasa de fallos percibida por los usuarios bajó de 0.40% a 0.01%
- En los comentarios de los usuarios también se reportaron mejoras de velocidad y menor consumo de batería
Planes a futuro
- A inicios de 2026 está prevista una auditoría de seguridad de terceros
- Está previsto reemplazar wireguard-go por GotaTun en todas las plataformas (incluyendo escritorio e iOS)
- Se seguirá impulsando el trabajo de mejora de rendimiento
- Mullvad considera 2026 como un punto de inflexión clave para la expansión de GotaTun
1 comentarios
Comentarios de Hacker News
En el Pixel 8 se notó claramente una mejora de rendimiento
Antes,
wireguard-goni siquiera sacaba 100Mbps, pero con la versión de GotaTun da más de 500MbpsEso sí, por un bug nuevo no puede entrar en modo de sueño profundo, así que la batería se drena de golpe 10 veces más rápido
wireguardencendido 24/7, la batería dura bastanteEl Pixel 8 es mucho más potente, así que si pasa esto, probablemente sea un bug del lado de Android
Me gusta tanto WireGuard que hice mi propio proyecto llamado WrapGuard
Lo escribí en Go para poder ejecutar apps sin permisos de root
No sé mucho de Rust, así que me pregunto si Rust es más adecuado para firmware o software de red
Enlace al GitHub de WrapGuard
Rust ofrece timing predecible y una gran confiabilidad gracias a su fuerte sistema de tipos
Pero para software de red, Go también es suficientemente bueno y al final la conclusión es: mejor usar el lenguaje que ya conoces
Quiero probar la nueva container tool de Apple
Por ejemplo, airVPN permite 5 conexiones simultáneas, así que sería genial poder fusionarlas para combinar el tráfico
Ojalá GotaTun también llegue a la app de Tailscale para Android. Yo uso Tailscale para conectarme a Mullvad
El equipo de Tailscale es muy bueno optimizando bibliotecas basadas en Go,
y en abril de 2023 lograron 10Gbps de rendimiento con
wireguard-goPost del blog relacionado
Me pareció interesante el tema de la paginación de memoria en Go y el problema para evitar desbordamientos de pila en las goroutines
Me pregunto por qué GoString pagina tanta memoria
Ver issue #6727 y issue #7728
Estaría bien que también mejorara el propio protocolo WireGuard
Actualmente tiene la limitación de que es difícil superar los bloqueos de gobiernos o ISP
WireGuard está diseñado como un túnel UDP L3 simple
pero estaría mejor si vinieran integradas en el propio protocolo
Si hay alguien del equipo de implementación, me gustaría preguntar por qué no hicieron upstream de los cambios a BoringTun
Mientras existan varias implementaciones, aumenta la estabilidad y confiabilidad del protocolo
Personalmente confío más en Mullvad que en Cloudflare
En Obscura VPN cambiaron al fork NepTUN
Enlace al GitHub de NepTUN
Me pregunto por qué Mullvad hizo un fork nuevo y si planean integrarlo con forks existentes
Creo que Mullvad es la opción más confiable entre las VPN
Pero a la gente le atraen más los códigos de descuento de los youtubers
NordVPN esquiva eso mejor. Por ejemplo, con Mullvad te bloquean en Imgur o al acceder desde Reino Unido
Yo pensaba que WireGuard corría dentro del kernel en Android
Me gustaría ver más datos del análisis de causas de los crashes de
wireguard-goMe intriga si es un bug de la propia biblioteca o un problema de FFI
En la app MintFlow no uso código de proxy basado en Go
En cambio, implemento algunos protocolos de proxy en Rust
Para WireGuard uso una implementación en C basada en el plugin fdio vpp
Yo también trabajé con vpp unos 6 meses antes y me pareció bastante interesante