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.

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
