Proyecto VPN WireGuard anunciar Un hito importante para los usuarios de Windows en la actualidad: una implementación en modo kernel completamente nueva del protocolo VPN llamado WireGuardNT. La nueva aplicación permite un rendimiento significativamente mejorado en conexiones LAN de 10 Gbps, y también en muchas conexiones WI-Fi.
WireGuard (en Windows) y Wintun
La implementación nativa de WireGuard en Windows usa Wireguard-go, una implementación de espacio de usuario de WireGuard escrita en el lenguaje de programación Google Go. Luego, Wireguard-go se conecta a una máquina de red virtual, la mayoría de las cuales también viven en el espacio de los usuarios. A Donenfeld no le gustó ventanas del grifo, la interfaz de red virtual proporcionada por el proyecto OpenVPN, por lo que implementó su variante desde cero, llamada Winton.
Wintun es una clara mejora con respecto a las ventanas táctiles: el mismo proyecto OpenVPN implementó el soporte de Wintun, de manera impresionante Resultados (414 Mbps sobre Windows Tap frente a 737 Mbps sobre Wintun). Pero aunque el uso de Wintun es una mejora con respecto a las ventanas de clic, no cambia la necesidad de un cambio de contexto estático desde el espacio del kernel (donde vive la pila de red «real») y el espacio de usuario (donde se ejecutan OpenVPN y wireguard-go).
Para eliminar los cuellos de botella de rendimiento restantes, toda la pila (el conmutador virtual, el codificador, todo) debe incorporarse al kernel. En Linux, eso significa que es un DLKM (módulo de kernel cargable dinámico). En Windows, esto significa que es apropiado un controlador de dispositivo dentro del kernel.
WireGuardNT y kernel NT
Abandonar los componentes del espacio de usuario de la pila WireGuard en Windows y mantener todo en el kernel significa cambiar WireGuard para que funcione en Windows como ya funciona en Linux. De hecho, WireGuardNT comenzó como un puerto directo de la aplicación WireGuard en el kernel de Linux.
Según el creador de WireGuard, Jason Donenfield, una vez que el puerto inicial tuvo éxito «la base de datos de NT se separó rápidamente para encajar perfectamente con el NTism original y NDIS Interfaces de programación de aplicaciones. El resultado final es una implementación altamente integrada y de alto rendimiento de WireGuard para el kernel de NT, que aprovecha la gama completa de capacidades de NDIS y kernel de NT ”.
Esto también, por supuesto, significa deshacerse de muchos cambios de contexto. Los resultados finales son sólidos: más de tres veces el rendimiento excepcional, medido con Éter En un par de Equinix Metal (anteriormente packet.net) c3. pequeño casos.
Sin embargo, los beneficios de la conmutación sin contexto se extienden mucho más allá de los servidores Xeon con interfaces de 10 Gbps: Donenfeld mencionó que algunos de los primeros evaluadores informaron que WireGuardNT a veces resolvió los resultados de rendimiento masivos observados al usar su conexión VPN a través de Wi-Fi.
Probamos la diferencia en vivo, utilizando un HP EliteBook con una tarjeta Intel AX201 Wi-Fi 6, conectado al nodo del enrutador de nuestro conjunto de pruebas Plume Wi-Fi 6 Superpods. Aunque nuestros resultados no fueron tan emocionantes como los obtenidos por algunos de nuestros primeros evaluadores, confirman un aumento significativo en el rendimiento. En la misma máquina y con las mismas configuraciones, medimos WireGuardNT iperf3, que funciona de un 10 a un 25 por ciento más rápido que Wireguard-go y Wintun.
Prueba WireGuardNT hoy
WireGuardNT está disponible para pruebas en Windows público descargar Para WireGuard ahora, a partir de la versión 0.4. Pero dado que todavía está clasificado como experimental, deberá agregar manualmente una clave de registro y DWORD para usarlo. Abierto regedit
Como administrador, vaya a HKLM -> Programas. A continuación, cree una clave llamada WireGuard, y dentro de esa clave, un DWORD llamado ExperimentalKernelDriver.
Con ExperimentalKernelDriver configurado en 1, sus túneles usarán el nuevo código WireGuardNT; sin él (o con ExperimentalKernelDriver configurado en 0), usarán el comportamiento predeterminado, que es el antiguo código wireguard-go / wintun. Para que su cambio surta efecto, deberá hacer clic con el botón derecho en el icono de WireGuard en la bandeja del sistema y hacer clic en Finalizar. Cuando vuelva a abrir la aplicación WireGuard, respetará su configuración de ExperimentalKernelDriver.
En el futuro, WireGuardNT estará habilitado de forma predeterminada y, en su lugar, deberá establecer una marca de registro si desea el código heredado. Más allá de eso, el proyecto eventualmente planea terminar con Wireguard-go / wintun en el dúo genérico por completo. Por otro lado, los proyectos en sí mismos se mantendrán, ya que tienen una amplia utilidad más allá del cliente WireGuard.