虚拟路由冗余协议VRRP(Virtual Router Redundancy Protocol)是一种用于提高网络可靠性的容错协议。
为什么需要 VRRP
现网中的主机使用默认网关与外部网络联系,当默认网关出现故障,与其相连的主机将与外界失去联系,导致业务中断。
VRRP 将多台设备组成一个虚拟设备,主机通过配置虚拟设备的 IP 地址为默认网关,实现默认网关的备份。当网关设备发生故障时,VRRP 机制能够选举新的网关设备承担数据流量,从而保障网络的可靠通信。
VRRP 是什么
相关术语
VRRP 路由器(VRRP Router):运行 VRRP 协议的设备,它可能属于一个或多个虚拟路由器。
虚拟路由器(Virtual Router): 又称
VRRP 备份组,由一个 Master 路由器和多个 Backup 路由器组成,被当做一个共享局域网内主机的缺省网关。Master 路由器:承担转发报文任务的 VRRP 设备。
Backup 路由器:一组没有承担转发任务的 VRRP 设备,当 Master 路由器出现故障时,它们将通过竞选成为新的 Master 路由器。
VRID:虚拟路由器标识,在同一个 VRRP 组内的路由器必须有相同的 VRID。
虚拟 IP 地址(Virtual IP Address):虚拟路由器的 IP 地址,一个虚拟路由器可以有一个或多个 IP 地址。
IP 地址拥有者(IP Address Owner):如果一个 VRRP 设备将虚拟路由器 IP 地址作为真实的接口地址,则该设备被称为 IP 地址拥有者。如果 IP 地址拥有者是可用的,通常它将成为 Master 路由器。
虚拟 MAC 地址(Virtual MAC Address):格式:00-00-5E-00-01-{VRID} (VRRP for IPv4); 00-00-5E-00-02-{VRID} (VRRP for IPv6),其中 00-00-5E 是 IANA 组织分配的,00-01 是为 VRRP 协议指定的,VRID 是虚拟路由器标识,取值范围为[1-255]。当虚拟路由器回应 ARP 请求时,使用虚拟 MAC 地址,而不是接口的真实 MAC 地址。
VRRP 版本
VRRP v2: 主要添加了对 IPv6 的支持
VRRP v3: 主要添加了抢占模式,object-tracking(追踪链路状态), sub-second timers
VRRP 状态
标准状态 (RFC 2338):
| 状态 | 值 | 描述 |
|---|---|---|
| VRRP_STATE_INIT | 0 | 初始化状态,VRRP 实例未启动 |
| VRRP_STATE_BACK | 1 | BACKUP 状态,监听 MASTER 的 VRRP 报文 |
| VRRP_STATE_MAST | 2 | MASTER 状态,承担虚拟路由设备的所有转发工作,并定期发送 VRRP 报文 |
内部状态 (Keepalived 扩展):
| 状态 | 值 | 描述 |
|---|---|---|
| VRRP_STATE_FAULT | 3 | 故障状态,接口down或健康检查失败 |
| VRRP_STATE_GOTO_MASTER | 4 | 内部状态,正在转为 MASTER |
| VRRP_STATE_LEAVE_MASTER | 5 | 内部状态,正在离开 MASTER |
| VRRP_STATE_GOTO_FAULT | 98 | 内部状态,正在转为 FAULT |
VRRP 报文
VRRP 只定义了一种报文 —— VRRP 通告报文
VRRP 报文封装在 IP 报文中,支持各种上层协议
VRRP 基于 IP Multicast 协议,广播的目标地址是
224.0.0.18只有处于 Master 状态的路由器定期发送 VRRP报文,Src IP 设置为自己,IP 层的 TTL 设置为 255
VRRP 路由器的优先级
0:
- 优先级为 0 用于指示当前虚拟路由器的 Master 路由器停止参与 VRRP 组,放弃 Master 位置。主要用于触发 Backup 路由器快速地迁移到 Master 路由器,而不用等待当前 Master 路由器超时。
255:
- 如果 VRRP 路由器是虚拟路由器地址的IP地址拥有者,那么其优先级必须为255。
1-254:
- Backup 路由器的优先级必须在1–254之间。缺省的 VRRP 路由器优先级为100。
核心工作方式
工作原理
虚拟路由器中的设备根据优先级选举出 Master。
Master 路由器
- 通过发送免费 ARP 报文将自己的虚拟 MAC 地址通知给与它连接的设备或主机,从而承担报文转发任务
- 周期性向VRRP 备份组中的 Backup 设备发送 VRRP 报文,通告其配置信息(优先级等)和工作状况
如果 Master 路由器出现故障
- VRRP 备份组中的 Backup 路由器根据优先级重新选举出新的 Master
- 新的 Master 路由器会立即发送携带虚拟路由器的 MAC 地址和虚拟 IP 地址信息的免费ARP报文,刷新与它连接的设备的MAC表项,从而把用户流量引到新的 Master 设备上,整个过程对用户完全透明
原 Master 设备故障恢复后
- 若该设备优先级为 255,则直接切换至 Master 状态
- 否则,首先切换至 Backup 状态,优先级不变
Backup 设备的优先级高于 Master 设备时,由 Backup 设备的工作方式(抢占方式和非抢占方式)觉得是否重新选举 Master。
选举机制
VRRP 根据优先级来确定虚拟路由器中每台路由器的角色(Master路由器或Backup路由器)。优先级越高,则越有可能成为Master路由器。
初始创建的路由器工作在Backup状态,通过 VRRP 报文的交互获知虚拟路由器中其他成员的优先级:
如果VRRP报文中Master路由器的优先级高于自己的优先级,则路由器保持在Backup状态;
如果VRRP报文中Master路由器的优先级低于自己的优先级,采用抢占工作方式的路由器将抢占成为Master状态,周期性地发送VRRP报文,采用非抢占工作方式的路由器仍保持Backup状态;
如果在一定时间内没有收到VRRP报文,则路由器切换为Master状态。
抢占与非抢占
非抢占方式:如果 Backup 路由器工作在非抢占方式下,只要 Master 路由器没有故障,Backup 路由器即使被配置了更高的优先级,也不会成为 Master 路由器。
抢占方式:如果 Backup 路由器工作在抢占方式下,当它收到 VRRP 报文后,会将自己的优先级与通告报文中的优先级进行比较。如果自己的优先级更高,就会主动抢占成为 Master 路由器。
典型组网案例
主备备份
业务仅由 Master 路由器承担,当 Master 路由器出现故障时,才会由选举出来的 Backup 路由器接替它工作。

负载分担
在路由器的一个接口上可以创建多个虚拟路由器,使得该路由器可以在一个虚拟路由器中作为 Master 路由器,同时在其它的虚拟路由器中作为 Backup 路由器。

为了实现业务流量在 Device A、Device B 和 Device C 之间进行负载分担,需要将局域网内的主机的默认网关分别设置为虚拟路由器1、2和3。
在配置优先级时,需要确保三个虚拟路由器中各路由器的 VRRP 优先级之间形成一定的交叉,使得一台路由器尽可能不同时充当 2 个 Master 路由器。
BFD 技术
- todo