VRRP (Virtual Router Redundancy Protocol) 虚拟路由冗余协议是一种容错协议,它提供了一种在局域网中实现默认网关冗余的机制。VRRP将多个路由器组成一个虚拟路由器组,对外提供一个虚拟IP地址和虚拟MAC地址。
由多个物理路由器组成的逻辑路由器,对外表现为一个单一的路由器实体。
虚拟路由器的IP地址,作为局域网内主机的默认网关地址。
格式为 00-00-5E-00-01-{VRID},其中VRID为虚拟路由器ID。
负责转发数据包的路由器,拥有虚拟IP地址。
监听主路由器状态,在主路由器故障时接管流量。
| 参数 | 取值范围 | 默认值 | 说明 |
|---|---|---|---|
| VRID | 1-255 | - | 虚拟路由器标识 |
| 优先级 | 1-254 | 100 | 路由器优先级 |
| 心跳间隔 | 1-255秒 | 1秒 | Advertisement报文发送间隔 |
| Master_Down_Interval | 3-255秒 | 3秒 | 主路由器失效判定时间 |
路由器启动后,根据配置的优先级确定初始角色。优先级最高的成为主路由器,其他为备份路由器。
主路由器定期发送VRRP Advertisement报文,通告自己的状态和优先级。
备份路由器监听主路由器的Advertisement报文,更新Master_Down_Interval定时器。
备份路由器在Master_Down_Interval内未收到主路由器的报文,判定主路由器故障。
备份路由器中优先级最高的切换为新的主路由器,接管虚拟IP地址和流量转发。
原主路由器恢复后,根据抢占机制决定是否重新成为主路由器。
主机A ←→ [虚拟IP: 192.168.1.1]
↓
┌─────────────────────┐
│ 虚拟路由器组 │
│ VRID = 10 │
└─────────────────────┘
↓
┌─────────┐ ┌─────────┐
│ 主路由器 │ │ 备份路由器│
│ 优先级120│ │ 优先级100│
│ 活跃状态 │ │ 监听状态 │
└─────────┘ └─────────┘
VRRP使用IP协议号112,封装在IP报文中传输。
VRRP报文格式 (RFC 5798)
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Version| Type | Virtual Rtr ID| Priority | Count IP Addrs|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Max Adver Int | Checksum | Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+ +
| IP Address (1) |
+ +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+ +
| IP Address (2) |
+ +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+ +
| IP Address (n) |
+ +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 字段 | 长度 | 说明 |
|---|---|---|
| Version | 4 bits | VRRP版本,V2为2,V3为3 |
| Type | 4 bits | 报文类型,1为Advertisement |
| Virtual Rtr ID | 8 bits | 虚拟路由器ID (1-255) |
| Priority | 8 bits | 优先级 (1-254),255保留给IP地址拥有者 |
| Count IP Addrs | 8 bits | 包含的IP地址数量 |
| Max Adver Int | 16 bits | 最大通告间隔 (centiseconds) |
| Checksum | 16 bits | 校验和 |
| IP Address | 32 bits | 虚拟IP地址列表 |
| 特性 | VRRPv2 (RFC 3768) | VRRPv3 (RFC 5798) |
|---|---|---|
| 支持协议 | 仅IPv4 | IPv4和IPv6 |
| 认证 | 支持 | 不支持 |
| 时间精度 | 秒 | 厘秒 |
| 报文格式 | 固定格式 | 更灵活 |
VRRP协议定义了三种路由器状态,通过状态机实现状态的转换。
┌─────────────┐
│ Initialize │
└──────┬──────┘
│ 接口UP
▼
┌─────────────┐ 优先级更高 ┌─────────────┐
│ Backup │◄───────────────►│ Master │
└──────┬──────┘ 收到更高优先级 └──────┬──────┘
│ 超时 │ 接口DOWN
▼ ▼
┌─────────────┐ ┌─────────────┐
│ Master │ │ Initialize │
└─────────────┘ └─────────────┘
VRRP协议通过多个定时器协调工作,确保协议的正常运行和快速故障检测。
// 定时器计算示例 // 路由器A:优先级120,Advertisement间隔1秒 Skew_Time_A = (256 - 120) / 256 = 0.53秒 Master_Down_Interval_A = 3 + 0.53 = 3.53秒 // 路由器B:优先级100,Advertisement间隔1秒 Skew_Time_B = (256 - 100) / 256 = 0.61秒 Master_Down_Interval_B = 3 + 0.61 = 3.61秒 // 结论:优先级越高,切换越快
以下展示不同厂商设备的VRRP配置方法。
# 基本VRRP配置 [Huawei] interface GigabitEthernet 0/0/1 [Huawei-GigabitEthernet0/0/1] ip address 192.168.1.2 24 [Huawei-GigabitEthernet0/0/1] vrrp vrid 10 virtual-ip 192.168.1.1 [Huawei-GigabitEthernet0/0/1] vrrp vrid 10 priority 120 [Huawei-GigabitEthernet0/0/1] vrrp vrid 10 preempt-mode [Huawei-GigabitEthernet0/0/1] vrrp vrid 10 timer advertise 1 # 跟踪接口配置 [Huawei-GigabitEthernet0/0/1] vrrp vrid 10 track interface GigabitEthernet 0/0/2 reduced 30 # 跟踪BFD会话 [Huawei-GigabitEthernet0/0/1] vrrp vrid 10 track bfd-session 1 increased 20
# 基本HSRP配置(Cisco私有协议) Cisco(config)# interface GigabitEthernet0/0 Cisco(config-if)# ip address 192.168.1.2 255.255.255.0 Cisco(config-if)# standby 10 ip 192.168.1.1 Cisco(config-if)# standby 10 priority 120 Cisco(config-if)# standby 10 preempt Cisco(config-if)# standby 10 timers 1 3 # 跟踪接口 Cisco(config-if)# standby 10 track GigabitEthernet0/1 decrement 30
# 基本VRRP配置
[H3C] interface GigabitEthernet 1/0/1
[H3C-GigabitEthernet1/0/1] ip address 192.168.1.2 24
[H3C-GigabitEthernet1/0/1] vrrp vrid 10 virtual-ip 192.168.1.1
[H3C-GigabitEthernet1/0/1] vrrp vrid 10 priority 120
[H3C-GigabitEthernet1/0/1] vrrp vrid 10 preempt-mode
[H3C-GigabitEthernet1/0/1] vrrp vrid 10 timer advertise 1
使用eNSP模拟器搭建VRRP实验环境,验证协议功能和故障切换。
Internet
│
┌───────────────┐
│ Router AR1 │
│ (ISP Router) │
└───────┬───────┘
│
┌─────────────┼─────────────┐
│ │ │
┌─────▼─────┐ ┌─────▼─────┐ ┌─────▼─────┐
│ AR2220 │ │ AR2220 │ │ AR2220 │
│ (Master) │ │ (Backup) │ │ (Backup) │
│ 优先级120 │ │ 优先级100 │ │ 优先级80 │
└─────┬─────┘ └─────┬─────┘ └─────┬─────┘
│ │ │
└─────────────┼─────────────┘
│
┌───────▼───────┐
│ Switch S5700 │
└───────┬───────┘
│
┌───────▼───────┐
│ PC Cluster │
│ 默认网关 │
│ 192.168.1.1 │
└───────────────┘
# AR2220-1 (Master Router) 配置 <AR2220-1> system-view [AR2220-1] sysname AR1-Master [AR1-Master] interface GigabitEthernet 0/0/0 [AR1-Master-GigabitEthernet0/0/0] ip address 202.100.10.1 24 [AR1-Master-GigabitEthernet0/0/0] quit [AR1-Master] interface GigabitEthernet 0/0/1 [AR1-Master-GigabitEthernet0/0/1] ip address 192.168.1.10 24 [AR1-Master-GigabitEthernet0/0/1] vrrp vrid 1 virtual-ip 192.168.1.1 [AR1-Master-GigabitEthernet0/0/1] vrrp vrid 1 priority 120 [AR1-Master-GigabitEthernet0/0/1] vrrp vrid 1 preempt-mode [AR1-Master-GigabitEthernet0/0/1] vrrp vrid 1 timer advertise 1 [AR1-Master-GigabitEthernet0/0/1] vrrp vrid 1 track interface GigabitEthernet 0/0/0 reduced 30 [AR1-Master-GigabitEthernet0/0/1] quit # 配置路由 [AR1-Master] ip route-static 0.0.0.0 0.0.0.0 202.100.10.254 # AR2220-2 (Backup Router) 配置 <AR2220-2> system-view [AR2220-2] sysname AR2-Backup [AR2-Backup] interface GigabitEthernet 0/0/0 [AR2-Backup-GigabitEthernet0/0/0] ip address 202.100.20.1 24 [AR2-Backup-GigabitEthernet0/0/0] quit [AR2-Backup] interface GigabitEthernet 0/0/1 [AR2-Backup-GigabitEthernet0/0/1] ip address 192.168.1.20 24 [AR2-Backup-GigabitEthernet0/0/1] vrrp vrid 1 virtual-ip 192.168.1.1 [AR2-Backup-GigabitEthernet0/0/1] vrrp vrid 1 priority 100 [AR2-Backup-GigabitEthernet0/0/1] vrrp vrid 1 preempt-mode [AR2-Backup-GigabitEthernet0/0/1] vrrp vrid 1 timer advertise 1 [AR2-Backup-GigabitEthernet0/0/1] vrrp vrid 1 track interface GigabitEthernet 0/0/0 reduced 30 [AR2-Backup-GigabitEthernet0/0/1] quit # 配置路由 [AR2-Backup] ip route-static 0.0.0.0 0.0.0.0 202.100.20.254 # AR2220-3 (Backup Router) 配置 <AR2220-3> system-view [AR2220-3] sysname AR3-Backup [AR3-Backup] interface GigabitEthernet 0/0/0 [AR3-Backup-GigabitEthernet0/0/0] ip address 202.100.30.1 24 [AR3-Backup-GigabitEthernet0/0/0] quit [AR3-Backup] interface GigabitEthernet 0/0/1 [AR3-Backup-GigabitEthernet0/0/1] ip address 192.168.1.30 24 [AR3-Backup-GigabitEthernet0/0/1] vrrp vrid 1 virtual-ip 192.168.1.1 [AR3-Backup-GigabitEthernet0/0/1] vrrp vrid 1 priority 80 [AR3-Backup-GigabitEthernet0/0/1] vrrp vrid 1 preempt-mode [AR3-Backup-GigabitEthernet0/0/1] vrrp vrid 1 timer advertise 1 [AR3-Backup-GigabitEthernet0/0/1] vrrp vrid 1 track interface GigabitEthernet 0/0/0 reduced 30 [AR3-Backup-GigabitEthernet0/0/1] quit # 配置路由 [AR3-Backup] ip route-static 0.0.0.0 0.0.0.0 202.100.30.254
# 查看VRRP状态 [AR1-Master] display vrrp GigabitEthernet0/0/1 | Virtual Router 1 State : Master Virtual IP : 192.168.1.1 Master IP : 192.168.1.10 PriorityRun : 120 PriorityConfig : 120 MasterPriority : 120 Preempt : YES Delay Time : 0s TimerRun : 1s TimerConfig : 1s Auth type : NONE Virtual MAC : 0000-5e00-0101 Check TTL : YES Config type : normal-vrrp Track IF : GigabitEthernet0/0/0 Priority reduced : 30 IF state : UP # 查看VRRP统计信息 [AR1-Master] display vrrp statistics Interface VRID State SendPkt ReceivePkt BadPkt GE0/0/1 1 Master 15234 0 0 # 查看VRRP跟踪信息 [AR1-Master] display vrrp track Interface VRID Track IF Priority State GE0/0/1 1 GE0/0/0 30 UP
# 模拟主路由器上行接口故障 [AR1-Master] interface GigabitEthernet 0/0/0 [AR1-Master-GigabitEthernet0/0/0] shutdown # 观察VRRP状态变化 [AR1-Master] display vrrp State : Backup # 优先级降低到90,不再是Master [AR2-Backup] display vrrp State : Master # AR2成为新的Master
# 关闭主路由器电源或重启 <AR1-Master> reboot # 在备份路由器上观察 [AR2-Backup] display vrrp State : Master Master IP : 192.168.1.20 # AR2接管虚拟IP
# 主路由器恢复后 [AR1-Master] display vrrp State : Master # 由于优先级最高且启用抢占,重新成为Master
VRRP网络中可能出现的故障及其解决方法。
| 故障现象 | 可能原因 | 解决方案 |
|---|---|---|
| 多台路由器都是Master | VRID配置不一致 网络隔离 VRRP报文被过滤 |
统一VRID配置 检查网络连通性 检查防火墙/ACL设置 |
| 无法切换到Master | 优先级配置错误 抢占功能关闭 接口状态异常 |
调整优先级 启用抢占功能 检查接口状态 |
| 频繁主备切换 | 网络不稳定 定时器配置过小 接口频繁UP/DOWN |
优化网络质量 调整定时器 检查接口硬件 |
| 流量不通 | ARP表项错误 路由配置问题 虚拟MAC地址异常 |
清除ARP表 检查路由配置 验证MAC地址学习 |
# 基础状态检查 display vrrp display vrrp brief display vrrp statistics # 接口状态检查 display interface brief display ip interface brief # 网络连通性检查 ping 192.168.1.1 # 测试虚拟IP连通性 display arp all # 检查ARP表项 # 日志信息查看 display logbuffer display vrrp event-log # 调试命令(谨慎使用) debugging vrrp packet debugging vrrp event terminal debugging terminal monitor
对比VRRP、HSRP、GLBP三种常见的网关冗余协议。
| 特性 | VRRP | HSRP | GLBP |
|---|---|---|---|
| 标准化程度 | IETF标准 (RFC 5798) | Cisco私有协议 | Cisco私有协议 |
| 支持厂商 | 多厂商兼容 | 仅Cisco设备 | 仅Cisco设备 |
| 虚拟MAC地址 | 00-00-5E-00-01-{VRID} | 00-00-0C-07-AC-{Group} | 00-00-0C-07-AC-{Group} |
| 负载均衡 | 不支持 | 不支持 | 支持 |
| 默认Hello时间 | 1秒 | 3秒 | 3秒 |
| 默认Hold时间 | 3秒 | 10秒 | 10秒 |
| 优先级范围 | 1-254 | 1-255 | 1-255 |
| IPv6支持 | VRRPv3支持 | 不支持 | 不支持 |
| 认证支持 | V2支持,V3不支持 | 支持 | 支持 |
| 对比项 | VRRP | RIP |
|---|---|---|
| 协议类型 | 网关冗余协议 | 路由协议 |
| 工作层次 | 网络层/应用层 | 应用层 |
| 主要功能 | 提供网关冗余 | 路由信息交换 |
| 协议号 | 112 | UDP 520 |
| 报文类型 | Advertisement | Request/Response |
| 收敛速度 | 毫秒级 | 分钟级 |
| 适用场景 | 网关高可用 | 小型网络路由 |
除了基本的冗余功能外,VRRP还提供了许多高级特性来增强网络可靠性。
监控指定接口状态,当接口故障时自动降低VRRP优先级,触发主备切换。
# 跟踪上行接口 [Router] interface GigabitEthernet 0/0/1 [Router-GigabitEthernet0/0/1] vrrp vrid 10 track interface GigabitEthernet 0/0/0 reduced 30 # 跟踪多个接口 [Router-GigabitEthernet0/0/1] vrrp vrid 10 track interface GigabitEthernet 0/0/0 reduced 20 [Router-GigabitEthernet0/0/1] vrrp vrid 10 track interface GigabitEthernet 0/0/2 reduced 10
使用BFD (Bidirectional Forwarding Detection) 实现毫秒级故障检测。
# 配置BFD会话 [Router] bfd [Router-bfd] quit [Router] bfd session bind peer-ip 10.1.1.2 interface GigabitEthernet 0/0/0 [Router-bfd-session-10.1.1.2] discriminator local 100 [Router-bfd-session-10.1.1.2] discriminator remote 200 [Router-bfd-session-10.1.1.2] min-tx-interval 100 [Router-bfd-session-10.1.1.2] min-rx-interval 100 [Router-bfd-session-10.1.1.2] commit # VRRP跟踪BFD会话 [Router] interface GigabitEthernet 0/0/1 [Router-GigabitEthernet0/0/1] vrrp vrid 10 track bfd-session 100 increased 20
在同一接口上配置多个VRRP实例,实现负载分担。
# Router A - 实例1为Master,实例2为Backup [RouterA] interface GigabitEthernet 0/0/1 [RouterA-GigabitEthernet0/0/1] vrrp vrid 10 virtual-ip 192.168.1.1 [RouterA-GigabitEthernet0/0/1] vrrp vrid 10 priority 120 [RouterA-GigabitEthernet0/0/1] vrrp vrid 20 virtual-ip 192.168.1.2 [RouterA-GigabitEthernet0/0/1] vrrp vrid 20 priority 100 # Router B - 实例1为Backup,实例2为Master [RouterB] interface GigabitEthernet 0/0/1 [RouterB-GigabitEthernet0/0/1] vrrp vrid 10 virtual-ip 192.168.1.1 [RouterB-GigabitEthernet0/0/1] vrrp vrid 10 priority 100 [RouterB-GigabitEthernet0/0/1] vrrp vrid 20 virtual-ip 192.168.1.2 [RouterB-GigabitEthernet0/0/1] vrrp vrid 20 priority 120
# 配置浮动静态路由 [Router] ip route-static 0.0.0.0 0.0.0.0 10.1.1.1 preference 60 [Router] ip route-static 0.0.0.0 0.0.0.0 10.2.2.1 preference 100 # VRRP状态变化时自动调整路由优先级 [Router] interface GigabitEthernet 0/0/1 [Router-GigabitEthernet0/0/1] vrrp vrid 10 track ip route 0.0.0.0 0.0.0.0 10.1.1.1 increased 20
# OSPF与VRRP联动 [Router] ospf 1 [Router-ospf-1] area 0 [Router-ospf-1-area-0.0.0.0] network 192.168.1.0 0.0.0.255 # 根据VRRP状态调整OSPF cost [Router] interface GigabitEthernet 0/0/1 [Router-GigabitEthernet0/0/1] ospf cost 10 [Router-GigabitEthernet0/0/1] vrrp vrid 10 track ospf 1 increased 50
VRRP协议面临的安全风险及防护措施。
# 简单字符认证 [Router] interface GigabitEthernet 0/0/1 [Router-GigabitEthernet0/0/1] vrrp vrid 10 authentication-mode simple cipher Huawei@123 # MD5认证 [Router-GigabitEthernet0/0/1] vrrp vrid 10 authentication-mode md5 cipher Huawei@123
# ACL限制VRRP报文源地址 [Router] acl 3000 [Router-acl-adv-3000] rule permit ip source 192.168.1.0 0.0.0.255 destination 224.0.0.18 [Router-acl-adv-3000] rule deny ip destination 224.0.0.18 [Router-acl-adv-3000] quit # 在接口应用ACL [Router] interface GigabitEthernet 0/0/1 [Router-GigabitEthernet0/0/1] traffic-filter inbound acl 3000
# 交换机端口安全配置
[Switch] interface GigabitEthernet 0/0/1
[Switch-GigabitEthernet0/0/1] port-security enable
[Switch-GigabitEthernet0/0/1] port-security max-mac-num 2
[Switch-GigabitEthernet0/0/1] port-security mac-address sticky
# VLAN隔离 [Switch] vlan 10 [Switch-vlan10] port GigabitEthernet 0/0/1 to 0/0/10 [Switch-vlan10] quit # 私有VLAN [Switch] vlan 100 [Switch-vlan100] private-vlan primary [Switch-vlan100] private-vlan isolated 30
通过本文档的学习,我们全面了解了VRRP协议的理论基础和实践应用。
VRRP协议是网络高可用性的重要技术,掌握其原理和应用对于网络工程师来说至关重要。希望这份详细的指南能够帮助您深入理解VRRP协议,并在实际工作中灵活运用。记住,理论学习与实践操作相结合是最好的学习方式。