一. 概述
VRRP 是一个标准协议,用于实现网关的冗余备份,从而提高网络的可靠性。
企业网中常工作于汇聚层,典型组合由 MSTP + VRRP 或 M-LAG + VRRP.
二. 原理
2.1 基础概念
VRRP 路由器
: 运行 VRRP 协议的路由器;
VRID
: 标识一个 VRRP Group, VRID 会携带在报文中,只有同 Group 的 VRRP Router 间才会相互备份;
虚拟路由器
: VRRP Group 虚拟出的路由器;
虚拟 IP 于 MAC 地址
: 虚拟路由器拥有虚拟的 IP 和 MAC 地址,MAC 地址一般为 0000-5e00-01xx, xx 为 VRID;
Master 路由器
: Group 中承载业务报文转发任务,并周期性发送 VRRP 报文来维护 VRRP 状态的路由器;
Backup 路由器
: Group 中处于冗余备份地位的,实时监听 VRRP 报文,随时准备替代 Master 的路由器;
Priority
: 范围 0 - 255, Group 内大优先级的 VRRP 路由器会选举为 Master;
Advertisement 报文
: 发向本地链路组播地址 224.0.0.18,源IP/MAC 为 Group 虚拟的 IP 与 MAC 地址;
ADVER_INTERVAL 定时器
: Master 发送 Advertisement 报文的间隔,默认为 1s;
MASTER_DOWN 定时器
: Backup 监听 Advertisement 报文的超时时间为,3 * ADVER_INTERVAL + Skew_time((256-priority)/256);
MASTER_INTERVAL 定时器
: Backup 在抢占 Master 之前,额外等待的时间,防止过于频繁的切换;
2.2 技术原理
2.2.1 收敛过程
Initalize 状态
: 此状态下 VRRP 不可用,不会对 Advertisement 报文做任何处理,迁移过程:
- 接口 UP,若该设备优先级为 255 (IP 与该接口 IP 相同,则 Priority 为不可配置的 255), 迁移至 Master 状态;
- 若该设备优先级小于 255,直接转换至 Backup 状态;
Backup 状态
: 不处理业务报文,监听 Advertisement 报文,监控 Master,随时准备切换为 Master,迁移过程:
- 抢占模式下,接收到优先级低于自身的 Advertisement 报文,等待 MASTER_INTERVAL 后,转换至 Master 状态;
- 在 MASTER_DOWN 时间内,未收到 Advertisement 报文,转换至 Master 状态;
Master 状态
: 处理业务报文,以 ADVER_INTERVAL 为间隔发送 Advertisement 报文:
- 切换进 Master 状态后首先会发送 ARP 报文通告虚拟 IP/MAC;
- 收到优先级比自己大,或优先级相同但 IP 比自己大的 Advertisement 报文,切换至 Backup 状态;
- 接口 DOWN,切换至 Initialize 状态;
2.2.2 故障切换
Master 主动放弃角色
: Master 会发送 priority 为 0 的 advertisement 报文,Backup 收到后等待 Skew_time 后进入 Master 状态;
Master 故障
: Backup 等待 3 * ADVER_INTERVAL + Skew_time 后进入 Master 状态;
2.3 Feature
上行 Track
: 上行链路异常时,可以联动降低 VRRP 的 priority,从而触发抢占;
VRRP 路由器间 BFD
: 监控彼此状态,加快切换速度,有普通 BFD,peer/link BFD, VRID BFD 三种;
管理 VRRP Group
: 同二层拓扑下多个 VRRP Group 均会维护自身状态机,多 Group 关联管理 Group 可以减少开销;
Backup 转发流量
: 开启后,Backup 角色也可转发流量,猜测可用于 M-LAG 场景下。
三. 配置
3.1 基础配置
接口] vrrp vrid virtual-router-id virtual-ip virtual-address # 虚拟 IP 和 虚拟 MAC 配置
接口] vrrp vrid virtual-router-id priority priority-value # 优先级
接口] vrrp vrid virtual-router-id preempt-mode timer delay delay-value # MASTER_INTERVAL 定时器
接口] vrrp vrid virtual-router-id preempt-mode disable # 抢占模式开关
3.2 Feature 配置
# 上行接口 Track - 降低优先
接口] vrrp vrid virtual-router-id track interface interface-type interface-number [ increase value-increased | reduce value-decreased ]
# 路由 Track - 降低优先级
接口] vrrp vrid virtual-router-id track ip route ip-address { mask-address | mask-length } [ vpn-instance vpn-instance-name ]
# 普通 BFD 联动 - 降低优先级
接口] vrrp vrid virtual-router-id track bfd-session { bfd-session-id | session-name bfd-configure-name } [ increase value-increased | reduce value-reduced ]
# peer&link BFD 联动 - 立即切换
接口] vrrp vrid virtual-router-id track bfd-session { bfd-session-id | session-name bfd-configure-name } [ peer | link ]
接口] vrrp vrid virtual-router-id track link-bfd down-number # 当 BFD link down 数量达到一定数量后,立即切换
# VRID BDF - 立即切换
接口] vrrp vrid virtual-router-id bfd peer-ip peer-ip-address
接口] vrrp vrid virtual-router-id bfd { min-rx-interval receive-interval | min-tx-interval transmit-interval | detect-multiplier multiplier-value }
# backup 转发业务流量
接口] vrrp vrid virtual-router-id backup-forward
# 管理 VRRP Group
接口] vrrp vrid virtual-router-id admin [ ignore-if-down ]
## ignore-if-down 用来规避接口 down 引起 admin group 切换,建议配置上(不过 VLAN 模式下,不常发生)
接口] vrrp vrid virtual-router-id1 track admin-vrrp interface interface-type interface-number vrid virtual-router-id2 [ unflowdown ]
## interface 和 vrid 用来定位特定的 admin Group
## flowdown 代表上下行流量一致性检查