防火墙双机热备技术
双机热备概述:
为什么需要要双机热备?
解决单点故障,实现业务的平滑过渡(会话表需要同步的)
双机热备的两种部署方式:
- 主备方式
- 负载分担分时。
防火墙双机热备产生的原因,详细内容可参考:防火墙双机热备技术
三大协议框架:
- VRRP------虚拟路由冗余协议
- VGMP------VRRP组管理协议(华为私有)
- HRP--------华为冗余协议(华为私有)
VRRP协议基本原理
VRRP协议的详细内容可参考:虚拟路由冗余协议(VRRP)
VRRP的基础知识点:
- VRRP角色: master, backup
- 发送Hello包时间间隔 1s,超时等待 3s。目的地址(组播):224.0.0.18
- 基于IP协议,协议号为112.
- 选举参数:优先级越大越优,默认优先级100.范围 0-255. 如果优先级相同,IP地址大者优先。
? 图:VRRPv2报文抓包示例
VRRP状态:
VRRP备份组有三种状态:Initialize、Master和Backup。
- Initialize:初始化状态。当设备的VRRP备份组状态为Initialize时,该VRRP备份组处于不可用状态。
- Master:活动状态。VRRP备份组状态为Master的设备被称为Master设备。Master设备拥有VRRP备份组的虚拟IP地址和虚拟MAC地址。Master设备收到目的IP地址是虚拟IP地址的ARP请求时,会响应这个ARP请求。
- Backup:备份状态。VRRP备份组状态为Backup的设备被称为Backup设备。Backup设备不会响应目的IP地址为虚拟IP地址的ARP请求。
VRRP建立过程:
- 初始状态-----备份
- 根据优先级和IP地址,选择MASTER和BACKUP(超时定时器)
- 成为MASTER设备发送免费ARP,刷新交换机的MAC地址表,起到引流的作用
- 当主机发送ARP请求的时候,只有MASTER设备才能回应ARP-REPLY
VRRP备份组的切换过程:
-
接口或者整机发现故障,BACKUP设备等待死亡时间
-
BACKUP设备成为MASTER以后,发送免费ARP刷新交换机MAC地址表。
-
PC ARP请求,只有MASTERT设备给回应
VRRP的故障恢复:
抢占过程,默认开启抢占
VRRP缺点:
只能针对单独一个VRPP备份组。
在双机热备防火墙中的问题:
出现状态切换不一致的,导致业务中断。
解决方案:VGMP
VGMP协议基本原理
VGMP简介:
VGMP(VRRP Group Management Protocol)协议是华为公司的私有协议。VGMP协议中定义了VGMP组,FW基于VGMP组实现设备主备状态管理。
为什么有VGMP?
解决VRRP备份组切换不一致性的问题
VGMP报文:
对标准VRRP修改头部
-
Type = 1 标准VRRP Type=2
-
Vir R ID===等于对应的组号,如果VGMP =0
-
删除优先级字段,增加Type2字段
-
Type2= 1 -----------心跳探测报文(验证心跳线接口UP DOWN的问题)
? 5------------HRP一致性检查(策略)
? 2------------看VGMP的vtype字段
? HRP心跳报文(Hello) VGMP报文 HRP数据报文 -
VGMP: vPriority 优先级
VGMP优先级:
- 中低端
Active设备优优先级为65001 Standby设备优先级为65000 - 高端:
VGMP组初始优先级=45000 + 1000 * LPU板上的插卡个数 + 2 * SPU板上的CPU个数
USG6000,NGFW Module的初始优先级都为45000.
VGMP状态机:
VGMP的状态有:initialize stanby active A-to-S S-to-A
启用双机热备功能后,各VGMP组进入Initialize(初始化)状态。
- 启用Active组后,Active组的状态由Initialize切换成Active。
- 启用Standby组后,Standby组的状态由Initialize切换成Standby。
- 本端VGMP组监控的接口故障时,状态由Active切换成A to S,并发送VGMP请求报文给对端设备的VGMP组。
- 本端VGMP组收到对端的VGMP请求报文,发现自身优先级高,则将状态由Standby切换成Acitve,并发送VGMP确认报文给对端设备的VGMP组。
- 本端VGMP组收到对端的VGMP确认报文,确认本端需要进行状态切换,则本端的VGMP组状态由A to S切换成Standby。
- 对端VGMP组确认本端的VGMP组不需要进行状态切换或连续三次没有回应本端的VGMP请报文,则本端的VGMP组状态由A to S切换成Active。
-
- 本端VGMP组监控的接口故障恢复后,如果本端VGMP组优先级高于对端且配置了抢占功能,则本端VGMP组状态由Standby切换成S to A,并向对端发送VGMP请求报文。
- 本端VGMP组收到对端的VGMP请求报文,发现对端优先级高,则将状态由Active切换成Standby,并发送VGMP确认报文给对端设备的VGMP组。
- 本端VGMP组收到对端的VGMP确认报文,确认本端需要进行状态切换,则本端的VGMP组状态由S to A切换成Active,完成抢占过程。
- 对端VGMP组确认本端的VGMP组不需要进行状态切换或连续三次没有回应本端的VGMP请报文,则本端的VGMP组状态由S to A切换成Standby。
VGMP工作原理:
主备模式
-
指定设备谁是Active,谁是standby(自己决定)
-
将VGMP组内所有VRRP备份组状态为指定的Active standby(VRRP备份组状态一致性)
-
Active设备发送免费ARP,刷新交换机MAC地址表(引导流量)
-
周期性发送HRP心跳报文(周期1S 死亡3S)----------监控Active和Standby状态
VGMP状态切换:
A. 接口或者链路发生故障
过程:
原Active方
接口故障------VRRP备份组变成init-----------VGMP感知,优先级65001-2=64999---------发送VGMP请求报文(携带变化以后的优先级64999)------状态从Active变成 A to S 收到VGMP确认以后--------状态变成Standby,组成所有成员除了故障的都变成Standby
原Standby方
收到VGMP请求报文----------对比优先级--------自己高优先级,切换为Active--------VGMP组内所有的VRRP备份组状态切换为Active-----发送免费ARP刷新交换机MAC地址表-----------回应一个VGMP确认
接口故障时VGMP管理组优先级如何计算?
-
如果接口上配置了VRRP备份组,该接口故障时,VGMP管理组优先级降低2 * 接口上VRRP备份组数量。
-
如果使用hrp track interface命令配置VGMP管理组监控物理接口状态,每一个物理接口故障时,VGMP管理组优先级降低2。
-
如果使用hrp track interface命令配置VGMP管理组监控Eth-Trunk或IP-Trunk接口状态时,缺省情况下,Trunk接口的部分成员接口故障,VGMP管理组的优先级降低 2 * 故障成员接口个数。Trunk接口的所有成员接口故障,优先级降低 2 * (1 + 成员接口个数)。
使用undo hrp track trunk-member enable命令取消双机热备模块对Eth-Trunk或IP-Trunk成员接口状态的监控后,部分成员接口故障时,优先级不会降低。所有成员接口故障时,优先级降低值为2 * 故障Trunk接口个数。
-
如果接口上配置了VRRP备份组,同时又使用hrp track interface命令配置VGMP管理组监控接口的状态,当接口故障时,VGMP管理组优先级降低值会叠加计算。例如,接口GigabitEthernet 1/0/1上配置了2个VRRP备份组,同时又配置了hrp track interface GigabitEthernet 1/0/1,当GigabitEthernet 1/0/1故障时,VGMP管理组优先级降低6。
-
如果使用hrp track vlan监控VLAN状态,加入该VLAN的接口故障时,VGMP管理组优先级降低2。
B. 整机或者心跳线发现故障
整机故障-------------主DOWN了,备的成为主
心跳线故障-----------会出现双主(双活)
收不到HRP心跳报文(V100中是3次,3s。 V500版本中是5次,5s )------------切换---------组内所有VRRP备份组都变成Active---------发送免费ARP,刷新MAC地址表
C. 故障恢复, 抢占功能开启
接口恢复------状态变成Standby----------VGMP优先级64999+2 =65001 ---------等待抢占延迟时间到(默认60S)----发送VGMP请----------状态S-to-A状态 收到确认以后变成S-to-A变成Active ----组内所有VRRP备份变成Active—发送免费ARP刷新交换机MAC地址表
收到VGMP请求报文----------对比优先级--------自己低优先级,切换为Standby-------组内所有VRRP备份组切换为Standby----发送VGMP确认
VGMP故障检测:
分类:直连和非直连
针对直连故障
A. 检测VRRP备份组状态
适用场景:防火墙业务接口工作在三层,上下接交换机(二层)B. 检测三层接口的状态
适用场景: 防火墙业务接口工作在三层,上下接路由器
int xxxx
hrp track xxxxC 检测VLAN接口状态
适用场景:防火墙业务接口工作在二层,上下接交换机(或者上下接路由器)
vlan xxx
hrp track XXXX
非直连故障
IP-LINK
BFD
IP-link:
IP-Link是指FW通过向指定的目的IP周期性地发送探测报文并等待应答,来判断链路是否发生故障。
FW发送探测报文后,在三个探测周期(默认为15s)内未收到响应报文,则认为当前链路发生故障,IP-Link的状态变为Down。随后,FW会进行IP-Link Down相关的后续操作,例如双机热备主备切换等。
当链路从故障中恢复,FW能连续地收到3个响应报文,则认为链路故障已经消除,IP-Link的状态变为Up。也就是说,链路故障恢复后,IP-Link的状态并不会立即变为Up,而是要等三个探测周期(默认为15s)才会变为Up。
图:IP-link状态,默认发送时间间隔5s。
主备切换的时间多长?
主备切换的时间与其触发条件有关。
- 如果由接口或链路故障触发主备切换,切换时间为毫秒级。
- 如果由整机故障触发切换,切换时间为(V500版本)5个心跳报文的发送间隔。V100中3个心跳报文时间。
VGMP引导流量方式:
-
虚拟IP引流
适用场景:防火墙业务接口工作在三层,上下接交换机(二层) -
OSPF COST引流
适用场景: 防火墙业务接口工作在三层,上下接路由器 -
VLAN禁用和启动引流
适用场景:防火墙业务接口工作在二层,上下接交换机(或者上下接路由器) -
动态路由引流
适用场景: 防火墙业务接口工作在三层,上下接路由器
HRP协议基本原理
为什么会有HRP:
HRP实现备份会话表等状态信息和关键的配置。
HRP报文:
HRP报文实际上是一种VGMP报文,承载在VGMP报文的Data区域。当然也存在两种封装方式。
管理面HRP报文两种封装:
管理面HRP报文中会携带以下信息:指定自动备份还是批量备份、指定是发送还是应答、备份的数据类型。
转发面HRP同步报文(实时备份报文)也有两种封装:
HRP报文封装:
封装VRRP,组播224.0.0.18 -------不需要受安全策略监控
封装UDP, 单播 -------需要受安全策略监控
配置心跳线的时候需要考虑加不加remote。
HRP备份方式:
- 自动备份 ----默认方式
- 手动备份-----批量方式 (hrp sync config 手动触发批量备份)
- 快速备份 ----- 针对负载分担
备份通道状态:
当设备两边均配置心跳口后,防火墙会判断心跳接口的物理与协议状态。心跳链路一共存在五种状态:
- running:正常运行。 -----能够发送报文
- ready:正常运行。次接口为备用备份通道,当前未使用。 -
- peerdown:本段正常,但是收不到对端的心跳报文。
- invalid:未指定心跳接口的IP地址,心跳口工作在二层。
- down:心跳接口的物理状态与协议状态都为DOWN。
当有多根心跳线时,哪个接口先配置的心跳线,即哪个接口的状态先成为ready,当两端心跳线通信时,先成为ready的接口就会成为running
当本端running接口down时,第二成为ready的接口会代替down的接口成为本端设备的running口。
继承顺序按照成为ready的时间,没有比较优先级等。只看时间戳。
当两端的心跳线有多根时,如果两端的running口不是一根链路,也可以正常通信。
防火墙备份通道选择:
- 防火墙通过VGMP链路探测报文检测通道的质量,只要本段发送的探测报文对应可以收到并回应,那么就认为本段该心跳接口可通,与对端配置顺序无关。
- 当本段心跳接口发生故障时,那么本段将立刻切换到第一个处于ready状态的心跳接口。此动作与对端无关。
心跳线:
双机热备组网中,心跳线是两台FW交互消息了解对端状态以及备份配置命令和各种表项的通道。心跳线两端的接口通常被称之为“心跳接口”。
心跳线主要传递如下消息:
- 心跳报文(Hello报文):两台FW通过定期(默认周期为1秒)互相发送心跳报文检测对端设备是否存活。
- VGMP报文:了解对端设备的VGMP组的状态,确定本端和对端设备当前状态是否稳定,是否要进行故障切换。
- 配置和表项备份报文:用于两台FW同步配置命令和状态信息。
- 心跳链路探测报文:用于检测对端设备的心跳口能否正常接收本端设备的报文,确定是否有心跳接口可以使用。
- 配置一致性检查报文:用于检测两台FW的关键配置是否一致,如安全策略、NAT等。
主备备份和负载分担工作原理
FW支持主备备份和负载分担模式两种运行模式。
主备备份:
主备备份指正常情况下仅由主用设备处理业务,备用设备空闲;当主用设备接口、链路或整机故障时,备用设备切换为主用设备,接替主用设备处理业务。
流量由单台设备处理,相较于负载分担模式,路由规划和故障定位相对简单。
负载分担:
所谓负载分担,也可以称为“互为主备”,即两台设备同时处理业务。当其中一台设备发生故障时,另一台设备会立即承担其业务,保证原来需要通过这台设备转发的业务不中断。
防火墙缺省提供两个VGMP管理组:Active组和Standby组。主备备份时只有个VGMP管理组在工作。负载分担时两个VGMP管理组同时工作,工作原理完全相同。
相较于主备备份模式,组网方案和配置相对复杂。
负载分担组网中使用入侵防御、反病毒等内容安全检测功能时,可能会因为流量来回路径不一致导致内容安全功能失效。
负载分担组网中配置NAT时,需要额外的配置来防止两台设备NAT资源分配冲突。
负载分担模式组网中流量由两台设备共同处理,可以比主备备份模式或镜像模式组网承担更大的峰值流量。
负载分担模式组网中设备发生故障时,只有一半的业务需要切换,故障切换的速度更快。
参考文档:华为HedEx文档