●路由映射(route map)的基本规则
路由映射的逻辑结构有点类似于一般编程语言里的If/Then/Else结构。一个路由映射块可能包含多条route-map命令,路由器基于每条命令的序号顺序处理。每条route-map命令包含了匹配参数(使用match命令配置),如果对所有包匹配,则省略match命令。每条route-map命令还可能有set命令用来表示对信息的处理。路由映射的一般规则如下:
1)每条route-map命令必须有一个配置好的名字,所有使用同一名字的命令组成一个路由映射块。
2)每条route-map命令有一个行为选项(permit或者deny)。
3)同一路由映射块中的每条route-map命令有唯一的序号,支持单条route-map命令的删除和插入。
4)当路由映射用于重分发时,路由映射处理的路由来自当前的路由表。
5)路由映射基于序号顺序处理。
6)如果有某条路由与路由映射匹配,它不会再被余下route-map命令继续处理(特定于路由重分发)。
7)当路由与route-map匹配时,如果route-map命令有permit选项,路由进行重分发(特定于路由重分发)。
8)当路由与route-map匹配时,如果route-map命令有deny选项,路由不进行重分发(特定于路由重分发)。
●permit和deny的理解
对于路由映射而言,理解的一大难点在于路由重分发时的permit和deny。可以结合以下例子来探讨一下这个问题:
图的最开始处是该路由器连接的网络:A类网络32到39,考虑到它们的路由是否进行重分发。当处理第一条route-map命令时,因为其行为选项是permit,所以到与其ACL(32)匹配的网络32的路由进入重分发路由列表。其余未匹配的继续往下处理第二条route-map命令,此时其行为选项还是permit,所以到与其ACL(d-36-p-37)匹配的网络37的路由进入重分发路由列表。其余未匹配的继续流到第三条route-map命令,此条的行为选项为deny,所以到与其ACL(d-38-p-39)匹配的网络39的路由进入不重分发路由列表。其余未匹配的继续到第四条route-map命令,此条的行为选项也是deny,所以到与其ACL(33)匹配的网络33的路由进入不重分发路由列表。剩下未匹配的网络是34, 35, 36和38,因为路由映射块的默认行为选项是deny,所以这些未匹配的网络最后都进入不重分发路由列表。在这个过程中,注意不要将ACL中deny的网络误认为应该进入不重分发路由列表,这里deny的网络只是表示与该条ACL不匹配而已,它所deny的网络应该继续留待下一条route-map命令处理。
总起来看,路由映射的在重分发时的逻辑如下:
1)带permit选项的route-map命令要不使一条路由重分发,要不使路由留待下一个route-map子句的检查。
2)带deny选项的route-map命令要不过滤掉一条路由,要不使路由留待下一个route-map子句的检查。
3)如果使用match命令来匹配ACA,ACL中的deny选项不会导致该路由被过滤,它只是表示该条路由与route-map子句不匹配。
4)route-map命令隐含的包括一条拒绝所有的子句在最后;如果需要配置允许所有,可以使用带permit选项而无match命令的route-map命令。
●用于重分发的match命令
路由映射使用match命令来定义其匹配的路由。如果在一条route-map子句中配置了多条match命令,那么匹配的路由须满足所有match命令的要求。用于IGP路由重分发的match命令选项有:
match命令 |
描述 |
match interface interface-type interface-number [… interface-type interface-number] |
匹配外发接口上的路由 |
match ip address {[access-list-number | access-list-name] | prefix-list prefix-list-name} |
匹配路由前缀和前缀长度 |
match ip next-hop {access-list-number | access-list-name} |
匹配路由器的下一跳地址 |
match ip route-source {access-list-number | access-list-name} |
匹配广播路由的路由器IP地址 |
match metric metric-value |
匹配路由的metric |
match route-type {internal | external [type-1 | type-2] | level-1 | level-2} |
匹配路由类型 |
match tag tag-value […tag-value] |
匹配路由的标识(必须预先设好) |
●用于重分发的set命令
路由映射通过set命令来改变某些允许重分发的路由的信息,下表列出了一些主要用于IGP路由重分发的set命令选项:
set命令 |
描述 |
set level {level-1 | level-2 | level-1-2 | stub-area | backbone} |
定义路由重分发后所进入的数据库 |
set metric metric-value |
为OSPF、RIP和IS-IS设置路由metric |
set metric bandwidth delay reliability loading mtu |
设置IGRP/EIGRP路由的metric |
set metric-type {internal | external | type-1 | type-2} |
为IS-IS和OSPF设置路由类型 |
set tag tag-value |
设置路由的标识 |