Formato dell'header IPv6
Il nuovo header di IPv6 [RFC2460] è illustrato in figura 1, mentre
in figura 2 è stato riportato quello IPv4 al fine di facilitare il
confronto tra i due protocolli.

Figura 1: Header IPv6
I campi dell'intestazione IPv6 hanno il seguente significato:
- version (4 bit): indica la versione del protocollo, quindi conterrā il numero 6;
- DS byte (8 bit): questo campo č utilizzato dalla sorgente e dai router per identificare i pacchetti che appartengono a una stessa classe di traffico e quindi distinguere tra loro i pacchetti con diversa prioritā.
- flow label (20 bit): etichetta un flusso di dati;
- payload length (16 bit): indica la lunghezza del campo dati del pacchetto;
- next header (8 bit): identifica il tipo di header che segue immediatamente quello IPv6;
- hop limit (8 bit): č decrementato di uno da ogni nodo che inoltra il pacchetto. Quando il suo valore č nullo il pacchetto viene scaricato;
- source address (128 bit): indirizzo della sorgente;
- destination address ( 128 bit) : indirizzo di destinazione.

Figura 2: Header IPv4
Rispetto IPv4, il formato dell'intestazione è più semplice e
questo permette migliori prestazioni.
La scelta di eliminare il checksum deriva dal fatto che esso è
già calcolato a livello 2 e, dato il tasso di errore delle reti attuali,
tale controllo è sufficiente. Si ottengono così migliori
prestazioni poiché i router non devono più ricalcolarlo
per ogni pacchetto. Eliminando il checksum non si è però
tutelati dagli errori che i router possono commettere nel processare i
pacchetti. Tali errori comunque non risultano pericolosi per la rete in quanto
causano solo la perdita del pacchetto stesso in seguito alla presenza di campi
con valori non validi (es: indirizzi inesistenti).
Il campo hop limit indica il numero massimo di nodi (hop) che
un pacchetto può attraversare prima di giungere a destinazione. In IPv4
tale campo è espresso in secondi (TTL: Time To Live), anche se
ha la stessa funzione. Il cambiamento è stato fatto per due motivi.
Innanzi tutto per la semplicità di realizzazione: infatti, anche in IPv4
i router traducono i secondi in numero di hop per poi ritradurli
in secondi. In secondo luogo ci si svincola dalle caratteristiche fisiche
(quali la banda) della rete. Poiché il campo hop limit è
di 8 bit, il numero massimo di nodi attraversabili da un pacchetto è
255.
L'hop limit può servire anche ad un altro scopo: cercare tra un
gruppo di server che svolgono la stessa funzione quello più
vicino. Si consideri a tale scopo l'esempio riportato in figura 3. Il gruppo
sarà identificato da un indirizzo multicast. L'host
inizierà la ricerca inviando a questo indirizzo una richiesta con
hop limit = 1. Essa raggiunge due router prima di essere
scartata. Dopo un intervallo di tempo prefissato, la stazione invia una seconda
richiesta, questa volta con hop limit = 2. Anche questa non ottiene
risposta. Dopo un altro timeout, l'host riprova con hop
limit = 3. Stavolta la richiesta raggiunge uno dei server, il
più vicino, che risponde; così l'host conclude la sua ricerca e i
server più lontani non ne sono coinvolti. IPv6 permette di
raggiungere lo stesso risultato anche in un altro modo, utilizzando gli
indirizzi anycast.

Figura 3 - Esempio di uso di hop limit.
In IPv4 la lunghezza dell'intestazione è variabile, quindi bisogna
specificare sia la lunghezza dell'header IPv4 (header length)
che la misura totale del pacchetto (total length). In
IPv6, invece, l'intestazione ha una dimensione fissa pari a 40 byte quindi
è sufficiente indicare solo la lunghezza del campo dati. Il campo
payload length è lungo 16 bit, quindi il pacchetto non
può superare i 64 kb. Tale dimensione garantisce ancora buone
prestazioni per i router (attesa in coda limitata, overhead dello
0.06% ), ma tale limite è troppo stringente quando a comunicare sono dei
supercomputer. Essi sono dotati di memorie enormi e in genere sono collegati
tra loro direttamente, quindi sarebbe comodo poter avere pacchetti molto
maggiori di 64 kb. Per le loro esigenze è stata pensata l'opzione
jumbogram in cui il campo payload length è posto a zero
e il pacchetto può superare i limiti imposti.
Si è detto che l'intestazione dei pacchetti IPv6 ha dimensione fissa:
questo perché si è scelto di eliminare le opzioni, che ora sono
gestite mediante il meccanismo degli extension header illustrato
nel prossimo paragrafo.
Mediante il suddetto meccanismo, viene gestita anche la
frammentazione dei pacchetti e questa rappresenta una differenza fondamentale
rispetto IPv4. In questo modo infatti, non solo si ottiene un'intestazione
più semplice, ma essendo in IPv6 la frammentazione gestita agli estremi,
i nodi intermedi possono elaborare i pacchetti più velocemente.
Ciò che ha reso possibile fare in modo che la frammentazione avvenga
agli estremi è la procedura di MTU Discovery che permette alla
sorgente di determinare la MTU minima lungo il cammino di instradamento verso
la destinazione. La Maximum Transmission Unit (MTU) indica qual è
la dimensione massima che può avere un pacchetto; tale valore è
peculiare di ogni tipo di link, ma in ogni caso il valore minimo per IPv6
è stato fissato a 1280 byte. Questo nuovo meccanismo per la gestione
della frammentazione causa, nel caso peggiore in cui il link più piccolo
è l'ultimo, lo spreco di tanti pacchetti quanti sono gli hop,
ma è più conveniente che far gestire la frammentazione ai
router.
Un altro cambiamento rispetto IPv4 è l'introduzione del campo flow
label, compiuta al fine di facilitare l'individuazione dei dati che
richiedono trattamenti particolari, quali per esempio quelli delle applicazioni
real time.
|