Netgate Discussion Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Search
    • Register
    • Login

    Hohe CPU Last OpenVPN

    Scheduled Pinned Locked Moved Deutsch
    15 Posts 4 Posters 2.1k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • R
      Rossi
      last edited by Rossi

      Hallo zusammen,

      ich habe ein kleines Problem mit OpenVPN und zwar scheint mir die CPU Last durch den OpenVPN Prozess zu hoch zu sein.

      Das Szenario:

      Standortkopplung über 1 Gbit/s mit Shared Key
      Die Pfsense (2.4.4p3) läuft als VM unter HyperV (einmal 2012R2 und einmal 2019), zugewiesen sind jeweils zwei Kerne.
      Die CPUs sind: Intel Xeon X5670 3Ghz und Intel Xeon Gold 6244 3,6Ghz (einmal HP DL360G6 u. DL360G10)

      Die Verbindung funktioniert soweit einwandfrei, allerdings ist bei ca. 120 Mbit/s Schluss, da der OpenVPN Prozess auf dem X5670 einen Kern komplett auslastet (auf dem 6244er sieht es etwas besser aus). AES-NI ist übrigens auf beiden Plattformen verfügbar und aktiv.
      Ich habe jetzt schon einiges rumprobiert, aber nichts bringt was. Ob ich die Kompression ein- oder ausschalte, kein Unterschied. Testweise habe ich sogar den Verschlüsselungsalgorithmus mal deaktiviert, standardmäßig steht er auf AES-128-CBC. Was mich etwas wundert: Das macht tatsächlich alles GAR KEINEN Unterschied. Es sind immer konstant ca. 120Mbit/s bei voller Auslastung eines Kerns.

      Meine Frage: Ist das eine erwartbare Leistung und somit normal? Wenn dem nicht so ist, hat dann jemand eine Idee wie ich den Fehler weiter eingrenzen kann?

      1 Reply Last reply Reply Quote 0
      • R
        Rossi
        last edited by

        Nach viel Recherche und Lesen komme ich nun zu dem Schluss: Das ist normal, leider. Es lässt sich noch etwas mehr mit ein paar Tweaks im Bereich der MTU rausholen (ca. 160 Mbit/s), aber dann ist auch Schluss.
        Testweisweise habe ich auch mal eine IPSEC ike2 Site 2 Site Verbindung aufgebaut und damit ein wenig rumgespielt. Maximum ist hier ca. 250 Mbit/s bei einer ähnlichen CPU Auslastung. Ich stelle also fest, dass man für Gigabitanbindungen tatsächlich richtig fette Hardware braucht.

        1 Reply Last reply Reply Quote 0
        • RicoR
          Rico LAYER 8 Rebel Alliance
          last edited by

          OpenVPN ist zwar keine Rakete und hat viel Overhead, aber 120 Mbit/s ist definitiv zu wenig bei deiner CPU.
          Schau mal hier rein: https://forum.netgate.com/topic/135822/openvpn-durchsatz-wie-200mbit-schaffen

          -Rico

          1 Reply Last reply Reply Quote 0
          • R
            Rossi
            last edited by Rossi

            Tja, nur wie soll ich den Flaschenhals finden? Die Verschlüsselung ist es nicht, denn selbst ohne bleiben die Werte gleich. Der OpenVPN Prozess dreht einfach immer auf 100%.

            1 Reply Last reply Reply Quote 0
            • RicoR
              Rico LAYER 8 Rebel Alliance
              last edited by

              Ich vermute es liegt am Hyper-V aber ist nur so ein Gefühl. ;-)

              -Rico

              1 Reply Last reply Reply Quote 0
              • R
                Rossi
                last edited by

                Ich weiß es nicht. Die openssl Benchmarks sind recht gut. Die Leistung kommt also durchaus in den VMs an. Zudem habe ich bereits auch mit den CPU Ressourcen rumgespielt. Die Gewichtung der beiden Kerne der pfsense VM habe ich z.B. mal testweise verachtfacht. Das wirkt sich eher gar nicht aus. Ich wüsste gerne womit sich der openvpn Prozess so sehr beschäftigt. Eigentlich bleibt ja fast nur, dass das Paketeverschieben alleine ihn so stark auslastet, aber was hat das dann mit Hyper-V zu tun?
                Und von der Virtualisierung komme ich auf beiden Seiten nicht weg. Das ganze Konzept funktioniert nur so, zumal ich auf der einen Seite nur 1HE habe und mir eine Hardware Appliance nur für die pfsense zu teuer vom Stellplatz her wäre.
                Momentan sind 160 MBit/s mit OpenVPN durchaus auch ok, aber da wird in den nächsten Jahren noch ein wenig was dazu kommen. Daher würde es sich schon lohnen da ein wenig Aufwand und Mühe in eine Verbesserung zu stecken.

                PippinP 1 Reply Last reply Reply Quote 0
                • PippinP
                  Pippin @Rossi
                  last edited by

                  @Rossi said in Hohe CPU Last OpenVPN:

                  Ich weiß es nicht. Die openssl Benchmarks sind recht gut.

                  Zeig bitte wie das getestet wurde.

                  I gloomily came to the ironic conclusion that if you take a highly intelligent person and give them the best possible, elite education, then you will most likely wind up with an academic who is completely impervious to reality.
                  Halton Arp

                  1 Reply Last reply Reply Quote 0
                  • R
                    Rossi
                    last edited by Rossi

                    Ich habe hiermit getestet (das sind die Werte der alten DL360G6):

                    openssl speed -elapsed -evp aes-128-cbc

                    Ergebnis:
                    You have chosen to measure elapsed time instead of user CPU time.
                    Doing aes-128-cbc for 3s on 16 size blocks: 82806425 aes-128-cbc's in 3.02s
                    Doing aes-128-cbc for 3s on 64 size blocks: 33180915 aes-128-cbc's in 3.02s
                    Doing aes-128-cbc for 3s on 256 size blocks: 9307965 aes-128-cbc's in 3.01s
                    Doing aes-128-cbc for 3s on 1024 size blocks: 2396353 aes-128-cbc's in 3.02s
                    Doing aes-128-cbc for 3s on 8192 size blocks: 304137 aes-128-cbc's in 3.01s
                    Doing aes-128-cbc for 3s on 16384 size blocks: 154589 aes-128-cbc's in 3.09s
                    OpenSSL 1.1.1a-freebsd 20 Nov 2018
                    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-128-cbc 438210.75k 704191.85k 792216.62k 811614.42k 828339.63k 820750.96k

                    Edit: Und das sind die Werte der DL360G10:

                    You have chosen to measure elapsed time instead of user CPU time.
                    Doing aes-128-cbc for 3s on 16 size blocks: 2453744 aes-128-cbc's in 3.05s
                    Doing aes-128-cbc for 3s on 64 size blocks: 2155135 aes-128-cbc's in 3.00s
                    Doing aes-128-cbc for 3s on 256 size blocks: 1968569 aes-128-cbc's in 3.02s
                    Doing aes-128-cbc for 3s on 1024 size blocks: 1435283 aes-128-cbc's in 3.01s
                    Doing aes-128-cbc for 3s on 8192 size blocks: 414843 aes-128-cbc's in 3.08s
                    OpenSSL 1.0.2o-freebsd 27 Mar 2018
                    built on: date not available
                    options:bn(64,64) rc4(16x,int) des(idx,cisc,16,int) aes(partial) idea(int) blowfish(idx)
                    compiler: clang
                    The 'numbers' are in 1000s of bytes per second processed.
                    type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes
                    aes-128-cbc 12885.30k 45976.21k 167114.17k 488637.44k 1104046.73k

                    1 Reply Last reply Reply Quote 0
                    • PippinP
                      Pippin
                      last edited by

                      Ok, das ist in Ordnung.
                      Dann schließe Ich mich an bei Rico.

                      I gloomily came to the ironic conclusion that if you take a highly intelligent person and give them the best possible, elite education, then you will most likely wind up with an academic who is completely impervious to reality.
                      Halton Arp

                      1 Reply Last reply Reply Quote 0
                      • R
                        Rossi
                        last edited by

                        Ohne AES NI Support sieht es übrigens schon viel deutlicher nach den Werten aus, die ich tatsächlich auch kriege:

                        openssl speed aes-128-cbc:

                        type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
                        aes-128 cbc 92290.28k 100538.64k 104060.39k 208777.11k 211984.38k 209988.98k

                        Sieht man in den OpenVPN Prrotokollen auf einem entsprechenden verbose Level ob er die Hardwarebeschleunigung auch wirklich verwendet?

                        V 1 Reply Last reply Reply Quote 0
                        • PippinP
                          Pippin
                          last edited by

                          Nein kann man nicht sehen.

                          Und "Hardware Crypto" muss auf "No Hardware Crypto Acceleration" stehen am server und client.
                          Kontrolle mit kldstat.
                          OpenVPN benutzt OpenSSL fürs crypto und diese hat eigene code um mit AES-NI zu "sprechen".

                          Sonst hast jetzt was zum suchen, "HyperV AES-NI FreeBSD" :)

                          I gloomily came to the ironic conclusion that if you take a highly intelligent person and give them the best possible, elite education, then you will most likely wind up with an academic who is completely impervious to reality.
                          Halton Arp

                          1 Reply Last reply Reply Quote 0
                          • V
                            viragomann @Rossi
                            last edited by

                            Hallo,

                            @Rossi said in Hohe CPU Last OpenVPN:

                            Sieht man in den OpenVPN Prrotokollen auf einem entsprechenden verbose Level ob er die Hardwarebeschleunigung auch wirklich verwendet?

                            du kannst aber beim OpenSSL Speedtest AES-NI deaktivieren. Bei deinen Testeinstellungen würde das dann so aussehen:

                            OPENSSL_ia32cap="~0x200000200000000" openssl speed -elapsed -evp aes-128-cbc
                            

                            Wurde beim Test zuvor AES-NI verwendet, müsste dieses Ergebnis deutlich schlechter ausfallen.

                            Grüße

                            1 Reply Last reply Reply Quote 0
                            • R
                              Rossi
                              last edited by

                              Siehe zwei Postings weiter oben. Das sind die Werte ohne AES NI. Die sind recht nah dran an dem, was ich tatsächlich erreiche.

                              1 Reply Last reply Reply Quote 0
                              • V
                                viragomann
                                last edited by

                                Alles klar. Warum dann die Frage. Wenn es hier verwendet wird, wird es auch von OpenVPN verwendet.

                                1 Reply Last reply Reply Quote 0
                                • R
                                  Rossi
                                  last edited by

                                  Weil meine tatsächlich erreichbaren Werte eher dem entsprechen, was ohne AES NI zu schaffen ist. Mit AES NI geht der Benchmark ja eher Richtung 1 Gbit/s.

                                  1 Reply Last reply Reply Quote 0
                                  • First post
                                    Last post
                                  Copyright 2025 Rubicon Communications LLC (Netgate). All rights reserved.