TCP/IP-Tuning

Seite 5: Stellschrauben

Inhaltsverzeichnis

Es gibt einen ganzen Haufen von Parametern, die das Internet-Verhalten eines Windows-XP-Rechners beeinflussen. Windows bietet dafür jedoch kein grafisches User-Interface, sondern lediglich Einstellungen in der Registry. Eine vollständige Liste dieser Parameter hat Microsoft auf den Support-Seiten veröffentlicht. Die Dokumentation von Microsoft ist in diesem Punkt aber oft dünn, stellenweise auch irreführend, sodass wir die wichtigsten Parameter en détail erklären.

Fast alle sind im Bereich HKLM\­SYSTEM\­CurrentControlSet\­Services\­Tcpip\Parameters einsortiert. Die Parameter sind im DWORD-Format anzugeben und Änderungen werden erst nach einem Neustart aktiv. Wenn die hier genannten Schlüssel nicht existieren, verwendet Windows Standardwerte.

Der vielleicht wichtigste TCP-Parameter, die Window Size, ist für Breitbandanschlüsse meist zu niedrig. In der Registry ist der Schlüssel aber häufig gar nicht eingetragen und Windows verwendet stillschweigend zu niedrige Werte.

TcpWindowSize, im Unix-Bereich auch RWIN genannt, gibt an, wie viele Byte der Sender ohne Empfangsbestätigung schicken darf. Microsoft schreibt dazu, dass dieser Wert unter Windows XP per Faustformel eingestellt wird:

12 × (MTU des Adapters - 40)

Das genügt für Modem- und ISDN-Verbindungen, aber für DSL-Anschlüsse ist der Wert zu niedrig. In der Praxis scheint sich Microsoft nicht immer an die eigene Dokumentation zu halten. Beispielsweise fanden wir bei Stichproben DSL- und Kabelmodem-Treiber, deren Window-Size auf 65.535 Byte eingestellt war. Das irritiert Anwender, die noch nicht so weit mit der Materie befasst sind. Ob aber der eingestellte Wert für einen bestimmten Anschluss gut genug ist, lässt sich leicht mit dieser Formel prüfen:

Window Size = Downstream-Rate in Byte pro Sekunde/3

So sind schnelle Downloads bei Servern möglich, deren Antworten bis zu 333 ms zum Eintreffen brauchen (Roundtrip Time, lässt sich zum Beispiel mit Ping ermitteln). Sollte der Anschluss häufig durch Uploads ausgelastet sein, muss man noch höhere Werte einstellen, um die Empfangsbandbreite auszuschöpfen.

Für VoIP-Anwendungen sind deutlich geringere Werte sinnvoll:

Window Size = Downstream-Rate in Byte pro Sekunde/10

Das drückt natürlich die Download-Rate, sodass man diesen Wert in der Praxis nur ungern einstellen möchte, zumal für jede Änderung ein Windows-Neustart erforderlich ist. Daher greift man lieber zu einem Traffic Shaper, der die richtige Einstellung während des Betriebs automatisch vornimmt.

EnablePMTUDiscovery aktiviert beziehungsweise deaktiviert die Path MTU Discovery (Wert 1 respektive 0). Diesen Eintrag sollte man nicht ändern, also die Path MTU Discovery aktiviert lassen.

EnablePMTUBHDetect, Black Hole Detection, ist standardmäßig deaktiviert (Wert 0), weil sonst Verzögerungen entstehen können. Diese Funktion ist nur dann nützlich, wenn die Path MTU Discovery wegen eines Black Hole fehlschlägt.

Wenn ein Router bei der MTU-Analyse ein zu großes Paket wegen des Don't-Fragment-Bits nicht zerteilt, sondern verwirft, schickt er dem Sender eine Fehlermeldung, sodass Letzterer die MTU senken kann. Geht die Fehlermeldung verloren, scheitert dieser Mechanismus, und dann spricht man von einem Black Hole. EnablePMTUBHDetect kann mit solchen Situationen umgehen, senkt aber erfahrungsgemäß den Durchsatz.

DefaultTTL: Time To Live, gibt an, wie viele Router im Netz ein Datenpaket maximal bis zum Ziel weiterreichen dürfen (Hops). Wird die maximale Hop-Anzahl überschritten, müssen die Router das Paket verwerfen und den Sender benachrichtigen. Dieser Parameter hat entgegen anderslautender Meinungen keinerlei Einfluss auf die Übertragungsgeschwindigkeit – man bekommt allenfalls früher eine Nachricht, dass der Ziel-Server nicht erreicht wurde, schränkt aber die Wahrscheinlichkeit ein, dass ein entfernter Server erreicht wird, der eben jenseits der TTL liegt. Der Wert sollte nicht kleiner als 64 gesetzt werden, da sonst Gefahr besteht, dass die Pakete ihr Ziel nicht erreichen. Die Standardeinstellung ist 128.

SackOpts schaltet Selective Acknowledgments ein (SACKs). Der Empfänger kann damit einzelne Pakete quittieren, auch wenn er sie nicht in der Reihenfolge empfängt, in der sie der Sender geschickt hat. Diese Option ist standardmäßig aktiviert (1=SACK) und sollte es auch bleiben, da sie die Verzögerungen bei Paketverlust auf ein Minimum senkt, ohne nennenswert Bandbreite zu kosten.

Tcp1323Opts schaltet Window Scaling und Timestamps ein respektive aus. 0 deaktiviert Window Scaling und Timestamps, 1 schaltet nur Window Scaling ein, 2 schaltet nur Timestamps ein, 3 schaltet beides ein (Standard).

Timestamps ermöglichen es, den TCP Retransmission Timeout genauer zu berechnen und anhand dessen entscheidet der Sender, wann er im Fehlerfalle ein Datenpaket neu schickt. Das ist wichtig, wenn man eine sehr große TcpWindowSize benutzt.

MTU, Maximum Transmission Unit, maximale Größe eines IP-Pakets mitsamt IP-Header, TCP-Header und Nutzdaten. –1 ist die Voreinstellung und bedeutet, dass der Stack die maximale Paketgröße automatisch mittels Path MTU Discovery ermittelt.

Aus der MTU berechnet man den TCP-Parameter MSS (Maximum Segment Size, die maximale Menge an Nutzdaten pro Paket):

MSS = MTU - 20 Byte TCP-Header - 20 Byte IP-Header

Die MTU findet sich als einziger TCP-Parameter im Subkey Interfaces unter der GUID des Adapters. Ist kein MTU-Wert vorhanden, wird Path MTU Discovery verwendet, um den passenden Wert zu ermitteln. Falls also ein Wert eingetragen ist, empfiehlt es sich in der Regel, ihn zu löschen.

Die GUID des DFÜ-Adapters ist gut versteckt: es ist die letzte Zeile aus dem Eintrag unter HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Adapters \NdisWanIp\IpConfig.

Anders als manche Surfer meinen, muss die Window Size nicht unbedingt ein ganzzahliges Vielfaches der MSS sein – das passt zwar theoretisch prima in das TCP-Schema, aber sobald ein Router auf dem Weg per Path MTU Detection eine kleinere MSS erzwingt, ist die Einstellung ohnehin Makulatur und daher in der Praxis nicht wichtig.