HUAWEI策略路由PBR
Traffic-policy
所谓策略路由,不用多说,是优先于路由的,当数据进入到设备后,先查策略,再查路由
通常应用于单网关双出口/多路径时的数据流走向控制。可以说,没有路由也可以实现互通~
举个栗子
现两台路由器直连,都分别下联了一台PC,
R1-PC 192.168.1.0/24
R1-R2 12.0.0.0/24
R2-PC2 172.16.1.0 /24
使用traffic pollicy 策略路由功能,使得在两台路由设备上没有路由条目也可以实现两台PC互通。
原理
ACL抓取前缀/数据
traffic classifier 匹配数据
traffic behavior 定义行为
traffic policy 绑定数据和行为
接口调用policy
一定要确保两台路由之间的直连可达。12.0.0.0/24
[R1]acl 2000 [R1-acl-basic-2000]rul per source 192.168.1.0 0.0.0.255 //这里也可以使用扩展来定义不同的流量 [R1]traffic classifier aa //匹配数据 [R1-classifier-aa]if-match acl 2000 //匹配ACL [R1]traffic behavior bb //定义行为 [R1-behavior-bb]redirect ip-nexthop 12.0.0.2 //定义下一跳为12.0.0.2 [R1-traffic policy cc [R1-trafficpolicy-cc]classifier aa behavior bb //policy关联数据和行为 [R1]inter g0/0/1 [R1-GigabitEthernet0/0/1]traffic-policy cc inbound //一定要在数据的入接口来部署
[R2]acl 2000 [R2-acl-basic-2000]rul per source 172.16.1.0 0.0.0.255 [R2]traffic classifier aa [R2-classifier-aa]if-match acl 2000 [R2]traffic behavior bb [R2-behavior-bb]redirect ip-nexthop 12.0.0.1 [R2]traffic policy cc [R2-trafficpolicy-cc]classifier aa behavior bb [R2]inter g0/0/1 [R2-GigabitEthernet0/0/1]traffic-policy cc inbound
(这个逻辑真的是没话说了,对比于cisco的route-map而言,我也是醉了)
查看两台路由的路由表,并没有指向对端的条目
测试
No problem
通过这个实例可以很清楚的看到,在没有路由条目出去的时候,
可以通过traffic policy 指定它的下一跳来实现路由转发。也充分的证明了,PBR是完全凌驾于路由之上的
上文讲到过,PBR主要用于多出口时针对于不同的流量指定不同的方向,使得带宽能够被充分利用。
如图所示,现要求vlan10去往100.1.1.1的数据走左侧
Vlan20运往100.1.1.1的数据走右侧
R2上做单臂路由,实现两个VLAN通信
基本配置就不说了,(由于我们现在还没有配置NAT,所以在R1,R3上做默认路由指回来)
直接看R2 [gw]acl 3000 [gw-acl-adv-3000]rul permit ip source 192.168.1.0 0.0.0.255 destination 100.1.1.0 0.0.0.255 [gw]acl 3001 [gw-acl-adv-3001]rul per ip sou 192.168.2.0 0.0.0.255 destination 100.1.1.0 0.0.0.255 [gw]traffic classifier vlan10 //定义名字vlan10的匹配 [gw-classifier-vlan10]if-match acl 3000 //匹配ACL [gw]traffic behavior vlan10 //定义行为动作 [gw-behavior-vlan10]redirect ip-nexthop 12.0.0.1 [gw]traffic policy vlan10 [gw-trafficpolicy-vlan10]classifier vlan10 behavior vlan10 //匹配和动作进行关联 [gw-trafficpolicy-vlan10]inter g2/0/0.1 [gw-GigabitEthernet2/0/0.1]traffic-policy vlan10 inbound 入口方向调用Policy [gw]traffic classifier vlan20 [gw-classifier-vlan20]if-match acl 3001 [gw]traffic behavior vlan20 [gw-behavior-vlan20]redirect ip-nexthop 23.0.0.3 [gw-trafficpolicy-vlan20]classifier vlan20 behavior vlan20 [gw-GigabitEthernet2/0/0.2]traffic-policy vlan20 inbound
最后进行测试
开启R1和R3的debugging
<R1>terminal debugging
<R1>debugging ip icmp
可以看到PC1在请求时,数据到达了R1
当然另一侧肯定也是一样的,
效果是实现了,但又有一个问题浮现出来了,
我们在组网时,肯定会设计到冗余设计,
像刚才的操作,PC1去请求100.1.1.1如果R1这边出现故障,能否切换到R3方向呢?
又该如何操作中?
其实这个点还是很好理解的,
因为pbr优于路由,也就是说有没有路由都会优先PBR,当PBR不生效时,也就不会去走它,从而走路由出去。
嘿嘿,这个很简单对吧,(当然,前提是能够检测到出接口有问题的情况下,)
比如断掉这里
做为出接口肯定能够感知,
出接口有问题,到达下一跳也肯定有问题,PBR不生效,怎么办?
没关系有默认路由啊~
而且这两条都不用去设置什么浮动路由,不用去设置谁优先等等.
反正一边有问题肯定默认路由也会跟着消失。
但是如果这样呢?
这个接口出现问题呢?咋办?
还能感知吧?肯定不行了吧,非直连接口,图中我用hub来代替现实中的中继设备
这个时候就要用到一个工具,NQA,(和cisco中的sla基本上一样,执行上行链路检测的)
而且还要和默认路由相结合
nqa test-instance admin test //定义NQA进程 需要用户和测试的名字 test-type icmp //使用测试的协议 destination-address ipv4 12.0.0.1 //测试目标地址 frequency 1 //执行间隔 interval seconds 2 //报文间隔 timeout 1 //超时 probe-count 1 //探测次数,单次测试中的探测次数, start now //现在开始
traffic behavior vlan10 //执行动作中track nqa redirect ip-nexthop 12.0.0.1 track nqa admin test
ip route-static 0.0.0.0 0.0.0.0 23.0.0.3 ip route-static 0.0.0.0 0.0.0.0 12.0.0.1 track nqa admin test //默认路由也要加上NQA,
这样一来,NQA负责监控远端地址,如果出现问题会取消这个pbr,转至默认路由,
而默认路由并不知道是否远端出现问题,所以,也要关联NQA实现两个默认路由之间的切换。
有可能你会说,我直接使用默认路由不就OK啦,干嘛还要用PBR呢?不要忘了,我们前面设置的是强制数据走向。Vlan10走左侧,只有当这一侧出现问题时才会走另外一侧。(如果只做默认路由+ nqa ,这就是浮动路由喽~)
PBR的另一种用法(本地应用)
如果此时是这样的要求,要求GW访问100.1.1.1的流量强制走R3要怎么做呢?
如图所求,
1 PC1请求CLOUD时,走AR1
R2请求CLOUD1 时走AR3
针对于经过本设备的流量
[GW]acl 2000 [GW-acl-basic-2000]rul per source 192.168.1.10 0 [GW-acl-basic-2000]q [GW]traf c 1 [GW-classifier-1]if-match acl 2000 [GW]traf be 2 [GW-behavior-2]redirect ip-nexthop 12.0.0.1 [GW-behavior-2]q [GW]traffic pol 3 [GW-trafficpolicy-3]cla 1 be 2 [GW-trafficpolicy-3]q [GW]inter g2/0/0 [GW-GigabitEthernet2/0/0]traffic-poli 3 inbound
针对于本地流量
[GW]acl 2001 [GW-acl-basic-2001]rul 5 per so any //匹配所有本地 [GW]policy-based-route aa per node 10 //创建PBR [GW-policy-based-route-aa-10]if-match acl 2001 //匹配ACL [GW-policy-based-route-aa-10]apply ip-address next-hop 23.0.0.3 //应用动作 [GW-policy-based-route-aa-10]q [GW]ip local policy-based-route aa //应用本地策略
测试
测试本地
注意
针对于AR2而言,本地始发的,和经过此地的数据是两回事
另外,PBR只适合小范围使用,什么意思呢?就是只能在到下一跳设备的距离,另外,这个功能很占用系统CPU,所以,还是慎用
----------------------------------------------
CCIE成长之路 --- 梅利