防火墙双机热备用到的三大协议VRRP、VGMP、HRP原理
防火墙的双机热备功能提供一条专门的备份通道, 用于两台防火墙之间协商主备状态,以及会话等状态信息的备份。
1.问题的提出:为什么要用双机热备?
- 保证业务可靠性
- 保证业务不中断
2.双机热备的备份方式
双机热备有两种方式,即主备备份和负载分担备份。
主备备份是指正常情况下仅由主用设备处理业务,备用设备空闲;当主用设备接口、链路或整机故障时,备用设备切换为主用设备,接替主用设备处理业务。
负载分担也可以称为互为主备,即两台设备同时处理业务。当其中一台设备发生故障时,另外一台设备会立即承担其业务,保证原来需 要通过这台设备转发的业务不中断。
3.双机热备的三大协议
防火墙双机热备涉及到三个协议,如下表:
| 协议名称 | 英文全称 | 中文名称 | 备注 |
|---|---|---|---|
| VRRP | Virtual Router Redundancy Protocol | 虚拟路由冗余协议 | |
| VGMP | VRRP Group Management Protocol | VRRP组管理协议 | 华为私有 |
| HRP | Huawei Redundancy Protocol | 华为冗余协议 | 华为私有 |
下面将分别介绍这三种协议的原理。
4. VRRP协议
4.1 概述
VRRP协议,即虚拟路由冗余协议(Virtual Router Redundancy Protocol),它通过把几台路由设备联合组成一台虚拟的路由设备,将虚拟路由设备的IP地址作为用户的默认网关实现与外部网络通信。当网关设备发生故障时,VRRP机制能够选举新的网关设备承担数据流量,从而保障网络的可靠通信。
这里边涉及到一些名词或概念,如下表:
VRRP协议 |
解释 |
|---|---|
VRRP路由器 |
运行VRRP协议的路由器,一个或多个实例的路由器。 |
VRRP组 |
由一组VRRP路由器组成,形成一个备份组,在功能上相当于一台虚拟路由器。在一个VRRP组内的多个路由器接口共用一个虚拟IP地址,这个虚拟IP地址被作为局域网内所有主机的缺省(默认)网关地址。 |
| 虚拟路由器标识 | VRID(Virtual Router ID),用于标识VRRP组中的路由器。在同一个VRRP组内的路由器必须有相同的VRID。 |
Master路由器 |
在VRRP组中处于主状态,负责接收发送至用户网关的数据包并进行转发,以及响应PC对于其网关IP地址的ARP请求。 |
Backup路由器 |
在VRRP组中处于备份状态,侦听Master路由器的状态,并在Master路由器发生故障时,接替其工作,从而保证业务流量的平滑切换。 |
虚拟MAC地址 |
虚拟路由器根据虚拟路由器ID生成的MAC地址。一个虚拟路由器拥有一个虚拟MAC地址,格式为:00-00-5E-00-01-{VRID} |
4.2 VRRP协议报文
VRRP协议报文用来将Master设备的优先级和状态通告给同一备份组的所有Backup设备。
VRRP协议报文封装在IP报文中,拥有专门的VRRP组播地址。
在IP报文头中,源地址为发送报文接口的主IP地址(不是虚拟IP地址),目的地址是224.0.0.18,TTL是255,协议号是112。
主IP地址(Primary IP Address):从接口的真实IP地址中选出来的一个主用IP地址,通常选择配置的第一个IP地址。
目前:
VRRP协议包括两个版本:VRRPv2和VRRPv3。
VRRPv2仅适用于IPv4网络,VRRPv3适用于IPv4和IPv6两种网络。
VRRPv2和VRRPv3的报文结构分别如下:
![防火墙双机热备用到的三大协议VRRP、VGMP、HRP原理 图片[1]-防火墙双机热备用到的三大协议VRRP、VGMP、HRP原理-不念博客](https://img.mryunwei.com/uploads/2023/12/20231217010643228.jpg)
VRRP报文字段含义如下:
![防火墙双机热备用到的三大协议VRRP、VGMP、HRP原理 图片[2]-防火墙双机热备用到的三大协议VRRP、VGMP、HRP原理-不念博客](https://img.mryunwei.com/uploads/2023/12/20231217010644546.jpg)
4.3 VRRP的三种状态
VRRP备份组有三种状态:Initialize、Master和Backup。只有处于活动状态的设备才可以转发那些发送到虚拟IP地址的报文。
| 状态 | 状态中文 | 说明 |
|---|---|---|
| Initialize | 初始状态 | 该状态为VRRP不可用状态,在此状态时设备不会对VRRP报文做任何处理。通常刚配置VRRP时或设备检测到故障时会进入Initialize状态。收到接口Up的消息后,如果设备的优先级为255,则直接成为Master设备;如果设备的优先级小于255,则会先切换至Backup状态。 |
| Master | 活动状态 | 当VRRP设备处于Master状态时,它将会做下列工作:定时(Advertisement Interval)发送VRRP通告报文。以虚拟MAC地址响应对虚拟IP地址的ARP请求。转发目的MAC地址为虚拟MAC地址的IP报文。如果它是虚拟IP地址的拥有者,则接收目的IP地址为这个虚拟IP地址的IP报文。如果收到比自己优先级大的报文,立即成为Backup。如果收到与自己优先级相等的VRRP报文且本地接口IP地址小于对端接口IP,立即成为Backup。当接收到接口的Shutdown事件时,转为Initialize状态。 |
| Backup | 备份状态 | 当VRRP设备处于Backup状态时,它将会做下列工作:接收Master发送的VRRP通告报文,判断Master的状态是否正常。对虚拟IP地址的ARP请求,不做响应。收到目的IP地址为虚拟IP地址的IP报文时按照正常二层转发流程进行处理。如果收到比自己优先级小的报文时,默认立刻升主,如果配置了不抢占,则重置定时器;如果配置了抢占延迟,则重置定时器,待抢占延迟到期再升主。收到比自己优先级高的报文时,重置定时器。如果收到优先级和自己相同的报文,则重置定时器,不进一步比较IP地址。如果收到比自己优先级小的报文且该报文优先级不是0,丢弃报文,立刻成为Master;如果收到报文优先级是0,定时器时间设置为Skew_time(偏移时间)。当接收到MASTER_DOWN_TIMER定时器超时的消息时,Backup状态才会转为Master状态。当接收到接口的Shutdown消息时,转为Initialize状态 |
Master_Down_Interval定时器:Backup设备在该定时器超时后仍未收到通告报文,则会转换为Master状态。
计算公式如下:
Master_Down_Interval=(3 * Advertisement_Interval) + Skew_time(偏移时间)
Skew_Time=(256–Priority)/256
状态转换关系如下图:
![防火墙双机热备用到的三大协议VRRP、VGMP、HRP原理 图片[3]-防火墙双机热备用到的三大协议VRRP、VGMP、HRP原理-不念博客](https://img.mryunwei.com/uploads/2023/12/20231217010645832.jpg)
4.4 VRRP工作过程
VRRP的工作过程如下:
1)VRRP备份组中的设备根据优先级选举出Master。Master设备通过发送免费ARP报文,将虚拟MAC地址通知给与它连接的设备或者主机,从而承担报文转发任务。
2)Master设备周期性向备份组内所有Backup设备发送VRRP通告报文,以公布其配置信息(优先级等)和工作状况。
3)如果Master设备出现故障,VRRP备份组中的Backup设备将根据优先级重新选举新的Master。
4)VRRP备份组状态切换时,Master设备由一台设备切换为另外一台设备,新的Master设备会立即发送携带虚拟路由器的虚拟MAC地址和虚拟IP地址信息的免费ARP报文,刷新与它连接的主机或设备中的MAC表项,从而把用户流量引到新的Master设备上来,整个过程对用户完全透明。
5)原Master设备故障恢复时,若该设备为IP地址拥有者(优先级为255),将直接切换至Master状态。若该设备优先级小于255,将首先切换至Backup状态,且其优先级恢复为故障前配置的优先级。
6)Backup设备的优先级高于Master设备时,由Backup设备的工作方式(抢占方式和非抢占方式)决定是否重新选举Master。
- 抢占模式:在抢占模式下,如果
Backup设备的优先级比当前Master设备的优先级高,则主动将自己切换成Master。 - 非抢占模式:在非抢占模式下,只要
Master设备没有出现故障,Backup设备即使随后被配置了更高的优先级也不会成为Master设备。
4.5 VRRP配置方法
# 主备备份
创建VRRP备份组并给备份组配置虚拟IP地址:
vrrp vrid virtual-router-id virtual-ip virtual-address
配置备份组抢占延迟时间:
vrrp vrid virtual-router-id preempt-mode timer delay delay-value
4.6 VRRP缺省配置
| 参数 | 缺省值 |
|---|---|
设备在VRRP备份组中的优先级 |
100 |
| 抢占方式 | 立即抢占 |
| 通告报文发送间隔 | 1秒 |
发送免费ARP报文时间间隔 |
120秒 |
5. VGMP协议
为了解决多个VRRP备份组状态不一致的问题,华为防火墙引入VGMP(VRRP GroupManagement Protocol)来实现对VRRP备份组的统一管理,保证多个VRRP备份组状态的一致性。
5.1 概述
VGMP,即VRRP Group Management Protocol协议,是华为公司的私有协议。VGMP协议中定义了VGMP组,防火墙基于VGMP组实现设备主备状态管理。
5.2 VGMP工作原理
VGMP使用优先级来管理所有VRRP备份组,默认初始化优先级为45000(中低端设备)。
高端设备(USG9500 USG12000)
初始优先级与接口板(LPU)上的子卡(FPIC)个数和业务板(SPU)上的CPU个数有关,计算公式如下:
初始化优先级=45000+1000接口板上的子卡个数+2业务板上的CPU个数
其中:
Initial_Priority:初始优先级FPIC_Num:接口板上的子卡个数SPU_CPU_Num:业务板上的CPU个数
5.3 VGMP报文
![防火墙双机热备用到的三大协议VRRP、VGMP、HRP原理 图片[4]-防火墙双机热备用到的三大协议VRRP、VGMP、HRP原理-不念博客](https://img.mryunwei.com/uploads/2023/12/20231217010646769.jpg)
VGMP报文是在VRRP基础上修改,以下是各字段的详解:
1)type
type=1——普通的VRRP报文,type=2——代表VGMP。
2)VID
在标准的VRRP中使用不同的组号,在VGMP中等于0。
3)type2
取代优先级字段,type2={1、 2、 5}三种情况:
- 当
Type2=1时,报文封装成心跳链路探测报文,用于检测对端能否正常接收本段设备报文,以确定是否有心跳口可以使用。 - 当
Type2=5时,报文封装成一致性检查报文。 - 当
Type2=2时,VRRP进一步封装VGMP头,并根据VGMP报文头中的vType字段区分以下报文:
(1)
Hello心跳报文,用于探测对端的VGMP组是否处于工作状态。(2)
VGMP报文:两台防火墙间的VGMP组协商主备状态。(3)
HRP数据报文:用于主用设备数据备份,包括命令行备份和各种状态信息的备份。当vType为HRP报文时,还需要在VGMP报文之上承载HRP报文头。
5.4 VGMP状态机
VGMP的状态有:
- **
initialize**:初始状态 - **
stanby**:备份状态 - **
active**:活动状态 - **
A-to-S**:活动转备份状态 - **
S-to-A**:备份转活动状态
![防火墙双机热备用到的三大协议VRRP、VGMP、HRP原理 图片[5]-防火墙双机热备用到的三大协议VRRP、VGMP、HRP原理-不念博客](https://img.mryunwei.com/uploads/2023/12/20231217010647371.jpg)
启用双机热备功能后,各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组状态由Active to Standby切换成Standby。
6)对端VGMP组确认本端的VGMP组不需要进行状态切换或连续三次没有回应本端的VGMP请报文,则本端的VGMP组状态由A to S切换成Active。
7)本端VGMP组监控的接口故障恢复后,如果本端VGMP组优先级高于对端且配置了抢占功能,则本端VGMP组状态由Standby切换成S to A,并向对端发送VGMP请求报文。
8)本端VGMP组收到对端的VGMP请求报文,发现对端优先级高,则将状态由Active切换成Standby,并发送VGMP确认报文给对端设备的VGMP组。
9)本端VGMP组收到对端的VGMP确认报文,确认本端需要进行状态切换,则本端的VGMP组状态由StandbyToActive切换成Active,完成抢占过程。
10)对端VGMP组确认本端的VGMP组不需要进行状态切换或连续三次没有回应本端的VGMP请报文,则本端的VGMP组状态由StandbytoActiveby切换成Standby。
6.HRP协议
6.1概述
HRP是华为公司开发的一种私有协议,主要用于实现防火墙双机之间动态状态数据和关键配置命令实时备份。
HRP协议功能的实现借助了HRP报文,而HRP报文实际上是一种VGMP报文,承载在VGMP报文的Data区域。
通常而言,HRP协议以VGMP心跳线作为备份通道传输备份数据和命令。
6.2 HRP报文
![防火墙双机热备用到的三大协议VRRP、VGMP、HRP原理 图片[6]-防火墙双机热备用到的三大协议VRRP、VGMP、HRP原理-不念博客](https://img.mryunwei.com/uploads/2023/12/20231217010648275.jpg)
HRP 报文头中的关键参数解释如下:
Source Module ID和Source Sub Module ID表示本端防火墙哪些特性模块和子模块的数据需要备份。Dest Module ID和Dest Sub Module ID表示需要向对端防火墙的哪些特性模块和子模块备份数据。
6.3 HRP的备份方式
双机热备的HRP支持以自动备份、手工批量备份和快速备份三种方式。
- 自动备份功能缺省为开启状态,能够自动实时备份配置命令和周期性地备份状态信息,适用于各种双机热备组网。
- 手工批量备份需要管理员手工触发,每执行一次手工批量备份命令,主用设备就会立即同步一次配置命令和状态信息到备用设备。因此手工批量备份主要适用于主备设备之间配置不同步,需要手工同步的场景。
- 快速备份 适用于负载分担的工作方式,以应对报文来回路径不一致的场景。为了保证状态信息的及时同步,快速备份功能只是备份状态信息,不备份配置的命令。配置命令的备份由自动备份功能实现。
6.4 心跳报文
两台防火墙之间备份的数据是通过防火墙的心跳口发送和接收的,是通过心跳链路(备份通道)传输的。 心跳口必须是状态独立且具有 IP地址的接口,可以是物理接口,也可以是逻辑接口。
心跳接口有五种状态,如下表:
| 心跳接口状态 | 解释 |
|---|---|
invalid |
当本端防火墙上的心跳口配置错误时显示此状态(物理状态up,协议状态down),例如指定的心跳口为二层接口或未配置心跳接口的IP地址。 |
down |
当本端防火墙上的心跳口的物理与协议状态均为down时,则会显示此状态。 |
peerdown |
当本端防火墙上的心跳口的物理与协议状态均为up时,则心跳口会向对端对应的心跳口发送心跳链路探测报文。如果收不到对端响应的报文,那么防火墙会设置心跳接口状态为peerdown。 |
ready |
当本端防火墙上的心跳口的物理与协议状态均为up时,则心跳口会向对端对应的心跳口发送心跳链路探测报文。 |
running |
当本端防火墙有多个处于ready状态的心跳口时,防火墙会选择最先配置的心跳口形成心跳链路,并设置此心跳口的状态为running。状态为running的接口负责发送和HRP心跳报文、 HRP数据报文、 HRP一致性检查报文和VGMP报文。 |
6.5 HRP一致性检查报文
HRP一致性检查报文用于检测双机热备状态下的两台防火墙的双机热备配置是否一致以及策略配置是否相同。
HRP一致性检查的实现原理如下:
(hrp configuration check { all | audit-policy | auth-policy | hrp| nat-policy | security-policy | traffic-policy })
后,执行此命令的设备会发送一致性检查请求报文给对端,并且同时收集自身的相关模块的配置信息摘要。
display hrp configuration check