Troubleshooting Flapping BGP Routes

En este escenario se muestra uno de los problemas que puede pasar en cualquier sesión BGP cuando se detecta una recursividad en la red.
Puede descargar el archivo aqui: BGP_Route-Flapping.zip

Este es el diagrama del escenario a explicar:

BGP-flapping-topology.PNG

Caracteristicas:

El diagrama simula una conexión IBGP AS 64000 y EBGP con el AS 65000. En el se coloca la PC1 que desea llegar a la red 123.123.123.123 del R4. Actualmente tiene dos conexiones al mismo proveedor. A pesar que los router R1 y R2 hablan IBGP, no aprenden las rutas del vecino que provengan del proveedor, por lo que cada Router aprende la rutas externas y las envía hacia el proveedor (escenario forzado para explicación).
Las máquinas que tienen como GW 172.16.50.2 no tienen problemas al conectarse al 123.123.123.123, pero las máquinas con GW de 172.16.50.1 tienen intermitencia. Al verificar las tablas de rutas, se observa que las rutas aprendidas por BGP está intermitente.

BGP-flapping-ping1.PNG

Sintomas:

Si se percatan en el diagrama, la red creada entre R5 y R1 es la 192.168.50.0/24. Entre esto, se utiliza el IP 192.168.50.2 como Neighbor en la sesión BGP. En el router R3 se utiliza la ruta estática ip route 192.168.50.0 255.255.255.252 10.9.100.42 que es correcto para que pueda conocer a donde está el vecino R1, en conjunto con el EBGP Multihop modificado a 2 (como mínimo). Lo mismo sucede desde R1 con la ruta estática y el EBGP Multihop 2.

R1:

router bgp 64000
no synchronization
bgp log-neighbor-changes
network 172.16.50.0 mask 255.255.255.0
neighbor 10.9.100.41 remote-as 65000
neighbor 10.9.100.41 ebgp-multihop 2
no auto-summary
!
ip forward-protocol nd
ip route 10.9.100.40 255.255.255.252 192.168.50.1

R3:

router bgp 65000
no synchronization
bgp log-neighbor-changes
redistribute static
neighbor 192.168.50.2 remote-as 64000
neighbor 192.168.50.2 ebgp-multihop 2
neighbor 192.168.100.2 remote-as 64000
neighbor 192.168.100.2 ebgp-multihop 2
no auto-summary
!
ip forward-protocol nd
ip route 192.168.50.0 255.255.255.252 10.9.100.42

Con estos dos comandos, permite que los vecinos se puedan observar y comunicarse. Al momento que la conexión BGP se establece, se envían las rutas que ha aprendido cada vecino. En el caso de R3, le informa las siguientes redes:
123.123.123.123/32 next-hop 10.9.100.41
192.168.50.0/30 next-hop 10.9.100.41

Al momento de instalar la red 192.168.50/30 en R1, se observa que está instalada la 192.168.50.0/24 que es la red donde está el IP Neighbor de R1. Como el algoritmo del router le da mayor importancia a las rutas más específicas, la ruta estática es ignorada e instala la ruta 192.168.50.0/30 10.9.100.41 donde por recursividad buscará la red 10.9.100.41 que está se dirige a la 192.168.50.1 y en la tabla de rutas, esta se refiere que debe llegar a traves del 10.9.100.41.

Con esto se la red se encuentra en un loop interminable y por lo tanto las rutas de BGP se caen.

Desde el R1 se observa lo siguiente:

BGP-flapping-R1-1.PNG

Sin realizar cambios en R1 se observa que se pierden las rutas:

BGP-flapping-R1-2.PNG

Se pueden utilizar los comandos debug ip routing y show ip route para detectar este problema:

R1#debug ip routing
IP routing debugging is on
R1#
*Mar 1 00:24:21.339: RT: add 123.123.123.123/32 via 10.9.100.41, bgp metric [20/0]
*Mar 1 00:24:21.339: RT: NET-RED 123.123.123.123/32
*Mar 1 00:24:21.343: RT: network 192.168.50.0 is now variably masked
*Mar 1 00:24:21.343: RT: add 192.168.50.0/30 via 10.9.100.41, bgp metric [20/0]
*Mar 1 00:24:21.347: RT: NET-RED 192.168.50.0/30
!
! some lines ommited
!
*Mar 1 00:24:23.675: RT: recursion error routing 10.9.100.41 - probable routing loop
!
! some lines ommited
!
*Mar 1 00:25:17.343: RT: del 123.123.123.123/32 via 10.9.100.41, bgp metric [20/0]
*Mar 1 00:25:17.343: RT: delete subnet route to 123.123.123.123/32
*Mar 1 00:25:17.343: RT: NET-RED 123.123.123.123/32
*Mar 1 00:25:17.347: RT: delete network route to 123.0.0.0
*Mar 1 00:25:17.347: RT: NET-RED 123.0.0.0/8
*Mar 1 00:25:17.347: RT: del 192.168.50.0/30 via 10.9.100.41, bgp metric [20/0]
*Mar 1 00:25:17.351: RT: delete subnet route to 192.168.50.0/30
!
! some lines ommited
!
*Mar 1 00:05:02.087: RT: Try lookup less specific 192.168.50.0/30, default 1
*Mar 1 00:05:02.087: RT: Found major net on less specific 192.168.50.0/24

Solución:

En R1, modificar la interfaz a una máscara más específica o igual que la ruta distribuida por R3. En este caso puede ser modificada por 192.168.50.2/30.
Aunque no es necesario modificar R5 a /30, es recomendable realizarlo.

BGP-flapping-R1-conf.PNG

Referencias:
Troubleshooting Flapping BGP Routes
http://www.cisco.com/en/US/tech/tk365/technologies_tech_note09186a00800945fe.shtml

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License