Résumé

  • La détection d’inaccessibilité des voisins d’IPv6 n’assimilait pas l’expiration d’une preuve à une panne. L’entrée passait de REACHABLE à STALE, restait utilisable et n’était interrogée que lorsqu’un paquet la rendait de nouveau pertinente.
  • DELAY offrait d’abord aux couches supérieures le temps de démontrer une progression. Faute de confirmation, PROBE envoyait des sollicitations ciblées ; RFC 7048 a ensuite créé UNREACHABLE pour rechercher une autre route sans abandonner trop vite l’unique voisin possible.

Deux silences qui ne disaient pas la même chose

Un poste n’a rien envoyé à sa passerelle depuis un moment. La dernière communication avait réussi, l’adresse de couche liaison est encore en cache, mais la preuve n’est plus récente. Ailleurs, une passerelle interrogée plusieurs fois ne répond effectivement plus. Ces deux silences se ressemblent dans un instantané ; le protocole leur donne pourtant des conséquences différentes.

Le premier produit l’état STALE. Le second ne peut être déclaré qu’après une séquence active. Cette séparation existait déjà dans RFC 1970, la première spécification RFC de Neighbor Discovery publiée en 1996. RFC 2461 l’a reprise en 1998, puis RFC 4861 l’a maintenue en 2007.

STALE signifie que plus de ReachableTime millisecondes se sont écoulées depuis la dernière confirmation positive du chemin aller. Aucune action n’est déclenchée tant qu’aucun paquet n’utilise l’entrée. Un cache inutilisé peut donc conserver longtemps une information ancienne sans compromettre la justesse du transfert. Le supprimer périodiquement ne rendrait pas le réseau plus vrai ; il provoquerait seulement des résolutions d’adresse que personne n’avait encore demandées.

Voir un message arriver ne prouvait pas le trajet inverse

NUD, pour Neighbor Unreachability Detection, observe le chemin du point de vue de l’émetteur. Une Router Advertisement reçue prouve que cette annonce a traversé le lien vers l’hôte. Une Neighbor Advertisement spontanée prouve la même direction. Elles ne prouvent pas qu’un paquet récemment envoyé par l’hôte a atteint la couche IP du voisin.

Les RFC ont donc limité la confirmation positive à deux familles de faits. La première est une Neighbor Advertisement sollicitée : la sollicitation a dû atteindre la cible, puis la réponse revenir. La seconde est un indice fourni par la couche supérieure lorsqu’une connexion progresse d’une manière impossible si les paquets antérieurs n’avaient pas franchi le prochain saut.

Avec TCP, un nouvel accusé de réception montre que des données récentes sont arrivées chez le pair. L’arrivée de données nouvelles peut, inversement, attester que des accusés précédents lui sont parvenus. Pour une destination hors lien, cette progression implique que le premier routeur a bien transporté le trafic. UDP ou un routeur qui relaie des paquets n’offrent pas toujours ce type d’indice ; une sonde explicite devient alors nécessaire.

Cette preuve reste technique et courte. Elle n’authentifie pas une personne, ne promet pas la disponibilité future et ne mesure pas l’état complet du service. Elle autorise seulement la réutilisation locale d’une association en cache.

Le paquet utile venait avant la sonde

Après vieillissement, REACHABLE devient STALE. Lorsqu’un paquet doit enfin partir, l’hôte l’envoie avec l’adresse de couche liaison déjà connue et place l’entrée dans DELAY. Par défaut, cette étape dure cinq secondes.

Le délai permet au trafic ordinaire de répondre avant le protocole de contrôle. Une connexion TCP ouverte après une période calme peut fournir presque aussitôt la confirmation recherchée. Si elle le fait, l’entrée redevient REACHABLE sans aucune Neighbor Solicitation supplémentaire.

Sans progression, l’expiration de DELAY déclenche une sollicitation en unicast et l’état PROBE. Le choix de l’unicast exprime précisément la question : l’association connue fonctionne-t-elle encore ? Une résolution multicast demanderait autre chose : quelle adresse de couche liaison correspond maintenant à cette adresse IPv6 ?

La machine graduait ainsi la dépense. Le temps affaiblissait la confiance, l’usage transformait ce doute en besoin, DELAY laissait l’application produire sa propre preuve et PROBE n’intervenait qu’en dernier recours.

Trente secondes n’étaient pas une horloge universelle

RFC 4861 indique une base de 30 secondes pour la joignabilité, un délai initial de cinq secondes, un intervalle de retransmission d’une seconde et trois sollicitations unicast par défaut. Mais la durée effective ReachableTime est tirée entre 0,5 et 1,5 fois la base. Une Router Advertisement peut aussi fournir une base et un intervalle non nuls.

Cette dispersion évite que les machines d’un même lien expirent et sondent en cadence. Elle rappelle aussi qu’une valeur annoncée configure le contrôle sans constituer une confirmation. Le routeur peut influencer la durée pendant laquelle une preuve reste fraîche ; son annonce ne prouve pas, par sa seule réception, que le chemin aller fonctionne.

La suppression rapide créait sa propre panne

Dans la machine de RFC 4861, PROBE répétait une Neighbor Solicitation en unicast. Après la limite configurée — trois transmissions dans les constantes par défaut — l’entrée était supprimée. Si le voisin était un routeur, la détermination du prochain saut pouvait en choisir un autre. Pour une cible directe, le prochain paquet relançait une résolution multicast.

Cette agressivité avait du sens avec plusieurs passerelles indépendantes. Elle devenait fragile lorsqu’un incident de couche 2 durait plus de quelques secondes et qu’aucun autre voisin ne pouvait acheminer le trafic. Supprimer l’entrée n’inventait pas une route ; cela transformait des sondes ciblées en appels multicast.

RFC 6583 a décrit une boucle opérationnelle voisine. Dans un sous-réseau IPv6 immense, des tentatives de résolution vers des adresses inexistantes peuvent saturer le processus Neighbor Discovery. Si cette charge évince l’entretien des entrées utilisées ou les réponses aux sollicitations NUD, les entrées valides disparaissent, le multicast augmente et les flux existants cessent de progresser. Le document recommande donc de donner priorité au travail concernant les voisins actifs.

En 2014, RFC 7048 a nommé le problème sans détour : NUD était « trop impatient ». La mise à jour introduit l’état conceptuel UNREACHABLE. Une entrée qui y passe n’est plus considérée comme connue joignable pour le choix d’un routeur. Une alternative peut donc être essayée rapidement. Pourtant, l’association de couche liaison peut rester en mémoire, les paquets peuvent encore l’emprunter et les sollicitations peuvent continuer avec un recul exponentiel.

La recherche doit finir par passer au multicast afin de découvrir un changement d’adresse de couche liaison. Elle peut s’arrêter quand aucun paquet n’utilise plus l’entrée. L’exemple de RFC 7048 place des reprises à 1, 4, 13 puis 40 secondes et propose 60 secondes comme plafond possible. Il illustre une politique, pas le réglage universel des équipements actuels.

UNREACHABLE a séparé préférence et renoncement

L’ajout décisif n’était pas un simple allongement de minuterie. Il dissociait deux jugements : « ce voisin ne doit plus être préféré » et « toute tentative vers ce voisin doit cesser ».

Avec une autre passerelle, le premier jugement doit être rapide. Sans remplacement, le second mérite davantage de patience. Une convergence spanning tree, une brève perte radio ou un redémarrage d’interface peuvent se résoudre après la fenêtre historique de trois secondes. Le recul exponentiel permet de survivre sans maintenir une rafale permanente.

La définition de la preuve, elle, ne changeait pas. Une réponse sollicitée ou une progression supérieure ramenait l’entrée à REACHABLE. Un message spontané n’y suffisait toujours pas. La mise à jour a corrigé la conséquence d’un échec borné, non le sens de la confirmation.

DAD utilisait les mêmes messages pour une autre décision

RFC 4862 emploie Neighbor Solicitation et Neighbor Advertisement pour la détection d’adresse dupliquée. La ressemblance des paquets ne doit pas masquer la différence de preuve.

DAD intervient avant l’affectation d’une adresse unicast et cherche une revendication concurrente de l’adresse encore tentative. NUD intervient pendant l’usage d’un voisin déjà choisi et éprouve le chemin associé à une entrée de cache. Le silence borné de DAD peut permettre l’affectation. Dans NUD, l’ancienneté entraîne STALE, puis seul l’usage déclenche DELAY et les sondes.

Ni l’un ni l’autre ne confère une identité ou un droit de propriété. Leur discipline tient à la portée locale et explicite de chaque observation.

Sources et limites de preuve

La chronologie et les états proviennent des RFC 1970, 2461 et 4861. RFC 4862 borne DAD, RFC 6583 documente la pression opérationnelle et RFC 7048 modifie la récupération. Ces textes ne prouvent ni valeurs par défaut actuelles chez un fournisseur, ni part de déploiement, ni taille de cache, ni taux de panne, ni conformité d’un réseau nommé.