Modificando atributos con route-map

Las route map provee diferentes características para distintos protocolos de enrutamiento dinámico. Generlamente suele ir acompañando a BGP.
En el nivel más simple, los route maps pueden filtrar redes, al igual que las ACL, pero puede ofrecer capacidades adicionales a través de añadir o modificar los atributos d ela red.
Es críticos para BGP porque hay muchos componentes para modificar una política de enrutamiento en una topología de vecino a vecino.
Un route map tiene cuatro componentes:
Número de secuencia: Dicta el orden de procesamiento.
Criterios de coincidencia condicionales: Identifica características de prefijos.
Acción de procesamiento: Permite o deniega el prefijo.
Acción opcional: Habilita manipulaciones (modificar, añadir o eliminar características de la ruta)
La sintaxis de un route map sería:
route-map <NOMBRE> permit|deny <numero de secuencia>Hay cosas a tener en cuenta:
Si una acción de procesamiento no es establecida, el valor por defecto es permit.
Si no se establece el número de secuencia, este será incrementado en 10 automáticamente.
Si no se establece una coincidencia se asociarán todos los prefijos.
Un deny o drop es implícito para los prefijos que no están asociados en una acción de permiso.
Coincidencia condicional (conditional matching)
Hay distintas opciones de coincidencias, como podemos ver a continuación.
match as-path <acl-number> | Selecciona prefijos basandose en el ASN de la ACL |
match ip address <acl-number | acl-name> | Selecciona prefijos basado en la selección de redes definidas en la ACL. |
match ip address prefix-list <prefix-list-name> | Selecciona prefijos basado en lista de prefijos. |
match local-preference <local-preference> | Selecciona prefijos basados en el atributo de preferencia local en BGP. |
match tag <tag-value> | Selecciona prefijos basándose en una etiqueta numérica. |
match community <community> | Selecciona prefijos basándose en la comunidad. |
Aplicación práctica: redundancia
Puede ser que tengamos dos datacenter en dos ubicaciones distintas, ambos replicados entre sí.
Tenemos un datacenter principal con el que se trabaja, pero en caso de que este no esté accesible, tener disponible el otro y que haya convergencia rápida, gracias a BFD (puedes leer más sobre BFD aquí )
Cuando el datacenter principal vuelta a estar disponible podremos volver, automáticamente, a funcionar con este.
Laboratorio

Tenemos la sede principal, tras R4. El datacenter principal será R6 y el secundario R5.
Para darle sentido a la entrada y poder explicar los route-map, se va aplicar que R5 solo comparta la red 10.10.40.0/24, mientras que R6 compartirá las dos redes principales.
Primero deberemos configurar las interfaces de red.
Una vez hecho esto, configuraremos las prefix-list y los route-map.
R4:
ip prefix-list PREFIX-LOCAL seq 10 permit 192.168.10.0/24
ip prefix-list PREFIX-LOCAL seq 20 permit 192.168.20.0/24
!
route-map BGP-R5-IN permit 10
set local-preference 100
!
route-map BGP-OUT permit 10
match ip address prefix-list PREFIX-LOCAL
!
route-map BGP-R5-OUT permit 10
match ip address prefix-list PREFIX-LOCAL
!
route-map BGP-IN permit 10
set local-preference 200
!
¿Qué hemos hecho aquí? Hemos modificado el local-preference a 100 y 200 para luego aplicarlo en el neighbor que aplique. Cuanto mayor sea la preferencia significa que será el escogido para instalar las rutas en la tabla de enrutamiento local.
router bgp 100 bgp
router-id 1.1.1.1
bgp log-neighbor-changes
network 192.168.10.0
network 192.168.20.0
neighbor 10.0.0.2 remote-as 200
neighbor 10.0.0.2 fall-over bfd
neighbor 10.0.0.2 route-map BGP-R5-IN in
neighbor 10.0.0.2 route-map BGP-OUT out
neighbor 10.0.1.2 remote-as 300
neighbor 10.0.1.2 fall-over bfd
neighbor 10.0.1.2 route-map BGP-IN in
neighbor 10.0.1.2 route-map BGP-OUT out
!Ahora vamos a crear la sesión BGP en R6:
ip prefix-list BGP-OUT seq 10 permit 10.10.30.0/24
ip prefix-list BGP-OUT seq 20 permit 10.10.40.0/24
!
route-map BGP-OUT permit 10
match ip address prefix-list BGP-OUT
!router bgp 300
bgp router-id 3.3.3.3
bgp log-neighbor-changes
network 10.10.30.0 mask 255.255.255.0
network 10.10.40.0 mask 255.255.255.0
neighbor 10.0.1.1 remote-as 100
neighbor 10.0.1.1 fall-over bfd
neighbor 10.0.1.1 route-map BGP-OUT out
!Y en R5:
ip prefix-list BGP-OUT seq 10 permit 10.10.30.0/24
ip prefix-list BGP-OUT seq 20 permit 10.10.40.0/24
!
ip prefix-list BGP-OUT-2 seq 10 permit 10.10.40.0/24
!
route-map BGP-OUT-2 permit 10
match ip address prefix-list BGP-OUT-2
!
route-map BGP-OUT permit 10
match ip address prefix-list BGP-OUT
!router bgp 200
bgp router-id 2.2.2.2
bgp log-neighbor-changes
redistribute connected route-map BGP-OUT
neighbor 10.0.0.1 remote-as 100
neighbor 10.0.0.1 fall-over bfd
neighbor 10.0.0.1 route-map BGP-OUT-2 out
!Como podemos ver, aquí le estamos diciendo que solo se van a distribuir hacia fuera (out) lo que coincida con el route-map BGP-OUT-2, es decir, la 10.10.40.0/24.
Si comprobamos en R4:

Y procedemos a hacer ping sostenido hacia la IP 10.10.40.2, tumbamos la sesión BGP con R6 veremos como inmediatamente se modificará la tabla de rutas.


Como se ve, el tráfico a convergido hacia R5. Si intentaramos hacer ping a 10.10.30.2 no llegaría ya que no está siendo anunciada por este router.
Y hasta aquí el post de hoy. Espero que te haya resultado útil y que te haya servido para aprender algo nuevo o resolver alguna duda.
Nos vemos en el próximo artículo.




Comentarios