L’ICMP pour IPv6 (Internet Control Message Protocol Version 6) fait partie à part entière de l'architecture IPv6 et doit être complètement supportée par toutes les implémentations d'IPv6. ICMPv6 combine des fonctions antérieurement subdivisées à travers différents protocoles, tels qu’ICMP v4 (Internet Control Message Protocol version 4), IGMP (Internet Group Membership Protocol), et ARP (Address Resolution Protocol), et il introduit quelques simplifications en éliminant des types de messages obsolètes qui ne sont plus utilisés.
L'Internet Protocol, version 6 (IPv6) est une nouvelle version d'IP. IPv6 utilise le protocole ICMP comme défini pour IPv4[1], avec quelques changements. Le protocole résultant est appelé ICMPv6. Cet article décrit le format d'un ensemble de messages de contrôle utilisés par ICMPv6.
ICMPv6 est un protocole générique ; par exemple, il est utilisé pour rapporter des erreurs trouvées dans le traitement de paquets, effectuer des diagnostics, effectuer une découverte de voisinage, et rapporter l'appartenance à un multicast. Pour cette raison, les messages ICMPv6 sont catégorisés en deux classes : error messages et information messages.
Les datagrammes ICMP sont transportés à l'intérieur de datagrammes IPv6 dans lequel un en-tête d'extension peut aussi être présent. Un message ICMP est identifié par sa valeur 58 (0x3A) positionnée dans le champ Next Header de l'en-tête IPv6.
ICMPv6 est utilisé par les nœuds/hôtes IPv6 pour rapporter les erreurs trouvées dans le traitement de datagrammes, et pour effectuer d'autres traitements internes à cette couche, tels que des diagnostics (ICMPv6 « ping »).
Les paquets ICMPv6 ont le format Type, Code & Checksum. Le champ Type de 8-bits indique le type du message. Si le bit de poids fort a une valeur de zéro, il s'agit d'un message d'erreur, sinon c'est un message d’information. Le contenu du champ Code de 8 bits dépend du type de message, et est utilisé pour créer un niveau additionnel de granularité de message. Le champ Checksum est utilisé pour détecter des erreurs dans le message ICMP à l'intérieur du message IPv6.
Les messages d'erreur ICMPv6 sont similaires à ceux d’ICMPv4. Ils appartiennent à l'une des quatre catégories : Destination non atteignable, Paquet trop gros, Time out, et Problèmes de paramétrage.
L'autre type de messages ICMP est divisé en trois groupes : messages de diagnostic, messages pour la gestion des groupes multicast, et messages de découverte de voisinage. (diagnostic messages, messages for the management of multicast groups, et Neighbor Discovery messages.)
Bit 0 à 7 | Bit 8 à 15 | Bit 16 à 23 | Bit 24 à 31 | ||
---|---|---|---|---|---|
Type | Code | Checksum | |||
Message Body |
Un nœud qui envoie un message ICMPv6 doit déterminer à la fois les adresses IPv6 de Source et de Destination de l'en-tête IPv6 avant de calculer la somme de contrôle. Si le nœud a plus d'une adresse unicast, il doit choisir l'adresse source du message de la manière suivante :
Type | Signification |
---|---|
1 | Destination Unreachable |
2 | Packet Too Big |
3 | Time Exceeded |
4 | Parameter Problem |
128 | Echo Request |
129 | Echo Reply |
130 | Group Membership Query |
131 | Group Membership Report |
132 | Group Membership Reduction |
133 | Router Solicitation |
134 | Router Advertisement |
135 | Neighbor Solicitation |
136 | Neighbor Advertisement |
137 | Redirect |
Liste complète disponible sur le site de l'IANA : http://www.iana.org/assignments/icmpv6-parameters