Hohe CPU bei Open VPN auf OPNSense installiert auf Root Server RS 2000 G9

  • Hallo liebes Forum,


    ich habe die Oster Aktion genutzt und ein paar Server und vLans bei Netcup erstanden. :) Und endlich auch final in Betrieb genommen.


    Mein Setup:


    RS2000 G9 ist als OPNSense installiert.

    drei weitere VServer und RServer mit teilweise Proxmox, Win2019 usw... "versteckt" hinter der OPNSense im CloudvLan 2,5G.


    Ich habe drei Standorte angebunden via S2S VPN an die OPNSense und greife auf die internen Ressourcen zu. Alles schick, funktioniert auch sauber!


    Jetzt habe ich vor ein paar Tagen meine Remote Standorte so eingestellt, dass wirklich alles über die VPN Verbindung geroutet wird. Ich mache also Gateway Redirect und schicke alles aus dem Office / Home Office über die OPNSense im Netcup RZ und von dort aus ins Internet. Klappt auch super, bis zu dem Moment, an dem ich eine neue Glasfaseranbindung mit 600 MBit in Betrieb genommen habe.

    Das VPN bricht zusammen, Ping Latenzen schnellen in die Höhe von > 1000ms und peng, alles dunkel :)


    Ich habe ein bisschen geschaut und festgestellt, dass der OPEN VPN Prozess auf der OPNSense 100% CPU verursacht! Wahnsinn. Die Remote Offices, angebunden über Mikrotik RB4011 mit "schwacher" CPU haben kein Problem mit der CPU Auslastung. Ich bekomme die Mikrotiks beim VPN nicht über 25%.


    Also habe ich vermutet, dass auf dem RS2000 G9 kein AES-NI verfügbar ist. Doch eine Abfrage brachte:



    dmesg | grep -i aesni

    Features2=0xfff83203<SSE3,PCLMULQDQ,SSSE3,FMA,CX16,SSE4.1,SSE4.2,x2APIC,MOVBE,POPCNT,TSCDLT,AESNI,XSAVE,OSXSAVE,AVX,F16C,RDRAND,HV>

    aesni0: <AES-CBC,AES-CCM,AES-GCM,AES-ICM,AES-XTS,SHA1,SHA256> on motherboard

    Features2=0xfff83203<SSE3,PCLMULQDQ,SSSE3,FMA,CX16,SSE4.1,SSE4.2,x2APIC,MOVBE,POPCNT,TSCDLT,AESNI,XSAVE,OSXSAVE,AVX,F16C,RDRAND,HV>


    Also habe ich ein Ticket bei Netcup eröffnet, die mir nicht helfen können.


    Nun also die Frage an Euch:


    Habt Ihr Erfahrung mit OPNsense auf eine Root Server mit ovpn?


    Was mache ich falsch? Ich benutze OPNSense schon länger über Appliances vor Ort bei Kunden, ein solches Problem hatte ich noch nicht, deswegen vermute ich irgend ein "Hardware" oder Treiberproblem.


    Hoffentlich habt ihr Ideen! :)


    Danke für Eure Hilfe.


    Lg

    Seppos

  • Tag nochmal!


    Ich konnte nun über eine Änderung an der Client OPNSense (bei uns vor Ort) das komplette abstürzen der VPN umgehen, indem ich auf dem Interface MSS auf 1300 gesetzt habe.


    pasted-from-clipboard.png


    Das hat zur Folge, dass ich "nur" noch ca 100 MBIT schaffe, das aber zumindest zuverlässig.


    Trotzdem würde mich interessieren, wo die Hohe CPU Auslastung her kommt... Bei 100 MBIT via VPN liegt die CPU Auslastung des ovpn Prozesses jetzt bei ca 80%.


    Bin weiterhin offen für Ideen.


    Grüße!

  • Ob aesni verwendet wird, kannst du ja mit "openssl speed" Kommandos herausfinden, mit Hilfe von -evp.


    Jetzt habe ich vor ein paar Tagen meine Remote Standorte so eingestellt, dass wirklich alles über die VPN Verbindung geroutet wird.

    Ich mache also Gateway Redirect und schicke alles aus dem Office / Home Office über die OPNSense im Netcup RZ und von dort aus ins Internet.


    Warum würde man das wollen? Bzw welche Vorteil versprichst du dir davon, aus jedem Homeoffice Netflix und Facebook über deinen Server zu hetzen?

    Welche Bandbreiten kommen da so zusammen? Da kann ich mir durchaus vorstellen, einen VServer an die Grenzen zu bringen.


    //Nachtrag, hab deinen 2. Beitrag erst nach Absenden gesehen.


    Auf meinem RS 2000 SAS G8 komme ich bei 70 MBIt/s OpenVPN auf ca. 30% CPU. Das Limit ist das Raspi auf der Gegenseite, der ist am Anschlag.

  • Huhu,


    die Idee war, die Schutz-Filter zu zentralisieren, damit auch Geräte wie die Mikrotiks und andere in den "Genuss" von Sensei usw kommen...


    habe mal gemessen, mir fehlen aber Vergleichswerte... Sieht aber erstmal gar nicht so schlecht aus. Nur, warum langweilen sich dann meine Clients? Und der Server ist am Limit?


    Auf dem Netcup Server:


    root@gateway01:/home/sebastian_s # openssl speed aes-256-cbc

    Doing aes-256 cbc for 3s on 16 size blocks: 29892282 aes-256 cbc's in 3.03s

    Doing aes-256 cbc for 3s on 64 size blocks: 7797790 aes-256 cbc's in 3.02s

    Doing aes-256 cbc for 3s on 256 size blocks: 2031708 aes-256 cbc's in 3.02s

    Doing aes-256 cbc for 3s on 1024 size blocks: 516167 aes-256 cbc's in 3.02s

    Doing aes-256 cbc for 3s on 8192 size blocks: 64734 aes-256 cbc's in 2.98s

    Doing aes-256 cbc for 3s on 16384 size blocks: 31694 aes-256 cbc's in 3.00s

    OpenSSL 1.1.1d-freebsd 10 Sep 2019

    built on: reproducible build, date unspecified

    options:bn(64,64) rc4(8x,int) des(int) aes(partial) idea(int) blowfish(ptr)

    compiler: clang

    The 'numbers' are in 1000s of bytes per second processed.

    type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes

    aes-256 cbc 157781.94k 165490.92k 172474.11k 174819.23k 177692.46k 173091.50k

    root@gateway01:/home/sebastian_s #

    root@gateway01:/home/sebastian_s # openssl speed -evp AES256

    Doing aes-256-cbc for 3s on 16 size blocks: 104032187 aes-256-cbc's in 3.04s

    Doing aes-256-cbc for 3s on 64 size blocks: 38509565 aes-256-cbc's in 2.99s

    Doing aes-256-cbc for 3s on 256 size blocks: 10201308 aes-256-cbc's in 3.03s

    Doing aes-256-cbc for 3s on 1024 size blocks: 2528870 aes-256-cbc's in 2.98s

    Doing aes-256-cbc for 3s on 8192 size blocks: 314752 aes-256-cbc's in 2.99s

    Doing aes-256-cbc for 3s on 16384 size blocks: 160961 aes-256-cbc's in 3.04s

    OpenSSL 1.1.1d-freebsd 10 Sep 2019

    built on: reproducible build, date unspecified

    options:bn(64,64) rc4(8x,int) des(int) aes(partial) idea(int) blowfish(ptr)

    compiler: clang

    The 'numbers' are in 1000s of bytes per second processed.

    type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes

    aes-256-cbc 547706.73k 823682.39k 861537.27k 867706.93k 861726.88k 867762.68k

    root@gateway01:/home/sebastian_s #



    Und auf meiner Firewall im Office i5-7200U CPU @ 2.50GHz (4 cores)


    root@huyssenallee:~ # openssl speed aes-256-cbc

    Doing aes-256 cbc for 3s on 16 size blocks: 20650133 aes-256 cbc's in 2.95s

    Doing aes-256 cbc for 3s on 64 size blocks: 4526752 aes-256 cbc's in 2.95s

    Doing aes-256 cbc for 3s on 256 size blocks: 1328737 aes-256 cbc's in 2.98s

    Doing aes-256 cbc for 3s on 1024 size blocks: 345880 aes-256 cbc's in 2.98s

    Doing aes-256 cbc for 3s on 8192 size blocks: 42319 aes-256 cbc's in 2.98s

    Doing aes-256 cbc for 3s on 16384 size blocks: 21084 aes-256 cbc's in 2.97s

    OpenSSL 1.1.1d-freebsd 10 Sep 2019

    built on: reproducible build, date unspecified

    options:bn(64,64) rc4(16x,int) des(int) aes(partial) idea(int) blowfish(ptr)

    compiler: clang

    The 'numbers' are in 1000s of bytes per second processed.

    type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes

    aes-256 cbc 111882.20k 98363.80k 114278.36k 118989.98k 116164.10k 116358.82k

    root@huyssenallee:~ # openssl speed -evp AES256

    Doing aes-256-cbc for 3s on 16 size blocks: 79884255 aes-256-cbc's in 2.98s

    Doing aes-256-cbc for 3s on 64 size blocks: 23084542 aes-256-cbc's in 2.96s

    Doing aes-256-cbc for 3s on 256 size blocks: 6677983 aes-256-cbc's in 3.00s

    Doing aes-256-cbc for 3s on 1024 size blocks: 1666574 aes-256-cbc's in 2.98s

    Doing aes-256-cbc for 3s on 8192 size blocks: 213204 aes-256-cbc's in 3.00s

    Doing aes-256-cbc for 3s on 16384 size blocks: 106506 aes-256-cbc's in 2.99s

    OpenSSL 1.1.1d-freebsd 10 Sep 2019

    built on: reproducible build, date unspecified

    options:bn(64,64) rc4(16x,int) des(int) aes(partial) idea(int) blowfish(ptr)

    compiler: clang

    The 'numbers' are in 1000s of bytes per second processed.

    type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes

    aes-256-cbc 428279.98k 498967.20k 569854.55k 573336.45k 582189.06k 583183.47k

    root@huyssenallee:~ #

  • Die Messwerte sehen gut aus.

    Nur, warum langweilen sich dann meine Clients? Und der Server ist am Limit?

    Der Server muss ja die Summe der Clients verwursten. Da kann halt einiges an Bandbreite zusammenkommen, wenn man tatsächlich den kompletten Traffic seiner Mitarbeiter aus dem Homeoffice über den Server leitet.

  • Moin,


    jepp, das verstehe ich. Bisher ist es aber ein Test System, es gibt also genau einen Client mit genau einem Rechner, der dann einen Download macht...


    Ich versuche das mal über eine VM auf einem echten Root Server nachzubauen um zu sehen, ob es da anders ist. Ich habe da zufällig noch einen vmware server bei den roten Kollegen...


    LG

  • Tag zusammen,


    ich wollte kurz berichten, dass ich das Problem gelöst habe.


    Ich verwende nun WireGuard VPN, das ist schnell und schlank. Und die Probleme haben sich erledigt. In der Tat braucht OpenVPN viel CPU, Wireguard nicht, ich komme jetzt auf 600 - 700 MBit Übertragungsrate. Das ist mehr als zufriedenstellend.


    Also, Ende gut, alles gut!