华为H3C实战 | 第7章 VRRP 网关冗余
📚 本系列共 43 篇(第 7 / 43 篇) · 第一卷 基础篇 —— 交换机的骨架
← 上一篇:第 6 章 三层接口与网关 下一篇:第 8 章 DHCP 服务配置 →
本章导读:一台核心交换机挂了,全楼断网——VRRP 解决的就是这个"单点故障"。本章讲清网关冗余的原理、两家厂商的配置,以及"网关活着但上不了网"这类隐蔽故障怎么查。
本章结构:
- 7.1 功能原理与业务场景 —— VRRP 组、虚拟 IP/MAC(
00-00-5E-00-01-{VRID})、Master 选举三条规则、组播224.0.0.18/ 协议号 112 / 缺省 1 秒通告,以及 7.1.4 划清边界:VRRP 是网关冗余,不是设备冗余 - 7.2 华为设备配置详解 —— 双机主备完整模板、带上行链路联动的模板(
track interface ... reduced 30,本章最重要的一段)、抢占延迟怎么配,以及三个取舍:主备 vs 负载分担、盯接口 vs BFD、认证开不开 - 7.3 H3C 设备配置详解 —— H3C 四处关键差异:通告间隔单位是厘秒(100 厘秒=1 秒)、监视接口要先建 Track 项再引用(两步配)、
preempt-mode timer delay两家写法反而一致 - 7.4 命令对照表 —— 两家并排
- 7.5 配置验证 ——
display vrrp看 State/优先级,怎么确认切换真的生效 - 7.6 排错与故障树 —— 三种故障:双 Master(最危险)、Backup 不接管、切换慢
- 7.7 新手踩坑 —— 让虚拟 IP 等于某台接口 IP(IP Owner 优先级 255)的误用
- 7.8 本章小结 —— 要点清单 + 自测题
重点提示:第一次配 VRRP 直接看 7.2,别漏了 7.2.3 的上行链路联动——只盯着接口 up/down 的话,上行断了自己还是 Master,下面照样丢包。配好后双 Master 或切换慢,看 7.6。H3C 侧 vrrp vrid 1 timer advertise 1 是 1 厘秒而不是 1 秒,这条抄错会疯狂发包。
关联章节:网关基础见第 6 章;堆叠/IRF 之后的双机网关配合见第 5 章;防火墙、AC 的双机热备用的是 VRRP 的同一套思路(第 28、23 章);跨网段的路径是否真的存在,见第 10 章。
7.1 功能原理与业务场景
7.1.1 这功能是干嘛的(通俗版)
一栋写字楼里有两部电梯,但大楼的"大门"只有一个。如果这个大门坏了或者锁上了,楼里所有人当天都出不去——不管你家里有多少设施、电梯多先进,出口只有一个就是最大的单点故障。
企业网的网关就是这个"大门"。所有电脑要上网、要访问服务器,报文都得先交给网关,再由网关转出去。如果园区里只有一台核心交换机做网关,它一宕机、一重启、一换配置,下面几百上千台电脑就集体断网——哪怕你还有另一台核心交换机闲着,只要网关地址指着那台挂掉的设备,它也帮不上忙。
虚拟路由器冗余协议(VRRP,Virtual Router Redundancy Protocol)[12] 解决的就是这个问题:把两台设备的网关能力"合并"成一个虚拟网关,两台设备一主一备,主的一挂,备的在一两秒内顶上,而电脑上的网关地址始终是同一个虚拟 IP,完全不用改。
这么一说就清楚了:VRRP 是给"大门"加了个备用门,而且两个门共用同一个门牌号。
7.1.2 在网络里怎么落地(设计视角)
VRRP 的核心思想是把一台"虚拟路由器"拆到两台真实设备上去实现:
┌─────────────────────────────┐
PC 们 │ 虚拟路由器 VRID=1 │
网关指向 192.168.10.254 │ 虚拟 IP : 192.168.10.254 │ ← 这个地址不变
│ 虚拟 MAC : 0000-5e00-0101 │
└──────────┬──────────────────┘
│ 由 Master 实际承担
┌───────────────┴───────────────┐
┌───────┴────────┐ ┌───────┴────────┐
│ Core-A │ │ Core-B │
│ 192.168.10.252│ │ 192.168.10.253│
│ 优先级 120 │ ← VRRP 报文 →│ 优先级 100 │
│ 状态: Master │ 每 1 秒一次 │ 状态: Backup │
└───────┬────────┘ └───────┬────────┘
│ │
上行链路 上行链路
几个核心概念一次讲清:
| 概念 | 含义 | 新手要记住的点 |
|---|---|---|
| VRRP 组(VRID) | 一组参与冗余的设备,用组号区分,取值 1~255 | 两台设备的 VRID 必须一致否则互相不认 |
| 虚拟 IP(VIP) | 电脑上配的网关地址,由 Master 响应 ARP | 必须是网关网段内的合法主机地址 |
| 虚拟 MAC | 00-00-5E-00-01-{VRID},VRID 是 1 就末字节是 01 |
平台位是 VRRP 组织唯一标识,末字节随 VRID 变 |
| Master | 实际承担转发的设备,响应虚拟 MAC 的 ARP | 只有 Master 会回 ARP、会转发 |
| Backup | 待命设备,只听 Master 的通告 | Backup 平时不转发,但保活 |
| 优先级 | 决定谁能当 Master,缺省 100,可配 1~254 | 数值越大越优先,和 OSPF cost 相反 |
| 抢占 | Master 挂了 Backup 顶上后,原 Master 恢复要不要抢回来 | 缺省开、延迟 0,也就是"一恢复就抢" |
协议报文长什么样。VRRP Master 周期性发通告报文(Advertisement),告诉同一组里的 Backup"我还活着"。三个必须记住的数字:
| 参数 | 值 | 说明 |
|---|---|---|
| 组播地址 | 224.0.0.18 |
VRRP 专用组播,不是全部路由器组播 224.0.0.2 |
| IP 协议号 | 112 |
直接封装在 IP 里,不走 TCP/UDP |
| 缺省通告间隔 | 1 秒 |
H3C 官方表述为 100 厘秒;华为缺省 1 秒 |
Backup 如果在 3 × 通告间隔 + 抢占延迟 时间内没收到 Master 的通告,就认为 Master 挂了,自己接管。
Master 选举规则,三条按顺序比:
- 先比优先级,大者胜(缺省都是 100 时,大家都平等)。
- 优先级相同,比接口 IP 地址,大者胜。这一条经常让人意外——接口 IP 大一点居然也能当 Master。
- IP 地址拥有者(IP Owner)优先级固定 255。所谓 IP 拥有者,是指某台设备的接口真实 IP 和虚拟 IP 完全一样。这种情况只在下文 7.7 会讲的一个特殊场景里用,正常配主备时不要让虚拟 IP 等于任何一台设备的接口 IP。
最重要的一句话,很多教程不强调:
VRRP 是「网关」冗余,不是「设备」冗余。
它保证的是"网关这一个功能不中断"——虚拟 IP 一直有人响应、报文一直有人转发。它不保证设备上的其他功能也冗余:如果这台设备同时还是 DHCP 服务器、还跑着认证、还做着 NAT、还挂着 AP 管理,那它一挂,这些功能照样全断,VRRP 一点忙都帮不上。
一句话对比:
| 你以为 VRRP 能解决的 | VRRP 实际能解决的 |
|---|---|
| 核心交换机挂了,网络照常 | 只有"网关转发"这一项照常 |
| DHCP 不断、认证不断、NAT 不断 | ❌ 这些要靠别的机制(DHCP 集群、认证服务器冗余、防火墙双机) |
| 整台设备做热备 | ❌ 那是"设备级冗余",VRRP 只是"角色级冗余" |
7.1.3 一个典型园区网里 VRRP 放在哪
光讲概念不够,得知道这东西在真实组网里落在哪个位置。下面是一个两层园区网的典型落点:
[ 出口路由器 / 防火墙 ]
|
+---------------+---------------+
| |
[核心 Core-A] [核心 Core-B]
Vlanif10 192.168.10.252 Vlanif10 192.168.10.253
VRRP Master(优先级 120) VRRP Backup(优先级 100)
| (心跳:同 VLAN 二层互通) |
+---------------+---------------+
|
[ 接入交换机 ]
|
PC 网关 = 192.168.10.254
(这是虚拟 IP,不指向任何一台真实设备)
三个要点:
第一,VRRP 配在"网关所在的那一层"。PC 的网关是三层接口,所以 VRRP 配在核心交换机的 Vlanif 上;如果网关在路由器上,就配在路由器的三层接口上。VRRP 不会跑在二层口上(没有 IP 就没有网关可冗余)。
第二,两台设备之间必须二层互通。VRRP 报文是组播、只在一段内传播,所以 Core-A 和 Core-B 的 Vlanif10 必须在同一个 VLAN、同一个广播域里,中间只能经过二层设备。如果中间隔了防火墙或三层路由,报文过不去,两台设备互相听不到对方,结果就是双 Master——这是新手组网最容易埋的坑。
第三,PC 侧什么都不用改。PC 的网关就填虚拟 IP 192.168.10.254,它既不是 A 的地址也不是 B 的地址。这就是 VRRP 最大的实用价值:冗余对终端完全透明。如果没有 VRRP,你只能让一半 PC 指向 A、一半指向 B,挂了要人工改网关——那根本不叫冗余。
为什么 VRRP 不用给 PC 装客户端软件? 因为 PC 只认"网关 IP 对应的 MAC 地址"这一件事。VRRP 让 Master 用虚拟 MAC 00-00-5E-00-01-01 去响应虚拟 IP 的 ARP 请求,PC 学到的就是这个虚拟 MAC。Master 换成 Backup 时,新 Master 继续用同一个虚拟 MAC 回应,PC 甚至不用重新学 ARP——这就是为什么切换能在 1~3 秒内完成,PC 几乎无感。
反过来,如果两台设备都用自己的真实 MAC(比如某些不做虚拟 MAC 的实现),切换时 PC 必须重新 ARP、交换机必须重新学 MAC,切换就会慢很多、丢包更多。虚拟 MAC 是 VRRP 快速切换的关键设计,这一点很多人不知道原理。
7.1.4 VRRP 解决不了的问题(边界要划清)
写工程文档最怕只讲"它能干什么",不讲"它不能干什么"。VRRP 的边界很清楚:
| 场景 | VRRP 管不管 | 该用什么 |
|---|---|---|
| 网关设备宕机,用户断网 | ✅ 管 | VRRP |
| 网关设备上行链路断了 | ⚠️ 需配合 track | VRRP + 接口/BFD 检测 |
| 网关设备重启期间的用户体验 | ✅ 管(丢包几秒) | VRRP(配合抢占延迟更平滑) |
| DHCP 服务器挂了 | ❌ 不管 | DHCP 冗余 / 双服务器 |
| 认证服务器(RADIUS)挂了 | ❌ 不管 | RADIUS 服务器集群 |
| 两台核心之间的链路全断了 | ❌ 不管 | 链路聚合 / 双归 / 堆叠 |
| 设备配置错误导致转发异常 | ❌ 不管 | 配置审计、双人复核 |
| 设备软件 bug 导致进程卡死 | ❌ 不管 | 硬件/软件冗余、GR/NSR |
一句话:VRRP 保的是"网关这个角色有人当",不保"这台设备整体可用",也不保"设备之间的链路可靠"。
真正的高可用是"多层冗余叠起来":链路层用聚合和双归、设备层用堆叠或双机、网关层用 VRRP、服务层用集群。VRRP 只是其中一层,把它当成万能药是很多项目翻车的开始。
适用版本:华为 VRP V200R019 及以上(S5700/AR6000 系列);H3C Comware V7(R2610 及以上)。
7.2 华为设备配置详解
7.2.1 命令行基础速览(本章会用到的那几条)
华为的 VRRP 命令全部在接口视图下配(Vlanif 或三层物理口的接口视图),这点和 OSPF 那种"进进程视图"的写法不同。本章用到的命令:
| 用途 | 华为命令 | 参数要点 |
|---|---|---|
| 创建 VRRP 组并配虚拟 IP | vrrp vrid <VRID> virtual-ip <虚拟IP> |
必配项,其他参数都依赖它 |
| 配优先级 | vrrp vrid <VRID> priority <1~254> |
缺省 100,数值大者优先 |
| 关闭抢占 | vrrp vrid <VRID> preempt-mode disable |
关掉后优先级高也不抢 |
| 配抢占延迟 | vrrp vrid <VRID> preempt-mode timer delay <0~3600> |
单位秒,缺省 0 |
| 监视上行接口 | vrrp vrid <VRID> track interface <接口> [ increased <值> | reduced <值> ] |
接口 down 时调整优先级 |
| 监视 BFD 会话 | vrrp vrid <VRID> track bfd-session { <会话号> | session-name <名字> } [...] |
配合 BFD 做快速检测 |
| 认证 | vrrp vrid <VRID> authentication-mode { simple {...} | md5 <密钥> } |
两端必须一致 |
| 改通告间隔 | vrrp vrid <VRID> timer advertise <间隔> |
单位秒,缺省 1 |
7.2.2 完整配置模板:双核心交换机主备
场景:两台 S5735-L24T4S-A1 核心交换机 Core-A、Core-B 做网关冗余,用户网段 192.168.10.0/24,虚拟网关 IP 定为 192.168.10.254,希望 Core-A 平时当 Master。
先配 Core-A(主用,优先级调高):
# 进入系统视图
system-view
sysname HUAWEI-CoreA
# 用户网关接口
vlan 10
quit
interface Vlanif 10
ip address 192.168.10.252 255.255.255.0
# 创建 VRRP 组 1,虚拟 IP 就是电脑上要填的网关地址
vrrp vrid 1 virtual-ip 192.168.10.254
# 优先级调到 120(缺省 100),让它优先当 Master
vrrp vrid 1 priority 120
# 抢占延迟给 20 秒:本机恢复后不要立刻抢回,等业务稳定
vrrp vrid 1 preempt-mode timer delay 20
quit
save
再配 Core-B(备用,保持缺省优先级):
# 进入系统视图
system-view
sysname HUAWEI-CoreB
# 用户网关接口,注意接口 IP 与 A 不同,虚拟 IP 与 A 相同
vlan 10
quit
interface Vlanif 10
ip address 192.168.10.253 255.255.255.0
# 同一个 VRID、同一个虚拟 IP
vrrp vrid 1 virtual-ip 192.168.10.254
# 优先级保持缺省 100,比 A 低,自然当 Backup
# 抢占保持缺省(开启、延迟 0)——官方建议 Backup 立即抢占
quit
save
7.2.3 带上行链路联动的完整模板(最重要的一段)
上面那个模板有个致命缺陷:如果 Core-A 自己的上行链路断了,但它和 Core-B 之间的心跳还通,它会一直以为自己健康、继续当 Master——结果就是网关活着,但所有流量到了 Core-A 出不去,全网卡死。
解决办法是监视上行链路,链路一断就自动降优先级,让 Backup 抢过去。先把两台设备的完整配置列出来:
# ===== Core-A:主用 + 上行链路检测 =====
interface Vlanif 10
ip address 192.168.10.252 255.255.255.0
vrrp vrid 1 virtual-ip 192.168.10.254
vrrp vrid 1 priority 120
vrrp vrid 1 preempt-mode timer delay 20
# 监视朝上游的接口:一旦它 down,优先级降低 30(120 → 90,低于 B 的 100)
vrrp vrid 1 track interface GigabitEthernet0/0/24 reduced 30
quit
# ===== Core-B:备用 + 上行链路检测 =====
interface Vlanif 10
ip address 192.168.10.253 255.255.255.0
vrrp vrid 1 virtual-ip 192.168.10.254
# B 自身也要盯着自己的上行口:它当了 Master 之后如果上行也断,就该降级让出去
vrrp vrid 1 track interface GigabitEthernet0/0/24 reduced 30
quit
reduced 与 increased 的区别:reduced 是"被监视对象出问题时降低优先级",这是主用设备做链路检测的标准用法;increased 是"被监视对象出问题时提高优先级",用在 Backup 上——比如"只要我的上行链路是好的,我就有资格抢 Master"。两个方向都可以,但绝大多数场景用 reduced,因为它语义直接:我这路断了,我就该让位。
如果用的是 BFD 而不是直接盯接口(能检测到链路"物理 up 但实际不通"的情况),换成:
# 用 BFD 会话做检测:BFD 会话 down 时降优先级
vrrp vrid 1 track bfd-session 1 reduced 30
7.2.4 逐行讲解
| 命令 | 作用 | 新手常填错的地方 |
|---|---|---|
vrrp vrid 1 virtual-ip 192.168.10.254 |
建组 + 配虚拟 IP | 虚拟 IP 必须与接口 IP 同网段;不同网段能配置成功但组会停在 Initialize,VRRP 不起作用 |
vrrp vrid 1 priority 120 |
调优先级 | 范围是 1~254,255 不能手配(保留给 IP 拥有者);填 255 直接报错 |
vrrp vrid 1 preempt-mode timer delay 20 |
配抢占延迟 | 单位是秒,范围 0~3600;这是"我来抢别人时等多久",不是"别人抢我时等多久" |
vrrp vrid 1 preempt-mode disable |
关抢占 | 关掉后,优先级再高也不会抢,只有等 Master 挂掉才顶上 |
vrrp vrid 1 track interface ... reduced 30 |
监视接口 | 两端接口名要写自己设备上真实的上行口,别照抄 |
vrrp vrid 1 authentication-mode md5 <密钥> |
认证 | 两端密钥必须完全一致,不一致会双 Master |
7.2.5 抢占延迟该怎么配(官方原文说要领)
这一段是全章最值得记住的,很多教程只讲"抢占延迟设多少秒",不讲为什么两端要配得不一样。
华为官方原文给出的建议是:
「在配置 VRRP 备份组内各设备的延迟方式时,建议将 Backup 设备配置为立即抢占,即不延迟(延迟时间为 0),而将 Master 设备配置为抢占,并且配置一定的延迟时间。当 VRRP 备份组的 Master 故障恢复收到协议报文,但业务配置量较大时,Master 设备的 VRRP 转发表下发较慢,立即回切会导致 Master 设备流量丢失。」
拆开理解这段话,三层意思:
- Backup 要立即抢占(延迟 0)——它平时闲着,一旦发现自己是最高优先级,应该马上顶上,别犹豫。
- Master 要延迟抢占(比如 15~20 秒)——原 Master 恢复了,它确实优先级更高,但它刚开机、转发表还没下发完、各种协议还没收敛。这时候如果它立刻抢回 Master,流量会涌到一台"还没准备好的设备"上,结果就是丢包。
- 所以两端策略是反的:Backup 急、Master 慢。这个"反"字,是这段话的精髓。
另一份华为资料给出了更具体的数值建议:
「建议将 Backup 配置为立即抢占,即不延迟(延迟时间为 0),而将 Master 配置为延时抢占,并且配置 15 秒以上的延迟时间。这样配置的目的是为了在网络环境不稳定时,在上下行链路的状态恢复一致性期间等待一定时间,避免由于双方频繁抢占导致用户设备学习到错误的 Master 设备地址而导致流量中断问题。」
注意这里还点出了第二个收益:避免频繁抢占导致 PC 学错 Master 的 MAC 地址。VRRP 切换时,PC 的 ARP 表、交换机的 MAC 表都需要刷新;如果两台设备来回抢,PC 的缓存会反复指向不同的虚拟 MAC,导致一段时间的流量黑洞。
一句话总结配置原则:
| 设备角色 | 抢占模式 | 抢占延迟 | 理由 |
|---|---|---|---|
| Backup | 抢占(缺省) | 0(立即) | 闲着,该上就上 |
| Master | 抢占(缺省) | 15~20 秒 | 恢复后要等转发表下发、协议收敛 |
出处:华为官方配置指导与维护文档(
references/huawei/EDOC1000069579.txt第 28642 行、31495 行)
7.2.6 三个配置取舍,决定你的 VRRP 好不好用
取舍一:用"主备"还是"负载分担"。本章模板给的是主备(一台 Master、一台 Backup,Standby 平时完全闲着)。另一种做法是多组 VRRP 做负载分担:在同一对设备上建两个组,VLAN10 用 VRID 1(A 当 Master)、VLAN20 用 VRID 2(B 当 Master),这样两台设备平时都在转发,带宽利用率翻倍。
| 方案 | 优点 | 缺点 | 适用 |
|---|---|---|---|
| 单组主备 | 配置简单、排错容易 | 备用设备平时闲置,浪费一半性能 | 中小网络、预算有限 |
| 多组负载分担 | 两台都用得上,性能翻倍 | 配置量翻倍、排错复杂(要查两个组的状态) | 大流量、核心设备性能富余时 |
新手建议先做主备。负载分担虽然诱人,但两个组的切换逻辑要分别验证,一旦出现"组 1 正常、组 2 双 Master",问题会成倍难查。
取舍二:检测用"盯接口"还是"用 BFD"。track interface 只能发现"接口 down 了",但如果遇到"接口物理 up、但对端设备已经挂了"或者"光路衰减导致丢包但不 down",盯接口就发现不了。这时候要用 BFD 会话做检测:
| 检测方式 | 能发现什么 | 检测速度 | 配置复杂度 |
|---|---|---|---|
track interface |
接口物理/协议状态变化 | 依赖接口 up/down 时间 | 一条命令 |
track bfd-session |
端到端连通性(链路 up 但业务不通也能发现) | 毫秒级 | 需先建 BFD 会话 |
| NQA | 应用层探测(能测到具体业务端口) | 秒级 | 需建 NQA 测试组 |
实践建议:核心设备之间用 BFD,边缘链路用接口检测就够。BFD 快,但要两端都配,配置量增加。
取舍三:认证开不开。VRRP 支持 simple(明文)和 md5 两种认证。建议开 MD5,理由不是"防黑客"(VRRP 报文只在局域网内走,外部攻击者够不着),而是防止误配置:如果园区里有人手滑配了同样的 VRID 但不同的虚拟 IP,认证能把两拨配置隔离开,避免两个不相干的组互相干扰。这种"内部串组"事故在真实项目里并不少见。
# 两端配同样的认证,避免与其他 VRRP 组串扰
interface Vlanif 10
vrrp vrid 1 authentication-mode md5 Vrrp@2024
quit
⚠ 版本差异:VRRPv2 与 VRRPv3 的认证能力不同——VRRPv3 标准本身不再支持认证字段,某些设备在 VRRPv3 模式下
authentication-mode命令不生效或不可用。上机时以vrrp vrid 1 authentication-mode ?的补全输出为准。⚠ 待核实:待核实 华为与 H3C 在 VRRPv3 模式下
vrrp vrid N authentication-mode命令的可用性(VRRPv3 标准已移除认证字段),以及设备如何选择 VRRPv2/v3 版本
7.3 H3C 设备配置详解
H3C 的 VRRP 命令结构与华为高度相似,但有几处实质差异,逐条列在下面。命令同样配在接口视图(VLAN 接口或三层以太网接口)。
7.3.1 完整配置模板:双核心主备
# ===== H3C Core-A:主用 =====
system-view
sysname H3C-CoreA
vlan 10
quit
interface Vlan-interface 10
ip address 192.168.10.252 255.255.255.0
# 建组 + 配虚拟 IP
vrrp vrid 1 virtual-ip 192.168.10.254
# 优先级 120
vrrp vrid 1 priority 120
# 抢占延迟 20 秒(注意 H3C 的写法与华为不同,见下表)
vrrp vrid 1 preempt-mode timer delay 20
quit
save force
# ===== H3C Core-B:备用 =====
system-view
sysname H3C-CoreB
vlan 10
quit
interface Vlan-interface 10
ip address 192.168.10.253 255.255.255.0
vrrp vrid 1 virtual-ip 192.168.10.254
# 优先级缺省 100,比 A 低
quit
save force
7.3.2 H3C 的四处关键差异
把华为模板和上面的 H3C 模板逐行对比,会踩到四个坑:
| 差异点 | 华为(VRP) | H3C(Comware V7) | 抄错的后果 |
|---|---|---|---|
| 抢占延迟写法 | preempt-mode timer delay 20 |
preempt-mode timer delay 20 |
两家写法相同,都带 timer(注意不是 preempt-mode delay) |
| 虚拟 IP 可选掩码 | 只写 IP | vrrp vrid N virtual-ip <IP> [ mask | mask-length ] |
H3C 可以显式带掩码,不带也行 |
| 监视接口的写法 | track interface <接口名> reduced 30 |
需要先建 Track 项,再 track <项号> priority reduced 30 |
H3C 走 Track 框架,两步配置 |
| 通告间隔单位 | 秒 | 厘秒(100 厘秒 = 1 秒) | 配 1 就是一厘秒,几乎等于疯狂发包。注意:只有通告间隔用厘秒,抢占延迟两家都是秒 |
关于 Track 的两步配置,这是 H3C 与华为最大的不同。H3C 的 Track 是一个独立框架(可用于 VRRP、静态路由等多个特性),所以要先建 Track 项、再让 VRRP 监视它:
# 第 1 步:建一个 Track 项,监视上行接口
track 1 interface GigabitEthernet 0/0/24
# 第 2 步:让 VRRP 组监视这个 Track 项,状态为 Negative 时优先级降低 30
interface Vlan-interface 10
vrrp vrid 1 track 1 priority reduced 30
quit
对比华为的 vrrp vrid 1 track interface GigabitEthernet0/0/24 reduced 30 —— 华为一条命令搞定,H3C 要两条,而且关键字顺序也不一样(华为 reduced 30 在后,H3C priority reduced 30)。
7.3.3 H3C 逐行讲解与坑点
| 命令 | 作用 | 与华为的差异 / 坑点 |
|---|---|---|
vrrp vrid 1 virtual-ip 192.168.10.254 |
建组配虚拟 IP | 与华为一致;官方提示虚拟 IP 应为接口同网段的合法主机地址 |
vrrp vrid 1 priority 120 |
优先级 | 与华为一致,缺省 100,范围 1~254 |
vrrp vrid 1 preempt-mode timer delay 20 |
抢占延迟 | 写法与华为相同(都带 timer),单位秒,范围 0~255 |
track 1 interface <接口> |
建 Track 项 | H3C 独有的前置步骤 |
vrrp vrid 1 track 1 priority reduced 30 |
监视 Track 项 | 关键字顺序是 priority reduced,不是 reduced |
vrrp vrid 1 timer advertise 100 |
通告间隔 | 单位厘秒,100 才是 1 秒 |
⚠ 版本差异:H3C 官方文档提到,IPv4 VRRP 备份组号的有效取值范围在不同产品线可能是 1
7 或 1255,具体以设备vrrp vrid ?补全为准。华为则是 1~255。⚠ H3C 官方文档自己存在矛盾——以命令参考为准
查证 H3C VRRP 命令时你会发现三份文档写法不一致,这不是你查错了:
文档 写法 单位 命令参考(最权威) vrrp vrid ID preempt-mode [ timer delay delay-value ]秒,0~255 配置指导 vrrp vrid ID preempt-mode [ delay delay-value ](漏了timer)说「缺省 0 厘秒」 典型配置举例 vrrp vrid 1 preempt-mode delay 5(跟配置指导一致)说「5 秒」 结论:以命令参考为准——
preempt-mode timer delay N,单位秒。 配置指导与配置举例是早期版本的遗留写法,「厘秒」的说法把通告间隔的单位误套到了抢占延迟上。实操建议:如果你手上设备敲
vrrp vrid 1 preempt-mode delay 5能过,说明该版本支持旧写法;敲timer delay报错,就退回旧写法。两种都试一下,比纠结文档快。⚠ 待核实:待核实 H3C Comware V7 各产品线
vrrp vrid的 VRID 取值范围(文档中同时出现「1255」与「17」两种表述)
出处:
- H3C 02-VRRP配置 :
vrrp vrid virtual-router-id virtual-ip virtual-address [ mask | mask-length ]、vrrp vrid virtual-router-id priority priority-value(缺省 100)、vrrp vrid virtual-router-id preempt-mode [ timer delay delay-value ](缺省抢占、延迟 0 秒,注意配置指导此处漏写timer且误标厘秒)、vrrp vrid virtual-router-id track track-entry-number { forwarder-switchover member-ip ip-address | priority reduced [ priority-reduced ] | switchover | weight reduced [...] }- H3C 09-VRRP命令 :
display vrrp输出字段说明- H3C VRRP典型配置举例 :
vrrp vrid 1 preempt-mode delay 5(旧写法,无timer,以命令参考为准)、vrrp vrid 1 track 1 weight reduced 250、track 1 interface GigabitEthernet0/0/2实际配置样例
7.4 华为 / H3C 命令对照表
| 功能 | 华为(VRP) | H3C(Comware V7) | 差异说明 |
|---|---|---|---|
| 创建组 + 虚拟 IP | vrrp vrid 1 virtual-ip X |
vrrp vrid 1 virtual-ip X [ mask | mask-length ] |
H3C 可带掩码 |
| 优先级 | vrrp vrid 1 priority 120 |
vrrp vrid 1 priority 120 |
相同,缺省均 100,范围 1~254 |
| 关闭抢占 | vrrp vrid 1 preempt-mode disable |
vrrp vrid 1 preempt-mode(取消即非抢占,用 undo) |
H3C 用 undo 表达 |
| 抢占延迟 | vrrp vrid 1 preempt-mode timer delay 20 |
vrrp vrid 1 preempt-mode timer delay 20 |
写法相同,单位都是秒(华为 0 |
| 监视接口(直接) | vrrp vrid 1 track interface Gi0/0/24 reduced 30 |
不支持直接写,须走 Track | 架构差异 |
| 监视 Track 项 | vrrp vrid 1 track bfd-session ... / track interface ... |
vrrp vrid 1 track 1 priority reduced 30 |
H3C 需先 track 1 interface ... |
| 认证 | vrrp vrid 1 authentication-mode md5 <密钥> |
vrrp vrid 1 authentication-mode { simple | md5 } <密钥> |
基本相同 |
| 通告间隔 | vrrp vrid 1 timer advertise 2(秒) |
vrrp vrid 1 timer advertise 200(厘秒) |
单位不同! |
| 查看状态 | display vrrp |
display vrrp |
相同 |
| 查看简要 | display vrrp brief |
display vrrp(按接口过滤) |
华为有 brief 子命令 |
| 查看统计 | display vrrp statistics |
display vrrp statistics |
相同 |
| 保存 | save |
save force |
H3C 免交互 |
这张表里最该记的一条:通告间隔的单位——华为用秒、H3C 用厘秒,差 100 倍。华为配 2 是 2 秒,H3C 配 2 是 0.02 秒,后者的 VRRP 报文会疯狂发出。
⚠ 注意区分两个参数的单位:通告间隔(
timer advertise)两家单位不同(秒 vs 厘秒);但抢占延迟(preempt-mode timer delay)两家都是秒,别把厘秒的规则套到这个参数上。
7.5 配置验证
验证 VRRP 分三步:看状态是谁 → 看优先级对不对 → 看切换灵不灵。
第一步:确认谁是 Master。华为用 display vrrp brief 一眼看全:
<HUAWEI> display vrrp brief
期望输出里每行一个组,State 列显示当前角色:
VRID State Interface Virtual IP
1 Master Vlanif10 192.168.10.254
State 只有三种值:Master(正在转发)、Backup(待命)、Initialize(还没起来,通常是配置有问题)。看到 Initialize 就别往下查了,先查虚拟 IP 和接口 IP 是否同网段。
第二步:确认优先级和 Master 的细节。用 display vrrp 看详细信息:
<HUAWEI> display vrrp
期望在输出里看到这几行关键信息:
Vlanif10 | Virtual Router 1
State : Master
Virtual IP : 192.168.10.254
Master IP : 192.168.10.252
PriorityRun : 120
PriorityConfig : 120
MasterPriority : 120
Preempt : YES Delay Time : 20
TimerRun : 1
Auth Type : MD5
Virtual MAC : 0000-5e00-0101
重点看四行:
PriorityRun(运行优先级)与PriorityConfig(配置优先级):两者不一致说明 Track 正在生效(比如上行链路断了,运行优先级被降了 30)。Preempt与Delay Time:确认抢占和延迟是否按设计生效。Virtual MAC:末字节应该等于 VRID(VRID=1 就是...0101),这是 PC 实际学到的 MAC。Master IP:当前 Master 的真实接口地址,用它反推是哪台设备。
第三步:确认 VRRP 报文收发正常。计数不对说明报文被丢了:
<HUAWEI> display vrrp statistics
期望 Checksum errors、Version errors、VRID errors 这几项都是 0 或极小;如果某项持续增长,说明两端配置不一致(版本、VRID、认证方式)。
H3C 侧同样用 display vrrp,输出字段与华为相近(官方文档明确列出 State、Config Pri、Running Pri、Preempt Mode、Delay Time、Virtual MAC、Master IP、Auth Type 等字段),判断标准一样:
<H3C> display vrrp
H3C 的输出里还会多一项 Become Master —— 「切换到 Master 状态需要等待的时间,单位为毫秒」,只在 Backup 状态下显示。这一项是 H3C 特有的,用来预判接管时间。
第四步(最关键):实际切一次看看。配置看着对不等于切换真好用。标准验证动作是:
- 在 PC 上持续
ping 网关虚拟 IP和ping 一个外网地址(ping -t)。 - 在 Master 上执行
shutdown掉用户接口,或直接把设备下电。 - 观察 ping 是否只丢 1~3 个包就恢复。
- 恢复 Master,观察它是否按配置的延迟时间才抢回。
这一步能同时验证"能不能切"和"切得快不快"。没做过这一步的 VRRP 配置,不能算配好了。
7.6 排错与故障树
VRRP 的故障集中在三种:双 Master(最危险)、Backup 不接管、切换慢。按下面的故障树查:
问题一:两台都是 Master(双 Master)—— 最危险,会引发 MAC 震荡和流量黑洞
├─ 1. VRRP 报文到不了对方?
│ ├─ 两台设备之间二层不通 → 先把两个接口放同一 VLAN、ping 通对方接口 IP
│ ├─ 中间隔了三层设备或防火墙 → VRRP 报文是组播,跨三层不会通
│ └─ 物理链路被分成两片(中间断了)→ 查链路状态
├─ 2. 报文选了组播 224.0.0.18 却没被处理?
│ ├─ 接口上有 ACL 挡了 224.0.0.18 → 检查接口 ACL
│ ├─ 协议号 112 被安全策略拦 → 检查防火墙/包过滤
│ └─ 接口上开了 VRRP 抑制/或配置了不接收
├─ 3. 两端配置不一致?
│ ├─ VRID 不一致(一个 1 一个 2)→ 各自成组,当然都是 Master
│ ├─ 认证方式或密钥不一致 → 报文校验失败被丢弃
│ └─ 通告间隔不一致 → 一方觉得对方"活着",一方觉得"死了"
└─ 4. 二层环路或 IP 冲突
├─ 两个接口 IP 配成一样 → 直接冲突
└─ 虚拟 IP 与某个设备接口 IP 相同(IP 拥有者)→ 该设备固定 255,另一台永远抢不过
问题二:Master 挂了,Backup 不接管
├─ 1. Backup 是 Initialize → 虚拟 IP 与接口 IP 不同网段,或虚拟 IP 是网络地址/广播地址
├─ 2. Backup 是 Backup 但优先级更低 → `display vrrp` 看 PriorityConfig
├─ 3. 配了 preempt-mode disable → 但它本该在 Master 挂掉时接管,检查是不是 Master 根本没"挂"
├─ 4. Master 的上行断了但 VRRP 心跳还通 → **典型:只配 VRRP 没配上行检测**
└─ 5. Backup 自己也不健康(上行也断)→ 需要两端都配 track
问题三:能切但切得慢 / 切换丢包多
├─ 1. 通告间隔太大(改小了会加快检测,但会增加报文负担)
├─ 2. 检测不到"链路 up 但实际不通" → 需要 BFD 或 NQA 检测
├─ 3. 抢占延迟配太长(Master 侧 20 秒是合理的,但 Backup 侧不该有延迟)
└─ 4. 切换后 ARP/MAC 表刷新慢 → 检查是否配了不会切换 MAC 的写法
| 症状 | 最可能的原因 | 一条命令定位 |
|---|---|---|
| 两台都显示 Master | VRID 不一致 | 两端 display vrrp 对比 VRID |
| 两台都 Master 且 VRID 一致 | 认证密钥不一致 | 对比 Auth Type 与密钥 |
| 两台都 Master 且配置全一致 | 心跳不通(二层/组播被挡) | display vrrp statistics 看收包计数是否增长 |
| Backup 一直是 Initialize | 虚拟 IP 与接口 IP 不同网段 | display vrrp 看状态 + 核对网段 |
| Master 挂了 Backup 不切 | 通告间隔太大 | 看 TimerRun |
| 网关通但上不了网 | 没配上行链路检测 | display vrrp 看 PriorityRun 是否等于 PriorityConfig |
| 切换后要等很久才恢复 | 抢占延迟/收敛慢 | 看 Delay Time |
关于"网关通但上不了网"这个症状,再强调一次:这是 VRRP 最隐蔽的坑。ping 网关 是通的(Master 正常响应虚拟 IP 的 ARP 和 ICMP),但 ping 外网 不通(Master 的上行断了)。诊断方法是看 PriorityRun:如果 Master 的上行断了、但运行优先级没有被降下来,说明根本没配 track,或者 track 配在了错误的接口上。
出处:扫描统计字段(
Checksum errors等)与display vrrp字段说明,见 H3C 09-VRRP命令 的display vrrp输出信息描述表。⚠ 待核实:待核实 华为
display vrrp statistics的确切输出字段名(本章示例中的 Checksum errors / Version errors / VRID errors 三项为按常见实现推断,未取到官方输出样例),以及display vrrp brief在各 VRP 版本中的列名
7.7 新手踩坑与注意事项
- 把 VRRP 当"设备冗余"用——它只保网关不中断。设备上的 DHCP、认证、NAT、AP 管理照样断,这些要另外做冗余。
- 优先级填 255——255 保留给"IP 地址拥有者",手配直接报错。想当 Master 最多配到 254。
- 虚拟 IP 配成等于某台设备的接口 IP——这台设备就成了 IP 拥有者,运行优先级固定 255,另一台永远抢不过来,主备形同虚设。除非你就是要这个效果(比如单臂路由的特殊场景),否则一定要用第三个地址。
- 虚拟 IP 与接口 IP 不同网段——配置能成功但组停在
Initialize,VRRP 完全不起作用。官方文档明确说这个规则。 - 只配 VRRP 不配上行链路检测——这是最致命的漏配。网关活着但上不了网,用户投诉"网通一半",而你在 VRRP 状态里看到一切正常。
- 两端抢占延迟配成一样——正确做法是 Backup 立即抢占、Master 延迟抢占(见 7.2.5 官方原文)。
- H3C 上照抄华为的
preempt-mode timer delay——H3C 没有timer这个词,直接报错。 - H3C 上通告间隔按秒配——H3C 单位是厘秒,配
1等于一厘秒,会疯狂发包。 - 二层环路导致双 Master——生成树没配好、或两台设备之间有冗余链路形成环,VRRP 报文可能被反射或丢失,偶发双 Master。这类问题往往伴随时通时不通。
- 配完不切一次试试——纸上配置和真实切换完全是两回事。没做过
shutdown验证的 VRRP,不能算配好。 - 忘了保存——华为
save要敲y,H3Csave force。设备重启后 VRRP 消失,Backup 变 Master,监控不报警,问题埋到下个月。 - VRID 在不同 VLAN 上复用没规划——同一台设备的多个 VLAN 可以有各自的 VRRP 组,但 VRID 建议按 VLAN 规划好(比如 VLAN10 用 VRID 10),否则半年后没人看得懂。
7.8 本章小结
- VRRP 把两台设备的网关能力合并成一个虚拟网关(虚拟 IP + 虚拟 MAC
00-00-5E-00-01-{VRID}),一主一备,主挂备顶,PC 网关地址不变。 - 它是「网关」冗余,不是「设备」冗余——只保网关转发不断,不保设备上的其他服务。
- Master 选举:优先级大者胜 → 相同比接口 IP 大者胜;IP 拥有者优先级固定 255,所以虚拟 IP 要用第三个地址。
- 必须配上行链路检测(华为
track interface ... reduced,H3C 走 Track 框架),否则会出现"网关通但上不了网"。 - 抢占延迟两端要反过来配:Backup 立即抢占,Master 延迟 15~20 秒(官方原文:Master 转发表下发慢,立即回切会丢流量)。
- 华为与 H3C 最易踩的两个差异:H3C 抢占延迟没有
timer关键字;H3C 通告间隔单位是厘秒不是秒。 - 验证四步:看 State → 看 PriorityRun/Delay → 看 statistics → 实际切一次。
一张纸记牢本章:
| 你要做的事 | 记住这一句 |
|---|---|
| 理解 VRRP | 两台设备共用一个门牌号,一个主一个备 |
| 配主备 | 虚拟 IP 用第三个地址,主设备优先级调高 |
| 防"网关通上不了网" | 一定要配上行链路 track |
| 配抢占延迟 | 备的急(0 秒)、主的慢(15~20 秒) |
| 查故障 | 双 Master 查心跳、不同步查配置、不切换查上行 |
自测题
- VRRP 的虚拟 MAC 地址格式是什么?VRID 为 5 时对应哪个 MAC?
- Master 选举的完整规则有哪三条?为什么"虚拟 IP 不要用设备自身的接口 IP"?
- 为什么说 VRRP 是"网关冗余"而不是"设备冗余"?举例说明它不管哪些东西。
- 一台 Master 的上行链路断了,但下挂 PC 仍能 ping 通网关却上不了网,原因是什么?怎么配才能解决?
- 抢占延迟为什么建议"Backup 配 0 秒、Master 配 15~20 秒"?请用一句话说清理由。
- H3C 上配抢占延迟 20 秒,命令怎么写?和华为的写法差在哪?
- 格式
00-00-5E-00-01-{VRID}(十六进制),VRID=5 时是00-00-5E-00-01-05。 - 三条:① 优先级大者胜(缺省 100);② 优先级相同则接口 IP 地址大者胜;③ IP 地址拥有者(接口 IP 等于虚拟 IP)优先级固定 255。 虚拟 IP 不要用设备接口 IP,是因为那样该设备就成了 IP 拥有者、优先级固定 255,另一台设备永远抢不过它,主备冗余形同虚设。
- 因为 VRRP 只保证"虚拟网关这一个角色"不中断。设备如果同时是 DHCP 服务器、认证服务器、NAT 网关、AP 管理器,它一挂,这些功能全部中断,VRRP 无法接管——那需要 DHCP 冗余、认证服务器冗余、防火墙双机等各自的机制。
- Master 的上行链路断了,但 VRRP 心跳仍然通,所以 Backup 认为 Master 正常、不去接管;而 Master 自身没有出路。解决办法是配上行链路检测:华为
vrrp vrid 1 track interface <上行口> reduced 30,H3C 先建track 1 interface <上行口>再vrrp vrid 1 track 1 priority reduced 30。 - 因为 Master 故障恢复时,转发相关的表和协议还没收敛完,如果立即抢回 Master,流量会涌向一台还没准备好的设备造成丢包;而 Backup 平时是闲置状态,发现自己是最高优先级就该马上顶上。
- H3C:
vrrp vrid 1 preempt-mode delay 20(没有timer);华为:vrrp vrid 1 preempt-mode timer delay 20(有timer)。
关于本书:《华为 / H3C 网络设备典型功能配置详解》—— 面向国内高校/企业网络环境, 华为 VRP 与 H3C Comware 双厂商并排配置的实操教材,共 43 章。 全书所有命令尽量有官方出处,查不到的显式标注「待核实」。 返回系列目录
本人保留对侵权者及其全家发动因果律武器的权利
版权提醒
如无特殊申明,本站所有文章均是本人原创。转载请务必附上原文链接:https://www.elliot98.top/post/huawei-h3c-book/07/。
如有其它需要,请邮件联系!版权所有,违者必究!