Apu2c4 - enttäuschende Performance
-
Hi alle,
ich habe mir eine nagelneue apu2c4 zugelegt, vor allem um damit IPSec zu tunneln. Das setup war soweit auch kein Problem. Aber
ich die Performance ist etwas enttäuschend, daher habe ich angefangen etwas rumzutesten.Da ist pfsense 2.3.4 drauf und wenn ich mit iperf am LAN Interface teste (vom PC zur PFS), erreiche ich kaum mehr als 350MBit/sec - ohne dass
hier auch nur ein Paket vermittelt oder gefiltert wird. Um Probleme am Switch auszuschließen, habe ich einen Server direkt mit
der apu2 verbunden -> gleiches Ergebnis.Diese 350MBit erreiche ich auch nur, wenn ich IPSec und die Filterregeln ausschalte (SystemAdvancedFirewall & NAT -> Disable all packet filtering.)
Wenn ich IPSec einschalte, komme ich noch auf ca 300MBit/sec, mit aktivierter FW gerade mal auf 220 MBit/sec. Auch hier
ist noch kein Byte geroutet/vermittelt worden…Nun habe ich schon diverse andere Berichte über apu2 HW gelesen. Da gibt es Bereichte über Routingperformance im
Bereich von 500MBit/sec aufwärts.Bei der IPSec Performance (um die es mir eigentlich geht) liege ich im Bereich von 50-60MBit/sec. Ich muss zugeben, dass
ich da mehr erwartet hätte.Die Frage ist: was mache ich falsch?
Was habe ich schon probiert:
- HW Offloading on/off
- enable/disable TSO und LRO
- diverse Tunables
-> alles ohne nennenswerten Effekt.
Hat da jemand einen Tipp?
-
Hi,
Firewall Performance misst man am Besten durch die Firewall hindurch, nicht mit iperf auf der Firewall. Du solltest Dir auf die WAN Seite einen Server stellen und dann nochmal durch die Firewall durch messen.
IPsec profitiert vom AES-NI Modul, das solltest Du in Advanced -> Misc -> Cryto anstellen. -
Hi athurdent,
Performance durch die FW hindurch messen (ohne IPSec) , werde ich machen - muss ich erst ein Setup basteln.
AES-NI habe ich aktiviert, konnte aber keinen nennenswerten Unterschied ausmachen. Die WAN Anbindung, über
die der IPsec Tunnel geht, gibt 200MBit/sec her (symmetrisch). Aber für die APU2 ist bei ca. 55-60MBit/sec "schulss".Ich habe auch schon mit allen möglichen Cipher Einstellungen getestet, hat aber kaum einen Einfluss auf
die Performance.Das einzige, was wirklich einen Einfluss hat, ist die Veränderung der MTU bzw. MSS Clamping. Ich erziele
hier den Maximaldurchsatz bei 1398 Byte MSS (VPN->IPSec-> Advanced Settings). Die MTU auf dem WAN
Interface ist 1500 Byte (kein PPPoE).Nach allem, was ich über die apu2 gelesen hatte, müsste die Kiste eigentlich in der Lage sein, mindestens
100-150MBit/sec über den Tunnel zu bringen… -
Hi,
ich habe heute nochmal intensiv mit der apu2 getestet was den IP Durchsatz zwischen LAN <-> und WAN Interface angeht:
- iperf zwischen LAN und WAN (ohne IPsec, OpenVPN. Fiter/NAT abgeschaltet): ca 830MBit/sec
- iperf zwischen LAN und WAN mit aktivierten IPSec Tunnel (ohne, dass über den Tunnel Daten gehen): ca 450 MBit/sec
- iperf zwischen LAN und WAN mit aktivierten IPSec und aktvierter Firewall+NAT: ca. 350 MBit/sec
Bemerkenswert finde ich, dass das reine Vorhandensein eines IPSec Tunnels, die Datenrate halbiert.
Da mich aber eigentlich die Performance über IPsec interessiert und ich mich mit ca. 60MBit/sec nicht zufrieden geben wollten, habe
ich testweise den IPSec Tunnel abgeschaltet und einen GRE Tunnel eingerichtet. Darüber erreiche ich ca. 85-90 MBit/sec. Das
ist fast das erreichbare Maximum von 100 MBit/sec.Als nächstes habe ich einen OpenVPN Peer-to-Peer Tunnel gebaut, und darüber geroutet…. Da war ich dann erstmal wieder
bei ca. 60MBit/sec :-(Bei meinen vielfältigen Tests habe ich dann aber bemerkt, dass das aesni.ko Kernel Module für OpenVPN offenbar gar nicht
so gut ist. Daher habe ich das mal deaktiviert (SystemAdvancedMiscellaneous -> Cryptographic Hardware=None). Man muss
aber unbedingt sicherstellen, dass das Modul nicht geladen ist (kldstat darf aesni.ko nicht anzeigen, ggf mit kldunload aesni
entfernen -> das wiederum geht nur, wenn das Modul gerade nicht genutzt wird, also ggf. openvpn/ipsec tunnel stoppen/beenden).
Darüber hinaus ist es aber wichtig, dass in der OpenVPN Konfiguration "cryptodev" benutzt wird (also in der OpenVPN Konfiguration
als "Hardware Crypto" die "BSD cryptodev engine" auswählen.Dann läuft alles in Software aber offenbar durch ein effizientes Interface. Ich habe als ciper AES-128-CBC ausgewählt und mit diversen
digests getestet. Hier erreiche ich dann einen Durchsatz von ca. 80MBit/sec, wobei der openvpn Prozess bei ca. 70-80% CPU
liegt...Mehr kriege ich verschlüsselt über eine apu2 nicht vermittelt. Falls jemand bessere Werte erzielt, wäre ich für einen Hinweis
dankbar - vor allem im Bezug auf ipsec da ich hier nur magere Übertragungsraten erzielt habe.... -
Hi alle,
also gut, nach weiteren, gefühlten 1000 Tests mit pfsense 2.3.4 nehme ich alles zurück und behaupte das Gegenteil :-)
Tatsächlich kann man mit der apu2 durchaus 100MBit/sec IPSec Performance schaffen. Ich bin in meinen
ersten Tests schlichtweg an der ungeeigneten Kombination von Ciphern und Hashes gescheitert.Mein Setup:
- SystemAdvancedMiscellaneous -> Cryptographic Hardware = AES-NI CPU-based Acceleration
(auf der shell mit "kldstat" prüfen, dass das Modul aesni.ko auch wirklich geladen ist BEVOR ein IPSec Tunnel aufgebaut ist) - IPSec Phase 1: IKEv2, Encryption: AES256-GCM mit 128bit Blocklänge, Hash: AES-XCBC, DH-Group: 14
- IPSec Phase 2: Encryption: AES256-GCM 128bit Blocklänge, Hash: AES-XCBC, PFS group 14
Ich habe mich auf beiden Seiten des Tunnels auf diese Parameter festgelegt und keine anderen Ciphers/Hashes
ausgewählt/zugelassen. Insbesondere andere Hashes (MD5,SHA1,SHA256) sind echte "Spielverderber".Mit diesen Einstellungen erreiche ich 100MBit/sec durch den IPSec Tunnel. Die CPU der apu2 ist dabei
auch nur wenig ausgelastet - offenbar passiert dann die Ver-/Entschlüsselung in Hardware. - SystemAdvancedMiscellaneous -> Cryptographic Hardware = AES-NI CPU-based Acceleration
-
perfekt, danke für deine Geduld und Rückmeldung…
Grüße M.
-
ich habe mir eine nagelneue apu2c4 zugelegt, vor allem um damit IPSec zu tunneln. Das setup war soweit auch kein Problem. Aber
ich die Performance ist etwas enttäuschend, daher habe ich angefangen etwas rumzutesten.Welche Performance hast Du denn erwartet?
Wie schnell ist denn Dein Internetzugang genau?
Was sind denn alles für Pakete installiert worden?Da ist pfsense 2.3.4 drauf und wenn ich mit iperf am LAN Interface teste (vom PC zur PFS), erreiche ich kaum mehr als 350MBit/sec - ohne dass hier auch nur ein Paket vermittelt oder gefiltert wird. Um Probleme am Switch auszuschließen, habe
ich einen Server direkt mit der apu2 verbunden -> gleiches Ergebnis.Iperf oder auch NetIO sollten immer als Client / Server von LAN zu WAN durch die pfSense laufen, und dort dann einen VPN
Tunnel anzulegen bringt nicht sehr viel, nur echte richtige Daten und Zahlen sind nachher interessant! Was nützt es denn schon
zu Hause im "Labor" oder bei dem Testaufbau xyz MBit/s via IPSec zu bekommen und dann im richtigen Einsatz kommt das
alles gar nicht so hin wie man es getestet hat! Nichts für ungut und nicht gelästert, aber für den reinen Routing-Durchsatz ist
so ein test alle male richtig gut, nur hinsichtlich des VPNs sollte man immer einen richtige VPN Gegenstellen haben, wie z.B.
einen Bekannten oder Freund und dann kann man einmal darüber einen test machen und etwas kopieren oder downloaden.Diese 350MBit erreiche ich auch nur, wenn ich IPSec und die Filterregeln ausschalte (SystemAdvancedFirewall & NAT ->
Disable all packet filtering.)Naja das ist dann wohl eher ein normales Routing ohne NAT. Also wie LAN port zu LAN port, oder?
Wenn ich IPSec einschalte, komme ich noch auf ca 300MBit/sec, mit aktivierter FW gerade mal auf 220 MBit/sec. Auch hier
ist noch kein Byte geroutet/vermittelt worden…Also 220 Mbit/s IPSec Performance kann sich doch aber sehen lassen, oder?
Nun habe ich schon diverse andere Berichte über apu2 HW gelesen. Da gibt es Bereichte über Routingperformance im
Bereich von 500MBit/sec aufwärts.Unter Linux mag das alles etwas anders sein als unter pfSense was ja auch FreeBSD basiert, und Linux mag auch etwas
Hardware naher programmiert worden zu sein bis hin zu der etwas besseren Treiberunterstützung, man sollte das nicht
alles auf "ein Gramm" abwiegen. GBit/s Durchsatz am WAN soll auch mit > 2.0GHz laufen und nicht mit 1.2GHz wie sie
die APU2C4 Geräte bieten!Bei der IPSec Performance (um die es mir eigentlich geht) liege ich im Bereich von 50-60MBit/sec. Ich muss zugeben, dass
ich da mehr erwartet hätte.Wie Du selber ja schon heraus gefunden hast profittiert eigentlich nur der AES-GCM Algorithmus von AES-NI und mit einer
SG-4860 sind da fast ~500 MBit/s per IPSec drinnen! Das sollte schon gehen oder?Die Frage ist: was mache ich falsch?
Was habe ich schon probiert:
- HW Offloading on/off
- enable/disable TSO und LRO
- diverse Tunables
Manche Tuning Tipps reichen schon alleine und so manches Tuning ergänzt sich mit dem schon vorhandenen, und bei
wiederum anderen Punkten muss man da mehrfach ran und es eben etwas feiner tunen und einstellen.Bei einer 1 GBit/s Netzwerkkarte ist z.B. eine mbuf size von 1000000 gut und bei einigen 10 GBit/s Karten wird es mit
65000 erst so richtig etwas. Also man kann nicht unbedingt sagen man stellt etwas ein und es bringt etwas oder nicht
sondern man muss schon hier und dort ein wenig einstellen und diese Einstellungen dann mit anderen Sachen kombinieren. -
Da der OT das Problem für sich ja schon erledigt hatte, ist das aber ein wenig obsolete, oder?
-
Hallo Unterwasser,
darf ich mal diesen älteren Post vorkramen …
Erstmal danke für die Untersuchung!
Mein Setup:
- SystemAdvancedMiscellaneous -> Cryptographic Hardware = AES-NI CPU-based Acceleration
(auf der shell mit "kldstat" prüfen, dass das Modul aesni.ko auch wirklich geladen ist BEVOR ein IPSec Tunnel aufgebaut ist) - IPSec Phase 1: IKEv2, Encryption: AES256-GCM mit 128bit Blocklänge, Hash: AES-XCBC, DH-Group: 14
- IPSec Phase 2: Encryption: AES256-GCM 128bit Blocklänge, Hash: AES-XCBC, PFS group 14
Ich habe mich auf beiden Seiten des Tunnels auf diese Parameter festgelegt […]
Frage: Was betriebst Du denn auf der anderen Seite des Tunnels, auch eine pfSense oder ein VPN-Client, ggf. welchen?
-flo-
- SystemAdvancedMiscellaneous -> Cryptographic Hardware = AES-NI CPU-based Acceleration
-
Frage: Was betriebst Du denn auf der anderen Seite des Tunnels, auch eine pfSense oder ein VPN-Client, ggf. welchen?
-flo-
Hallo,
auf der anderen Seite läuft auch eine pfSense (gleiche Version) aber als VM (unter KVM). Die HW die die
VM treibt ist so dick, dass es da keine Performance Probleme gibt…