Aller au contenu principal

3. Vue d'ensemble du protocole (Protocol Overview)

Ce protocole résout un ensemble de problèmes liés à l'interaction entre les nœuds attachés à la même liaison. Il définit des mécanismes pour résoudre chacun des problèmes suivants :

Découverte de routeur (Router Discovery) : Comment les hôtes localisent les routeurs qui résident sur une liaison attachée.

Découverte de préfixe (Prefix Discovery) : Comment les hôtes découvrent l'ensemble des préfixes d'adresse qui définissent quelles destinations sont sur liaison pour une liaison attachée. (Les nœuds utilisent les préfixes pour distinguer les destinations qui résident sur liaison de celles uniquement atteignables via un routeur.)

Découverte de paramètres (Parameter Discovery) : Comment un nœud apprend les paramètres de liaison (tels que le MTU de liaison) ou les paramètres Internet (tels que la valeur de limite de sauts) à placer dans les paquets sortants.

Autoconfiguration d'adresse (Address Autoconfiguration) : Introduit les mécanismes nécessaires pour permettre aux nœuds de configurer une adresse pour une interface de manière sans état. L'autoconfiguration d'adresse sans état est spécifiée dans [ADDRCONF].

Résolution d'adresse (Address resolution) : Comment les nœuds déterminent l'adresse de couche liaison d'une destination sur liaison (par exemple, un voisin) en ne disposant que de l'adresse IP de la destination.

Détermination du prochain saut (Next-hop determination) : L'algorithme de mappage d'une adresse de destination IP vers l'adresse IP du voisin auquel le trafic pour la destination doit être envoyé. Le prochain saut peut être un routeur ou la destination elle-même.

Détection d'inaccessibilité des voisins (Neighbor Unreachability Detection) : Comment les nœuds déterminent qu'un voisin n'est plus accessible. Pour les voisins utilisés comme routeurs, des routeurs par défaut alternatifs peuvent être essayés. Pour les routeurs et les hôtes, la résolution d'adresse peut être effectuée à nouveau.

Détection d'adresse dupliquée (Duplicate Address Detection) : Comment un nœud détermine si une adresse qu'il souhaite utiliser est déjà utilisée par un autre nœud ou non.

Redirection (Redirect) : Comment un routeur informe un hôte d'un meilleur nœud de premier saut pour atteindre une destination particulière.

Neighbor Discovery définit cinq types de paquets ICMP différents : Une paire de messages Router Solicitation et Router Advertisement, une paire de messages Neighbor Solicitation et Neighbor Advertisement, et un message Redirect. Les messages servent les objectifs suivants :

Router Solicitation : Lorsqu'une interface est activée, les hôtes peuvent envoyer des Router Solicitations qui demandent aux routeurs de générer des Router Advertisements immédiatement plutôt qu'à leur prochain moment programmé.

Router Advertisement : Les routeurs annoncent leur présence avec divers paramètres de liaison et Internet soit périodiquement, soit en réponse à un message Router Solicitation. Les Router Advertisements contiennent des préfixes utilisés pour déterminer si une autre adresse partage la même liaison (détermination sur liaison) et/ou la configuration d'adresse, une valeur de limite de sauts suggérée, etc.

Neighbor Solicitation : Envoyé par un nœud pour déterminer l'adresse de couche liaison d'un voisin, ou pour vérifier qu'un voisin est toujours accessible via une adresse de couche liaison mise en cache. Les Neighbor Solicitations sont également utilisées pour la détection d'adresse dupliquée.

Neighbor Advertisement : Une réponse à un message Neighbor Solicitation. Un nœud peut également envoyer des Neighbor Advertisements non sollicités pour annoncer un changement d'adresse de couche liaison.

Redirect : Utilisé par les routeurs pour informer les hôtes d'un meilleur premier saut pour une destination.

Sur les liaisons capables de multicast, chaque routeur multicast périodiquement un paquet Router Advertisement annonçant sa disponibilité. Un hôte reçoit des Router Advertisements de tous les routeurs, construisant une liste de routeurs par défaut. Les routeurs génèrent des Router Advertisements suffisamment fréquemment pour que les hôtes apprennent leur présence en quelques minutes, mais pas assez fréquemment pour s'appuyer sur une absence d'annonces pour détecter une défaillance de routeur ; un algorithme séparé de détection d'inaccessibilité des voisins fournit la détection de défaillance.

Les Router Advertisements contiennent une liste de préfixes utilisés pour la détermination sur liaison et/ou la configuration d'adresse autonome ; les drapeaux associés aux préfixes spécifient les utilisations prévues d'un préfixe particulier. Les hôtes utilisent les préfixes sur liaison annoncés pour construire et maintenir une liste utilisée pour décider quand la destination d'un paquet est sur liaison ou au-delà d'un routeur. Notez qu'une destination peut être sur liaison même si elle n'est couverte par aucun préfixe sur liaison annoncé. Dans de tels cas, un routeur peut envoyer un Redirect informant l'expéditeur que la destination est un voisin.

Les Router Advertisements (et les drapeaux par préfixe) permettent aux routeurs d'informer les hôtes sur la façon d'effectuer l'autoconfiguration d'adresse. Par exemple, les routeurs peuvent spécifier si les hôtes doivent utiliser DHCPv6 et/ou la configuration d'adresse autonome (sans état).

Les messages Router Advertisement contiennent également des paramètres Internet tels que la limite de sauts que les hôtes doivent utiliser dans les paquets sortants et, facultativement, des paramètres de liaison tels que le MTU de liaison. Cela facilite l'administration centralisée des paramètres critiques qui peuvent être définis sur les routeurs et automatiquement propagés à tous les hôtes attachés.

Les nœuds accomplissent la résolution d'adresse en multicastant un Neighbor Solicitation qui demande au nœud cible de retourner son adresse de couche liaison. Les messages Neighbor Solicitation sont multicastés à l'adresse multicast solicited-node de l'adresse cible. La cible retourne son adresse de couche liaison dans un message Neighbor Advertisement unicast. Une seule paire de paquets requête-réponse suffit pour que l'initiateur et la cible résolvent les adresses de couche liaison de chacun ; l'initiateur inclut son adresse de couche liaison dans le Neighbor Solicitation.

Les messages Neighbor Solicitation peuvent également être utilisés pour déterminer si plus d'un nœud s'est vu attribuer la même adresse unicast. L'utilisation des messages Neighbor Solicitation pour la détection d'adresse dupliquée est spécifiée dans [ADDRCONF].

La détection d'inaccessibilité des voisins détecte la défaillance d'un voisin ou la défaillance du chemin avant vers le voisin. Pour ce faire, il faut une confirmation positive que les paquets envoyés à un voisin atteignent réellement ce voisin et sont traités correctement par sa couche IP. La détection d'inaccessibilité des voisins utilise des confirmations de deux sources. Lorsque c'est possible, les protocoles de couche supérieure fournissent une confirmation positive qu'une connexion fait des « progrès en avant », c'est-à-dire que les données précédemment envoyées sont connues pour avoir été livrées correctement (par exemple, de nouveaux accusés de réception ont été reçus récemment). Lorsque la confirmation positive ne vient pas de tels « indices », un nœud envoie des messages Neighbor Solicitation unicast qui sollicitent des Neighbor Advertisements comme confirmation d'accessibilité du prochain saut. Pour réduire le trafic réseau inutile, les messages de sonde ne sont envoyés qu'aux voisins auxquels le nœud envoie activement des paquets.

En plus de traiter les problèmes généraux ci-dessus, Neighbor Discovery gère également les situations suivantes :

Changement d'adresse de couche liaison (Link-layer address change) - Un nœud qui sait que son adresse de couche liaison a changé peut multicaster quelques paquets Neighbor Advertisement (non sollicités) à tous les nœuds pour mettre à jour rapidement les adresses de couche liaison mises en cache qui sont devenues invalides. Notez que l'envoi d'annonces non sollicitées est uniquement une amélioration de performance (par exemple, non fiable). L'algorithme de détection d'inaccessibilité des voisins garantit que tous les nœuds découvriront de manière fiable la nouvelle adresse, bien que le délai puisse être un peu plus long.

Équilibrage de charge entrant (Inbound load balancing) - Les nœuds avec des interfaces répliquées peuvent vouloir équilibrer la réception des paquets entrants sur plusieurs interfaces réseau sur la même liaison. De tels nœuds ont plusieurs adresses de couche liaison attribuées à la même interface. Par exemple, un seul pilote réseau pourrait représenter plusieurs cartes d'interface réseau comme une seule interface logique ayant plusieurs adresses de couche liaison. Neighbor Discovery permet à un routeur d'effectuer un équilibrage de charge pour le trafic qui lui est adressé en permettant aux routeurs d'omettre l'adresse de couche liaison source des paquets Router Advertisement, forçant ainsi les voisins à utiliser des messages Neighbor Solicitation pour apprendre les adresses de couche liaison des routeurs. Les messages Neighbor Advertisement retournés peuvent alors contenir des adresses de couche liaison qui diffèrent selon, par exemple, qui a émis la sollicitation. Cette spécification ne définit pas de mécanisme permettant aux hôtes d'équilibrer les paquets entrants. Voir [LD-SHRE].

Adresses anycast (Anycast addresses) - Les adresses anycast identifient l'un d'un ensemble de nœuds fournissant un service équivalent, et plusieurs nœuds sur la même liaison peuvent être configurés pour reconnaître la même adresse anycast. Neighbor Discovery gère les anycasts en faisant en sorte que les nœuds s'attendent à recevoir plusieurs Neighbor Advertisements pour la même cible. Toutes les annonces pour les adresses anycast sont marquées comme étant des annonces non-Override. Une annonce non-Override est une annonce qui ne met pas à jour ou ne remplace pas les informations envoyées par une autre annonce. Ces annonces sont discutées plus tard dans le contexte des messages Neighbor Advertisement. Cela invoque des règles spécifiques pour déterminer laquelle des annonces potentiellement multiples doit être utilisée.

Annonces proxy (Proxy advertisements) - Un nœud désireux d'accepter des paquets au nom d'une adresse cible incapable de répondre aux Neighbor Solicitations peut émettre des Neighbor Advertisements non-Override. Les annonces proxy sont utilisées par les agents domestiques Mobile IPv6 pour défendre les adresses des nœuds mobiles lorsqu'ils se déplacent hors liaison. Cependant, ce n'est pas prévu comme un mécanisme général pour gérer les nœuds qui, par exemple, n'implémentent pas ce protocole.

3.1. Comparaison avec IPv4 (Comparison with IPv4)

Le protocole Neighbor Discovery IPv6 correspond à une combinaison des protocoles IPv4 Address Resolution Protocol [ARP], ICMP Router Discovery [RDISC] et ICMP Redirect [ICMPv4]. En IPv4, il n'y a pas de protocole ou de mécanisme généralement accepté pour la détection d'inaccessibilité des voisins, bien que le document des exigences des hôtes [HR-CL] spécifie certains algorithmes possibles pour la détection de passerelle morte (un sous-ensemble des problèmes que la détection d'inaccessibilité des voisins aborde).

Le protocole Neighbor Discovery fournit une multitude d'améliorations par rapport à l'ensemble des protocoles IPv4 :

  • La découverte de routeur fait partie de l'ensemble de protocoles de base ; il n'est pas nécessaire que les hôtes « écoutent » les protocoles de routage.

  • Les Router Advertisements portent les adresses de couche liaison ; aucun échange de paquets supplémentaire n'est nécessaire pour résoudre l'adresse de couche liaison du routeur.

  • Les Router Advertisements portent des préfixes pour une liaison ; il n'est pas nécessaire d'avoir un mécanisme séparé pour configurer le « masque réseau ».

  • Les Router Advertisements permettent l'autoconfiguration d'adresse.

  • Les routeurs peuvent annoncer un MTU pour que les hôtes l'utilisent sur la liaison, garantissant que tous les nœuds utilisent la même valeur MTU sur les liaisons dépourvues d'un MTU bien défini.

  • Les multicasts de résolution d'adresse sont « répartis » sur 16 millions (2^24) d'adresses multicast, réduisant considérablement les interruptions liées à la résolution d'adresse sur les nœuds autres que la cible. De plus, les machines non-IPv6 ne devraient pas être interrompues du tout.

  • Les Redirects contiennent l'adresse de couche liaison du nouveau premier saut ; une résolution d'adresse séparée n'est pas nécessaire lors de la réception d'une redirection.

  • Plusieurs préfixes peuvent être associés à la même liaison. Par défaut, les hôtes apprennent tous les préfixes sur liaison à partir des Router Advertisements. Cependant, les routeurs peuvent être configurés pour omettre certains ou tous les préfixes des Router Advertisements. Dans de tels cas, les hôtes supposent que les destinations sont hors liaison et envoient le trafic aux routeurs. Un routeur peut alors émettre des redirections selon les besoins.

  • Contrairement à IPv4, le destinataire d'une redirection IPv6 suppose que le nouveau prochain saut est sur liaison. En IPv4, un hôte ignore les redirections spécifiant un prochain saut qui n'est pas sur liaison selon le masque réseau de la liaison. Le mécanisme de redirection IPv6 est analogue à la facilité XRedirect spécifiée dans [SH-MEDIA]. Il devrait être utile sur les liaisons non-broadcast et média partagé dans lesquelles il est indésirable ou impossible pour les nœuds de connaître tous les préfixes pour les destinations sur liaison.

  • La détection d'inaccessibilité des voisins fait partie de la base, ce qui améliore considérablement la robustesse de la livraison de paquets en présence de routeurs défaillants, de liaisons partiellement défaillantes ou partitionnées, ou de nœuds qui changent leurs adresses de couche liaison. Par exemple, les nœuds mobiles peuvent se déplacer hors liaison sans perdre de connectivité en raison de caches ARP obsolètes.

  • Contrairement à ARP, Neighbor Discovery détecte les défaillances de demi-liaison (en utilisant la détection d'inaccessibilité des voisins) et évite d'envoyer du trafic aux voisins avec lesquels la connectivité bidirectionnelle est absente.

  • Contrairement à la découverte de routeur IPv4, les messages Router Advertisement ne contiennent pas de champ de préférence. Le champ de préférence n'est pas nécessaire pour gérer les routeurs de différentes « stabilités » ; la détection d'inaccessibilité des voisins détectera les routeurs morts et basculera vers un routeur fonctionnel.

  • L'utilisation d'adresses link-local pour identifier de manière unique les routeurs (pour les messages Router Advertisement et Redirect) permet aux hôtes de maintenir les associations de routeur en cas de renumérotation du site pour utiliser de nouveaux préfixes globaux.

  • En définissant la limite de sauts à 255, Neighbor Discovery est immunisé contre les expéditeurs hors liaison qui envoient accidentellement ou intentionnellement des messages ND. En IPv4, les expéditeurs hors liaison peuvent envoyer à la fois des Redirects ICMP et des messages Router Advertisement.

  • Placer la résolution d'adresse au niveau de la couche ICMP rend le protocole plus indépendant du média que ARP et permet d'utiliser des mécanismes génériques d'authentification et de sécurité de couche IP selon les besoins.

Neighbor Discovery prend en charge les liaisons avec différentes propriétés. En présence de certaines propriétés, seul un sous-ensemble des mécanismes du protocole ND est entièrement spécifié dans ce document :

point-à-point (point-to-point) - Neighbor Discovery gère de telles liaisons tout comme les liaisons multicast. (Le multicast peut être facilement fourni sur les liaisons point-à-point, et les interfaces peuvent se voir attribuer des adresses link-local.)

multicast - Neighbor Discovery fonctionne sur les liaisons capables de multicast comme décrit dans ce document.

accès multiple sans diffusion (non-broadcast multiple access, NBMA) - Redirect, détection d'inaccessibilité des voisins et détermination du prochain saut devraient (SHOULD) être implémentés comme décrit dans ce document. La résolution d'adresse et le mécanisme de livraison des Router Solicitations et Advertisements sur les liaisons NBMA ne sont pas spécifiés dans ce document. Notez que si les hôtes prennent en charge la configuration manuelle d'une liste de routeurs par défaut, les hôtes peuvent acquérir dynamiquement les adresses de couche liaison de leurs voisins à partir des messages Redirect.

média partagé (shared media) - Le message Redirect est modélisé d'après le message XRedirect dans [SH-MEDIA] afin de simplifier l'utilisation du protocole sur les liaisons de média partagé.

Cette spécification ne traite pas des problèmes de média partagé qui ne concernent que les routeurs, tels que :

  • Comment les routeurs échangent des informations d'accessibilité sur une liaison de média partagé.
  • Comment un routeur détermine l'adresse de couche liaison d'un hôte, dont il a besoin pour envoyer des messages de redirection à l'hôte.
  • Comment un routeur détermine qu'il est le routeur de premier saut pour un paquet reçu.

Le protocole est extensible (par la définition de nouvelles options) de sorte que d'autres solutions pourraient être possibles à l'avenir.

MTU variable (variable MTU) - Neighbor Discovery permet aux routeurs de spécifier un MTU pour la liaison, que tous les nœuds utilisent ensuite. Tous les nœuds sur une liaison doivent (MUST) utiliser le même MTU (ou unité de réception maximale) pour que le multicast fonctionne correctement. Sinon, lors du multicast, un expéditeur, qui ne peut pas savoir quels nœuds recevront le paquet, ne pourrait pas déterminer une taille de paquet minimale que tous les récepteurs peuvent traiter (ou unité de réception maximale).

accessibilité asymétrique (asymmetric reachability) - Neighbor Discovery détecte l'absence d'accessibilité symétrique ; un nœud évite les chemins vers un voisin avec lequel il n'a pas de connectivité symétrique.

La détection d'inaccessibilité des voisins identifiera généralement de telles demi-liaisons et le nœud s'abstiendra de les utiliser.

Le protocole peut vraisemblablement être étendu à l'avenir pour trouver des chemins viables dans des environnements qui manquent de connectivité réflexive et transitive.

3.3. Sécurisation des messages Neighbor Discovery (Securing Neighbor Discovery Messages)

Les messages Neighbor Discovery sont nécessaires pour diverses fonctions. Plusieurs fonctions sont conçues pour permettre aux hôtes de vérifier la propriété d'une adresse ou le mappage entre les adresses de couche liaison et de couche IP. Les vulnérabilités liées à Neighbor Discovery sont discutées dans la section 11.1. Une solution générale pour sécuriser Neighbor Discovery est en dehors du périmètre de cette spécification et est discutée dans [SEND]. Cependant, la section 11.2 explique comment et sous quelles contraintes l'en-tête d'authentification IPsec (Authentication Header, AH) ou la charge utile de sécurité encapsulante (Encapsulating Security Payload, ESP) peuvent être utilisés pour sécuriser Neighbor Discovery.