Approfondimento tecnico
    Formato dell´header IPv6
Telecom Italia logo
     English | ngnet.it home >> Cos´è IPv6 >> Il protocollo IPv6 >> Formato dell'header IPv6  
next
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.


next