BGP Backdoor
Bonjour à tous,
Un petit article court aujourd’hui pour parler d’une fonctionalité assez utile, BGP Backdoor.
Introduction
L’idée est de faire préférer un chemin plus optimal pour le transit des données au lieu de la classique distance administrative pour installer la route dans la table de routage du routeur.
Pour mettre en image tout cela, prenons cette topologie.
Topologie
Plusieurs informations sont à prendre en compte pour bien interpréter le schéma :
- Les routeurs ont comme d’habitude un LAN respectif et deux protocoles de routage configurés, BGP et EIGRP. L’intégralités des routes connectées sont échangées sur les deux protocoles de façon simultanée.
- Les routeurs BGP sont configurés dans leur AS respectif et sont donc entre-eux des voisins eBGP, à l’exception de R1 <-> R2 qui maintiennent uniquement une adjacence EIGRP. Cela a son importance pour la suite.
Si vous vous souvenez, avant d’installer une route dans sa table de routage, le routeur va élire ce qu’il considère comme la meilleure route avec notamment le critère de la distance administrative. C’est ce critère qui va nous intérésser ici.
Rappelez-vous que la distance administrative par défaut des routes internes EIGRP est de 90. Les routes apprises par eBGP ont elles une distance administrative de 20.
Si deux routes identiques se présentent à l’élection, une en EIGRP interne et l’autre en eBGP, vous avez sûrement deviné que c’est la route eBGP qui sera installée dans la table de routage.
Pour rappel, plus la distance administrative est faible, plus le routeur à tendance à lui faire confiance et donc à la préférer par rapport à une autre.
Etude du data path
Une fois que vous avez ce détail important à l’esprit, essayez maintenant de visualiser le chemin que pourra emprunter un paquet portant l’IP source 192.168.1.254 et l’adresse de destination 192.168.2.254.
Si vous avez suivi, vous constaterez que même si le chemin optimal peut vous sembler être le lien série direct entre R1 et R2, ce n’est pas le chemin que va emprunter cette communication. Vérifions avec un traceroute!
R1#trace 192.168.2.254 source lo1 1 192.168.4.10 28 msec 60 msec 56 msec 2 192.168.4.5 28 msec * 52 msec
Si on veut aller plus loin et voir pourquoi nous prenons ce chemin, rendez-vous dans la table de routage.
R1#sh ip route <output omitted> B 192.168.2.0/24 [20/0] via 3.3.3.3, 00:04:45 B 192.168.3.0/24 [20/0] via 3.3.3.3, 00:26:07
Vous voyez que les routes installées dans la table de routage sont les routes eBGP.
Solutions
Comment résoudre ce problème? 2 solutions viennent à l’esprit :
- La modification de l’AD d’EIGRP à 19 pour qu’elle soit « supérieure » aux routes eBGP.
Toutefois, cette solution est à éviter.
Elle impacte le process EIGRP de façon locale en entier et peut provoquer des effets de bords malencontreux, surtout si vous faites de la redistribution mutuelle EIGRP <-> BGP.
- Utiliser les backdoor BGP
Pour la deuxième solution, il suffit de modifier la déclaration d’injection du réseau dans la configuration du routeur qui advertise le réseau de destination.
Par exemple, pour 192.168.2.0/24, advertisé par R2:
router bgp 200 network 192.168.2.0 mask 255.255.255.0 backdoor end ! Reset le process BGP pour prendre en compte les modifications ! Fais tomber toutes les adjacences et routes BGP. ! Ne pas utiliser en production clear ip bgp *
Après l’application de la configuration, regardons l’impact sur R1:
R1#trace 192.168.2.254 source lo1 1 192.168.4.2 40 msec * 44 msec
Vous constatez qu’on passe bien maintenant directement par le lien série connectant R1 à R2. On peut le vérifier à la visualisation de la table de routage qui nous montre que la route EIGRP à bien été installée.
L’impact de la commande backdoor est flagrant. Mais que fait cette commande précisément? En réalité, elle fait changer la distance administrative de la route configurée avec la directive network .. backdoor en lui assignant la valeur de 200, au même titre que d’autres routes iBGP.
De plus, il faut bien comprendre que cette commande empêche le routeur d’advertiser la route via les updates BGP. Par conséquence, il laisse la place à la route « interne » EIGRP, en considérant qu’après l’application de la configuration, la nouvelle AD d’EIGRP 90 est bien inférieure à la nouvelle distance administrative iBGP de la route.
R1#sh ip route D 192.168.2.0/24 [90/2297856] via 192.168.4.2, 00:11:51, Serial1/1 B 192.168.3.0/24 [20/0] via 3.3.3.3, 00:03:15
Mais il reste encore un problème reste à résoudre, saurez-vous le trouver?
Communication asymétrique
Observons le chemin retour du paquet envoyé par R1 avec un traceroute.
R2#trace 192.168.1.254 source lo1 1 192.168.4.6 28 msec 32 msec 8 msec 2 192.168.4.9 32 msec * 52 msec
Vous l’aurez deviné, à cause de la configuration uni-directionnelle de votre backdoor,
vous avez crée une situation où le traffic est devenu asymétrique. C’est-à-dire que le chemin de communication n’est pas le même pour l’aller et le retour des paquets.
Il est donc recommandé d’éxécuter la même opération dans l’autre sens, à savoir dans
notre cas sur R1 :
router bgp 100 network 192.168.1.0 mask 255.255.255.0 backdoor end ! Reset le process BGP pour prendre en compte les modifications ! Fais tomber toutes les adjacences et routes BGP. ! Ne pas utiliser en production clear ip bgp *
Vérifions maintenant!
R2#trace 192.168.1.254 source lo1 1 192.168.4.1 36 msec * 32 msec
Voilà, grâce à cette fonctionnalité, on permet aux routeurs de privilégier les chemins les plus optimaux sans toucher à l’administrative distance des protocoles.
Les fichiers de configuration sont disponibles ici.
— Julien