注:PBR以前是CISCO用来丢弃报文的一个主要手段。比如:设置set interface null 0,按CISCO说法这样会比ACL的deny要节省一些开销。这里我提醒:

interface null 0
no ip unreachable //加入这个命令
这样避免因为丢弃大量的报文而导致很多ICMP的不可达消息返回。

三层设备在转发数据包时一般都基于数据包的目的地址(目的网络进行转发),那么策略路由有什么特点呢?

1、可以不仅仅依据目的地址转发数据包,它可以基于源地址、数据应用、数据包长度等。这样转发数据包更灵活。

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

3、负载平衡。使用策略路由可以设置数据包的行为,比如下一跳、下一接口等,这样在存在多条链路的情况下,可以根据数据包的应用不同而使用不同的链路,进而提供高效的负载平衡能力。

策略路由影响的只是本地的行为,所以可能会引起“不对称路由”形式的流量。比如一个单位有两条上行链路A与B,该单位想把所有HTTP流量分担到A链路,FTP流量分担到B链路,这是没有问题的,但在其上行设备上,无法保证下行的HTTP流量分担到A链路,FTP流量分担到B链路。

策略路由一般针对的是接口入(in)方向的数据包,但也可在启用相关配置的情况下对本地所发出的数据包也进行策略路由。

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

1、启用策略路由

2、启用Fast-Switched PBR

3、启用Local PBR

4、启用CEF-Switched PBR

启用策略路由:

1.        开始配置route-map。使用route-map map-tag [permit | deny] [sequence-number]进入route-map的配置模式。

2.        使用match语句定义感兴趣的流量,如果不定义则指全部流量。match length min max and/or match ip address {access-list-number | name}[...access-list-number | name]

3.        使用set命令设置数据包行为。
  set ip precedence [number | name]
  set ip next-hop ip-address [... ip-address]
  set interface interface-type interface-number [... type number]
  set ip default next-hop ip-address [... ip-address]
  set default interface interface-type interface-number [... type ...number]

4.        这里要注意set ip next-hop与set ip default next-hop、set interface与set default interface这两对语句的区别,不含default的语句,是不查询路由表就转发数据包到下一跳IP或接口,而含有default的语句是先查询路由表,在找不到精确匹配的路由条目时,才转发数据包到default语句指定的下一跳IP或接口。

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

6.        应用所定义的策略。注意必须在定义好相关的route-map后才能在接口上使用该route-map,在接口启用route-map策略的命令为:
ip policy route-map map-tag

启用Fast-Switched PBR

在Cisco IOS Release 12.0之前,策略路由只能通过“进程转发”来转发数据包,这样数据包的转发效率是非常低的,在不同的平台上,基本在每秒1000到10,000个数据包。随着缓存转发技术的出现,Cisco实现了Fast-Switched PBR,大大提升了数据包的转发速度。启用方法即在接口中使用ip route-cache policy命令。

注意:Fast-switched PBR支持所有的match语句及大多数的set语句,但其有下面的两个限制:

1.        不支持set ip default next-hop 与 set default interface命令。

2.        如果在route-cache中不存在set中指定的接口相关的项,那么仅在point-to-point时set interface命令才能够Fast-switched PBR。而且,在进行“进程转发”时,系统还会先查询路由条目查看该interface是不是一个合理的路径。而在fast switching时,系统不会对此进行检查。

启用Local PBR

默认情况下,路由器自身所产生的数据包不会被策略路由,如果想对路由器自身产生的数据包也进行策略路由,那么需要在全局模式下使用如下命令来启用:
ip local policy route-map map-tag

启用CEF-Switched PBR

在支持CEF的平台上,系统可以使用CEF-Switched PBR来提高PBR的转发速度,其转发速度比Fast-Switched PBR更快!只要你在启用PBR的路由器上启用了CEF,那么CEF-Switched PBR会自动启用。
注:ip route-cache policy仅仅适用于Fast-Switched PBR,在CEF-Switched PBR中并不需要,如果你在启用了CEF的路由器上使用PBR时,这个命令没有任何作用,系统会忽略此命令的存在。

PBR配置案例:

案例1:
路由器通过两条不同的链路连接至两ISP,对于从async 1接口进入的流量,在没有“精确路由”匹配的情况下,把源地址为1.1.1.1的数据包使用策略路由转发至6.6.6.6, 源地址为2.2.2.2的数据包转发至7.7.7.7,其它数据全部丢弃。

配置如下:
access-list 1 permit ip 1.1.1.1 
access-list 2 permit ip 2.2.2.2 
!
interface async 1
 ip policy route-map equal-access
!
route-map equal-access permit 10
 match ip address 1
 set ip default next-hop 6.6.6.6
route-map equal-access permit 20
 match ip address 2
 set ip default next-hop 7.7.7.7
route-map equal-access permit 30
 set default interface null0

案例2
在路由器针对不同流量,修改其precedence bit,并设置下一跳地址。对于1.1.1.1产生的流量,设置precedence bit为priority,并设置其下一跳转发地址为3.3.3.3;对于2.2.2.2产生的流量,设置precedence bit为critical,并设置其下一跳转发地址为3.3.3.5。

配置如下:
access-list 1 permit ip 1.1.1.1
access-list 2 permit ip 2.2.2.2
!
interface ethernet 1
   ip policy route-map Texas
!
route-map Texas permit 10
   match ip address 1
   set ip precedence priority
   set ip next-hop 3.3.3.3
!
route-map Texas permit 20
   match ip address 2
   set ip precedence critical
   set ip next-hop 3.3.3.5

一个route map由拥有相同route-map名的route-map statements集合构成。这些语句可以用permit和deny来标识是否执行策略路由。如果一个数据包所匹配的statement的标准是deny,则作为通常的目的地址路由来进行转发。如果是permit,则所有其上的set命令被应用。

让我们看一个demo:

route-map demo permit 10

match X Y Z

match A

set B

set C

route-map demo permit 20

match Q

set R

route-map demo permit 30

任何与X、Y、Z匹配的数据包都执行set B和C,如果没有任何匹配,也就不会执行任何set命令。

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

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

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

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

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

  参数sequence-number用于区分每一个route map statement,不同的statement拥有不同的sequence number。通过这个参数你可以在一个route map的特定位置插入或删除一条route map statement,并且可以单独的编辑它。

一个route map可以包含多个route map statement,这些语句的执行顺序像ACL一样是从上到下。对于一个路由,先匹配的先执行。

2、使用match  route map命令定义检查条件

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

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

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

一个route map可以包含多个route map statement,一个match语句可以包含多个条件。如果一个条件为真,则认为这个条件匹配;然而,必须所有的条件都匹配,才认为这个route map statement匹配。

序列号参数决定了进行条件匹配的顺序。只有序列号为10的语句没有匹配,才会检查序列号为20的语句才被检查。

一个route map的最后默认"deny any"。这个deny的使用结果依赖于这个route map是怎样使用的。如果一个数据包对于route map没有匹配项,它会按照正常的目的地址路由转发。如果你想丢弃这个包,需要包含一个set语句路由这个包到一个null接口。这条语句应该被放在route map的最后。

Match

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

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

2、  三层数据包长度

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

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

Router(config-route-map)#match ip address {|} [...|]

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

2、使用match  route map命令定义检查条件

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

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

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

一个route map可以包含多个route map statement,一个match语句可以包含多个条件。如果一个条件为真,则认为这个条件匹配;然而,必须所有的条件都匹配,才认为这个route map statement匹配。

序列号参数决定了进行条件匹配的顺序。只有序列号为10的语句没有匹配,才会检查序列号为20的语句才被检查。

一个route map的最后默认"deny any"。这个deny的使用结果依赖于这个route map是怎样使用的。如果一个数据包对于route map没有匹配项,它会按照正常的目的地址路由转发。如果你想丢弃这个包,需要包含一个set语句路由这个包到一个null接口。这条语句应该被放在route map的最后。

Match

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

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

2、  三层数据包长度

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

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

Router(config-route-map)#match ip address {|} [...|]

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

2、使用match  route map命令定义检查条件

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

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

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

一个route map可以包含多个route map statement,一个match语句可以包含多个条件。如果一个条件为真,则认为这个条件匹配;然而,必须所有的条件都匹配,才认为这个route map statement匹配。

序列号参数决定了进行条件匹配的顺序。只有序列号为10的语句没有匹配,才会检查序列号为20的语句才被检查。

一个route map的最后默认"deny any"。这个deny的使用结果依赖于这个route map是怎样使用的。如果一个数据包对于route map没有匹配项,它会按照正常的目的地址路由转发。如果你想丢弃这个包,需要包含一个set语句路由这个包到一个null接口。这条语句应该被放在route map的最后。

Match

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

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

2、  三层数据包长度

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

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

Router(config-route-map)#match ip address {|} [...|]

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

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

Router(config-route-map)#match length

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

  可以使用match length命令来区分传输类型,例如:交互数据包和文件传输数据包,文件传输数据包往往比较大。

Set

可以使用一系列的set命令来定义当匹配语句满足时,数据包如何通过路由器进行转发。

1、  set ip next-hop

2、  set interface

3、  set ip default next-hop

4、  set ip default interface

5、  set ip tos

6、  set ip precedence

  一些set命令只影响路由表里有明显路由的数据包;其他的set命令只影响路由表里没有明显路由的数据包。下面我们来仔细看一下:

  (1)    Router(config-route-map)#set ip next-hop [...]

  Set ip next hop 命令设定流出端口的数据包的下一跳地址。

   这个地址必须是邻接路由器的ip地址。如果配置了多个接口,则使用第一个相关的可用接口。这个命令将影响所有的数据包类型并且一直使用。

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

  Set interface 命令为数据包设定出向端口。 参数指定接口的类型和编号。如果定义了多个接口,则使用第一个被发现的up接口。

  有时,路由表可能不包含到一个数据包目的地址的明显的路由(例如:广播包或者目的地址未知的数据包),这种情况下,命令将不影响到这些数据包或者说命令忽略这些数据包。

  (3)Router(config-route-map)# set ip default next hop [...]

  set ip default next hop命令用于当路由表里没有到数据包目的地址的明显路由时,设定它的下一跳地址。

  (4)Router(config-route-map)# set default interface [...]

  如果到目的地址没有明显路由,set default interface命令为这些数据包设定output接口。

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

  (5)Router(config-route-map)# set ip tos

  Set ip tos 用来设定IP数据包的IP ToS值。可以设定以下值:

<0 - 15>

Type of sevice value

Max-reliability

Set max reliable ToS (2)

Max-throughput

Set max throughput ToS (4)

Min-delay

Set min delay ToS (8)

Min-monetary-cost

Set min monetary cost ToS (1)

normal

Set normal ToS (0)

  (6) Router(config-route-map)#set ip precedence [|]

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

Value

Name

0

Routine

1

Priority

2

Immediate

3

Flash

4

Flash-override

5

Critical

6

Internet

7

Network

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

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

本文转自 沐小七  51CTO博客,原文链接:http://blog.51cto.com/3088522/1032642

Cisco策略路由(policy route)精解相关推荐

  1. JavaScript 编程精解 中文第三版 七、项目:机器人

    七.项目:机器人 原文:Project: A Robot 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 部分参考了<JavaScript 编程精解(第 2 版)> ...

  2. 网络管理必备工具软件精解(Windows版)---转载及个人见解

    网络管理必备工具软件精解(Windows版) 出版社: 人民邮电出版社 作者: 刘晓辉 王淑江 出版日期:2006年3月 国标编号:ISBN 7-115-14546 条形码: 字数:899千字 印张: ...

  3. 《Cisco IOS XR技术精要》一2.5 进程迁移

    本节书摘来自异步社区<Cisco IOS XR技术精要>一书中的第2章,第2.5节,作者 [美]Mobeen Tahir , Mark Ghattas , Dawit Birhanu , ...

  4. IIS负载均衡-Application Request Route详解第三篇:使用ARR进行Http请求的负载均衡(上)...

    IIS负载均衡-Application Request Route详解第三篇:使用ARR进行Http请求的负载均衡(上) 在前两篇文章中,我们已经讲述如何配置与安装ARR,从本篇文章开始,我们将重点的 ...

  5. 《Linux企业应用案例精解》一书已由清华大学出版社出版

    <Linux企业应用案例精解>简介 本书同时被×××国家科学图书馆.中国国家图书馆.首都图书馆.清华大学.北京大学等上百所国内综合性大学图书馆收录为馆藏图书,2013年本书远销到中国台湾地 ...

  6. JavaScript 编程精解 中文第三版 零、前言

    零.前言 原文:Introduction 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 部分参考了<JavaScript 编程精解(第 2 版)> We think ...

  7. IIS负载均衡-Application Request Route详解第一篇: ARR介绍

    IIS负载均衡-Application Request Route详解第一篇: ARR介绍   说到负载均衡,相信大家已经不再陌生了,本系列主要介绍在IIS中可以采用的负载均衡的软件:微软的Appli ...

  8. 《精解Windows8》——2.6 Windows应用商店

    本节书摘来自异步社区<精解Windows8>一书中的第2章,第2.6节,作者:远景论坛编辑部著,更多章节内容可以访问云栖社区"异步社区"公众号查看 2.6 Window ...

  9. 项目实践精解:ASP.NET应用开发

    前 言 作者从事软件设计开发工作十多年,最近才萌发了写书的想法.因为作者希望推广一种最有效的学习捷径,这就是Project-Driven Training,也就是用项目实践来带动理论学习的方法.基于此 ...

最新文章

  1. springboot整合liquibase入门实例
  2. java post 登陆_java HttpPost 密码登录和提交表单的案例
  3. poi excel设置合并单元格边框格式
  4. c语言中dfs用pos做参数,LeetCode算法练习——深度优先搜索 DFS(2)
  5. jps命令 Java Virtual Machine Process Status Tool
  6. 查看一个网站后台是用的什么服务器
  7. java合同管理系统源码下载_合同管理系统 - 源码下载|行业应用软件|源代码 - 源码中国...
  8. SSH连接原理及ssh-key
  9. 全网首发:char数组矩阵转bit的算法
  10. oracle空间查询
  11. Kubernetes tutorial - K8S 官方入门教程 中文翻译
  12. PID控制,matlab/simulink
  13. linuxi下的做图工具——gnuplot安装
  14. JavaScript基础(五)——ES2015(ES6)基础语法
  15. 爬虫如何利用session方法保持登陆状态(selenium)
  16. 计算机终桌面操作系统,支持国产电脑操作系统,光威、中兴新支点桌面系统首次触电...
  17. 网络图片缩略图查看工具
  18. 使用script#编写Xrm的Javascript
  19. python标准库:fractions有理数
  20. json转义问题(消除反斜杠及{}外面多余的“)

热门文章

  1. mysql rpm 安装6_CentOS 7.6 MySQL 8.0 RPM包方式安装及新特性介绍
  2. loginrequired注解_简单实现一个登录验证的注解来保护私有资源
  3. oracle中job的retry次数,有大佬帮忙看下我安装过程中到底出啥问题了么..
  4. mysql三高讲解(二):2.1 索引组织表
  5. word2vec模型评估_NLP之文本分类:「Tf-Idf、Word2Vec和BERT」三种模型比较
  6. python打包exe黑框一闪而过,解决pyinstaller打包exe文件出现命令窗口一闪而过的问题...
  7. 投资理财web后端系统_银行理财产品有风险吗?最大风险是什么?
  8. bootstrap 生日选择_bootstrap的datetimepicker只选择月份
  9. 大班音乐机器人反思_幼儿园大班音乐律动教案《伦敦桥》含反思
  10. ubuntu12.04 php环境搭建,Ubuntu12.04筹建php开发环境