Evoluzione di ICMP
La nuova versione di ICMP, chiamata ICMPv6 [RFC2463] ingloba il vecchio protocollo
(tranne le opzioni meno usate) e il protocollo IGMPv2 che IPv4 usa per la
gestione del multicast. I tipi di messaggi definiti per ora sono 14 e
si possono raggruppare in base alle funzioni che svolgono. Tutti i messaggi
hanno lo stesso formato generale mostrato in figura 24, dove :
- type indica il tipo del messaggio;
- code è usato solo in alcuni casi;
- checksum copre tutto il pacchetto ICMP e i campi fissi
dell'intestazione IPv6;
- message body è un campo di lunghezza variabile che
contiene il corpo del messaggio.

Figura 24. Formato generale pacchetto ICMP.
ICMPv6 include le procedure per la gestione dei messaggi di errore, per il
ping e per la MTU discovery descritte qui di seguito, oltre alle
procedure di configurazione automatica descritte più avanti.
Messaggi di errore
Quando un nodo IPv6 scarta un pacchetto, invia un messaggio di errore alla sorgente. I
tipi di messaggio sono quattro:
- destination unreachable (type=1) mandato da un
router alla sorgente quando non si riesce a raggiungere la
destinazione;
- packet too big (type =2) usato quando il pacchetto ha
dimensioni maggiori della MTU del link sul quale deve essere inoltrato;
- time exceeded (type=3) indica che il valore di hop
limit del pacchetto è nullo;
- parameter problem (type=4) indica che un campo del
datagramma non è riconosciuto come valido e quindi non è
possibile elaborare il pacchetto. In questo caso il campo parameter
(si veda figura 25) contiene un puntatore al punto in cui vi è il
problema mentre code contiene uno dei seguenti valori:
- 0 se è errato un campo nell'intestazione;
- 1 se il tipo dell'header successivo è sconosciuto;
- 2 se vi è opzione di IPv6 non riconosciuta.

Figura 25 - Formato generale dei messaggi d'errore ICMP.
Procedura di Ping

Figura 26 - Formato generale del messaggio di
Echo.
Ping indica una semplice procedura che consente di verificare la
raggiungibilità di una destinazione disponibile in IPv6 come in IPv4. I
messaggi coinvolti sono due:
- echo request (type =128 );
- echo reply (type=129);
Quando un nodo desidera ottenere una risposta da un nodo remoto, per esempio
per verificarne la raggiungibilitá, gli invia un messaggio ICMP di
echo request. Il pacchetto ha il formato mostrato in figura 26 in cui
il campo code è posto a zero. Il nodo può
scegliere un valore per l'identificatore e se invia più ping alla
stessa destinazione deve assegnare valori successivi per Sequence
Number. A ogni echo request ricevuto, il nodo risponde con un
echo reply.
Procedura di MTU Discovery
La
procedura di MTU Discovery permette alle stazioni di conoscere la
dimensione massima del pacchetto che può essere utilizzata nella
comunicazione verso una destinazione scelta. A tale scopo la sorgente invia un
pacchetto con MTU pari a quella del primo link, se tale pacchetto supera la
misura della MTU dell'hop successivo viene scartato e viene mandato alla
sorgente un messaggio ICMP di errore (Type=2, message too big
), col formato mostrato in figura 26, dove nel campo parameter
è posta la MTU del link successivo. L'esperienza mostra che in pratica
questo algoritmo converge rapidamente verso un valore accettabile.
|