Ce document aide à dépanner les boucles de routage CEF (Cisco Express Forwarding) et le routage sous-optimal causés par une contiguïté Cisco Express Forwarding mise en cache valide qui signale l'interface incorrecte. Une contiguïté avec une interface incorrecte est créée pour les raisons suivantes :
Une route statique pointe directement vers une interface à accès multiple.
Une contiguïté Cisco Express Forwarding valide est créée à la suite des réponses du protocole ARP (Proxy Address Resolution Protocol).
Utilisez ces ressources afin de mieux comprendre certains des concepts utilisés dans ce document :
Ce document n'est pas limité à des versions de matériel et de logiciel spécifiques.
For more information on document conventions, refer to the Cisco Technical Tips Conventions.
Le routeur R1 se connecte à R3 via Serial 8/0 et le routeur R2 se connecte à R4 via Serial 8/0. R1 et R2 sont connectés via Ethernet 0/0, comme le montre cette figure.
R2 reçoit des mises à jour de préfixe eBGP (Border Gateway Protocol) externes pour 10.10.34.0/24 de R4. R2 propage ce préfixe à R1 via le protocole BGP interne (iBGP).
R2 dispose d'une route statique par défaut (0.0.0.0/0) qui pointe vers l'adresse IP Serial 8/0 de R4 10.10.24.4.
R2 dispose également d’une route par défaut flottante de secours (route IP 0.0.0.0 0.0.0 Ethernet0/0 10) qui pointe vers l’interface Ethernet 0/0 pour acheminer les paquets si la connexion série entre R2 et R4 échoue.
R1 dispose d’une route par défaut qui pointe vers l’interface Serial 8/0 de R3 avec l’adresse IP 10.10.13.3.
Le trafic IP destiné à 10.10.34.0/24 est bouclé entre R1 et R2. Observez la sortie de la commande traceroute sur R1.
R1#traceroute 10.10.34.4 Type escape sequence to abort. Tracing the route to 10.10.34.4 1 192.168.12.2 20 msec 20 msec 20 msec 2 192.168.12.1 8 msec 12 msec 8 msec 3 192.168.12.2 8 msec 8 msec 12 msec 4 192.168.12.1 12 msec ...
Notez que le trafic destiné à l’adresse 10.10.34.4 passe entre l’adresse Ethernet 0/0 de R1 (adresse IP 192.168.12.1) et l’adresse Ethernet 0/0 de R2 (adresse IP 192.168.12.2). Idéalement, le trafic de R1 destiné à 10.10.34.0/24 doit aller à R2 en raison du préfixe appris par iBGP 10.10.34.0/24. Ensuite, à partir de R2, le trafic doit être acheminé vers R4. Cependant, la sortie de la commande traceroute confirme une boucle de routage entre R1 et R2.
R1 |
---|
hostname R1 ! ip subnet-zero ! ip cef ! interface Ethernet0/0 ip address 192.168.12.1 255.255.255.0 ! interface Serial8/0 ip address 10.10.13.1 255.255.255.0 ! router bgp 11 no synchronization bgp log-neighbor-changes neighbor 10.10.13.3 remote-as 12 neighbor 192.168.12.2 remote-as 11 no auto-summary ! ip route 0.0.0.0 0.0.0.0 10.10.13.3 |
R2 |
---|
hostname R2 ! ip cef ! interface Ethernet0/0 ip address 192.168.12.2 255.255.255.0 ! interface Serial8/0 ip address 10.10.24.2 255.255.255.0 ! router bgp 11 no synchronization bgp log-neighbor-changes network 192.168.12.0 neighbor 10.10.24.4 remote-as 10 neighbor 192.168.12.1 remote-as 11 neighbor 192.168.12.1 next-hop-self no auto-summary ! ip route 0.0.0.0 0.0.0.0 10.10.24.4 ip route 0.0.0.0 0.0.0.0 Ethernet0/0 10 ! |
Puisque les paquets destinés à 10.10.34.4 sont bouclés entre R1 et R2, commencez à résoudre les problèmes. Vérifiez d'abord le routage IP sur R1. La sortie de commande show ip route 10.10.34.0 confirme le prochain saut de 192.168.12.2 pour les paquets destinés à 10.10.34.0/24. Cela correspond à la commande traceroute first hop, où les paquets sont envoyés au prochain saut 192.168.12.2, qui confirme que les paquets sont commutés correctement sur R1.
R1#show ip route 10.10.34.0 Routing entry for 10.10.34.0/24 Known via "bgp 11", distance 200, metric 0 Tag 10, type internal Last update from 192.168.12.2 00:22:59 ago Routing Descriptor Blocks: * 192.168.12.2, from 192.168.12.2, 00:22:59 ago Route metric is 0, traffic share count is 1 AS Hops 1
L’étape suivante consiste à vérifier la table de routage IP de R2. Comme le montre le résultat de la commande show ip route 10.10.34.0, les paquets destinés à 10.10.34.0 doivent être acheminés vers le tronçon suivant 10.10.24.4 sur l'interface Serial 8/0. Cependant, la commande traceroute affiche les paquets repassés à R1 à l'adresse IP 192.168.12.1. Il est nécessaire d'étudier plus en détail pourquoi les paquets destinés à 10.10.34.0 sont commutés sur R2 au prochain saut 192.168.12.1 (comme dans le résultat de la commande traceroute) au lieu de 10.10.24.4.
R2#show ip route 10.10.34.0 Routing entry for 10.10.34.0/24 Known via "bgp 11", distance 20, metric 0 Tag 10, type external Last update from 10.10.24.4 00:42:32 ago Routing Descriptor Blocks: * 10.10.24.4, from 10.10.24.4, 00:42:32 ago Route metric is 0, traffic share count is 1 AS Hops 1
À ce stade, il est important de comprendre que dans un réseau à commutation de transfert Cisco Express, une décision de transfert de paquets consiste en :
Recherche dans la table de routage de la correspondance de préfixe la plus longue.
Recherche FIB (Transmission Information Base).
Puisque la table de routage est vérifiée, consultez la base de données FIB de Cisco Express Forwarding. Dans les résultats de la commande show ip cef 10.10.34.4 detail, notez que les commutateurs Cisco Express Forwarding 10.10.34.4 sortent Ethernet 0/0 au lieu du tronçon suivant 10.10.24.4 sortent Serial 8/0 (comme indiqué dans la show ip route 10.10.10.3 sortie de la commande4.0). Cette divergence crée des boucles dans le réseau.
R2#show ip cef 10.10.34.4 detail 10.10.34.4/32, version 19, cached adjacency 10.10.34.4 0 packets, 0 bytes via 10.10.34.4, Ethernet0/0, 0 dependencies next hop 10.10.34.4, Ethernet0/0 valid cached adjacency
L'étape suivante consiste à examiner la table de contiguïté de Cisco Express Forwarding et à voir comment Cisco Express Forwarding apprend à commuter les paquets via Ethernet 0/0. Notez que la contiguïté est créée en raison du protocole ARP.
R2#show adjacency ethernet 0/0 detail | begin 10.10.34.4 IP Ethernet0/0 10.10.34.4(5) 50 packets, 2100 bytes AABBCC006500AABBCC0066000800 ARP 03:02:00
Cette sortie de commande show ip arp est une confirmation.
R2#show ip arp 10.10.34.4 Protocol Address Age (min) Hardware Addr Type Interface Internet 10.10.34.4 60 aabb.cc00.6500 ARPA Ethernet0/0
Ensuite, découvrez pourquoi cette entrée ARP a été créée lorsqu’il y a une route IP dans la table de routage. Examinez à nouveau la table de routage.
R2#show run | include ip route 0.0.0.0 ip route 0.0.0.0 0.0.0.0 10.10.24.4 ip route 0.0.0.0 0.0.0.0 Ethernet0/0 10
Si la connexion série échoue entre R2 et R4, tout le trafic est acheminé avec l’utilisation d’une route statique flottante en sortie d’Ethernet 0/0, car R2 dispose d’une route statique flottante qui pointe vers l’interface à accès multiple Ethernet 0/0 et non vers l’adresse IP Ethernet 192.168.12.1 de R1. Par conséquent, pour toutes les destinations inconnues, le routeur R2 envoie une requête ARP via l’interface Ethernet0/0. Dans ce cas, R2 a perdu la route plus spécifique vers le réseau 10.10.34.0. Par conséquent, lorsque le paquet de données arrive pour les hôtes de ce réseau, il génère une requête ARP via l’interface Ethernet. Étant donné que le proxy ARP est activé par défaut sur l'interface Ethernet de R1 et qu'il dispose d'une route par défaut pointant vers R3, il répond par une réponse ARP proxy avec sa propre adresse MAC. Par conséquent, R2 envoie tout le trafic à R1, et R1 transfère tout le trafic avec l'utilisation de sa route par défaut (0.0.0.0/0) vers AS 12, et par conséquent vers 10.10.34.4 via Internet.
Lorsque R2 reçoit la réponse ARP proxy de R1, il crée une contiguïté /32 valide Cisco Express Forwarding qui pointe vers l'interface Ethernet 0/0. Cette entrée de Cisco Express Forwarding n'expire pas tant que le routeur ARP proxy R1 n'est pas présent sur le segment Ethernet. Ainsi, l'entrée /32 Cisco Express Forwarding continue d'être utilisée pour commuter les paquets par Cisco Express Forwarding, même après la sauvegarde de la connexion série entre R2 et R4 et la route par défaut de la table de routage pointe vers l'AS 10 vers l'interface Serial 8/0. Il en résulte une boucle de routage.
Enfin, regardez les journaux et vérifiez si la liaison série (s8/0) a cédé. Cela entraîne l'installation d'une route statique flottante dans la table de routage, qui conduit ensuite au proxy ARP et aboutit à l'installation d'une entrée Cisco Express Forwarding 10.10.34.4/32 dans la FIB Cisco Express Forwarding.
R2#show log | beg Ethernet0/0 [..] %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial8/0, changed state to down %BGP-5-ADJCHANGE: neighbor 10.10.24.4 Down Interface flap %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial8/0, changed state to up %BGP-5-ADJCHANGE: neighbor 10.10.24.4 Up
Les journaux confirment la cause. En résumé, ces étapes indiquent la séquence des événements :
L’interface série 8/0 de R2 est désactivée.
R2 a un paquet destiné à 10.10.34.4.
R2 suit la route de secours par défaut pointée directement vers l’interface Ethernet 0/0.
R2 envoie une requête ARP pour 10.10.34.4.
R1 (Proxy) répond à la requête ARP avec sa propre adresse MAC à R2.
R2 dispose désormais d’une entrée ARP pour 10.10.34.4 avec l’adresse MAC de R1.
R2 crée une contiguïté Cisco Express Forwarding pour 10.10.34.4 et une entrée 10.10.34.4/32 est installée dans la table FIB (Cisco Express Forwarding) pour cette destination via Ethernet 0/0. Cette entrée Cisco Express Forwarding est conservée tant que l'entrée ARP est valide ou jusqu'à ce que R1 soit présent sur le segment Ethernet.
Serial 8/0 sur R2 apparaît.
R2 apprend la route eBGP 10.10.34.0/24 à partir de R4 avec le tronçon suivant 10.10.24.4 et installe la route dans la table de routage IP.
R1 apprend le préfixe 10.10.34.0/24 via iBGP depuis R2 et l'installe dans la table de routage IP.
R1 a un paquet destiné à 10.10.34.4.
R1 examine sa table de routage, fait correspondre les routes de préfixe iBGP à R2 et les routes à R2.
R2 reçoit un paquet destiné à 10.10.34.4. Étant donné qu'il dispose déjà d'une entrée Cisco Express Forwarding pour 10.10.34.4/32 qui pointe vers Ethernet 0/0 dans sa table FIB avec l'adresse MAC de R1, il renvoie le paquet à R1 sans consulter la table de routage. Ceci crée une boucle.
Remplacez la route statique flottante qui pointe directement vers Ethernet 0/0 par une route qui pointe vers une adresse de tronçon suivant.
R2(config)#no ip route 0.0.0.0 0.0.0.0 ethernet 0/0 10 R2(config)# ip route 0.0.0.0 0.0.0.0 192.168.12.1 10
Lorsque vous avez une route statique qui pointe vers l'adresse IP du tronçon suivant au lieu d'une interface à accès multiple Ethernet 0/0, cela empêche R2 d'envoyer des requêtes ARP pour toutes les destinations. Les paquets sont routés et commutés en fonction du saut suivant 192.168.12.1. Par conséquent, toutes les entrées et boucles ARP de Cisco Express Forwarding sont évitées.
Observez l'entrée Cisco Express Forwarding sur R2 qui pointe vers l'interface Serial 8/0 correcte.
R2#show ip cef 10.10.34.4 10.10.34.0/24, version 32, cached adjacency to Serial8/0 0 packets, 0 bytes via 10.10.24.4, 0 dependencies, recursive next hop 10.10.24.4, Serial8/0 via 10.10.24.0/24 valid cached adjacency