PMTU Black Hole-Router können für TCP-Verbindungen ein Problem darstellen. Wenn diese Router zu große IP-Pakete erhalten, die sie eigentlich fragmentieren müssten, aufgrund eines gesetzten DF-Flag (Don't Fragment - nicht fragmentieren) aber nicht fragmentieren dürfen, verwerfen sie die Pakete ohne Nachricht an den Versender. Die Folge ist eine fehlgeschlagene Datenkommunikation, auf die Sie noch nicht einmal hingewiesen werden. Lesen Sie in dieser Cable Guy-Kolumne, wodurch sich PMTU Black Hole-Router auszeichnen, wie Sie sie erkennen können und welche Workarounds es für sie gibt.
| Einleitung | |
| Erkennen von PMTU Black Hole-Routern | |
| Lösungen und Workarounds für PMTU Black Hole-Router |
Das Internet Protocol (IP) wurde so entworfen, dass es auch in einem Netzwerk funktioniert, in dem unterschiedliche Netzwerktechnologien genutzt werden (zum Beispiel Ethernet und Frame Relay). Jede Netzwerktechnologie hat eine eigene MTU-Größe (Maximum Transmission Unit - maximale Übertragungseinheit) - diese legt die maximale Größe eines gesendeten Rahmens fest. Die IP-MTU ist also die Maximalgröße eines IP-Pakets. Ethernet verwendet eine MTU von 1.526 Byte. Wenn wir Ethernet-Header und -Trailer abziehen (insgesamt 26 Byte), dann beträgt die IP-MTU in einem Ethernet 1.500 Byte.
Um unterschiedliche IP-MTU-Größen von unterschiedlichen Netzwerktechnologien zu berücksichtigen, erlaubt das IP-Protokoll die Fragmentierung von Paketen durch Router. Wenn ein Paket zum Beispiel zu groß ist, um von einem Router über eine bestimmte Netzwerkverbindung (Link) weitergeleitet zu werden, kann der Router den Datenteil des Pakets (Payload) in mehrere IP-Pakete aufteilen (fragmentieren) - solche Pakete werden dann als Fragmente bezeichnet.
Dieses Feature führt dazu, dass IP unabhängig von der Netzwerkschicht arbeiten kann. Aber es kann auch eine hohe Prozessor- und Speicherauslastung verursachen und so Auswirkungen auf die Leistung von IP-Routern haben. Aus diesem Grund wird die Fragmentierung von IP-Paketen durch Router in modernen IP-Netzwerken (inklusive dem Internet) durch die folgenden Maßnahmen verhindert:
| • | Bei UDP-Netzwerkverkehr wird die maximale Paketgröße so gering gewählt, dass eine Fragmentierung nicht notwendig wird. |
| • | Bei TCP-Netzwerkverkehr wird das DF-Flag (Don't Fragment - nicht Fragmentieren) im IP-Header auf den Wert 1 gesetzt. So werden IP-Router an der Fragmentierung gehindert. |
Wenn eine TCP-Verbindung zwischen zwei Peers aufgebaut wird, tauschen diese ihre jeweilige maximale TCP-Segmentgröße aus (Maximum Segment Size - MSS). Beide TCP-Peers verwenden dann den kleineren der beiden MSS-Werte. Normalerweise entspricht die MSS der MTU minus 40 Byte für den IP- und TCP-Header. Dieser Wert kann sich jedoch durch zusätzliche TCP-Optionen - z. B. Zeitstempel - auf 52 oder mehr Byte erhöhen.
Wenn ein Router ein IP-Paket fragmentieren müsste, er jedoch aufgrund des gesetzten DF-Flags dazu nicht in der Lage ist, hat er die folgenden Möglichkeiten:
| • | Er kann die ICMP-Nachricht 'Destination Unreachable-Fragmentation Needed and DF Set', wie ursprünglich in RFC 792 definiert, zurückschicken und das Paket dann verwerfen. |
| • | Er kann die ICMP-Nachricht 'Destination Unreachable-Fragmentation Needed and DF Set' nach RFC 1191 zurückschicken und das Paket dann verwerfen. Dieses neue Nachrichtenformat enthält ein MTU-Feld mit der IP-MTU des Links, bei dem die Übermittlung fehlgeschlagen ist. |
| • | Er kann das Paket stillschweigend verwerfen. |
PMTU Black Hole-Router können für TCP-Verbindungen ein Problem darstellen. Die Implementierung des TCP/IP-Protokolls von Microsoft® Windows® XP und Windows ServerT 2003 verwenden standardmäßig das PMTU-Discovery-Verfahren. TCP sendet in diesem Fall Segmente mit gesetztem DF-Flag und erwartet, um die MSS wie benötigt anpassen zu können, RFC 1191-konforme ICMP-Nachrichten ('Destination Unreachable-Fragmentation Needed and DF Set'), die den IP-MTU-Wert enthalten.
Die während des TCP-drei-Wege-Handshakes ausgetauschten Pakete sind nicht groß genug, um von PMTU Black Hole-Routern verworfen zu werden. Wenn jedoch Daten übertragen werden (unter der Annahme, dass die auf der ausgehandelten MSS basierende PMTU größer als die aktuelle PMTU ist), werden die TCP-Segmente stillschweigend verworfen, die größer als die aktuelle PMTU sind.
Es kann z. B. sein, dass Sie mit dem FTP-Kommandozeilentool eine erfolgreiche Verbindung zu einem FTP-Server aufbauen und sich anmelden können. Wenn Sie dann jedoch versuchen, etwas herunterzuladen, verwirft ein PMTU Black Hole-Router auf dem Weg vom FTP-Server zu Ihnen alle TCP-Segmente, die die maximale Größe überschreiten - dies führt dann zu Fehlern und einem fehlgeschlagenen Dateitransfer.
Mit dem Ping-Befehl und der folgenden Syntax können Sie PMTU Black Hole-Router ermitteln:
Ping Ziel -f -l Größe
| • | Ziel ist eine IP-Adresse oder ein Name, der in eine IP-Adresse aufgelöst werden kann. |
| • | Die Option -f setzt das DF-Flag auf 1 (aktiv). |
| • | Die Option -l gibt die Größe des Datenteils der ICMP-Echo-Nachricht an (Payload). |
| • | Größe ist die Zahl der Bytes im Datenteil der ICMP-Echo-Nachricht. |
Um den Wert Größe zu berechnen, ziehen Sie von der Größe des TCP-Pakets, das Sie senden möchten, den Wert 28 ab (20 Byte für den IP-Header und 8 Byte für den ICMP-Header der ICMP-Echo-Nachricht). Die folgende Abbildung verdeutlicht dies.

Mit dem folgenden Befehl können Sie z. B. eine ICMP-Echo-Nachricht von 1.500 Byte Länge senden:
ping Ziel -f -l 1472
Wenn es auf dem Übertragungspfad Links mit kleineren IP-MTUs gibt und ein Router ein 'Destination Unreachable-Fragmentation Needed and DF Set' ICMP-Paket sendet, zeigt Ping die Meldung 'Paket müsste fragmentiert werden, DF-Flag ist jedoch gesetzt' an. Wenn ein Router jedoch in einem solchen Fall die Pakete stillschweigend verwirft (PMTU Black Hole-Router), zeigt Ping die Meldung 'Zeitüberschreitung der Anforderung' an.
Um die mögliche IP-MTU für einen Pfad mit PMTU Black Hole-Routern zu finden, erhöhen Sie schrittweise die Größe des Datenteils. Da die kleinste IP-MTU eines typischen Subnets normalerweise 576 Byte beträgt, beginnen Sie mit einem Datenteil von 548 Byte. Erhöhen Sie den Wert dann um jeweils 100 Byte, bis Sie die tatsächliche PMTU gefunden haben.
Wenn Sie mit ping 10.0.0.10 -f -l 972 z. B. die Meldung 'Antwort von 10.0.0.10' und mit ping 10.0.0.10 -f -l 973 die Meldung 'Zeitüberschreitung der Anfrage' erhalten, dann liegt die tatsächliche PMTU für den Knoten mit der IP-Adresse 10.0.0.10 bei 1.000 Byte (972+28).
Im Folgenden finden Sie eine Liste der möglichen Lösungen und Workarounds für PMTU Black Hole-Router - vom einfachsten Workaround bis zu jenem mit den schwersten Auswirkungen.
1. | Konfigurieren Sie alle Router im Übertragungspfad für routerseitiges PMTU-Discovery | ||||||||||||||||||||||
2. | Aktivieren Sie die Erkennung von PMTU Black Hole-Routern Schlüssel: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters Einstellung: EnablePMTUBHDetect Typ: REG_DWORD Wert: 1 Da es diesen Registrierungseintrag standardmäßig nicht gibt, müssen Sie ihn mit einem Registrierungseditor erstellen. Damit die Einstellung aktiv wird, müssen Sie Windows neu starten. Wenn die Erkennung von PMTU Black Hole-Routern aktiviert ist, versucht TCP nach mehreren nicht bestätigten Übertragungen Segmente mit deaktiviertem DF-Flag (0) zu senden. Wenn ein solches Segment bestätigt wird, wird die MSS verringert. Das DF-Flag wird dann für die folgenden Segmente wieder aktiviert (1). Durch die Aktivierung der PMTU Black Hole-Erkennung steigt die Zahl der maximalen Versuche einer Übertragung eines Segments - dies hat Auswirkungen auf die Gesamtleistung. | ||||||||||||||||||||||
3. | Ermitteln Sie die beste IP-MTU und konfigurieren Sie diesen Wert über die MTU-Registrierungseinstellung
| ||||||||||||||||||||||
4. | Deaktivieren Sie PMTU-Discovery Schlüssel: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters Einstellung: EnablePMTUDiscovery Typ: REG_DWORD Wert: 0 Da es auch diesen Registrierungseintrag standardmäßig nicht gibt, müssen Sie ihn mit einem Registrierungseditor erstellen. Damit die Einstellung aktiv wird, müssen Sie Windows neu starten. |
Weitere Informationen und Registrierungseinstellungen zum PMTU-Discovery-Verfahren finden Sie unter:
![]() | The Cable Guy |