Gerald Vogt <
vo...@spamcop.net>:
> Wenn es aber durch die Firewall geht, sieht es aber ganz anders aus.
> Ein paar exemplarische Zahlen mit einem iperf TCP Stream von einem
> Server durch die Firewall zu einem anderen Server, alle Strecken 10
> GE, und sonst wenig Verkehr auf der Firewall:
>
> 1. Beide Server mit MTU 1500 und ohne jegliches Offloading: 2 Gbps.
> Das ist in Ordnung.
> 2. Sender mit Offloading, Empfänger ohne: 1 Gbps.
> 3. Beide mit Offloading: 80 Mbps (!)
Da wird wohl mehr als nur Checksumming im NIC gemcht. Welche TCP
Algorithmen unterstuetzen denn deine NICs bei Offloading?
> 4. Ohne Offloading, aber MTU 9000 auf beiden Seiten: 600 Mbps.
Welch Wunder. Der Bullshit der durch die Welt geistert, dass
Jumboframes eine Tolle Idee[tm] seien verdraengt auch regelmaessig
Sinn und klaren Verstand.
Hier limitiert wohl der naechste Hop der fragmentieren muss mit seiner
CPU-Leistung deinen Durchsatz auf diese 600Mbps. Wenn du die
CPU-Auslastung deiner router ueberwachst wird dir sicher auffallen, wo
gerade der Chip glueht.
> Diverse andere Kombinationen sind nicht berauschender. MTU 1500 und
> ohne Offloading gibt das beste Ergebnis durch die Firewall, allerdings
Die TCP Implementierung der beteiligten Betriebsysteme scheint wohl
noch am besten zu sein.
> auf Kosten des internen LAN Durchsatzes. Und wir können nicht alle
Ach. In Software TCP mit 10Gbps NICs zu machen ist auch keine
besonders gute Idee.
> Servern außerhalb vorschreiben, dass sie nur MTU 1500 und kein
> Offloading verwenden.
Ach.
> Vor allem die Nr. 3 ist ziemlich "schockierend". Bislang dachte ich
Nicht wirklich. Die NICs werden halt zwei unterschiedliche und denkbar
unguenstig zueinander arbeitende TCP Algorithmen und Parameter waehlen,
der vermutlich auch die TCP Stateengine der Juniper aus dem Tritt
bringt.
> immer, dass TCP sich eigentlich gut an die Verhältnisse auf der
> Strecke anpasst und so in allen Fällen den möglichen Maximaldurchsatz
> von 2 Gbps erreichen sollte.
TCP ist vorallem immer eines: wesentlich komplizierter als sich das der
Laie so vereinfacht vorstellt.
> Tatsächlich aber bremst die Firewall komplett aus. Ein Dump zeigt z.B.
> für Nr. 3 einen schönen Sägezahn: Der Durchsatz steigt erst sehr
> schnell an bis wohl der ASIC überlastet ist, und dann bricht es
> komplett ein auf 0, worauf es kurz darauf wieder von vorne losgeht.
Kann sein, dass beide Seiten klassisches NAGLE machen ohne fast
recovery.
> Das Linux auf den Servern scheint es ja selbst ganz ordentlich
> hinzukriegen, da in Fall 1 der maximale Datendurchsatz von 2 Gbps
> durch die Firewall erreicht wird.
Linux kann unterschiedliche Algorithmen (wenn der Kernel entsprechend
uebersetzt wurde), du kannst diese mal ausprobieren um die beste
Kombination zu finden.
Das hilft dir bezueglich Offloading halt nichts, wenn die NIC dir da
zu viel Arbeit abnimmt.
> Mir ist nicht ganz klar, welche Komponente (vom Linux zur Karte,
> dämliches Offloading auf der Karte, Firewall) hier letztendlich den
> Durchsatz so einbrechen lässt, und vor allem, ob und wie man das
> Problem mit dieser Firewall lösen könnte.
>
> Oder anders gefragt: muss ich zwangsläufig mit solchen Probleme
> rechnen, wenn der ASIC überlastet wird?
Ja.
Wie hoch ist denn die Latenz (RTT)? Und wie gross ist das
ausgehandelte TCP-Fenster? (2^window-scaling * windowsize)
Juergen
--
Juergen P. Meier - "This World is about to be Destroyed!"
end
If you think technology can solve your problems you don't understand
technology and you don't understand your problems. (Bruce Schneier)