0. 课件来源
VRRP(Virtual Router Redundancy Protocol,虚拟路由冗余协议)通过将多台物理网关虚拟为一台逻辑网关,实现网关冗余与负载分担。本节深入讲解 VRRP 的选举机制、状态切换、抢占延时、Track 跟踪以及多组 VRRP 负载分担。
1. 为什么需要 VRRP
1.1 网关冗余的困境
SW1 vlanif10 .254 ───┐
PC1 (.1) ──── vlan10 ─────────┤
SW2 vlanif10 .253 ───┘- PC1 配 SW1 网关 → SW1 故障则断网,无法冗余
- PC1 配 SW1、PC2 配 SW2 → 负载分担,但任一交换机故障则对应 PC 业务中断
VRRP 解决:PC 网关指向虚拟 IP(VIP),VIP 映射到 SW1/SW2,任一故障切换由对端接管,实现冗余 + 可选负载分担。
2. VRRP 核心术语
| 术语 | 说明 |
|---|---|
| VR | Virtual Router,虚拟路由器(多台物理设备组成一台逻辑设备) |
| VRID | Virtual Router ID(1-255),影响 VMAC(最后一字节对应 VRID) |
| Master | 主设备,有且只有一个,转发 VIP 流量 |
| Backup | 备份设备,除 Master 外都是 Backup,监听 Master 状态 |
| VIP | Virtual IP,终端的默认网关 |
| VMAC | Virtual MAC,格式 00-00-5E-00-01-{VRID} |
💡 VMAC 的由来
VRRP 标准 RFC 3768 规定 VMAC 为 0000-5E00-01XX,最后 1 字节与 VRID 对应。例如 VRID=10,VMAC=0000-5E00-010A。终端 ARP 查询 VIP 时,Master 用 VMAC 作为源 MAC 回应。
3. VRRP 角色选举
| 选举步骤 | 字段 | 默认值 | 说明 |
|---|---|---|---|
| 1 | Priority 大的为主 | 100 | 配置范围 1-254 |
| 2 | 接口 IP 地址 大的为主 | — | 优先级相同,IP 大的成为 Master |
# SW1
interface vlanif10
ip address 192.168.1.254 24
vrrp vrid 10 virtual-ip 192.168.1.100
# SW2
interface vlanif10
ip address 192.168.1.253 24
vrrp vrid 10 virtual-ip 192.168.1.100
vrrp vrid 10 priority 105 # 优先 SW1 (默认100) → SW2 修改为 105 更高⚠️ 默认抢占
VRRP 默认开启抢占:一旦 Master 故障,Backup 中优先级最高的成为新 Master;原 Master 恢复后会抢占回来。可通过 preempt-mode disable 关闭抢占或抢占延时。
4. Priority 255 与 0 的特殊含义
| Priority 值 | 含义 |
|---|---|
| 255 | VRRP Owner(VIP = 物理接口 IP),自动获得 255,不可手动配置 |
| 0 | Master 主动离开(shutdown/删除配置),发送 pri=0 通告 Backup 切换 |
| 100(默认) | 未配置时的默认值 |
| 1-254 | 手动配置范围 |
4.1 为什么不能配置 255
假设允许手工配 255:
SW1:192.168.1.254 vip=192.168.1.253 priority手工255
SW2:192.168.1.253 vip=192.168.1.253 priority自动255(因自己是Owner)
→ SW1 手工 255 后与 SW2 Owner 255 冲突,地址语义错乱结论:255 保留给 Owner,手工只能配到 254。VIP = 物理接口 IP 的设备自动成为 Owner。
[SW2-Vlanif10] vrrp vrid 10 virtual-ip 192.168.1.253
Warning: The priority of this VRRP backup group has changed to 255 and will not change.4.2 为什么不能配置 0
Priority=0 是 Master 向 Backup 发送"我要离开了"的特殊消息,手工配置 0 无意义且会干扰正常切换。
5. VRRP 状态机
owner? ───yes──→ MASTER
Initialize
└───no───→ BACKUP ──(MDI超时/pri=0)──→ MASTER5.1 三个状态
| 状态 | 行为 |
|---|---|
| Initialize | 接口刚启用/配置变更;检查是否 Owner(是 →Master,否 →Backup) |
| Backup | 监听 Master 的 VRRP Announcement;不转发、不响应 ARP |
| Master | 发送免费 ARP、响应 ARP、转发流量、周期发 VRRP 报文 |
5.2 Skew-Time(偏移时间)
Backup 等待 Master 下线后切换 Master 前的等待时间:
skew-time = (256 - priority) / 256 秒| Priority | skew-time |
|---|---|
| 100 | 0.6 秒 |
| 200 | 0.2 秒 |
| 254 | 0.0078 秒 |
机制:优先级越高的 Backup skew-time 越小,越快成为新 Master,避免多个 Backup 同时切换发生冲突。
5.3 Master_Down_Interval(MDI)
MDI = 3 * hello(1秒) + skew-time| Priority | MDI |
|---|---|
| 100 | 3.6 秒 |
| 254 | 3.0078 秒 |
Backup 在 MDI 内持续收不到 Master 报文 → 切换为 Master。
6. Master 与 Backup 的职责
6.1 Master 职责
| 编号 | 职责 |
|---|---|
| 1 | 成为 Master 后,发送 免费 ARP(sMAC=VMAC,dMAC=FFFF…)告知全网 |
| 2 | 响应终端对 VIP 的 ARP 查询 |
| 3 | 转发 dMAC=VMAC 的流量 |
| 4 | 周期(1秒)发送 VRRP Announcement(sip=接口IP,dip=224.0.0.18) |
| 5 | 收到 priority > 自己 的 VRRP 报文 → 立刻切换 Backup |
| 6 | 收到 priority = 自己 的报文 → 比 IP,IP 大的为主 |
| 7 | 接口 shutdown / 删除 VRRP → 发送 priority=0,切为 Initialize |
💡 免费 ARP 的双重作用
- DAD(Duplicate Address Detection):宣告 VMAC 占用
- 快速切换:让交换机学习 VMAC 现在在本交换机的接口上,切换时全网立即更新 MAC 表
6.2 Backup 职责
| 编号 | 职责 |
|---|---|
| 1 | 不响应 VIP 的 ARP 查询 |
| 2 | 不转发 dMAC=VMAC 的流量 |
| 3 | 不发 VRRP 报文,侦听 Master 的 Announcement |
| 4 | 收到 pri > 自己 → 保持 Backup,重置 MDI 计时器 |
| 5 | 收到 pri = 自己 → 保持 Backup,重置 MDI(保持稳定) |
| 6 | 收到 pri < 自己 → 按抢占模式决定:立即/延时抢占/不抢占 |
| 7 | 收到 pri = 0 → 等自己的 skew-time 超时,切换 Master |
| 8 | 收不到报文 → 等自己的 skew-time 超时,切换 Master |
7. Track 跟踪(上游故障感知)
7.1 问题
VRRP Master 通过周期发 Announcement 证明自己健在;Backup 通过侦听感知 下游链路故障。但 上游链路故障(Master 到外网)时,Master 仍在发 VRRP 报文,Backup 无法感知。
7.2 解决方案
在 Master 的上游接口配置 track,上游接口 down → 减小 VRRP Priority → 让 Backup 优先级更高自动切换为 Master。
SW2:
interface vlanif10
ip address 192.168.1.253 24
vrrp vrid 10 virtual-ip 192.168.1.100
vrrp vrid 10 priority 105
vrrp vrid 10 track interface GigabitEthernet0/0/23
# 默认 track 一次 priority -10| 触发条件 | Priority 变化 | 切换效果 |
|---|---|---|
| 上游接口 down | -10(默认)或自定义 | 由 105 → 95,低于默认 100 → Backup 切换 |
# 自定义减量
vrrp vrid 10 track interface GigabitEthernet0/0/23 reduced 308. VRRP 安全认证
8.1 问题
若攻击者私接一台交换机并抢占 Master,则 VIP 流量被劫持 → 数据泄密。
8.2 配置 MD5 认证
SW1:
interface vlanif10
ip address 192.168.1.254 24
vrrp vrid 10 virtual-ip 192.168.1.100
vrrp vrid 10 authentication-mode md5 huahua123
SW2:
interface vlanif10
ip address 192.168.1.253 24
vrrp vrid 10 virtual-ip 192.168.1.100
vrrp vrid 10 priority 105
vrrp vrid 10 authentication-mode md5 huahua123认证失败时:不接收对方的 VRRP 报文,防止恶意抢占。
9. 抢占延时
9.1 问题
若 Master 频繁抖动(down → up → down),则不停抢占切换,网络不稳定。
9.2 配置
SW2:
interface vlanif10
ip address 192.168.1.253 24
vrrp vrid 10 virtual-ip 192.168.1.100
vrrp vrid 10 priority 105
vrrp vrid 10 authentication-mode md5 huahua123
vrrp vrid 10 preempt-mode timer delay 10 # 故障恢复后等 10 秒再抢占| 模式 | 配置 | 行为 |
|---|---|---|
| 默认抢占 | — | Master 恢复立即抢占 |
| 延时抢占 | preempt-mode timer delay 10 | 等 10 秒才抢占 |
| 不抢占 | preempt-mode disable | 不抢占,除非自己优先级变化 |
10. 多组 VRRP 负载分担
10.1 场景
单组 VRRP:VLAN10 全部走 SW2 → SW2 拥塞。
10.2 多组 VRRP 负载分担
# SW1(在 VRID 20 为主,VRID 10 为备)
interface vlanif10
ip address 192.168.1.254 24
vrrp vrid 20 virtual-ip 192.168.1.254 # 自己IP=VIP,Owner,priority=255
vrrp vrid 10 virtual-ip 192.168.1.253 # 对端IP=VIP,Backup
# SW2(在 VRID 10 为主,VRID 20 为备)
interface vlanif10
ip address 192.168.1.253 24
vrrp vrid 10 virtual-ip 192.168.1.253 # 自己IP=VIP,Owner,priority=255
vrrp vrid 20 virtual-ip 192.168.1.254 # 对端IP=VIP,Backup| VRID | SW1 角色 | SW2 角色 | VIP |
|---|---|---|---|
| 10 | Backup | Master | 192.168.1.253 |
| 20 | Master | Backup | 192.168.1.254 |
终端 PC 配置网关时可选择两个 VIP 之一,两组 VRRP 同时分担流量又互为冗余。
11. VRRP 部署最佳实践
- 优先配 VRRP Owner:VIP = 物理接口 IP,自动 priority=255 成为 Master,无需协商即转发数据
- VIP 已规划好别造冲突时:将主网关配置 priority=254,Backup 配默认 100,通过 skew-time 快速切换
- 默认配置场景:双方默认 100,skew-time 各为 0.6 秒,先切换为 Master 的一方发布免费 ARP,另一方收到高优先级报文退为 Backup
12. 易混淆点与考前速记
| 对比项 | 结论 |
|---|---|
| 七车位、上级故障、抖动 | 三者分别对应 Track、抢占延时、多组 VRRP |
| Owner 的 Priority | 自动 255,不可手动配置,VIP=物理接口 IP |
| Priority 0 含义 | Master 主动离开,发送 pri=0 通告 Backup 即时切换 |
| Skew-Time 公式 | (256 - priority) / 256 秒 |
| MDI 公式 | 3 * hello(1秒) + skew-time |
| VRRP 报文目的 IP | 224.0.0.18 |
| VMAC 格式 | 0000-5E00-01{VRID} |
| 默认抢占 | 开启,延时 0 秒 |
| 接口 IP 大优先(仅pri相等时) | 优先级相等才比较,不是任何时候都比较 |
考前速记 10 条:
VRID 1-255;VMAC 最后一字节 = VRID;VIP = 终端网关Priority 默认 100,配置 1-254,255 给 Owner,0 用于 Master 主动离开Owner:自己接口 IP 就是 VIP → 自动 priority=255 → 直接 Master选举:优先级大 → 接口 IP 大Skew-Time = (256 - priority) / 256MDI = 3 * hello + skew-time,hello 默认 1 秒Master 周期 1 秒发 Announcement,dip=224.0.0.18Master 接口 Down → 发 pri=0 → Backup 等 skew-time 切换Track 监控上游接口,down 后 priority 自减,让 Backup 接管多组 VRRP 实现负载 + 冗余:一组 VIP 配两个,每组 Master 不同
🤖 AI 伴学
想把 VRRP 状态机和 skew-time 理解更透彻,可以让 AI 做"领导班子"类比:
"请用'公司领导班子的正职和副职'来类比 VRRP 的 Master/Backup:正职(Master)定期向上汇报'我在岗',如果报平安消息连续3.6秒不到,副职(Backup)就根据威望(priority)接管。再用这个类比解释:为什么 priority 越高的副职 skew-time 越短(威望高的人听到正职失联就能最快上岗)。最后说明抢占延时就像'正职恢复后先观察10天再复职',防止频繁反复上下台降低团队稳定性。"
