防火墙的双机热备功能提供一条专门的备份通道, 用于两台防火墙之间协商主备状态,以及会话等状态信息的备份。
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
报文字段含义如下:
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
状态转换关系如下图:
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
报文
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
**:备份转活动状态
启用双机热备功能后,各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
报文
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