策略路由PBR深层理解

一.策略路由概述

1.1普通路由的概念

普通路由转发基于路由表进行报文的转发;路由表的建立:直联路由、主机路由;静态配置路由条目;动态路由协议学习生成;查看命令——show ip route对于同一目的网段,可能存在多条distance不等的路由条目。

1.2 策略路由的概念

1.2.1 策略路由

所谓策略路由,顾名思义,即是根据一定的策略进行报文转发,因此策略路由是一种比目的路由更灵活的路由机制。在路由器转发一个数据报文时,首先根据配置的规则对报文进行过滤,匹配成功则按照一定的转发策略进行报文转发。

这种规则可以是基于标准和扩展访问控制列表,也可以基于报文的长度;而转发策略则是控制报文按照指定的策略路由表进行转发,也可以修改报文的IP优先字段。因此,策略路由是对传统IP路由机制的有效增强。

策略路由能满足基于源IP地址、目的IP址、协议字段,甚至于TCP、UDP的源、目的端口等多种组合进行选路。简单点来说,只要IP standard/extended ACL 能设置的,都可以做为策略路由的匹配规则进行转发。

策略路由(Policy Route)是指在决定一个IP包的下一跳转发地址或是下一跳缺省IP地址时,不是简单的根据目的IP地址决定,而是综合考虑多种因素来决定。

如可以根据DSCP字段、源和目的端口号,源IP地址等来为数据包选择路径。策略路由可以在一定程度上实现流量工程,使不同服务质量的流或者不同性质的数据(语音、FTP)走不同的路径。

基于策略的路由为网络管理者提供了比传统路由协议对报文的转发和存储更强的控制能力。传统上,路由器用从路由协议派生出来的路由表,根据目的地址进行报文的转发。

基于策略的路由比传统路由能力更强,使用更灵活,它使网络管理者不仅能够根据目的地址而且能够根据协议类型、报文大小、应用或IP源地址来选择转发路径。策略可以定义为通过多路由器的负载平衡或根据总流量在各线上进行报文转发的服务质量(Q o S )。

本交换机所支持的策略路由是与QOS的流分类标准相结合的。针对简单流分类和复杂流分类,可以根据到来的数据包的匹配的以下特征,来设定策略路由:

  • 802.1p优先级。
  • VLAN ID。
  • 源/目的MAC地址。
  • 源/目的的IP地址(包括IP MASK部分)。
  • TCP/UDP源/目的端口号。
  • IP优先级。
  • DSCP的优先级。
  • IP的协议类型字段。

可以对匹配以上特征的流,设定以下两种策略路由:

下一跳IP地址: 这条配置命令标示了那些符合匹配语句的输出报文将进行下一跳IP地址。

下一跳缺省IP地址: 这条配置命令设定缺省的下一跳。如果路由表中没有明确的路径,则路由器使用缺省的下一跳。这个过程经常应用于在两个不同的服务提供商之间进行负载平衡。当使用这条命令时,也是首先用路由表进行路由。如果路由表中没有明确的路径,则路由器根据制定的策略使用缺省值。

策略路由使网络管理者能根据它提供的机制指定一个报文采取的具体路径。而在当今高性能的网络中,这种选择的自由性是很需要的。需要明确策略路由是设置在接收报文接口而不是发送接口。

当在接收报文的接口设定了策略路由后,交换机在该接口,检测到来的数据报文,当检测到有匹配相应流分类特征的数据数据报文经过时,就查找相应的策略路由表项,按照策略路由表项所指定的下一跳IP地址或是缺省路由IP地址,来选择转发路径。

策略路由功能是与流分类和流策略紧密相关的,关于流分类和流策略的基本配置命令见QOS配置部分。

1.2.2 路由策略

通过路由策略控制路由的接收、发布、引入的方法,实现对路由的优化。

二.策略路由的实现原理

2.1 策略路由的好处

  • 基于源的路由可以使不同的用户选择不同的ISP。
  • 通过设置IP Precedence或Tos来实现QOS。
  • 实现负载均衡。

2.2 策略路由的流程

使用Route-map来配置策略路由的流程

策略路由只对入口数据包有效。

应用策略路由,必须要指定策略路由使用的路由映射,并且要创建路由映射。一个路由映射由很多条策略组成,每个策略都定义了1个或多个的匹配规则和对应操作。一个接口应用策略路由后,将对该接口接收到的所有包进行检查,不符合路由映射任何策略的数据包将按照通常的路由转发进行处理,符合路由映射中某个策略的数据包就按照该策略中定义的操作进行处理。

策略路由对报文的发送接口、下一跳的配置是基于多转发表实现的。

2.3策略路由的处理流程

2.3.1 流模式和逐包模式

流模式

第一个包查路由转发表,如果存在路由,将该路由项以source、dest、tos、入接口等索引放置到cache中,以后同样的流就可以直接查cache。

  • 对于低端路由器,所有操作由CPU+内存处理。
  • 对于中高端设备,一般由NP 和Asic芯片完成处理。

逐包模式

每个包都进行查表后才进行转发。

2.3.2 流模式流程图

2.3.2 路由器流模式及逐包模式切换命令

  • ip route-cache policy:开启快速交换策略路由就是流模式。
  • no ip route-cache policy:关闭该功能就是逐包模式。

2.4 Route-map原理与执行

2.4.1 Route-map概念

route-map是由一组match字句和set字句构成,他实际上是访问控制列表的一个超集。当需做策略路由的报文匹配route-map中的match字句定义的规则时,将按照set字句的配置决定该报文的路由方式,包括设置报文的优先权字段,设置报文的下一跳,设置报文的发送接口。

2.4.2 理解Route-map

类似于复杂的Access-list,自顶向下地处理,一旦有一条匹配,则立刻结束route-map查找,Route-map每个条目都被赋予编号,可以任意地插入或删除条目。

当使用策略路由时,首先定义重分布路由映射,一个路由映射可以由很多策略组成,策略按序号大小排列,只要符合了前面策略,就退出路由映射的执行。由于路由映射中每个策略都有其编号,故可以方便的插入或删除。

2.4.3 Route-map的执行语句

route-map test permit 10
       match x y z
       match a
              set b
              set c
route-map test permit 20
       match q
              set r
deny all(系统隐含)
If (x or y or z) and a
       then set  (b and c)
else if q
       then set r
else set nothing
route-map-name

给路由图定义一个便于记忆的名字。redistribute 路由进程配置命令是通过该名字引用路由图的。一个路由图可以定义多个路由图策略,一个路由图策略对应一个序号。

permit

(可选)如果定义了permit关键字,又符合match定义的匹配规则。则set命令对重分布路由进行控制;对于策略路由,set命令将对数据包转发进行控制。并退出路由图的操作。

如果定义了permit关键字,而不符合match定义的匹配规则。则将进入第二个路由图策略进行操作。直到最终执行了set命令。

deny

(可选)如果定义了deny关键字,又符合match定义的匹配规则。则不会执行任何操作,该路由图策略不允许进行路由重分布或策略路由,而且退出路由图操作。

如果定义了deny关键字,而不符合match定义的匹配规则。则将进入下一个路由图策略进行操作。直到最终执行了set命令。

sequence-number

路由图策略对应的序号。低序号的策略优先得到使用,因此需要注意序号的设置。

三.策略路由的规划设计

3.1 策略路由的适用环境

多出口情况下:

——校园网(internet网、教育网);

——企业网(双出口上网);

旁路组网需要修改报文TOS、dscp;

3.2 策略路由的配置

3.2.1 路由器基本配置

3.2.1.1 路由器配置步骤

1)定义重分布路由图,一个路由图可以由好多策略组成,策略按序号大小排列,只要符合了前面策略,就退出路由图的执行;

Router(config)#route-map route-map-name  [permit | deny] sequence  定义路由图
Router(config)#no route-map  route-map-name {[permit | deny] sequence} 删除路由图

2)定义路由图每个策略的匹配规则或条件;

定义匹配规则,只有符合规则的数据包才进行策略路由,如果没有配置匹配规则,则所有数据包都符合规则。

要定义策略的匹配规则,在路由图配置模式中执行以下:

Route(config-route-map)#match ip address access-list-number

匹配访问列表中的地址:

Route(config-route-map)#match length min-length max-length

匹配数据包大小范围:

3)定义满足匹配规则后,路由器对符合规则的数据包进行IP优先值和下一跳的设置。

要定义匹配规则后的操作,在路由图配置模式中执行以下命令:

Router(config-route-map)#set default interface interface-type interface-number

设置数据包的输出接口:

Router(config-route-map)#set ip default next-hop ip-address

设置数据包的下一跳IP地址:

Router(config-route-map)#set ip next-hop ip-address

设置数据包的下一跳IP地址:

Router(config-route-map)#set ip precedence
{precedence| critical | flash | flash-override |
immediate | internet | network | priority |
routine}设置数据包IP优先值

set ip next-hop和set ip default next-hop命令十分类似,但是操作的顺序完全不同。set ip next-hop命令使得路由器首先检查策略路由,不符合策略后使用路由表进行数据包转发处理;set ip default next-hop命令使得路由器首先检查路由表,若发现没有明确路由则使用策略路由进行数据包转发处理。

IP数据包报头优先值的设置,网络流量大时,优先值高的流量可以得到优先处理。

缺省情况下,RGNOS是不对IP报头的优先值进行修改的,会保持其原有的值。

在应用策略路由时,可以对IP报头的优先值进行设置。当这些携带一定优先值的数据包到达其它路由器时,如果该路由器启用了队列机制,优先值高的数据包会得到优先处理,其服务质量就得到了保证。如果没有启用队列机制,优先值将没有任何意义,所有数据包的发送按照FIFO(先进先出)的方式进行处理。

优先值的设置可以用名字或者数字,名字命名来自RFC 791。

其对应关系如下:

0 Routing1 Priority2 Immediate3 Flash4 flash-override5 Critical6 Internet7 Network

4)在指定接口中应用路由图。

要配置到达路由器接口数据包的策略路由,在接口配置模式中执行以下命令:

Router(config-if)#ip policy route-map route-map 在接口应用策略路由

说明:

路由器本身产生的数据包,通常是不要应用策略路由,如果路由器本身产生的数据包也要应用策略路由,在全局配置模式中执行以下命令:

Router(config)#ip local policy route-map route-map 应用本地策略路由

接口上应用策略时,缺省情况下,IP报文快速转发也支持策略路由转发。如果要关闭策略路由的快速转发功能,可以有以下命令:

Router(config-if)#no ip route-cache policy 在接口上关闭策略路由快速转发功能。

本文章来自网络转载:新盟教育,感谢分享!