Представлен модуль ядра, способный в разы ускорить OpenVPN
21 сентября 2021 года
Разработчики пакета для создания виртуальных частных сетей OpenVPN представили модуль ядра ovpn-dco, позволяющий существенно ускорить производительность VPN. Несмотря на то, что модуль пока развивается с оглядкой только на ветку linux-next и имеет статус экспериментального, он уже достиг уровня стабильности, позволившего задействовать его для обеспечения работы сервиса OpenVPN Cloud.
По сравнению с конфигурацией на основе интерфейса tun применение модуля на стороне клиента и сервера при использовании шифра AES-256-GCM позволило добиться прироста пропускной способности в 8 раз (с 370 Mbit/s до 2950 Mbit/s). При применении модуля только на стороне клиента пропускная способность возросла в три раза для исходящего трафика и не изменилась для входящего. При применении модуля только на стороне сервера пропускная способность возросла в 4 раза для входящего трафика и на 35% для исходящего.
Ускорение достигается за счёт выноса всех операций шифрования, обработки пакетов и управления каналом связи на сторону ядра Linux, что позволяет избавиться от накладных расходов, связанных с переключением контекста, даёт возможность оптимизировать работу за счёт прямого обращения к внутренним API ядра и исключает медленную передачу данных между ядром и пространством пользователя (шифрование, расшифровка и маршрутизация выполняется модулем без отправки трафика в обработчик в пространстве пользователя).
Отмечается, что негативное влияние на производительность VPN оказывают главным образом ресурсоёмкие операции шифрования и задержки, вызванные переключением контекста. Для ускорения шифрования привлекались процессорные расширения, такие как Intel AES-NI, но переключения контекста до появления ovpn-dco оставались узким местом. Помимо применения предоставляемых процессором инструкций для ускорения шифрования в модуле ovpn-dco дополнительно обеспечено разделение операций шифрования на отдельные сегменты и их обработка в многопоточном режиме, что позволяет задействовать все имеющиеся ядра CPU.
Из текущих ограничений реализации, которые в будущем будут устранены, выделяется поддержка только режимов AEAD и 'none' (без аутентификации) и шифров AES-GCM и CHACHA20POLY1305. Поддержку DCO планируют включить в состав выпуска OpenVPN 2.6, запланированного на 4 квартал нынешнего года. В настоящее время модуль поддерживается в проходящем бета-тестирование Linux-клиенте OpenVPN3 и в экспериментальных сборках сервера OpenVPN для Linux.
Источники
править
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.