Le nouveau WireGuardNT brise les plafonds de débit sous Windows

[ad_1]

Le projet WireGuard VPN a annoncé aujourd’hui une étape importante pour ses utilisateurs Windows : une toute nouvelle implémentation en mode noyau du protocole VPN appelé WireGuardNT. La nouvelle implémentation permet un débit considérablement amélioré sur les connexions LAN 10 Gbit/s, ainsi que sur de nombreuses connexions WI-Fi.

WireGuard (sous Windows) et Wintun

L’implémentation originale de WireGuard sur Windows utilise wireguard-go, une implémentation en espace utilisateur de WireGuard écrite dans le langage de programmation Go de Google. Wireguard-go est ensuite lié à un périphérique réseau virtuel, dont la majorité réside également dans l’espace utilisateur. Donenfeld n’aimait pas les tap-windows, l’interface réseau virtuelle fournie par le projet OpenVPN. Il a donc implémenté son propre remplacement à partir de zéro, appelé Wintun.

Wintun est une nette amélioration par rapport aux tap-windows : le projet OpenVPN lui-même a implémenté la prise en charge de Wintun, avec des résultats impressionnants (414 Mbps sur tap-windows contre 737 Mbps sur Wintun). Mais bien que l’utilisation de Wintun soit une amélioration par rapport aux fenêtres de connexion, cela ne change pas le besoin de changements de contexte constants entre l’espace du noyau (où réside la « vraie » pile réseau) et l’espace utilisateur (où OpenVPN et wireguard sont tous deux en direct).

Afin de se débarrasser des goulots d’étranglement de performances restants, l’ensemble de la pile (adaptateur virtuel, crypto et tout le reste) doit être intégré au noyau. Sous Linux, cela signifie être un DLKM (module de noyau à chargement dynamique). Sous Windows, cela signifie être un bon pilote de périphérique intégré au noyau.

WireGuardNT et le noyau NT

Abandonner les composants de l’espace utilisateur de la pile WireGuard sur Windows et garder tout dans le noyau signifie changer WireGuard pour qu’il fonctionne sous Windows de la même manière qu’il fonctionne déjà sous Linux. En fait, WireGuardNT a commencé comme un port direct de l’implémentation Linux WireGuard dans le noyau.

Selon le créateur de WireGuard Jason Donenfeld, une fois le port initial réussi, « la base de code NT a rapidement divergé pour bien s’adapter aux NTisms natifs et aux API NDIS. Le résultat final est une implémentation profondément intégrée et hautement performante de WireGuard pour le noyau NT, qui utilise toute la gamme des capacités du noyau NT et NDIS. »

Cela signifie aussi, bien sûr, se débarrasser d’un grand nombre de changements de contexte. Les résultats finaux sont solides : plus de trois fois les performances haut de gamme, mesurées avec Ethr sur une paire d’instances c3.small d’Equinix Metal (anciennement packet.net).

Cependant, les avantages d’une commutation de contexte moindre s’étendent plus loin que les serveurs Xeon avec des interfaces 10 Gbit/s. Donenfeld a mentionné que certains des premiers testeurs ont signalé que WireGuardNT avait résolu les problèmes de performances parfois énormes observés lors de l’utilisation de leur connexion VPN via Wi-Fi.

Nous avons testé la différence directement, en utilisant un HP EliteBook avec une carte Intel AX201 Wi-Fi 6, connecté au nœud de routeur d’un kit de test de Superpods Plume Wi-Fi 6. Bien que nos résultats ne soient pas aussi spectaculaires que ceux de certains des premiers testeurs, ils confirment une augmentation significative des performances. Sur le même équipement et avec les mêmes configurations, nous avons mesuré que WireGuardNT iperf3 s’exécutait de 10 à 25 % plus rapidement que wireguard-go et Wintun.

Tester WireGuardNT aujourd’hui

WireGuardNT est disponible pour les tests dans le téléchargement général de Windows pour WireGuard maintenant, à partir de la version 0.4. Mais comme il est toujours classé comme expérimental, vous devrez ajouter manuellement une clé de registre et un DWORD pour l’utiliser. S’ouvrir regedit en tant qu’administrateur, puis accédez à HKLM–>Logiciel. Ensuite, créez une clé nommée WireGuard, et dans cette clé, un DWORD nommé ExperimentalKernelDriver.

Avec ExperimentalKernelDriver défini sur 1, vos tunnels utiliseront le nouveau code WireGuardNT – sans lui (ou avec lui défini sur 0), ils utiliseront le comportement par défaut, qui est l’ancien code wireguard-go/wintun. Pour que votre modification prenne effet, vous devrez cliquer avec le bouton droit sur l’icône WireGuard dans la barre d’état système et cliquer sur « Quitter ». Lorsque vous ouvrez à nouveau l’application WireGuard, elle honorera votre paramètre ExperimentalKernelDriver.

À l’avenir, WireGuardNT sera activé par défaut et vous devrez plutôt définir un indicateur de registre si vous voulez l’ancien code. Au-delà de cela, le projet prévoit de supprimer complètement wireguard-go/wintun dans le binaire général. Les projets eux-mêmes, en revanche, resteront, car ils ont une large utilité au-delà du client d’origine WireGuard.

[ad_2]

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*