Passa al contenuto principale

5. Host Processing of Old-Style Messages (Elaborazione messaggi vecchio stile)

5. Host Processing of Old-Style Messages (Elaborazione dei messaggi in stile vecchio da parte dell'host)

In questa sezione delineiamo diverse possibili strategie che un host può seguire alla ricezione di un messaggio Datagram Too Big da un router non modificato (cioè, uno dove il campo Next-Hop MTU è zero). Questa sezione non fa parte della specifica del protocollo.

La cosa più semplice che un host può fare in risposta a tale messaggio è assumere che il PMTU sia il minimo del suo PMTU attualmente assunto e 576, e smettere di impostare il bit DF nei datagrammi inviati su quel percorso. Pertanto, l'host torna allo stesso PMTU che sceglierebbe sotto la pratica corrente (vedere sezione 3.3.3 di "Requirements for Internet Hosts -- Communication Layers" (Requisiti per gli host Internet -- Livelli di comunicazione) [1]). Questa strategia ha il vantaggio di terminare rapidamente e non fa peggio della pratica esistente. Tuttavia, non riesce ad evitare la frammentazione in alcuni casi, e a fare l'uso più efficiente dell'Internet in altri casi.

Strategie più sofisticate comportano la "ricerca" di una stima accurata del PMTU, continuando a inviare datagrammi con il bit DF mentre si variano le loro dimensioni. Una buona strategia di ricerca è quella che ottiene una stima accurata del Path MTU senza causare la perdita di molti pacchetti nel processo.

Diverse possibili strategie applicano funzioni algoritmiche alla stima PMTU precedente per generare una nuova stima. Ad esempio, si potrebbe moltiplicare la vecchia stima per una costante (diciamo, 0,75). NON raccomandiamo questo; o converge troppo lentamente, o sottostima sostanzialmente il vero PMTU.

Un approccio più sofisticato è fare una ricerca binaria sulla dimensione del pacchetto. Questo converge un po' più velocemente, anche se richiede ancora 4 o 5 passi per convergere da un MTU FDDI a un MTU Ethernet. Uno svantaggio serio è che richiede un'implementazione complessa per riconoscere quando un datagramma ha raggiunto l'altra estremità (indicando che la stima corrente è troppo bassa). Anche noi non raccomandiamo questa strategia.

Una strategia che sembra funzionare abbastanza bene inizia dall'osservazione che ci sono, in pratica, relativamente pochi valori MTU utilizzati in Internet. Pertanto, piuttosto che cercare ciecamente attraverso valori scelti arbitrariamente, possiamo cercare solo quelli che è probabile che appaiano. Inoltre, poiché i progettisti tendono a scegliere gli MTU in modi simili, è possibile raccogliere gruppi di valori MTU simili e utilizzare il valore più basso nel gruppo come nostro "plateau" (altopiano) di ricerca. (È chiaramente meglio sottostimare un MTU di pochi per cento piuttosto che sovrastimarlo di un ottetto.)

Nella sezione 7, descriviamo come siamo arrivati a una tabella di altopiani MTU rappresentativi da utilizzare nella stima PMTU. Con questa tabella, la convergenza è buona come la ricerca binaria nel caso peggiore, ed è molto migliore nei casi comuni (ad esempio, ci vogliono solo due tempi di andata e ritorno per passare da un MTU FDDI a un MTU Ethernet). Poiché gli altopiani si trovano vicino a potenze di due, se un MTU non è rappresentato in questa tabella, l'algoritmo non lo sottostimerà di più di un fattore 2.

Qualsiasi strategia di ricerca deve avere una certa "memoria" delle stime precedenti per scegliere la successiva. Un approccio consiste nell'utilizzare la stima attualmente memorizzata nella cache del Path MTU, ma in realtà ci sono informazioni migliori disponibili nel messaggio Datagram Too Big stesso. Tutti i messaggi ICMP Destination Unreachable, incluso questo, contengono l'intestazione IP del datagramma originale, che contiene la Total Length (lunghezza totale) del datagramma che era troppo grande per essere inoltrato senza frammentazione. Poiché questa Total Length può essere inferiore alla stima PMTU corrente, ma è comunque maggiore del PMTU effettivo, può essere un buon input per il metodo di scelta della prossima stima PMTU.

Nota: i router basati su implementazioni derivate da 4.2BSD Unix inviano un valore errato per la Total Length del datagramma IP originale. Il valore inviato da questi router è la somma della Total Length originale e della Header Length originale (espressa in ottetti). Poiché è impossibile per l'host che riceve tale messaggio Datagram Too Big sapere se è stato inviato da uno di questi router, l'host deve essere conservativo e assumere che lo sia. Se il campo Total Length restituito non è inferiore alla stima PMTU corrente, deve essere ridotto di 4 volte il valore del campo Header Length restituito.

La strategia che raccomandiamo, quindi, è di utilizzare come prossima stima PMTU il valore di altopiano più grande che è inferiore al campo Total Length restituito (corretto, se necessario, secondo la Nota sopra).