Die Entwickler des OpenVPN-Pakets haben das Kernel-Modul ovpn-dco vorgestellt, das die Leistung von VPNs erheblich steigern kann. Obwohl das Modul derzeit noch in der Entwicklung ist und sich auf den linux-next-Zweig konzentriert, hat es bereits ein stabiles Niveau erreicht, das den Betrieb des OpenVPN Cloud-Dienstes ermöglicht.
Im Vergleich zur Konfiguration mit dem tun-Interface führte die Verwendung des Moduls sowohl auf der Client- als auch auf der Serverseite mit dem AES-256-GCM-Verschlüsselungsverfahren zu einer Steigerung der Bandbreite um das Achtfache (von 370 Mbit/s auf 2950 Mbit/s). Bei der Verwendung des Moduls nur auf der Clientseite verdreifachte sich die Bandbreite für ausgehenden Traffic, während sie für eingehenden Traffic unverändert blieb. Server Die Bandbreite erhöhte sich um das Vierfache für eingehenden Traffic und um 35 % für ausgehenden.

Die Beschleunigung wird erreicht, indem alle Operationen der Verschlüsselung, Paketverarbeitung und Kanalverwaltung auf den Linux-Kernel ausgelagert werden. Dies ermöglicht es, die Kosten durch Kontextwechsel zu eliminieren, die Effizienz durch direkten Zugriff auf die internen APIs des Kernels zu optimieren und langsame Datenübertragungen zwischen Kernel und Benutzerspeicher zu vermeiden (Verschlüsselung, Entschlüsselung und Routing erfolgen durch das Modul, ohne dass der Datenverkehr an einen Prozess im Benutzerspeicher gesendet wird).
Es wird festgestellt, dass negative Auswirkungen auf die Leistung auftreten. VPN führen hauptsächlich ressourcenintensive Verschlüsselungsoperationen durch und die Verzögerungen, die durch Kontextwechsel verursacht werden. Um die Verschlüsselung zu beschleunigen, kamen CPU-Erweiterungen wie Intel AES-NI zum Einsatz, jedoch blieben die Kontextwechsel bis zur Einführung von ovpn-dco ein Engpass. Neben der Nutzung der vom Prozessor bereitgestellten Instruktionen zur Beschleunigung der Verschlüsselung ermöglicht das ovpn-dco-Modul zusätzlich die Aufteilung der Verschlüsselungsoperationen in separate Segmente und deren Verarbeitung im Multithreading-Modus, was es erlaubt, alle verfügbaren CPU-Kerne zu nutzen.
Aus den aktuellen Einschränkungen der Implementierung, die in Zukunft behoben werden, sticht die Unterstützung nur für die Modi AEAD und 'none' (ohne Authentifizierung) sowie die Verschlüsselungen AES-GCM und CHACHA20POLY1305 hervor. Die Unterstützung von DCO soll in die kommende Version OpenVPN 2.6 aufgenommen werden, die für das 4. Quartal dieses Jahres geplant ist. Derzeit wird das Modul im laufenden Beta-Test des Linux-Clients OpenVPN3 und in experimentellen Builds des OpenVPN-Servers für Linux unterstützt. Ein ähnliches Modul, ovpn-dco-win, wird ebenfalls für das Windows-Kernel entwickelt.
Quelle: opennet.ru
