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

tech2022-09-06  95

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

最新回复(0)