Pourquoi la LFA ? (Contexte des boucles et de la convergence)
Lorsqu’une liaison ou un routeur tombe en panne dans un réseau IP, le trafic est inévitablement perturbé jusqu’à ce que le protocole de routage ait reconvergé sur la nouvelle topologie . En temps normal, cette convergence peut prendre un certain temps (par exemple plusieurs centaines de millisecondes ou plus), ce qui entraîne une perte temporaire de paquets. De plus, durant cette phase transitoire, des boucles de routage temporaires (microloops) peuvent se produire si les routeurs ne mettent pas à jour leurs routes exactement au même instant. Or, les applications modernes sont très sensibles à la moindre coupure – il suffit de penser au streaming ou à la voix sur IP qui supportent mal une pause ne serait-ce que d’une seconde.
LFA (Loop-Free Alternate) est justement un mécanisme conçu pour réduire ces interruptions. Son but est double : prévenir les boucles de routage et accélérer la convergence du réseau en cas de défaillance . En d’autres termes, il s’agit d’un système de routage de secours local : chaque routeur va essayer de précalculer un chemin alternatif “sans boucle” vers la destination, qu’il pourra utiliser immédiatement si la route principale tombe . L’objectif est de diminuer drastiquement la perte de paquets pendant que le routage normal se réajuste .
Cette approche est locale au routeur en panne (on parle de réparation locale) et n’a pas besoin de coordination particulière avec les autres routeurs . En ce sens, LFA reprend l’idée du Fast Reroute déjà utilisé dans les réseaux MPLS (qui offrait des basculements en moins de 50 ms via des tunnels de secours), mais l’applique au routage IP classique, sans nécessiter de technologies complexes supplémentaires .
Comment fonctionne la LFA (routage alternatif sans boucle)
Le principe de la LFA est simple à expliquer : pour chaque destination vers laquelle un routeur envoie du trafic, le routeur cherche parmi ses voisins un voisin de secours potentiel, c’est-à-dire un chemin alternatif ne risquant pas de créer de boucle. Plus formellement, un voisin peut servir de Loop-Free Alternate pour atteindre une destination donnée si ce voisin est capable de router les paquets vers la destination sans repasser par le routeur en question. En pratique, cela revient souvent à vérifier que le voisin est “plus proche” de la destination que le routeur d’origine ne l’est .
Si cette condition est remplie, alors ce voisin est considéré comme un candidat sûr : on peut lui envoyer le trafic de secours sans craindre qu’il ne nous le renvoie en arrière, d’où le terme sans boucle. Par ailleurs, selon la situation, l’itinéraire de secours peut être conçu pour protéger seulement la liaison (LFA lien) ou carrément tout le routeur voisin (LFA nœud) : dans ce dernier cas, on choisit un chemin de secours qui évite complètement de passer par le voisin principal, de façon à être couvert même si ce voisin (le routeur) était lui-même en panne .
Une fois qu’un tel voisin de secours est identifié, le routeur installe immédiatement cette route alternative dans sa table de forwarding (par exemple la CEF sur les routeurs Cisco). Ainsi, si jamais la liaison principale tombe, le basculement est quasi-instantané : le trafic est envoyé sur l’itinéraire de secours précalculé sans attendre la convergence IGP complète. Dans la pratique, ceci permet d’atteindre des temps de coupure très faibles, de l’ordre de quelques dizaines de millisecondes seulement . C’est un énorme gain comparé à une convergence classique qui pourrait prendre plusieurs centaines de ms ou quelques secondes. Le tout se fait de manière transparente pour le reste du réseau : aucun nouveau protocole n’est requis, chaque routeur peut appliquer LFA localement s’il le souhaite .
Exemple concret : panne de lien entre deux routeurs
Pour illustrer l’intérêt de la LFA, prenons un petit réseau carré de quatre routeurs :
Note : Tous les liens ont un coût IGP de 1 sauf le lien R2 –> R3 qu’est de 2.
Imaginons que R3 héberge la destination (par exemple un serveur ou un réseau local). En temps normal, R2 enverra les paquets à R3 en empruntant la liaison directe R2–R3. Maintenant, supposons que ce lien direct tombe en panne.
- Sans LFA : R2 va détecter la coupure et informer le reste du réseau (via IGP), mais durant ce laps de temps il ne sait plus comment joindre R3. Les paquets destinés à R3 seront temporairement perdus (souvent on dit qu’ils sont droppés). Il faudra attendre que le protocole de routage recalcule une nouvelle route vers R3 (par exemple R2 pourrait finir par apprendre qu’il doit passer par R1 puis R4 pour atteindre R3). Ce réapprentissage prend un certain temps durant lequel le service est interrompu.
- Avec LFA : R2 aurait précalculé un chemin de secours. Dans notre exemple, on voit que R2 a un voisin alternatif R1, par lequel il peut rejoindre R3 en faisant le détour R2 → R1 → R4 → R3. Si ce chemin remplit les conditions (pas de risque de boucle), R2 l’aura installé à l’avance comme backup. Ainsi, dès que la liaison R2–R3 tombe, R2 bascule immédiatement sur l’envoi des paquets via R1 (sans attendre la convergence globale). Le trafic peut continuer à atteindre R3 en passant “par l’autre côté” du carré. Mis à part une microcoupure de quelques millisecondes, l’utilisateur ne voit pas de différence – le service reste disponible.
Dans cet exemple, R1 était bel et bien un voisin de secours valide pour R2 : R1 pouvait atteindre R3 via R4 sans devoir repasser par R2, ce qui en fait une route sans boucle. Le concept paraît simple, mais il faut noter qu’il dépend étroitement de la topologie du réseau. Dans certaines situations, un routeur peut ne trouver aucun voisin satisfaisant ces critères. C’est le cas par exemple si tous les chemins alternatifs ramènent inévitablement le trafic vers le routeur initial, ce qui recréerait une boucle.
Limites de la LFA : quand ça ne suffit pas
En effet, la couverture offerte par LFA n’est pas toujours complète. Selon des études, dans un réseau typique seulement 40 à 60 % des destinations peuvent être protégées par une LFA locale . Autrement dit, il reste des scénarios de panne où aucun voisin immédiat n’offre de chemin de secours satisfaisant. Un exemple classique est celui de certaines topologies en anneau (“ring”) avec des coûts de liens symétriques : il peut arriver que le voisin direct d’un routeur ait son propre meilleur chemin qui repasse par le routeur en question le disqualifiant comme secours. Reprenons notre scénario : si R2 n’avait pas eu de voisin comme R1 offrant un détour sans boucle, il n’aurait pas pu utiliser LFA pour protéger la liaison vers R3. C’est le cas si on change le coût IGP l’interface R1 –> R4 à 3.
C’est pour remédier à ces cas non couverts qu’a été introduit le Remote LFA. Comme son nom l’indique, il s’agit d’aller chercher un routeur de secours non pas directement adjacent, mais plus loin dans le réseau (d’où « remote »). L’idée est d’augmenter le pourcentage de situations où on a un backup viable. En permettant d’utiliser un routeur de secours distant à un ou deux sauts au-delà, on améliore nettement la couverture de protection (on passe souvent de ~50% à la grande majorité des cas protégés) . En particulier, Remote LFA a été conçu pour traiter efficacement les topologies en anneau où la LFA classique échoue souvent .
Le Remote LFA en pratique
Comment un routeur peut-il utiliser un voisin « lointain » comme secours ? Prenons un cas concret (tiré d’un scénario réel) : un routeur R1 envoie normalement le trafic vers un destinataire via son voisin R5 (chemin principal court). Il a bien un autre voisin R2, mais celui-ci n’est d’aucun secours car le plus court chemin de R2 vers la destination repasse par R1 – si R1 essayait d’envoyer les paquets à R2, ce dernier les lui renverrait, ce qui créerait une boucle . En revanche, un peu plus loin dans le réseau se trouve un routeur R3 qui, lui, a un chemin vers la destination (via R4 et R5) ne dépendant pas de R1. L’astuce du Remote LFA va consister à atteindre R3 directement depuis R1, même s’ils ne sont pas voisins immédiats. Pour cela, R1 établit un tunnel spécial jusqu’à R3 et y envoie les paquets de secours, contournant ainsi le voisin problématique R2 . Une fois arrivés à R3, ces paquets continuent leur route normalement vers la destination (R3 les envoie à R4, puis R5, etc.). Cette méthode de routage de secours via un routeur intermédiaire distant est appelée Remote LFA (pour « Loop-Free Alternate à distance ») .
Le choix du routeur distant (appelé nœud PQ dans la littérature) n’est pas fait au hasard. Il doit satisfaire deux conditions essentielles : (1) être joignable depuis le routeur d’origine sans emprunter le lien défaillant, et (2) pouvoir lui-même atteindre la destination sans passer par ce lien . Dans notre exemple, R3 remplit bien ces deux critères (R1 peut joindre R3 autrement que via R2, et R3 atteint la destination sans dépendre de R1 ni R2). R3 devient donc le nœud de réparation choisi. Ensuite, R1 va configurer automatiquement un tunnel vers R3 pour l’utiliser en cas de besoin. Typiquement, ce tunnel est implémenté via MPLS (LDP ciblé) – en effet, Cisco précise que la seule méthode de tunnel prise en charge pour Remote LFA est MPLS.
Lorsqu’une panne survient (par exemple la liaison R1–R5 se coupe dans notre scénario), R1 enverra immédiatement les paquets destinés à la zone de R5 non pas vers R5 (chemin principal, désormais impossible) ni vers R2 (qui causerait une boucle), mais encapsulés dans le tunnel vers R3. Ce dernier, en réceptionnant ces paquets, les relaiera naturellement vers R4 puis R5, atteignant la destination. On a ainsi contourné la panne rapidement et sans boucle.
Grâce au Remote LFA, on parvient à couvrir une bien plus grande variété de pannes locales qu’avec LFA seule. Néanmoins, il faut noter que même cette méthode a ses limites théoriques : elle ne garantit pas un backup pour absolument 100% des scénarios de défaillance possibles . De plus, elle introduit un peu de complexité supplémentaire, notamment parce qu’elle s’appuie sur des tunnels (MPLS ou autres) et doit maintenir des sessions spéciales entre routeurs de secours . Dans la majorité des réseaux OSPF/IS-IS, Remote LFA a tout de même été un progrès significatif en apportant une protection pour la quasi-totalité des pannes avec un coût raisonnable. Pour les cas vraiment pathologiques ou pour chercher la perfection, des solutions plus avancées comme TI-LFA (Topology Independent LFA) ont ensuite vu le jour, notamment pour Segment Routing, afin d’assurer une couverture de 100% des failles possibles . Mais cela sort du cadre de notre discussion.
Driss JABBAR
Driss JABBAR
Co-Fondateur de la société MHD-EXPERTs et Architect réseaux avec plus de 16 ans d'expérience dans la conception et l'implémentation des architectures complexes LAN/WAN/DC/Cloud Networking. Pendant son parcours professionnelle, Driss a travaillé chez des intégrateurs et aussi des opérateurs. Driss possède actuellement trois certifications d'expertise Cisco CCIE RS & SP et CCDE.
En dehors du travail, Driss consacre plus de temps pour sa famille mais il réserve toujours un petit créneau pour apprendre des nouvelles technologies ou pour regarder un match de foot de son club préféré.
Driss est contributeur du blog MHD et joignable à l’adresse : driss.jabbar@mhd-experts.com