Le protocole de découverte des voisins (Neighbor Discovery) permet à un équipement de s'intégrer dans l'environnement de réseau local, c'est à dire le lien sur lequel sont physiquement transmis les paquets IPv6.La découverte des voisins ne consiste pas à établir une liste exhaustive de tous les équipements connectés au lien mais de gérer uniquement ceux avec lesquels il dialogue.
Fonctionnalités du protocole :
Résolution d'adresses
Le principe est très proche du protocole ARP d'IPv4. La principale différence vient de l'emploi de messages standards ICMP6 à la place de la définition d'un autre protocole. Comme pour ARP, une table de correspondance entre les adresses physiques et les adresses IPv6 est construite. Une requête de résolution d'adresse est une "sollicitation de voisin" véhiculée par un paquet ICMP6 dont l'adresse de destination est une adresse multicast.
Fonction d'inaccessibilité des voisins
Cette fonction appelée aussi "NUD" (Neighbor Unreachability Detection) n'existe pas en IPv4. Elle permet d'effacer dans le cache des voisins les entrées correspondants aux voisins inaccessibles (panne, changement d'adresse ...).
Si un routeur devient inaccessible, la table de routage peut être modifiée dynamiquement pour prendre en compte un autre routeur.
La configuration automatique
Le protocole de découverte des voisins est le successeur de l'ARP d'IPv4. Il participe à l'autoconfiguration , véritable atout d'IPv6.
- Découverte des routeurs : Elle permet aux équipements de découvrir les routeurs qui sont sur leur lien physique.
- Découverte des préfixes : L'équipement apprend le(s) préfixe(s) utilisé(s) sur le réseau en fonction des annonces faites par les routeurs et en y ajoutant l'identificateur d'interface de l'équipement, il construit son adresse IPv6. C'est le principe vu précédemment avec l'autoconfiguration.
- Detection des adresses dupliquées : Comme les adresses sont construites automatiquement, il existe des risques de duplication d'adresses. Un entête permet à l'interface de s'assurer qu'elle est la seule à posséder l'adresse qui lui a été attribuée.
Afficher le voisinage
ip -6 neigh show [dev péripherique]
Lorsque vous ne disposez que d'une interface réseau, inutile de la préciser. Voici un exemple de commande :
morph@ns1:~$ ip -6 neigh show morph@ns1:~$ ping6 -I eth2 fe80::20d:61ff:fe22:3476 PING fe80::20d:61ff:fe22:3476(fe80::20d:61ff:fe22:3476) from fe80::20e:35ff:fe8f:6c99 eth2: 56 data bytes 64 bytes from fe80::20d:61ff:fe22:3476: icmp_seq=1 ttl=64 time=6.08 ms 64 bytes from fe80::20d:61ff:fe22:3476: icmp_seq=2 ttl=64 time=3.06 ms 64 bytes from fe80::20d:61ff:fe22:3476: icmp_seq=3 ttl=64 time=3.10 ms --- fe80::20d:61ff:fe22:3476 ping statistics --- morph@ns1:~$ ip -6 neigh show fe80::20d:61ff:fe22:3476 dev eth2 lladdr 00:0d:61:22:34:76 router nud stale
0
On peut constater que le cache de voisinage est vide avant l'exécution du ping6 sur un autre poste. Le comportement de cette commande est donc très proche de la commande arp d'IPv4.
Pour afficher les autres possibilités :
ip -6 neigh help
Les messages du protocole
- Sollicitation du voisin ou Neighbor solicitation : ce message permet d'obtenir des informations d'un voisin, c'est-à-dire situé sur le même lien physique. Le message peut être envoyé au voisin soit explicitement (en unicast) soit vers l'adresse multicast associée à ce voisin. Dans le cas de la détermination d'adresse physique, il correspond à la requête ARP du protocole IPv4.
- Annonce du voisin ou Neighbor advertisement : ce message est émis en réponse à une sollicitation.
Vous pouvez visualiser l'échange des messages du protocole en faisant une capture de trames avec ethereal lors d'une commande "ping6" par exemple .