Passa al contenuto principale

8. Host Fragmentation (Frammentazione dell'host)

I livelli di pacchettizzazione DOVREBBERO (SHOULD) evitare di inviare messaggi che richiederanno frammentazione [Kent87] [frag-errors]. Tuttavia, prevenire completamente la frammentazione non è sempre possibile. Alcuni livelli di pacchettizzazione, come un'applicazione UDP fuori dal kernel, potrebbero essere incapaci di cambiare la dimensione dei messaggi che inviano, risultando in dimensioni di datagramma che superano il Path MTU.

IPv4 permetteva a tali applicazioni di inviare pacchetti senza il bit DF impostato. I pacchetti sovradimensionati senza il bit DF impostato sarebbero frammentati nella rete o nell'host mittente quando incontrano un collegamento con un MTU più piccolo del pacchetto. In alcuni casi, i pacchetti potrebbero essere frammentati più di una volta se c'erano collegamenti a cascata con MTU progressivamente più piccoli. Questo approccio NON È RACCOMANDATO (NOT RECOMMENDED).

È RACCOMANDATO (RECOMMENDED) che le implementazioni IPv4 usino una strategia che imita la funzionalità IPv6. Quando un'applicazione invia datagrammi che sono più grandi del Path MTU effettivo, DOVREBBERO (SHOULD) essere frammentati al Path MTU nello strato IP dell'host anche se sono più piccoli del MTU del primo collegamento, direttamente collegato all'host. Il bit DF DOVREBBE (SHOULD) essere impostato sui frammenti, in modo che non vengano frammentati di nuovo nella rete. Questa tecnica minimizzerà la probabilità che le applicazioni si affidino alla frammentazione IPv4 in un modo che non può essere implementato in IPv6. Almeno un sistema operativo maggiore usa già questa strategia. La sezione 9 descrive alcune eccezioni a questa regola quando l'applicazione sta inviando pacchetti sovradimensionati per scopi di sondaggio o diagnostica.

Poiché i protocolli che non implementano PLPMTUD sono ancora soggetti a problemi dovuti a buchi neri ICMP, può essere desiderabile limitare questi protocolli a MTU "sicuri" che probabilmente funzioneranno su qualsiasi percorso (ad esempio, 1280 byte). Permettere a qualsiasi protocollo che implementa PLPMTUD di operare sulla gamma completa supportata dallo strato inferiore.

Nota che la frammentazione IP divide i dati in pacchetti, quindi è minimamente un livello di pacchettizzazione. Tuttavia, non ha un meccanismo per rilevare pacchetti persi, quindi non può supportare un'implementazione nativa di PLPMTUD. PLPMTUD basato su frammentazione richiede un protocollo ausiliario come descritto nella sezione 10.3.