APP下载

cisco网络设备route-map功能浅析

2015-01-13重庆广播电视大学

电子世界 2015年21期
关键词:序列号用途语句

重庆广播电视大学 黄  伟

cisco网络设备route-map功能浅析

重庆广播电视大学 黄 伟

路由策略是为了改变网络流量所经过的途径而修改路由信息的技术,主要通过改变路由属性来实现。routemap作为一个相当重要的工具可以实现相应的路由策略。

route-map;ACL;路由重发布

1  route-map概述

route-map是一个相当重要的工具,在从事网络工程相关服务的时候经常会看到route-map的身影,所以可见它非常的重要。接下来我们一起探讨它的概念和特点,还有它部署的方式,同时也结合两个案例来讲解。

类似route-map的工具有很多,比如ACL等。在很多场合都能看到ACL。ACL有两个主要的功能:第一个用来做数据的过滤,也就是说它使用的对象是数据,通过ACL应用在某一个接口的in或者out方向,从而对穿越这个接口的流量进行过滤,比如permit或者deny。第二个广泛的用途是匹配感兴趣的流量,例如ACL搭配NAT,配置NAT的时候要去匹配内网的流量用到的就是ACL;IPsec VPN去匹配加密的数据流也是用ACL去匹配的,但是用ACL去匹配路由的时候具有一定的局限性。routemap在用途和功能等各方面都要比ACL更强势很多,下面我们重点来介绍route-map这个工具。

2  route-map应用案例1

R1和R2作为两台汇聚设备都连接到数据中心,数据中心有两种服务器:一种是生产服务器,一种是办公服务器。R1和R2到办公服务器和生产服务器都是可达的。R3同时双链路连接到两台汇聚设备上,下面连接的是普通用户。

现在的需求是希望R3下面的用户当访问办公服务器的时候,数据从R3到R1。当R1和R3之间的链路出现问题,或者R1宕机,或者R1连接办公服务器的链路出现问题的时候,数据能够自动切换到R2。同时,去往生产服务器的流量,从R3到R2。当R2和R3之间的链路出现问题,或者R2宕机,或者R2连接生产服务器的链路出现问题的时候,访问生产服务器的流量能够自动切换到R1。

接下来我们分别用三种方法来进行需求实现:

方法一:使用浮动路由的方式。在R3上配置四条针对办公服务器和生产服务器的静态路由

ip router 10.1.1.0 255.255.255.0 10.1.13.1

//去往10.1.1.0/24网络下一跳为R1,AD值默认为1

ip router 10.1.1.0 255.255.255.0 10.1.23.2 10

//去往10.1.1.0/24网络下一跳为R2,将AD值调高为10

ip router 10.1.2.0 255.255.255.0 10.1.23.2

//去往10.1.2.0/24网络下一跳为R2,AD值默认为1

ip router 10.1.2.0 255.255.255.0 10.1.13.1 10

//去往10.1.2.0/24网络下一跳为R1,将AD值调高为10

上面的第1条和第4条路由将成为浮动路由。这个时候访问办公服务器的数据流量将从R3到R1,如果R1宕机,能自动切换到R2;访问生产服务器的数据流量将从R3到R2,如果R2宕机,能自动切换到R1。这已经实现了基本的需求,但是却没有完全满足我们的需求,因为静态路由的呈现方式比较死板,不能根据远程拓扑的动态情况来做动态更新。所以这个时候,当R1和R3之间的链路发生故障,或者R2和R3之间的链路发生故障的时候,前面4条路由都能很好的应付这种拓扑的变化。但是,如果是R1或者是R2的上联链路发生问题,静态路由就无法感知了,因为上联链路作为远程的网络,它的拓扑变化,R3里面的静态路由是无法感知的。所以使用浮动路由能实现我们的需求,但不是最优的。

图1 

方法二:利用动态路由代替静态路由。在R1、R2和R3三台路由器之间允许一个动态路由协议,比如说OSPF。然后由R1和R2来动态的更新10.1.1.0/24和10.1.2.0/24的两个网段的路由给R3。在这个时候,R1和R2两个路由器都有可能成为10.1.1.0/24和10.1.2.0/24这两股数据的承载者,所以对于R1来讲,它需要同时将10.1.1.0/24和10.1.2.0/24的路由发送给R3,R2也需要同时下发将10.1.1.0/24和10.1.2.0/24的路由发送给R3,这个时候对于R3来讲,当从同样的路由协议学习到到达相同目的地的两条不同路径时,由metric值来决定最佳路由。这个时候的metric值是相等的,所以就是负载均衡。负载均衡自然也就无法实现我们的需求,我们的需求是数据的分流。另外,即使通过设置R3接口的COST值,将其调高,只要R3其中一侧接口的COST值调高,那整个这一侧的链路就不会用了,从而导致不管是去10.1.1.0/24还是10.1.2.0/24都会切换到另一侧,这个时候也无法满足我们的需求。

方法三:使用route-map工具。Route-map在这里能起到很好的用处。作为我们执行路由策略的一个重要工具,我们可以分别针对10.1.1.0/24和10.1.2.0/24在R1和R2上分别进行策略的部署。在R1将10.1.1.0/24这条路由通告给R3的时候将它的metric值设置得比另一边小一点;在R2将10.1.2.0/24这条路由通告给R3的时候将它的metric值设置得比另一边小一点。那么这样一来的话,R3上就能够从R1和R2都获取到动态的10.1.1.0/24和10.1.2.0/24路由更新。在R3路由器上看来,对于10.1.1.0/24网段来说,R1通告的路由更新中metric值更小,对于10.1.2.0/24来说,R2通告的路由更新中metric值更小.所以,R3去往10.1.1.0/24的数据流量会优选R1,去往10.1.2.0/24的数据流量会优选R2。同时能够实现热备,因为动态路由协议能动态的感知远端拓扑的变化,这就是route-map工具应用的场合之一。

3  route-map的用途

刚才已经介绍过了router-map的第一个用途,重分发期间进行路由过滤或执行策略。它是一个被广泛应用的用途,大量的应用在对网络拓扑提出高的冗余性或者数据流分流要求的时候,都会被大量的部署。第二个用途是策略路由,是对传统路由功能上的提升。第三个用途是在NAT的时候,除了能调用ACL去匹配感兴趣流量以外,我们还通过调用route-map去匹配。还有一个用途是用在BGP里面。在BGP里面route-map的应用是很广泛的,也是非常关键的东西。这些就是route-map的用途。

4  route-map的格式

究竟route-map长什么样?图2就是一个route-map的格式:

图2 

可以看出,其实route-map在很多情况下和ACL是很类似的。route-map是使用一个字符串来定义的,以图2为例,test就是被定义的字符串。一个route-map可以有多块组成,图2的route-map中包含了两块,每块分别用一个序列号10和20定义,每块由多行语句组成,每块当中我们又允许设置两个元素:一个是条件match,一个是动作set。当作匹配的时候,是以块为单位进行的,按照序列号顺序,从上往下逐级匹配,匹配的时候需要去看match语句后面的条件来一条一条匹配,当所有条件都满足的情况下,那么就会执行set语句,并且跳出route-map。如果说这个块不匹配,也就是有条件不匹配,那么会从当前块,跳转到下一块来执行,这就是route-map。

5  route-map的特点

(1)使用match命令匹配特定的分组或路由,set修改该分组或路由相关属性;

(2)route-map中的语句相当于访问列表中的各行;

(3)route-map默认为permit,默认序列号为10,序列号不会自动递增,需要指定序列号;

(4)末尾隐含deny any。

6  route-map应用案例2

我们来再看一个route-map的示例,这个示例跟刚才讲的案例是有关联的。

图3 

R2作为同时运行了RIP和OSPF两个协议的路由器,当在R2上使用redistribute ospf 1 metric 2将OSPF重发布进RIP的时候,所有从OSPF协议重发布进RIP的路由的metric值都是2。如果我们的需求是对从OSPF协议重发布进RIP的路由进行区分对待。这里的三条路由按照刚才那个配置方法的话,三条路由重分发进RIP,只能是一样的metric值。可能基于某种特殊的需求,希望对三条路由进行分别设置相应的metric值。这时候可以使用route-map工具来实现。

在重发布的时候可以关联route-map来进行这样的设置。实现的思路是:按照前面提到的route-map是一个列表,列表是由一个字符串来统一标示的,这个列表中可能包含多个块,每块里面包含match和set。之前做重发布的命令是redistribute ospf 1 metric 2,所有从OSPF协议重发布进RIP的路由的metric值都是2。现在需要对这三条路由进行区分对待,方法是重发布命令里的metric 12去除,改为调用一个route-map,这个route-map是我们自定义的。

如何定义呢?比如说我们写个route-map test ,因为三个路由要分别进行策略的执行,然后定义三个序列号10、20、30分别对应三个路由。第一个序列号的match语句匹配的路由是192.168.1.0,当路由匹配了match语句的时候,执行set语句,将这个路由的metric值设置为1跳;然后又用另外一个序列号20来匹配第二条路由,match语句定义的是第二条路由,然后set这个动作执行的是metric值改为2;第三个序列号对应的是第三条路由,执行的动作是将metric值改为3。一旦我们将这个route-map关联到重发布这个动作的时候,那么在重发布的过程当中,就会用每一条路由和这个route-map去比对。比如说第二条路由拿过来做比对的话,从上往下比对,第一个序列号先进行对比,结果发现第二条路由跟这个match不一致,因为这个match的是192.168.1.0,它就会继续到第二个序列号比较。到了第二个序列号以后,发现match语句匹配了,因为这个match的就是192.168.2.0这条路由,它会执行set这个动作,将metric值设置为2,然后就跳出route-map。如果所有序列号里面的match都不匹配,在最后有一个默认隐含的deny any,deny就是不匹配,这里的deny和ACL里面的deny是不一样的,ACL的deny是直接丢弃,这里的deny是不匹配,这就是routemap的一个例子。

7  route-map中match语句和set语句的常用配置

match语句:

match ip address 匹配访问列表或前缀列表

match length 根据分组的第三层长度进行匹配

match interface 匹配下一跳为指定接口之一的路由

match metric 匹配具有指定度量值的路由

match route-type 匹配指定类型的路由

match community 匹配BGP共同体

match tag 根据路由的标记进行匹配

set语句:

set metric 设置路由协议的度量值

set metric-type 设置目标路由协议的度量值类型

set interface 指定报文的出接口

set ip next-hop 指定转发的下一跳

8  总结

最后来做一个整合,在全局模式下使用route-map来创建一个route-map,后面跟上一个自定义的字符串来表示这个route-map的名字。一个route-map可以包含多个序列号,每一个序列号里面允许定义一个或多个match和set语句,并且序列号是有顺序的。route-map名字后面的permit表示匹配,deny表示不匹配,route-map里面的deny不是ACL里面的拒绝,ACL的deny如果用在数据进行操作的话,表示把数据包丢弃。只要进入一个序列号的配置中,就可以使用match语句去调用相应的命令来进行对应的匹配,

match语句可以写多条,主要有两种形式:

(1)如果两条match语句是换行写的,那么这两条语句就是且的关系,也就是说,当我们在做比对的时候,这两个条件都要满足,才认为这个序列号的条件都满足了,才执行set语句,否则,只要有一个条件它没有满足,这个匹配就不成真,那就跳过这个序列号,进入下一个序列号进行比较;

(2)如果单条match语句包括多个条件时,使用逻辑or运算,只要有一个条件满足了,就认为匹配了。

猜你喜欢

序列号用途语句
一种离线电子钱包交易的双向容错控制方法
重点:语句衔接
关于《国家税务总局 工业和信息化部关于加强车辆配置序列号管理有关事项的公告》的解读
DNA的奇妙用途
recALL
用途
如何搞定语句衔接题
PP助手教你辨别翻新iPhone5小白不再中招
作文语句实录
书的新用途