PBR(策略路由)和路由策略的区别详解

参考: http://blog.sina.com.cn/s/blog_5cfb2dc00102xxrj.html

先说策略路由也就是PBR:

它不会影响路由表的生成,设备的路由表是已经存在而且稳定的。
举个例子:

用TCP/IP路由技术一书的表述就是:策略路由就是一个复杂的静态路由。
总结:策略路由是一个基于路由表的影响特定数据包的转发的一个方式,这个方式是应用于接口下的。
例如:让源地址是192.168.1.1的数据包都从s0/1走,让源地址是192.168.1.2的数据包都从s0/1走
access-list 1 permit host 192.168.1.1
access-list 2 permit host 192.168.1.2
route-map ccie permit 10
match ip address 1
set interface s0/1

route-map ccie permit 20
match ip address 2
set interface s0/2

int fa1/0
ip policy route-map ccie

注意:set interface s0/1 与 set  default interface s0/1
set ip next-hop  与 set  default ip next-hop  是有区别的,前者不查找路由直接进行了转发,而后者是先查找路由表,查找不到精确的路由表时才会转发到下一跳接口或IP。
注意:PBR只有进方向方向,一定要注意!PBR优先于路由表查找
注意:策略路由PBR默认只对穿越流量生效,
(config)# ip local policy route-map ccie  //这样写是策略理由也影响本地产生的流量

思科利用策略路由最常用的方式是丢弃报文:
set interface null 0 (这样比acl deny 减少很多开销)

int null 0
no ip unreachable //为了防止丢弃报文返回大量的不可达信息

然后讲讲路由策略:

和策略路由不同,路由策略是用来影响路由表最终生成的结果的,比如我可以用route-map匹配ACL之后修改OSPF网络中的COST,这样一来对应的路由在插入路由表时COST列就会产生相应的变化。再比如可以匹配ACL 一些源地址信息,然后修改下一跳的出口或IP

路由策略一般与BGP结合使用的比较常见。

举个例子:

R3#sh run | s bgp
router bgp 20
 no synchronization
 bgp router-id 3.3.3.3
 bgp log-neighbor-changes
 network 3.3.3.3 mask 255.255.255.255
 network 23.23.23.0 mask 255.255.255.0
 network 33.33.33.0 mask 255.255.255.0
 network 44.44.44.0 mask 255.255.255.0
 network 55.55.55.0 mask 255.255.255.0
 network 66.66.66.0 mask 255.255.255.0
 neighbor 2.2.2.2 remote-as 20
 neighbor 2.2.2.2 update-source Loopback0
 neighbor 2.2.2.2 next-hop-self
 neighbor 34.34.34.2 remote-as 30
 neighbor 34.34.34.2 route-map ASPATH out
 neighbor 38.38.38.2 remote-as 30
 neighbor 38.38.38.2 send-community
 neighbor 38.38.38.2 route-map LE32 out  #########################important!!!
 no auto-summary
ip bgp-community new-format

####################################
R3#sh run | s route-map
 neighbor 34.34.34.2 route-map ASPATH out
 neighbor 38.38.38.2 route-map LE32 out
route-map LE32 permit 1
 match ip address prefix-list Equal #######################important!!!!!!!!!!!!
 set weight 24  #######################important!!!!!!!!!!!!
 set origin incomplete  #######################important!!!!!!!!!!!!
 set as-path prepend 24 24 24 24  #######################important!!!!!!!!!!!!
 set community 24:24  #######################important!!!!!!!!!!!!
route-map LE32 permit 5
 match ip address prefix-list GELE24
 set origin egp 99
 set as-path prepend 25 25 25
 set community 25:25
route-map LE32 permit 7
 match ip address prefix-list GELE22
 set origin egp 99
 set as-path prepend 26 26 26
 set community 26:26
route-map LE32 permit 8
 match ip address prefix-list GE8LE24
 set origin egp 99
 set as-path prepend 27 27 27
 set community 27:27
route-map LE32 permit 10
 match ip address prefix-list LE32
 set community 0:11 0:22 0:33 0:44 0:55 0:66 0:77 0:88 0:99 0:111 0:222 0:333 0:444 0:555 0:666 0:777 0:888 0:999
route-map ASPATH permit 10
 match ip address prefix-list ASPATH
 set as-path prepend 100 100 100
route-map ASPATH permit 20
 match ip address prefix-list ASPATH2
 set as-path prepend 200 200 200
route-map ASPATH permit 30

##################################################
route-map ASPATH permit 30
R3#sh run | s prefix
ip prefix-list ASPATH seq 5 permit 1.1.1.1/32
ip prefix-list ASPATH2 seq 10 permit 3.3.3.3/32
ip prefix-list ASPATH20 seq 10 permit 3.3.3.3/32
ip prefix-list Equa seq 5 permit 166.166.166.166/32
ip prefix-list Equal seq 5 permit 33.33.33.0/24  ###############important!!!!!!!!!!!!!
ip prefix-list GE8LE24 seq 5 permit 66.0.0.0/7 ge 8 le 24
ip prefix-list GELE22 seq 5 permit 55.0.0.0/8 ge 22 le 22
ip prefix-list GELE24 seq 5 permit 44.0.0.0/8 ge 24 le 24
ip prefix-list LE32 seq 10 permit 0.0.0.0/0 le 32
 match ip address prefix-list Equal
 match ip address prefix-list GELE24
 match ip address prefix-list GELE22
 match ip address prefix-list GE8LE24
 match ip address prefix-list LE32
 match ip address prefix-list ASPATH
 match ip address prefix-list ASPATH2

我们以上面配置中标记了important的几行为重点。
我们在R3匹配了33.33.33.0/24的路由,发给邻居R8的时候我们使用route map修改了bgp的origin, as-path和community。因为weight只是本地有效所以邻居收不到。
然后我们去邻居R8验证一下:

R8#sh ip bgp 33.33.33.0/24
BGP routing table entry for 33.33.33.0/24, version 3
Paths: (1 available, best #1, table default)
  Not advertised to any peer
  Refresh Epoch 1
  20 24 24 24 24
    38.38.38.1 from 38.38.38.1 (3.3.3.3)
      Origin incomplete, metric 0, localpref 100, valid, external, best
      Community: 24:24
      rx pathid: 0, tx pathid: 0x0
R8#

我们看到bgp表的确发生了相应的变化。那么我们知道bgp的这些属性对于选路(判断路由优先级)至关重要,比如有两条相似的bgp路由,我们通过路由策略控制其中一条路由的as path长于另一条,那么就只有另一条bgp路由会被写进路由表。

总结:

路由策略是通过route-map等工具修改路由属性控制路由表的生成;属于控制层面
策略路由是优先且独立于路由表的一种控制、操作数据流的工具,比如可以直接丢弃满足特定条件的流量。属于数据层面

猜你喜欢

转载自blog.csdn.net/TylerDu/article/details/108374165