TCPChimney und Receive Side Scaling (RSS) und Network Direct Memory Access

Give Microsoft’s Scalable Networking Pack Another Look
http://www.windowsitpro.com/article/networking/give-microsofts-scalable-networking-pack-140350
Sehr informativer Artikel über die Funktionen in Windows

Time to revisit recommendations around Windows networking enhancements usually called Microsoft Scalable Networking Pack
http://blogs.technet.com/b/exchange/archive/2011/11/14/time-to-revisit-recommendations-around-windows-networking-enhancements-usually-called-microsoft-scalable-networking-pack.aspx

Netzwerkkarten werden immer schnelle (Aktuell 100 Gigabit) und die Server haben immer mehr CPUs. Um mit der Geschwindigkeit weiter Schritt halten zu können, ist eine sequentielle Verarbeitung der Netzwerkpakete nicht länger angebracht. Durch die Weitverkehrsverbindungen werden wechselnde Laufzeiten von Paketen und Größen eine weitere Herausforderung an die TCP/IP-Stacks.

Schon viele Jahre haben die Netzwerkkarten schon die Aufgabe übernommen, die CRC-Prüfsumme für Ethernet-Pakete zu errechnen und zu prüfen. Diese stupide Tätigkeit muss die Host-CPU damit schon nicht mehr tun, das diese beim Versand entlastet und korrupt empfangene Pakete gar nicht erst über den PCI-Bus übertragen werden müssen. Hier am Beispiel einer Gigabit Karte:

Aber das ist erst der Anfang. Netzwerkkarten sind mittlerweile ebenfalls kleine Computer mit Firmware, Speicher und können mittlerweile auch komplexere Aufgaben übernehmen.

Wenn die Netzwerkkarte quasi auch die TCP oder UDP-Prüfsummen erstellt und schreibt, dann ist klar, dass die Host-CPU letztlich nur noch sagen muss, welchen Datenstrom wohin senden will und die Karte übernimmt den Verbindungsaufbau und die Flusssteuerung. Das ganze wurde schon länger in der NDIS-Spezifikation eingebaut

Sehr viele Hersteller von Netzwerktreibern haben diese Funktion natürlich auch in ihren Treibern aktiviert. Schließlich muss der Kunde ja auch wissen, warum es "Server-Karten" und "Consumer-Karten" gibt. Oft haben die "besseren" Karten eben auch diese Zusatzfunktionen, größere Puffer, während 10 Euro Gigabit-Karten meist auch nur für den Heimbereich sinnvoll einzusetzen sind.

Windows 2003 SP2

.. aber dann kam das Windows 2003 Service Pack 2, welches diese Funktionen erstmals per "Default" auch eingeschaltet hat. Vorher konnten die Netzwerkkartentreiber ja schön behaupten, sie könnten alles. Es ist ja niemandem aufgefallen, weil Windows die bereit gestellten Funktionen einfach noch nicht genutzt hatte. Aber nun ist alles anders. Windows 2003 SP2 hat als Standard nun die Nutzung dieser Optionen aktiviert. Und schon liefen einige Produkte und Services nicht mehr, wie gewohnt.

Schuld war daran meistens der Netzwerkkartentreiber, welche die von der Karte bereit gestellten Funktionen nicht korrekt umgesetzt hat. So konnte es passieren, dass beim TCP Offloading vergessen wurde, alte Sessions abzubauen und damit nach einigen Stunden, Tagen oder gar Wochen (je nach Last) der Server keine neuen Verbindungen mehr angenommen hat.

Eine ganze Menge von KB-Artikeln dokumentiert dieses Desaster.

Meist half einfach ein Update des Netzwerkkartentreibers, um dem Spuk ein Ende zu machen. Wer dies nicht so schnell durchführen konnte oder wollte, kann mit wenigen Befehlen die "Vor SP2-Einstellung wieder aktivieren

Sie können TCPChimney direkt per Kommandozeile abschalten.

Rem Windows 2003
Netsh int ip set chimney DISABLED

Rem Windows 2008
netsh int tcp set global chimney=disabled

Oder um alles abzuschalten

Netsh int tcp set global 
   rss=disabled 
   chimney=disabled 
   autotuninglevel=highlyrestricted 
   congestionprovider=none 
   netdma=disabled dca=disabled 
   ecncapability=disabled 
   timestamps=enabled

Die folgenden Registrierungsschlüssel wirken erst nach einen Reboot.

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]
"EnableTCPA"=dword:00000000
"EnableRSS"=dword:00000000
"EnableTCPChimney"=dword:00000000

Wenn Sie TCPChimeny, RSS und andere Funktionen abschalten können Sie entweder folgende REG-Datei importieren oder die ADM-Datei in einer Gruppenrichtlinien einbinden:
win2003sp2tcp.adm
win2003sp2tcp.reg
Bitte die Endung .TXT nach dem Download entfernen.

Ein Windows Update im März 2008 schaltet diese Funktion auch ab
948496 An update to turn off default SNP features is available for Windows Server 2003-based and Small Business Server 2003-based computers
950224 A Scalable Networking Pack (SNP) hotfix rollup package is available for Windows Server 2003

Es reicht übrigens wohl auch aus, auf der Netzwerkkarte z.B. das CRC Offloading abzuschalten. Da damit Windows für diese Funktion zuständig ist, werden auch alle anderen Funktionen nicht mehr abgeladen.

Abschalten oder Einschalten ?

Ehe Sie nun vorschnell all diese Funktionen abschalten, sollten Sie kurz Innehalten. Microsoft hat sich natürlich etwas dabei gedacht, diese Funktion zu entwickeln und auch zu aktivieren. Wer konnte denn damit rechnen, dass viele Kunden ihre Gigabit-Treiber jahrelang nicht aktualisiert haben. Aktuelle Server mit mehreren CPUs können die Leistung nur bringen, wenn die Netzwerkkarte nicht mehr nur über die CPU0 geht, sondern Pakete und Arbeit verteilt werden. Daher sind die neuen Funktion durchaus sinnvoll und ratsam einzuschalten.

In einer Mail vom Februar 2011 hat Microsoft noch mal ganz deutlich gemacht.

Wenn es dann immer noch nicht funktionieren sollte, dann sollten Sie einen Support-Call bei Microsoft aufmachen. Diese neuen Funktionen sind für die Performance wichtig und es sollten allen Parteien etwas daran liegen, das Problem zu finden und zu beheben.

Hier der Auszug einer Mail zum diesem Thema:

Some Basics First …
The main purpose of RSS is spreading the processing of network interrupts across multiple processors instead of 1 CPU. This is advantageous in a variety of workloads & can be tweaked more in W2008 R2 than W2008, see the doc referenced before. 1Gb network cards can absolutely see a benefit with RSS, we’ve seen this inside Microsoft.

The main purpose of TCP Chimney is offloading all TCP/IP connection processing to the network card, when possible. It is most useful in workloads with consistent connections transmitting large amounts of data, not so much for client/server chatty applications (email, etc.). It does provide more benefit with 10Gb.

Chimney is incompatible with some features in Windows (firewall,  etc.), & if they are enabled Chimney will not offload any connection. In W2008 R2, the Windows Firewall is compatible with Chimney, which was a change from previous OS.
TCP Chimney Offload is not the same thing as Checksum Offload, Large Send Offload, etc. Those Offloads have been around for since W2003 & are generally problem free.

RSS & Chimney both require the above basic checksum offloads to function, so disabling any of them (in NIC properties) will automatically keep RSS and Chimney from being used.

Details
W2003 SP2: RSS, Chimney & NetDMA are known to be problematic. Customers should disable these manually or use KB:948496. If you really need the features, install SNP roll-up (KB:912222) for W2003 and re-enable features.
W2008 RTM: RSS is on by default but Chimney is off. RSS had some issues that customers hit after installing W2008, most were resolved in SP2, & remaining were solved in KB:979614 (which brings RSS/Chimney to W2008 R2 level).
W2008 R2: RSS is on by default & Chimney is in ‘Automatic’ mode, which means the TCP connection being offloaded has to be 10Gb speed, less than 20ms latency between the 2 end points, & transmitted at least 130k. See page 6-7 of ‘W2008 R2 Networking Deployment Guide: Deploying High-Speed Networking Features
Win2008 R2 SP1 does not contain any fixes related to Chimney, and only has 1 fix for RSS that fixes a bug where RSS only uses 1 CPU when you have over 32 processors, KB:977977

Call to Action
- Standard practice of disabling these features is alarming!
- Disabling these features hurts performance badly!
- If your customer is on W2008 & disabling RSS resolves issues for them, please get them on SP2 + KB979614
- Upgrade NIC drivers, filter drivers (Antivirus, Firewall, NIC-teaming, etc.) & BIOS - applies also to W2008 R2
- If that still doesn’t solve their issue, engage & escalate so that we can find the root cause of their problem & fix it! J
- If you know about Microsoft or third party documentation which provides incorrect guidance in this regard, please let us know.

Auch der folgende Artikel macht dies noch mal deutlich

Give Microsoft’s Scalable Networking Pack Another Look
http://www.windowsitpro.com/article/networking/give-microsofts-scalable-networking-pack-140350
Sehr informativer Artikel über die Funktionen in Windows

Weitere Links

Tags:TCP Chimney , Offloading, RSS