Ich habe extrem langsame OpenVPN-Übertragungsraten zwischen zwei Servern. Bei dieser Frage rufe ich die Server Server A und Server B an.
Sowohl auf Server A als auch auf Server B wird CentOS 6.6 ausgeführt. Beide befinden sich in Rechenzentren mit einer 100-Mbit-Leitung, und die Datenübertragung zwischen den beiden Servern außerhalb von OpenVPN erfolgt mit ca. 88 Mbit / s.
Wenn ich jedoch versuche, Dateien über die von mir eingerichtete OpenVPN-Verbindung zwischen Server A und Server B zu übertragen, erhalte ich einen Durchsatz von ungefähr 6,5 Mbit / s.
Testergebnisse von iperf:
[ 4] local 10.0.0.1 port 5001 connected with 10.0.0.2 port 49184
[ 4] 0.0-10.0 sec 7.38 MBytes 6.19 Mbits/sec
[ 4] 0.0-10.5 sec 7.75 MBytes 6.21 Mbits/sec
[ 5] local 10.0.0.1 port 5001 connected with 10.0.0.2 port 49185
[ 5] 0.0-10.0 sec 7.40 MBytes 6.21 Mbits/sec
[ 5] 0.0-10.4 sec 7.75 MBytes 6.26 Mbits/sec
Abgesehen von diesen OpenVPN-Iperf-Tests sind beide Server mit null Last praktisch vollständig inaktiv.
Server A wird die IP 10.0.0.1 zugewiesen und es ist der OpenVPN-Server. Server B erhält die IP 10.0.0.2 und ist der OpenVPN-Client.
Die OpenVPN-Konfiguration für Server A lautet wie folgt:
port 1194
proto tcp-server
dev tun0
ifconfig 10.0.0.1 10.0.0.2
secret static.key
comp-lzo
verb 3
Die OpenVPN-Konfiguration für Server B lautet wie folgt:
port 1194
proto tcp-client
dev tun0
remote 204.11.60.69
ifconfig 10.0.0.2 10.0.0.1
secret static.key
comp-lzo
verb 3
Was mir aufgefallen ist:
1. Mein erster Gedanke war, dass ich einen Engpass bei der CPU auf dem Server hatte. OpenVPN ist Single-Threaded und auf beiden Servern laufen Intel Xeon L5520-Prozessoren, die nicht die schnellsten sind. Ich habe jedoch topwährend eines der iperf-Tests einen Befehl ausgeführt und auf gedrückt 1, um die CPU-Auslastung nach Kern anzuzeigen. Dabei stellte ich fest, dass die CPU-Auslastung auf jedem Kern sehr niedrig war:
top - 14:32:51 up 13:56, 2 users, load average: 0.22, 0.08, 0.06
Tasks: 257 total, 1 running, 256 sleeping, 0 stopped, 0 zombie
Cpu0 : 2.4%us, 1.4%sy, 0.0%ni, 94.8%id, 0.3%wa, 0.0%hi, 1.0%si, 0.0%st
Cpu1 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu2 : 0.0%us, 0.0%sy, 0.0%ni, 99.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.3%st
Cpu3 : 0.3%us, 0.0%sy, 0.0%ni, 99.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu4 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu5 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu6 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu7 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu8 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu9 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu10 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu11 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu12 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu13 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu14 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu15 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 946768k total, 633640k used, 313128k free, 68168k buffers
Swap: 4192188k total, 0k used, 4192188k free, 361572k cached
2. Die Ping-Zeiten im OpenVPN-Tunnel erhöhen sich erheblich, während iperf ausgeführt wird. Wenn iperf nicht läuft, betragen die Ping-Zeiten über den Tunnel durchgehend 60 ms (normal). Aber wenn iperf rennt und starken Verkehr pusht, werden die Ping-Zeiten unregelmäßig. Sie können unten sehen, wie die Ping-Zeiten bis zum 4. Ping stabil sind, wenn ich den Iperf-Test gestartet habe:
PING 10.0.0.2 (10.0.0.2) 56(84) bytes of data.
64 bytes from 10.0.0.2: icmp_seq=1 ttl=64 time=60.1 ms
64 bytes from 10.0.0.2: icmp_seq=2 ttl=64 time=60.1 ms
64 bytes from 10.0.0.2: icmp_seq=3 ttl=64 time=60.2 ms
** iperf test begins **
64 bytes from 10.0.0.2: icmp_seq=4 ttl=64 time=146 ms
64 bytes from 10.0.0.2: icmp_seq=5 ttl=64 time=114 ms
64 bytes from 10.0.0.2: icmp_seq=6 ttl=64 time=85.6 ms
64 bytes from 10.0.0.2: icmp_seq=7 ttl=64 time=176 ms
64 bytes from 10.0.0.2: icmp_seq=8 ttl=64 time=204 ms
64 bytes from 10.0.0.2: icmp_seq=9 ttl=64 time=231 ms
64 bytes from 10.0.0.2: icmp_seq=10 ttl=64 time=197 ms
64 bytes from 10.0.0.2: icmp_seq=11 ttl=64 time=233 ms
64 bytes from 10.0.0.2: icmp_seq=12 ttl=64 time=152 ms
64 bytes from 10.0.0.2: icmp_seq=13 ttl=64 time=216 ms
3. Wie oben erwähnt, habe ich iperf außerhalb des OpenVPN-Tunnels ausgeführt und der Durchsatz war normal - ~ 88 Mbit / s durchgehend.
Was ich versucht habe:
1. Ich dachte, die Komprimierung könnte comp-lzoProbleme verursachen. Deshalb habe ich die Komprimierung deaktiviert, indem ich beide Konfigurationen entfernt und OpenVPN neu gestartet habe. Keine Verbesserung.
2. Obwohl ich zuvor festgestellt habe, dass die CPU-Auslastung niedrig ist, dachte ich, dass die Standardverschlüsselung möglicherweise etwas zu intensiv ist, als dass das System mithalten könnte. Also habe ich cipher RC2-40-CBCbeide Configs hinzugefügt (eine sehr leichte Chiffre) und OpenVPN neu gestartet. Keine Verbesserung.
3. Ich habe in verschiedenen Foren darüber gelesen, wie das Optimieren des Fragments, von mssfix und mtu-tun die Leistung verbessern kann. Ich habe mit ein paar Variationen gespielt, wie in diesem Artikel beschrieben , aber auch hier keine Verbesserung.
Irgendwelche Ideen, was solch eine schlechte OpenVPN-Leistung verursachen könnte?
cipher noneobwohl ich bezweifle, dass es helfen wird.

