El nuevo WireGuardNT rompe los techos de rendimiento en Windows

Olvídese de los teléfonos móviles flexibles, estamos esperando peluches de teléfonos móviles que funcionen.
Agrandar / Olvídese de los teléfonos móviles flexibles, estamos esperando peluches de teléfonos móviles que funcionen.

El proyecto WireGuard VPN Anunciado un hito importante para sus usuarios de Windows en la actualidad: una implementación totalmente nueva en modo kernel del protocolo VPN llamado WireGuardNT. La nueva implementación permite un rendimiento enormemente mejorado en conexiones LAN de 10 Gbps, y también en muchas conexiones WI-Fi.

WireGuard (en Windows) y Wintun

La implementación original de WireGuard en Windows utiliza wireguard-go, una implementación del espacio de usuario de WireGuard escrita en el lenguaje de programación Go de Google. Luego, Wireguard-go se vincula a un dispositivo de red virtual, la mayoría del cual también vive en el espacio de usuario. A Donenfeld no le gustó tap-windows, la interfaz de red virtual proporcionada por el proyecto OpenVPN, por lo que implementó su propio reemplazo desde cero, llamado Wintun.

Wintun es una mejora definitiva con respecto a las ventanas táctiles: el proyecto OpenVPN en sí ha implementado el soporte de Wintun, con impresionantes resultados

(414Mbps sobre tap-windows vs 737Mbps sobre 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 constantes desde el espacio del kernel (donde vive la pila de red “real”) y el espacio de usuario (donde OpenVPN y wireguard-go viven).

Para deshacerse de los cuellos de botella de rendimiento restantes, toda la pila (adaptador virtual, criptografía y todo) debe incorporarse al kernel. En Linux, eso significa ser un DLKM (módulo de núcleo cargable dinámicamente). En Windows, eso significa ser un controlador de dispositivo interno adecuado.

WireGuardNT y el kernel de NT

Deshacerse de 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 implementación de WireGuard en el kernel de Linux.

Según el creador de WireGuard Jason Donenfeld, una vez que el puerto inicial tuvo éxito “la base de código NT rápidamente divergió para encajar bien con los NTismos nativos y NDIS API. El resultado final es una implementación profundamente integrada y de alto rendimiento de WireGuard para el kernel de NT, que hace uso de toda la gama de capacidades del kernel de NT y NDIS “.

Esto también, por supuesto, significa deshacerse de una gran cantidad de cambios de contexto. Los resultados finales son sólidos: más de tres veces el rendimiento de gama alta, medido con Ethr en un par de Equinix Metal (anteriormente packet.net) c3.pequeño instancias.

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 resolvió los impactos de rendimiento a veces masivos que se ven al usar su conexión VPN a través de Wi-Fi.

Probamos la diferencia directamente, usando un HP EliteBook con una tarjeta Intel AX201 Wi-Fi 6, conectada al nodo del enrutador de un kit de prueba de Plume Wi-Fi 6 Superpods. Aunque nuestros resultados no fueron tan dramáticos como los de algunos de los primeros evaluadores, sí confirman un aumento significativo del rendimiento. En el mismo equipo y con las mismas configuraciones, medimos WireGuardNT iperf3 funcionando entre un 10 y un 25 por ciento más rápido que wireguard-go y Wintun.

Probando WireGuardNT hoy

WireGuardNT está disponible para pruebas en el sistema general de Windows. 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 un DWORD para usarlo. Abrir regedit como administrador, luego navegue hasta HKLM -> Software. 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 él 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 “Salir”. 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 anterior. Más allá de eso, el proyecto planea eventualmente eliminar wireguard-go / wintun en el binario general por completo. Los proyectos en sí mismos, por otro lado, se mantendrán, ya que tienen una amplia utilidad más allá del cliente de WireGuard estándar.

Leave a Reply

Your email address will not be published. Required fields are marked *