Wprowadzono moduł jądra, który może znacznie przyspieszyć OpenVPN

Twórcy pakietu wirtualnej sieci prywatnej OpenVPN wprowadzili moduł jądra ovpn-dco, który może znacznie przyspieszyć działanie VPN. Pomimo tego, że moduł jest wciąż rozwijany z myślą wyłącznie o gałęzi Linux-next i ma status eksperymentalny, osiągnął już poziom stabilności pozwalający na wykorzystanie go do zapewnienia działania usługi OpenVPN Cloud.

W porównaniu do konfiguracji opartej o interfejs tun, zastosowanie po stronie klienta i serwera modułu wykorzystującego szyfr AES-256-GCM pozwoliło uzyskać 8-krotny wzrost przepustowości (z 370 Mbit/s do 2950 Mbit /S). Przy zastosowaniu modułu wyłącznie po stronie klienta przepustowość wzrosła trzykrotnie dla ruchu wychodzącego i nie uległa zmianie dla ruchu przychodzącego. Przy zastosowaniu modułu wyłącznie po stronie serwera przepustowość wzrosła 4-krotnie dla ruchu przychodzącego i o 35% dla ruchu wychodzącego.

Wprowadzono moduł jądra, który może znacznie przyspieszyć OpenVPN

Przyspieszenie osiąga się poprzez przeniesienie wszystkich operacji szyfrowania, przetwarzania pakietów i zarządzania kanałami komunikacyjnymi na stronę jądra Linuksa, co eliminuje obciążenie związane z przełączaniem kontekstu, umożliwia optymalizację pracy poprzez bezpośredni dostęp do wewnętrznych API jądra oraz eliminuje powolny transfer danych pomiędzy jądrem i przestrzeni użytkownika (szyfrowanie, deszyfrowanie i routing są wykonywane przez moduł bez wysyłania ruchu do procedury obsługi w przestrzeni użytkownika).

Należy zauważyć, że negatywny wpływ na wydajność VPN wynika głównie z operacji szyfrowania wymagających dużej ilości zasobów oraz opóźnień spowodowanych przełączaniem kontekstu. Do przyspieszenia szyfrowania wykorzystano rozszerzenia procesorów, takie jak Intel AES-NI, ale przełączniki kontekstu pozostawały wąskim gardłem aż do pojawienia się ovpn-dco. Oprócz wykorzystania instrukcji dostarczonych przez procesor w celu przyspieszenia szyfrowania, moduł ovpn-dco dodatkowo dba o to, aby operacje szyfrowania były dzielone na osobne segmenty i przetwarzane w trybie wielowątkowym, co pozwala na wykorzystanie wszystkich dostępnych rdzeni procesora.

Obecne ograniczenia implementacji, które zostaną uwzględnione w przyszłości, obejmują obsługę wyłącznie trybów AEAD i „none” oraz szyfrów AES-GCM i CHACHA20POLY1305. Planuje się, że obsługa DCO zostanie uwzględniona w wydaniu OpenVPN 2.6, zaplanowanym na 4. kwartał tego roku. Moduł jest obecnie obsługiwany w beta-testowym kliencie OpenVPN3 Linux i eksperymentalnych kompilacjach serwera OpenVPN dla systemu Linux. Podobny moduł, ovpn-dco-win, jest również rozwijany dla jądra systemu Windows.

Źródło: opennet.ru

Dodaj komentarz