Ein Kernel-Modul wurde vorgestellt, das OpenVPN um ein Vielfaches beschleunigen kann.

Die Entwickler des Pakets zur Erstellung virtueller privater Netzwerke OpenVPN haben das Kernel-Modul ovpn-dco präsentiert, das die VPN-Leistung erheblich steigern kann. Obwohl das Modul derzeit nur für den linux-next-Zweig entwickelt wird und den Status experimentell hat, hat es bereits ein Stabilitätsniveau erreicht, das seine Nutzung für den Betrieb des OpenVPN Cloud-Dienstes ermöglicht.

Im Vergleich zur Konfiguration basierend auf dem tun-Interface ermöglichte die Verwendung des Moduls sowohl auf der Client- als auch auf der Serverseite unter Verwendung des AES-256-GCM-Codierverfahrens einen Anstieg der Bandbreite um das Achtfache (von 370 Mbit/s auf 2950 Mbit/s). Bei der Verwendung des Moduls nur auf der Clientseite stieg die Bandbreite für den ausgehenden Datenverkehr um das Dreifache, während es für den eingehenden Datenverkehr unverändert blieb. Bei der Verwendung des Moduls nur auf der Seite Server stieg die Bandbreite für den eingehenden Datenverkehr um das Vierfache und um 35 % für den ausgehenden Datenverkehr.

Ein Kernel-Modul wurde vorgestellt, das OpenVPN um ein Vielfaches beschleunigen kann.

Die Beschleunigung erfolgt durch die Auslagerung aller Verschlüsselungsoperationen, der Datenpaketverarbeitung und der Verwaltung des Kommunikationskanals in den Linux-Kernel, was die mit dem Kontextwechsel verbundenen Overheads beseitigt, die Möglichkeit bietet, die Arbeit durch direkten Zugriff auf die internen Kernel-APIs zu optimieren und die langsame Datenübertragung zwischen Kernel und Benutzerspeicher (Verschlüsselung, Entschlüsselung und Routing werden vom Modul ohne den Versand des Datenverkehrs an den Handler im Benutzerspeicher durchgeführt) ausschließt.

Es wird festgestellt, dass insbesondere ressourcenintensive Verschlüsselungsoperationen und die aufgrund von Kontextwechseln entstandenen Verzögerungen die Leistung beeinträchtigen. VPN Zur Beschleunigung der Verschlüsselung wurden Prozessorerweiterungen wie Intel AES-NI herangezogen, aber die Kontextwechsel blieben bis zur Einführung des ovpn-dco ein Engpass. Neben der Nutzung der von der CPU bereitgestellten Instruktionen zur Beschleunigung der Verschlüsselung gewährleistet das Modul ovpn-dco zusätzlich die Aufteilung der Verschlüsselungsoperationen in separate Segmente und deren Verarbeitung im Multithreading-Modus, wodurch alle verfügbaren CPU-Kerne genutzt werden können.

Aus den aktuellen Beschränkungen der Implementierung, die in Zukunft aufgehoben werden, wird nur die Unterstützung der Modi AEAD und ‚none‘ (ohne Authentifizierung) sowie der Verschlüsselungen AES-GCM und CHACHA20POLY1305 hervorgehoben. Die Unterstützung von DCO ist für die Version OpenVPN 2.6 geplant, die für das vierte Quartal dieses Jahres vorgesehen ist. Momentan 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 den Windows-Kernel entwickelt.

Quelle: opennet.ru

60GB SSD 8Gb DDR4