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:
- Inicialmente haremos caso al
DenyoPermitdeip prefix-list. En caso deDeny= Avanzamos la 2 regla del Route-map. - Si llegase a haber una coincidencia con nuestra direccion IP en alguna de las reglas del Route-map, se revisara si es un
DenyoPermiten laip prefix-listprimero y dependiendo del resultado, se aplicara ese resultado a la Route-map. - Si llego hasta la ultima regla del Route-map, seguramente es un
Permit Anyesa 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
denyimplícito. Cualquier ruta que no haga match con un statementpermitexplícito se descarta. Si no existe ningún statementpermit, 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 conge/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.
gatewayfiltra por origen, no por prefijo [CCNP]A diferencia de las otras variantes que miran qué red es,
gatewaymira 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 condistribute-list.En BGP, el route-map normalmente se aplica directamente al vecino:
neighbor <ip> route-map <name> {in | out}El concepto de
in/outes 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 weightset local-preferenceset metric(MED)set as-path prependset 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
continuepermite que un statement que hizo match pase el control a un statement posterior, de modo que se puedan aplicar varias accionesseta través de statements. Rara vez necesario, pero es material de examen válido.