虚拟路由冗余协议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。

核心工作方式

工作原理

  1. 虚拟路由器中的设备根据优先级选举出 Master。

  2. Master 路由器

    • 通过发送免费 ARP 报文将自己的虚拟 MAC 地址通知给与它连接的设备或主机,从而承担报文转发任务
    • 周期性向VRRP 备份组中的 Backup 设备发送 VRRP 报文,通告其配置信息(优先级等)和工作状况
  3. 如果 Master 路由器出现故障

    • VRRP 备份组中的 Backup 路由器根据优先级重新选举出新的 Master
    • 新的 Master 路由器会立即发送携带虚拟路由器的 MAC 地址和虚拟 IP 地址信息的免费ARP报文,刷新与它连接的设备的MAC表项,从而把用户流量引到新的 Master 设备上,整个过程对用户完全透明
  4. 原 Master 设备故障恢复后

    • 若该设备优先级为 255,则直接切换至 Master 状态
    • 否则,首先切换至 Backup 状态,优先级不变
  5. 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
keepalived