Vývojáři balíčku pro vytváření virtuálních privátních sítí OpenVPN představili jádrový modul ovpn-dco, který výrazně zlepšuje výkon VPN. I když je modul zatím ve vývoji a zaměřuje se pouze na větev linux-next, má již status experimentálního, což mu umožnilo dosáhnout stabilní úrovně, která umožňuje jeho použití pro zajištění služby OpenVPN Cloud.
Ve srovnání s konfigurací založenou na rozhraní tun vedlo použití modulu na straně klienta a serveru při použití šifry AES-256-GCM k nárůstu propustnosti o 8x (z 370 Mbit/s na 2950 Mbit/s). Při použití modulu pouze na straně klienta se propustnost zvýšila třikrát pro odchozí provoz a nezměnila se pro příchozí. Při použití modulu pouze na straně serveru se propustnost zvýšila 4x pro příchozí provoz a o 35 % pro odchozí.

Zrychlení se dosahuje tím, že se všechny operace šifrování, zpracování paketů a správa komunikačního kanálu přesouvají do jádra Linuxu, což eliminuje režijní náklady spojené s přepínáním kontextu, umožňuje optimalizaci práce přímým přístupem k interním API jádra a vylučuje pomalý přenos dat mezi jádrem a uživatelským prostorem (šifrování, dešifrování a směrování provádí modul bez odesílání provozu do zpracovatele v uživatelském prostoru).
Bylo zjištěno, že negativní dopady na výkon VPN způsobují především výkonově náročné operace šifrování a zpoždění vyvolaná přepínáním kontextu. Pro zrychlení šifrování se využívala procesorová rozšíření, jako je Intel AES-NI, ale přepínání kontextu zůstávalo úzkým hrdlem až do příchodu ovpn-dco. Kromě využití instrukcí poskytovaných procesorem pro urychlení šifrování modul ovpn-dco navíc zajišťuje rozdělení operací šifrování na samostatné segmenty a jejich zpracování v vícevláknovém režimu, což umožňuje využít všechny dostupné jádra CPU.
Z aktuálních omezení implementace, která budou v budoucnu odstraněna, je dosažitelná podpora pouze pro režimy AEAD a 'none' (bez autentizace) a šifry AES-GCM a CHACHA20POLY1305. Podpora DCO má být zahrnuta do vydání OpenVPN 2.6, naplánovaného na 4. čtvrtletí tohoto roku. V současnosti je modul podporován v probíhajícím beta testu Linuxového klienta OpenVPN3 a v experimentálních sestavách serveru OpenVPN pro Linux. Podobný modul ovpn-dco-win se také vyvíjí pro jádro Windows.
Zdroj: opennet.ru
