WinHEC: Mehr Dampf fürs Netzwerk

NDIS 6.0 beschleunigt TCP-Verbindungen mit TCP Chimney Offload und RSS -- wenn die Hardware mitspielt.

In Pocket speichern vorlesen Druckansicht 74 Kommentare lesen
Lesezeit: 2 Min.

Mit NDIS 6.0 als Bestandteil seines Scalable Networking will Microsoft in Longhorn Server und Vista dem LAN Beine machen: Die neue Version der vereinheitlichten Schnittstelle zwischen Betriebssystem und LAN-Kartentreiber (Network Device Interface Specification) bringt als Kerntechniken TCP Chimney Offload und RSS (Receive-Side Scaling) mit.

Beim Offloading ist derzeit TCP Checksum Offload gebräuchlich: Die Netzwerkkarte erledigt die TCP-Prüfsummenberechnung in Hardware und nimmt so dem Host-Prozessor Rechenarbeit ab. Das bereits auf der vorvorigen WinHEC vorgestellte und zeitweise umstrittene TCP Chimney Offload geht aber weiter: Künftige, intelligente Netzwerkkarten sollen das Transmission Control Protocol (TCP) zwischen Öffnen und Schließen der Verbindung so autonom wie möglich erledigen.

Davon profitieren insbesondere Server bei Bulk Transfers, also Massenübertragungen, etwa Backups oder Image-Kopien über die höheren Protokolle CIFS/SMB (Windows-Shares), HTTP und FTP. Deshalb wird TCP Chimney Offload zunächst wohl vor allem auf Server-Karten laufen. Schornsteinähnlich ist an der Technik das Modell, die Daten von "oben" – also höheren Protokollschichten – schlicht in den Stack zu stopfen, der dann sehen muss, wie er sie nach "unten" an die Ethernet-Ebene weiterreicht. Bei nicht chimney-fähigen Karten respektive ihren Treibern fällt die TCP-Bearbeitung wieder an die Host-CPU zurück.

Receive-Side Scaling macht NDIS 6.0 multiprozessorfähig. Es verteilt die Rechenlast des Netzwerk-Stacks auf verschiedene CPUs. Die älteren NDIS-Versionen binden die Bearbeitung eines empfangenen Netzwerk-Datenpakets via Interrupt stets an einen bestimmten Prozessor(kern). Während der Bearbeitung sind weitere Interrupts gesperrt, sodass sich effektiv nur eine CPU um das Netzwerk kümmert. Mit NDIS 6.0 ändert sich das: Der Stack kann nun mehrere empfangene Pakete parallel auf verschiedenen Kernen verarbeiten. Dabei stellt RSS sicher, dass eine bestimmte TCP-Verbindung stets auf demselben Prozessor läuft, damit die CPUs nicht erst zeitraubend Zustandsdaten austauschen müssen (Cache Locality). Als Nebeneffekt wird dynamisches Load Balancing möglich: Wenn die Last auf einem Kern steigt, teilt NDIS 6.0 neue TCP-Verbindungen anders zu. (ea)