Les développeurs du package de création de réseaux privés virtuels OpenVPN ont présenté le module noyau ovpn-dco, qui permet d'améliorer considérablement les performances VPN. Bien que le module soit encore en développement en se basant uniquement sur la branche linux-next et ait le statut expérimental, il a déjà atteint un niveau de stabilité permettant de l'utiliser pour faire fonctionner le service OpenVPN Cloud.
Comparé à la configuration basée sur l'interface tun, l'utilisation du module cÎté client et serveur avec le chiffrement AES-256-GCM a permis d'atteindre une augmentation de la bande passante de 8 fois (de 370 Mbit/s à 2950 Mbit/s). En appliquant le module uniquement cÎté client, la bande passante a été triplée pour le trafic sortant et est restée inchangée pour le trafic entrant. Lors de l'application du module uniquement du cÎté de serveurs la bande passante a été multipliée par 4 pour le trafic entrant et a augmenté de 35 % pour le trafic sortant.

L'accélération est obtenue grùce à l'externalisation de toutes les opérations de chiffrement, de traitement des paquets et de gestion du canal de communication vers le noyau Linux, ce qui permet d'éliminer les surcharges liées aux changements de contexte, d'optimiser le fonctionnement grùce à un accÚs direct aux API internes du noyau et d'éviter les transferts de données lents entre le noyau et l'espace utilisateur (le chiffrement, le déchiffrement et le routage sont effectués par le module sans envoyer le trafic au gestionnaire dans l'espace utilisateur).
Il est notĂ© que l'impact nĂ©gatif sur les performances VPN est principalement dĂ» aux opĂ©rations de chiffrement gourmandes en ressources et aux latences causĂ©es par les changements de contexte. Pour accĂ©lĂ©rer le chiffrement, des extensions processeur telles qu'Intel AES-NI ont Ă©tĂ© utilisĂ©es, mais les changements de contexte demeuraient un goulot d'Ă©tranglement jusqu'Ă l'apparition d'ovpn-dco. En plus de l'utilisation des instructions fournies par le processeur pour accĂ©lĂ©rer le chiffrement, le module ovpn-dco assure Ă©galement une sĂ©paration des opĂ©rations de chiffrement en segments distincts et leur traitement en mode multithreading, ce qui permet d'utiliser tous les cĆurs de CPU disponibles.
Parmi les limitations actuelles de la mise en Ćuvre, qui seront Ă©liminĂ©es Ă l'avenir, il est Ă noter que seul les modes AEAD et ânoneâ (sans authentification) ainsi que les algorithmes de chiffrement AES-GCM et CHACHA20POLY1305 sont supportĂ©s. La prise en charge de DCO est prĂ©vue pour ĂȘtre incluse dans la version dâOpenVPN 2.6, planifiĂ©e pour le quatriĂšme trimestre de cette annĂ©e. Actuellement, le module est supportĂ© dans le client Linux dâOpenVPN3 qui est en bĂȘta-test et dans les versions expĂ©rimentales du serveur OpenVPN pour Linux. Un module similaire, ovpn-dco-win, est Ă©galement en dĂ©veloppement pour le noyau Windows.
Source : opennet.ru
