前面我们介绍的VRRP(),两台设备之间处于主备关系,也就是说,当主设备故障之后,流量才会切换到备设备上。这种使用方式一定程度上讲,不太符合经济适用的原则,我们前面介绍过链路聚合()、负载均衡()和策略路由()等等,都是为了在提高可靠性的同时尽可能的提高转发性能。以上个案例为例,如果我们不使用VRRP,我们仍然可以使用策略路由实现两台设备的主备,但是主备切换做到VRRP这种效果还是有点难度的。
今天,我们来简单对比一下VRRP单备份组和策略路由之间主备切换的差异。
组网需求
1、核心交换机CORESW通过虚拟网关10.1.1.1与VRRP备份组互通;
2、手工配置VRRP1为主设备,VRRP2为备设备。当VRRP1正常工作时,PCA发送到ISP的报文经VRRP1转发;当VRRP1出现故障时,PCA发送给Host B的报文通过VRRP2转发。
3、配置VRRP1工作在VRRP抢占模式,以保证VRRP1故障恢复后,能再次抢占成为Master,即只要VRRP1正常工作,就由VRRP1负责转发流量。为了避免频繁地进行状态切换,配置抢占延迟时间为3000厘秒(30秒);
4、实现PCA可以持续访问ISP的业务地址8.8.8.8。
组网图
VRRP配置组网图:
实验环境
Windows 10专业版(1909-18363.1556,16 GB内存)
HCL 3.0.1
MSR 36-20(Version 7.1.064, Release 0821P11)
S5820V2-54QS-GE(Version 7.1.075, Alpha 7571)
配置步骤
上次的实验配置我们保持不变,在CORESW设备上增加策略路由配置如下:
#
acl advanced 3300
rule 0 permit ip
#
policy-based-route vrrp permit node 10
if-match acl 3300
apply loadshare next-hop
apply next-hop 10.1.1.11
apply next-hop 10.1.1.22
#
interface Vlan-interface2
ip address 10.2.1.254 255.255.255.0
ip policy-based-route vrrp
可以看到,我们在PCA的网关下面,应用了策略路由vrrp,策略路由配置为匹配所有转发流量,策略路由的动作配置为负载分担模式,应用的下一跳分别为VRRP1和VRRP2的接口真实IP地址,以此来实现与VRRP现有配置的不冲突。
然后我们在PCA上开始长ping,中间DOWN掉VRRP1的下联口看一下效果。
好家伙,直接断掉了,这是为什么呢?原因也简单,现在CORESW和VRRP1、VRRP2之间是通过二层地址通信的,因为本地的互联接口Vlan-interface1没有DOWN,所以策略路由不会切换。简单来说,就是CORESW不知道VRRP1的互联地址已经不通了。那要怎么解决呢?也简单,一般就是使用NQA和Track进行联动。
NQA全称是Network Quality Analyzer,直译为网络质量分析,NQA通过发送探测报文,对链路状态、网络性能、网络提供的服务及服务质量进行分析,并为用户提供标识当前网络性能和服务质量的参数,本案例中,我们就是要NQA来探测互联地址的可达性。
我们创建一个管理员名为vrrpnqa、操作标签为vrrp1的NQA测试组,配置测试类型为ICMP-echo,配置测试的目的地址和下一跳地址均为10.1.1.11,以便通过NQA检测到VRRP1的连通性。
#
nqa entry vrrpnqa vrrp1
type icmp-echo
destination ip 10.1.1.11
next-hop ip 10.1.1.11
配置测试频率为100 ms,并配置联动项1,设置连续失败5次触发联动。
#
nqa entry vrrpnqa vrrp1
type icmp-echo
frequency 100
reaction 1 checked-element probe-fail threshold-type consecutive 5 action-type trigger-only
然后启动NQA探测,配置为立即启动,长期有效。
#
nqa schedule vrrpnqa vrrp1 start-time now lifetime forever
接下来配置Track项1和NQA测试组的关联。
#
track 1 nqa entry vrrpnqa vrrp1 reaction 1
同理,我们再配置一个到VRRP2连通性的NQA检测。
#
nqa entry vrrpnqa vrrp2
type icmp-echo
destination ip 10.1.1.22
next-hop ip 10.1.1.22
frequency 100
reaction 1 checked-element probe-fail threshold-type consecutive 5 action-type trigger-only
#
nqa schedule vrrpnqa vrrp2 start-time now lifetime forever
#
track 2 nqa entry vrrpnqa vrrp2 reaction 1
查看一下NQA测试的当前结果。
探测成功,未出现失败告警。
还可以查看NQA测试的统计信息。
通过这些统计数据,我们可以分析当前NQA检测的链路质量信息。
查看一下Track项的状态信息。
状态为Positive,表示状态正常。
接下来,我们配置策略路由和NQA检测的Track联动。
#
policy-based-route vrrp permit node 10
if-match acl 3300
apply next-hop 10.1.1.11 track 1
apply next-hop 10.1.1.22 track 2
我们从PCA上traceroute看一下转发路径。
可以看到有两条转发路径了。
然后,我们再次在PCA上开始长ping,中间分别测试DOWN掉VRRP1和VRRP2的下联口看一下效果。
在DOWN掉VRRP1的下联口时,丢包7个,业务中断14秒左右,然后切换到VRRP2上。
在DOWN掉VRRP2的下联口时,丢包11个,业务中断22秒左右,然后切换到VRRP1上。
经过观察,发现是NQA的检测结果耗时比较长。
现在连续两次探测开始时间的时间间隔我们配置的是100毫秒,已经很快了,但是缺省情况下,探测的超时时间为3000毫秒,比较长,我们将其调整为200毫秒;同时,将连续失败5次触发联动调整为3次。
reaction 1 checked-element probe-fail threshold-type consecutive 3 action-type trigger-only
调整后的配置如下:
#
nqa entry vrrpnqa vrrp1
type icmp-echo
destination ip 10.1.1.11
frequency 100
next-hop ip 10.1.1.11
probe timeout 200
reaction 1 checked-element probe-fail threshold-type consecutive 3 action-type trigger-only
#
nqa entry vrrpnqa vrrp2
type icmp-echo
destination ip 10.1.1.22
frequency 100
next-hop ip 10.1.1.22
probe timeout 200
reaction 1 checked-element probe-fail threshold-type consecutive 3 action-type trigger-only
然后,我们再次在PCA上开始长ping,中间分别测试DOWN掉VRRP1和VRRP2的下联口看一下效果。
我们发现,现在NQA检测的状态变化已经很快了,而且Track状态的变化几乎与NQA检测是同时的,但是转发切换还是要慢一些,初步判断这就是策略路由的问题了。
官方的解释是“策略路由通过查询FIB表中是否存在下一跳或缺省下一跳地址对应的条目,判断设置的报文转发下一跳或缺省下一跳地址是否可用。策略路由周期性检查FIB表,设备到下一跳的路径发生变化时,策略路由无法及时感知,可能会导致通信发生短暂中断。”
好吧,实时证明,策略路由的状态切换确实比VRRP要差很多;使用策略路由时,同时兼顾负载均衡和主备切换的性能要差一些。