Questo documento aiuta a risolvere i problemi dei loop di routing di Cisco Express Forwarding (CEF) e del routing non ottimale causati da una adiacenza di inoltro Cisco Express memorizzata nella cache valida che indica un'interfaccia errata. La creazione di un'adiacenza con un'interfaccia non corretta è dovuta ai seguenti motivi:
Un percorso statico punta direttamente a un'interfaccia ad accesso multiplo.
Come risultato delle risposte ARP (Proxy Address Resolution Protocol) è stata creata una adiacenza di inoltro Express Cisco valida.
Utilizzare queste risorse per comprendere meglio alcuni dei concetti utilizzati nel presente documento:
Il documento può essere consultato per tutte le versioni software o hardware.
Per ulteriori informazioni sulle convenzioni usate, consultare il documento Cisco sulle convenzioni nei suggerimenti tecnici.
Il router R1 si connette a R3 tramite Serial 8/0, il router R2 si connette a R4 tramite Serial 8/0. R1 e R2 sono connessi tramite Ethernet 0/0, come mostrato nella figura.
R2 riceve gli aggiornamenti del prefisso eBGP (Border Gateway Protocol) esterno per 10.10.34.0/24 da R4. R2 propaga questo prefisso a R1 tramite BGP (iBGP) interno.
R2 dispone di una route statica predefinita (0.0.0.0/0) che punta all'indirizzo IP seriale 8/0 di R4 10.10.24.4.
R2 dispone anche di un percorso predefinito flottante di backup (percorso IP 0.0.0.0.0.0 Ethernet0/0 10) che punta all'interfaccia Ethernet 0/0 per indirizzare i pacchetti se la connessione seriale tra R2 e R4 non riesce.
R1 dispone di un percorso predefinito che punta a R3 Serial 8/0 con l'indirizzo IP 10.10.13.3.
Il traffico IP destinato a 10.10.34.0/24 viene indirizzato tra R1 e R2. Osservare l'output del comando traceroute su 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 ...
Notare che il traffico è destinato a hop 10.10.34.4 tra l'interfaccia Ethernet 0/0 di R1 (indirizzo IP 192.168.12.1) e l'interfaccia Ethernet 0/0 di R2 (indirizzo IP 192.168.12.2). In teoria, il traffico proveniente da R1 e destinato a 10.10.34.0/24 deve andare su R2 a causa del prefisso appreso da iBGP 10.10.34.0/24. Quindi, da R2, il traffico deve essere indirizzato su R4. Tuttavia, l'output del comando traceroute conferma un loop di routing tra R1 e 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 ! |
Poiché i pacchetti destinati alla versione 10.10.34.4 vengono trasmessi tra R1 e R2, iniziare la risoluzione dei problemi. Controllare anzitutto il routing IP su R1. L'output del comando show ip route 10.10.34.0 conferma l'hop successivo di 192.168.12.2 per i pacchetti destinati a 10.10.34.0/24. Questa condizione corrisponde al primo hop del comando traceroute, dove i pacchetti vengono inviati all'hop successivo di 192.168.12.2, che conferma che i pacchetti sono commutati correttamente su 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
Il passaggio successivo è controllare la tabella di routing IP di R2. Come mostrato nel comando show ip route 10.10.34.0, i pacchetti destinati alla versione 10.10.34.0 devono essere indirizzati all'hop successivo 10.10.24.4 sulla versione 8/0. Tuttavia, il comando traceroute mostra i pacchetti restituiti alla versione 192.168.12.1. È necessario studiare ulteriormente il motivo per cui i pacchetti destinati alla versione 10.10.10 4.0 vengono commutati su R2 all'hop successivo 192.168.12.1 (come nell'output del comando traceroute) anziché su 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
A questo punto è importante capire che in una rete a commutazione di inoltro Cisco Express, una decisione di inoltro di pacchetto consiste in:
Ricerca nella tabella di routing del prefisso più lungo.
Ricerca FIB.
Poiché la tabella di routing è stata verificata, esaminare il file FIB di inoltro di Cisco Express. Nei risultati del comando show ip cef 10.10.34.4 detail, notare che gli switch Cisco Express Forwarding 10.10.34.4 out Ethernet 0/0 anziché l'hop successivo 10.10.24.4 out Serial 8/0 (come mostrato nell'output del comando show ip route 10.10.34.0). Questa discrepanza crea loop nella rete.
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
Il passaggio successivo è quello di esaminare la tabella delle adiacenze di Cisco Express Forwarding e vedere come Cisco Express Forwarding apprende a scambiare i pacchetti in uscita da Ethernet 0/0. Si noti che le adiacenze sono costruite a causa di 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
L'output del comando show ip arp è una conferma.
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
Quindi, scoprire perché questa voce ARP è stata creata quando c'è una route IP nella tabella di routing. Riesaminare la tabella di routing.
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
Se la connessione seriale non riesce tra R2 e R4, tutto il traffico viene instradato con l'uso di un router statico mobile verso Ethernet 0/0 perché R2 ha un percorso statico mobile che punta all'interfaccia a più accessi Ethernet 0/0 e non all'indirizzo IP Ethernet 192.168.12.1 di R1. Pertanto, per tutte le destinazioni sconosciute, il router R2 invia una richiesta ARP tramite l'interfaccia Ethernet 0/0. In questo caso, R2 ha perso il percorso più specifico verso la rete 10.10.34.0. Pertanto, quando il pacchetto dati arriva per gli host su questa rete, genera una richiesta ARP tramite l'interfaccia Ethernet. Poiché il proxy ARP è abilitato per impostazione predefinita sull'interfaccia Ethernet di R1 e dispone di un percorso predefinito che punta a R3, risponde con una risposta ARP proxy con il proprio indirizzo MAC. Di conseguenza, R2 invia tutto il traffico a R1, e R1 inoltra tutto il traffico con l'uso della sua route predefinita (0.0.0.0/0) in AS 12, e di conseguenza a 10.10.34.4 via Internet.
Quando R2 riceve la risposta ARP proxy da R1, crea un'adiacenza /32 valida di Cisco Express Forwarding che indica l'interfaccia Ethernet 0/0. Questa voce di Cisco Express Forwarding non scade finché il router R1 proxy ARP non è presente sul segmento Ethernet. Pertanto, la voce /32 di Cisco Express Forwarding continua a essere utilizzata per Cisco Express Forwarding-switch sui pacchetti, anche dopo il backup della connessione seriale tra R2 e R4 e dopo che il percorso predefinito della tabella di routing ha indicato Serial 8/0 verso AS 10. Il risultato è un loop di routing.
Infine, esaminare i log e verificare se il collegamento seriale (s8/0) è lampeggiato. In questo modo, viene installato un percorso statico mobile nella tabella di routing che a sua volta porta al proxy ARP e determina l'installazione di una voce Cisco Express Forwarding 10.10.34.4/32 nel 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
I registri confermano la causa. In sintesi, questi passaggi mostrano la sequenza degli eventi:
Serial 8/0 su R2 non funziona.
R2 ha un pacchetto destinato a 10.10.34.4.
R2 segue il percorso predefinito di backup puntato direttamente a Ethernet 0/0.
R2 invia una richiesta ARP per 10.10.34.4.
R1 (Proxy) risponde alla richiesta ARP con il proprio indirizzo MAC a R2.
R2 ora ha una voce ARP per 10.10.34.4 con l'indirizzo MAC di R1.
R2 crea una adiacenza di Cisco Express Forwarding per 10.10.34.4 e una voce 10.10.34.4/32 viene installata nella FIB (Cisco Express Forwarding Table) per questa destinazione tramite Ethernet 0/0. Questa voce di Cisco Express Forwarding viene mantenuta per tutto il tempo in cui la voce ARP è valida o finché R1 non è presente sul segmento Ethernet.
Viene visualizzato Serial 8/0 su R2.
R2 apprende la route eBGP 10.10.34.0/24 da R4 con l'hop successivo 10.10.24.4 e installa la route nella tabella di routing IP.
R1 apprende il prefisso 10.10.34.0/24 tramite iBGP da R2 e lo installa nella tabella di routing IP.
R1 ha un pacchetto destinato a 10.10.34.4.
R1 esamina la tabella di routing, associa le route del prefisso iBGP a R2 e le route a R2.
R2 riceve un pacchetto destinato alla versione 10.10.34.4. Poiché ha già una voce Cisco Express Forwarding per la versione 10.10.34.4/32 che punta a Ethernet 0/0 nella sua tabella FIB con l'indirizzo MAC di R1, invia il pacchetto a R1 senza esaminare la tabella di routing. Questo si ripete ciclicamente.
Sostituire il percorso statico mobile che punta direttamente a Ethernet 0/0 con uno che punta a un indirizzo di hop successivo.
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
Quando si dispone di un percorso statico che punta all'indirizzo IP dell'hop successivo anziché a un'interfaccia ad accesso multiplo Ethernet 0/0, R2 non invia richieste ARP per tutte le destinazioni. I pacchetti vengono indirizzati e commutati in base all'hop successivo 192.168.12.1. Pertanto, vengono evitate le voci e i loop di inoltro ARP Cisco Express.
Osservare la voce Cisco Express Forwarding su R2 che punta all'interfaccia corretta Serial 8/0.
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