首页 > 代码库 > Router Map

Router Map

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的配置实例:

 19fd3b1ee4053553304e15df.jpg

看到这样的拓扑图与要求,我们一下子就该想到使用“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 listroute map与重分发协议的结合;PBR(在一个接口上对route map的调用);被动接口。

   其实就这样4种方法~~~


本文出自 “每天一小步” 博客,请务必保留此出处http://gaibianziji.blog.51cto.com/1082897/1426658