La documentazione per questo prodotto è stata redatta cercando di utilizzare un linguaggio senza pregiudizi. Ai fini di questa documentazione, per linguaggio senza di pregiudizi si intende un linguaggio che non implica discriminazioni basate su età, disabilità, genere, identità razziale, identità etnica, orientamento sessuale, status socioeconomico e intersezionalità. Le eventuali eccezioni possono dipendere dal linguaggio codificato nelle interfacce utente del software del prodotto, dal linguaggio utilizzato nella documentazione RFP o dal linguaggio utilizzato in prodotti di terze parti a cui si fa riferimento. Scopri di più sul modo in cui Cisco utilizza il linguaggio inclusivo.
Cisco ha tradotto questo documento utilizzando una combinazione di tecnologie automatiche e umane per offrire ai nostri utenti in tutto il mondo contenuti di supporto nella propria lingua. Si noti che anche la migliore traduzione automatica non sarà mai accurata come quella fornita da un traduttore professionista. Cisco Systems, Inc. non si assume alcuna responsabilità per l’accuratezza di queste traduzioni e consiglia di consultare sempre il documento originale in inglese (disponibile al link fornito).
In questo documento viene descritto come risolvere i problemi di flapping delle route Border Gateway Protocol (BGP) causati da un errore di routing ricorsivo.
Nessun requisito specifico previsto per questo documento.
Il documento può essere consultato per tutte le versioni software o hardware.
Le informazioni discusse in questo documento fanno riferimento a dispositivi usati in uno specifico ambiente di emulazione. Su tutti i dispositivi menzionati nel documento la configurazione è stata ripristinata ai valori predefiniti. Se la rete è operativa, valutare attentamente eventuali conseguenze derivanti dall'uso dei comandi.
In questo documento viene descritto come risolvere i problemi di flapping delle route Border Gateway Protocol (BGP) causati da un errore di routing ricorsivo.
I sintomi comuni di errore di routing ricorsivo in BGP sono:
Eliminazione e reinserimento costanti delle route BGP nella tabella di routing.
Perdita di connettività verso le destinazioni appresa tramite BGP.
Per ulteriori informazioni, fare riferimento al diagramma di rete seguente:
Esempio di rete
Durante l'uso del presente documento, consultare le seguenti configurazioni:
Rtr-A |
---|
hostname RTR-A ! interface Loopback0 ip address 10.10.10.10 255.255.255.255 ! interface Serial8/0 ip address 192.168.16.1 255.255.255.252 ! router bgp 1 bgp log-neighbor-changes neighbor 10.20.20.20 remote-as 2 neighbor 10.20.20.20 ebgp-multihop 2 neighbor 10.20.20.20 update-source Loopback0 ! ip route 10.20.20.0 255.255.255.0 192.168.16.2 |
Rtr-B |
---|
hostname RTR-B ! interface Loopback0 ip address 10.20.20.20 255.255.255.255 ! interface Ethernet0/0 ip address 172.16.1.1 255.255.255.0 ! interface Serial8/0 ip address 192.168.16.2 255.255.255.252 ! router bgp 2 no synchronization bgp log-neighbor-changes network 10.20.20.20 mask 255.255.255.255 network 172.16.1.0 mask 255.255.255.0 neighbor 10.10.10.10 remote-as 1 neighbor 10.10.10.10 ebgp-multihop 2 neighbor 10.10.10.10 update-source Loopback0 no auto-summary ! ip route 10.10.10.0 255.255.255.0 192.168.16.1 ! |
Per ulteriori informazioni sulle convenzioni usate, consultare il documento Cisco sulle convenzioni nei suggerimenti tecnici.
Questi due sintomi vengono osservati con un errore di routing ricorsivo:
Il flapping continuo delle route apprese da BGP nella tabella di routing IP.
Osservare ininterrottamente la tabella di routing per alcuni minuti per verificare il flapping.
RTR-A#show ip route Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2 E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP i - IS-IS, L1 - ISIS level-1, L2 - ISIS level-2, ia - ISIS inter are * - candidate default, U - per-user static route, o - ODR P - periodic downloaded static route Gateway of last resort is not set 10.0.0.0/8 is variably subnetted, 2 subnets, 2 masks B 10.20.20.20/32 [20/0] via 10.20.20.20, 00:00:35 S 10.20.20.0/24 [1/0] via 192.168.16.2 172.16.0.0/24 is subnetted, 1 subnets B 172.16.1.0 [20/0] via 10.20.20.20, 00:00:35 10.0.0.0/32 is subnetted, 1 subnets C 10.10.10.10 is directly connected, Loopback0 192.168.16.0/30 is subnetted, 1 subnets C 192.168.16.0 is directly connected, Serial8/0
Nota: è utile usare il comando show ip route | includere il comando 00:00 per osservare le route quando si utilizzano tabelle di routing di grandi dimensioni.
Dopo circa un minuto di attesa, i risultati del comando show ip route vengono modificati nel modo seguente:
RTR-A#show ip route [..] Gateway of last resort is not set 10.0.0.0/24 is subnetted, 1 subnets S 10.20.20.0 [1/0] via 192.168.16.2 10.0.0.0/32 is subnetted, 1 subnets C 10.10.10.10 is directly connected, Loopback0 192.168.16.0/30 is subnetted, 1 subnets C 192.168.16.0 is directly connected, Serial8/0
Nota: le route BGP non sono presenti nella tabella di routing precedente.
Quando le route BGP sono presenti nella tabella di routing, la connettività a tali reti non riesce.
A tal fine, quando la tabella di routing dell'router A ha la route 172.16.1.0/24 appresa da BGP nella relativa tabella di routing, il ping tra l'host valido 172.16.1.1 e l'operazione non riesce.
RTR-A#show ip route 172.16.1.0 Routing entry for 172.16.1.0/24 Known via "bgp 1", distance 20, metric 0 Tag 2, type external Last update from 10.20.20.20 00:00:16 ago Routing Descriptor Blocks: * 10.20.20.20, from 10.20.20.20, 00:00:16 ago Route metric is 0, traffic share count is 1 AS Hops 1 RTR-A#ping 172.16.1.1 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 172.16.1.1, timeout is 2 seconds: ..... Success rate is 0 percent (0/5) RTR-A#
Sull'Rtr-A, osservare il percorso verso il peer BGP 10.20.20.20. Il percorso esegue il flap tra i due hop successivi in modo coerente ogni minuto o giù di lì.
RTR-A#show ip route 10.20.20.20 Routing entry for 10.20.20.20/32 Known via "bgp 1", distance 20, metric 0 Tag 2, type external Last update from 10.20.20.20 00:00:35 ago Routing Descriptor Blocks: * 10.20.20.20, from 10.20.20.20, 00:00:35 ago Route metric is 0, traffic share count is 1 AS Hops 1
La route verso l'indirizzo IP del peer BGP viene appresa tramite BGP stesso; in questo modo, viene creato un errore di routing ricorsivo.
Dopo circa un minuto, il percorso diventa:
RTR-A#show ip route 10.20.20.20 Routing entry for 10.20.20.0/24 Known via "static", distance 1, metric 0 Routing Descriptor Blocks: * 192.168.16.2 Route metric is 0, traffic share count is 1
La procedura seguente descrive la causa degli errori di routing ricorsivo:
Fare riferimento alla configurazione di Rtr-A. In questa configurazione, viene configurato un percorso statico 10.20.20.0/24 che punti all'hop successivo connesso direttamente 192.168.16.2. Con questa route statica, viene stabilita una sessione BGP con router-B 10.20.20.20 peer.
Rtr-B annuncia le route BGP 172.16.1.0/24 e 10.20.20.20/32 verso Rtr-A con l'indirizzo IP di loopback 10.20.20.20 come hop successivo.
Rtr-A riceve le route BGP annunciate da Rtr-B e tenta di installare 10.20.20.20/32. Questa configurazione è più specifica di 10.20.20.0/24, già configurato in Rtr-A come route statica. Poiché si preferisce la route corrispondente più lunga, 10.20.20.20/32 è preferibile rispetto a 10.20.20.0/24. per ulteriori informazioni, fare riferimento a Selezione router in Cisco Router. Il router 10.20.20.20/32 installato ha un hop successivo di 10.20.20.20 (indirizzo IP peer Rtr-B) nella tabella di routing. Questo porta a un errore di routing ricorsivo perché il percorso verso la 10.20.20.20/32 ha un hop successivo.
Per comprendere la ragione per cui il routing ricorsivo fallisce in questa particolare situazione, è necessario capire come funziona l'algoritmo di routing. Per qualsiasi percorso nella tabella di routing non connesso direttamente il cui indirizzo IP dell'hop successivo non sia un'interfaccia del router connessa direttamente, l'algoritmo cerca in modo ricorsivo nella tabella di routing fino a trovare un'interfaccia connessa direttamente a cui inoltrare i pacchetti.
In questa particolare situazione, Rtr-A apprende un percorso verso la rete non connessa direttamente 10.20.20.20/32 con un hop successivo non connesso direttamente 10.20.20.20 (stesso). L'algoritmo di routing viene eseguito in un errore di loop di routing ricorsivo perché non è in grado di trovare un'interfaccia connessa direttamente a cui inviare i pacchetti destinati alla versione 10.20.20.20/32.
Il router rileva che la route 10.20.20.20/32 non connessa direttamente ha un errore di routing ricorsivo e ritira il file 10.20.20.20/32 dalla tabella di routing. Di conseguenza, anche tutte le route apprese dal protocollo BGP con indirizzo IP 10.20.20.20 dell'hop successivo vengono ritirate dalla tabella di routing.
L'intero processo si ripete dal Passaggio 1. Per verificare questa condizione, usare il comando debug ip routing.
Nota:prima di eseguire un comando di debug, eseguire il comando debug su un elenco di controllo di accesso (ACL) per una rete specifica per limitare l'output del comando di debug. In questo esempio, configurare un ACL per limitare l'output del debug.
RTR-A(config)#access-list 1 permit 10.20.20.20 RTR-A(config)#access-list 1 permit 172.16.1.0 RTR-A(config)#end RTR-A#debug ip routing 1 IP routing debugging is on for access list 1 00:29:50: RT: add 10.20.20.20/32 via 10.20.20.20, bgp metric [20/0] 00:29:50: RT: add 172.16.1.0/24 via 10.20.20.20, bgp metric [20/0] 00:30:45: RT: recursion error routing 10.20.20.20 - probable routing loop 00:30:45: RT: recursion error routing 10.20.20.20 - probable routing loop 00:30:45: RT: recursion error routing 10.20.20.20 - probable routing loop 00:30:46: RT: recursion error routing 10.20.20.20 - probable routing loop 00:30:46: RT: recursion error routing 10.20.20.20 - probable routing loop 00:30:48: RT: recursion error routing 10.20.20.20 - probable routing loop 00:30:48: RT: recursion error routing 10.20.20.20 - probable routing loop 00:30:50: RT: del 10.20.20.20/32 via 10.20.20.20, bgp metric [20/0] 00:30:50: RT: delete subnet route to 10.20.20.20/32 00:30:50: RT: del 172.16.1.0/24 via 10.20.20.20, bgp metric [20/0] 00:30:50: RT: delete subnet route to 172.16.1.0/24
Se la ricorsione della route non riesce in modo continuo, viene visualizzato questo messaggio di errore:
%COMMON_FIB-SP-6-FIB_RECURSION: 10.71.124.25/32 has too many (8) levels of recursion during setting up switching info %COMMON_FIB-SP-STDBY-6-FIB_RECURSION: 10.71.124.25/32 has too many (8) levels of recursion during setting up switching info
Ciò è dovuto alle ritrasmissioni TCP che si verificano sulla rete abilitata per MPLS. Se una volta non è possibile inviare un messaggio keepalive BGP al peer BGP perché il collegamento di trasporto non è attivo, il peer BGP adiacente non accetta altri pacchetti keepalive anche se il protocollo TCP trasmette nuovamente il messaggio non riuscito tramite il percorso di backup e alla fine porta il peer BGP in stato di inattività con scadenza del tempo di attesa. Questo problema si verifica solo quando MPLS è configurato su Catalyst 6500 o Cisco 7600. Queste informazioni sono contenute nell'ID bug Cisco CSCsj89544.
Nota: solo gli utenti Cisco registrati possono accedere alle informazioni interne sui bug e ad altri strumenti.
Le soluzioni a questo problema sono spiegate in questi dettagli.
Aggiungere una route statica specifica in Rtr-A per l'indirizzo IP del peer BGP (in questo caso 10.20.20.20).
RTR-A#configure terminal Enter configuration commands, one per line. End with CNTL/Z. RTR-A(config)#ip route 10.20.20.20 255.255.255.255 192.168.16.2
La configurazione di una route statica per il prefisso 10.20.20.20/32 assicura che una route BGP 10.20.20.20/32 appresa in modo dinamico non venga installata nella tabella di routing, evitando così la situazione di loop di routing ricorsivo. per ulteriori informazioni, fare riferimento a Selezione router in Cisco Router.
Nota: quando i peer EBGP sono configurati per comunicare tra loro con le route predefinite, il protocollo BGP adiacente non viene visualizzato. Questa operazione viene eseguita per evitare il flapping della route e i loop di routing.
Un ping su 172.16.1.1 conferma la soluzione.
RTR-A#ping 172.16.1.1 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 172.16.1.1, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 20/24/40 ms
L'attenuazione dell'impatto dei cambi di percorso è una funzione BGP progettata per ridurre al minimo la propagazione dei cambi di percorso su una rete Internet. I valori consigliati dall'ISP sono quelli predefiniti su Cisco IOS® e per abilitarlo è necessario configurare solo questo comando.
router bgp <AS number> bgp dampening
Il comando di smorzamento gbp imposta i valori predefiniti per i parametri di smorzamento, ad esempio Halftime= 15 minuti, reuse = 750, Suppress = 2000 e Max Suppress Time= 60. Questi valori sono configurabili dall'utente, ma Cisco consiglia di non modificarli.
Revisione | Data di pubblicazione | Commenti |
---|---|---|
1.0 |
07-Feb-2002 |
Versione iniziale |