MTU (IP Maximum Transmission Unit) und RWIN (TCP Receive Window Size)

Bei der Übermittlung von Datenpaketen spielen zwei Größen eine wichtige Rolle: MTU und Rwin. Was genau sich hinter diesen Parametern verbirgt, soll im Folgenden erläutert werden.

Was ist MTU (IP Maximum Transmission Unit)?

Die MTU einer Netzwerkschnittstelle gibt an, wie groß das größte Paket, das noch ohne Fragmentierung übertragen werden kann, sein darf. Fragmentierung bedeutet, ein Datenpaket wird in mehrere, kleinere Datenpakete zerteilt und am Zielort wieder zusammengesetzt, da das Medium die Übertragung des ursprünglichen Pakets in seiner Größe nicht erlaubt oder technisch dies nicht möglich ist. Typische MTU-Werte sind

1500 Bytes für Ethernet
1492 Bytes für PPPoE (DSL)

Diese Orientierungswerte können sich jedoch als zu hoch herausstellen, wenn z.B. VPN-Protokolle über eine Leitung genutzt werden, die weitere Encapsulation-Header benötigen.

Wählt man eine zu kleine MTU, so beeinflusst dies die Effizienz der Kommunikation, d.h. Daten werden mehr fragmentiert als dies eigentlich erforderlich wäre. Funktional ist das Netzwerk jedoch nutzbar.

Wählt man eine zu große MTU, so können Pakete größer als das tatsächliche Maximum nicht mehr korrekt übertragen werden und gehen verloren. Dies drückt sich z.B. darin aus, daß man kleine Webseiten und Datenportionen abrufen kann, nicht jedoch große („Verbindung hängt“). Typische Effekte in Verbindung mit VPN sind, daß man sich zwar per Telnet auf einem entfernten Rechner problemlos einloggen und etwas arbeiten kann, jedoch bei Ausgabe größerer Listings von Verzeichnissen oder Dateien plötzlich die Verbindung einfriert.

Was ist Rwin (Receive Window)?

Mit der MTU steht der Rwin-Parameter in Verbindung. Im Gegensatz zu falschen Werten für die MTU führen schlechte Werte von Rwin nur zu schlechter Performance. Rwin bestimmt, die maximale Datenmenge, die ein System über eine TCP-Verbindung schickt, ohne daß eine Empfangsbestätigung von der Gegenstelle erwartet wird. Steht Rwin auf 64 kB, so kann beispielsweise ein Webserver eine Seite mit 64 kB in einem Stück ausliefern, ohne auf Bestätigungen der einzelnen Pakete (maximal in Portionen der MTU entsprechend) zu warten. Dies erhöht die Performance in Netzwerken, in denen Bestätigungen (ACK) lange unterwegs sind.

Beispiel

Es ist eine Datei von 64 kB über ein Netzwerk mit Bandbreite von 1024 kb/s und einer MTU von 1024 Bytes zu übertragen. Beträgt die Roundtrip-Zeit im Netzwerk für Pakete von MTU-Größe 10 ms und für kleine ACK-Pakete nur 5 ms, so können Bestätigungen innerhalb von ca. 15 ms für das erste Datenpaket eintreffen.

Ist das Receive Window auf 1024 gesetzt (MTU), so werden die Pakete von MTU-Größe einzeln versandt, d.h. Paket senden – Bestätigung erwarten – nächstes Paket senden – und so fort. Der gesamte Prozess dauert damit ca. 64 * (10 ms + 5 ms) = 960 ms, d.h. fast eine Sekunde.

Ist Rwin auf 64 kB gesetzt (64-fache MTU), so werden alle Pakete nacheinander übertragen, ohne daß Bestätigungen abgewartet werden. Dies dauert 500 ms (64 kB = 512 kbit und diese benötigen bei 1024 kb/s ca. 500 ms für eine Übertragung). Bestätigungen treffen laufend ein, die letzte 10 ms nach der letzten Versendung. Damit dauert die gesamte Übertragung nur 510 ms.

Ein korrekter Rwin-Wert ist daher für die Performance eines Netzwerks, insbesondere für die Übertragung größerer Dateien, bedeutend.

Die Bestätigungen für TCP-Übertragungen können außerdem durch Einschalten von selektiven Acknowledgements optimiert werden (SACK).

Weiterführende Informationen