17.3.3 Frammentazione
Se un IPv6 datagram ha dimensioni maggiori della MTU, questo viene scomposto in IPv6
datagram più piccoli, detti frammenti (fragments), ognuno dei quali contiene una parte del
payload relativo all’IP datagram originale.
Il livello Network prima di inviare un IP datagram richiede all’interfaccia di rete
di destinazione la sua MTU per poter eventualmente effettuare la frammentazione
degli IP datagram.
|
L’IPv6 datagram originale è costituito da due parti: una non frammentabile e
l’altra frammentabile. La parte non frammentabile si compone dell’header dell’IPv6
datagram e degli eventuali extension header che devono essere gestiti dai sistemi che si
trovano sul percorso per raggiungere il destinatario finale (es. Routing Header ed il
Hop-by-Hop Options Header). La parte frammentabile è composta dagli eventuali
altri extension header e dal payload dell’IPv6 datagram originale e qualora se ne
presenti la necessità, viene suddivisa in frammenti (con dimensione multipla di 8
byte, tranne al più l’ultimo frammento) ed inviata sulla rete come illustrato nella
fig. ??.
La frammentazione degli IPv6 datagram può avvenire soltanto sull’interfaccia mittente (al
contrario di IPv4 nel quale la frammentazione è possibile anche sui sistemi sui quali l’IPv4
datagram transita per raggiungere il destinatario). Questa avviene con l’ausilio di un
particolare extension header, detto appunto Fragment Header, identificato dal valore 44 nel
campo Next Header dell’header precedente.
L’IPv6 datagram viene ricostruito ricomponendo i frammenti che lo costituiscono, soltanto
dall’interfaccia di rete di destinazione effettiva: i sistemi intermedi, attraversati
dall’IP datagram nel suo percorso dal mittente al destinatario non ricompongono i
frammenti.
Un Fragment Header si compone dei campi riportati nella fig. ?? ed illustrati di
seguito
-
Next Header
(8 bit) identifica il tipo dell’header iniziale della parte frammentabile del IPv6
datagram originale (utilizza gli stessi valori usati dal campo Protocol dell’IPv4
datagram - v. sez. 17.2.5);
-
Reserved
(8 bit) dovrebbe essere impostato a 0;
-
Fragment Offset
(13 bit) esprime la posizione (in unità di 8 byte) dei dati del payload del Fragment
Header, all’interno dell’IPv6 datagram originale, relativamente all’inizio della
parte frammentabile;
-
Reserved
(2 bit) dovrebbe essere impostato a 0;
-
M (1 bit) indica se ci sono ulteriori frammenti (1) o meno (0);
-
Identification
è un valore che identifica univocamente un frammento (assieme all’indirizzo del
mittente e quello del destinatario finale);