Passa al contenuto principale

6.3 Purging Stale PMTU Information (Eliminazione informazioni PMTU obsolete)

6.3 Purging Stale PMTU Information (Eliminazione delle informazioni PMTU obsolete)

La topologia dell'internetwork è dinamica; le route cambiano nel tempo. Il PMTU scoperto per una data destinazione può essere errato se una nuova route entra in uso. Pertanto, le informazioni PMTU memorizzate nella cache da un host possono diventare obsolete.

Poiché un host che utilizza PMTU Discovery imposta sempre il bit DF, se il valore PMTU obsoleto è troppo grande, questo verrà scoperto quasi immediatamente una volta che un datagramma viene inviato alla destinazione data. Non esiste tale meccanismo per rendersi conto che un valore PMTU obsoleto è troppo piccolo, quindi un'implementazione dovrebbe "invecchiare" i valori memorizzati nella cache. Quando un valore PMTU non è stato diminuito per un po' (nell'ordine di 10 minuti), la stima PMTU dovrebbe essere impostata all'MTU del collegamento dati del primo hop, e i livelli di pacchettizzazione dovrebbero essere notificati del cambiamento. Questo causerà il verificarsi nuovamente del processo completo di PMTU Discovery.

Nota: un'implementazione dovrebbe fornire un mezzo per cambiare la durata del timeout, inclusa l'impostazione a "infinity" (infinito). Ad esempio, gli host collegati a una rete FDDI che è poi collegata al resto di Internet tramite una linea seriale lenta non scopriranno mai un nuovo PMTU non locale, quindi non dovrebbero dover sopportare datagrammi scartati ogni 10 minuti.

Un livello superiore NON DEVE ritrasmettere datagrammi in risposta a un aumento della stima PMTU, poiché questo aumento non viene mai in risposta a un'indicazione di un datagramma scartato.

Un approccio per implementare l'invecchiamento PMTU consiste nell'aggiungere un campo timestamp alla voce della tabella di routing. Questo campo viene inizializzato a un valore "reserved" (riservato), indicando che il PMTU non è mai stato modificato. Ogni volta che il PMTU viene diminuito in risposta a un messaggio Datagram Too Big, il timestamp viene impostato all'ora corrente.

Una volta al minuto, una procedura guidata da timer attraversa la tabella di routing, e per ogni voce il cui timestamp non è "reserved" ed è più vecchio dell'intervallo di timeout:

  • La stima PMTU viene impostata all'MTU del primo hop associato.

  • I livelli di pacchettizzazione che utilizzano questa route vengono notificati dell'aumento.

Le stime PMTU possono scomparire dalla tabella di routing se le route per host vengono rimosse; questo può accadere in risposta a un messaggio ICMP Redirect, o perché certi demoni della tabella di routing eliminano le vecchie route dopo diversi minuti. Inoltre, su un host multi-homed un cambiamento di topologia può risultare nell'uso di un'interfaccia sorgente diversa. Quando questo accade, se il livello di pacchettizzazione non viene notificato, potrebbe continuare a utilizzare un valore PMTU memorizzato nella cache che ora è troppo piccolo. Una soluzione è notificare il livello di pacchettizzazione di un possibile cambiamento PMTU ogni volta che un messaggio Redirect causa un cambiamento di route, e ogni volta che una route viene semplicemente eliminata dalla tabella di routing.

Nota: un metodo più sofisticato per rilevare gli aumenti PMTU è descritto nella sezione 7.1.