Nowy WireGuardNT przełamuje pułapy produktywności w systemie Windows

Powiększenie / Zapomnij o zginalnych telefonach komórkowych, trzymamy się gier mobilnych.

Projekt WireGuard VPN ogłosić Ważny kamień milowy dla dzisiejszych użytkowników systemu Windows — całkowicie nowa implementacja trybu jądra protokołu VPN o nazwie WireGuardNT. Nowa aplikacja pozwala na znaczną poprawę przepustowości w połączeniach LAN 10 Gb/s – a także w wielu połączeniach Wi-Fi.

WireGuard (w Windows) i Wintun

Natywna implementacja WireGuard w systemie Windows wykorzystuje Wireguard-go – implementację WireGuard w przestrzeni użytkownika napisaną w języku programowania Google Go. Wireguard-go jest następnie dołączany do wirtualnej maszyny sieciowej, z której większość również znajduje się w przestrzeni użytkownika. Donenfeldowi się to nie podobało Okna kranowe, wirtualny interfejs sieciowy dostarczony przez projekt OpenVPN – zaimplementował więc od podstaw jego wariant, zwany Winton.

Wintun to wyraźna poprawa w stosunku do okienek kranowych — ten sam projekt OpenVPN zaimplementował obsługę Wintun, imponująco Wyniki (414 Mb/s w systemie Windows Tap vs 737 Mb/s w Wintun). Ale chociaż korzystanie z Wintun jest ulepszeniem w stosunku do okien klikanych, nie zmienia to potrzeby statycznego przełączania kontekstu z przestrzeni jądra (gdzie znajduje się „prawdziwy” stos sieciowy) i przestrzeni użytkownika (gdzie działają zarówno OpenVPN, jak i wireguard-go).

Aby wyeliminować pozostałe wąskie gardła wydajności, cały stos — wirtualny przełącznik, koder, wszystko — musi zostać wciągnięty do jądra. W systemie Linux oznacza to DLKM (Dynamic Loadable Kernel Module). W systemie Windows oznacza to, że odpowiedni jest sterownik urządzenia w jądrze.

Jądro WireGuardNT i NT

Porzucenie komponentów przestrzeni użytkownika stosu WireGuard w systemie Windows i zachowanie wszystkiego w jądrze oznacza zmianę WireGuard, aby działał w systemie Windows tak, jak już działa w systemie Linux. W rzeczywistości WireGuardNT powstał jako bezpośredni port aplikacji WireGuard w jądrze Linuksa.

Według twórcy WireGuard, Jasona Dunnfielda, gdy początkowy port się powiódł, „baza danych NT szybko rozeszła się, aby ładnie pasować do NTism i oryginalnego NTism” NDIS Interfejsy programowania aplikacji. Efektem końcowym jest wysoce zintegrowana, wysokowydajna implementacja WireGuard dla jądra NT, która wykorzystuje pełną gamę możliwości jądra NT i NDIS”.

READ  Epicki sędzia przeciwko Apple nie wydaje się kupować w obronie Apple

To oczywiście oznacza również pozbycie się wielu zmian kontekstu. Wyniki końcowe są solidne: ponad trzykrotnie większa wydajność, mierzona za pomocą Eter Na parze Equinix Metal (dawniej packet.net) c3. mały sprawy.

Korzyści płynące z przełączania bezkontekstowego wykraczają daleko poza serwery Xeon z interfejsami 10 Gb/s — Donenfeld wspomniał, że niektórzy wcześni testerzy zgłaszali, że WireGuardNT czasami rozwiązywał ogromne wyniki wydajności obserwowane podczas korzystania z połączenia VPN przez Wi-Fi.

Przetestowaliśmy różnicę na żywo, używając HP EliteBook z kartą Intel AX201 Wi-Fi 6, podłączoną do węzła routera naszego zestawu testowego Plume Wi-Fi 6 Superpods. Chociaż nasze wyniki nie były tak ekscytujące, jak te uzyskane przez niektórych naszych wczesnych testerów, potwierdzają one znaczny wzrost wydajności. Na tej samej maszynie iw tych samych konfiguracjach zmierzyliśmy WireGuardNT iperf3, który działa od 10 do 25 procent szybciej niż Wireguard-go i Wintun.

Test WireGuardNT dzisiaj

WireGuardNT jest dostępny do testowania w publicznym systemie Windows Pobieranie Dla WireGuard teraz, od wersji 0.4. Ale ponieważ nadal jest klasyfikowany jako eksperymentalny, musisz ręcznie dodać klucz rejestru i DWORD, aby go użyć. otwarty regedit Jako administrator przejdź do HKLM -> Programy. Następnie utwórz klucz o nazwie WireGuard, a wewnątrz tego klucza DWORD o nazwie ExperimentalKernelDriver.

Z ExperimentalKernelDriver ustawionym na 1, twoje tunele będą używać nowego kodu WireGuardNT – bez niego (lub z ExperimentalKernelDriver ustawionym na 0), będą używać domyślnego zachowania, czyli starego kodu wireguard-go/wintun. Aby zmiana zaczęła obowiązywać, musisz kliknąć prawym przyciskiem myszy ikonę WireGuard na pasku zadań i kliknąć Zakończ. Gdy ponownie otworzysz aplikację WireGuard, uszanuje ona ustawienia ExperimentalKernelDriver.

W przyszłości WireGuardNT będzie domyślnie włączony, a zamiast tego będziesz musiał ustawić flagę rejestru, jeśli chcesz mieć starszy kod. Poza tym projekt ostatecznie planuje całkowicie zakończyć Wireguard-go/wintun w ogólnym duecie. Z drugiej strony same projekty pozostaną, ponieważ mają szerokie zastosowanie poza klientem WireGuard.

Randolph Howe

„Zła entuzjasta podróży. Irytująco skromny ćpun internetu. Nieprzepraszający alkoholiczek”.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Back to top