防火墙双机热备三大协议(VRRP/VGMP/HRP)原理

防火墙双机热备技术

双机热备概述:

为什么需要要双机热备?

解决单点故障,实现业务的平滑过渡(会话表需要同步的)

双机热备的两种部署方式:

  1. 主备方式
  2. 负载分担分时。

防火墙双机热备产生的原因,详细内容可参考:防火墙双机热备技术


三大协议框架:

  • 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报文抓包
​ 图:VRRPv2报文抓包示例

VRRP状态:

VRRP备份组有三种状态:InitializeMasterBackup

  • 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建立过程:

  1. 初始状态—–备份
  2. 根据优先级和IP地址,选择MASTER和BACKUP(超时定时器)
  3. 成为MASTER设备发送免费ARP,刷新交换机的MAC地址表,起到引流的作用
  4. 当主机发送ARP请求的时候,只有MASTER设备才能回应ARP-REPLY

VRRP备份组的切换过程:

  1. 接口或者整机发现故障,BACKUP设备等待死亡时间

  2. BACKUP设备成为MASTER以后,发送免费ARP刷新交换机MAC地址表。

  3. PC ARP请求,只有MASTERT设备给回应

VRRP的故障恢复:

抢占过程,默认开启抢占

VRRP缺点:

只能针对单独一个VRPP备份组。

在双机热备防火墙中的问题:

出现状态切换不一致的,导致业务中断。

解决方案:VGMP

VGMP协议基本原理

VGMP简介:

VGMP(VRRP Group Management Protocol)协议是华为公司的私有协议。VGMP协议中定义了VGMP组,FW基于VGMP组实现设备主备状态管理。

为什么有VGMP?

解决VRRP备份组切换不一致性的问题

VGMP报文:

VGMP报文

图: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状态机

图: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确认报文,确认本端需要进行状态切换,则本端的VGMP组状态由A to S切换成Standby。
  6. 对端VGMP组确认本端的VGMP组不需要进行状态切换或连续三次没有回应本端的VGMP请报文,则本端的VGMP组状态由A to S切换成Active。
  7. 7) 本端VGMP组监控的接口故障恢复后,如果本端VGMP组优先级高于对端且配置了抢占功能,则本端VGMP组状态由Standby切换成S to A,并向对端发送VGMP请求报文。
  8. 本端VGMP组收到对端的VGMP请求报文,发现对端优先级高,则将状态由Active切换成Standby,并发送VGMP确认报文给对端设备的VGMP组。
  9. 本端VGMP组收到对端的VGMP确认报文,确认本端需要进行状态切换,则本端的VGMP组状态由S to A切换成Active,完成抢占过程。
  10. 对端VGMP组确认本端的VGMP组不需要进行状态切换或连续三次没有回应本端的VGMP请报文,则本端的VGMP组状态由S to A切换成Standby。

VGMP工作原理:

主备模式

  1. 指定设备谁是Active,谁是standby(自己决定)

  2. 将VGMP组内所有VRRP备份组状态为指定的Active standby(VRRP备份组状态一致性)

  3. Active设备发送免费ARP,刷新交换机MAC地址表(引导流量)

  4. 周期性发送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 xxxx

C 检测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
图:IP-link状态,默认发送时间间隔5s。

主备切换的时间多长?

主备切换的时间与其触发条件有关。

  • 如果由接口或链路故障触发主备切换,切换时间为毫秒级。
  • 如果由整机故障触发切换,切换时间为(V500版本)5个心跳报文的发送间隔。V100中3个心跳报文时间。

VGMP引导流量方式:

  • 虚拟IP引流
    适用场景:防火墙业务接口工作在三层,上下接交换机(二层)

  • OSPF COST引流
    适用场景: 防火墙业务接口工作在三层,上下接路由器

  • VLAN禁用和启动引流
    适用场景:防火墙业务接口工作在二层,上下接交换机(或者上下接路由器)

  • 动态路由引流
    适用场景: 防火墙业务接口工作在三层,上下接路由器

HRP协议基本原理

为什么会有HRP:

HRP实现备份会话表等状态信息和关键的配置。

HRP报文:

HRP报文实际上是一种VGMP报文,承载在VGMP报文的Data区域。当然也存在两种封装方式。

管理面HRP报文两种封装:
hrp管理报文

管理面HRP报文中会携带以下信息:指定自动备份还是批量备份、指定是发送还是应答、备份的数据类型。

转发面HRP同步报文(实时备份报文)也有两种封装:

Hrp同步报文

HRP报文封装:

HRP报文

封装VRRP,组播224.0.0.18 ——-不需要受安全策略监控

封装UDP, 单播 ——-需要受安全策略监控

配置心跳线的时候需要考虑加不加remote。

HRP备份方式:

  • 自动备份 —-默认方式
  • 手动备份—–批量方式 (hrp sync config 手动触发批量备份)
  • 快速备份 —– 针对负载分担

备份通道状态:

当设备两边均配置心跳口后,防火墙会判断心跳接口的物理与协议状态。心跳链路一共存在五种状态:

  1. running:正常运行。 —–能够发送报文
  2. ready:正常运行。次接口为备用备份通道,当前未使用。 -
  3. peerdown:本段正常,但是收不到对端的心跳报文。
  4. invalid:未指定心跳接口的IP地址,心跳口工作在二层。
  5. 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文档


坚持原创技术分享,您的支持将鼓励我继续创作!