策略流量
PBR是一种通过流量策略来执行选路的一种准发手段,传统的路由表只能通过数据的目标地址做决策提供路由。策略路由可以根据源地址。目标地址、源端口、目标端口、协议、TOS等流量特征来做决策提供路由,灵活性高。
路由表与策略路由的关系
策略路由是优先于路由表执行的,只有策略路由没有捕获的流量才回去执行路由表。
策略路由配置
接口下配置
只能捕获该接口的接入流量做决策,不能处理本路由器产生的流量
R1(config)#access-list 100 permit ip host 1.1.1.1 any //利用ACL捕获流量
R1(config)#route-map pbr permit 10 //定义route-map
R1(config-route-map)#match ip address 100 //调用被ACL捕获的流量
R1(config-route-map)#set ip next-hop 10.1.1.1 //设置下一跳地址
R1(config)#interface Ethernet0/1
R1(config-if)#ip policy route-map pbr //在接口下调用
全局配置
R1(config)#access-list 100 permit ip host 1.1.1.1 ant //利用ACL捕获流量
R1(config)#route-map pbr permit 10 //定义route-map
R1(config-route-map)#match ip address 100 //调用被ACL捕获的流量
R1(config-route-map)#set ip next-hop 10.1.1.1 //设置下一跳
R1(config)#ip local policy route-map pbr
能够捕获所有的接口流量以及本路由器产生的流量(源地址是本路由器的地址)
策略路由的冗余设置
R1(config)#route-map pbr 10
R1(config-route-map)#match ip address 100
R1(config-route-map)#set ip next-hope verify-availability 10.1.24.2 track 1 //设置track监控,如果监控成功则执行该语句,如果不成功则转为执行下一句set语句
R1(config-route-map)#set ip next-hop 10.1.24.3
R1(config)#track 1 ip sla 1 //定义一个track监控sla的探测结果
R1(config)#ip sla 1 //定义一个sla
R1(config-ip-sla)#icmp-echo 10.1.12.1 source-ip 10.4.4.4 //设置其探针
R1(config)#ip sla schedule 1 life forever start-time now //设置sla 1 的执行时间
default语句
在route-map的set ip default这个位置输入,定义为被捕获的流量先查路由表,如果能精确匹配(如果抓的10.5.5.5,路由表中有10.5.5.0/24这就不叫精准匹配,如果路由表中有10.5.5.5/32则叫精准匹配)就执行路由表,如果不能执行则执行策略路由
R1(config)#access-list 100 permit ip host 1.1.1.1 any //用ACL捕获流量
R1(config)#route-map pbr permit 10 //定义route-map
R1(config-route-map)#match ip address 100 //调用被ACL捕获的流量
R1(config-route-map)#set ip default next-hop 10.1.1.1 //设置下一跳
R1(config)#interface fastEthernet 0/0
R1(config-if)#ip policy route-map pbr //接口下调用
这里需要注意的是set ip next-hop与set ip default next-hop、set interface与set default interface这两句画的区别,不含default的语句,是不查询路由表就能转发数据包到下一跳或接口,而含有default的语句是先查询路由表,在找不到精确匹配的路由条目是,才转发数据包到default语句指定的下一跳或接口。
策略路由在转发层面不如路由表,原因是匹配的东西过多,底层芯片处理支持有限、使用原则是能不用就不用,如果出现非目的地址的转发策略果断使用。
策略路由的其他功能
为其他流量打TOS标签
R1(config)#route-map pbr permit 10
R1(config-route-map)#match ip address 100
R1(config-route-map)#set ip precedence priority