Discussion:
OpenVPN Verbindungsgeschwindigkeit optimieren?
(zu alt für eine Antwort)
Uwe Zeppei
2019-10-10 20:58:24 UTC
Permalink
Hallo!

Ich habe einen OpenVPN-Tunnel zwischen zwei Fli4l 4.0 Routern und mir
kommt die aktuell erreichbare Geschwindigkeit zu niedrig vor.

Standort A:
VDSL mit 100Down/ 40Up (ist auch so verbunden und verfügbar) bei Telekom
Fli4l 4.0 hinter einem Vigor 165 welcher als Modem arbeitet
Von diesem Standort wird meist gesendet and Standort B

Standort B:
VDSL mit 50Down/ 10Up (auch so verbunden und verfügbar) bei HTP
Fli4l 4.0 als Ethernetrouter hinter einer Fritzbox 7560. Die 7560
verbindet sich über einen reinen IPv6-Tunnel, IPv4 wird quasi durch
diesen getunnelt.

OpenVPN arbeitet mit IPv4, der Tunnel mit UDP.

Ich erreiche beim Senden von A nach B aktuell eine durchschnittliche
Datenrate über RSync von etwa 1,7 MByte/sec. Die höchsten gemessenen
Peaks, welche nur selten und kurz vorkommen, liegen bei knapp 3 MByte/sec.

Bevor Standort A auf 100/40 aufgerüstet wurde hatte er auch 50/10. Über
FTP habe ich damals über den Tunnel max. 740KByte/sec geschafft, der
Schnitt lag bei etwas unter 700KByte/sec. Mit der neuen Leitung an
Standort A konnte ich FTP noch nicht testen.

Nach etwas nachforschen, unter anderem in der Doku zum Opt, aber auch im
Internet, habe ich folgendes gefunden:

Man kann unter anderem versuchen, die Sende- und Empfangsbuffer manuell
zu konfigurieren, entweder für OpenVPN abschalten oder hoch ansetzen.
Siehe [1], [2] und [3].

Man kann auch versuchen, die MTU und MSSFIX und damit zusammenhängende
Paramter richtig zu konfigurieren, siehe [1], [3] und die Doku.

Und da geht das Problem etwas los: Was genau macht wo Sinn?

Ich habe mal gemäß [4] die MTUs der beiden Standorte ermittelt, jeweils
aus der Konsole vom Fli4l heraus durch Ping auf einen externen Server.

Ergebnis Standort A:
Zunächst:
ping -c 4 -s 1472 -M do <webserver>
ping: local error: Message too long, mtu=1492
Dann:
ping -c 4 -s 1464 -M do <webserver>
PING <IP> (<IP>) 1464(1492) bytes of data.

MTU = 1492?

Ergebnis Standort B:

Zunächst:
ping -c 4 -s 1472 -M do <webserver>
ping: local error: Message too long, mtu=1452
Dann:
ping -c 4 -s 1424 -M do <webserver>
PING <IP> (<IP>) 1424(1452) bytes of data.

MTU = 1452?

Was mache ich jetzt mit dieser Information und in welche Konfig trage
ich was am besten ein?

Schonmal Danke im voraus!

[1] https://hamy.io/post/0003/optimizing-openvpn-throughput/
[2]
https://www.lowendtalk.com/discussion/40099/why-openvpn-is-so-slow-cool-story
[3]
https://winaero.com/blog/speed-up-openvpn-and-get-faster-speed-over-its-channel/
[4]
https://hamy.io/post/000c/how-to-find-the-correct-mtu-and-mru-of-your-link/
--
Viele Grüße
Uwe
Alexander Dahl
2019-10-17 06:34:35 UTC
Permalink
Hallo Uwe,
Post by Uwe Zeppei
Ich habe einen OpenVPN-Tunnel zwischen zwei Fli4l 4.0 Routern und mir
kommt die aktuell erreichbare Geschwindigkeit zu niedrig vor.
Eine Sache, die ich prüfen würde: wie ausgelastet sind die CPUs auf
beiden Geräten? Bei alten Routern wie bspw. Alix 2D3 o.ä. macht die CPU
dann ~100% crypto für den Tunnel und da sind dann gar nicht mehr als
wenige einstellige MBit/s drin.

Ggf. hilft hier auch opt hwsupp für Hardware, die crypto-Beschleunigung
bietet, und dann die Auswahl entsprechender Cipher in der OpenVPN
config. (Nützt einem ja nix, wenn die CPU bspw. nur AES128 beschleunigen
kann, man dann aber was ganz anderes ausgewählt hat, was dann doch nicht
beschleunigt wird.)

Grüße
Alex
--
***** http://blog.antiblau.de/ *****************************
GnuPG-FP: C28E E6B9 0263 95CF 8FAF 08FA 34AD CD00 7221 5CC6
Uwe Zeppei
2019-10-23 20:39:06 UTC
Permalink
Moin!

Sorry für die späte Antwort.
Post by Alexander Dahl
Eine Sache, die ich prüfen würde: wie ausgelastet sind die CPUs auf
beiden Geräten? Bei alten Routern wie bspw. Alix 2D3 o.ä. macht die CPU
dann ~100% crypto für den Tunnel und da sind dann gar nicht mehr als
wenige einstellige MBit/s drin.
Während einer laufenden Übertragung von A nach B war auf beiden Routern
der Load nie über 1.1 und die Gesamt-CPU-Auslastung (in Jiffies) nie
über 100% (jeweils laut der Anzeige im RRD-Tool für die 1h-Anzeige).
Post by Alexander Dahl
Ggf. hilft hier auch opt hwsupp für Hardware, die crypto-Beschleunigung
bietet, und dann die Auswahl entsprechender Cipher in der OpenVPN
config. (Nützt einem ja nix, wenn die CPU bspw. nur AES128 beschleunigen
kann, man dann aber was ganz anderes ausgewählt hat, was dann doch nicht
beschleunigt wird.)
Am Standort A werkelt ein Mitac PD12TI (baugleich mit Intel D2500CC) mit
einem Intel Atom D2500, 2x1.86GHz, 1MB Cache mit 2x Intel® 82574L
Gigabit Ethernet und 4GB RAM.
Prozessordaten unter [1].

Am Standort B werkelt ein Supermicro X11SBA-LN4F mit Intel Pentium®
Processor N3700, 4x 1.60GHz, 2MB Cache mit 4x Intel i210-AT Gigabit
Ethernet und 4GB RAM.
Prozessordaten unter [2].

Jeweils mit 64bit-Fli4l.
opt_hwsupp aktiv, jeweils mit generic-acpi und CPU_FREQ (letzteres beim
Atom D2500 wirkungslos).

Als Cipher kommt AES-256-CBC zum Einsatz.

Der N3700 unterstützt AES-NI, zum D2500 finde ich keine diesbezügliche Info.

Sollte ich mal die Cipher auf AES-128 runtersetzen zum testen? Könnte
der Atom D2500 das Problem sein?

[1]
https://ark.intel.com/content/www/us/en/ark/products/59682/intel-atom-processor-d2500-1m-cache-1-86-ghz.html

[2]
https://ark.intel.com/content/www/us/en/ark/products/87261/intel-pentium-processor-n3700-2m-cache-up-to-2-40-ghz.html
--
Viele Grüße
Uwe
Uwe Zeppei
2019-10-23 21:42:31 UTC
Permalink
Post by Uwe Zeppei
Der N3700 unterstützt AES-NI, zum D2500 finde ich keine diesbezügliche Info.
Ergänzung: Hab gerade herausgefunden, das der D2500 kein AES-NI kann.
Mift.

Was wäre da ein geeigneter Cipher?
--
Viele Grüße
Uwe
Uwe Zeppei
2019-11-03 14:00:28 UTC
Permalink
Moin!
Post by Uwe Zeppei
Am Standort A werkelt ein Mitac PD12TI (baugleich mit Intel D2500CC) mit
einem Intel Atom D2500, 2x1.86GHz, 1MB Cache mit 2x Intel® 82574L
Gigabit Ethernet und 4GB RAM.
Prozessordaten unter [1].
Am Standort B werkelt ein Supermicro X11SBA-LN4F mit Intel Pentium®
Processor N3700, 4x 1.60GHz, 2MB Cache mit 4x Intel i210-AT Gigabit
Ethernet und 4GB RAM.
Prozessordaten unter [2].
Ich möchte gerne mal die Auflösung, zumindest teilweise, hier
veröffentlichen.

Zunächst hatte ich, mit nur geringem Erfolg, den Cipher auf "BF-CBC"
gesetzt. Einzig merkliche Auswirkung war eine marginal geringere
CPU-Belastung.

Am Standort B hatte ich opt_hwsupp mit HWSUPP_TYPE='generic-acpi' aktiv
und HWSUPP_CPUFREQ_GOVERNOR='powersave' laufen.

Sobald man von "powersave" auf "performance" schaltet (nur die beiden
werden unterstützt), erhöht sich der Durchsatz für OpenVPN deutlich
spürbar und bewegt sich in einem für mich erwarteten Rahmen.

Der Fli4l-Rechner am Standort B wird hierbei jedoch merklich instabil
und startet unerwartet neu. Das muss ich noch mal näher untersuchen.
--
Viele Grüße
Uwe
Loading...