1. 为什么需要VRRP从单点故障说起做网络运维的人最怕听到的一句话大概就是“网关不通了”。网关是整个子网的出口一旦网关设备宕机下面挂着的所有终端——服务器、PC、打印机、摄像头——全部变成信息孤岛。你可以有最贵的核心交换机、最稳的链路聚合、最完善的冗余电源但只要网关是单台设备它就是一个随时可能引爆的单点故障。我见过太多中小型网络栽在这个坑里。某公司办公网核心交换机兼做网关某天下午电源模块故障整层楼断网四十分钟业务部门电话打爆运维的手机。事后复盘链路是双上行交换机是双电源偏偏网关只有一台冗余做得再漂亮出口一挂全白搭。解决这个问题的思路其实很朴素既然一台网关会挂那就放两台一台主用一台备用主用挂了备用顶上。但问题来了——终端设备上的网关地址是手动配的或者DHCP下发的它只知道一个IP地址。你没法让终端自动切换网关IP除非改DHCP或者重新配。这时候就需要一种机制让两台物理设备对外表现为一个虚拟网关共用同一个虚拟IP和虚拟MAC终端只认这个虚拟网关至于背后是哪台设备在转发终端不关心。这就是**VRRPVirtual Router Redundancy Protocol虚拟路由器冗余协议**要解决的核心问题。它把多台物理路由器或三层交换机组合成一个虚拟路由器组组内选举出一台主设备Master负责实际转发其他设备作为备用Backup待命。Master周期性发送通告报文Backup通过收不到通告来判断Master是否存活一旦确认Master故障立即重新选举并接管虚拟IP和虚拟MAC整个过程对终端透明。VRRP适合谁学网络运维工程师、系统集成实施人员、数据中心网络架构师以及任何需要设计高可用网络出口的人。它不复杂但细节很多配置错一个参数就可能导致双主、频繁切换、流量黑洞。下面我把VRRP从设计思路到实操配置到排错经验完整拆一遍。2. VRRP核心机制深度拆解2.1 虚拟路由器与VRID组的身份标识VRRP的核心概念是虚拟路由器Virtual Router。一个虚拟路由器由一组物理设备组成它们共享一个VRIDVirtual Router Identifier范围1到255。同一个广播域内不同VRID代表不同的虚拟路由器组互不干扰。每台参与VRRP的物理设备在组内有几个关键角色Master主设备实际持有虚拟IP和虚拟MAC负责转发发往虚拟网关的流量并周期性发送VRRP通告报文。Backup备用设备监听Master的通告随时准备接管。不转发流量但保持状态同步。IP地址拥有者IP Address Owner如果某台设备的物理接口IP恰好等于虚拟IP它就是IP地址拥有者优先级自动为255永远是Master。这种场景一般用于设备本身就是网关地址的情况。虚拟MAC的格式是固定的00-00-5E-00-01-{VRID}。比如VRID为1虚拟MAC就是00-00-5E-00-01-01。这个MAC是协议规定的不需要手动配置终端ARP请求虚拟IP时Master会用自己的虚拟MAC回应。注意虚拟MAC的最后一段是VRID的十六进制表示。VRID10时虚拟MAC是00-00-5E-00-01-0A不是00-00-5E-00-01-10。这个细节在抓包分析时很容易搞混。2.2 优先级与选举谁当MasterVRRP通过**优先级Priority**来决定谁当Master。优先级范围0到255数值越大越优先。默认值是100。优先级255保留给IP地址拥有者0保留给主动放弃Master角色的场景。选举规则很直接优先级最高的设备成为Master。优先级相同时比较接口IP地址IP大的成为Master。IP地址拥有者优先级自动为255直接成为Master。这里有个容易踩的坑很多人以为优先级相同就会冲突或者随机选实际上VRRP有明确的比较规则不会出现双主。但如果你配置时把两台设备的优先级都设成100接口IP又恰好一样比如都是DHCP获取的那就可能出现问题。所以生产环境建议手动指定不同的优先级比如主用150备用120。优先级可以动态调整配合**抢占模式Preempt Mode**使用。抢占模式默认开启意思是当一台优先级更高的设备恢复上线后它会重新抢回Master角色。如果你不希望频繁切换可以关闭抢占让当前Master一直干到故障为止。2.3 通告报文与状态机心跳如何维持Master每隔Advertisement Interval通告间隔默认1秒发送一次VRRP通告报文目的地址是组播地址224.0.0.18TTL为255。Backup收到通告后重置自己的Master Down Interval计时器。Master Down Interval的计算公式是Master_Down_Interval 3 × Advertisement_Interval Skew_Time Skew_Time (256 - Priority) / 256举个例子优先级100通告间隔1秒Skew_Time (256 - 100) / 256 ≈ 0.609秒 Master_Down_Interval 3 × 1 0.609 ≈ 3.609秒也就是说Backup大约在3.6秒后确认Master故障并开始选举。优先级越高的BackupSkew_Time越小越早进入选举状态这保证了高优先级设备能更快接管。VRRP的状态机有三个状态Initialize初始状态接口刚启动或配置刚加载。Master实际转发状态发送通告。Backup监听状态等待接管。状态迁移的触发条件包括接口Up/Down、收到优先级更高的通告、Master Down计时器超时等。理解状态机对排错非常重要后面讲故障排查时会用到。3. VRRP配置实操从零搭建双机热备网关3.1 实验拓扑与地址规划先明确实验环境。假设有两台三层交换机分别命名为SW1和SW2下挂一台接入交换机接入交换机上连一台测试PC。SW1和SW2之间通过Trunk互联VLAN 10作为业务VLANVLAN 100作为心跳VLAN也可以直接用业务VLAN跑VRRP但独立心跳VLAN更清晰。地址规划如下设备接口VLANIP地址VRRP优先级角色SW1VLAN1010192.168.10.2/24150MasterSW2VLAN1010192.168.10.3/24120Backup虚拟网关VLAN1010192.168.10.1/24——SW1VLAN10010010.0.0.1/30——SW2VLAN10010010.0.0.2/30——PC网卡—192.168.10.100/24——PC的网关指向192.168.10.1这个地址在SW1和SW2上都不存在物理接口而是VRRP虚拟出来的。3.2 基础配置步骤以某主流厂商的三层交换机配置风格为例不同厂商命令有差异但逻辑一致。SW1的配置# 创建VLAN vlan 10 vlan 100 # 配置业务接口 interface vlan 10 ip address 192.168.10.2 255.255.255.0 vrrp vrid 1 virtual-ip 192.168.10.1 vrrp vrid 1 priority 150 vrrp vrid 1 preempt-mode vrrp vrid 1 advertisement-interval 1 # 配置心跳接口 interface vlan 100 ip address 10.0.0.1 255.255.255.252SW2的配置vlan 10 vlan 100 interface vlan 10 ip address 192.168.10.3 255.255.255.0 vrrp vrid 1 virtual-ip 192.168.10.1 vrrp vrid 1 priority 120 vrrp vrid 1 preempt-mode vrrp vrid 1 advertisement-interval 1 interface vlan 100 ip address 10.0.0.2 255.255.255.252配置完成后用display vrrp或show vrrp查看状态。正常情况下SW1显示MasterSW2显示Backup。3.3 关键参数选择与计算通告间隔Advertisement Interval默认1秒。调小可以加快切换速度但会增加协议报文开销。一般网络1秒足够对切换时间敏感的场景可以调到200毫秒但要注意所有组内设备必须一致否则会出现双主。优先级Priority建议主用设备设150备用设120留出足够差距。不要设成101和100差距太小容易因为Skew_Time计算导致意外抢占。抢占模式Preempt默认开启。如果主用设备不稳定频繁重启建议关闭抢占让备用设备稳定运行等维护窗口再手动切回。认证AuthenticationVRRP支持简单字符认证和MD5认证。生产环境建议开启MD5认证防止非法设备加入VRRP组。配置示例vrrp vrid 1 authentication-mode md5 mypassword注意认证密码所有组内设备必须一致否则通告报文会被丢弃导致双主。监视上行接口Track这是VRRP最实用的功能之一。如果Master的上行链路断了但它和Backup之间的心跳还在Master会继续当Master但流量到了Master后出不去形成黑洞。通过Track监视上行接口接口Down时自动降低优先级触发切换。# SW1上配置Track track 1 interface GigabitEthernet0/0/1 line-protocol vrrp vrid 1 track 1 priority reduced 30这样当上行接口故障时SW1的VRRP优先级从150降到120SW2的120和它相同再比较IP地址SW2的IP更大192.168.10.3 192.168.10.2SW2成为Master。这个计算过程要心里有数否则可能降了优先级还是抢不过。4. VRRP与其它冗余协议的对比选型4.1 VRRP vs HSRP vs GLBP这三个协议解决的都是网关冗余问题但出身和特性不同。特性VRRPHSRPGLBP标准IEEE RFC 3768厂商私有厂商私有虚拟MAC00-00-5E-00-01-{VRID}00-00-0C-07-AC-{组号}00-07-B4-00-00-{组号}组播地址224.0.0.18224.0.0.2224.0.0.102默认优先级100100100负载均衡不支持需多组不支持需多组支持抢占默认开启默认关闭默认开启认证支持支持支持VRRP是国际标准多厂商设备可以混用。HSRP和GLBP是某厂商私有协议只能同厂商设备组网。GLBP支持负载均衡多台设备可以同时转发流量利用率更高但兼容性差。选型建议如果网络设备品牌统一追求负载均衡可以考虑GLBP。如果多品牌混用或者需要标准化VRRP是首选。HSRP现在用得越来越少新项目基本不考虑。4.2 VRRP与堆叠/MLAG的关系有人会问既然有了设备堆叠比如把两台交换机堆叠成一台逻辑设备还需要VRRP吗堆叠确实能解决网关单点故障因为堆叠后两台设备对外就是一台网关IP配在堆叠口上一台成员故障另一台继续转发。但堆叠有距离限制一般要求设备在同一机房甚至相邻机柜跨机房部署就不行了。VRRP没有距离限制只要三层可达就能组网适合跨机房、跨楼层的冗余。另外堆叠的故障域更大堆叠线缆或堆叠协议出问题可能导致整个堆叠分裂处理起来比VRRP复杂。所以实际项目中同机房可以用堆叠跨机房用VRRP两者并不互斥。4.3 多组VRRP实现负载分担标准VRRP同一时间只有一台Master转发流量备用设备闲置。如果觉得浪费可以配置多个VRRP组让不同VLAN的网关分布在不同设备上。比如VLAN 10的VRRP组1SW1为MasterVLAN 20的VRRP组2SW2为Master。这样两台设备都承担部分流量利用率翻倍。配置示例# SW1 interface vlan 10 vrrp vrid 1 virtual-ip 192.168.10.1 vrrp vrid 1 priority 150 interface vlan 20 vrrp vrid 2 virtual-ip 192.168.20.1 vrrp vrid 2 priority 120 # SW2 interface vlan 10 vrrp vrid 1 virtual-ip 192.168.10.1 vrrp vrid 1 priority 120 interface vlan 20 vrrp vrid 2 virtual-ip 192.168.20.1 vrrp vrid 2 priority 150这种方案要注意上行链路带宽和路由设计确保来回路径一致避免非对称路由导致的问题。5. VRRP常见故障与排错实录5.1 双主故障最危险的情况双主是VRRP最严重的故障两台设备都认为自己是Master都持有虚拟IP和虚拟MAC导致ARP表混乱、流量时通时断。常见原因心跳链路中断VRRP通告报文无法送达Backup收不到通告认为Master挂了自己升为Master。而原Master还在正常运行形成双主。认证不一致两端认证密码或认证模式不同通告报文被丢弃。VRID冲突同一广播域内两个不同的VRRP组用了相同VRID互相干扰。通告间隔不一致一端1秒一端3秒计时器计算错乱。排查方法检查心跳链路是否UpVLAN是否放通。用display vrrp statistics查看通告收发计数如果收到0个通告说明链路或认证有问题。抓包确认VRRP报文是否正常发送和接收目的MAC是否为01-00-5E-00-00-12。检查两端配置是否完全对称特别是VRID、认证、通告间隔。实操心得我习惯在VRRP配置完成后手动断开主设备的心跳接口观察备用设备是否在预期时间内接管。这个测试能提前暴露大部分配置问题。5.2 频繁切换网络震荡的元凶频繁切换表现为VRRP状态在Master和Backup之间反复跳变日志里大量状态迁移记录。原因通常是链路闪断物理接口或光纤链路不稳定Up/Down频繁。抢占模式优先级接近主备优先级只差1或2Skew_Time差异极小容易反复抢占。CPU过高设备CPU利用率长期90%以上VRRP通告发送延迟或丢失。Track监视了不稳定的接口比如监视了一个经常闪断的上行口导致优先级反复升降。解决办法加大主备优先级差距至少20关闭不必要的抢占检查物理链路质量优化设备CPU。5.3 流量黑洞Master在但出不去这种情况很隐蔽VRRP状态正常Master也在转发但终端上不了网。原因是Master的上行链路故障但VRRP心跳正常Master没有触发切换。解决方案就是前面提到的Track功能。把上行接口和VRRP绑定接口Down时自动降优先级。更高级的做法是Track一个探测目标比如用track 1 ip route 8.8.8.8 32监视到公网的路由可达性路由消失时触发切换。5.4 常见问题速查表现象可能原因排查命令解决措施双主心跳断/认证不一致/VRID冲突display vrrp statistics检查链路、认证、VRID频繁切换链路闪断/优先级接近/CPU高display logbuffer加大优先级差、检查链路不切换Track未配/抢占关闭display vrrp配置Track、开启抢占终端ARP异常虚拟MAC冲突arp -a检查VRID是否重复切换慢通告间隔大/优先级低display vrrp调小间隔、提高优先级6. VRRP进阶技巧与生产环境经验6.1 与BFD联动实现毫秒级切换VRRP默认切换时间在3秒左右对金融交易、实时通信等场景来说太慢。**BFDBidirectional Forwarding Detection双向转发检测**可以提供毫秒级的链路故障检测与VRRP联动后切换时间可以降到50毫秒以内。配置思路建立BFD会话监视主备之间的心跳链路BFD检测到故障后立即通知VRRPVRRP不等Master Down计时器超时就直接切换。# 配置BFD会话 bfd bfd session1 bind peer-ip 10.0.0.2 interface vlan 100 discriminator local 1 discriminator remote 2 commit # VRRP联动BFD interface vlan 10 vrrp vrid 1 track bfd-session session1 priority reduced 30BFD的检测间隔可以调到50毫秒甚至更低具体取决于设备性能。生产环境建议先在小范围测试确认稳定后再推广。6.2 VRRP与DHCP的配合终端通过DHCP获取IP时网关地址由DHCP服务器下发。如果DHCP服务器下发的网关是VRRP虚拟IP终端就自动获得了冗余网关。配置时注意DHCP的Option 3默认网关要指向虚拟IP而不是某台物理设备的接口IP。如果DHCP服务器本身也做了冗余那整个网络从地址分配到网关转发都是高可用的这是比较理想的设计。6.3 监控与告警配置VRRP状态变化需要及时告警否则故障切换了运维还不知道。监控要点VRRP状态迁移次数短时间内多次迁移说明网络不稳定。当前Master设备确认是否符合预期。通告报文收发计数收发不平衡说明链路或认证有问题。Track状态监视的接口或路由是否正常。可以通过SNMP Trap或Syslog将VRRP状态变化推送到监控平台设置阈值告警。比如5分钟内状态迁移超过3次立即通知运维介入。6.4 生产环境部署检查清单上线前逐项核对VRID在同一广播域内唯一无冲突。主备优先级差距≥20避免频繁抢占。通告间隔两端一致默认1秒。认证模式及密码两端一致。Track已配置监视上行接口或关键路由。抢占模式根据业务需求确认开启或关闭。心跳链路独立VLAN避免业务流量干扰。监控告警已配置状态变化可感知。切换测试已完成备用设备接管正常。回切测试已完成主设备恢复后能正常抢回。这份清单是我在多个项目里踩坑后总结的每次上线前过一遍能避免大部分低级错误。特别是第9和第10条很多人只测切换不测回切结果主设备修好后回不来或者回来了又引发震荡。6.5 虚拟化环境下的VRRP注意事项在虚拟化平台里跑VRRP有几个特殊点MAC地址学习虚拟交换机的MAC学习表可能和物理交换机不同虚拟MAC的泛洪行为需要确认。混杂模式如果VRRP跑在虚拟机上虚拟网卡需要允许混杂模式否则收不到组播通告。时钟同步多台虚拟机的时钟要同步否则计时器计算可能出偏差。资源争抢虚拟机CPU争抢可能导致VRRP通告发送延迟建议给VRRP所在虚拟机预留CPU资源。这些问题在物理设备上不存在但在虚拟化环境里很常见部署前要和虚拟化团队确认清楚。6.6 一个真实的排错案例某次项目上线后客户反馈每天上午9点左右网络会卡顿几秒。查VRRP日志发现每天9点整SW1和SW2发生一次状态切换。进一步排查发现SW1上配置了定时任务每天9点执行配置备份备份过程中CPU飙高VRRP通告发送延迟超过Master Down IntervalSW2误判Master故障抢占了Master。备份完成后SW1又抢回来导致两次切换。解决办法把配置备份任务改到凌晨低峰期同时给VRRP进程提高调度优先级。这个问题查了三天最后发现是定时任务惹的祸。所以VRRP排错不能只看VRRP本身要结合设备整体运行状态分析。6.7 虚拟MAC的ARP老化问题终端ARP表里缓存的是虚拟MAC切换后新Master用的还是同一个虚拟MAC所以终端不需要更新ARP这是VRRP切换快的原因之一。但如果终端ARP老化时间很短切换后可能重新发ARP请求新Master会响应。这个过程一般很快不影响业务。需要注意的是某些操作系统特别是老版本的WindowsARP缓存行为比较特殊切换后可能短暂不通。遇到这种情况可以在Master上配置免费ARPGratuitous ARP切换后主动通告虚拟MAC加速终端更新。# 配置免费ARP发送 vrrp vrid 1 gratuitous-arp enable这个功能默认一般是开启的但有些厂商默认关闭配置前确认一下。6.8 VRRP在SDN和云网络中的演变传统VRRP是分布式控制平面协议每台设备独立计算。在SDN和云网络里网关冗余的实现方式发生了变化。比如某些云平台用分布式网关每个计算节点都承担网关功能流量就近转发不再依赖VRRP选举。但VRRP在传统数据中心和园区网里仍然是主流方案短期内不会被完全替代。理解VRRP的原理对理解这些新方案也有帮助因为核心问题是一样的如何让多个设备协同提供一个高可用的虚拟网关。我在实际项目中的体会是VRRP配置本身不难难的是把各种边界情况考虑周全。心跳链路、上行链路、认证、Track、BFD、监控每个环节都可能出问题。每次上线前把检查清单过一遍能省下大量排错时间。另外切换测试一定要做而且要在业务低峰期做别等真出故障了才发现备用设备接管不了。
阅读完成 · 觉得有帮助?