BGP - Conditional Advertisement
La función de anuncio condicional en BGP nos brinda un método para
anunciar prefijos según la existencia de otros en la tabla BGP.
Resulta especialmente útil cuando gestionamos múltiples proveedores de servicios de Internet (ISP) en nuestra red. En ocasiones, la publicación de nuestros prefijos a todos los ISP genera problemas y se hace necesario dirigir nuestras redes a un solo ISP. Sin embargo, ante eventualidades como la falla del ISP principal, se requiere la capacidad de redirigir nuestros anuncios hacia el ISP de respaldo.
Por ejemplo, si no recibimos la red 8.8.8.8/32 desde ISP1, deseamos anunciar nuestras redes a ISP2.
Antes de proceder con la configuración, es crucial comprender dos comandos clave: 'non-exist-map' y 'advertise-map'.
- advertise-map: Un route-map que contiene los prefijos que deseamos anunciar a nuestros ISP.
- non-exist-map: Un route-map que define el prefijo cuya ausencia en la tabla BGP genera la condición para anunciar los prefijos asociados al route-map de 'advertise-map'.
- exist-map: Un route-map que define el prefijo cuya presencia en la tabla BGP genera la condición para anunciar los prefijos asociados al route-map correspondiente al "advertise-map".
Escenario:
Imaginemos que nuestra empresa cuenta con dos ISP. Debido a
restricciones en las políticas de enrutamiento, un ISP externo no nos
permite influir en el tráfico mediante la técnica de Prepend (NTT, con
una local preference de 120 para su peer Telmex). Por lo tanto, es
esencial anunciar únicamente nuestros prefijos al ISP Level3 y, en caso
de que este deje de publicar algunos prefijos o experimente una falla,
anunciar nuestros prefijos al ISP TELMEX (ASN 6429).
R1#show running-config
!
interface Ethernet0/0
description TO_TELMEX
ip address 1.1.1.2 255.255.255.252
!
interface Ethernet0/1
description TO_LEVEL_3
ip address 9.9.9.2 255.255.255.252
!
interface Ethernet0/2
ip address 172.16.1.1 255.255.255.0
!
router bgp 2323
bgp log-neighbor-changes
network 172.16.1.0 mask 255.255.255.0
network 172.16.2.0 mask 255.255.255.0
neighbor 1.1.1.1 remote-as 6429
neighbor 1.1.1.1 description ISP_TELMEX
neighbor 1.1.1.1 fall-over bfd
neighbor 1.1.1.1 route-map REDES_ANUNCIADAS out
neighbor 1.1.1.1 filter-list 15 out
neighbor 9.9.9.1 remote-as 3349
neighbor 9.9.9.1 description ISP_LEVEL3
neighbor 9.9.9.1 fall-over bfd
neighbor 9.9.9.1 route-map REDES_ANUNCIADAS out
neighbor 9.9.9.1 filter-list 15 out
!
ip forward-protocol nd
!
ip as-path access-list 15 permit ^$
ip as-path access-list 15 deny .*
!
ip route 172.16.2.0 255.255.255.0 Null0
!
ip prefix-list REDES_PUBLICAS_EMPRESA seq 5 permit 172.16.1.0/24
ip prefix-list REDES_PUBLICAS_EMPRESA seq 10 permit 172.16.2.0/24
!
route-map REDES_ANUNCIADAS permit 10
match ip address prefix-list REDES_PUBLICAS_EMPRESA
!
Se visualiza una configuración estándar de R1, en la cual anuncia sus redes a ambos ISP. A continuación, se presenta una verificación de esto.
Ahora que estamos al tanto del estado actual de nuestra configuración, procederemos a establecer la condición para la publicación de redes. La condición que deseamos crear es la siguiente:
- Si dejo de recibir el prefijo 8.8.8.8/32 desde mi peer de Level 3 (ASN 3349), procedo a anunciar o publicar mis prefijos a mi peer de Telmex (ASN 6429).
Teniendo claro lo que deseamos lograr, comenzaremos revisando nuestra tabla BGP para asegurarnos de que estos prefijos estén presentes en ella.
Observamos que el prefijo 8.8.8.8/32 está siendo anunciado a R1 por ambos peers. Ahora procederemos a crear los route-map que definirán la condición para la advertencia o anuncio de prefijos.
A continuación, verificamos el anuncio de las redes a nuestros peers.
Observamos que el prefijo 8.8.8.8/32 está siendo anunciado a R1 por ambos peers. Ahora procederemos a crear los route-map que definirán la condición para la advertencia o anuncio de prefijos.
ip prefix-list TRACK_PREFIX seq 5 permit 8.8.8.8/32
!
ip as-path access-list 11 permit _3349_
- Se crea un route-map que asocie la lista de prefijos (prefix-list) con el AS-path. Específicamente, estamos hablando del "prefijo 8.8.8.8/32 que pase por el ASN 3349".
route-map EXIST permit 10
match ip address prefix-list TRACK_PREFIX
match as-path 11
- Procedemos a aplicar el route-map "EXIST" a nuestro par de TELMEX (ASN 6429) de manera condicional.
router bgp 2323
! Quitamos nuestro route-map anterior que anunciaba nuestras redes.
no neighbor 1.1.1.1 route-map REDES_ANUNCIADAS out
! Aplicamos nuestra condición: "si no existe el prefijo 8.8.8.8/32 que pase a través del ASN 3349 en la BGP table, le publicamos las redes a nuestro par de Telmex (ASN 6429)".
neighbor 1.1.1.1 advertise-map REDES_ANUNCIADAS non-exist-map EXIST
A continuación, verificamos el anuncio de las redes a nuestros peers.
Como se puede observar, las redes ya no se anuncian a nuestro peer de Telmex, pero sí a nuestro peer de Level 3. A continuación, verificamos que en la tabla BGP esté presente el prefijo que condiciona el anuncio de prefijos a dicho peer
Ahora procederemos a simular una falla en nuestro enlace de Level 3. Nuestro par ha experimentado un corte de fibra, lo que ha llevado a la interfaz e0/1 a un estado "down".
A continuación, verificamos el estado de nuestros pares BGP y observamos que 9.9.9.1 (Level 3) se encuentra en estado "Idle".
Ahora procederemos a simular una falla en nuestro enlace de Level 3. Nuestro par ha experimentado un corte de fibra, lo que ha llevado a la interfaz e0/1 a un estado "down".
A continuación, verificamos el estado de nuestros pares BGP y observamos que 9.9.9.1 (Level 3) se encuentra en estado "Idle".
Revisamos que nuestros prefijos se estén anunciando a nuestro peer de Telmex (ASN 6429).
Observamos que la situación prevista se está materializando, ya que estamos advirtiendo nuestros prefijos al par de Telmex (ASN 6429) debido a la ausencia de 8.8.8.8/32 en nuestra tabla BGP, y este prefijo pasa a través del ASN 3349.
Observamos que la situación prevista se está materializando, ya que estamos advirtiendo nuestros prefijos al par de Telmex (ASN 6429) debido a la ausencia de 8.8.8.8/32 en nuestra tabla BGP, y este prefijo pasa a través del ASN 3349.
A continuación, se restaura la normalidad en nuestro enlace de Level 3, y observamos que la advertencia de prefijos solo se realiza a través de nuestro par de Level 3, como se esperaba.
Otra forma de verificar que la condición de anuncio de prefijos esté aplicada es mediante el siguiente comando:
Otra forma de verificar que la condición de anuncio de prefijos esté aplicada es mediante el siguiente comando:
R1#show ip bgp neighbors 1.1.1.1
BGP neighbor is 1.1.1.1, remote AS 6429, external link
Description: ISP_TELMEX
Fall over configured for session
BFD is configured.
BGP version 4, remote router ID 2.2.2.2
BGP state = Established, up for 00:41:56
!--- Output suppressed.
For address family: IPv4 Unicast
Session: 1.1.1.1
BGP table version 11, neighbor version 11/0
Output queue size : 0
Index 5, Advertise bit 0
5 update-group member
Outbound path policy configured
Outgoing update AS path filter list is 15
Condition-map EXIST, Advertise-map REDES_ANUNCIADAS, status: Withdraw
Slow-peer detection is disabled
!--- Output suppressed.
En el cual se muestra que el anuncio está en estado "Withdraw" que significa retirado en español, es decir, no estamos anunciando rutas a ese par. A continuación, dejo el resumen de la configuración de R1.
Configuración final de R1.
interface Ethernet0/0
description TO_TELMEX
ip address 1.1.1.2 255.255.255.252
!
interface Ethernet0/1
description TO_LEVEL_3
ip address 9.9.9.2 255.255.255.252
!
interface Ethernet0/2
ip address 172.16.1.1 255.255.255.0
!
router bgp 2323
bgp log-neighbor-changes
network 172.16.1.0 mask 255.255.255.0
network 172.16.2.0 mask 255.255.255.0
timers bgp 5 15
neighbor 1.1.1.1 remote-as 6429
neighbor 1.1.1.1 description ISP_TELMEX
neighbor 1.1.1.1 fall-over bfd
neighbor 1.1.1.1 advertise-map REDES_ANUNCIADAS non-exist-map EXIST
neighbor 1.1.1.1 filter-list 15 out
neighbor 9.9.9.1 remote-as 3349
neighbor 9.9.9.1 description ISP_LEVEL3
neighbor 9.9.9.1 fall-over bfd
neighbor 9.9.9.1 route-map REDES_ANUNCIADAS out
neighbor 9.9.9.1 filter-list 15 out
!
ip as-path access-list 11 permit _3349_
ip as-path access-list 15 permit ^$
ip as-path access-list 15 deny .*
!
ip route 172.16.2.0 255.255.255.0 Null0
!
ip prefix-list REDES_PUBLICAS_EMPRESA seq 5 permit 172.16.1.0/24
ip prefix-list REDES_PUBLICAS_EMPRESA seq 10 permit 172.16.2.0/24
!
ip prefix-list TRACK_PREFIX seq 5 permit 8.8.8.8/32
!
route-map REDES_ANUNCIADAS permit 10
match ip address prefix-list REDES_PUBLICAS_EMPRESA
!
route-map EXIST permit 10
match ip address prefix-list TRACK_PREFIX
match as-path 11
Fin del post. Si hay algún error, por favor, házmelo saber.
Comentarios
Publicar un comentario