WireGuard VPN

mkeuter

Neuer User
Mitglied seit
16 Jan 2016
Beiträge
11
Punkte für Reaktionen
0
Punkte
1
Hallo, ich bin Michael vom AstLinux Project. Eine Linux-basierte Asterisk + Router/VPN Distribution. Wir haben kürzlich das hervorragende WireGuard VPN in unser Projekt integriert und einige Vergleichstests zwischen WireGuard und dem ebenfalls vorhandenem OpenVPN gemacht.

WireGuard hat einen wesentlich höheren Durchsatz und weniger Jitter als OpenVPN bei gleicher Hardware. Es ist relativ leicht in Linux zu integrieren und im Vergleich zu OpenVPN in der Größe winzig. WireGuard wird inzwischen auch von professionellen VPN Providern eingesetzt.

Angaben zur Testumgebung:
Hardware:
Qotom Q190G4N-S07 Quad Core Celeron J1900, 2 GHz, 2 GB DDR3 RAM, mSATA
Jetway NF9HG-2930 Quad Core Celeron N2930, 1,83 GHz, 2 GB DDR3 RAM, mSATA

Software:
Linux 3.16.47 x86_64, iPerf 3.0.12, OpenSSL 1.0.2m
OpenVPN 2.4.4
  • Compression=On
  • Data Channel: Cipher 'AES-256-GCM'
WireGuard 0.0.20171101 (Default Settings: 256-bit ChaCha20 with Poly1305 for MAC)
  • ChaCha20 for symmetric encryption, authenticated with Poly1305
  • Curve25519 for ECDH
  • BLAKE2s for hashing and keyed hashing
  • SipHash24 for hashtable keys
  • HKDF for key derivation
Hier nun einige OpenVPN/WireGuard-Vergleiche.
Bei einem einzelnen SIP-Gespräch (100Kbps) ist der UDP Jitter noch gleich (nur 16 datagrams im Test). Aber bei höherem Traffic ist der Jitter bei WireGuard wesentlich niedriger als bei OpenVPN.
Code:
## Jetway
pbx3 ~ # iperf3 -s

## Qotom
# OpenVPN #
pbx ~ # iperf3 -c 10.8.1.2
--
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec   132 MBytes   111 Mbits/sec   38             sender
[  4]   0.00-10.00  sec   132 MBytes   111 Mbits/sec                  receiver
--
# WireGuard #
pbx ~ # iperf3 -c 10.4.0.3
--
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec   606 MBytes   508 Mbits/sec  1086             sender
[  4]   0.00-10.00  sec   603 MBytes   506 Mbits/sec                  receiver
--

# OpenVPN #
pbx ~ # iperf3 -c 10.8.1.2 -u -b 100K
--
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   128 KBytes   105 Kbits/sec  0.033 ms  0/16 (0%)
[  4] Sent 16 datagrams
--
# WireGuard #
pbx ~ # iperf3 -c 10.4.0.3 -u -b 100K
--
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   128 KBytes   105 Kbits/sec  0.036 ms  0/16 (0%)
[  4] Sent 16 datagrams
--

# OpenVPN #
pbx ~ # iperf3 -c 10.8.1.2 -u -b 1M
--
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec  1.19 MBytes   996 Kbits/sec  0.258 ms  0/152 (0%)
[  4] Sent 152 datagrams
--
# WireGuard #
pbx ~ # iperf3 -c 10.4.0.3 -u -b 1M
--
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec  1.19 MBytes   996 Kbits/sec  0.050 ms  0/152 (0%)
[  4] Sent 152 datagrams
--

# OpenVPN #
pbx ~ # iperf3 -c 10.8.1.2 -u -b 10M
--
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec  11.8 MBytes  9.90 Mbits/sec  0.571 ms  0/1511 (0%)
[  4] Sent 1511 datagrams
--
# WireGuard #
pbx ~ # iperf3 -c 10.4.0.3 -u -b 10M
--
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec  11.8 MBytes  9.90 Mbits/sec  0.075 ms  0/1511 (0%)
[  4] Sent 1511 datagrams
--

# OpenVPN #
pbx ~ # iperf3 -c 10.8.1.2 -u -b 100M
--
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   118 MBytes  99.0 Mbits/sec  0.701 ms  13293/14977 (89%)
[  4] Sent 14977 datagrams
--
# WireGuard #
pbx ~ # iperf3 -c 10.4.0.3 -u -b 100M
--
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   118 MBytes  99.1 Mbits/sec  0.098 ms  2995/15099 (20%)
[  4] Sent 15099 datagrams
--

# OpenVPN #
pbx ~ # iperf3 -c 10.8.1.2 -u -b 500M
--
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   591 MBytes   496 Mbits/sec  0.728 ms  73173/74925 (98%)
[  4] Sent 74925 datagrams
--
# WireGuard #
pbx ~ # iperf3 -c 10.4.0.3 -u -b 500M
--
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   592 MBytes   497 Mbits/sec  0.092 ms  49873/75819 (66%)
[  4] Sent 75819 datagrams
--

Latency:

# OpenVPN #
pbx ~ # fping -c10 10.8.1.2
--
10.8.1.2 : xmt/rcv/%loss = 10/10/0%, min/avg/max = 0.48/0.52/0.61
--
# WireGuard #
pbx ~ # fping -c10 10.4.0.3
--
10.4.0.3 : xmt/rcv/%loss = 10/10/0%, min/avg/max = 0.34/0.46/0.53
--
PS: Neuere WireGuard Versionen (ab 0.0.20171127) enthalten zusätzliche CPU Optimierungen für höhere Performance.

Michael
http://www.mksolutions.info
 
Zuletzt bearbeitet:

prisrak1

Mitglied
Mitglied seit
14 Mai 2017
Beiträge
325
Punkte für Reaktionen
25
Punkte
28
Hort sich gut an! Kann man es in die FRITZ!Box 6490 oder in die Freetz integrieren?
 

mkeuter

Neuer User
Mitglied seit
16 Jan 2016
Beiträge
11
Punkte für Reaktionen
0
Punkte
1
Wir haben das mittels Buildroot integriert, verwendet Freetz das nicht auch als Entwicklungsumgebung? Bin da nicht so im Thema.
Wir setzen allerdings ausschließlich x86 Hardware (oder VMs) ein.
Achtung: das init-File ist sehr AstLinux-spezifisch!

https://github.com/astlinux-project/astlinux/tree/master/package/wireguard

Sollte aber theoretisch möglich sein.
Evt. mal den Entwickler von WireGuard (Jason Donenfeld) ansprechen.

Gruß Michael
 
Zuletzt bearbeitet:

Shirocco88

Aktives Mitglied
Mitglied seit
4 Jan 2016
Beiträge
870
Punkte für Reaktionen
67
Punkte
28
WireGuard wird inzwischen auch von professionellen VPN Providern eingesetzt.
welche "professionellen" VPN Providern sind dies ?

Welche VOIP-Provider bieten WireGuard VPN für Kunden an ?

das wäre interessant zu wissen.
 

Shirocco88

Aktives Mitglied
Mitglied seit
4 Jan 2016
Beiträge
870
Punkte für Reaktionen
67
Punkte
28
@mkeuter: da gibt es noch weitere Klärungspunkte;
zu VPN Provider:
Gibt es für diese genannte VPN-Provider auch deutsche Einwahlpunkte ?

zur Technik:
Welchen Status hat die Software WireGuard ? (stable, unstable beta) ?
gibt es fertige Pakete für Debian, die man nutzen kann ohne irgendwas (Kernel, Userspace-Software) zu kompilieren ?
wie funktioniert WireGuard netzwerk-technisch ? Wird hier zur LAN-LAN-Kopplung Proxy-ARP-Technik verwendet ? oder wie bei OpenVPN der Bridgemode bzw. Transfernetze ?
Kann ich diese Software auch im Hotelbereich, bei dem nur eingeschränkte Ports (z.B. tcp/80, tcp/433) freigeschalten sind, nutzen ? bei SSL-VPN geht das ?
Gibt es auch einen Windows- und Android-/iOS-Client ?
 

mkeuter

Neuer User
Mitglied seit
16 Jan 2016
Beiträge
11
Punkte für Reaktionen
0
Punkte
1
@mkeuter: da gibt es noch weitere Klärungspunkte;
Zur Info: ich bin auch nur ein User :)
zu VPN Provider:
Gibt es für diese genannte VPN-Provider auch deutsche Einwahlpunkte ?
Nicht das ich wüsste.
zur Technik:
Welchen Status hat die Software WireGuard ? (stable, unstable beta) ?
Laut Webseite: "experimental snapshots".
Läuft bei uns aber ziemlich gut, vor allem bedeutend schneller und CPU sparender als OpenVPN.
Soll demnächst offiziell in den Kernel aufgenommen werden.
gibt es fertige Pakete für Debian, die man nutzen kann ohne irgendwas (Kernel, Userspace-Software) zu kompilieren ?
https://www.wireguard.com/install/
wie funktioniert WireGuard netzwerk-technisch ? Wird hier zur LAN-LAN-Kopplung Proxy-ARP-Technik verwendet ? oder wie bei OpenVPN der Bridgemode bzw. Transfernetze ?
Schau Dir das mal auf der Webseite an: https://www.wireguard.com/protocol/
Kann ich diese Software auch im Hotelbereich, bei dem nur eingeschränkte Ports (z.B. tcp/80, tcp/433) freigeschalten sind, nutzen ? bei SSL-VPN geht das ?
Man muß auf der Serverseite einen UDP Port in der Firewall freigeben (frei wählbar, Default ist 51820).
Gibt es auch einen Windows- und Android-/iOS-Client ?
Laut Mailingliste ist eine Android Version in Arbeit.
In AstLinux benutzen wir es z.Zt. nur zwischen Linux-Routern/PBXs im "Site-to-Site" Modus.

Gruß Michael
 
Zuletzt bearbeitet:

Shirocco88

Aktives Mitglied
Mitglied seit
4 Jan 2016
Beiträge
870
Punkte für Reaktionen
67
Punkte
28
Hier nun einige OpenVPN/WireGuard-Vergleiche.
Bei einem einzelnen SIP-Gespräch (100Kbps) ist der UDP Jitter noch gleich (nur 16 datagrams im Test). Aber bei höherem Traffic ist der Jitter bei WireGuard wesentlich niedriger als bei OpenVPN.
Bei VPN-Vergleichen ist es wichtig, auch die Rahmenbedingungen, d.h. Config-Settings der Produkte anzugeben;
Bitte Compression=On/Off, Cipher-Typ= ???, z.B. “AES-256-CBC”, welche Hardware (CPU, RAM, ...);
sonst sind die Angaben/Ergebnisse nicht wirklich aussagekräftig.

bitte posten.
 

mkeuter

Neuer User
Mitglied seit
16 Jan 2016
Beiträge
11
Punkte für Reaktionen
0
Punkte
1
@Shirocco88:
Sehr gern, danke für die Anregung. Macht schon Sinn :).
Ich habe die Angaben zur Testumgebung jetzt in den Ursprungspost mit eingebaut.

Gruß Michael
 

Shirocco88

Aktives Mitglied
Mitglied seit
4 Jan 2016
Beiträge
870
Punkte für Reaktionen
67
Punkte
28
OpenVPN 2.4.4
  • Compression=On
so wie es aussieht ist bei OpenVPN die Daten-Compression eingeschalten und bei WireGuard ausgeschalten/bzw. nicht erwähnt;
meine Erfahrung ist, dass Daten-Compression bei höherem NIC-Durchsatz bzw. nicht zu starken Computern (schwache CPU) sehr schnell zum Bottleneck wird; ich habe dies auch schon bei SOC-Systemen mit Datendurchsatz-Werten > 100 Mbps erlebt.

Könntest Du die iperf3 Messung mal mit OpenVPN-Tunnel ohne Daten-Compression machen, nur um sicher zu sein, dass wir nicht Äpfel mit Birnen vergleichen.
 

mkeuter

Neuer User
Mitglied seit
16 Jan 2016
Beiträge
11
Punkte für Reaktionen
0
Punkte
1
Bei WireGuard gibt es leider keine Einstellmöglichkeit für Compression (vermutlich verwendet es bisher keine).
Hab es gerade mal mit OpenVPN ohne Compression getestet: macht kaum Unterschied beim Durchsatz (1-2% Unterschied), Jitter war identisch.

Die neue WireGuard Version 0.0.20171127 ist nochmal deutlich schneller:
603 Mbits/sec gegenüber 506 Mbits/sec beim ersten iPerf3 Test vom Original-Post.

Ich hab nochmal einen neuen iPerf Test mit AstLinux in einer VM (2 Cores, 512 MB RAM) als Server zusammen mit der Qotom Box (als Client) laufen lassen:
Code:
pbx-vm ~ # iperf3 -s

Native (no VPN):
pbx ~ # iperf3 -c 10.10.50.105 -P2
--
[SUM]   0.00-10.00  sec  1.08 GBytes   928 Mbits/sec  121             sender
[SUM]   0.00-10.00  sec  1.08 GBytes   927 Mbits/sec                  receiver
--

Wireguard:
pbx ~ # iperf3 -c 10.4.0.9 -P2
--
[SUM]   0.00-10.00  sec  1.00 GBytes   861 Mbits/sec   20             sender
[SUM]   0.00-10.00  sec  1023 MBytes   859 Mbits/sec                  receiver
--
Ich finde die Geschwindigkeit kann sich sehen lassen.

Gruß Michael
 
Zuletzt bearbeitet:

Whoopie

Aktives Mitglied
Mitglied seit
19 Okt 2004
Beiträge
855
Punkte für Reaktionen
8
Punkte
18
Ich hab WireGuard für FritzBoxen mit Kernel 3.10.x in Freetz-Trunk integriert. Wäre für Feedback dankbar. Denkt daran, den konfigurierten UDP-Port (ListenPort) auch entsprechend nach außen freizugeben (Stichwort ar7.cfg).
 

prisrak1

Mitglied
Mitglied seit
14 Mai 2017
Beiträge
325
Punkte für Reaktionen
25
Punkte
28
Kann es einer genau erklären, wie man es bei der freetz konfiguriert? Mit openVPN gab's genug Anleitungen. Hier dagegen eher selten. Im Freetz muss die entsprechende WireGuard Konfiguration eingetragen werden. Hat´s einer schon gemacht? Danke!
 

Shirocco88

Aktives Mitglied
Mitglied seit
4 Jan 2016
Beiträge
870
Punkte für Reaktionen
67
Punkte
28
Hat´s einer schon gemacht?
Whoopie hats schon gemacht; siehe #13
Ich hab WireGuard für FritzBoxen mit Kernel 3.10.x in Freetz-Trunk integriert.
...
Denkt daran, den konfigurierten UDP-Port (ListenPort) auch entsprechend nach außen freizugeben (Stichwort ar7.cfg).
ohne Problembeschreibung kann dir vermutlich niemand helfen;
ich denke über eine anschließende Dokumentation von Dir wären sicherlich weitere User froh.
 

prisrak1

Mitglied
Mitglied seit
14 Mai 2017
Beiträge
325
Punkte für Reaktionen
25
Punkte
28
.. in Freetz-Trunk integriert? ich habs schon auch ein freetz Image erzeugt und nun? es gibt´s somit ein WireGuard Eintrag in dieser. Die Erzeugung und Einstellung z.B. in Win währe super, wie bei openvpn.
 
3CX

Statistik des Forums

Themen
235,593
Beiträge
2,063,113
Mitglieder
356,358
Neuestes Mitglied
boschdi