Route map的使用:
1、路由再分布的时候,对路由进行过滤,比使用distribute-list更灵活;
2、策略路由;
3、NAT
4、BGP路由策略的实现;
Route map的操作:
1、Router map 由一组语句组成;
2、语句的处理时自上而下的;
3、一旦找到匹配的语句,后续的操作将不再进行;
4、其中的序列号将用来指定route map的顺序,可以增加或者更改某条特定的语句;
Route-map my-map permit 10
{ match statements }
{ set statements }
Route-map my-map deny 20
{ match statements }
{set statements }
Route-map my-map permit 30
{ match statements }
{set statements }
对于上面括号中的match条件与set动作,可以两者都有,可以只包含一者,也可以一个都没有。并且设置序列号的时候,中间的间隔设置的尽量要大一些,为的就是方便以后对这个router-map的扩充,容易往里面加特殊应用的语句。
配置Router-map:
1、 设置router-map的名字和条件----
Router(config)#route-map {名字} [ permit | deny ] [sequence-number]
2、 定义匹配操作的条件----
Router(config-route-map)#match {conditions}
3、 设置匹配成功的语句的动作----
Router(config-route-map)#set {conditions}【这是一个非常强大的命令】
【match与set下面到底包含着什么东西,我们可以在设备上利用帮助命令进行查询。】
Route-map独自应用的时候非常的少,一般都是和路由重分发配合使用,或者为了实现“策略路由”!反正就是“Route-map”的功能很强大,我们在做针对路由的策略的时候,应该首先考虑到它~~~
看看下面的一个应用实例:
Route-map与路由重分发的结合使用:
Router(config)# router ospf 10
Router(config-router)# redistribute rip subnets route-map redis-rip
下面显示的就是路由器上的关于Route-map的配置:
Route map redis-rip permit 10
Match ip addresss 23 29
Set metric 500
Set metric-type type-1
Route map redis-rip deny 20
Match ip address 37
Router map redis-map permit 30
Set metric 5000
Set metric-type type-2
Access-list 23 permit 10.1.0.0 0.0.255.255
Access-list 29 permit 172.16.1.0 0.0.0.255
Access-list 37 permit 10.0.0.0 0.0.0.255
现在来看下route-map的内容:第一个语句表达的非常清楚,就是将匹配访问控制列表23、29的地址的路由更新设置成类型1且度量值为500。
第二个语句, 其中只包含一个match语句,但是上面的一句是:deny 20。这里的关键字“deny”也是至关重要的啊~~想要表达的意思是:和访问控制列表37匹配的路由更新包压根就不能被重分发进入到OSPF。为什么? 就是因为上面的那句“deny20”,已经被“拒绝”了。
第三个语句,这句呢,只包含set语句,没有匹配条件。想要表达的意思就 是:不满足上面的那两个语句的路由更新包,都执行我这个语句中所包含的动作吧。并且得看清楚了,这个序列号为30的语句,用的关键字可是“permit” 【有了这个关键字,即使下面包含的子语句中不包含任何的内容的话也没关系,那么表达的意思就是:OK,我允许了,你们可以重分发进来,不用采取什么特殊的 处理,你们按照你们默认的处理方式就可以了。当然了,这得是在先同意的前提下】,如果是“deny”的话,那就相当于将不符合前面两个语句的路由更新包全 都拒绝掉了。其实,如果我们只有前面的10与20,没有后面的30,系统所采取的动作也是“将不符合前面两个语句的路由更新包全局拒绝掉”。这就相当于访 问控制列表中最后一个默认的deny any any。
PBR:policy based route(基于策略的路由)
可是实现各种路由策略-----IP路由一般是基于目标地址进行路由的,而PBR可以使得路由基于源地址;
但是呢,PBR实现路由策略,需要通过调用Route-map来实现。
PBR的优点:
基于源地址的路由;
QOS;
负载分担;
PBR的配置:
Cisco(config-if)#ip policy route-map [name of route-map]
其实就是在接口上调用一个已经设置好的route-map。
下面看一个PBR的配置实例:
看到这样的拓扑图与要求,我们一下子就该想到使用“PBR”~~~
那我们就看看路由器A的配置:
RouterA(config)# access-list 1 permit 1.1.0.0 0.0.255.255【定义特殊数据流】
RouterA (config)#access-list 2 permit 1.2.0.0 0.0.255.255【定义特殊数据流】
RouterA(config)#rouete-map equal-access permit 10【定义route map】
RouterA(config-route-map)#match ip address 1
RouerA(config-route-map)#set ip default next-hop 6.6.6.6【强制下一跳地址为ISP A的】
RouterA(config-route-map)# rouete-map equal-access permit 20
RouterA(config-route-map)#match ip address 2
RouterA(config-route-map)#set ip default next-hop 7.7.7.7【强制下一跳地址为ISP B的】
RouterA(config-route-map)# rouete-map equal-access permit 30
RouterA(config-route-map)#set default interface null 0【将其他的源地址的路由都滞空】
RouterA(config)#interface e0
RouterA(config-if)#ip address 1.1.1.1. 255.255.255.0
RouterA(config-if)# ip policy route-map equal-access【在E0上应用route-map】
RouterA(config)#interface s0
RouterA(config-if)#ip address 6.6.6.5 255.255.255.0
RouterA(config)#interface s1
RouterA(config-if)#ip address 7.7.7.6 255.255.255.0
在上面配置的上半部分中,实现的是route-map的配置;下半部分中,实现的是route-map在E0口上的引用【这里不是在两个串口上引用的,而是在E0口上,必须得注意!如果是用在串口上的话,就不怎么起作用了】
配置完成了以后,剩下的就是“验证PBR”了:
Show ip policy
显示接口设置的route map信息。
Show route-map [name]
显示route map信息;
其 实我们可以看到啊:route map的单独存在几乎是没有任何意义的,利用这个route map呢,可以很精确的筛选出我们想要的那些数据流,但是至于对这些数据流在哪里开始进行处理,在什么情况下开始进行处理,那就是应用route map的问题了。可是route map呢,又不能单独行动,一般都是和“重分发”或者“策略路由”来结合,才能起到作用。
当与 “重分发”结合的时候呢,实现的目的就是精确的控制“路由更新流量”的流向【这里为什么说是“精确的控制”呢?因为还有一种方法也可以实现“控制路由更新 流量”的流向。这就是“重分发列表”-----distribute list。它一般都是直接应用在一个特定路由协议的进程下的,也是在这个路由协议的配置模式下进行设置的。它的控制精度不是很好】。
当应用于“策略路由”的时候呢,就是在一个路由器接口上对这个route map的调用。就比如ACL一样,设置了以后,你还得进行应用,如果不进行调用的话,那么它的存在时没有任何意义的。
综上所述呢,在控制“路由更新”方面,有这样几种方法:distribute list;route map与重分发协议的结合;PBR(在一个接口上对route map的调用);被动接口。
其实就这样4种方法~~~