Подано модуль ядра, здатний у рази прискорити OpenVPN

Розробники пакету для створення приватних віртуальних мереж OpenVPN представили модуль ядра ovpn-dco, що дозволяє істотно прискорити продуктивність VPN. Незважаючи на те, що модуль поки що розвивається з оглядкою тільки на гілку linux-next і має статус експериментального, він уже досяг рівня стабільності, що дозволив задіяти його для забезпечення роботи сервісу OpenVPN Cloud.

У порівнянні з конфігурацією на основі інтерфейсу tun застосування модуля на стороні клієнта та сервера при використанні шифру AES-256-GCM дозволило досягти приросту пропускної спроможності в 8 разів (з 370 Мбіт/с до 2950 Мбіт/с). При застосуванні модуля лише за клієнта пропускна спроможність зросла втричі для вихідного трафіку і змінилася для вхідного. При застосуванні модуля лише за сервера пропускна здатність зросла вчетверо для вхідного трафіку і 4% для вихідного.

Подано модуль ядра, здатний у рази прискорити OpenVPN

Прискорення досягається за рахунок винесення всіх операцій шифрування, обробки пакетів та управління каналом зв'язку на бік ядра 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. Схожий модуль ovpn-dco-win також розвивається для ядра Windows.

Джерело: opennet.ru

Додати коментар або відгук