Résumé

  • OSPFv2 classe les versions d’une même LSA sur une ligne d’entiers signés, de 0x80000001 à 0x7fffffff ; un retour direct au début ferait paraître la nouvelle version plus ancienne qu’une copie maximale encore présente.
  • L’émetteur transforme donc la LSA maximale en retrait MaxAge, la diffuse et attend qu’elle puisse être supprimée avant de repartir au numéro initial : l’effacement sépare deux époques de numérotation.

Avant la ligne, il y eut une sucette

La première spécification publiée d’OSPF avait donné à ses numéros de séquence une forme singulière. Dans RFC 1131, en octobre 1989, une tige de démarrage débouchait sur une boucle. Cet espace « en sucette » devait permettre à un routeur renaissant de dépasser les traces d’une incarnation précédente, puis à une longue exécution de continuer à numéroter en cercle.

OSPF version 2 rompit avec ce dessin. RFC 1247, publié en juillet 1991, rangea la sucette parmi les problèmes corrigés. Les instances d’une annonce d’état de liens seraient désormais ordonnées comme des entiers signés sur 32 bits. La valeur 0x80000000 restait interdite ; 0x80000001 devenait InitialSequenceNumber, et 0x7fffffff, MaxSequenceNumber.

La comparaison ordinaire gagnait en netteté : le plus grand numéro désigne l’instance la plus récente. Mais supprimer le cercle rendait visible une question jusque-là cachée. Que faire lorsque la dernière valeur est déjà portée par une annonce qu’il faut encore modifier ?

Revenir au début aurait donné raison au passé

Le numéro ne mesure pas l’âge de tout le réseau. Il ne s’applique qu’aux instances qui partagent une identité de LSA : type LS, Link State ID et Advertising Router. Une copie au maximum doit donc battre une copie au numéro initial tant que les deux circulent sous cette identité.

Un simple débordement numérique créerait une contradiction. L’émetteur appellerait « nouvelle » une LSA à 0x80000001, tandis que ses voisins, respectant la spécification, conserveraient l’ancienne 0x7fffffff. Plus le flooding fonctionnerait bien, plus l’ancienne vérité résisterait.

Le temps écoulé ne suffit pas à nettoyer cette situation. Une LSA peut rester chez un voisin, attendre une retransmission ou réapparaître pendant la synchronisation d’une base. Le silence d’un lien n’atteste pas que toutes les mémoires distribuées ont oublié.

OSPFv2 fit donc du passage au début non pas un calcul circulaire, mais un changement d’époque précédé d’une révocation.

MaxAge servait de retrait actif

RFC 2328 prescrit à l’émetteur qui atteint le maximum de reprendre l’instance courante, de fixer son LS age à MaxAge, puis de la reflooder. Faire vieillir ainsi une annonce avant son échéance naturelle porte le nom de premature aging.

Ce pouvoir appartient à l’origine : un routeur peut vieillir prématurément la LSA qu’il a émise, pas effacer à volonté les annonces d’autrui. L’identité, le numéro maximal et le checksum du contenu demeurent. Seul l’âge change ; il n’entre d’ailleurs pas dans le checksum, puisqu’il doit augmenter au cours du transport et du stockage.

Dans cette procédure, MaxAge ne décrit pas seulement une donnée très ancienne. À numéro et checksum identiques, l’instance MaxAge est jugée plus récente que sa jumelle encore vivante. Le retrait peut ainsi remplacer les copies positives au lieu d’attendre que chacune expire séparément.

La portée reste étroite : la LSA est retirée de la base de flooding OSPF. Cela ne prouve ni la rupture physique d’un lien, ni l’arrêt d’un routeur, ni l’absence de toute autre route.

Un retrait devait finir son trajet

Une LSA MaxAge n’est pas jetée dès sa réception. Le routeur la conserve si elle figure encore dans la liste de retransmission d’un voisin. Il la garde également tant qu’un voisin demeure en Exchange ou Loading, car une synchronisation inachevée peut encore transporter l’ancien état.

Pour le redémarrage de la séquence, l’émetteur attend en outre l’acquittement du retrait par tous ses voisins adjacents. Ce n’est qu’après la sortie sûre de la LSA maximale qu’il peut émettre InitialSequenceNumber.

La baisse apparente du numéro reçoit alors un sens précis. Le minimum ne rivalise plus avec le maximum dans une même génération : la génération précédente a été révoquée, propagée et écartée des échanges en cours. Le petit nombre ouvre une époque distincte.

L’appendice de RFC 1247 révèle à quel point la course avait été prise au sérieux. Le traitement des Database Description fut modifié afin qu’une LSA ne disparaisse pas pendant qu’un voisin est encore susceptible d’en apprendre l’ancienne version. OSPF ne fabrique pas un instant universel où toutes les bases changent ensemble ; il empêche les deux époques de se croiser sans preuve.

Le voisin pouvait rendre sa mémoire au routeur redémarré

L’épuisement naturel de 32 bits est lointain. Le redémarrage rend pourtant le même problème concret. Un routeur perd son état volatil, mais ses voisins conservent une LSA qu’il avait lui-même émise avec un numéro élevé. Sa première copie locale paraît alors plus vieille que son propre passé.

La règle de RFC 2328 oblige l’émetteur à écouter. S’il doit toujours produire cette LSA, il repart au-delà du numéro reçu. S’il ne la produit plus, il en diffuse une version MaxAge. Si la copie revenue se trouve déjà à MaxSequenceNumber, il la purge avant d’ouvrir la nouvelle séquence.

Les opérateurs parlent souvent de « fight-back ». Le terme suggère une attaque, alors qu’un voisin honnête peut simplement avoir gardé ce que le redémarrage a oublié. L’Advertising Router possède l’autorité d’origine et de retrait ; cette autorité ne lui donne pas le droit d’ignorer le numéro supérieur conservé dans le domaine.

Séquence, checksum et âge partageaient le jugement

La séquence fournit le premier critère de récence. À séquences égales, OSPF compare les checksums, et la valeur non signée la plus grande l’emporte. Si séquence et checksum coïncident, MaxAge puis certaines différences d’âge tranchent encore ; des âges assez proches décrivent la même instance.

Chaque champ couvre un risque différent. La séquence marque une réémission volontaire. Le checksum révèle deux contenus divergents portant le même numéro. L’âge permet au retrait de supplanter sa copie vivante sans transformer un simple délai de propagation en nouvelle version.

Un numéro LSA n’est donc ni une date, ni la version globale de la base. Hors de son identité précise, sa grandeur ne confère aucune priorité.

DoNotAge économisa le rafraîchissement, pas la révocation

OSPFv2 rafraîchit normalement ses LSA auto-émises toutes les trente minutes, avant que MaxAge ne soit atteint après une heure. Même une topologie stable consomme ainsi du flooding et des numéros. Pour les circuits à la demande, RFC 1793 introduisit DoNotAge. RFC 4136 étendit ensuite la réduction du rafraîchissement aux topologies stables.

DoNotAge supprime un renouvellement périodique, non la capacité de corriger ou de retirer. Une modification de contenu impose encore une réémission et un flooding. MaxAge garde son rôle de retrait explicite, et l’émetteur garde sa responsabilité.

RFC 5340 conserva les mécanismes fondamentaux de flooding et de comparaison dans OSPFv3 pour IPv6, malgré de nouveaux formats et de nouvelles portées. La difficulté vient de la mémoire distribuée, pas de la longueur d’une adresse IP.

Tous les compteurs OSPF n’étaient pas le même compteur

Les paquets Database Description ont leur propre séquence pendant la synchronisation. Les paquets authentifiés disposent aussi de mécanismes anti-rejeu. RFC 6863 distingue ce dernier sujet du numéro présent dans chaque LSA.

La séquence LSA répond à la question : quelle version de cette affirmation de routage doit gagner ? La séquence d’authentification demande si un paquet protégé est ancien dans un contexte de clé donné. Leurs propriétaires, durées de vie et problèmes de rollover sont différents. Une alerte commune masquerait l’automate réellement en faute.

L’absence était un résultat observable

OSPF n’a pas choisi un nombre plus grand ni parié sur l’oubli spontané. La LSA maximale devenait elle-même le véhicule de sa révocation. Les acquittements, retransmissions et états de voisinage établissaient que l’ancienne époque ne circulait plus. Alors seulement le plus petit nombre légal pouvait redevenir le plus récent.

L’épisode donne à l’histoire d’Internet une définition exigeante de l’oubli. Dans un système distribué, l’absence d’un message n’est pas une suppression. Il faut un auteur légitime, un trajet de propagation et des indices de fin. Le vide entre deux époques de séquence fut ainsi un véritable objet de protocole.

Sources et limites des preuves

Ces normes établissent le fonctionnement et son évolution, pas la fréquence actuelle de l’épuisement, le défaut d’un constructeur ni la cause d’une panne particulière. MaxAge retire une LSA dans OSPF ; il ne prouve pas une indisponibilité mondiale. Le retour d’une LSA auto-émise après redémarrage ne démontre pas à lui seul une injection hostile.