Möchte man z.B. wie wir, über einen WPA2 WLAN-Link, eine doppelte Sicherheit und deshalb noch ein VPN spannen, nimmt man hierzu gerne OpenVPN. Geht es um größere Bandbreiten (> 100Mbit) des Links, kann man schnell an Grenzen stoßen. Der machbare Durchsatz hängt von mehreren Faktoren ab:

  • Gewählte Cipher
  • Verfügbare CPU-Leistung für Verschlüsselung
  • Genutztes Protokoll
  • Genutzte Art der Verschlüsselung (TLS / PSK)

Ziehen wir das Pferd von hinten auf. Je nach genutzter Verschlüsselung, bieten sich unterschiedliche Ciphers an. Dies zeigt auf einem OpenVPN-Knoten:

`openvpn –show-ciphers`

Bei unserer Verbindung kommt ein statischer Schlüssel zum Einsatz (secret….) wodurch alle TLS-Ciphers in der Übersicht ausscheiden. Den besten Durchsatz haben wir erreicht mit aes-256-cbc.

Da UDP verbindungslos ist, ist UDP hier dem TCP-Protokoll vorzuziehen.

Bei allen unseren Tests wurde klar, dass Verschlüsselung ganz gravierend auf die CPU schlägt und OpenVPN bis heute im Jahr 2018 pro Verbindung jeweils nur einen CPU-Kern nutzt.  Aus diesem Grund bremst fast immer die CPU (100% Last) die Übertragung.

Hier noch ein paar Performancewerte (Angabe jeweils in Mbits-Durchsatz – gemessen mit iperf im client/server Mode mit TCP – 40 Sekunden Test)

OpenVPN als virtuelle KVM-Maschine auf mobilem Intel i5 Laptop:

BF-CBC -> 213 Mbits

AES-128-CBC -> 227 Mbits

CAMELLIA-128-CBC -> 206 MBit

Man sieht immer schön mit ‚top‘ dass die CPU bei 100% hängt – technisch deutlich mehr möglich wäre also, wenn die Rechenleistung verfügbar ist.

Ein Blick in Proxmox/KVM zeigt, dass hier nicht alle CPU-Flags (vgl. cat /proc/cpuinfo) an die VM durchgereicht werden. Wählt man in der Virtualisierungslösung bei CPU-Typ ‚host‘ bzw. einen aktuellen CPU, sehen die Werte nach einem Neustart der VM gleich anders aus:

AES-128-CBC -> 313 Mbit

AES-256-CBC -> 309 Mbit

Es bleibt jedoch die CPU der Flaschenhals. Im Vergleich dümpelte ein Xeon E3 Prozessor auf dem Ziel-OpenVPN-System bei ~ 45 % Auslastung herum. Hier wäre noch Luft nach oben. Dennoch bleibt Verschlüsselung eine nicht zu unterschätzende Anforderung an die CPU.

Categories: Blog