5. Host Processing of Old-Style Messages (Verarbeitung alter Nachrichten)
5. Host Processing of Old-Style Messages (Host-Verarbeitung von Nachrichten im alten Stil)
In diesem Abschnitt skizzieren wir mehrere mögliche Strategien, denen ein Host beim Empfang einer Datagram Too Big Nachricht von einem nicht modifizierten Router (d.h. einem, bei dem das Next-Hop MTU Feld null ist) folgen kann. Dieser Abschnitt ist nicht Teil der Protokollspezifikation.
Das Einfachste, was ein Host als Antwort auf eine solche Nachricht tun kann, ist anzunehmen, dass die PMTU das Minimum seiner aktuell angenommenen PMTU und 576 ist, und aufzuhören, das DF-Bit in Datagrammen zu setzen, die auf diesem Pfad gesendet werden. Somit fällt der Host auf dieselbe PMTU zurück, die er unter der aktuellen Praxis wählen würde (siehe Abschnitt 3.3.3 von "Requirements for Internet Hosts -- Communication Layers" (Anforderungen für Internet-Hosts -- Kommunikationsschichten) [1]). Diese Strategie hat den Vorteil, dass sie schnell endet und nicht schlechter ist als die bestehende Praxis. Sie versagt jedoch in einigen Fällen darin, Fragmentierung zu vermeiden, und in anderen Fällen die effizienteste Nutzung des Internets zu machen.
Ausgefeiltere Strategien beinhalten das "Suchen" nach einer genauen PMTU-Schätzung, indem weiterhin Datagramme mit gesetztem DF-Bit gesendet werden, während ihre Größen variiert werden. Eine gute Suchstrategie ist eine, die eine genaue Schätzung der Path MTU erhält, ohne dass viele Pakete im Prozess verloren gehen.
Mehrere mögliche Strategien wenden algorithmische Funktionen auf die vorherige PMTU-Schätzung an, um eine neue Schätzung zu generieren. Zum Beispiel könnte man die alte Schätzung mit einer Konstante multiplizieren (sagen wir, 0,75). Wir empfehlen dies NICHT; es konvergiert entweder viel zu langsam oder unterschätzt die wahre PMTU erheblich.
Ein ausgefeilterer Ansatz besteht darin, eine binäre Suche nach der Paketgröße durchzuführen. Dies konvergiert etwas schneller, obwohl es immer noch 4 oder 5 Schritte dauert, um von einer FDDI-MTU zu einer Ethernet-MTU zu konvergieren. Ein ernsthafter Nachteil ist, dass es eine komplexe Implementierung erfordert, um zu erkennen, wann ein Datagramm das andere Ende erreicht hat (was anzeigt, dass die aktuelle Schätzung zu niedrig ist). Wir empfehlen auch diese Strategie nicht.
Eine Strategie, die ziemlich gut zu funktionieren scheint, beginnt mit der Beobachtung, dass es in der Praxis relativ wenige MTU-Werte gibt, die im Internet verwendet werden. Anstatt also blind durch willkürlich gewählte Werte zu suchen, können wir nur nach denen suchen, die wahrscheinlich erscheinen. Da Designer außerdem dazu neigen, MTUs auf ähnliche Weise zu wählen, ist es möglich, Gruppen ähnlicher MTU-Werte zu sammeln und den niedrigsten Wert in der Gruppe als unser Such-"Plateau" zu verwenden. (Es ist eindeutig besser, eine MTU um ein paar Prozent zu unterschätzen, als sie um ein Oktett zu überschätzen.)
In Abschnitt 7 beschreiben wir, wie wir zu einer Tabelle repräsentativer MTU-Plateaus zur Verwendung in der PMTU-Schätzung gelangt sind. Mit dieser Tabelle ist die Konvergenz im schlimmsten Fall so gut wie bei der binären Suche und in häufigen Fällen weitaus besser (zum Beispiel dauert es nur zwei Rundlaufzeiten, um von einer FDDI-MTU zu einer Ethernet-MTU zu gelangen). Da die Plateaus nahe Zweierpotenzen liegen, wird der Algorithmus, wenn eine MTU in dieser Tabelle nicht dargestellt wird, sie nicht um mehr als einen Faktor 2 unterschätzen.
Jede Suchstrategie muss ein gewisses "Gedächtnis" früherer Schätzungen haben, um die nächste zu wählen. Ein Ansatz besteht darin, die aktuell zwischengespeicherte Schätzung der Path MTU zu verwenden, aber tatsächlich gibt es bessere Informationen in der Datagram Too Big Nachricht selbst. Alle ICMP Destination Unreachable Nachrichten, einschließlich dieser, enthalten den IP-Header des ursprünglichen Datagramms, der die Total Length (Gesamtlänge) des Datagramms enthält, das zu groß war, um ohne Fragmentierung weitergeleitet zu werden. Da diese Total Length kleiner als die aktuelle PMTU-Schätzung sein kann, aber dennoch größer als die tatsächliche PMTU ist, kann sie eine gute Eingabe für die Methode zur Auswahl der nächsten PMTU-Schätzung sein.
Hinweis: Router, die auf Implementierungen basieren, die von 4.2BSD Unix abgeleitet sind, senden einen falschen Wert für die Total Length des ursprünglichen IP-Datagramms. Der von diesen Routern gesendete Wert ist die Summe der ursprünglichen Total Length und der ursprünglichen Header Length (in Oktetten ausgedrückt). Da es für den Host, der eine solche Datagram Too Big Nachricht empfängt, unmöglich ist zu wissen, ob sie von einem dieser Router gesendet wurde, muss der Host konservativ sein und annehmen, dass dies der Fall ist. Wenn das zurückgegebene Total Length Feld nicht kleiner als die aktuelle PMTU-Schätzung ist, muss es um das 4-fache des Wertes des zurückgegebenen Header Length Feldes reduziert werden.
Die Strategie, die wir empfehlen, besteht also darin, als nächste PMTU-Schätzung den größten Plateau-Wert zu verwenden, der kleiner als das zurückgegebene Total Length Feld ist (falls erforderlich nach dem obigen Hinweis korrigiert).