El nuevo WireGuardNT rompe el techo de Windows
Proyectos de WireGuard VPN Anunciado un hito importante para sus usuarios de Windows en la actualidad: un nuevo protocolo VPN llamado WireGuardNT implementado en modo kernel. La nueva implementación permite un rendimiento significativamente mejor para conexiones LAN de 10 Gbps, y también para muchas conexiones Wi-Fi.
WireGuard (Windows) y Wintun
La implementación original de WireGuard en Windows utiliza la implementación del modo de usuario Wireguard-Goa-WireGuard en el lenguaje de programación Google Go. Luego, Wireguard-go se vincula a un dispositivo de red virtual, la mayoría del cual también reside en modo de usuario. A Donenfeld no le gustó grifos y ventanas, La interfaz web virtual proporcionada por el proyecto OpenVPN, por lo que implementó su propio llamado Wintun.
Wintun es una clara mejora con respecto a las ventanas táctiles: el proyecto OpenVPN en sí ha introducido el soporte de Wintun y es impresionante resultados (414 Mbps en Windows frente a 737 Mbps en Wintun). Pero si bien el uso de Wintun es una mejora con respecto a las ventanas táctiles, no cambia la necesidad de cambios de contexto continuos sobre el modo kernel (donde reside la pila de red “real”) y el modo de usuario (donde funcionan OpenVPN y wireguard).
Para deshacerse de los cuellos de botella de rendimiento restantes, es necesario llevar toda la pila (adaptador virtual, cifrado y todo) al núcleo. En Linux, esto significa Módulo de núcleo cargable dinámicamente (DLKM). En Windows, significa que hay un controlador de dispositivo interno válido en el kernel.
WireGuardNT y kernel NT
Rechazar partes del espacio de usuario de la pila WireGuard en Windows y mantener todo en el núcleo significa hacer que WireGuard funcione en Windows como ya funciona en Linux. De hecho, WireGuardNT comenzó como un puerto directo para la implementación WireGuard del kernel de Linux.
Según Jason Donenfeld, creador de WireGuard, cuando el puerto original tuvo éxito, “la base de datos de código NT rápidamente divergió para adaptarse bien a los NTismos nativos y NDIS API. El resultado es una implementación WireGuard profundamente integrada y altamente eficiente para el kernel NT que aprovecha la gama completa de características del kernel NT y NDIS. “
-
El rendimiento de Ethr de esta instancia pequeña de Equrinx Metal c3 es de solo 2 Gbps. ¿Cuánta mejora se puede lograr con un gran cambio de contexto?
Jason Donenfeld
-
Ethr atraviesa el mismo túnel, entre los mismos hosts, pero usa WireGuardNT y elimina muchos cambios de contexto, más que triplicando el rendimiento del método anterior.
Jason Donenfeld
-
La menor latencia por paquete de WireGuardNT también beneficia a los usuarios de Wi-Fi de alta velocidad.
Jim Salter
-
La mejora del rendimiento es mayor en el lado de descarga de esta conexión, lo que no es infrecuente. Las transmisiones desde dispositivos móviles son generalmente más débiles que las estaciones base, en un esfuerzo por conservar energía, calor y tamaño.
Jim Salter
Por supuesto, esto también significa que nos deshacemos del terrible cambio de contexto. El resultado final es sólido: más de tres veces el rendimiento medido de primera clase Etr con un par de Equinix Metal (anteriormente packet.net) c3.pequeño casos.
Sin embargo, los beneficios de una menor conmutación de contexto se extienden 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 impactos masivos de rendimiento que se ven cuando se usa una conexión VPN a través de una conexión Wi-Fi.
Probamos la diferencia directamente usando un HP EliteBook y una tarjeta Intel AX201 Wi-Fi 6 conectada a un nodo de enrutador en el kit de prueba para Plume Wi-Fi 6 Superpods. Si bien nuestros resultados no fueron tan dramáticos como los de algunos de los primeros evaluadores, confirman una mejora significativa en el rendimiento. Con el mismo dispositivo y configuraciones, medimos WireGuardNT iperf3 para que funcione entre un 10 y un 25 por ciento más rápido que Wireguard-go y Wintun.
Estamos probando WireGuardNT hoy
WireGuardNT está disponible para pruebas en Windows general cargar Para WireGuard ahora, comenzando con la versión 0.4. Pero dado que todavía está clasificado como experimental, deberá agregar manualmente la clave de registro y DWORD para poder usarlo. Abierto regedit
como administrador y luego vaya a HKLM-> Software. Luego cree una clave llamada WireGuard y dentro de ella un DWORD llamado ExperimentalKernelDriver.
Cuando ExperimentalKernelDriver se establece en 1, los túneles usan el nuevo código WireGuardNT; sin él (o cuando es 0) usan el comportamiento predeterminado, que es el antiguo código wireguard-go / wintun. Para que el cambio surta efecto, debe hacer clic con el botón derecho en el icono de WireGuard en el área de notificación y hacer clic en Salir. Cuando vuelve a abrir WireGuard, sigue la configuración de ExperimentalKernelDriver.
En el futuro, WireGuardNT estará habilitado de forma predeterminada y deberá establecer una marca de registro si desea el código anterior. Además de esto, el proyecto eventualmente calculará wireguard-go / wintun completamente en el binario general. Sin embargo, los proyectos en sí sobrevivirán porque tienen una amplia gama de usos fuera del cliente WireGuard.
Especialista web. Evangelista de viajes. Alborotador. Fanático de la música amigable con los hipster. Experto en comida