Разработчиците на пакета за създаване на виртуални частни мрежи OpenVPN представиха модул на ядрото ovpn-dco, който позволява значително да се увеличи производителността на VPN. Въпреки че модулът все още е в процес на развитие с оглед на клон linux-next и има статут на експериментален, той вече е достигнал ниво на стабилност, което позволява да се използва за осигуряване на работата на услугата OpenVPN Cloud.
В сравнение с конфигурация на базата на интерфейса tun, прилагането на модула от страна на клиента и сървъра с използването на шифъра AES-256-GCM позволява да се постигне осемкратен ръст на пропускателната способност (от 370 Mbit/s до 2950 Mbit/s). При прилагането на модула само от страна на клиента, пропускателната способност се е увеличила три пъти за изходящия трафик и не е била променена за входящия. При прилагането на модула само от страна на сървър пропускателната способност се е увеличила четири пъти за входящия трафик и с 35% за изходящия.

Ускорението се постига чрез извеждане на всички операции по шифроване, обработка на пакети и управление на канала на свързване на нивото на ядрото на Linux, което позволява да се избегнат разходите, свързани с превключването на контекста, и да се оптимизира работата чрез директен достъп до вътрешните API на ядрото, като същевременно се изключва бавната предаване на данни между ядрото и пространството на потребителя (шифроването, разшифроването и маршрутизацията се извършват от модула без изпращане на трафика в обработчик в пространството на потребителя).
Отбелязва се, че негативното влияние върху производителността VPN оказа главно ресурсноемките операции по шифроване и забавянията, предизвикани от превключването на контекста. За ускоряване на шифроването са били привлечени процесорни разширения, като Intel AES-NI, но превключванията на контекста преди появата на ovpn-dco остават тясно място. Освен прилагането на предоставените от процесора инструкции за ускорение на шифроването, в модула ovpn-dco допълнително се осигурява разделение на операциите по шифроване на отделни сегменти и тяхната обработка в многопоточен режим, което позволява да се използват всички налични ядра на CPU.
В текущите ограничения на реализация, които в бъдеще ще бъдат отстранени, се откроява поддръжка само на режимите AEAD и ‚none‘ (без удостоверяване) и криптографските алгоритми AES-GCM и CHACHA20POLY1305. Поддръжката на DCO се планира да бъде включена в изданието на OpenVPN 2.6, насрочено за четвърто тримесечие на настоящата година. В момента модулът се поддържа в протичащото бета тестване на Linux клиента OpenVPN3 и в експерименталните версии на OpenVPN сървъра за Linux. Подобен модул ovpn-dco-win също се разработва за Windows ядрото.
Източник: opennet.ru
