资讯动态

华为VRRP+浮动路由实验:从原理到配置,彻底搞懂网关冗余

发布时间:2026/10/15 12:03:57 来源:尧图企业网站定制
我们在做网络冗余方案时经常听到“浮动路由”这个词。第一次接触的人容易把它和动态路由协议搞混实际上它和动态路由完全不是一回事。这个实验我们就把华为设备上的 VRRP虚拟路由冗余协议和浮动路由原理、配置、验证完整过一遍从协议工作机制到命令行实操再到故障切换的排查思路全流程走通。1. 为什么需要浮动路由网关单点故障的真实场景先说一个最基础的网络场景。企业内网通常划分多个 VLAN终端用户网关落在核心交换机或路由器上。如果这台设备宕机了或者上行链路断了所有依赖这个网关的终端都会断网。问题不是“网络慢”而是“直接不通”。解决办法就是做网关冗余。思路核心是让两台设备共同承担一个虚拟 IP 地址的转发职责平时一台主用、一台备用主设备失效时备用设备无缝接管。这个变身为“虚拟路由器”的过程就是 VRRP 协议做的事。VRRP 的标准叫法是虚拟路由冗余协议RFC 编号是 2338后来更新到 3768再到 5798。它能将多台路由器“编组”对外呈现为一个虚拟路由器。这个虚拟路由器有自己的 IP也就是虚拟 IP客户端的网关直接指向这个虚拟 IP 就行。主路由器负责转发备份路由器实时监听状态一旦主路由器失联备份立即切换成 Master。浮动路由这个概念则是在 VRRP 组网中很常见的一种上行处理方式。当主设备上的 VRRP 接口负责下行网关冗余时它的上行流量也可能依赖某条默认路由或静态路由。如果上行物理接口断开但 VRRP 本身还认为自己是 Master就会出现“网关还在、出口没了”的尴尬局面。解决方式就是通过 VRRP 的接口跟踪功能让路由表里的那条默认路由优先级随着接口状态“浮动”起来。所以这个实验里我们会做两件事一是配置 VRRP 让两台设备形成主备关系二是配置接口跟踪让上行链路断开时备份设备能及时接管。两者配合起来才是真正完整的网关冗余方案。2. 实验前的准备拓扑设计与地址规划实验拓扑基于两台华为三层交换机构成双核心接入交换机下挂终端运营商或总部出口路由器对接在核心上。为了把原理讲清楚我们使用两台设备SW1 和 SW2分别命名为 SW1 和 SW2。具体规划如下设备接口IP 地址用途说明SW1GigabitEthernet0/0/110.0.10.1/24VLAN10 网关真实接口SW1GigabitEthernet0/0/210.0.20.1/24VLAN20 网关真实接口SW1GigabitEthernet0/0/3100.0.1.1/30上行连接到出口路由器SW2GigabitEthernet0/0/110.0.10.2/24VLAN10 备用网关接口SW2GigabitEthernet0/0/210.0.20.2/24VLAN20 备用网关接口SW2GigabitEthernet0/0/3100.0.2.1/30上行连接到出口路由器虚拟网关VRRP 组110.0.10.254/24VLAN10 用户网关地址虚拟网关VRRP 组210.0.20.254/24VLAN20 用户网关地址这个规划里我们故意把两个 VLAN 的 VRRP 主设备设为不同设备VLAN10 的主设备是 SW1VLAN20 的主设备是 SW2。这样两台交换机都能承担转发流量避免一台设备空闲、另一台压力过大的情况。实际项目中这叫负载分担部署模式。为什么要用两个 VRRP 组而不是一个因为 VRRP 协议每个组需要有一个虚拟 IP 作为用户网关通常我们按照 VLAN 维度来划分 VRRP 组。而且不同组之间的 Master/Backup 角色可以分别设定让冗余设备物尽其用。在小型网络中一组就够了但企业网络里特别是双核心网关场景两个组是最常见的起步方案。这里还要注意一个关键点VRRP 报文使用的是组播地址 224.0.0.18协议的端口号和 IP 协议号都是 VRRP 专用值。两台交换机之间的互联接口必须放通这个组播报文否则它们无法互相感知状态会出现双 Master 的脑裂问题。3. 原理拆解优先级、抢占和状态机的配合VRRP 的角色切换不是靠“感觉”是靠一套明确的状态机和定时器。每个 VRRP 组里的设备都有优先级取值范围 0~255数值越大优先级越高。默认情况下设备的优先级是 100可以手动调整。优先级谁高谁就胜出成为 Master优先级相同的情况下接口 IP 地址大的设备胜出。状态机总共有三个状态Initialize、Master、Backup。Initialize 状态是初始状态当设备上配置了 VRRP 但接口还没有 up 时就停留在这个状态。接口 up 之后设备开始发送 VRRP 通告报文并进入 Master 或 Backup 状态。Master 状态下的设备承担转发任务周期性地发送 VRRP 通告报文告诉同组其他设备“我还在别抢”。默认通告间隔是 1 秒可以通过命令调整。如果 Master 设备宕机或者链路断了Backup 设备在三个通告周期内没有收到报文也就是 3 秒左右就会切换成 Master整个过程对终端用户是透明的。抢占机制也是实验里容易忽略的地方。华为设备默认开启抢占模式也就是说当一台 Backup 设备的优先级比当前 Master 更高时它会主动接管变成 Master。这个机制在某些场景下会引发问题链路易波动时设备频繁抢占会导致网络抖动的风险。实际部署时通常会配置抢占延迟让设备在优先级恢复之后等待一段时间再抢占比如等待 20 秒或者 60 秒确保网络稳定后再切换。浮动路由在 VRRP 里的具体体现其实就是接口跟踪。配置方式是vrrp vrid 1 track interface GigabitEthernet0/0/3 reduced 30。意思是当被跟踪的上行接口 down 掉时当前设备在这个 VRRP 组里的优先级自动降低 30。如果当前设备本来是 Master优先级降了之后低于 Backup那么 Backup 就会接管。这样 IP 网关和出口链路的状态就绑定在一起实现了“一台设备上行断了另一个台顶上”的效果。从原理上理解这几点后后面的配置就完全是一马平川了。最怕的就是不理解为啥这么配然后照着别人的命令敲一遍敲出来以后稍微变个拓扑就懵了。4. 核心配置实战双核心交换机的 VRRP 浮动路由搭建下面进入实验正题。为了减少干扰两台交换机之间直接用三层互联接口直连并运行 VRRP。这个配置过程我拆成了五个阶段接口基础配置、VLANIF 配置、VRRP 组配置、上行跟踪配置、验证测试配置。第一阶段配置接口 IP 和 VLAN。华为交换机上如果是三层接口直接在接口下配置 IP 就行。如果用的是 VLANIF 接口则需要先创建 VLAN再把物理接口加入 VLAN最后给 VLANIF 配 IP。这里我们两种方式都涉及VLANIF 用在下行用户网关侧物理三层接口用在上行到出口路由器的链路。SW1 的基础配置如下sysname SW1 vlan batch 10 20 interface GigabitEthernet0/0/1 port link-type access port default vlan 10 interface GigabitEthernet0/0/2 port link-type access port default vlan 20 interface GigabitEthernet0/0/3 ip address 100.0.1.1 255.255.255.252 interface Vlanif10 ip address 10.0.10.1 255.255.255.0 interface Vlanif20 ip address 10.0.20.1 255.255.255.0SW2 做对称配置只是接口 IP 不同sysname SW2 vlan batch 10 20 interface GigabitEthernet0/0/1 port link-type access port default vlan 10 interface GigabitEthernet0/0/2 port link-type access port default vlan 20 interface GigabitEthernet0/0/3 ip address 100.0.2.1 255.255.255.252 interface Vlanif10 ip address 10.0.10.2 255.255.255.0 interface Vlanif20 ip address 10.0.20.2 255.255.255.0这里有一个容易踩坑的地方VLANIF 接口必须配置物理 IP 后VRRP 才能正常起组。如果用户在配置 VRRP 之前忘了给 VLANIF 配 IP后面虽然能敲进去命令但状态会一直卡在 Initialize排查起来很费劲。第二阶段就是 VRRP 组配置。VLAN10 的 VRRP 组 ID 我们设为 1VLAN20 的组 ID 设为 2。虚拟网关 IP 分别是 10.0.10.254 和 10.0.20.254。SW1 上想让 VLAN10 优先当 Master就把 VRRP 组 1 的优先级调高一点比如调到 120。SW2 上想让 VLAN20 优先当 Master就把 VRRP 组 2 的优先级调高。配置命令如下SW1interface Vlanif10 vrrp vrid 1 virtual-ip 10.0.10.254 vrrp vrid 1 priority 120 vrrp vrid 1 preempt-mode timer delay 20 interface Vlanif20 vrrp vrid 2 virtual-ip 10.0.20.254SW2interface Vlanif10 vrrp vrid 1 virtual-ip 10.0.10.254 interface Vlanif20 vrrp vrid 2 virtual-ip 10.0.20.254 vrrp vrid 2 priority 120 vrrp vrid 2 preempt-mode timer delay 20这里解释几个关键命令。virtual-ip就是虚拟网关地址同一组里的两台设备必须配一样的虚拟 IP。priority决定谁优先成为 Master。preempt-mode timer delay是抢占延迟我们设置为 20 秒意思是当设备需要抢占成 Master 时先等 20 秒再切换避免链路抖动导致频繁切换。为什么要在主设备上设置抢占延迟因为如果你上联接口恢复、优先级回升设备立刻抢占的话网络里正在进行的老会话会被强行打断。延迟 20 秒能给正在传输的业务一个缓冲时间。第三阶段是配置接口跟踪。我们分别跟踪 SW1 和 SW2 的上行接口作用就是实现浮动路由自动切换。SW1 的配置interface Vlanif10 vrrp vrid 1 track interface GigabitEthernet0/0/3 reduced 30SW2 的配置interface Vlanif20 vrrp vrid 2 track interface GigabitEthernet0/0/3 reduced 30注意reduced 的数值不能随便填必须保证降优先级之后当前 Master 的优先级比 Backup 还低。举个例子SW1 优先级 120SW2 优先级 100。当 SW1 的 G0/0/3 接口 down 了优先级降 30变成 90低于 SW2 的 100SW2 才可能抢占成 Master。如果 reduced 值配得太小比如只降 10那 SW1 的优先级还是 110比 SW2 高永远切不过去。这个点实验里几乎每次都会有人踩到。第四阶段还有一个重要步骤是配置默认路由或者静态路由。既然上行口是三层接口连接出口路由器我们需要配默认路由指向对端让业务流量能出网。SW1 和 SW2 各自配置ip route-static 0.0.0.0 0.0.0.0 100.0.1.2 ip route-static 0.0.0.0 0.0.0.0 100.0.2.2这里的 100.0.1.2 和 100.0.2.2 是出口路由器侧与 SW1、SW2 相连的接口地址。如果不配这条路由内网终端能 ping 通网关但没法访问外网很多人排查半天才发现是缺了这条默认路由。如果使用动态路由协议理论上也可以不用静态默认路由。但 VRRP 实验的重点不在动态路由所以用静态默认路由最清晰也最贴近不少中小型网络的真实部署。5. 完整验证流程从虚拟网关到故障切换配置完成之后不能看一眼配置就完事必须实际验证。验证分为三个层面VRRP 状态查看、终端网关连通性、故障切换模拟。第一层面查看 VRRP 状态。在 SW1 上执行display vrrp会看到类似这样的输出Vlanif10 | Virtual Router 1 | Master | Pri 120 | Preempt 20s | Virtual IP: 10.0.10.254SW2 上看到的应该是 Backup 状态虚拟 IP 显示为 10.0.10.254优先级是 100。同时 VLAN20 的状态则反过来SW2 是 MasterSW1 是 Backup。这说明我们的负载分担设计生效了。第二层面终端连通性验证。在 PC 上配置 IP 为 10.0.10.100网关指向 10.0.10.254掩码 255.255.255.0。然后执行ping 10.0.10.254 ping 100.0.1.2第一个 ping 检验网关是否可用第二个 ping 检验上行链路是否通。注意终端 ping 虚拟网关时返回的是虚拟 IP 的响应实际上由 Master 设备回包。如果 PC 的 ARP 表有缓存可能第一次 ping 会稍慢多次 ping 就正常了这是正常现象。终端上还可以查看网关的 MAC 地址会发现 ARP 表里的网关 MAC 是虚拟 MAC格式通常是 00-00-5e-00-01-xx其中 xx 是 VRRP 组 ID。比如 VRRP 组 1 的虚拟 MAC 是 00-00-5e-00-01-01虚拟组 2 的虚拟 MAC 是 00-00-5e-00-01-02。这个细节可以用来确认终端确实学到了虚拟网关而不是默认路由下一跳的物理 MAC。第三层面故障切换模拟。这是整个实验最有价值的地方。手动把 SW1 的上行接口 G0/0/3 shutdown模拟上行链路断开。system-view interface GigabitEthernet0/0/3 shutdown然后去 SW1 上看 VRRP 状态display vrrp正常情况下Vlanif10 的 VRRP 组 1 会从 Master 变成 Backup因为跟踪接口 down 导致优先级降了 30 变成了 90低于 SW2 的 100。同时 SW2 上会看到 Vlanif10 的状态从 Backup 变成 Master优先级还是 100。这时候终端再次 ping 10.0.10.254依然通但是数据是从 SW2 转发的。再把 SW1 的 G0/0/3 恢复 up由于 SW1 配置了抢占延迟 20 秒SW1 会在 20 秒后重新抢占成 Master。这里可以清晰观察到抢占延迟的效果链路恢复后网络不会立刻切换而是等待 20 秒保证业务稳定。有个需要注意的点shutdown 上行接口时切换时间取决于 VRRP 的失效检测时间。默认是 3 秒因为 Backup 在 3 个通告周期内没收到 Master 报文才会切换。华为设备支持通过vrrp vrid 1 timer advertise 1调整通告周期配合vrrp vrid 1 timer hold可以微调失效时间。生产环境不建议把通告间隔调得太小否则组播报文占用 CPU 会比较高尤其在设备数量多的网络中。另外如果实验中只有两台交换机接入交换机没有多余接口连接终端也可以直接用交换机上的 VLANIF 接口来 ping。但为了验证终端侧“网关冗余”的直观效果还是建议拉一台 PC 或者用环回口模拟终端来测体验完全不同。6. 老工程师的排查清单那些年我们踩过的 VRRP 坑做实验的时候各种问题我都见过这里整理一份实战排查清单按出现频率排个序。第一个坑是 VRRP 状态一直在 Initialize。这个状态通常表示接口没有 up或者虚拟 IP 所在接口配置不完整。先看物理接口状态再看 VLANIF 是否存在再看接口下是否配了真实 IP。其实核心是确认三层接口是通的VRRP 才能正常工作。第二个坑是双 Master。这是最危险的情况两台设备同时认为自己是 Master都会转发报文终端流量像无头苍蝇一样随机到达两台设备时通时断。看到这个状态第一反应查两件事一是两台设备之间是否放通了 VRRP 组播报文特别是跨三层设备时ACL 没有放通 224.0.0.18 就会导致互相收不到通告二是查看两台设备配置里是否有一台设备的 VRRP 被错误关闭了或者两台设备的虚拟 IP 不一致。第三个坑是主备切换丢包严重。VRRP 默认切换时间是 3 秒左右如果对端的接入交换机生成树也在收敛或者终端的 ARP 缓存没有刷新短时间内丢一部分包是正常的。要想实现秒级切换可以把 VRRP 通告间隔调成 200 毫秒并配合 BFD 检测来实现快速失效。不过要注意这种调优方式会增加 CPU 开销适合关键业务场景不适合所有 VLAN 都这么配。第四个坑是配置了 track 接口但是不切换。排查思路就是算优先级。万一你 reduced 值刚好导致切换后的优先级和 Backup 相同这时要看接口 IP 大小因为优先级相等时接口 IP 大的胜出。这个是协议细节很多人会忽略。建议配置完 track 后实际把接口 shutdown 一次强制验证切换效果不要只在脑子里推断。第五个坑是虚拟 IP 冲突。实际生产环境里如果交换机配置了虚拟 IP 但局域网里还有一台真实设备的 IP 也是这个地址就会出现 ARP 冲突终端网关时通时断。所以规划地址时要确保虚拟 IP 不能和任何物理接口 IP 相同只能作为纯逻辑地址存在。第六个坑是防火墙或交换机的组播抑制。有些网络设备默认会过滤组播报文VRRP 报文用的是 224.0.0.18如果中间链路存在不支持 VRRP 组播透传的设备或者 ACL 默认丢弃组播流量备份设备就会收不到通告于是双 Master。这类问题排查的时候先在两台设备上互相 ping 对端真实地址再查组播一层层缩小范围就清楚了。第七个坑是抢占延迟设得太短或者没设。链路抖动时设备频繁抢占终端会反复断网重连。这里强烈建议生产环境设置抢占延迟比如 30 秒到 60 秒。实验环境为了方便观察可以短一点但生产环境千万别省。第八个坑是配置了接口跟踪但没有跟踪对端口。比如上行链路是两条链路做链路聚合你只跟踪了其中一个成员口即便整个聚合组 down 了只要有一个成员口还 up就认为是正常的。这种情况下应该跟踪 Eth-Trunk 接口而不是单个物理接口。第九个坑是忘记配置静态路由。VRRP 只解决网关冗余不解决路由问题。如果设备已经切换成 Master但它没有到外网的默认路由终端一样上不了网。所以上面提到的默认路由配置也必须跟上。第十个坑是 VRRP 组内设备版本不一致。比如一台设备支持 VRRPv2 和 VRRPv3另一台只支持 VRRPv2。如果配置了 VRRPv3 的组旧设备无法参与。华为设备低版本不一定支持 v3组网前最好先确认两端设备的软件版本支持情况。7. 进阶操作让 VRRP 更符合生产环境的几个细节基础实验做完之后有几个细节值得在实际组网里加上。第一个细节是多网关组的负载均衡。我们已经在实验里通过设置不同 VLAN 各自的主设备实现了负载分担实际项目中还可以让不同 VRRP 组的优先级完全反向比如 VLAN10 主 SW1、备 SW2VLAN20 主 SW2、备 SW1。这种设计的好处是两台核心交换机都在转发流量不浪费一台设备。第二个细节是配置 BFD 联动。VRRP 默认基于通告报文感知故障感知时间在 3 秒左右。如果想达到毫秒级切换可以配置 BFD 会话绑定到 VRRP 接口上。BFD 是一种快速检测机制两端设备定期发送检测报文链路故障时能在几百毫秒内发现。配置命令类似这样interface Vlanif10 vrrp vrid 1 track bfd-session 1 reduced 30但注意BFD 会话需要两端配合配置复杂度高一些适合核心业务网络。第三个细节是配置 VRRP 的认证。华为设备支持 simple 和 md5 两种认证方式。在不可信的二层网络里配置认证可以防止非法设备发送伪造 VRRP 报文干扰主备切换。生产环境建议至少使用 simple 认证。配置认证示例interface Vlanif10 vrrp vrid 1 authentication-mode md5 HUAWEIVRRP两端认证方式和密码必须一致否则无法建立 VRRP 邻居关系。第四个细节是监控 VRRP 状态。生产网络可以通过 SNMP 来监控 VRRP 的状态变更告警阈值和事件上报都建议提前配好。这样主备切换发生时网管系统能第一时间产生告警而不会出现“设备切了半天没人知道”的情况。第五个细节是预留上联带宽。如果双核心设计主设备承担全部流量时它的上联带宽一定要大于实际业务峰值。否则主备切换后备用设备上联带宽不够整个网络一样会拥塞。很多中型企业网络就是这样切是切过去了但主设备带宽不够业务表现依旧稀烂。8. 真实部署中的设计理念VRRP 不是万能的最后想聊一下设计理念上的问题。很多刚接触网络的工程师容易把 VRRP 当成灵丹妙药觉得配了 VRRP 就高枕无忧了。实际上 VRRP 解决的只是网关冗余问题它不解决接入交换机故障问题不解决链路带宽问题也不解决路由协议收敛问题。VRRP 是二层协议它面向的是用户网关的冗余设计。如果你想实现的是全网的链路级冗余那需要用到堆叠、链路聚合和动态路由协议配合。比如核心交换机做堆叠下行链路做 Eth-Trunk上行跑 OSPF那才是真正意义上的“无环、无单点”架构。VRRP 在这个架构里可以退到备用方案甚至在某些场景下完全不需要。那为什么还有这么多网络在用 VRRP一是成本低不需要额外的堆叠线缆和专用板卡二是设备兼容性好华为、其他品牌甚至混合品牌之间也能跑标准 VRRP三是配置简单两三条命令就能组一个备份组。它适合的是中小型网络的网关冗余场景这是它最大的实用价值。在做这个实验的时候我建议你动手做三件事加深理解第一把 SW1 的优先级改成和 SW2 一样看看谁是 Master理解同优先级下的比较规则第二把 reduced 值从 30 改成 10然后 shutdown 上行接口观察切换是否失败体会配置数值背后的逻辑第三调整抢占延迟从 0 改到 60 秒理解抢占延迟在业务稳定性上的作用。这三件事做完你对 VRRP 的理解就不是停留在命令层面而是真正理解了协议设计的每个环节。配置实验做得多了你会发现网络方案里真正关键的不是某个命令记没记住而是对原理的把握程度。遇到故障时能快速判断出问题出在哪一层、是状态机卡住了、还是优先级算错了、还是报文被中间设备拦了这比背十页命令都管用。这个实验中那些不起眼的细节比如抢占延迟、track 优先级数值、通告间隔都是将来排障时的突破口。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑