Ich habe mir jetzt zum ersten Mal die Zeit genommen, die Änderungen beim VPN in der Version 07.00 zu untersuchen.
Erst einmal hat AVM die Protokollierung erweitert (man könnte das auch noch mit "massiv" ausschmücken, zumindest bei dem, was ich auf den ersten Blick gesehen habe) und zeigt jetzt auch die verwendeten Proposal für eine SA an:
Code:
2018-08-24 20:36:21 avmike:< add(appl=dsld,cname=10.16.32.65,localip=10.16.32.1, remoteip=10.16.32.65, p1ss=all/all/all, p2ss=esp-all-all/ah-none/comp-all/pfs p1mode=4 keepalive_ip=192.168.130.1 flags=0x8001 tunnel no_xauth no_cfgmode n)
2018-08-24 20:36:21 avmike:new neighbour 10.16.32.65: nat_t
2018-08-24 20:36:21 avmike:10.16.32.65 keepalive enabled
2018-08-24 20:36:21 avmike:10.16.32.65 start_vpn_keepalive 192.168.130.1
2018-08-24 20:36:26 avmike:< create_sa(appl=dsld,cname=10.16.32.65)
2018-08-24 20:36:26 avmike:10.16.32.65: Phase 1 starting
2018-08-24 20:36:26 avmike:>>> aggressive mode [10.16.32.65] 10.16.32.65: V1.0 696 IC 7662f4f5d98a84b1 RC 00000000 0000 SA flags=
2018-08-24 20:36:26 avmike:<<< aggressive mode[10.16.32.65] 10.16.32.65: V1.0 432 IC 7662f4f5d98a84b1 RC 6465373552fba9a6 0000 SA flags=
2018-08-24 20:36:26 avmike:aggressive mode 10.16.32.65: selected lifetime: 3600 sec(no notify)
2018-08-24 20:36:26 avmike:10.16.32.65: add phase 1 SA: DH2/AES-256/SHA1/3600sec id:1
2018-08-24 20:36:26 avmike:10.16.32.65 receive VENDOR ID Payload: XAUTH
2018-08-24 20:36:26 avmike:10.16.32.65 receive VENDOR ID Payload: DPD
2018-08-24 20:36:26 avmike:10.16.32.65 receive VENDOR ID Payload: NAT-T RFC 3947
2018-08-24 20:36:26 avmike:10.16.32.65: sending embedded inital contact message (0,10.16.32.65,10.16.32.65)
2018-08-24 20:36:26 avmike:>>> aggressive mode [10.16.32.65] 10.16.32.65: V1.0 140 IC 7662f4f5d98a84b1 RC 6465373552fba9a6 0000 HASH flags=e
2018-08-24 20:36:26 avmike:10.16.32.65: Phase 1 ready
2018-08-24 20:36:26 avmike:10.16.32.65: start waiting connections
2018-08-24 20:36:26 avmike:10.16.32.65: Phase 2 starting (start waiting)
2018-08-24 20:36:26 avmike:>>> quickmode [10.16.32.65] 10.16.32.65: V1.0 2300 IC 7662f4f5d98a84b1 RC 6465373552fba9a6 89b80f6a HASH flags=e
2018-08-24 20:36:27 avmike:<<< quickmode[10.16.32.65] 10.16.32.65: V1.0 2108 IC 7662f4f5d98a84b1 RC 6465373552fba9a6 22944b69 HASH flags=e
2018-08-24 20:36:27 avmike:WARNING !!! local id differs from received id
2018-08-24 20:36:27 avmike:>>> quickmode [10.16.32.65] 10.16.32.65: V1.0 332 IC 7662f4f5d98a84b1 RC 6465373552fba9a6 22944b69 HASH flags=e
2018-08-24 20:36:27 avmike:<<< quickmode[10.16.32.65] 10.16.32.65: V1.0 332 IC 7662f4f5d98a84b1 RC 6465373552fba9a6 89b80f6a HASH flags=e
2018-08-24 20:36:27 avmike:>>> quickmode [10.16.32.65] 10.16.32.65: V1.0 60 IC 7662f4f5d98a84b1 RC 6465373552fba9a6 89b80f6a HASH flags=e
2018-08-24 20:36:27 avmike:10.16.32.65: Phase 2 ready
2018-08-24 20:36:27 avmike:NEW Phase 2 SA: ESP-AES-256/SHA1 SPI: 834D9B51 LT: 3600 I/O: IN
2018-08-24 20:36:27 avmike:NEW Phase 2 SA: ESP-AES-256/SHA1 SPI: 79DB3B4E LT: 3600 I/O: OUT
2018-08-24 20:36:27 avmike:NEW Phase 2 SA: IPComp-LZJH SPI: 379F LT: 3600 I/O: IN
2018-08-24 20:36:27 avmike:NEW Phase 2 SA: IPComp-LZJH SPI: 2401 LT: 3600 I/O: OUT
2018-08-24 20:36:27 avmike:< cb_sa_created(name=10.16.32.65,id=1,...,flags=0x00002101)
2018-08-24 20:36:27 avmike:10.16.32.65 stop_vpn_keepalive to 192.168.130.1
2018-08-24 20:36:27 avmike:10.16.32.65 start_keepalive_timer 3540 sec
2018-08-24 20:36:27 avmike:10.16.32.65: start waiting connections
2018-08-24 20:36:27 avmike:10.16.32.65: NO waiting connections
2018-08-24 20:36:27 avmike:<<< quickmode[10.16.32.65] 10.16.32.65: V1.0 60 IC 7662f4f5d98a84b1 RC 6465373552fba9a6 22944b69 HASH flags=e
2018-08-24 20:36:27 avmike:10.16.32.65: Phase 2 ready
2018-08-24 20:36:27 avmike:NEW Phase 2 SA: ESP-AES-256/SHA1 SPI: 650202D3 LT: 3600 I/O: IN
2018-08-24 20:36:27 avmike:NEW Phase 2 SA: ESP-AES-256/SHA1 SPI: 23FB19FA LT: 3600 I/O: OUT
2018-08-24 20:36:27 avmike:NEW Phase 2 SA: IPComp-LZJH SPI: B038 LT: 3600 I/O: IN
2018-08-24 20:36:27 avmike:NEW Phase 2 SA: IPComp-LZJH SPI: A1A4 LT: 3600 I/O: OUT
2018-08-24 20:36:27 avmike:< cb_sa_created(name=10.16.32.65,id=2,...,flags=0x00002001)
2018-08-24 20:36:27 avmike:10.16.32.65 stop_vpn_keepalive to 192.168.130.1
2018-08-24 20:36:27 avmike:10.16.32.65 restart keepalive_timer timer_id 2001907792
2018-08-24 20:36:27 avmike:10.16.32.65: start waiting connections
2018-08-24 20:36:27 avmike:10.16.32.65: NO waiting connections
Hier habe ich eine 7580 und eine 7490 - beide im Router-Mode, ansonsten geht auch kein VPN - über einen VLAN-Switch (HP ProCurve) verbunden (statische IP-Konfiguration für die WAN-Seiten) und in beiden Boxen die US/DS-Kapazität auf 1 GBit/s eingestellt.
Anschließend in beiden Boxen passende VPN-Konfigurationen eingestellt und auf der 7580 auf einem USB3-Stick eine 1 GByte-Datei mit zufälligem Inhalt (damit die Kompressionsgewinne nicht zu hoch werden, einfach ein "dd" von "/dev/urandom" in eine Datei auf dem Stick) erzeugt.
Die erste Messung erfolgte bei der Übertragung von der 7580 (in der oben angezeigten Verbindung mit AES-256/SHA1 und Kompression - kostet ja alles Zeit), wobei das Ziel der übertragenen Datei dann nicht auf der 7490 lag (um die Messung nicht durch Schreibzugriffe auf irgendwelchen Speicher zu verfälschen), sondern auf einem dahinterliegenden FTP-Server (ebenfalls per GbE angebunden, vsFTPd auf einem Linux-System) - weniger Overhead als beim FTP-Protokoll geht bei gesicherter Übertragung (also TCP) fast nicht mehr.
Die Übertragung dieser 1 GByte großen Datei sah dann so aus:
Code:
# time ftpput 192.168.130.2 upload/test_data.bin &
real 9m 14.88s
user 0m 0.00s
sys 0m 51.02s
Das macht dann also 1.073.741.824 Byte (8.589.934.592 Bit) in (9 * 60 + 15) = 555 Sekunden oder auch 15.477.360 Bit/s (14,8 MBit/s) - aber immerhin mit der höchsten Verschlüsselung, die AVM für P2 unterstützt.
Der nächste Test nutzt dieselbe Richtung der Datenübertragung, allerdings wird jetzt tatsächlich auf die Verschlüsselung verzichtet:
Code:
1970-01-01 01:03:49 avmike:10.16.32.65: Phase 2 starting (start waiting)
1970-01-01 01:03:49 avmike:>>> quickmode [10.16.32.65] 10.16.32.65: V1.0 156 IC b316a7c3e5af776e RC f40eb70a2c690d0 ad28f645 HASH flags=e
1970-01-01 01:03:49 avmike:<<< quickmode[10.16.32.65] 10.16.32.65: V1.0 156 IC b316a7c3e5af776e RC f40eb70a2c690d0 ad28f645 HASH flags=e
1970-01-01 01:03:49 avmike:>>> quickmode [10.16.32.65] 10.16.32.65: V1.0 60 IC b316a7c3e5af776e RC f40eb70a2c690d0 ad28f645 HASH flags=e
1970-01-01 01:03:49 avmike:10.16.32.65: Phase 2 ready
1970-01-01 01:03:49 avmike:NEW Phase 2 SA: ESP-NULL/SHA1 SPI: 3AFEFEB7 LT: 3600 I/O: IN
1970-01-01 01:03:49 avmike:NEW Phase 2 SA: ESP-NULL/SHA1 SPI: 771D59BD LT: 3600 I/O: OUT
1970-01-01 01:03:49 avmike:< cb_sa_created(name=10.16.32.65,id=1,...,flags=0x00002101)
1970-01-01 01:03:49 avmike:10.16.32.65 stop_vpn_keepalive to 192.168.130.1
1970-01-01 01:03:49 avmike:10.16.32.65 start_keepalive_timer 3540 sec
1970-01-01 01:03:49 avmike:10.16.32.65: start waiting connections
1970-01-01 01:03:49 avmike:10.16.32.65: NO waiting connections
1970-01-01 01:31:16 avmike:<<< infomode[10.16.32.65] 10.16.32.65: V1.0 92 IC b316a7c3e5af776e RC f40eb70a2c690d0 b89f9ee8 HASH flags=e
1970-01-01 01:31:16 avmike:>r> infomode [10.16.32.65] 10.16.32.65: V1.0 92 IC b316a7c3e5af776e RC f40eb70a2c690d0 b89f9ee8 HASH flags=e
(die 7580 hatte einen Neustart und findet jetzt keinen NTP-Server wg. der WAN-Konfiguration - daher die komische Datumsangabe)
und die Datei erneut übertragen - dabei kommt das Folgende heraus:
Code:
# time ftpput 192.168.130.2 upload/test_data.bin &
real 5m 20.40s
user 0m 0.01s
sys 0m 24.21s
... macht 320 Sekunden oder auch 26.843.546 Bit/s (25,6 MBit/s).
Das ist schon mal deutlich flotter ... wobei natürlich die 7490 immer noch etwas in die max. Transferrate eingreift, weil sie ja die passenden Bestätigungen senden muß und dazu muß sie zumindest mal die SHA1-HMAC testen, was auch Zeit braucht. Zwischen zwei GRX-Boxen könnte das also auch noch
etwas schneller vonstatten gehen - aber ob hier die 40 MBit/s tatsächlich auch mit VPN erreicht werden können, würde ich fast bezweifeln wollen.
Spaßig ist es dabei dann, daß die Anzeige im GUI der FRITZ!Box 7580 wohl eher die Brutto-Datenrate anzeigt ... also inkl. IPSec-Overhead - und das waren hier auch ~30 MBit/s. Aber ansonsten begrenzt die 7580 wohl schon selbst den möglichen Durchsatz.
Woran liegt das nun wohl? Es müssen hier ja alle Pakete für das VPN zunächst mal tatsächlich durch die CPU geschleust werden ... schon das ist ja ein gewaltiger Unterschied zu den Daten, die auf direktem Weg (nur mit ein paar Änderungen am Inhalt eines Paketes durch die Hardware-Beschleunigung) vom LAN an das WAN (entweder in Form eines Ethernet-Ports oder das DSL-Modem) expediert werden.
Stellt sich die Frage, welchen Durchsatz denn die beiden Boxen bringen können, wenn hier kein VPN zum Einsatz kommt ... das erspart dann ja auch den Umweg über die CPU. Dazu wird in der 7580 einfach direkt (aber natürlich über das WAN-Interface) auf den Ziel-Host per FTP geschrieben:
Code:
# time ftpput 192.168.131.2 upload/test_data.bin
real 1m 27.26s
user 0m 0.00s
sys 1m 11.39s
Hier haben wir also den Durchsatz im Routing, wobei die Beschränkung hier ggf. tatsächlich aus der Fähigkeit des FTP-Servers, die Daten schnell genug wegzuschreiben, resultieren könnte. In Zahlen sind das dann jedenfalls nur 87 Sekunden oder auch 98.734.880 Bit/s (94,2 MBit/s) - und um der Frage zuvorzukommen: Ja, nach der Anzeige des HP ProCurve ist der WAN-Port tatsächlich im GbE-Mode (1000FDX).
Wobei es am Ende wohl doch eher die 7580 ist, die hier auch den Routing-Durchsatz begrenzt ... denn wenn ich dieselbe Datei von einem anderen Host auf den FTP-Server übertrage, dauert das noch deutlich weniger lang:
Code:
$ time busybox ftpput 192.168.xxx.xxx upload/test_data.bin
real 0m38.424s
user 0m0.004s
sys 0m27.532s
Das sind dann 223.115.184 Bit/s (212 MBit/s oder auch 26,6 MByte/s) und eben doch wieder deutlich mehr, als bei der 7580 - ich habe extra noch einmal alle Switches zwischen 7580 und FTP-Server gecheckt, daß da tatsächlich alles GbE ist und wenn ich an demselben Switch-Port ein anderes Gerät anschließe, kommt das auch auf > 100 MBit/s.
Wer wirklich selbst testen will, was die DEU von Intel/Lantiq beim VPN an Zugewinn beim Durchsatz bringen kann, braucht jedenfalls einen eigenen Kernel ... und auch damit könnte man wohl noch nicht sicher sein, daß beim AVM-VPN das Ver- und Entschlüsseln tatsächlich davon profitiert.
Wenn man sich die Lastverteilung bei so einer VPN-Verbindung ansieht, fällt ja auf, daß der größte Teil der Zeit in der Behandlung von Software-Interrupts verbracht wird und das Ver- und Entschlüsseln offenbar dort läuft ... damit helfen vielleicht sogar die AVM-Arbeiten an dem "yield context" wieder etwas und sorgen für mehr Performance. Gleichzeitig könnte das aber auch dafür sorgen, daß aus diesem Code heraus die Kernel-Implementierung von Crypto-Funktionen gar nicht genutzt wird oder genutzt werden kann (es findet ja kein "vollständiger" Kontextwechsel statt bei dieser Art der Interrupt-Behandlung - was u.a. darin gipfelt, daß AVM jede weitere Exception innerhalb dieses Codes nach Kräften vermeiden muß) und das würde zumindest mal erklären, wieso AVM den Kernel gleich ohne Nutzung der DEU baut.
PS: Eine kleinere Differenz ergibt sich ggf. auch daraus, daß ich bei der Umrechnung in "M" oder "G" immer mit 2 ** 10 rechne und nicht mit 10 ** 3.