一.PBR(policy-Based routing)策略路由的功能介绍
1.PBR可以用于路由重新分配。基于PBR我们可以在重新分配路由时有选择的重分配。(当然还有其它手段passive-interface,distribute-list,还有route-map实现)。一般来说,PBR是通过路由映射来配置的(route-map)。
2.影响下一跳。PBR在大规模边界网关协议BGP的运行中,是一个最必不可少的工具。传统的路由策略来自由路由协议计算出来的路由表。路由器只能根据报文的目的地址进行数据转发,不能提供有差别的服务。基于策略的路由可以基于数据包的源地址,甚至是源地址,目的地址,源端口,目的端口,四层协议以及报文大小,应用或者其它策略来选择转发路径。
3.设置优先级。PBR还可以给予外出数据包设置IP优先级位,这样方便了QOS策略。网络管理员可以根据实际工作的需要,灵活设置PBR机制,实现比传统路由协议更强的路由控制能力。
4.负载平衡。使用PBR策略路由设置数据包的行为,比如下一跳,出接口等,这样在存在多条链路的情况下,可以根据数据包的应用不同而使用不同的链路,进而提供高效的负载平衡能力。
二.PBR的特点
PBR影响的只是本地的行为,不会干预其它路由器的选路行为,当可以通过设置优先级位来用于其它路由器配置策略。当路由器进行数据转发时,路由器根据预先设置的策略对数据包进行匹配,如果匹配到一条PBR,就根据该条策略指定的路由进行转发;如果没有匹配到任何策略,就根据路由表的内容对报文进行转发。常用的PBR配置命令如下所示:
route-map map-tag { permit |deny} [sequence number] \\定义PBR
match ip address acl-id \\匹配ACL-id定义的流量
match length min-byte max-byte \\匹配报文大小为min-byte到max-byte大小的流量
set ip next-hop ip-address \\设置数据包下一条地址
set ip default next-hop ip-address \\设置数据包下一条地址
set ip precedence [number|name] \\设置IP数据包优先级
set interface slot/number \\设置出接口
set default interface slot/number \\设置出接口
ip policy route-map map-tag \\在接口下应用PBR
ip local policy route-map map-tag \\对本地路由器产生的数据包执行PBR
说明1:这里要注意set ip next-hop与set ip default next-hop、set interface与set default interface这两对语句的区别,不含default的语句,是不查询路由表就转发数据包到下一跳IP或接口,而含有default的语句是先查询路由表,在找不到精确匹配的pbr策略路由条目时,才转发数据包到default语句指定的下一跳IP或接口。
说明2:route-map命令被用于定义策略,用permit和deny来标识是否执行路由转发。如果是permit,那么match是或的关系,也就是说只要有一个条件匹配(执行的顺序和ACL一样,同样是自上而下依次执行),那么set将会被执行;如果是deny,那么只有所有的match是与的关系,也就是说所有的条件都匹配的情况下set才会被执行。多条使用相同map-tag的route-map命令组成route-map statement(集合),集合中的语句根据sequence number依次执行。
三.配置基于源IP地址的策略路由
拓扑如下:
要求: 192.168.1.0/24到外网时从R2的f1/0出去,192.168.2.0/24到外网时从R2的f2/0出去。
具体配置:
1:用ACL定义不同的源
R2:
access-list 1 permit 192.168.1.0 0.0.0.255
access-list 2 permit 192.168.2.0 0.0.0.255
2:定义route-map
R2(config)#route-map qgPBR permit 10
R2(config-route-map)#match ip address 1
R2(config-route-map)#set interface f1/0
R2(config-route-map)#exit
R2(config)#route-map qgPBR permit 20
R2(config-route-map)#match ip address 2
R2(config-route-map)#set interface f2/0
R2(config-route-map)#exit
3:将route-map调用到接口上
R2(config)#int f0/0
R2(config-if)#ip policy route-map qgPBR