以上我们描述的是主备备份方式的双机热备状态形成和切换过程,下面我们来看负载分担状态的情况。
如下图所示,为了实现负载分担方式的双机热备,我们需要在FW1和FW2上都启用Active组和Standby组,使FW1的Active组与FW2的Standby组进行通信,构成一组“主备”,FW2的Active组与FW1的Standby组进行通信,也构成一组“主备”。这样两台FW形成互为主备的状态,也就是负载分担状态。
结合下图给出负载分担方式的双机热备配置,如下表所示:
interface GigabitEthernet 1/0/1 ip address 10.1.1.3 255.255.255.0 vrrp vrid 1 virtual-ip 10.1.1.1 255.255.255.0 active //将接口GE1/0/1加入VRRP备份组1,并将VRRP备份组1加入Active组。 vrrp vrid 2 virtual-ip 10.1.1.2 255.255.255.0 standby //将接口GE1/0/1加入VRRP备份组2,并将VRRP备份组2加入Standby组。 |
interface GigabitEthernet 1/0/1 ip address 10.1.1.4 255.255.255.0 vrrp vrid 1 virtual-ip 10.1.1.1 255.255.255.0 standby //将接口GE1/0/1加入VRRP备份组1,并将VRRP备份组1加入Standby组。 vrrp vrid 2 virtual-ip 10.1.1.2 255.255.255.0 active //将接口GE1/0/1加入VRRP备份组2,并将VRRP备份组2加入Active组。 |
interface GigabitEthernet 1/0/3 ip address 1.1.1.3 255.255.255.0 vrrp vrid 3 virtual-ip 1.1.1.1 255.255.255.0 active //将接口GE1/0/3加入VRRP备份组3,并将VRRP备份组3加入Active组。 vrrp vrid 4 virtual-ip 1.1.1.2 255.255.255.0 standby //将接口GE1/0/3加入VRRP备份组4,并将VRRP备份组4加入Standby组。 |
interface GigabitEthernet 1/0/3 ip address 1.1.1.4 255.255.255.0 vrrp vrid 3 virtual-ip 1.1.1.1 255.255.255.0 standby //将接口GE1/0/3加入VRRP备份组3,并将VRRP备份组3加入Standby组。 vrrp vrid 4 virtual-ip 1.1.1.2 255.255.255.0 active //将接口GE1/0/3加入VRRP备份组4,并将VRRP备份组4加入Active组。 |
hrp interface GigabitEthernet 1/0/2 //指定心跳口 hrp enable //启用双机热备功能 |
hrp interface GigabitEthernet 1/0/2 //指定心跳口 hrp enable //启用双机热备功能 |
由上表可以看到:1、负载分担场景下,每个业务接口需要加入两个VRRP备份组,且这两个VRRP备份组要分别加入Active组和Standby组。例如GE1/0/1接口加入了备份组1和2,备份组1和2 分别加入了Active组和Standby组。2、两台防火墙的相同编号的VRRP备份组需分别加入Active组和Standby组。例如FW1的VRRP备份组1加入了Active组,FW2的VRRP备份组1加入了Standby组。
如上图所示,配置完成后,负载分担方式的双机热备状态形成过程如下:
1) FW1和FW2的Active组的状态会由Initialize切换成Active,Standby组的状态由Initialize切换成Standby。
2) 由于FW1的VRRP备份组1和3加入了Active组,而Active组的初始状态为Active,所以FW1的VRRP备份组1和VRRP备份组3的状态都为Active;由于FW1的VRRP备份组2和4加入了Standby组,而Standby组的初始状态为Standby,所以FW1的VRRP备份组2和VRRP备份组4的状态都为Standby;同理FW2的VRRP备份组1和VRRP备份组3的状态都为Standby,VRRP备份组4和VRRP备份组4的状态都为Active。
3) 这时FW1的VRRP备份组1和3会分别向下行和上行交换机发送送免费ARP报文,将VRRP备份组1和3的虚拟MAC地址通知给他们;FW2的VRRP备份组2和4会分别向下行和上行交换机发送送免费ARP报文,将VRRP备份组2和4的虚拟MAC地址通知给他们。
4) 下行交换机的MAC表项会记录VRRP备份组1的虚拟MAC地址(00-00-5E-00-01-01)与端口Eth0/0/1的对应关系,VRRP备份组2的虚拟MAC地址(00-00-5E-00-01-02)与端口端口Eth0/0/2的对应关系。这样当下行交换机下面的设备请求VRRP备份组1的虚拟MAC地址(将VRRP备份组1的虚拟IP设置为下一跳)时,交换机会将业务报文转发到FW1上;而请求VRRP备份组2的虚拟MAC地址(将VRRP备份组2的虚拟IP设置为下一跳)时,交换机会将业务报文转发到FW2上。同理上行交换机上面的设备请求VRRP备份组3的虚拟MAC地址(将VRRP备份组3的虚拟IP设置为下一跳)时,交换机会将业务报文转发到FW1上;而请求VRRP备份组4的虚拟MAC地址(将VRRP备份组4的虚拟IP设置为下一跳)时,交换机会将业务报文转发到FW2上。这样FW1和FW2都会转发业务报文,所以FW1和FW2都是主用设备,形成负载分担状态。
5) 负载分担状态形成后,FW1的Active组会定期向FW2的Standby组发送HRP心跳报文,FW2的Active组会定期向FW1的Standby组发送HRP心跳报文。
两台防火墙形成负载分担方式的双机热备后,如果其中一台防火墙的接口故障,那么他们将切换成主备备份状态,具体过程如下:
1) 如下图所示,当FW1的GE1/0/1接口故障时,FW1的VRRP备份组1和2的状态都会变成Initialize。
2) FW1的Active组与Standby组的优先级都会降低2。这时FW1的Active组的优先级变成64999低于FW2的Standby组的优先级65000, FW2的Standby组的优先级变成64998低于FW2的Standby组的优先级65000。这样经过VGMP组之间的状态协商后(具体原理和报文交互请看上面的主备备份方式),FW1的Active组的状态切换成Standby,FW2的Standby组的状态切换成Active。
3) FW1的Active组和FW2的Standby组会强制组内VRRP备份组也进行状态切换,所以FW2的VRRP备份组1和3的状态都切换成Active。
4) FW2的VRRP备份组1和3会分别向下行和上行交换机发送免费ARP报文,更新他们的MAC转发表。
5) 下行交换机收到免费ARP报文后,会更新自身的MAC转发表,将VRRP备份组1的虚拟MAC地址(00-00-5E-00-01-01)修改成与Eth0/0/2对应。同理上行交换机会将VRRP备份组3的虚拟MAC地址(00-00-5E-00-01-03)修改成与Eth0/0/2对应。这样当上下行的业务报文到达交换机后,交换机会将报文都转发到FW2上。至此双机热备状态切换完成,时FW1成为备用设备,FW2成为主用设备,负载分担状态变成主备备份状态。
6) 负载分担切换成主备备份状态后,主用设备FW2会定时向备用设备FW1发送心跳报文。
上面的内容应该可以完美地回答“两台防火墙的VGMP组的状态协商和切换过程,以及报文交互过程到底是怎样的呢?”这个问题了。 而由上面的例子可以看出,VGMP在双机热备中主要实现以下三个功能:
1、 故障监控:VGMP组能够监控VRRP备份组状态变化,从而感知到VRRP组内接口的故障和恢复。(私下里嘀咕:VGMP组能不能直接监控接口故障呢,一定要通过VRRP备份组监控接口么?)
2、 状态切换:VGMP组感知到VRRP备份组状态变化后,会调整自身的优先级,并与对端的VGMP组重新协商主备状态。(私下里嘀咕:这一点比较清楚了,本篇都是在讲状态如何切换和协商的。)
3、 流量引导:两个VGMP组主备状态建立或者切换后,会强制组内VRRP备份组状态统一切换,然后由状态为Active的VRRP备份组发送免费ARP来引导流量通过自身转发。(私下里嘀咕:如果VGMP组能够直接监控接口的话,流量引导方式也是这样么?)
实际上VGMP功能很强大,通过监控VRRP备份组状态实现防火墙主备状态切换和流量引导仅仅是VGMP的一个招式。这个招式仅仅适用于防火墙上行或下行设备是交换机的场景,因为VRRP本身就是为这个场景量身定制的。当防火墙上行或下行设备是路由器的时候,VGMP就无力应对了么?当然不会的!下节我们就对VGMP的更多绝招进行介绍,帮助大家全面了解双机热备功能,做到兵来将挡、水来土掩!
前面我们学习了VGMP组的各种状态变化过程。下面强叔再通过解释VGMP状态机的形式,来帮助各位小伙伴加深对VGMP状态变化的理解。难道你不觉得了解了某个功能的状态机后,整个人都变得高大上了吗?!
说明:本篇的VGMP状态机目前适用于USG2000/5000/6000系列防火墙和USG9000系列防火墙的V1R3版本。
(0) 启用双机热备功能后,各VGMP组进入Initialize(初始化)状态。
(1) 启用Active组后,Active组的状态由Initialize切换成Active。
(2) 启用Standby组后,Standby组的状态由Initialize切换成Standby。
(3) 本端VGMP组监控的接口故障时,状态由Active切换成ActiveToStandby,并发送VGMP请求报文给对端设备的VGMP组。
(4) 本端VGMP组收到对端的VGMP请求报文,发现自身优先级高,则将状态由Standby切换成Acitve,并发送VGMP确认报文给对端设备的VGMP组。
(5) 本端VGMP组收到对端的VGMP确认报文,确认本端需要进行状态切换,则本端的VGMP组状态由ActiveToStandby切换成Standby。
(6) 对端VGMP组确认本端的VGMP组不需要进行状态切换或连续三次没有回应本端的VGMP请报文,则本端的VGMP组状态由ActiveToStandby切换成Active。
(7) 本端VGMP组监控的接口故障恢复后,如果本端VGMP组优先级高于对端且配置了抢占功能,则本端VGMP组状态由Standby切换成StandbyToAcitve,并向对端发送VGMP请求报文。
(8) 本端VGMP组收到对端的VGMP请求报文,发现对端优先级高,则将状态由Active切换成Standby,并发送VGMP确认报文给对端设备的VGMP组。
(9) 本端VGMP组收到对端的VGMP确认报文,确认本端需要进行状态切换,则本端的VGMP组状态由StandbyToAcitve切换成Active,完成抢占过程。
(10) 对端VGMP组确认本端的VGMP组不需要进行状态切换或连续三次没有回应本端的VGMP请报文,则本端的VGMP组状态由StandbyToAcitve切换成Standby。