防火墙双机热备技术
文章目录
双机热备技术产生的原因
USG防火墙作为安全设备,一般 会部署在需要保护的网络和不受保护的网络之间,即位于业务接口点上。在这种业务点上,如果仅仅使用一台USG防火墙设备,无论其可靠性多高,系统都可能会承受因为单点故障而导致网络中断的风险。为了防止一台设备出现意外故障而导致网络业务中断,可以采用两台防火墙形成双机备份。
VRRP在防火墙的缺陷
问题产生的原因:报文转发机制不同。
- 路由器:每个报文都会查路由表当匹配上后才进行转发,当链路切换后,后续报文不会受到影响,继续进行转发。
- 状态监测防火墙:如果首包允许通过会建立一条五元组的会话连接,只有命中该会话表项的后续报文(包括返回报文)才能通过防火墙,如果链路切换后,后续报文找不到正确的表项,会导致业务中断。
VGMP(VRRP Group Management Protocol)
VGMP提出VRRP管理组的概念,将同一台防火墙上的多个VRRP备份组都加入到一个VRRP管理组,由管理组统一管理所有VRRP备份组。通过统一控制各VRRP备份组状态的切换,来保证管理组内的所有VRRP备份组状态都是一致的。
VGMP基本原理
- 当防火墙上的VGMP为Active状态时,组内所有VRRP备份组的状态统一为 Active状态,所有报文都将从该防火墙.上通过,该防火墙成为主用防火墙。此时另外一台防火墙上对应的VGMP为备状态,该防火墙成为备用防火墙。
- VGMP的优先级会根据组内的VRRP备份组状态为Active的VGMP也会定期向对端发送HELLO报文,通知Standby端本身的运行状态(包括优先级、VRRP成员状态等)。成员的状态动态调整,以此完成两台防火墙的主备倒换。
- 与VRRP类似,与VRRP不同的是,Standby端收到HELLO报文后,会回应一个ACK消息,该消息中也会携带本身的优先级、VRRP成员状态等。
- VGMP HELLO报文发送周期缺省为1秒。当Standby端 三个HELLO报文周期没有收到对端发送的HELLO报文时,会认为对端出现故障,从而将自己切换到Active状态。
VGMP组管理
状态一致性管理
各备份组的主/备状态变化都需要通知其所属的VGMP管理组,由VGMP管理组决定是否允许VRRP备份组进行主/备状态切换。如果需要切换,则VGMP管理组控制所有的VRRP备份组统一切换。 VRRP 备份组加入到管理组后,状态不能自行单独。
切换。
抢占管理
- VRRP备份组本身具有抢占功能。即当原来出现故障的主设备故障恢复时,其优先级也会恢复,此时可以重新将自己的状态抢占为主。
- VGMP管理组的抢占功能和VRRP备份组类似,当管理组中出现故障的备份组故障恢复时,管理组的优先级也将恢复。此时VGMP可以决定是否需要重新抢占称为主设备。
- 当VRRP备份组加入到VGMP管理组后,备份组.上原来的抢占功能将失效,抢占行为发生与否必须由VGMP管理组统一决定。
VGMP报文
-
标准VRRP报文的“Type”字段只有“1”一个取值,我们增加了“2”取值。也就是说如果Type=1,就是标
准的VRRP报文;如果Type=2,就是我们修改后的VRRP报文。 -
标准VRRP报文的“Virtual Rtr ID”字段代表VRRP备份组ID,而修改后的VRRP报文“Virtual Rtr ID”取值固定为“0”。
-
修改后的VRRP报文中去掉了标准VRRP报文的“IP Address”字段。
-
标准VRRP报文中的“Priority”字段在VRRP报文头中被修改成“Type2”字段。
-
当Type2=1时,报文封装成心跳链路探测报文。心跳链路探测报文用于检测对端设备的心跳口能否正常接收本端设备的报文,以确定是否有心跳口可以使用。
-
当Type2=5时,报文封装成 一致性检查报文。一致性检查报文用于检测双机热备状态下的两台防火墙是否配置了相同的策略。
-
当Type2=2时,VRRP报文才会进一步封装VGMP报文头,并根据VGMP报文头中
-
“vType”字段继续分成以下三种报文 :
- VGMP 报文(VGMP Hello 报文)。VGMP Hello 报文用于两台防火墙间的VGMP组协商主备状态。这也正是我们问题的答案所在。
- HRP 心跳报文(HRP Hello 报文)。HRP心跳报文用于探测对端设备是否处于工作状态。主用设备会每隔一段时间(缺省为1s)向备用设备发HRP心跳报文,用来通知主用设备处于工作状态。如果备用设备在三个周期内没有收到HRP心跳报文,则认为主用设备故障,而自身切换成主用备。
- HRP 数据报文。我们还需要在VGMP报文头后继续增加HRP报文头,才能封装成HRP数据报文。HRP数据报文用于主备设备之间的数据备份,包括命令行配置的备份和各种状态信息的备份。
VGMP状态机
启用双机热备内功能后,各VGMP组进入Initialize(初始化)状态。
1.启用Active组后,Active组的状态由Initialize切换成Active。
2.启用Standby组后,Standby组的状态由Initialize切换成Standby。
3.本端VGMP组监控的接口故障时,状态由Active切换成A to S,并发送VGMP请求报文给对端设备的VGMP组。
4.本端VGMP组收到对端的VGMP请求报文,发现自身优先级高,则将状态由Standby切换成Acitve,并发送VGMP确认报文给对端设备的VGMP组。
5.本端VGMP组收到对端的VGMP确认