policy

更新时间:2022-12-31 09:28:57 阅读: 评论:0


2022年12月31日发(作者:chela clinton)

Cisco策略路由(policyroute)精解

注:PBR以前是CISCO用来丢弃报文的一个主要手段。比如:设置tinterface

null0,按CISCO说法这样会比ACL的deny要节省一些开销。这里我提醒:

interfacenull0

noipunreachable//加入这个命令

这样避免因为丢弃大量的报文而导致很多ICMP的不可达消息返回。

三层设备在转发数据包时一般都基于数据包的目的地址(目的网络进行转

发),那么策略路由有什么特点呢?

1、可以不仅仅依据目的地址转发数据包,它可以基于源地址、数据应用、

数据包长度等。这样转发数据包更灵活。

2、为QoS服务。使用route-map及策略路由可以根据数据包的特征修改其

相关QoS项,进行为QoS服务。

3、负载平衡。使用策略路由可以设置数据包的行为,比如下一跳、下一接

口等,这样在存在多条链路的情况下,可以根据数据包的应用不同而使用不同的

链路,进而提供高效的负载平衡能力。

策略路由影响的只是本地的行为,所以可能会引起“不对称路由”形式的流

量。比如一个单位有两条上行链路A与B,该单位想把所有HTTP流量分担到A

链路,FTP流量分担到B链路,这是没有问题的,但在其上行设备上,无法保证

下行的HTTP流量分担到A链路,FTP流量分担到B链路。

策略路由一般针对的是接口入(in)方向的数据包,但也可在启用相关配置的

情况下对本地所发出的数据包也进行策略路由。

本文就策略路由的以下四个方面做相关讲解:

1、启用策略路由

2、启用Fast-SwitchedPBR

3、启用LocalPBR

4、启用CEF-SwitchedPBR

启用策略路由:

1.开始配置route-map。使用route-mapmap-tag[permit|deny]

[quence-number]进入route-map的配置模式。

2.使用match语句定义感兴趣的流量,如果不定义则指全部流量。

matchlengthminmaxand/ormatchipaddress{access-list-number

|name}[...access-list-number|name]

3.使用t命令设置数据包行为。

tipprecedence[number|name]

tipnext-hopip-address[...ip-address]

tinterfaceinterface-typeinterface-number[...typenumber]

tipdefaultnext-hopip-address[...ip-address]

tdefaultinterfaceinterface-typeinterface-number[...

type...number]

4.这里要注意tipnext-hop与tipdefaultnext-hop、t

interface与tdefaultinterface这两对语句的区别,不含default

的语句,是不查询路由表就转发数据包到下一跳IP或接口,而含有

default的语句是先查询路由表,在找不到精确匹配的路由条目时,才转

发数据包到default语句指定的下一跳IP或接口。

5.进入想应用策略路由的接口。interfacexxx

6.应用所定义的策略。注意必须在定义好相关的route-map后才能

在接口上使用该route-map,在接口启用route-map策略的命令为:

ippolicyroute-mapmap-tag

启用Fast-SwitchedPBR

在CiscoIOSRelea12.0之前,策略路由只能通过“进程转发”来转发

数据包,这样数据包的转发效率是非常低的,在不同的平台上,基本在每秒1000

到10,000个数据包。随着缓存转发技术的出现,Cisco实现了Fast-Switched

PBR,大大提升了数据包的转发速度。启用方法即在接口中使用iproute-cache

policy命令。

注意:Fast-switchedPBR支持所有的match语句及大多数的t语句,但

其有下面的两个限制:

1.不支持tipdefaultnext-hop与tdefaultinterface

命令。

2.如果在route-cache中不存在t中指定的接口相关的项,那么

仅在point-to-point时tinterface命令才能够Fast-switchedPBR。

而且,在进行“进程转发”时,系统还会先查询路由条目查看该

interface是不是一个合理的路径。而在fastswitching时,系统不会

对此进行检查。

启用LocalPBR

默认情况下,路由器自身所产生的数据包不会被策略路由,如果想对路由器

自身产生的数据包也进行策略路由,那么需要在全局模式下使用如下命令来启

用:

iplocalpolicyroute-mapmap-tag

启用CEF-SwitchedPBR

在支持CEF的平台上,系统可以使用CEF-SwitchedPBR来提高PBR的转发

速度,其转发速度比Fast-SwitchedPBR更快!只要你在启用PBR的路由器上启

用了CEF,那么CEF-SwitchedPBR会自动启用。

注:iproute-cachepolicy仅仅适用于Fast-SwitchedPBR,在CEF-Switched

PBR中并不需要,如果你在启用了CEF的路由器上使用PBR时,这个命令没有任

何作用,系统会忽略此命令的存在。

PBR配置案例:

案例1:

路由器通过两条不同的链路连接至两ISP,对于从async1接口进入的流量,在

没有“精确路由”匹配的情况下,把源地址为1.1.1.1的数据包使用策略路由转

发至6.6.6.6,源地址为2.2.2.2的数据包转发至7.7.7.7,其它数据全部丢弃。

配置如下:

access-list1permitip1.1.1.1

access-list2permitip2.2.2.2

!

interfaceasync1

ippolicyroute-mapequal-access

!

route-mapequal-accesspermit10

matchipaddress1

tipdefaultnext-hop6.6.6.6

route-mapequal-accesspermit20

matchipaddress2

tipdefaultnext-hop7.7.7.7

route-mapequal-accesspermit30

tdefaultinterfacenull0

案例2

在路由器针对不同流量,修改其precedencebit,并设置下一跳地址。对于

1.1.1.1产生的流量,设置precedencebit为priority,并设置其下一跳转发

地址为3.3.3.3;对于2.2.2.2产生的流量,设置precedencebit为critical,

并设置其下一跳转发地址为3.3.3.5。

配置如下:

access-list1permitip1.1.1.1

access-list2permitip2.2.2.2

!

interfaceethernet1

ippolicyroute-mapTexas

!

route-mapTexaspermit10

matchipaddress1

tipprecedencepriority

tipnext-hop3.3.3.3

!

route-mapTexaspermit20

matchipaddress2

tipprecedencecritical

tipnext-hop3.3.3.5

一个routemap由拥有相同route-map名的route-mapstatements集合构成。

这些语句可以用permit和deny来标识是否执行策略路由。如果一个数据包所匹

配的statement的标准是deny,则作为通常的目的地址路由来进行转发。如果

是permit,则所有其上的t命令被应用。

让我们看一个demo:

route-mapdemopermit10

matchXYZ

matchA

tB

tC

route-mapdemopermit20

matchQ

tR

route-mapdemopermit30

任何与X、Y、Z匹配的数据包都执行tB和C,如果没有任何匹配,

也就不会执行任何t命令。

下面我们具体看一下命令:

1、使用route-map命令创建routemap

Router(config)#route-map[permit|deny][]

参数map-tag指定了routemap的名字

参数permit和deny指定了如果条件匹配将执行的动作

参数quence-number用于区分每一个routemapstatement,不同的

statement拥有不同的quencenumber。通过这个参数你可以在一个routemap

的特定位置插入或删除一条routemapstatement,并且可以单独的编辑它。

一个routemap可以包含多个routemapstatement,这些语句的执行

顺序像ACL一样是从上到下。对于一个路由,先匹配的先执行。

2、使用matchroutemap命令定义检查条件

Router(config-route-map)#match{}

3、使用troute-map配置命令定义如果条件匹配后的行为

Router(config-route-map)#t{}

一个routemap可以包含多个routemapstatement,一个match语句

可以包含多个条件。如果一个条件为真,则认为这个条件匹配;然而,必须所有

的条件都匹配,才认为这个routemapstatement匹配。

序列号参数决定了进行条件匹配的顺序。只有序列号为10的语句没有匹

配,才会检查序列号为20的语句才被检查。

一个routemap的最后默认"denyany"。这个deny的使用结果依赖于这

个routemap是怎样使用的。如果一个数据包对于routemap没有匹配项,它会

按照正常的目的地址路由转发。如果你想丢弃这个包,需要包含一个t语句路

由这个包到一个null接口。这条语句应该被放在routemap的最后。

Match

用来在route-map中执行匹配的标准包括:

1、IP访问列表中的源和目的地址

2、三层数据包长度

1、标准访问列表和扩展访问列表都可用来建立策略路由的匹配标准。

要使用IP访问列表来实现策略路由,可以使用matchipaddress命令:

Router(config-route-map)#matchipaddress{|}[...|]

如果定义了多个访问控制列表,任何一个访问列表被匹配都认为这条语句被

匹配。

2、使用matchroutemap命令定义检查条件

Router(config-route-map)#match{}

3、使用troute-map配置命令定义如果条件匹配后的行为

Router(config-route-map)#t{}

一个routemap可以包含多个routemapstatement,一个match语句

可以包含多个条件。如果一个条件为真,则认为这个条件匹配;然而,必须所有

的条件都匹配,才认为这个routemapstatement匹配。

序列号参数决定了进行条件匹配的顺序。只有序列号为10的语句没有匹

配,才会检查序列号为20的语句才被检查。

一个routemap的最后默认"denyany"。这个deny的使用结果依赖于这

个routemap是怎样使用的。如果一个数据包对于routemap没有匹配项,它会

按照正常的目的地址路由转发。如果你想丢弃这个包,需要包含一个t语句路

由这个包到一个null接口。这条语句应该被放在routemap的最后。

Match

用来在route-map中执行匹配的标准包括:

1、IP访问列表中的源和目的地址

2、三层数据包长度

1、标准访问列表和扩展访问列表都可用来建立策略路由的匹配标准。

要使用IP访问列表来实现策略路由,可以使用matchipaddress命令:

Router(config-route-map)#matchipaddress{|}[...|]

如果定义了多个访问控制列表,任何一个访问列表被匹配都认为这条语句被

匹配。

2、使用matchroutemap命令定义检查条件

Router(config-route-map)#match{}

3、使用troute-map配置命令定义如果条件匹配后的行为

Router(config-route-map)#t{}

一个routemap可以包含多个routemapstatement,一个match语句

可以包含多个条件。如果一个条件为真,则认为这个条件匹配;然而,必须所有

的条件都匹配,才认为这个routemapstatement匹配。

序列号参数决定了进行条件匹配的顺序。只有序列号为10的语句没有匹

配,才会检查序列号为20的语句才被检查。

一个routemap的最后默认"denyany"。这个deny的使用结果依赖于这

个routemap是怎样使用的。如果一个数据包对于routemap没有匹配项,它会

按照正常的目的地址路由转发。如果你想丢弃这个包,需要包含一个t语句路

由这个包到一个null接口。这条语句应该被放在routemap的最后。

Match

用来在route-map中执行匹配的标准包括:

1、IP访问列表中的源和目的地址

2、三层数据包长度

1、标准访问列表和扩展访问列表都可用来建立策略路由的匹配标准。

要使用IP访问列表来实现策略路由,可以使用matchipaddress命令:

Router(config-route-map)#matchipaddress{|}[...|]

如果定义了多个访问控制列表,任何一个访问列表被匹配都认为这条语句被

匹配。

2、matchlength命令用来基于三层包长度来建立匹配。

Router(config-route-map)#matchlength

参数定义了三层包的最大和最小长度。当一个包的长度在这两个值之间,

匹配成立。

可以使用matchlength命令来区分传输类型,例如:交互数据包和文件传

输数据包,文件传输数据包往往比较大。

Set

可以使用一系列的t命令来定义当匹配语句满足时,数据包如何通过

路由器进行转发。

1、tipnext-hop

2、tinterface

3、tipdefaultnext-hop

4、tipdefaultinterface

5、tiptos

6、tipprecedence

一些t命令只影响路由表里有明显路由的数据包;其他的t命令只影响

路由表里没有明显路由的数据包。下面我们来仔细看一下:

(1)Router(config-route-map)#tipnext-hop[...]

Setipnexthop命令设定流出端口的数据包的下一跳地址。

这个地址必须是邻接路由器的ip地址。如果配置了多个接口,则使用第一

个相关的可用接口。这个命令将影响所有的数据包类型并且一直使用。

(2)Router(config-route-map)#tinterface[...]

Setinterface命令为数据包设定出向端口。参数指定接口的类型和编号。

如果定义了多个接口,则使用第一个被发现的up接口。

有时,路由表可能不包含到一个数据包目的地址的明显的路由(例如:广播

包或者目的地址未知的数据包),这种情况下,命令将不影响到这些数据包或者

说命令忽略这些数据包。

(3)Router(config-route-map)#tipdefaultnexthop[...]

tipdefaultnexthop命令用于当路由表里没有到数据包目的地址的明

显路由时,设定它的下一跳地址。

(4)Router(config-route-map)#tdefaultinterface[...]

如果到目的地址没有明显路由,tdefaultinterface命令为这些数据包

设定output接口。

一旦目的地址或接口被选择,其他的defaultt命令被忽略。

(5)Router(config-route-map)#tiptos

Setiptos用来设定IP数据包的IPToS值。可以设定以下值:

<0-15>Typeofvicevalue

Max-reliabilitySetmaxreliableToS(2)

Max-throughputSetmaxthroughputToS(4)

Min-delaySetmindelayToS(8)

Min-monetary-costSetminmonetarycostToS(1)

normalSetnormalToS(0)

(6)Router(config-route-map)#tipprecedence[|]

Setipprecedence命令用来设定IP数据包的优先级。可设定值如下表:

ValueName

0Routine

1Priority

2Immediate

3Flash

4Flash-override

5Critical

6Internet

7Network

这个表显示了能够使用的优先级值和相应的名字。

如前面的demo所示这些t命令可以结合起来使用。

本文发布于:2022-12-31 09:28:57,感谢您对本站的认可!

本文链接:http://www.wtabcd.cn/fanwen/fan/90/64604.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

上一篇:虎翼
下一篇:桑耳
标签:policy
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图