VRRP
前言
VRRP (Virtual Router Redundancy Protocol-虚拟路由冗余协议),首先我们要知道VRRP是一种容错性协议,通过把几台路由设备联合组成一台虚拟的路由设备,将虚拟路由设备的 IP 地址作为用户的默认网关实现与外部网络通信。当网关设备发生故障时,VRRP 机制能够选举新的网关设备承担数据流量,从而保障网络的可靠通信。
原理
如上图所示:HostA,HostB通过 Switch 归属到 SwitchA,SwitchB和SwitchC。在SwitchA,SwitchB和SwitchC 上配置 VRRP 备份组,对外体现为一台虚拟路由器,实现链路冗余备份。
一些概念
VRRP 路由器(VRRP Router)
运行 VRRP 协议的设备,它可能属于一个或多个虚拟路由器,如 SwitchA,SwitchB和SwitchC
虚拟路由器(Virtual Router)
又称 VRRP 备份组,由一个 Master 设备和多个 Backup 设备组成,被当作一个共享局域网内主机的缺省网关。如 SwitchA,SwitchB和SwitchC共同组成了一个虚拟路由器。
Master 路由器(Virtual Router Master)
承担转发报文任务的 VRRP 设备,如 SwitchA
Backup 路由器(Virtual Router Backup)
一组没有承担转发任务的 VRRP 设备,当 Master 设备出现故障时,它们将通过竞选成为新的 Master 设备,如 SwitchB和SwitchC。
VRID
虚拟路由器的标识。如 SwitchA,SwitchB和SwitchC 组成的虚拟路由器的 VRID 为 1
虚拟 IP 地址 (Virtual IP Address)
虚拟路由器的 IP 地址,一个虚拟路由器可以有一个或多个 IP 地址,由用户配置。
IP 地址拥有者(IP Address Owner)
如果一个 VRRP 设备将虚拟路由器 IP 地址作为真实的接口地址,则该设备被称为 IP 地址拥有者。如果 IP 地址拥有者是可用的,通常它将成为 Master。 如 SwitchA,其接口的 IP 地址与虚拟路由器的 IP 地址相同,均为 10.1.1.10/24,因此它是这个 VRRP 备份组的 IP 地址拥有者。
虚拟 MAC 地址(Virtual MAC Address)
虚拟路由器根据虚拟路由器 ID 生成的 MAC 地址。一个虚拟路由器拥有一个虚拟 MAC 地址,格式为:00-00-5E-00-01-{VRID}(VRRP for IPv4);00-00-5E-00-02-{VRID}(VRRP for IPv6)
当虚拟路由器回应 ARP 请求时,使用虚拟 MAC 地址,而不是接口的真实 MAC 地址。如 SwitchA 和 SwitchB 组成的虚拟路由器的 VRID 为 1,因此这个 VRRP 备份组的 MAC 地址为 00-00-5E-00-01-01
状态
VRRP 协议中定义了三种状态机:初始状态(Initialize)、活动状态(Master)、备份状态(Backup)。其中,只有处于 Master 状态的设备才可以转发那些发送到虚拟 IP 地址的报文。
Initialize
- 该状态为 VRRP 不可用状态,在此状态时设备不会对 VRRP 报文做任何处理。
- 通常刚配置 VRRP 时或设备检测到故障时会进入 Initialize 状态。
- 收到接口 Up 的消息后,如果设备的优先级为 255,则直接成为 Master 设备;如果设备的优先级小于 255,则会先切换至 Backup 状态。
Master
- 定时(Advertisement Interval)发送 VRRP 通告报文。
- 以虚拟 MAC 地址响应对虚拟 IP 地址的 ARP 请求。
- 转发目的 MAC 地址为虚拟 MAC 地址的 IP 报文。
- 如果它是这个虚拟 IP 地址的拥有者,则接收目的 IP 地址为这个虚拟 IP 地址的 IP 报文。否则,丢弃这个 IP 报文。
- 如果收到比自己优先级大的报文,立即成为 Backup。
- 如果收到与自己优先级相等的 VRRP 报文且本地接口 IP 地址小于对端接口 IP,立即成为 Backup。
Backup
- 接收 Master 设备发送的 VRRP 通告报文,判断 Master 设备的状态是否正常。
- 对虚拟 IP 地址的 ARP 请求,不做响应。
- 丢弃目的 IP 地址为虚拟 IP 地址的 IP 报文。
- 如果收到优先级和自己相同或者比自己大的报文,则重置 Master_Down_Interval 定时器,不进一步比较 IP 地址
工作流程
- VRRP 备份组中的设备根据优先级选举出 Master。Master 设备通过发送免费 ARP 报文,将虚拟 MAC 地址通知给与它连接的设备或者主机,从而承担报文转发任务。
- Master 设备周期性向备份组内所有 Backup 设备发送 VRRP 通告报文,以公布其配置信息(优先级等)和工作状况。如果 Master 设备出现故障,VRRP 备份组中的 Backup 设备将根据优先级重新选举新的 Master。
- VRRP 备份组状态切换时,Master 设备由一台设备切换为另外一台设备,新的 Master 设备会立即发送携带虚拟路由器的虚拟 MAC 地址和虚拟 IP 地址信息的免费 ARP 报文,刷新与它连接的主机或设备中的 MAC 表项,从而把用户流量引到新的 Master 设备上来,整个过程对用户完全透明。
- 原 Master 设备故障恢复时,若该设备为 IP 地址拥有者(优先级为 255),将直接切换至 Master 状态。若该设备优先级小于 255,将首先切换至 Backup 状态,且其优先级恢复为故障前配置的优先级。
- Backup 设备的优先级高于 Master 设备时,由 Backup 设备的工作方式(抢占方式和非抢占方式)决定是否重新选举 Master。
抢占模式:
- 在抢占模式下,如果 Backup 设备的优先级比当前 Master 设备的优先级高,则主动将自己切换成 Master。
非抢占模式:
- 在非抢占模式下,只要 Master 设备没有出现故障,Backup 设备即使随后被配置了更高的优先级也不会成为 Master 设备。
由此可见,为了保证 Master 设备和 Backup 设备能够协调工作,VRRP 需要实现以下功能:
- Master 设备的选举;
- Master 设备状态的通告
master设备选举
VRRP根据优先级来确定虚拟路由器中每台设备的角色(Master设备或Backup设备)。优先级越高,则越有可能成为Master设备。
初始创建的VRRP设备工作在Initialize状态,收到接口Up的消息后,如果设备的优先级为255,则直接成为Master设备;如果设备的优先级小于255,则会先切换至Backup状态,待Master_Down_Interval定时器超时后再切换至Master状态。首先切换至Master状态的VRRP设备通过VRRP通告报文的交互获知虚拟设备中其他成员的优先级,进行Master的选举:
如果VRRP报文中Master设备的优先级高于或等于自己的优先级,则Backup设备保持Backup状态;
如果VRRP报文中Master设备的优先级低于自己的优先级,采用抢占方式的Backup设备将切换至Master状态,采用非抢占方式的Backup设备仍保持Backup状态。
如果多个VRRP设备同时切换到Master状态,通过VRRP通告报文的交互进行协商后,优先级较低的VRRP设备将切换成Backup状态,优先级最高的VRRP设备成为最终的Master设备;优先级相同时,VRRP设备上VRRP备份组所在接口主IP地址较大的成为Master设备。
如果创建的VRRP设备为IP地址拥有者,收到接口Up的消息后,将会直接切换至Master状态。
master设备的通告
Master设备周期性地发送VRRP通告报文,在VRRP备份组中公布其配置信息(优先级等)和工作状况。Backup设备通过接收到VRRP报文的情况来判断Master设备是否工作正常。
当Master设备主动放弃Master地位(如Master设备退出备份组)时,会发送优先级为0的通告报文,用来使Backup设备快速切换成Master设备,而不用等到Master_Down_Interval定时器超时。这个切换的时间称为Skew time,计算方式为:(256-Backup设备的优先级)/256,单位为秒。
当Master设备发生网络故障而不能发送通告报文的时候,Backup设备并不能立即知道其工作状况。等到Master_Down_Interval定时器超时后,才会认为Master设备无法正常工作,从而将状态切换为Master。其中,Master_Down_Interval定时器取值为:3×Advertisement_Interval+Skew_time,单位为秒。
在性能不稳定的网络中,网络堵塞可能导致Backup设备在Master_Down_Interval期间没有收到Master设备的报文,Backup设备则会主动切换为Master。如果此时原Master设备的报文又到达了,新Master设备将再次切换回Backup。如此则会出现VRRP备份组成员状态频繁切换的现象。
为了缓解这种现象,可以配置抢占延时,使得Backup设备在等待了Master_Down_Interval后,再等待抢占延迟时间。如在此期间仍没有收到通告报文,Backup设备才会切换为Master设备
模式
主备备份模式
主备备份模式就是只由Master设备负责转发数据,而Backup设备则处于待机备份模式不参与数据转发,当Master设备出现故障时才会切换到Master进行数据转发。
参照下图,正常情况下只有SW1转发数据,而SW2则处于待机状态,SW1会周期发送VRRP报文告知SW2自身的配置信息和工作状态,如果SW1发生故障,则SW2会自动切换到到Master继续进行数据转发等。
而当SW1恢复之后,若当前为抢占模式,若SW1的优先级为255那么SW1会直接成为Master否则会先切换到Backup然后再切换到Master
负载分担模式
上述的主备备份模式,若SW1一直正常工作,那么SW2则长期处于待机状态,显然这种做法比较浪费,所以一般会采用负载分担模式,负载分到模式会是SW2都处于工作状态。
参照下图,负载分担模式是创建两个VRRP组分别为A组和B组,A组的Master为SW1,Backup为SW2,而B组的Master为SW2,Backup为SW1,通过创建多个拥有不同虚拟IP的VRRP组,为不同的VLAN指定网关实现负载分担
在VLAN10当中Master是SW1,Backup为SW2,两台交换机都分别创建vlan10和vlan20 并且分配好IP地址,正常情况下vlan10的客户端会通过SW1访问R1,vlan20的客户端会通过SW2访问R1这样就实现了负载分担,如果SW1出现故障,那么SW2会成为vlan10的Master(同时也是vlan20的Master),接替SW1的工作,而vlan10的客户端也会通过SW2访问R1,而SW2故障则同理
参考: