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