欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2024-02-12 13:01:10
...

参考: 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等工具修改路由属性控制路由表的生成;属于控制层面
策略路由是优先且独立于路由表的一种控制、操作数据流的工具,比如可以直接丢弃满足特定条件的流量。属于数据层面