Los route-maps son herramientas de política ordenadas, evaluadas de arriba hacia abajo, usadas para filtrar y/o modificar rutas de forma condicional.

Funcionan como una estructura if-then: una cláusula match define la condición y una cláusula set define la modificación aplicada a las rutas que hacen match.

Los route-maps no son de uso exclusivo del filtrado de rutas. Se utilizan en:

  • BGP path control (setting attributes, filtering).
  • Redistribution entre protocolos de enrutamiento.
  • Policy-Based Routing (PBR).

Parámetros de match

Un route-map puede hacer match sobre muchas propiedades de una ruta: prefix, prefix length, ruta internal vs external, metric, next-hop, tag, y más. Esta flexibilidad es lo que hace a los route-maps más potentes que una ACL o un prefix-list por sí solos. (Route-Maps puede buscar match en todas esas propiedades y mas pero la unica limitante es la caracteristica por la cual usemos el Route-Map, Ejemplo: Redistribution.)

La lógica de permit/deny

In → Controla lo que ingresa a tu router (las rutas que aprendes/aceptas de un vecino). Se filtra antes de que la ruta entre a tu tabla; lo bloqueado se descarta como si nunca se hubiera recibido.

Out → Evitar que las rutas salgan a otros Routers / Permitir que la rutas salgan a otros Routers.

El filtro aplica al vecino/interfaz específico donde se configura, no de forma global.

Línea 1: ACL/Prefix (permit) → Se hace lo que diga el Route-map

Línea 2: ACL/Prefix (deny) → No se hace lo que diga el Route-map (saltamos a la siguiente regla)

  • Proceso simplificado:
  1. Inicialmente haremos caso al Deny o Permit de ip prefix-list. En caso de Deny = Avanzamos la 2 regla del Route-map.
  2. Si llegase a haber una coincidencia con nuestra direccion IP en alguna de las reglas del Route-map, se revisara si es un Deny o Permit en la ip prefix-list primero y dependiendo del resultado, se aplicara ese resultado a la Route-map.
  3. Si llego hasta la ultima regla del Route-map, seguramente es un Permit Any esa direccion IP.
router eigrp 1
  distribute-list route-map RM_1 out

route-map RM_1 permit 10
  match ip address prefix-list Prueba1
route-map RM_1 deny 20
  match ip address prefix-list Prueba2
route-map RM_1 permit 30
ip prefix-list Prueba1 seq 10 permit 192.168.10.0/24 = Permitir (Razon: Primera regla.)
ip prefix-list Prueba1 seq 20 deny 192.168.20.0/24 = Permitir (Razon: Any)
ip prefix-list Prueba2 seq 10 permit 172.16.10.0/24
ip prefix-list Prueba2 seq 20 deny 172.16.20.0/24

Siguiendo cada prefijo a través del route-map:

192.168.20.0/24 = No haremos caso al Permit 10 porque tenemos un Deny empezando. Ahora debido que en el prefix-list Prueba2 no se encuentra nuestra direccion IP, pasaremos a la siguiente regla del Route-map que es Permit Any.

172.16.10.0/24 = Validamos la direccion IP con la 1 regla del Route-map, no existe coincidencia con prefix-list Prueba1 y pasamos a validar la ruta con la 2 regla del Route-map, que hace referencia con Prefix-list Prueba2 y en este caso habra coincidencia, y sera Deny debido al Route-map.

Configuración

Cada route-map es una lista de statements con nombre, cada uno con un número de secuencia y una acción permit o deny:

route-map <NAME> {permit|deny} <Num-SEQ> match <criterio>

Los statements se evalúan de arriba hacia abajo por número de secuencia (el primer match gana), como una ACL.
match = Definimos el criterio de busqueda para hacer coincidencia con una ruta, Los criterios seran: ACL & Prefix-List.

set = la modificación aplicada cuando hay match (usada principalmente en BGP y redistribution).

Usar este comando route-map <NAME> permit <Num-SEQ> sin la parte de Match es equivalente a usar permit any, en caso de no escribir este comando automaticamente habra un Implicit deny siempre al final.

Implicit deny

Todo Route-Map termina con un deny implícito. Cualquier ruta que no haga match con un statement permit explícito se descarta. Si no existe ningún statement permit, todo se deniega.

Sintaxis (método IGP)

  • Comando: distribute-list {acl-number | acl-name | prefix prefixlist-name | route-map route-map-name | gateway prefix-list-name} {in | out} [interface-id]

Variantes del criterio de filtrado:

  • distribute-list <acl> — filtra usando una ACL estándar o extendida.
  • distribute-list prefix <prefix-list> — filtra usando un prefix-list (permite match por longitud de prefijo con ge/le).
  • distribute-list route-map <route-map> — filtra usando un route-map (el más potente: combina match con posibles set).
  • distribute-list gateway <prefix-list> — filtra según el next-hop/gateway de la ruta, no según el prefijo.
  • [interface-id] — opcional, limita el filtro a una interfaz específica.

gateway filtra por origen, no por prefijo [CCNP]

A diferencia de las otras variantes que miran qué red es, gateway mira de qué next-hop viene la ruta. Útil para bloquear todo lo aprendido desde un router específico, independientemente del prefijo.

Route-map como criterio

route-map name {deny | permit} seq-value
  match ip address {prefix-list name | acl-name/number}

El route-map referencia el prefix-list o ACL en su cláusula match. La lógica de permit/deny de dos capas (selección en el prefix-list, acción en el route-map) está detallada en Route-Maps.

Diferencia clave: IGP vs BGP

Important

El slide muestra el método IGP (router eigrp + distribute-list). En los IGP (EIGRP, OSPF) el filtrado se hace con distribute-list.

En BGP, el route-map normalmente se aplica directamente al vecino:

neighbor <ip> route-map <name> {in | out}

El concepto de in/out es idéntico; lo que cambia es el comando de enganche. No confundir uno con otro.

Relación con BGP path control

En BGP, los route-maps son la herramienta principal para aplicar política. Se asocian per-neighbor y per-direction (inbound/outbound), y usan set para manipular los atributos que dirigen el best-path selection:

  • set weight
  • set local-preference
  • set metric (MED)
  • set as-path prepend
  • set community

El lado match comúnmente referencia las herramientas de filtrado estudiadas por separado: match ip address prefix-list ... y match as-path .... Por eso los route-maps actúan como el pegamento entre el filtrado (qué rutas) y los atributos (qué hacer con ellas).

Cláusula continue [CCNP]

Por defecto, la evaluación se detiene en el primer statement que hace match. El comando opcional continue permite que un statement que hizo match pase el control a un statement posterior, de modo que se puedan aplicar varias acciones set a través de statements. Rara vez necesario, pero es material de examen válido.