Maximum Segment Size
Die MSS gibt an, wie viele Nutzdaten ein TCP-Segment höchstens tragen darf. Sie ist der Hebel, mit dem sich Probleme durch zu große Pakete in der Praxis lösen lassen.
Definition MSS
Die Maximum Segment Size bezeichnet die größte Menge an Nutzdaten in einem einzelnen TCP-Segment, ohne die Köpfe von IP und TCP.
Sie leitet sich aus der MTU der Schnittstelle ab. Bei einer MTU von 1500 Byte bleiben nach Abzug von 20 Byte IP-Kopf und 20 Byte TCP-Kopf 1460 Byte übrig. Unter IPv6 sind es 1440 Byte, weil dessen Kopf größer ist.
Die MSS ist kein ausgehandelter gemeinsamer Wert, sondern eine Mitteilung in eine Richtung. Jede Seite teilt beim Verbindungsaufbau mit, wie groß die Segmente höchstens sein dürfen, die sie empfangen will. Beide Werte können unterschiedlich sein.
Wo sie steht
Die MSS wird als Option im ersten Paket des Verbindungsaufbaus übertragen. Wird sie nicht angegeben, gilt ein Vorgabewert von 536 Byte, der auf jeder Strecke funktioniert, aber schlechte Leistung bringt.
Weil die Angabe nur beim Aufbau erfolgt, lässt sie sich während einer laufenden Verbindung nicht mehr ändern.
MSS Clamping
Hier liegt der praktische Nutzen. Ein Router im Weg kann die Angabe im Vorbeiflug herabsetzen, wenn er weiß, dass die Strecke dahinter weniger hergibt.
Beide Endpunkte einigen sich dann von vornherein auf kleinere Segmente. Es entstehen gar keine Pakete, die unterwegs zu groß wären. Das Verfahren heißt MSS Clamping oder TCP MSS Adjustment.
Das ist deshalb wichtig, weil die vorgesehene Ermittlung der zulässigen Paketgröße in der Praxis oft nicht funktioniert. Sie setzt voraus, dass bestimmte ICMP-Nachrichten durchkommen, und die werden häufig gefiltert. Das Ergebnis ist eine Verbindung, die zustande kommt, bei der aber größere Übertragungen hängen bleiben.
Jeder DSL-Router macht MSS Clamping. Dass PPPoE mit 1492 Byte im Alltag unauffällig läuft, liegt in aller Regel daran und nicht daran, dass die Ermittlung funktioniert.
Die Einschränkung
MSS ist eine TCP-Option. UDP kennt nichts Vergleichbares.
Für UDP-basierte Protokolle wirkt das Verfahren deshalb nicht, und die MTU der jeweiligen Schnittstelle muss korrekt gesetzt sein. Betroffen sind unter anderem WireGuard, QUIC und viele VPN-Lösungen.
Daraus ergibt sich ein Fehlerbild, das ohne diesen Zusammenhang schwer zu deuten ist: Webseiten laden, eine Terminalsitzung funktioniert, aber eine Übertragung über UDP bleibt stehen oder eine Videoverbindung bricht ab. TCP wird durch das Clamping gerettet, UDP nicht.
Typische Werte
| Strecke | MTU | MSS unter IPv4 |
|---|---|---|
| Ethernet | 1500 | 1460 |
| PPPoE | 1492 | 1452 |
| DS-Lite | 1460 | 1420 |
| WireGuard über IPv4 | 1420 | 1380 |
Die Werte gelten für die jeweils genannte Strecke allein. Liegen mehrere hintereinander, zählt die kleinste.
Wo eingestellt wird
Bei DSL- und Kabelroutern ist das Clamping meist fest eingebaut und nicht sichtbar. Bei Firewalls wie OPNsense oder pfSense lässt sich der Wert je Schnittstelle setzen. Unter Linux erfolgt es über eine Regel in der Paketfilterung, entweder mit festem Wert oder abgeleitet aus der ermittelten Pfadgröße.
Abgrenzung
Die MTU bezeichnet die größte Paketgröße einschließlich aller Köpfe. Die MSS bezieht sich nur auf die Nutzdaten innerhalb von TCP.
Jumbo Frames sind Rahmen oberhalb der üblichen 1500 Byte, verwendet in lokalen Netzen mit einheitlicher Konfiguration.