Paketgrößen, MTU und MSS
Um Daten zwischen zwei verschiedenen Systemen zu übermitteln, werden Pakete verwendet. Die maximale Paketgröße, die über ein Netzwerk übertragen werden kann (Maximum Transmission Unit — MTU) hängt von den zugrunde liegenden Netzwerkkapazitäten ab.
Wenn ein Paket über unser Hetzner Netzwerk übertragen wird, erhält dieses von uns zusätzliche Header, um es von anderen Netzwerken unterscheiden zu können.
Dadurch ergeben sich folgende Limits für Pakete, die über unsere privaten Netzwerke übertragen werden:
Header
Header
Wenn ein Paket über mehrere verschiedene Schnittstellen übermittelt wird und der MTU-Wert des Pakets weniger oder gleich dem Limit ist, wird es weitergeleitet. Wenn der MTU-Wert des Paket größer ist als das Limit erlaubt, wird das System versuchen IP-Fragmentierung durchzuführen. Wenn das scheitert, wird das Paket verworfen.
Die Paketkonfiguration für eine öffentliche Schnittstelle, die Schnittstelle der Docker-Bridge oder andere Schnittstellen, sieht meist so aus:
Beachten Sie die unterschiedlichen Werte für MSS und MTU im Vergleich zum privaten Netzwerk.
Path MTU Discovery (PMTUD)
Path MTU Discovery ist ein Systemmechanismus, der dabei hilft die maximale Paketgröße zu bestimmen, die ohne Fragmentierung an ein bestimmtes Ziel übermittelt werden kann.
Wenn ein Paket verworfen wird, weil es zu groß ist und eine ICMP-Fehlermeldung mit der korrekten MTU auslöst, lernt PMTUD die MTU für dieses Ziel und verwendet diese für künftige Pakete. Wenn das nächste Paket weiterhin zu groß ist, da eine andere Zwischenstelle im Pfad eine noch kleinerer MTU besitzt, wird das Paket erneut verworfen und löst eine weitere ICMP-Meldung aus. PMTUD wiederholt diesen Prozess, bis es die kleinste erforderliche MTU für den gesamten Pfad zwischen der Quelle und dem Ziel findet.
Wenn das System keine ICMP-Meldung empfängt oder die Meldung keine MTU enthält, schlägt PMTUD fehl und große Pakete werden weiterhin verworfen. Das kann beispielsweise passieren, wenn das lokale System oder ein Router innerhalb des Paketpfads ICMP-Paket verwirft.
MSS Clamping
Zum Initialisieren der TCP-Verbindung, übermittelt der Client (Sender) ein TCP-SYN-Paket an den Server (Empfänger), das seinen lokalen Wert für MSS enthält. Der Server kennt nun seinen eigenen lokalen MSS-Wert und den Wert, der im TCP-SYN-Paket vom Client angegebenen wurde. Der Server hält sich bei allen Antwortpaketen an den kleineren der beiden Werte. Zusätzlich sendet der Server seinen eigenen lokalen MSS-Wert an den Client.
- Das TCP-SYN-Paket übermittelt standardmäßig einen MSS-Wert, welcher der MTU von der Schnittstelle entspricht, über die das Paket gesendet wird.
- Wenn Sie MSS Clamping aktivieren, können Sie einen festen Wert bestimmen, der anstelle vom Default verwendet werden soll.