Résumé

  • RFC 1267 imposait l’envoi initial de la table BGP complète, puis de ses seuls changements ; chaque locuteur devait donc conserver la version courante de la table de son pair pendant la connexion.
  • RFC 4271 a fait de la fermeture de session un retrait implicite, tandis que RFC 4724 a créé une exception négociée : des routes marquées périmées peuvent survivre provisoirement, jusqu’au remplacement, au marqueur End-of-RIB ou à l’expiration.
  • RFC 8538 a rendu le refus de cette exception explicite avec Hard Reset ; RFC 9494 a allongé la mémoire seulement sous étiquette LLGR, préférence minimale, limites de propagation et activation positive par famille.

Le silence ne pouvait pas terminer une table

RFC 1267 organisait BGP-3 autour d’une économie de répétition. Deux locuteurs ouvraient une connexion de transport, échangeaient les messages d’ouverture, puis envoyaient la table de routage BGP entière. Par la suite, seuls les changements circulaient.

Cette efficacité exigeait une mémoire commune. Pour appliquer un incrément, il fallait connaître l’état complet auquel il se rapportait. Chaque locuteur conservait donc la version courante de la table de chacun de ses pairs pendant toute la durée de la connexion.

La durée n’était pas un détail. La table mémorisée était l’entrée d’une conversation déterminée, pas un registre permanent de propriété ou d’autorisation. Les KEEPALIVE vérifiaient la vivacité de la connexion. Une erreur déclenchait une NOTIFICATION puis la fermeture ; l’automate libérait les ressources associées avant une éventuelle nouvelle tentative.

Une connexion active confirmait ainsi l’existence d’un canal de contrôle, non la justesse de chaque route. Une route apprise n’attestait ni une entrée de transfert concordante, ni l’arrivée d’un paquet. RFC 1267 définissait la mémoire nécessaire aux incréments, pas une vérité indépendante de la session.

Fermer la connexion retirait l’entrée du pair

RFC 4271 a rendu cette comptabilité plus lisible en distinguant les Adj-RIBs-In apprises des pairs, la Loc-RIB issue de la sélection locale et les Adj-RIBs-Out préparées pour l’annonce. La succession des traitements relie ces registres sans les confondre.

Le texte énumère trois retraits : une NLRI retirée explicitement, une route remplacée par une autre, ou la fermeture de la connexion BGP. Dans ce dernier cas, toutes les routes que les deux locuteurs s’étaient annoncées sont implicitement retirées du service.

Le traitement d’erreur efface l’Adj-RIB-In liée à la connexion, invalide les choix locaux dépendants, recalcule les meilleures routes et diffuse les retraits ou remplacements nécessaires. Ce n’est pas l’affirmation que le voisin physique a disparu. C’est une règle de validité : sans la conversation, l’entrée de contrôle propre à ce pair ne reste pas courante par défaut.

Du matériel de transfert peut encore contenir une conséquence de l’ancienne décision. Ce fait doit être observé séparément. La persistance d’un état dérivé ne lui accorde pas, à elle seule, une nouvelle autorité.

Le redémarrage gracieux a ouvert une parenthèse

RFC 4724 a autorisé une rétention temporaire quand le plan de contrôle BGP redémarre alors que le transfert pourrait avoir été préservé. La parenthèse commence par une capacité négociée. Elle porte un état de redémarrage, un Restart Time et des informations de transfert pour des familles AFI/SAFI déterminées.

Ces éléments répondent à des questions différentes. Comprendre l’extension ne signifie pas redémarrer. Redémarrer ne signifie pas avoir conservé le transfert. Et une indication de transfert ne démontre pas le passage réel des paquets.

Le récepteur ne conserve que les routes des familles négociées et les marque stale, c’est-à-dire périmées. Ce marquage ne les approuve pas ; il empêche leur ancienneté de disparaître derrière leur utilisation provisoire.

La parenthèse possède plusieurs fermetures. Si la session n’est pas rétablie avant Restart Time, les routes périmées sont supprimées. Si la nouvelle session n’affirme pas l’état de transfert, omet la famille ou n’annonce plus la capacité, la suppression est immédiate. Les nouveaux UPDATE remplacent les anciennes entrées correspondantes.

Reste la question décisive : comment savoir que l’absence d’autres routes est une information et non une attente ? End-of-RIB y répond. Même une famille vide peut émettre un UPDATE vide pour déclarer que son flux initial est terminé. Après ce marqueur, toute route encore stale dans la famille est retirée.

Cette clôture donne une forme vérifiable au compromis : conservation, étiquette d’incertitude, remplacement, preuve de fin, purge. Elle ne garantit pas le rétablissement du service. RFC 4724 avertit que des boucles ou des trous noirs transitoires restent possibles, notamment lorsque IGP et BGP redémarrent ensemble sans continuité compatible.

Hard Reset a rendu le refus lisible

Toutes les erreurs ne justifient pas que l’ancienne table survive. RFC 8538 a ajouté le bit N, négocié par les deux pairs, afin d’étendre le comportement gracieux à la réception de NOTIFICATION et à l’expiration du Hold Time.

Le même document a défini une frontière opposée. Le sous-code Cease/Hard Reset demande le comportement de remise à zéro complète du protocole de base. La raison observée et la décision de ne pas conserver l’état sont deux enregistrements distincts. Hard Reset ne révèle pas seul la cause profonde ; il retire clairement la permission de mémoire.

RFC 8538 exige aussi une minuterie configurable pour l’état stale, propose 180 secondes et interdit que l’infini soit la valeur par défaut. Une erreur répétée ne doit pas pouvoir renouveler indéfiniment une ancienne assertion sans qu’elle redevienne actuelle.

Une mémoire plus longue devait être plus visible

RFC 9494 prolonge la rétention avec Long-Lived Graceful Restart. Les helpers appliquent la communauté transitive LLGR_STALE. Une route NO_LLGR ne peut pas être retenue. Les routes longuement périmées deviennent les moins préférées et ne sont normalement pas annoncées à des pairs sans capacité LLGR.

La Long-Lived Stale Time est définie par AFI/SAFI et peut être réduite localement. L’activation doit être positive pour chaque famille et ne peut être la valeur par défaut. La norme traite donc la durée supplémentaire comme une exposition supplémentaire, pas comme une simple amélioration de disponibilité.

Une route stale de longue durée utilisée pour la joignabilité ordinaire peut provoquer une perte de connectivité. La préférence minimale réduit sa probabilité de sélection sans la rendre sûre. Une limite de propagation réduit son rayon sans prouver que le prochain saut, la politique ou le transfert restent valides.

Sources