Projeto VPN WireGuard anunciar Um marco importante para os usuários do Windows hoje – uma implementação de modo kernel totalmente nova do protocolo VPN chamado WireGuardNT. O novo aplicativo permite uma melhoria significativa de rendimento em conexões LAN de 10 Gbps – e em muitas conexões WI-Fi também.
WireGuard (no Windows) e Wintun
A implementação nativa do WireGuard no Windows usa Wireguard-go – uma implementação de espaço do usuário do WireGuard escrita na linguagem de programação Google Go. O Wireguard-go é então conectado a uma máquina de rede virtual, a maioria das quais também vivem no espaço dos usuários. Donenfeld não gostou janelas de torneira, a interface de rede virtual fornecida pelo projeto OpenVPN – então implementou sua variante do zero, chamada Winton.
Wintun é uma melhoria clara em relação às janelas de toque – o mesmo projeto OpenVPN implementou o suporte Wintun, de forma impressionante Resultados (414 Mbps no windows tap vs 737 Mbps no Wintun). Mas, embora o uso do Wintun seja uma melhoria em relação às janelas de clique, ele não muda a necessidade de uma mudança de contexto estático do espaço do kernel (onde reside a pilha de rede “real”) e do espaço do usuário (onde o OpenVPN e o wireguard-go são executados).
Para eliminar os gargalos de desempenho remanescentes, toda a pilha – o switch virtual, o codificador, tudo – deve ser inserida no kernel. No Linux, isso significa DLKM (Dynamic Loadable Kernel Module). No Windows, isso significa que um driver de dispositivo embutido no kernel é apropriado.
Kernel WireGuardNT e NT
Abandonar os componentes do espaço do usuário da pilha do WireGuard no Windows e manter tudo no kernel significa mudar o WireGuard para funcionar no Windows da maneira que já funciona no Linux. Na verdade, o WireGuardNT começou como uma porta direta do aplicativo WireGuard no kernel do Linux.
De acordo com o criador do WireGuard, Jason Dunnfield, uma vez que a versão inicial foi bem-sucedida, “o banco de dados do NT rapidamente divergiu para se encaixar perfeitamente com os NTismos e o NTismo original” NDIS Interfaces de programação de aplicativos. O resultado final é uma implementação altamente integrada e de alto desempenho do WireGuard para o kernel NT, que aproveita toda a gama de recursos do kernel NT e NDIS. ”
Isso também, é claro, significa livrar-se de muitas mudanças de contexto. Os resultados finais são sólidos: mais de três vezes o desempenho excepcional, medido usando Éter Em um par de Equinix Metal (anteriormente packet.net) c3. pequeno casos.
Os benefícios da comutação sem contexto estendem-se muito além dos servidores Xeon com interfaces de 10 Gbps, no entanto – Donenfeld mencionou que alguns dos primeiros testadores relataram que o WireGuardNT às vezes resolvia os resultados de desempenho massivos vistos ao usar sua conexão VPN por Wi-Fi.
Testamos a diferença ao vivo, usando um HP EliteBook com uma placa Intel AX201 Wi-Fi 6, conectada ao nó do roteador de nossa suíte de teste Plume Wi-Fi 6 Superpods. Embora nossos resultados não sejam tão empolgantes quanto os obtidos por alguns de nossos primeiros testadores, eles confirmam um aumento significativo no desempenho. Na mesma máquina e com as mesmas configurações, medimos o WireGuardNT iperf3, que funciona de 10% a 25% mais rápido do que o Wireguard-go e o Wintun.
Teste WireGuardNT hoje
WireGuardNT está disponível para teste em Windows público baixar Para WireGuard agora, a partir da versão 0.4. Mas, como ainda é classificado como experimental, você precisará adicionar manualmente uma chave de registro e DWORD para usá-lo. Aberto regedit
Como administrador, navegue até HKLM -> Programas. Em seguida, crie uma chave chamada WireGuard e, dentro dessa chave, um DWORD chamado ExperimentalKernelDriver.
Com ExperimentalKernelDriver definido como 1, seus túneis usarão o novo código WireGuardNT – sem ele (ou com ExperimentalKernelDriver definido como 0), eles usarão o comportamento padrão, que é o antigo código wireguard-go / wintun. Para que sua alteração tenha efeito, você precisará clicar com o botão direito do mouse no ícone do WireGuard na bandeja do sistema e clicar em Concluir. Quando você abrir o aplicativo WireGuard novamente, ele respeitará a configuração do ExperimentalKernelDriver.
No futuro, o WireGuardNT será habilitado por padrão e, em vez disso, você precisará definir um sinalizador de registro se quiser o código legado. Além disso, o projeto eventualmente planeja encerrar Wireguard-go / wintun na dupla genérica. Por outro lado, os próprios projetos permanecerão, uma vez que possuem uma ampla utilidade além do cliente WireGuard.