L'Internet Control Message Protocol versione 6 (ICMPv6) è l'evoluzione nelle reti IPv6 del protocollo ICMP per le reti IPv4. In essa vengono aggiunte nuove funzionalità che nel protocollo precedente erano demandate ad altri livelli protocollari (come ad esempio ARP o IGMP) e tolte altre che, invece, erano poco usate. Come nel caso della versione precedente, l'ICMPv6 viene utilizzato per monitorare lo stato della rete e per inviare pacchetti di gestione e di errore. Essa è descritta nell'RFC 2463.

Struttura del Pacchetto thumb|upright=1.6|Intestazione ICMPv6

In figura è mostrata la struttura del pacchetto: il campo Type indica il tipo del pacchetto ICMPv6 il campo Code indica il codice del messaggio di errore il campo Checksum è utilizzato per rilevare errori di trasmissione dell'intero pacchetto il campo Body contiene un messaggio ed è di lunghezza variabile

Il campo Type assume 255 valori possibili, di seguito, per brevità, sono riportati i valori più significativi, per maggiori dettagli consultare l'RFC:

Type Nome messaggio 1 Destination Unreachable 2 Packet Too Big 3 Time Exceeded 4 Parameter Problem 128 Echo Request 129 Echo Reply 130 Multicast Listener Query 131 Multicast Listener Report 132 Multicast Listener Done 133 Router Solicitation 134 Router Advertisement 135 Neighbor Solicitation 136 Neighbor Advertisement 137 Redirect Message

Messaggi di errore thumb|upright=1.6|Pacchetto ICMPv6 in caso di errore

Come nella versione per le reti IPv4, ICMPv6 viene utilizzato per la segnalazione di errori di trasmissione. Un pacchetto ICMPv6 ha la funzione di segnalazione di errori quando il suo campo type assume un valore che va da 1 a 4; per ogni tipologia di errore il campo code fornisce una maggiore specificità. Viene aggiunto un campo parameter.

Type 1 destination unreachable: viene inviato questo messaggio nel caso in cui una destinazione non è raggiungibile, il campo parameter non viene utilizzato. code 0: no route to destination code 1: communication with destination administratively prohibited code 2: beyond scope of source address code 3: address unreachable code 4: port unreachable code 5: source address failed ingress/egress policy code 6: reject route to destination Type 2 packet too big: viene generato questo pacchetto quando le dimensioni dei pacchetti generati da un host superano quelle dell'MTU consentito dalla rete, nel campo parameter viene inserito il massimo valore di MTU consentito dalla rete. Type 3 time exceeded: indica che il pacchetto, nel viaggiare per la rete, ha superato il numero massimo di hop consentiti. code 0: hop limit exceeded in transit code 1: fragment reassembly time exceeded Type 4 parameter problem: indica che vi è una incompatibilità di interpretazione dei parametri, il campo parameter contiene l'offset dove si trova il parametro che ha generato l'errore. code 0: erroneous header field encountered code 1: unrecognized Next Header type encountered code 2: unrecognized IPv6 option encountered

Echo thumb|upright=1.6|Formato del pacchetto di echo ICMPv6

I messaggi di echo, tipicamente inviati mediante il comando ping, servono per verificare la raggiungibilità di un nodo. Questi, analogamente a quanto avviene nel protocollo ICMP, possono essere di due tipi: request e reply, a seconda del valore assunto dal campo type, ovvero, rispettivamente, 128 o 129. I campi assumono i seguenti valori:

type vale 128 nel caso di echo request 129 nel casi di echo reply code non è utilizzato identifier è un valore stabilito dal mittente del messaggio di echo a cui il destinatario deve rispondere utilizzando lo stesso valore di identifier; ciò permette di rafforzare la corrispondenza tra request e reply sequence number è un numero di sequenza deciso dal mittente ed utilizzato dal destinatario nel momento della risposta data si tratta di dati immessi dal mittente e ricopiati dal destinatario nell'echo di reply

Group Management L'ICMPv6 viene utilizzato anche per gestire i gruppi multicast, questa funzione è svolta dal protocollo IGMP nelle reti IPv4. Per decidere il gruppo multicast i router o server inviano pacchetti di membership query e gli host appartenenti ad un gruppo rispondono con un messaggio di membership report. Questi ultimi vengono inviati costantemente dai client e per non provocare un appesantimento della rete un campo di maximum response delay indica l'intervallo di invio dei membership report. Nel momento in cui un host abbandona il gruppo multicast, viene inviato un ICMPv6 di termination.

Altri progetti

Collegamenti esterni

Categoria:Protocolli livello rete