Difference between revisions of "ICMPv6"
From Livre IPv6
Line 18: | Line 18: | ||
!type !! code !! nature | !type !! code !! nature | ||
|-style="background:silver" | |-style="background:silver" | ||
− | + | !colspan=3|Gestion des erreurs | |
|- | |- | ||
|1 || || Destination inaccessible : | |1 || || Destination inaccessible : | ||
Line 48: | Line 48: | ||
| || 2 || - option non reconnue | | || 2 || - option non reconnue | ||
|- | |- | ||
− | + | ! colspan=3|Information | |
|-style="background:silver" | |-style="background:silver" | ||
|128 || || Demande d'écho | |128 || || Demande d'écho | ||
Line 54: | Line 54: | ||
|129 || || Réponse d'écho | |129 || || Réponse d'écho | ||
|-style="background:silver" | |-style="background:silver" | ||
− | + | !colspan=3 |Gestion des groupes multicast ([[MLD]], RFC 2710) | |
|- | |- | ||
|130 || || Requête d'abonnement | |130 || || Requête d'abonnement | ||
Line 62: | Line 62: | ||
|132 || || Fin d'abonnement | |132 || || Fin d'abonnement | ||
|-style="background:silver" | |-style="background:silver" | ||
− | + | !colspan=3 | [[Découverte de voisins]] (RFC 2461) | |
|- | |- | ||
|133 || || Sollicitation du routeur | |133 || || Sollicitation du routeur | ||
Line 74: | Line 74: | ||
|137 || || Redirection | |137 || || Redirection | ||
|-style="background:silver" | |-style="background:silver" | ||
− | + | !colspan=3 | Renumérotation des routeurs (expérimental, RFC 2894) | |
|- | |- | ||
|138 || || renumérotation des routeurs : | |138 || || renumérotation des routeurs : | ||
Line 84: | Line 84: | ||
| || 255 || - remise à zéro du numéro de séquence | | || 255 || - remise à zéro du numéro de séquence | ||
|- | |- | ||
− | + | !colspan=3 | Recherche d'information sur un noeud (expérimental) | |
|-style="background:silver" | |-style="background:silver" | ||
|139 || || Demande d'information | |139 || || Demande d'information | ||
Line 90: | Line 90: | ||
|140 || || Réponse | |140 || || Réponse | ||
|-style="background:silver" | |-style="background:silver" | ||
− | + | ! colspan=3| Découverte de voisins inverse (RFC 3122) | |
|- | |- | ||
|141 || || Sollicitation | |141 || || Sollicitation | ||
Line 96: | Line 96: | ||
|142 || || Annonce | |142 || || Annonce | ||
|- | |- | ||
− | + | !colspan=3 | Gestion des groupes multicast (MLDv2, RFC 3810) | |
|-style="background:silver" | |-style="background:silver" | ||
|143 || || Rapport d'abonnement MLDv2 | |143 || || Rapport d'abonnement MLDv2 | ||
|- | |- | ||
− | + | !colspan=3 | Mobilité (RFC 3775) | |
|-style="background:silver" | |-style="background:silver" | ||
|144 || || Découverte d'agent mère (requête) | |144 || || Découverte d'agent mère (requête) | ||
Line 110: | Line 110: | ||
|147 || || Annonce de préfixe mobile | |147 || || Annonce de préfixe mobile | ||
|-style="background:silver" | |-style="background:silver" | ||
− | + | !colspan=3 | Découverte de voisins sécurisée (SEND, RFC 3971) | |
− | | | + | |- |
|148 || || Sollicitation de chemin de certification | |148 || || Sollicitation de chemin de certification | ||
|-style="background:silver" | |-style="background:silver" | ||
|149 || ||Annonce de chemin de certification | |149 || ||Annonce de chemin de certification | ||
|- | |- | ||
− | + | ! colspan=3 | Mobilité (expérimental) | |
|-style="background:silver" | |-style="background:silver" | ||
|150 || || Protocoles de mobilité expérimentaux, tels que Seamoby | |150 || || Protocoles de mobilité expérimentaux, tels que Seamoby |
Revision as of 14:39, 18 November 2005
ICMPv6 (See [RFC2463])
Le protocole de contrôle d'IP a été revu. Dans IPv4, ICMP (Internet Message Control Protocol) sert à la détection d'erreurs (par exemple : équipement inaccessible, durée de vie expirée,...), au test (par exemple ping), à la configuration automatique des équipements (redirection ICMP, découverte des routeurs). Ces trois fonctions ont été mieux définies dans IPv6. De plus ICMPv6 intègre les fonctions de gestion des groupes de multicast (MLD : Multicast Listener Discovery) qui sont effectuées par le protocole IGMP (Internet Group Message Protocol) dans IPv4. ICMPv6 reprend aussi les fonctions du protocole ARP utilisé par IPv4.
Le protocole se voit attribuer le numéro 58. Le format générique des paquets ICMPv6 est donné See Format générique d'un message ICMP :
- Le champ type (See Valeurs des champs type et code d'ICMPv6) code la nature du message ICMPv6. Contrairement à IPv4 où la numérotation ne suivait aucune logique, les valeurs inférieures à 127 sont réservées aux messages d'erreur. Les autres valeurs réservées aux messages. d'information, parmi lesquels se trouvent ceux utilisés par le protocole découverte des voisins (neighbor discovery) pour la configuration automatique des équipements.
- Le champ code précise la cause du message ICMPv6.
- Le champ checksum permet de vérifier l'intégrité du paquet ICMP. Ce champ est calculé avec le pseudo-en-tête décrit See Checksum au niveau transport.
Les messages ICMPv6 de compte rendu d'erreur contiennent dans la partie données le paquet IPv6 ayant provoqué l'erreur. Pour éviter des problèmes de fragmentation puisqu'il est difficilement envisageable de mettre en ?uvre la découverte du MTU, la longueur du message ICMPv6 est limitée à 1 280 octets et par conséquent le contenu du paquet IPv6 peut être tronqué.
type | code | nature |
---|---|---|
Gestion des erreurs | ||
1 | Destination inaccessible : | |
0 | - aucune route vers la destination | |
1 | - la communication avec la destination est administrativement interdite | |
2 | - hors portée de l'adresse source | |
3 | - l'adresse est inaccessible | |
4 | - le numéro de port est inaccessible | |
2 | Paquet trop grand | |
3 | Temps dépassé : | |
0 | - limite du nombre de sauts atteinte | |
1 | - temps de réassemblage dépassé | |
4 | Erreur de paramètre : | |
0 | - champ d'en-tête erroné | |
1 | - champ d'en-tête suivant non reconnu | |
2 | - option non reconnue | |
Information | ||
128 | Demande d'écho | |
129 | Réponse d'écho | |
Gestion des groupes multicast (MLD, RFC 2710) | ||
130 | Requête d'abonnement | |
131 | Rapport d'abonnement | |
132 | Fin d'abonnement | |
Découverte de voisins (RFC 2461) | ||
133 | Sollicitation du routeur | |
134 | Annonce du routeur | |
135 | Sollicitation d'un voisin | |
136 | Annonce d'un voisin | |
137 | Redirection | |
Renumérotation des routeurs (expérimental, RFC 2894) | ||
138 | renumérotation des routeurs : | |
0 | - commande | |
1 | - résultat | |
255 | - remise à zéro du numéro de séquence | |
Recherche d'information sur un noeud (expérimental) | ||
139 | Demande d'information | |
140 | Réponse | |
Découverte de voisins inverse (RFC 3122) | ||
141 | Sollicitation | |
142 | Annonce | |
Gestion des groupes multicast (MLDv2, RFC 3810) | ||
143 | Rapport d'abonnement MLDv2 | |
Mobilité (RFC 3775) | ||
144 | Découverte d'agent mère (requête) | |
145 | Découverte d'agent mère (réponse) | |
146 | Sollicitation de préfixe mobile | |
147 | Annonce de préfixe mobile | |
Découverte de voisins sécurisée (SEND, RFC 3971) | ||
148 | Sollicitation de chemin de certification | |
149 | Annonce de chemin de certification | |
Mobilité (expérimental) | ||
150 | Protocoles de mobilité expérimentaux, tels que Seamoby |
Contents
Destination inaccessible
Ce message est émis par un routeur intermédiaire quand le paquet ne peut pas être transmis parce que soit :
- le routeur ne trouve pas dans ses tables la route vers la destination (code = 0) ;
- le franchissement d'un équipement de type firewall est interdit ("raison administrative", code = 1) ;
- l'adresse destination ne peut être atteinte avec l'adresse source fournie, par exemple si le message est adressé à un destinataire hors du lien, l'adresse source ne doit pas être une adresse lien-local (code = 2) ;
- toute autre raison comme par exemple la tentative de router une adresse locale au lien (code = 3) ;
- le destinataire peut aussi émettre un message ICMPv6 de ce type quand le port destination contenu dans le paquet n'est pas affecté à une application (code = 4).
Paquet trop grand
Ce message ICMPv6 est utilisé par le protocole de découverte du MTU pour trouver la taille optimale des paquets IPv6 pour qu'ils puissent traverser les routeurs. Ce message contient la taille du MTU acceptée par le routeur pour que la source puisse efficacement adapter la taille des données. Ce champ manquait cruellement dans les spécifications initiales de IPv4, ce qui compliquait la découverte de la taille maximale des paquets utilisables sur l'ensemble du chemin (cf. See Configuration automatique et contrôle See Mécanisme de découverte du PMTU (RFC 1981)). Pour IPv4, le See [RFC1191] proposait déjà une modification du comportement des routeurs pour y inclure cette information. Temps dépassé
Ce message indique que le paquet a été rejeté par le routeur :
- soit parce que le champ nombre de sauts a atteint 0 (code = 0) ;
- soit qu'un fragment s'est perdu et le temps alloué au réassemblage a été dépassé (code = 1).
Ce message sert aussi à la commande traceroute pour déterminer le chemin pris par les paquets.
Erreur de paramètre
Ce message est émis par un n?ud ayant détecté une erreur de syntaxe dans l'en-tête du paquet IP ou des extensions. Le champ code révèle la cause de l'erreur :
- la syntaxe de l'en-tête n'est pas correcte (code = 0) ;
- le numéro en-tête suivant n'est pas reconnu (code = 1) ;
- une option de l'extension (par exemple proche-en-proche ou destination) n'est pas reconnue et le codage des deux bits de poids fort oblige à rejeter le paquet (code = 2).
Le champ pointeur indique l'octet où l'erreur est survenue dans le paquet retourné.
Demande et réponse d'écho
Ces deux messages servent en particulier à la commande ping permettant de tester l'accessibilité d'une machine. Le principe de fonctionnement est le même que pour IPv4, une requête (type 128) est envoyée vers l'équipement dont on veut tester le fonctionnement, celui-ci répond par le message réponse d'écho (type 129). Le champ identificateur permet de distinguer les réponses dans le cas où plusieurs commandes ping seraient lancées simultanément sur la machine. Le champ numéro de séquence permet d'associer la réponse à une requête pour mesurer le temps d'aller et retour dans le cas où les demandes sont émises en continu et que le délai de propagation est élevé. Le champ données permet d'augmenter la taille du message pour les mesures.
Le chapitre sur l'API, See mini-ping, donne un exemple de programmation utilisant ces messages ICMPv6.