L'introduzione di testate di estensione
(Extension Headers)ha lo scopo di:
Le testate di estensione sono poste di seguito in catena. Ciascun campo
"tipo della testata successiva" descrive il tipo della testata
di estensione che segue. Quando non vi e' testata di estensione successiva
il codice di tale campo indica dati dei protocolli TCP, UDP o simili a
livello trasporto.
Sono correntemente definiti i seguenti tipi di testate di estensione:
Le testate Authentication e Encrypted Security hanno a che
fare con controlli di sicurezza.
E' esemplificativa di una testata di estensione.
I campi sono:
I router controllano la testata di routing solo se riconoscono
uno dei loro indirizzi nel campo destinazione della testata principale.
I router intermedi non menzionati nella lista eseguono un routing normale
senza ulteriore processamento.
Il router che riconosce un proprio indirizzo nella destinazione della
testata principale esamina la testata di routing.
Se il valore del campo Indirizzo Successivo e' uguale o superiore
al numero di indirizzi della lista, significa che il pacchetto e'
arrivato a destinazione.
Viene controllato che il campo Indirizzo[Indirizzo Successivo] sia un vicino
del router. Se non lo e', ed il bit della maschera indica Strict Routing (1),
il pacchetto viene scartato. Se il bit indica invece Loose Routing (0),
il pacchetto viene inviato con routing normale ad un vicino qualsiasi.
Se il vicino esiste, il router inverte i campi di Indirizzo Destinazione
della testata principale e Indirizzo[Indirizzo Successivo] della testata
di routing, incrementa il campo Indirizzo Successivo della testata
di routing, e invia il pacchetto.
La frammentazione puo' essere eseguita solo dal mittente iniziale,
in seguito a negoziazione del Path MTU. In ogni frammento
viene inserita una Testata di Frammento e i frammenti vengono quindi
inviati indipendentemente.
Il campo Identificativo equivale all'identificativo di frammento
di IPv4, ma codificato a 32 bit.
Il campo Offset di Frammento contiene i 13 bit piu' significativi
di una parola a 16 bit, mentre in IPv4 erano i bit meno significativi.
In entrambe le versioni i frammenti devono cadere ad un confine
di 64 bit. Mentre IPv4 moltiplica per 8 lo Offset di Frammento per
ottenere lo Offset vero, IPv6 azzera i tre bit meno significativi.
Il campo M (more fragments) e' posto a 1 per tutti
i frammenti tranne l'ultimo.
Otto bit piu due rimangono riservati.
Il Destination Options Header contiene come parametri una
o piu' opzioni identificate da tipi specifici.
Il formato della testata e' minimo.
Il campo Lunghezza specifica il numero di parole a 64 bit della
testata, non includendo i primi 64 bit. Questo evita il test del
valore zero come valore illegale.
Ogni opzione e' un numero variabile di byte.
Il tipo e' l'identificativo di opzione. Segue la lunghezza in
byte del campo dati.
Gli identificativi di tipo opzione hanno una struttura definita.
I due bit alti identificano l'azione da intraprendere se l'opzione
non e' riconosciuta.
Il terzo bit, C, indica se l'opzione puo' cambiare
durante il percorso. Queste opzioni non devono essere considerate
nei checksum.
L'ultimo campo e' l'opzione vera e propria. Le opzioni ammissibili saranno
specificate in futuro.
Alcune funzioni di gestione o di debugging richiedono informazioni da passare
a tutti i router intermedi, e questa e' la funzione della testata
di Opzioni Hop-by-Hop.
Il formato e' lo stesso che per le Opzioni di Destinazione, e con la
stessa codifica.
In aggiunta e' definita una opzione di Jumbo Payload,
per pacchetti di dimensione superiore a 64 kbyte. Il tipo di
questa opzione e' 194.
La lunghezza del carico utile e' codificata a 32 bit. In caso di questa opzione,
il campo Lunghezza del Carico della testata principale e' posto a zero.
L'opzione 194 e' allineata in modo che il campo Lunghezza del Carico cada ad un confine di 32 bit.
Vi possono essere piu' testate di estensione consecutivamente.
L'ordine raccomandato e':
La testata di Opzioni di Destinazione puo' essere inserita in due locazioni
diverse:
La Testata di Routing
Testata di Frammento
Testata di Opzioni di Destinazione
Testata Hop-by-Hop Options
Ordine delle Testate di Estensione