Résumé

  • L'instance RREQ se propage de l'origine vers la cible, mais découvre la route de données utilisée de la cible vers l'origine ; l'instance RREP fait l'inverse.
  • L'adresse des extrémités, les InstanceID locaux et Delta empêchent de mélanger deux découvertes simultanées, sans attester l'état actuel du forwarding.
  • Un verdict de service bidirectionnel doit joindre deux preuves d'installation, deux observations de paquets et un aller-retour applicatif corrélé dans le même intervalle.

L'asymétrie n'est pas une anomalie

Un nœud peut recevoir correctement le signal d'un voisin sans lui offrir une liaison de qualité équivalente au retour. Puissance, interférences, débit et calendrier radio peuvent rendre les deux directions différentes. Le RFC 9854 part de cette réalité au lieu de la masquer sous une route supposée réversible. AODV-RPL déclenche une découverte pair-à-pair lorsque l'origine doit envoyer des données et qu'aucune route existante ne satisfait les exigences de l'application.

Le protocole construit alors une instance RREQ temporaire, enracinée à l'OrigNode. Les DIO portant RREQ avancent vers le TargNode. Pourtant, la route établie par cette instance sert aux données dans le sens TargNode → OrigNode. La réponse de contrôle RREP part du TargNode vers l'OrigNode ; lorsqu'un second DODAG est nécessaire, sa route sert aux données OrigNode → TargNode. Ce croisement entre direction du contrôle et direction des données est la première information qu'un tableau d'exploitation doit préserver.

Le bit S résume une propriété précise du premier parcours. Il part à 1 et ne reste à 1 à chaque saut que si l'autre direction de la liaison satisfait aussi la fonction objectif. Si la cible reçoit S=1, elle peut renvoyer le RREP en unicast sur le parcours déjà connu ; le DODAG RREP n'a pas besoin d'être construit. Si S=0, la cible doit créer une instance RREP distincte, diffuser son DIO et laisser les routeurs choisir des parents pour la direction cible. Les relais du retour peuvent donc être différents des relais de l'aller.

Le RFC ne normalise pas la méthode qui déclare une liaison symétrique. Il évoque des observations locales, des tests et, à titre d'exemple, ETX/RSSI. S=1 est donc la conclusion du mécanisme d'évaluation retenu dans un instant donné. Ce n'est pas une mesure universelle de la radio, encore moins la preuve qu'un paquet ultérieur a franchi chaque saut.

Delta protège l'association, pas le service

Les RPLInstanceID sont choisis localement. Deux découvertes entre les mêmes extrémités peuvent coexister avec des fonctions objectif différentes ; deux origines peuvent aussi retenir le même octet. Pour lever l'ambiguïté, l'identité RREQ combine la valeur locale et l'adresse de l'origine. L'identité RREP combine la valeur choisie par la cible et l'adresse de celle-ci.

Si la valeur RREP attendue est déjà utilisée par une instance active ayant le même DODAGID, la cible doit en sélectionner une autre. Le champ Delta de six bits indique l'incrément appliqué à la valeur RREQ ; le calcul reboucle après 255. Un routeur soustrait Delta pour retrouver la valeur RREQ à inscrire dans l'état de route vers la cible. Grâce au DODAGID, le nombre cesse d'être interprété hors contexte.

Ce dispositif évite qu'une réponse soit rattachée à la mauvaise requête ou à la mauvaise fonction objectif. Son succès signifie que l'état de contrôle peut être classé correctement. Il ne montre pas que tous les routeurs nécessaires ont conservé l'instance, que les deux routes ont été installées, ni qu'elles appartiennent encore à une même fenêtre temporelle. Deux identifiants correctement appariés peuvent désigner deux états déjà périmés.

Trois horloges qu'il ne faut pas confondre

Le Rank n'est pas un délai, un nombre de sauts ou un coût total. Le RFC 9854 reprend l'avertissement du RFC 6550 : il exprime une position relative dans une version de DODAG et n'est pas nécessairement un bon indicateur de distance ou de coût. Le RFC 6551 décrit séparément les métriques et contraintes dont une fonction objectif peut se servir. Une amélioration de Rank ne permet donc pas d'annoncer un gain de latence ou de fiabilité non mesuré.

Les numéros de séquence traitent la fraîcheur logique. L'origine incrémente son numéro lors d'une nouvelle découverte. Orig SeqNo accompagne l'état vers l'origine ; Dest SeqNo, porté par ART, accompagne l'état vers la cible. Une entrée plus ancienne pour la même source, destination et instance doit être supprimée. Cette comparaison ordonne les générations ; elle ne confirme ni l'écriture dans la table matérielle ni l'usage par le trafic.

Enfin, L limite le temps pendant lequel un nœud appartient au DODAG temporaire. Il est explicitement indépendant de la durée de vie de la route. Cette dernière vient de la configuration du DODAG et peut être prolongée par l'usage réel. Il faut donc distinguer l'instance encore active, l'entrée de route non expirée et le dernier paquet observé.

Deux modes, deux formes de reçu

Avec H=1, chaque routeur intermédiaire construit des entrées saut par saut : source, instance, destination, prochain saut, durée de vie et séquence. Sur le chemin vers la cible, le prochain saut d'un parcours asymétrique vient du parent préféré du DODAG RREP. Le reçu probant doit nommer le nœud, le sens, le prochain saut et la génération installée.

Avec H=0, le chemin réside dans un Address Vector. Dans le cas asymétrique, le vecteur RREP représente les interfaces réellement traversées par la seconde vague de contrôle ; dans le cas symétrique, le vecteur RREQ est renvoyé inchangé. La détection d'une adresse déjà présente limite certaines boucles. Le vecteur reste néanmoins une intention de source routing. Il n'atteste pas que chaque interface est encore disponible lorsque le paquet arrive.

À réception du RREP, l'origine « peut commencer » à envoyer les données de l'application. La formule ferme la phase de découverte, pas la question du résultat. Entre cette autorisation et un service réussi se trouvent l'installation, l'expiration, le forwarding, la réponse de la cible et le retour de cette réponse.

Le dossier d'un échange complet

Le premier reçu fixe l'identité de découverte : extrémités, DODAGID, valeurs RREQ/RREP, Delta, fonction objectif, H, S, séquences et temps de l'observateur. Le deuxième atteste la route TargNode → OrigNode, nœud par nœud ou par vecteur. Le troisième fait la même chose, indépendamment, pour OrigNode → TargNode.

Le quatrième reçu observe les paquets. Les compteurs ou sondes doivent être directionnels, horodatés, accompagnés de leur dénominateur et de l'historique des remises à zéro. Un paquet reçu dans un sens ne dit rien sur l'autre. Deux tests unidirectionnels éloignés dans le temps ne prouvent pas que les routes ont coexisté.

Le cinquième appartient à l'application : identifiant unique de requête, acceptation par la cible, génération de la réponse et réception par l'origine avant l'échéance déclarée. C'est seulement à ce niveau que l'aller-retour devient un résultat de service.

La sécurité optionnelle de RPL et l'analyse de menaces du RFC 7416 encadrent l'authentification et la protection des messages. Le RFC 9854 rappelle pourtant qu'un routeur malveillant possédant la clé peut publier de fausses informations, et qu'un vecteur ou un G-RREP forgé peut soutenir une boucle ou un déni de service. L'appartenance au domaine de clés borne les locuteurs ; elle ne certifie pas le résultat applicatif.

Le registre IANA de RPL consigne MOP 4 et les options RREQ, RREP et ART. La notice RFC Editor et le Datatracker établissent le statut Proposed Standard et l'historique du document ; la recherche d'errata ne renvoyait aucun erratum correspondant au moment de la revue. Ces registres décrivent la norme, pas son déploiement.

La primauté du code en fonctionnement de Heng Lu impose ici une lecture simple : un message valide et une valeur enregistrée ne remplacent pas l'observation du système exécuté. Le principe de spécification initiale minimale et d'adoption volontaire garde l'invariant commun étroit. La distinction des couches de réalité empêche enfin l'élégance symbolique de la paire de se faire passer pour un aller-retour exécuté.

Sources