Peformance-Probleme mit OPNsense

Started by Porfavor, November 13, 2022, 11:03:19 PM

Previous topic - Next topic
Guten Abend,

Ich habe eine VPN Site-to-Site-Verbindung zwischen meinem heimischen Netzwerk und einem gehosteten VLAN (250 Mbit/s). An beiden Enden fungiert jeweils eine OPNsense VM and Endpunkt. Das funktioniert grundsätzlich auch prima. Nur lässt die Geschwindigkeit stark zu wünschen übrig. Wenn ich Dateien kopiere, bekomme ich idR weniger als 3-5 MB/s, also ca. 15-25 Mbit/s, wobei dies stark schwankt und kurzzeitig auch bis ca. 1 MB/s runtergeht. Auch ein Download auf einen Server beim Hoster hinter der OPNsense beim Hoster ist entsprechend langsam. Es scheint also so, dass alles, was über die OPNsense läuft, zu Einbrüchen führt. Innerhalb des VLAN ist die Geschwindigkeit erwartungsgemäß.

Bitte nicht auf den Werten festnageln, letztlich sind Sie auf jeden Fall zu niedrig bei einer Download-Messung (iperf3 -R).

Die gehosteten Server sind grundsätzlich nicht öffentlich erreichbar, alles läuft also - abgesehen vom VLAN - über die OPNsense.

Mit iperf3 wurden diverse Messungen vorgenommen.


Zuhause habe ich 1 Gbit/s DL und 50 Mbit/s UL. Wenn ich nun eine Datei von Netcup nach Hause kopiere, wäre das nach meinem Verständnis ein Download. Die niedrigste Rate wäre dann das VLAN mit 250 Mbit/s. Das kann dann wohl kaum ein gewöhnliches Verhalten sein. In die andere Richtung ist die Geschwindigkeit aber ähnlich. Sie ist insgesamt recht wenig konstant .


Ich habe schon ein paar Dinge ohne Erfolg probiert und möchte eigentlich nicht weiter im Dunkeln herumtappen.


Was ich ausschließen kann, ist jedenfalls die CPU auf beiden Seiten. Die ist maximal bei 25-40 %, eher weniger.


Was ich zumindest versucht habe:


- hw.ibrs_disable under System->Settings-> Optimierungen auf "1"
- Schnittstellen->Einstellungen: CRC, TSO and LRO deaktiviert
- MTU auf 1400 oder 1300 auf Wireguard-Schnittstelle


Ich habe gelesen, dass man das Parent-Interface in der OPNsense aktivieren soll. Was genau das bedeuten soll, ist mir aber nicht klar.

Ich weiß nicht, wo ich ansetzen könnte, und bin daher über jede Hilfe dankbar.

Zwei Ideen hierzu.

Firewall: Settings: Normalization

Dort eine Neue Regel für die WireGuard Group.
MSS auf 1300.

Falls nicht vorhanden das WireGuard Kernel Modul installieren.

November 14, 2022, 10:36:05 PM #2 Last Edit: November 14, 2022, 11:54:58 PM by Porfavor
Die Performance-Probleme habe ich auch bei einem Download ohne Nutzung des Tunnels (Server auf einer Seite lädt etwas aus dem Internet herunter), aber unter Einbeziehung der OPNsense. Es sollte daher kein Wireguard-Thema sein. Oder sehe ich hier etwas falsch?

MSS auf 1300 hier hat auch nichts gebracht.

Nun ein paar mehr Infos wie das Netz bei Deinem Hoster ist wär hilfreich.

Sind das dort physische Maschinen? Laufen die virtuell? etc.

Sind alle virtualisiert, Basis ist KVM. Ich bin bei Netcup. Die Maschinen sind mittels VLAN (= zweite, rein interne, NIC) untereinander verbunden. Die externe NIC ist jeweils deaktiviert, bis auf der OPNsense, dort natürlich nicht. Internetverkehr läuft daher über diese.

Welche Informationen würden noch weiterhelfen?

- welches hosting packet nutzt du denn?
- wieviele VMs hast dud en auf der maschiene mit der sense am laufen?
- ist die hardware überprovisioniert (zu viele VMs, ist nur eine vermutung)?
- was genau (Virtuelle Hardware) hast du der Sense zugewiesen, bitte mal screenshots
- also solltest du das packet bei netcup haben (RS 8000 G9.5) dann hast du was falsch konfiguriert, die sollte einiges packen :)
Internet: Willy.tel Down: 1Gbit/s, UP: 250Mbit/s Glasfaser  |
Router/Firewall: pfSense+ 23.09  |
Hardware: Netgate 6100

Es gibt in diesem Setup ziemlich viele Variablen: VMs, VPN, VLANs, Provider.

Ich würde versuchen, das Problem auf die konkrete Ursache einzugrenzen, d.h. von beiden Seiten zunächst mal Tests ohne VPN gegen "known good" Gegenstellen zu machen, z.B. mit dem Speedtest CLI, um die theoretischen Up- und Downloadraten zu verifizieren. Letzteres gegen verschiedene Server, weil das bei manchen Providern auch ein Peering-Problem sein kann.

Dann würde ich angesichts der stark asymmetrischen Datenraten mal den Bufferbloat Test von Waveform machen.

Wenn das alles O.K. ist, müsste man wie schon vorgeschlagen das Wireguard Kernel Mod nehmen. Falls nicht, hilft eventuell Tuning der Virtualisierung (beispielsweise NICs durchschleifen).
Intel N100, 4 x I226-V, 16 GByte, 256 GByte NVME, ZTE F6005

1100 down / 440 up, Bufferbloat A+

Es handelt sich um das Paket VPS 500 G10s.

Da ich keine nested virtualization betreibe (was mE bei Netcup auch nicht mehr möglich ist), handelt es sich um eine VM. Auf einem VPS kann ich auch nicht irgendwas zuweisen. Oder was meinst du?

Ich denke auch, dass etwas falsch konfiguriert ist. Genau darum geht es mir ja.


Irgendwie scheint keiner richtig zu lesen. VPN als Ursache können wir - wenn ich nicht ein völliges Fehlverständnis habe - ausschließen. Mit dem Rest werde ich mich bei Gelegenheit befassen. Allerdings sind die Einwirkungsmöglichkeiten auf die Hardware äußert begrenzt.

Ich habe eher den Eindruck, dass Du nicht richtig verstehst. Wenn Du auch ohne VPN langsame Geschwindigkeiten hast, kannst Du sehr wohl den Bufferbloat Test machen und auch gegen mehrere Provider testen, um ein Peering-Problem auszuschließen.

Und auf Deiner lokalen Maschine (falls dort das Problem liegt), kannst Du ggf. je nach Virtualisierungsart die NICs durchreichen, statt zu virtualisieren. Du hast in Deinem Eingangspost auch nichts von VPS, sondern von VMs geschrieben, da setze ich implizit voraus, dass es keine Lightweight Virtualisierung ist, sondern KVM o.ä.

Nur: Wenn Du den Speedtest ganz ohne VPN beim Provider die Performance-Tests schon gemacht hast und VPN ausschließen kannst, wieso bringst Du es dann ins Spiel?

Eigentlich ist es doch ganz einfach: Lassen wir die Verbindungsstrecke mal außer Acht, kann das Problem entweder auf der Netcup-Seite durch VPS-Virtualisierung der OpnSense liegen. Lässt sich durch Speedtests leicht klären.

Oder es liegt auf der Seite Deiner Heim-OpnSense, von der Du noch gar nicht mitgeteilt hast, unter welchem Hypervisor sie läuft. Auch das lässt sich klären.

Erst, wenn beides isoliert für sich schnell ist, kann es das Peering oder das VPN sein. Ließe sich auch feststellen, indem man Ports öffnet und iperf mal direkt checkt.
Intel N100, 4 x I226-V, 16 GByte, 256 GByte NVME, ZTE F6005

1100 down / 440 up, Bufferbloat A+

November 19, 2022, 09:20:23 PM #11 Last Edit: November 20, 2022, 08:01:51 PM by Porfavor
Ich will nicht ausschließen, dass es mit dem VPN Probleme gibt, aber die Performance zeigt, dass es auch ohne welche gibt. Das ist mir aber erst bei den Tests aufgefallen. Deswegen steht es im Anfangspost noch anders.

Bufferbloat Ergebnis hier:

https://www.waveform.com/tools/bufferbloat?test-id=14595297-c22a-4549-8042-da6217ed9c08

Das scheint ja eigentlich nicht so schlecht zu sein. Wenn ich aber - wie gesagt - Dateien herunterlade, schläft mir nach kurzer Zeit die Geschwindigkeit ein.

Die iperf Ergebnisse poste ich hier Mal.

An die öffentliche IP der OPNsense:

c:\iperf>iperf3 -c XY -p 5201 -4 -P 1 -R
Connecting to host XY, port 5201
Reverse mode, remote host XY is sending
[  4] local 192.168.132.222 port 59675 connected to XY port 5201
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-1.00   sec  11.0 MBytes  91.6 Mbits/sec
[  4]   1.00-2.00   sec  14.2 MBytes   119 Mbits/sec
[  4]   2.00-3.00   sec  11.4 MBytes  95.3 Mbits/sec
[  4]   3.00-4.00   sec  9.93 MBytes  83.3 Mbits/sec
[  4]   4.00-5.00   sec  14.8 MBytes   124 Mbits/sec
[  4]   5.00-6.00   sec  14.4 MBytes   120 Mbits/sec
[  4]   6.00-7.00   sec  13.8 MBytes   116 Mbits/sec
[  4]   7.00-8.00   sec  14.2 MBytes   119 Mbits/sec
[  4]   8.00-9.00   sec  14.5 MBytes   121 Mbits/sec
[  4]   9.00-10.00  sec  7.61 MBytes  64.0 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec   126 MBytes   106 Mbits/sec   19             sender
[  4]   0.00-10.00  sec   126 MBytes   106 Mbits/sec                  receiver

iperf Done.

c:\iperf>iperf3 -c XY -p 5201 -4 -P 1
Connecting to host XY, port 5201
[  4] local 192.168.132.222 port 59735 connected to XY port 5201
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-1.01   sec  6.62 MBytes  54.9 Mbits/sec
[  4]   1.01-2.01   sec  6.50 MBytes  55.0 Mbits/sec
[  4]   2.01-3.01   sec  6.50 MBytes  54.1 Mbits/sec
[  4]   3.01-4.01   sec  6.62 MBytes  55.6 Mbits/sec
[  4]   4.01-5.00   sec  6.50 MBytes  55.0 Mbits/sec
[  4]   5.00-6.01   sec  6.50 MBytes  54.0 Mbits/sec
[  4]   6.01-7.01   sec  6.62 MBytes  55.8 Mbits/sec
[  4]   7.01-8.01   sec  6.50 MBytes  54.3 Mbits/sec
[  4]   8.01-9.01   sec  6.62 MBytes  55.8 Mbits/sec
[  4]   9.01-10.01  sec  6.50 MBytes  54.8 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-10.01  sec  65.5 MBytes  54.9 Mbits/sec                  sender
[  4]   0.00-10.01  sec  65.3 MBytes  54.8 Mbits/sec                  receiver

iperf Done.


An die private IP (über den VPN-Tunnel):

c:\iperf>iperf3 -c 192.168.133.1 -p 5201 -4 -P 1
Connecting to host 192.168.133.1, port 5201
[  4] local 192.168.132.222 port 59807 connected to 192.168.133.1 port 5201
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-1.01   sec  3.62 MBytes  30.1 Mbits/sec
[  4]   1.01-2.01   sec  3.25 MBytes  27.2 Mbits/sec
[  4]   2.01-3.01   sec  4.00 MBytes  33.7 Mbits/sec
[  4]   3.01-4.01   sec  3.62 MBytes  30.4 Mbits/sec
[  4]   4.01-5.00   sec  4.00 MBytes  33.7 Mbits/sec
[  4]   5.00-6.01   sec  4.00 MBytes  33.2 Mbits/sec
[  4]   6.01-7.01   sec  3.50 MBytes  29.4 Mbits/sec
[  4]   7.01-8.01   sec  3.62 MBytes  30.4 Mbits/sec
[  4]   8.01-9.01   sec  3.88 MBytes  32.5 Mbits/sec
[  4]   9.01-10.01  sec  3.88 MBytes  32.5 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-10.01  sec  37.4 MBytes  31.3 Mbits/sec                  sender
[  4]   0.00-10.01  sec  37.2 MBytes  31.2 Mbits/sec                  receiver

iperf Done.

c:\iperf>iperf3 -c 192.168.133.1 -p 5201 -4 -P 1 -R
Connecting to host 192.168.133.1, port 5201
Reverse mode, remote host 192.168.133.1 is sending
[  4] local 192.168.132.222 port 59853 connected to 192.168.133.1 port 5201
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-1.00   sec  4.53 MBytes  37.9 Mbits/sec
[  4]   1.00-2.00   sec  4.56 MBytes  38.3 Mbits/sec
[  4]   2.00-3.00   sec  5.38 MBytes  45.0 Mbits/sec
[  4]   3.00-4.00   sec  4.09 MBytes  34.4 Mbits/sec
[  4]   4.00-5.00   sec  3.96 MBytes  33.1 Mbits/sec
[  4]   5.00-6.01   sec  5.67 MBytes  47.5 Mbits/sec
[  4]   6.01-7.00   sec  3.47 MBytes  29.2 Mbits/sec
[  4]   7.00-8.00   sec  3.66 MBytes  30.7 Mbits/sec
[  4]   8.00-9.00   sec  5.43 MBytes  45.7 Mbits/sec
[  4]   9.00-10.01  sec  4.21 MBytes  35.2 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.01  sec  45.2 MBytes  37.9 Mbits/sec  153             sender
[  4]   0.00-10.01  sec  45.1 MBytes  37.8 Mbits/sec                  receiver

iperf Done.


Man sieht also, dass VPN schon eine signifikante Auswirkung hat. Aber auch ohne ist es zu langsam.


Die lokale OPNsense ist über VMWare ESXi virtualisiert.

November 20, 2022, 05:35:37 PM #12 Last Edit: November 20, 2022, 09:00:15 PM by meyergru
Mit einem Thread brauchst Du mit iperf nicht zu messen, dann schaffst Du nie den wirklichen Durchsatz. Man sollte mindestens -P8 nehmen.

Mit einer Gegenstelle bei Hetzner messe ich zu Deinem Server:


#iperf3 -c 188.68.x.y -p 5201 -P 8
...
[SUM]   0.00-10.00  sec   691 MBytes   579 Mbits/sec  409             sender
[SUM]   0.00-10.05  sec   684 MBytes   571 Mbits/sec                  receiver

#iperf3 -c 188.68.x.y -p 5201 -P 8 -R
...
[SUM]   0.00-10.01  sec   579 MBytes   485 Mbits/sec  1547             sender
[SUM]   0.00-10.00  sec   576 MBytes   483 Mbits/sec                  receiver


Also bei Netcup ohne VPN ca. 500 MBit/s offenbar keine wesentliche Einschränkung (bis auf die Virtualisierung, mit der schafft keine 1000 MBit/s. Messe ich von meinem Glasfaser-Anschluss (600/200) aus, sehe ich ca. 230 MBit/s in beiden Richtungen.

Du misst ja offenbar auch nicht von der OpnSense direkt, sondern von einem Windows-Client aus und das Limit scheint downstream bei ziemlich exakt 100 MBit/s zu liegen, so als wäre es 100 MBit Ethernet.

Aber: Wenn ich einen Windows-Client (der allerdings mit 2.5 GBit/s angebunden ist) messe, sehe ich 160/200 MBit/s bei den beiden Tests. Mit "-P 1" nur 45/65 MBit/s.
Intel N100, 4 x I226-V, 16 GByte, 256 GByte NVME, ZTE F6005

1100 down / 440 up, Bufferbloat A+

November 20, 2022, 08:04:59 PM #13 Last Edit: November 20, 2022, 08:07:01 PM by Porfavor
Ich habe nachher noch mit 10 Streams gemessen. Kann ich gerne zur Verfügung stellen. Was ich aber nicht verstehe: Wenn ich auf Netcup-Seite eine Datei downloade, schläft die Geschwindigkeit auf ca. 3-4 MB/s ein. Ich habe hier aber 250 MBit/s. Da ist VPN nicht im Spiel. Offenbar habe ich also zwei Probleme.



Könntest du bitte meine öffentliche IP aus dem Zitat in deinem Beitrag nehmen? Hatte diese versehentlich nicht anynomisiert.

Das hört sich nach Traffic-Shaping im VPS von Netcup an. Die IPs sind raus.
Intel N100, 4 x I226-V, 16 GByte, 256 GByte NVME, ZTE F6005

1100 down / 440 up, Bufferbloat A+