本文档介绍如何配置使用动态路由协议的 redistribute 命令应用的路由映射。
Cisco 建议您了解以下主题:
尽管路由映射支持最初是在Cisco IOS软件中引入的,但route-map命令仍然有效,并且在Cisco IOS XE中广泛使用。常规路由映射概念(如有序序列评估、允许和拒绝子句、匹配语句和设置操作)也适用于Cisco IOS XE。命令语法和功能支持因平台、软件版本、路由协议和地址系列而异。在一个重分发上下文中支持的某些match和set命令可能不受支持,或在另一个上下文中行为不同。部署前,务必根据目标版本和平台文档验证确切的命令语法。
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您的网络处于活动状态,请确保您了解所有命令的潜在影响。
本节概述了Cisco IOS软件中使用的路由映射。
路由映射和访问控制列表(ACL)有一些共同的行为。两者都是策略机制,用于按定义的顺序评估条目并返回允许或拒绝结果。
常见特征包括:
有序评估:
ACL和路由映射按顺序处理,从最低序列号到最高序列号。当找到第一个匹配条目,并且应用与该条目关联的操作时,评估将停止。
允许和拒绝逻辑:
ACL和路由映射都使用permit和deny语句。但是,permit和deny的含义取决于ACL或路由映射的应用方式。例如,用于重分发的路由映射的效果与用于基于策略的路由(PBR)或BGP策略的路由映射的效果不同。
上下文相关行为:
ACL和路由映射是通用策略工具。它们的行为取决于参照它们的特征。当用于重分发、BGP路由策略、PBR或其他功能时,相同的路由映射可能具有不同的效果。
路由映射和ACL也有重要区别:
ACL提供基本的允许或拒绝匹配:
ACL主要返回yes或no结果。在路由重分发的情况下,ACL或前缀列表可用作匹配条件,以确定哪些路由适合重分发。
路由映射可以匹配和修改路由信息:
路由映射可以引用ACL、前缀列表或其他匹配条件。除了允许或拒绝路由之外,路由映射还可以使用set命令修改支持的路由属性。例如,重分发过程中使用的路由映射可以设置路由度量、标记、度量类型或其他支持的属性,具体取决于源和目标路由协议。
路由映射支持更高级的匹配条件:
路由映射可以匹配ACL无法直接评估的路由属性。例如,当重分发情景中支持这些匹配条件时,路由映射可以匹配路由类型、路由标记、度量、下一跳、路由源或其他特定于协议的属性。
策略结束行为取决于应用:
ACL末尾包含隐式拒绝。路由映射行为还取决于路由映射的使用方式。对于重分发,如果路由不匹配任何路由映射子句,则不重分发路由。此功能类似于路由映射末尾的隐式deny。
空路由映射子句具有特殊意义:
不带match语句的route-map子句匹配到达该子句的所有剩余路由。在重分发中,空permit子句允许重分发所有剩余路由,而空deny子句阻止重分发所有剩余路由。
动态路由协议redistribute命令通常支持使用路由映射来控制重分发哪些路由以及在重分发过程中如何修改路由属性。当需要根据前缀或掩码进行过滤时,请配置ACL或前缀列表并使用match语句从路由映射引用它。
在必须修改路由信息(如度量、标记、度量类型或其他支持的属性)或必须匹配简单前缀或掩码选择之外的功能时,请在重分发过程中使用路由映射。对于基于前缀的简单过滤,仍然可以使用ACL或前缀列表,但通常在应用于redistribute命令的路由映射中引用它。
在重分发中,路由映射应用于从源路由进程中选择的路由信息,然后才将该信息插入到目标路由进程中。它不直接应用于入站或出站数据包流量。其效果仅限于控制和修改重分发的路由。
这是到增强型内部网关路由协议(EIGRP)的典型开放最短路径优先(OSPF)路由映射,通过redistribute命令应用:
!
router eigrp 1
default-metric 20000 2000 255 1 1500
redistribute ospf 1 route-map ospf-to-eigrp
!
!
ip prefix-list pfx seq 5 permit 10.0.0.0/8 le 32
!
route-map ospf-to-eigrp deny 10
match tag 6
match route-type external type-2
!
route-map ospf-to-eigrp permit 20
match ip address prefix-list pfx
set metric 40000 1000 255 1 1500
!
route-map ospf-to-eigrp permit 30
set tag 8
!
重要观察:
路由映射子句进行了编号。在本例中,子句的序列号为10、20和30。序列号允许您:
如果需要,Cisco建议以10为间隔对子句进行编号,以保留序列号以供将来更改。
路由映射可以具有 permit 和 deny 子句。在route-map ospf-to-eigrp中,有一个序列号为10的deny子句和两个序列号为20和30的permit子句。deny子句拒绝来自重分发的匹配路由。因此,以下规则适用:
每个route-map子句可以包含两种类型的命令:
对于每个重分发的路由,路由器首先在route-map子句中评估match命令。如果匹配条件成功,则根据permit或deny子句的指示重新分发或拒绝路由。如果允许路由,则可通过set命令修改其属性。如果匹配条件失败,则子句不适用于路由,Cisco IOS软件根据路由映射中的下一个子句评估路由。路由映射扫描会继续进行,直到找到其match命令与路由匹配的子句为止,或者直到到达路由映射的结尾。
match或set命令可以在每个子句中省略或重复,注意以下事项:
请勿在deny route-map子句中配置set命令,因为deny子句会阻止路由重分发。没有要修改的重分发路由信息。
没有match或set命令的route-map子句仍然执行操作。空permit子句允许重新分发其余路由,而无需修改。空deny子句可防止对剩余路由进行重分发。如果路由映射被完全扫描并且找不到显式匹配,这也是默认行为。
根据本部分中的信息,上一个 OSPF 到 EIGRP 路由映射示例会执行以下操作:
在本示例中,拓扑由三个以线性方式连接的路由器组成:R3 ↔ R1 ↔ R2。路由器R1充当R3和R2之间的重分发路由器,而R3和R2之间没有直接连接。每台路由器使用千兆以太网接口连接,在相邻设备之间提供高速点对点连接。
R3#show ip route 10.20.20.20
Routing entry for 10.20.20.20/32
Known via "eigrp 1", distance 170, metric 320256, precedence routine (0), type external
Redistributing via eigrp 1
Last update from 192.168.1.1 on GigabitEthernet1, 00:01:02 ago
Routing Descriptor Blocks:
* 192.168.1.1, from 192.168.1.1, 00:01:02 ago, via GigabitEthernet1
Route metric is 320256, traffic share count is 1
Total delay is 10010 microseconds, minimum bandwidth is 40000 Kbit Reliability 255/255, minimum MTU 1500 bytes Loading 1/255, Hops 1
R3#show ip route 172.16.1.0
Routing entry for 172.16.1.0/24
Known via "eigrp 1", distance 170, metric 640256
Tag 8, precedence routine (0), type external
Redistributing via eigrp 1
Last update from 192.168.1.1 on GigabitEthernet1, 00:01:56 ago
Routing Descriptor Blocks:
* 192.168.1.1, from 192.168.1.1, 00:01:56 ago, via GigabitEthernet1
Route metric is 640256, traffic share count is 1
Total delay is 20010 microseconds, minimum bandwidth is 20000 Kbit Reliability 255/255, minimum MTU 1500 bytes Loading 1/255, Hops 1 Route tag 8
R3#
在R3上运行show ip route <prefix>命令以确认路由映射如何处理每个重分发的路由。路由10.20.20.20/32与路由映射序列20匹配,因为pfx前缀列表允许该路由。因此,使用set metric 40000 1000 255 1 1500 命令在序列20下显式配置的度量,将路由重分发到EIGRP。
以下特征反映在路由输出中:
此外,路由172.16.1.0/24与序列10或序列20不匹配,因此它到达路由映射序列30。由于序列30没有match语句,因此它匹配所有剩余路由并应用路由输出中反映的set tag 8:
以下输出确认route-map按顺序处理路由:序列20将显式EIGRP度量应用于前缀列表匹配的前缀,而序列30允许其余重分发路由并使用标记8标记它们。
虽然R3、R1和R2之间的物理链路是具有DLY 10usec的GigabitEthernet接口,但重分发的EIGRP路由也传输重分发过程中配置的种子延迟。在set metric和default-metric命令中,EIGRP延迟值以十微秒为单位输入。因此,配置的延迟1000变成10000微秒,配置的延迟2000变成20000微秒。当R3从R1获知路由时,它会添加10微秒的本地GigabitEthernet接口延迟,这会导致总延迟分别为10010微秒和20010微秒。
本部分包括以下主题:
路由映射是可在许多配置情景中使用的通用机制,包括前面描述的redistribute命令。您可以在用于基于策略的路由(PBR)的路由映射中配置并运行match length命令,以指定转发特定长度的数据包时执行的特定操作。但是,match length命令不适用于用于路由重分布的路由映射。
您可以在路由映射中配置并运行match和set命令,这些命令不受支持,或者对应用路由映射的情景没有影响。例如,在应用于重分发的路由映射中运行match length命令。在重分发中,路由映射通过redistribute命令中指定的源协议应用于路由表中安装的路由。因此,当路由器处理路由映射时,它只解释在重分发环境中有意义的命令。在本示例中,match length命令对重分发没有影响。该命令保留在路由映射配置中并显示在运行配置中,但是,路由重分布不受该命令是否存在的影响。
尽管路由器允许在route-map下配置不同类型的match和set命令,但这些命令必须适用于使用route-map的功能或协议上下文。否则,配置可能会变得混乱,或产生意想不到的结果。
出于以下原因,请勿使用在特定路由映射上下文中不起任何作用的命令,即使这些命令看似无害:
警告:并非所有路由协议都支持set metric +<value>和set metric -<value>语法。在不支持+或 — 形式的平台或协议上,可以忽略符号,并将命令解释为set metric <value>。这可能会导致在重分发过程中分配意外的度量,从而可能会影响路由选择和网络流量。在使用增量或递减度量语法之前,请始终检验平台和协议支持。
注意:有关详细信息,请参阅EIGRP路由映射支持。
例如,请考虑下面的路由映射:
! route-map ospf-to-ospf permit 10 set metric +2 !
此配置似乎将所有路由从一个 OSPF 进程重分配到另一个 OSPF 进程,同时将所有路由的度量增加 2。它将所有路由的度量设置为相同,等于2。这在路由器配置中是意外的。
R2#show ip route
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2, m - OMP
n - NAT, Ni - NAT inside, No - NAT outside, Nd - NAT DIA
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default, U - per-user static route
H - NHRP, G - NHRP registered, g - NHRP registration summary
o - ODR, P - periodic downloaded static route, l - LISP
a - application route
+ - replicated route, % - next hop override, p - overrides from PfR
& - replicated local route overrides by connected
Gateway of last resort is not set
10.0.0.0/32 is subnetted, 2 subnets
C 10.20.20.20 is directly connected, Loopback0
O E2 10.30.30.30 [110/2] via 172.16.1.1, 00:00:26, GigabitEthernet1
172.16.0.0/16 is variably subnetted, 2 subnets, 2 masks
C 172.16.1.0/24 is directly connected, GigabitEthernet1
L 172.16.1.2/32 is directly connected, GigabitEthernet1
O E2 192.168.1.0/24 [110/2] via 172.16.1.1, 00:00:26, GigabitEthernet1
R2#show ip route 10.30.30.30
Routing entry for 10.30.30.30/32
Known via "ospf 1", distance 110, metric 2, type extern 2, forward metric 1
Last update from 172.16.1.1 on GigabitEthernet1, 00:00:38 ago
Routing Descriptor Blocks:
* 172.16.1.1, from 192.168.1.1, 00:00:38 ago, via GigabitEthernet1
Route metric is 2, traffic share count is 1
R2#show ip route 192.168.1.0
Routing entry for 192.168.1.0/24
Known via "ospf 1", distance 110, metric 2, type extern 2, forward metric 1
Last update from 172.16.1.1 on GigabitEthernet1, 00:01:34 ago
Routing Descriptor Blocks:
* 172.16.1.1, from 192.168.1.1, 00:01:34 ago, via GigabitEthernet1
Route metric is 2, traffic share count is 1
此路由映射提供有违直觉的效果:
!
route-map ospf-to-ospf permit 10
set metric -367
!
此配置不是减小重分配路由的度量,而是实际上将度量设置为 367(正值,因为在不带符号的情况下解释 set metric 时不可能出现负度量)。
R2#show ip route
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2, m - OMP
n - NAT, Ni - NAT inside, No - NAT outside, Nd - NAT DIA
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default, U - per-user static route
H - NHRP, G - NHRP registered, g - NHRP registration summary
o - ODR, P - periodic downloaded static route, l - LISP
a - application route
+ - replicated route, % - next hop override, p - overrides from PfR
& - replicated local route overrides by connected
Gateway of last resort is not set
10.0.0.0/32 is subnetted, 2 subnets
C 10.20.20.20 is directly connected, Loopback0
O E2 10.30.30.30 [110/367] via 172.16.1.1, 00:00:06, GigabitEthernet1
172.16.0.0/16 is variably subnetted, 2 subnets, 2 masks
C 172.16.1.0/24 is directly connected, GigabitEthernet1
L 172.16.1.2/32 is directly connected, GigabitEthernet1
O E2 192.168.1.0/24 [110/367] via 172.16.1.1, 00:00:06, GigabitEthernet1
R2#show ip route 10.30.30.30
Routing entry for 10.30.30.30/32
Known via "ospf 1", distance 110, metric 367, type extern 2, forward metric 1
Last update from 172.16.1.1 on GigabitEthernet1, 00:00:17 ago
Routing Descriptor Blocks:
* 172.16.1.1, from 192.168.1.1, 00:00:17 ago, via GigabitEthernet1
Route metric is 367, traffic share count is 1
R2#show ip route 192.168.1.0
Routing entry for 192.168.1.0/24
Known via "ospf 1", distance 110, metric 367, type extern 2, forward metric 1
Last update from 172.16.1.1 on GigabitEthernet1, 00:00:31 ago
Routing Descriptor Blocks:
* 172.16.1.1, from 192.168.1.1, 00:00:31 ago, via GigabitEthernet1
Route metric is 367, traffic share count is 1
应用于重分配的路由映射使用两个路由协议:
每种路由协议都支持自己的一组路由属性。因此,会根据不同的协议评估重分发路由映射中的match和set命令:
命令支持表部分列出了支持的命令。这些命令分类为match和set命令,用于显示重分发路由映射在源路由协议和目标路由协议中的运行方式。
本部分介绍 redistribute 命令中附加的路由映射所支持的命令。有七种路由协议可以重分发路由;但是,只有五个位置会发生重分发。已连接路由和静态路由不是动态路由协议,只能提供要重分配到其他协议中的信息。
Intermediate System-to-Intermediate System (IS-IS) 和 BGP 可将有关无连接网络服务 (CLNS) 的信息与 IP 路由一起传播。为提供全面信息,本部分中的表还涉及与 CLNS 相关的命令,可在这些协议的重分配路由映射中使用这些命令。
可以使用 Routing Information Protocol (RIP)、OSPF、IS-IS 和 BGP 传播 IPv6 路由;这些协议的重分发路由映射可以包含特定于IPv6的命令。match ip和set ip命令专门用于IPv4前缀的重分发。match ipv6和set ipv6命令专门用于IPv6前缀的重分发。仅当使用路由映射向路由协议或从路由协议重分配 CLNS 路由时,才能使用 match clns 和 set clns 命令。
表 1 和表 2 使用以下约定:
支持的命令标记为Yes。
不支持的命令用破折号 ( — ) 标记。
已知用于执行操作(可能是不需要的操作)的不受支持的命令标记为No。
表 1 - 用于匹配由协议安装到路由表中的路由的路由映射命令
| 命令 |
重分配支持 |
||||||
| 已连接 |
静态 |
RIP |
EIGRP |
OSPF |
IS-IS |
调试输出中显示“BGP |
|
| match clns address |
— |
Yes |
— |
— |
— |
Yes |
Yes |
| match clns next-hop |
— |
Yes |
— |
— |
— |
Yes |
— |
| match interface |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
— |
| match ip address |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
| match ip address prefix-list |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
| match ip next-hop |
— |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
| match ip next-hop prefix-list |
— |
无 |
无 |
无 |
无 |
无 |
无 |
| match ip route-source |
— |
— |
Yes |
Yes |
Yes |
— |
Yes |
| match ip route-source prefix-list |
— |
— |
无 |
无 |
无 |
— |
无 |
| match ipv6 address [prefix-list] |
Yes |
Yes |
Yes |
— |
Yes |
Yes |
Yes |
| match ipv6 next-hop [prefix-list] |
— |
Yes |
Yes |
— |
— |
— |
Yes |
| match ipv6 route-source [prefix-list] |
— |
— |
Yes |
— |
— |
— |
Yes |
| match metric |
— |
— |
Yes |
Yes |
Yes |
Yes |
Yes |
| match policy-list |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
| match route-type external |
— |
— |
— |
Yes |
Yes |
Yes |
Yes |
| match route-type internal |
— |
— |
— |
Yes |
Yes |
— |
Yes |
| match route-type local |
— |
— |
— |
— |
— |
— |
Yes |
| match route-type nssa-external |
— |
— |
— |
— |
Yes |
— |
— |
| match route-type {level-1|level-2} |
— |
— |
— |
— |
— |
Yes |
— |
| match tag |
— |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
表 2 - 用于在重分配到目标协议的过程中修改路由属性的命令
| 命令 |
重分配支持 |
||||
| RIP |
EIGRP |
OSPF |
IS-IS |
调试输出中显示“BGP |
|
| set as-path tag |
— |
— |
— |
— |
Yes |
| set community |
— |
— |
— |
— |
Yes |
| set ip next-hop |
— |
— |
— |
— |
Yes |
| set ip next-hop peer-address |
— |
— |
— |
— |
无 |
| set ipv6 next-hop |
— |
— |
— |
— |
Yes |
| set level {backbone|stub-area} |
— |
— |
无 |
— |
— |
| set level {level-1|level-2|level-1-2} |
— |
— |
— |
Yes |
— |
| set local-preference |
— |
— |
— |
— |
Yes |
| set metric |
Yes |
— |
Yes |
Yes |
Yes |
| set metric +/- |
无 |
— |
无 |
无 |
无 |
| set metric eigrp-metric |
— |
Yes |
— |
— |
— |
| set metric +/- eigrp-metric |
— |
无 |
— |
— |
— |
| set metric-type internal |
— |
— |
— |
Yes |
— |
| set metric-type external |
— |
— |
— |
Yes |
— |
| set metric-type {type-1|type-2} |
— |
— |
Yes |
— |
— |
| set nlri |
— |
— |
— |
— |
Yes |
| set origin |
— |
— |
— |
— |
Yes |
| set tag |
Yes |
Yes |
Yes |
— |
— |
| set weight |
— |
— |
— |
— |
Yes |
路由映射是用于控制路由重分配的强大而灵活的工具。它们在重分发过程中对路由协议之间如何交换路由信息提供精细控制。在实施相互重分发时,使用路由标记和显式过滤策略来防止重分发的路由重新引入到其始发路由协议中。否则可能会导致路由环路、流量黑洞或次优转发路径。由于多个路由协议之间的重分发会显着增加路由复杂性,因此必须在部署高级重分发策略之前仔细设计、实施和验证网络。
| 版本 | 发布日期 | 备注 |
|---|---|---|
4.0 |
29-Jul-2026
|
已更新标题、拼写、语法,插入水平线以分隔各部分/可读性。 |
3.0 |
27-Nov-2023
|
重新认证 |
2.0 |
10-Nov-2022
|
格式更新和重新认证。 |
1.0 |
25-Feb-2004
|
初始版本 |