【转自】https://blog.csdn.net/kkfloat/article/details/39940623 

1.概念

  1)策略路由(PBR)是一种比基于目标网络进行路由更加灵活的数据包路由转发机制。路由器将通过路由图决定如何对需要路由的数据包进行处理,路由图决定了一个数据包的下一跳转发路由器。

  在路由器转发一个数据报文时,首先根据配置的规则对报文进行过滤,匹配成功则按照一定的转发策略进行报文转发。这种规则可以是基于标准和扩展访问控制列表,也可以基于报文的长度;

  而转发策略则是控制报文按照指定的策略路由表进行转发,也可以修改报文的IP优先字段,策略路由也可以在一定程度上实现流量工程,使不同服务质量的流或者不同性质的数据(语音、FTP)走不同的路径,

  因此,策略路由是对传统IP路由机制的有效增强。  

  2)应用策略路由,必须要指定策略路由使用的路由映射,并且要创建路由映射。一个路由映射由很多条策略组成,每个策略都定义了1个或多个的匹配规则和对应操作。一个接口应用策略路由后,

  将对该接口接收到的所有包进行检查,不符合路由映射任何策略的数据包将按照通常的路由转发进行处理,符合路由映射中某个策略的数据包就按照该策略中定义的操作进行处理。策略路由对报文的发送接口、下一跳的配置是基于多转发表实现的。

  routemap和ACL很类似,它可以用于路由的再发布和策略路由,还经常使用在BGP中.策略路由(policyroute)实际上是复杂的静态路由,静态路由是基于数据包的目标地址并转发到指定的下一跳路由器,

  策略路由还利用和扩展IPACL链接,这样就可以提供更多功能的过滤和分类 。

2.策略路由的特点:

  1)策略路由比所有路由的级别都高,其中包括直连路由。

  2)策略路由是转发层面的行为,操作的对象是数据包,匹配的是数据流,具体是指数据包中的各个字段:源IP、目标IP、协议、源端口、目标端口、802.1p优先级 、VLANID 源/目的MAC地址、IP优先级 、DSCP的优先级 、IP的协议类型字段

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

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

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

    但在其上行设备上,无法保证下行的HTTP流量分担到A链路,FTP流量分担到B链路。

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

3.策略路由的种类:

  1)根据路由的目的地址来进行的策略称为:目的地址路由;

  2)根据路由源地址来进行策略实施的称为:源地址路由!

  3)智能均衡的策略方式!就是多条线路不管是光纤还是ADSL,都能自动的识别,并且自动的采取相应的策略方式,是策略路由的发展趋势
4.CEF的两种负载均衡方式:

  1)基于每个会话的负载均衡(per-session load sharing):基于每个会话的负载均衡允许路由器使用多条路径分发流量。对于一个给定的源—目的主机对,即使有多条路径可用,路由器也会保证该会话的数据包走相同的路径。

  不同的会话采用不同的路径,使用负载均衡,基于每个会话的负载均衡再激活CEF的时候缺省的也被激活。由于基于每个会话的负载均衡依赖于流量的统计分发,因而在会话数增加的情况下更有效率。

  基于每个会话的负载均衡能够确保导向给定的源—目的对的数据包按序到达,因为导向相同主机对的所有数据包都被路由到相同的链路上。

  2)基于每个数据包的负载均衡基于每个数据包的负载均衡使得路由器可以把连续的数据包发送到不同的路径上,而不必关心个别的主机或用户会话,使用轮转的方法来确定每一个数据包选择哪条路径到达目的地。

  当大量数据通过单个会话的多条并行链路时,基于每个数据包的负载均衡显得更加有效。在这种情况下,基于每个会话的负载均衡将会过载其中一条链路,而其他链路几乎没有什么流量。

  但基于每个数据包的负载均衡会导致针对某一个会话来说,数据包可能走不同的路径,这会引起数据包的重新排序,对于某些数据流量类型来说是不合适的,必须对于IP语音流量来说。

  当启用基于数据包的负载均衡功能时,必须先禁用基于目的地的负载均衡功能。为了禁用基于目的地的负载均衡功能,可以在接口配置模式下,no ip load-sharing per-destination;

  使用基于数据包的负载均衡,路由器可以在路径上连续发送数据包,而不用考虑具体的主机或用户情况。这种负载均衡机制采用轮转办法来确定每个数据包采用哪条路径到达目的地。

  基于数据包的负载均衡可以保证在多条链路上进行负载均衡。要启用基于数据包的负载均衡功能,可以在接口配置模式下,ip load-sharing per-packet;为CEF配置网络记账功能,

  启用收集被快速转发到某个目的地的数据包个数和字节数ip cef accounting per-prefix启用收集通过某个目的地被快速转发的数据包的个数ip cef accounting non-recursive在全局配置模式中为CEF启用网络记账功能后,

  相应的路由处理器会收集记账信息。当用户为CEF启用网络记账功能后,线路卡上会收集记帐信息。查看网络记帐信息 show ip cef。

建议使用每会话的负载均衡,因为如果每包的负载均衡会出现包的顺序出错,导致应用无法打开。同时会出现不同IP同时登陆同一个应用而遭受拒绝例如:加密、HTTPS,网银,QQ等
5.路由重分发的相关命令

  match interface {type number} […type number]:匹配指定的下一跳路由器的接口的路由

  match ip address {ACL number|name} […ACL number|name]:匹配ACL所指定的目标IP地址或网段的路由

  match ip next-hop {ACL number|name} […ACL number|name]:匹配ACL所指定的下一跳路由器地址的路由

  match ip route-source {ACL number|name} […ACL number|name]:匹配ACL所指定的路由器所宣告的路由

  match metric {metric-value}://匹配指定metric大小的路由

  match route-type {internal|external[type-1|type-2]|level-1|level-2}:匹配指定的OSPF,EIGRP或IS-IS的路由类型的路由

  match tag {tag-value} […tag-value]:匹配带有标签(tag)的路由

  set level {level-1|level-2|level-1-2|stub-area|backbone}:设置IS-IS的Level,或OSPF的区域,匹配成功的路由将被再发布到该区域

  Set metric {metric-value|bandwidth delay RELY load MTU}:为匹配成功的路由设置metric大小

  set metric-type {internal|external|type-1|type-2}:为匹配成功的路由设置metric的类型,该路由将被再发布到OSPF或IS-IS 1

  set next-hop {next-hop}:为匹配成功的路由指定下一跳地址

  set tag {tag-value}:为匹配成功的路由设置标签
6.策略路由的相关命令  

  match ip address {ACL number|name} […ACL number|name]:匹配ACL所指定的目标IP地址或网段的路由

  match length {min} {max}://匹配第3层的数据包的长度

  set default interface {type number} […type number]://先查询路由表,在找不到精确匹配的路由条目时,才转发数据包到default语句指定的下一跳接口

  set interface {type number} […type number]://首先检查策略路由,不符合策略后使用路由表进行数据包转发处理

  set ip default next-hop {ip-address} […ip-address]://先查询路由表,在找不到精确匹配的路由条目时,就转发数据包到下一跳IP

  set ip next-hop ip-address {ip-address}://首先检查策略路由,不符合策略后使用路由表进行数据包转发处理

  set ip precedence {precedence}:为匹配成功的IP数据包设置服务类型(Type of Service,ToS)的优先级

  set ip tos {tos}:为匹配成功的数据包设置服务类型的字段的TOS位

  route map是通过名字来标识的,每个route map都包含许可或拒绝操作。关于拒绝操作,是依赖于route map是使用在路由的重发布环境还是策略路由环境中, 如果是在策略路由中匹配失败(拒绝),那么数据包将按正常方式转发;

  如果是用于路由再发布,并且匹配失败(拒绝),那么路由将不会被再发布 如果数据包没有找到任何匹配,和ACL一样,route map末尾也有个默认的隐含拒绝所有的操作, 如果route map的陈述中没有match语句,

  那么默认的操作是匹配所有的数据包和路由;每个 route map还有一个序列号,序列号在没有给出的情况下默认是10,序列号用于区分每一个route map statement,通过这个序列号参数你可以在一个route map的特定位置插入或删除一条route map statement,

  并且可以单独的编辑它。一个route map可以包含多个route map statement,序列号参数决定了进行条件匹配的顺序。只有序列号为10的语句没有匹配,才会检查序列号为20的语句才被检查。

  route map允许有多个match和set陈述,一个match语句可以包含多个条件。在匹配的时候,从上到下,如果匹配成功,将不再和后面的陈述进行匹配,指定操作将被执行。如果一个条件为真,则认为这个条件匹配;

  然而,必须所有的条件都匹配,才认为这个route mapstatement匹配。Set可以定义当匹配语句满足时,数据包如何通过路由器进行转发

7.配置路由策略要注意:

  配置一个路由图,在同一个接口上多次配置路由图会相互覆盖。

  在使用策略路由时,每个子路由图建议只配置一个ACL;

  如果配置的子路由图中只有nexthop而没有配置ACL,则等价于所有报文都匹配;

  如果子路由图中只有ACL而没有nexthop则匹配的报文普通转发; 

  如果子路由图中即没有ACL也没有nexthop,则等价所有报文普通转发。 

  如果配置了ACL号但是该ACL不存在,等价所有报文都匹配
8.实例

  1)核心交换机上联有2台防火墙,其中一台走互联网,一台专门用于接IPSec。现要实现某一内网vlan使用单独的一个公网IP。

  由于走互联网的防火墙不能实现,故使用另一台。此时,需在核心交换机上配置PBR。

    1)定义访问控制列表    

    access-list 2000 permit ip 10.11.50.0 0.0.0.255 any    
    access-list 2001 permit ip 10.11.50.0 0.0.0.255 10.11.0.0 0.0.255.255    #50段访问内网

    2)定义route-map    

    route-map 50duan permit 10
    match ip address 2001
    #允许50段访问内网且不改变其nexthop
    route-map 50duan permit 20
    match ip address 2000
    set ip next-hop 10.11.31.1

    #50duan访问其他网络将使用10.11.31.1作为下一跳

    3)应用到50段的网关    

    interface Vlan50
    ip address 10.11.50.254 255.255.255.0
    ip access-group 150 out
    ip helper-address 10.11.103.11
    ip helper-address 10.11.103.12
    ip policy route-map 50duan

posted on 2019-04-01 17:03  星痕1216  阅读(1365)  评论(0编辑  收藏  举报