跳到正文
Lutong's Homepage

华为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 选举规则,三条按顺序比:

  1. 先比优先级,大者胜(缺省都是 100 时,大家都平等)。
  2. 优先级相同,比接口 IP 地址,大者胜。这一条经常让人意外——接口 IP 大一点居然也能当 Master。
  3. 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 设备流量丢失。」

拆开理解这段话,三层意思:

  1. Backup 要立即抢占(延迟 0)——它平时闲着,一旦发现自己是最高优先级,应该马上顶上,别犹豫。
  2. Master 要延迟抢占(比如 15~20 秒)——原 Master 恢复了,它确实优先级更高,但它刚开机、转发表还没下发完、各种协议还没收敛。这时候如果它立刻抢回 Master,流量会涌到一台"还没准备好的设备"上,结果就是丢包。
  3. 所以两端策略是反的: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 备份组号的有效取值范围在不同产品线可能是 17 或 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 写法相同,单位都是秒(华为 03600,H3C 0255)
监视接口(直接) 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 特有的,用来预判接管时间。

第四步(最关键):实际切一次看看。配置看着对不等于切换真好用。标准验证动作是:

  1. 在 PC 上持续 ping 网关虚拟 IP 和 ping 一个外网地址(ping -t)。
  2. 在 Master 上执行 shutdown 掉用户接口,或直接把设备下电。
  3. 观察 ping 是否只丢 1~3 个包就恢复。
  4. 恢复 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 新手踩坑与注意事项

  1. 把 VRRP 当"设备冗余"用——它只保网关不中断。设备上的 DHCP、认证、NAT、AP 管理照样断,这些要另外做冗余。
  2. 优先级填 255——255 保留给"IP 地址拥有者",手配直接报错。想当 Master 最多配到 254。
  3. 虚拟 IP 配成等于某台设备的接口 IP——这台设备就成了 IP 拥有者,运行优先级固定 255,另一台永远抢不过来,主备形同虚设。除非你就是要这个效果(比如单臂路由的特殊场景),否则一定要用第三个地址。
  4. 虚拟 IP 与接口 IP 不同网段——配置能成功但组停在 Initialize,VRRP 完全不起作用。官方文档明确说这个规则。
  5. 只配 VRRP 不配上行链路检测——这是最致命的漏配。网关活着但上不了网,用户投诉"网通一半",而你在 VRRP 状态里看到一切正常。
  6. 两端抢占延迟配成一样——正确做法是 Backup 立即抢占、Master 延迟抢占(见 7.2.5 官方原文)。
  7. H3C 上照抄华为的 preempt-mode timer delay——H3C 没有 timer 这个词,直接报错。
  8. H3C 上通告间隔按秒配——H3C 单位是厘秒,配 1 等于一厘秒,会疯狂发包。
  9. 二层环路导致双 Master——生成树没配好、或两台设备之间有冗余链路形成环,VRRP 报文可能被反射或丢失,偶发双 Master。这类问题往往伴随时通时不通。
  10. 配完不切一次试试——纸上配置和真实切换完全是两回事。没做过 shutdown 验证的 VRRP,不能算配好。
  11. 忘了保存——华为 save 要敲 y,H3C save force。设备重启后 VRRP 消失,Backup 变 Master,监控不报警,问题埋到下个月。
  12. 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 查心跳、不同步查配置、不切换查上行

自测题

  1. VRRP 的虚拟 MAC 地址格式是什么?VRID 为 5 时对应哪个 MAC?
  2. Master 选举的完整规则有哪三条?为什么"虚拟 IP 不要用设备自身的接口 IP"?
  3. 为什么说 VRRP 是"网关冗余"而不是"设备冗余"?举例说明它不管哪些东西。
  4. 一台 Master 的上行链路断了,但下挂 PC 仍能 ping 通网关却上不了网,原因是什么?怎么配才能解决?
  5. 抢占延迟为什么建议"Backup 配 0 秒、Master 配 15~20 秒"?请用一句话说清理由。
  6. H3C 上配抢占延迟 20 秒,命令怎么写?和华为的写法差在哪?
  1. 格式 00-00-5E-00-01-{VRID}(十六进制),VRID=5 时是 00-00-5E-00-01-05。
  2. 三条:① 优先级大者胜(缺省 100);② 优先级相同则接口 IP 地址大者胜;③ IP 地址拥有者(接口 IP 等于虚拟 IP)优先级固定 255。 虚拟 IP 不要用设备接口 IP,是因为那样该设备就成了 IP 拥有者、优先级固定 255,另一台设备永远抢不过它,主备冗余形同虚设。
  3. 因为 VRRP 只保证"虚拟网关这一个角色"不中断。设备如果同时是 DHCP 服务器、认证服务器、NAT 网关、AP 管理器,它一挂,这些功能全部中断,VRRP 无法接管——那需要 DHCP 冗余、认证服务器冗余、防火墙双机等各自的机制。
  4. Master 的上行链路断了,但 VRRP 心跳仍然通,所以 Backup 认为 Master 正常、不去接管;而 Master 自身没有出路。解决办法是配上行链路检测:华为 vrrp vrid 1 track interface <上行口> reduced 30,H3C 先建 track 1 interface <上行口> 再 vrrp vrid 1 track 1 priority reduced 30。
  5. 因为 Master 故障恢复时,转发相关的表和协议还没收敛完,如果立即抢回 Master,流量会涌向一台还没准备好的设备造成丢包;而 Backup 平时是闲置状态,发现自己是最高优先级就该马上顶上。
  6. H3C:vrrp vrid 1 preempt-mode delay 20(没有 timer);华为:vrrp vrid 1 preempt-mode timer delay 20(有 timer)。

关于本书:《华为 / H3C 网络设备典型功能配置详解》—— 面向国内高校/企业网络环境, 华为 VRP 与 H3C Comware 双厂商并排配置的实操教材,共 43 章。 全书所有命令尽量有官方出处,查不到的显式标注「待核实」。 返回系列目录