防火墙双机热备---VRRP,VGMP,HRP(超详细)
双机热备技术-----VRRP,VGMP,HRP三个组成
注:与路由器VRRP有所不同,路由器是通过控制开销值控制数据包流通方向
防火墙双机热备:
1.主备备份模式
双机热备最大的特点就是防火墙提供了一条专门的备份通道(心跳线)用于防火墙之间传输备份会话表,Server-map表等重要信息和配置。并且心跳线也为防火墙提供协商通道。
1.主用设备---会处理业务和流量,并将设备上的会话表等信息以及配置信息通过心跳线实时同步给备用通道
2.备用设备---不会处理业务流量,只是通过心跳线,接收来自于主用设备的状态信息以及配置信息
一旦主用设备发生故障,会通过心跳线重新协商主备状态,如果进行切换,同时,业务流量也需要被上下行设备的路由信息引导到新的主用设备上,否则流量还是无法通讯
2.负载分担模式
在该情境下,两台防火墙均为主用设备(不同的pc),都需要建立会话,都需要处理业务流量,同时两台防火墙又都相互作为对方的备用设备,接收对方的配置和会话。

FW2为1.0的主设备,FW3为2.0的主,且两个防火墙互相备份
总结:双机热备为了提供网络的可靠性,避免网络的单点故障
VRRP和VGMP
回顾路由器vrrp:VRRP(虚拟路由冗余协议)_vrrp协议-CSDN博客

为何创建两个VRRP?
在双机热备场景中,因为需要上下行流量的统一切换,故需要创建两个VRRP组,分别加入上行接口和下行接口。从而控制上下行设备的流量控制转向。---且两个不同的VRRP组的Active设备必须为同一个防火墙。
切换原理:FW2会向配置了VRRP组的接口发送免费ARP报文,其中携带了备份组的IP和MAC,好让交换机或者路由器改变MAC表或者路由表,从而达到切换线路的目的
VRRP备份组之间是相互独立的,当一台设备出现多个VRRP备份组时,VRRP备份组之间的状态时无法同步的。
VGMP解决VRRP问题
VGMP----VRRP组管理协议---实现对VRRP备份的统一管理,保证多个VRRP组状态的一致性
如何实现一致性?
将防火墙上所有的VRRP备份组都加入到同一个VGMP组中,由VGMP组来集中监控并管理所有的VRRP备份组状态。如果VGMP检测到其中一个VRRP备份组状态发生变化,则VGMP会控制组中所有VRRP组统一进行状态切换,保证一致性。
VGMP存在状态和优先级两个属性。并且有三条运行原则
VGMP的状态决定了组内VRRP备份组的状态,也决定了防火墙的主备状态
VGMP组的状态是由两个防火墙的VGNP组通过比较优先级来决定的
优先级高的为Active,低的为Standby
VGMP组会根据组内VRRP备份组的状态变化来更新自己的优先级
每个VRRP备份组的状态切换为初始化状态,VGMP组的优先级降低2
VGMP实现过程
当FW1接口发生故障时,VGMP组控制VRRP备份组状态统一切换过程
1.FW1G1/0/3接口故障,FW1上的VRRP备份组2发生状态切换(由主----初始化)
2.FW1的VGMP组感知到这一变化后,会降低自身的优先级,然后与FW2的VGMP组比较优先级,重新协商主备状态
3.协商后,FW1的VGMP状态变为Standby,FW2的VGMP组状态变为Active
4.同时,由于VGMP组的状态决定了组内的VRRP备份组状态,所有FW1和FW2身上各自的VRRP备份组1和备份组2都会进行状态切换
5.FW2成为Active状态,并从上下游分别发送免费ARP报文,更新设备的MAC地址表
VGMP报文结构
在防火墙中,优先级信息会通过VGMP报文传递,是对VRRP报文进行修改和扩展

1.标准的VRRP报文的“TYPE”字段恒定为1,而VGMP增加了2;
在VGMP 中,1代表标准的VRRP报文,2代表VGMP报文
2.在标准的VGMP报文中,“virtual Rtr ID",携带的是VRRP备份组的组ID,即VRID。
在VGMP中,恒定为0
3.去掉了VRRP的IP地址字段
4.标准VRRP报文的优先级字段,在VGMP中被修改为”TYPE2"字段
TYPE2=1,则报文为心跳链路探测报文
TYPE2=5,则报文为一致性检查报文。 ----检查双机热备状态下,两台防火墙的是否配置了相同的策略
TYPE2=2,VRRP报文才会进一步封装VGMP报文头。----该报文才能被认为是真正的VGMP报文。
会根据VGMP中的“vType”字段继续被分为三种不同的报文

VGMP组需要携带上VGMP组优先级信息,才可以代替VRRP进行管理
类型(mode) --- 代表报文是请求报文,还是应答报文
VGMP-ID --- 代表VGMP组为Active还是Standby组
优先级 ---代表VGMP组的优先级
在双机热备中,除了VRRP标准报文以外,其他所有报文的发送接收,都是基于心跳线完成的
标准的VRRP协议是一个跨四层封装协议,即没有传输层封装,直接IP封装。
而VGMP继承了VRRP的特点,但是也增加了UDP进行封装的模式。
IP协议封装 --- 组播报文---只能在心跳线上传输
数据链路层+ IP协议封装+ VRRP协议+ VGMP协议+ VGMP数据
不能跨网段传输,不受安全策略控制(安全策略就对单播有效)
UDP封装 --- 单播报文
数据链路层+IP协议封装+ UDP封装+ VRRP协议+ VGMP协议+ VGMP数据
只要路由可达,就可以跨越网段传输,但是收到安全策略控制。
端口号=18514
VGMP工作过程
VGMP组缺省情况

每台防火墙提供两个VGMP组,默认情况下,Active组的优先级为65001,状态为Active;Atandby组优先级为65000,状态为Standby。
主备备份双机热备状态形成过程

接口故障过程



上图表示的是主用设备的接口的发生过程变化情况,而当主用设备发生故障,主用设备的VGMP组将不会发送HRP心跳报文。如果备用设备的VGMP组连续三次收不到,则认定对端故障,从而将 自身切换为主用状态。
当原主用设备故障恢复后,如果配置了抢占功能,那么原主重新成为主用设备,如果没有配置,则原主保持在备份状态。----缺省情况下,主动抢占功能开启,抢占延迟时间为60秒。
接口故障恢复


负载分担双机热备状态形成过程

接口故障

VGMP总结
1. 故障监控 --- VGMP组能够监控VRRP备份组状态变化。
2. 状态切换 --- VGMP组感知到VRRP备份组状态变化后,会调整自己的优先级,并与对端的VGMP组 重新协商主备状态
3. 流量引导 --- 两个VGMP组主备状态建立或切换后,会强制组内的VRRP备份组统一进行状态切换, 然后由状态为Active的VRRP备份组发送免费的ARP报文来引导流量
仅仅适用于防火墙上行或下行设备为交换机的场景
VGMP特殊场景
防火墙连接路由器场景

故障监控
VGMP组使用的 故障监控方式,是直连监控接口状态。 --- 就是直接将接口加入到VGMP组中,当 VGMP组中的接口故障,VGMP可以直接感知到变化,从而降低自己的优先级。
如果是负载分担方式的双机热备,则需要在每个业务接口上执行特殊命令,将业务接口分别加入到 Active和Standby组中。
流量引导
VGMP的流量引导功能,将流量自动引导到主用设备---手工将备用设备所在链路的OSPF开销值改大。VGMP具备根据状态自动调整OSPF的cost数值。 --- 启用流量引导功能后,如果防火墙上存在状态为 Active的VGMP组,则防火墙会正常对外发布路由;如果防火墙上VGMP组状态为Standby,则防火墙 在发布路由时,将Cost增加65500
防火墙透明接入,连接交换机场景

故障监控
防火墙接口出现在二层,没有IP地址。故障监控方式为通过VLAN监控接口状态。--- 将二层业 务接口加入VLAN,VGMP监控VLAN。当VGMP中的接口故障时,VGMP组会通过VLAN感知到接口状态 变化,从而降低自身优先级
流量引导
当VGMP组状态为Active时,组内的VLAN能够转发流量。当VGMP组状态为Standby时,组内 VLAN被禁用,不能转发流量。
防火墙透明接入,连接路由器场景

故障监控和流量引导与上一个相同,该组网只支持负载分担方式的双机热备,不支持主备备份场景。---原因:如果工作在主备备份,那么备份设备的VLAN会被禁用,导致上下行 路由器无法通讯,无法建立OSPF邻居
VGMP组监控技术
VGMP可以监控自己本身的接口---物理接口,VRRP接口等。
但是VGMP还可以监控远端接口。 --- VGMP监控远端接口的方式,只适用于防火墙业务接口工作在 三层时;因为此时接口才能存在IP地址,才可以与远端设备发送IP-link或BFD的探测报文。
总结
每当VGMP组监控的一个接口故障时,无论是直接监控还是简介监控,无论监控的是本地还是远 端,VGMP优先级都是降低2。
只有主用设备才会将流量引导到本设备上,备用设备则是想尽办法拒绝流量引导到本设备。

HRP(双机热备协议)协议
HRP数据报文、HRP心跳报文、HRP一致性检查报文。
HRP协议功能
动态数据备份---实时备份防火墙的会话表,Server-map表,黑白名单,nat
关键配置命名备份---display;reset;debugging不支持备份;网络基本配置如接口地址和路由不能够备份,这些要在双机热备建立前配置完成。
HRP概述
在主备组网中,由主设备将状态数据和配置命名同步给备份设备
而在负载分担组网中,状态数据双方均会想对端同步。但是配置命令,不可以。---原因,如果允许两台主用设备之间相互配置命令,可能会造成两台设备命名相互冲突。--引入了“配置主设备”和“配置从设备”。---在负载分担组网中,发送备份配置命令的防火墙为配置主设备(HRP_M),接收配置命令的防火墙成为配置从设备(HRP_S)---在负载分担组网中,谁 最先建立双机热备状态的防火墙会成为配置主设备;即最先启动双机热备功能的
HRP备份方式
1.自动备份 --- 默认开启的,能够自动 实时备份配置命令和 周期性备份状态信息。
主用设备每执行一次可备份命令,该命令都会立即被同步到备用设备。注意:对于这些可备份 命令,备用设备不能配置,只能等到主用设备的同步。
对于不可备份命令---分别配置
对于状态信息,周期性备份(部分状态信息)。
2.手工批量备份 --- 需要管理员手工触发的,每执行一次手工批量备份命令,主用设备就会立即同步一 次配置命令和状态信息。
3.快速备份 --- 仅适用于负载分担场景的,用来 应对报文来回路径不一致的场景。
主要为了保证状态信息的及时同步,快速备份功能仅仅备份状态信息,是为了弥补自动备份的 时差问题。
如果启动快速备份功能,主设备将 实时进行状态信息备份。
心跳链路探测报文
心跳口必须是状态独立且独立具有IP地址的接口,且该接口不要参与到其他协议的工作过程中,以免产生不必要的影响。
HRP一致性检查报文
该报文是用于检测双机热备状态下两台防火墙的双机热备配置是否一致,以及策略配置是否相同 的
相关文章:
防火墙双机热备---VRRP,VGMP,HRP(超详细)
双机热备技术-----VRRP,VGMP,HRP三个组成 注:与路由器VRRP有所不同,路由器是通过控制开销值控制数据包流通方向 防火墙双机热备: 1.主备备份模式 双机热备最大的特点就是防火墙提供了一条专门的备份通道(心…...
MQTT实现智能家居------4、在Linux上运行MQTT
进入主目录,创建一个MQTT文件夹 cd ~ mkdir MQTT 用FileZilla连接开发板,将我发布的压缩包解压以后放进MQTT 安装cmake sudo apt-get install cmake g编译 & 运行 echo sudo apt-get update >> build.sh #向build.sh文件写入内容 chmod…...
VMware建立linux虚拟机
本文适用于初学者,帮助初学者学习如何创建虚拟机,了解在创建过程中各个选项的含义。 环境如下: CentOS版本: CentOS 7.9(2009) 软件: VMware Workstation 17 Pro 17.5.0 build-22583795 1.配…...
大模型文集开篇稿
2023年,我国AI大模型行业规模已达到147亿元人民币(前瞻产业研究院 数据)。AI大模型的行业应用及技术进步能有效提升各行业生产要素的产出效率并提高了数据要素在生产要素组合中的地位。供给方面,当前AI大模型企业主要通过深化通用…...
python pickle模块
pickle 是 Python 的一个标准模块,它实现了基本的二进制协议,用于对象的序列化和反序列化。序列化是指将对象转换为字节流的过程,这样对象就可以被保存到文件中或通过网络传输。反序列化是指将字节流转换回对象的过程。 使用 pickle 序列化对…...
第16届蓝桥杯模拟赛3 python组个人题解
第16届蓝桥杯模拟赛3 python组 思路和答案不保证正确 1.填空 如果一个数 p 是个质数,同时又是整数 a 的约数,则 p 称为 a 的一个质因数。 请问, 2024 的最大的质因数是多少? 因为是填空题,所以直接枚举2023~2 &am…...
企业知识管理战略整合新路径
跨部门知识协同机制 现代企业知识管理的核心挑战在于突破组织孤岛效应,跨部门知识协同机制的构建需依托结构化流程与智能化工具的融合。通过建立标准化知识元数据体系,企业可实现文档分类、版本控制及权限管理的统一规范,其中Baklib作为云端…...
GO 快速升级Go版本
由于底层依赖升级了,那我们也要跟着升,go老版本已经不足满足需求了,必须要将版本升级到1.22.0以上 查看当前Go版本 命令查看go版本 go version [rootlocalhost local]# go version go version go1.21.4 linux/amd64 [rootlocalhost local]# …...
RBAC授权
4 RBAC授权 4.1 什么是RBAC 在Kubernetes中,所有资源对象都是通过API进行操作,他们保存在etcd里。而对etcd的操作我们需要通过访问kube-apiserver来实现,上面的Service Account其实就是APIServer的认证过程,而授权的机制是通过RBA…...
搜广推校招面经三十一
vivo策略算法 一、机器学习中 L1 和 L2 正则化的原理 见【搜广推校招面经二十五】 L1 正则化将某些特征权重置0实现模型简化,而 L2 正则化主要通过平滑权重来实现模型简化。 1.1. 正则化的原理 正则化的核心思想是在损失函数中加入一个惩罚项(Regula…...
【JavaWeb13】了解ES6的核心特性,对于提高JavaScript编程效率有哪些潜在影响?
文章目录 🌍一. ES6 新特性❄️1. ES6 基本介绍❄️2. 基本使用2.1 let 声明变量2.2 const 声明常量/只读变量2.3 解构赋值2.4 模板字符串2.5 对象拓展运算符2.6 箭头函数 🌍二. Promise❄️1. 基本使用❄️2. 如何解决回调地狱问题2.1回调地狱问题2.2 使…...
C++知识整理day9——继承(基类与派生类之间的转换、派生类的默认成员函数、多继承问题)
文章目录 1.继承的概念和定义2.基类与派生类之间的转换3.继承中的作用域4.派生类的默认成员函数5.实现一个不能被继承的类6.继承与友元7.继承与静态成员8.多继承和菱形继承问题8.1 继承分类及菱形继承8.2 虚继承 1.继承的概念和定义 概念: 继承(inheritance)机制是⾯…...
pyautogui库的screenshot()函数
# 方法一 screenshot pyautogui.screenshot() screenshot.save("screenshot.png")# 方法二 # 获取屏幕分辨率 screen_width, screen_height pyautogui.size()# 截取桌面屏幕 screenshot pyautogui.screenshot(region(0, 0, screen_width, screen_height)) screens…...
App测试--逍遥模拟器抓包问题
一、环境 逍遥模拟器、burp、adb、openssl(kali)。 二、配置 1.burp证书转换 下载证书 将burp证书复制进kali,使用kali的openssl(自带),执行以下命令。 openssl x509 -inform der -in cacert.der -out burp.pem openssl x509 -subject_hash_old -in…...
STM32 HAL库0.96寸OLED显示液晶屏
本文介绍了使用STM32 HAL库通过I2C协议驱动0.96寸OLED显示屏的方法。首先概述了OLED的基本特性和应用,然后详细讲解了汉字点阵生成的方法,并提供了完整的代码示例,包括初始化、清屏、字符串显示和自定义汉字显示函数。这些代码实现了在STM32F…...
动态表头导出EasyExcel
在 Spring Boot 中结合 EasyExcel 实现动态表头导出(无实体类,表头和字段(前端传表名,字段值动态查询,返回List<Map<String,Object>>)由前端传递)可以通过以下步骤实现。以下是完整…...
【前端】react+ts 轮播图的实现
一、场景描述 在很多网站的页面中都有轮播图,所以我想利用react.js和ts实现一个轮播图。自动轮播图已经在前面实现过了,如:https://blog.csdn.net/weixin_43872912/article/details/145622444?sharetypeblogdetail&sharerId145622444&a…...
清华大学出品DeepSeek 四部教程全收录(附下载包),清华deepseek文档下载地址
文章目录 前言一、清华大学deepseek教程(四部)二、清华大学deepseek教程全集1.清华大学第一版《DeepSeek:从入门到精通》2.清华大学第二版《DeepSeek赋能职场》3.清华大学第三版《普通人如何抓住DeepSeek红利》4.清华大学第四版:D…...
Android 布局系列(三):RelativeLayout 使用指南
引言 在 Android 开发中,布局管理是构建用户界面的核心。RelativeLayout 曾经是 Android 中非常流行的一种布局方式,广泛应用于各种项目中。它通过相对位置关系组织视图元素,使得我们可以根据父容器或者其他视图的位置来灵活调整子视图的布局…...
ubuntu20.04音频aplay调试
1、使用指定声卡,aplay 播放命令 aplay -D plughw:1,0 test2.wav2、 录音 arecord -Dhw:1,0 -d 10 -f cd -r 44100 -c 2 -t wav test.wav3、各个参数含义 -D 指定声卡编号 plughw:0,0 //0,0代表card0,device0,可以通过arecord -l获取 -f 录音格式 S16_LE…...
51c自动驾驶~合集58
我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留,CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制(CCA-Attention),…...
从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路
进入2025年以来,尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断,但全球市场热度依然高涨,入局者持续增加。 以国内市场为例,天眼查专业版数据显示,截至5月底,我国现存在业、存续状态的机器人相关企…...
Golang dig框架与GraphQL的完美结合
将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用,可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器,能够帮助开发者更好地管理复杂的依赖关系,而 GraphQL 则是一种用于 API 的查询语言,能够提…...
屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!
5月28日,中天合创屋面分布式光伏发电项目顺利并网发电,该项目位于内蒙古自治区鄂尔多斯市乌审旗,项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站,总装机容量为9.96MWp。 项目投运后,每年可节约标煤3670…...
C++ 基础特性深度解析
目录 引言 一、命名空间(namespace) C 中的命名空间 与 C 语言的对比 二、缺省参数 C 中的缺省参数 与 C 语言的对比 三、引用(reference) C 中的引用 与 C 语言的对比 四、inline(内联函数…...
ETLCloud可能遇到的问题有哪些?常见坑位解析
数据集成平台ETLCloud,主要用于支持数据的抽取(Extract)、转换(Transform)和加载(Load)过程。提供了一个简洁直观的界面,以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...
【C语言练习】080. 使用C语言实现简单的数据库操作
080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...
NLP学习路线图(二十三):长短期记忆网络(LSTM)
在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...
项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)
Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败,具体原因是客户端发送了密码认证请求,但Redis服务器未设置密码 1.为Redis设置密码(匹配客户端配置) 步骤: 1).修…...
华硕a豆14 Air香氛版,美学与科技的馨香融合
在快节奏的现代生活中,我们渴望一个能激发创想、愉悦感官的工作与生活伙伴,它不仅是冰冷的科技工具,更能触动我们内心深处的细腻情感。正是在这样的期许下,华硕a豆14 Air香氛版翩然而至,它以一种前所未有的方式&#x…...
