VRRP即虚拟路由冗余协议(Virtual Router Redundancy Protocol),它是为了避免路由器出现单点故障的一种容错协议。
如图1所示,我们把多个运行着VRRP协议的路由器抽象成一个虚拟路由器(从外边来看,就像只有一个真实的路由器在工作),组成虚拟路由器的一组路由器会有一个会成为Master路由器,其余的会成为Backup路由器。
正常情况下,会由Master完成该虚拟路由器的工作。Master一旦出现故障,从Backup中选出一个成为Master继续工作,从而避免路由器单点问题。
在详细介绍VRRP协议之前,先弄清楚几个概念。
相关术语
1.1 VIP
VIP(Virtual IP)即虚拟IP,是一个不与特定计算机或网络接口卡(NIC)相连的IP地址。
1.2 VRRP路由器
运行VRRP协议的路由器(或设备)。它可能属于一个或多个虚拟路由器。
1.3 虚拟路由器
由一组VRRP路由器组成,抽象成一个虚拟的路由器。它拥有一个虚拟路由器标识符(VRID)和一个VIP。
1.4 虚拟MAC地址
即虚拟路由器根据VRID生成的MAC地址。
一个虚拟路由器拥有一个虚拟MAC地址,格式为:00-00-5E-00-01-{VRID}。
当虚拟路由器回应ARP请求时,使用虚拟MAC地址,而不是接口的真实MAC地址。
1.5 IP地址拥有者(IP Address Owner)
如果一个VRRP路由器将VIP作为 真实的接口地址,则该设备是IP地址拥有者。
当这台设备正常工作时,它会响应目的地址是VIP的报文,如ping、TCP连接等。
1.6 优先级(Priority)
用来标识虚拟路由器中各成员路由器的优先级。
虚拟路由器根据优先级选举出Master和Backup。
VRRP是如何工作的
当路由器配置了VRRP(VRID、VIP、优先级等信息)后,它就成了一台VRRP路由器,即组成某个虚拟路由器的一个成员路由器。
2.1 VRRP的工作流程
Master选举:从VRRP组中选举一个Master,其余为Backup
各设备协调工作:Master负责虚拟路由器的工作,Backup负责监听Master的状态
故障转移:Master出现故障,回到步骤1
2.2 VRRP协议定义了3种状态机:
分别为初始状态(Initialize)、活动状态(Master)、备份状态(Backup)。
初始状态(Initialize)
- 为VRRP不可用状态,在此状态下设备不会对VRRP报文做任何处理。通常刚配置VRRP时或设备检测到故障时会进入该状态。
- 收到接口startup(启动)的状态,如果设备的优先级为255(表示该设备为虚拟路由器IP地址拥有者),则直接成为Master设备。如果设备的优先级小于255,则会先切换到Backup状态。
活动状态(Master)
处于该状态下的设备为Master设备,Master设备会做如下工作:
- 定时发送VRRP通告报文(时间间隔为Advertisement_Interval)
- 以虚拟MAC地址相应对虚拟IP地址的ARP请求
- 转发目的MAC地址为虚拟MAC地址的IP报文
- 抢占模式下,如果收到比自己优先级大的VRRP报文,或者跟自己优先级相等,且本地接口IP地址小于源端接口IP地址时,则转变为Backup状态。
- 收到Shutdown(关闭)消息后,则立即转变为Initialize状态。
备份状态(Backup)
- 处于该状态下的设备接收Master发送的VRRP通告报文,判断Master是否正常。如果一定时间间隔没有收到VRRP通告报文,即Master_Down_Interval(Master_Down_Interval
= 3* Advertisement_Interval + Skew_time)超时,则判断为Master故障。 - 接收Master发送的VRRP通告报文,判断Master是否正常
- 对虚拟IP的ARP请求不做响应
- 丢弃目的MAC地址为虚拟路由器MAC地址的IP报文
- 丢弃目的IP地址为虚拟路由器IP地址的IP报文
- 如果收到优先级比自己高,或与自己相等的VRRP报文,则重置Master_Down_Interval定时器(不进一步比较IP地址)。
- 如果收到优先级比自己小的VPPR报文,且优先级为0时,(表示原Master设备声明不参与该VRRP组了),定时器时间设置为Skew_time(偏移时间,Skew_time=
(256 - priority)/256)。 - 如果收到优先级比自己小的VPPR报文,且优先级不为0时,丢弃该报文,立即转变为Master状态。
- Master_Down_Interval定时器超时,立即转变为Master状态。
- 收到Shutdown(关闭)消息后,则立即转变为Initialize状态。
2.3 Master选举
VRRP根据优先级来确定虚拟路由器中每台设备的角色,Master设备或Backup设备。优先级越高,则越有可能成为Master设备。
Master选举过程如下:
-
初始创建的VRRP设备都工作在Initialize状态,当VRRP设备在收到VRRP接口Startup的消息后,如果此设备的优先级等于255(也就是所配置的虚拟路由器IP地址是本设备VRRP接口的真实IP地址),将会直接切换至Master状态,并且无需进行下面的Master选举。否则,会先切换到Backup状态,待Master_Down_Interval定时器超时后再切换至Master状态。(开始的时候并没有Master设备,则这个Master_Down_Interval定时器一定会超时)
-
首先切换至Master状态的VRRP设备通过VRRP通告报文的交互获知虚拟设备中其他成员的优先级,然后根据以下规则进行Master的选举。
1).如果收到的VRRP报文中的优先级高于或等于自己的优先级,则当前Backup设备保持Backup状态。
2).如果VRRP报文中Master设备的优先级低于自己的优先级,当采用抢占方式下(缺省为抢占方式),则当前Backup设备将切换至Master状态;当采用非抢占方式时,当前Backup设备仍保持Backup状态。 -
当有多个VRRP设备同时切换至Master状态,通过VRRP通告报文的交互进行协商后,优先级较低的VRRP设备将切换至Backup状态,优先级最高的VRRP设备成为最终的Master设备;优先级相同时,再根据VRRP设备上VRRP备份组所在接口主IP地址大小进行比较,IP地址较大的成为Master设备。
2.4 Master与Backup协调工作
Master设备会周期性的发送VRRP通告报文,在VRRP备份组中公布其配置信息(优先级等)和工作状态。Backup设备通过接收到Master设备发来的VRRP报文的情况来判断Master设备是否工作正常。
-
当Master设备主动放弃Master地位(如Master设备退出备份组)时,会发送优先级为0的VRRP通告报文,使Backup设备快速切换成Master设备(当有多台Backup设备时也要进行Master选举),而不用等到Master_Dwon_Interval定时器超时。这个切换的时间称为Skew_time,计算方式为:(256 -Backup设备的优先级)/256,单位为秒。
-
当Master设备发生网络故障而不能发送VRRP通告报文的时候,Backup设备并不能立即知道其工作状况,要等到Master_Down_Interval定时器超时后,才会认为Master设备无法正常工作,从而将状态切换为Master(同样,当有多台Backup设备时也要进行Master选举)。
在性能不稳定的网络中,网络堵塞可能导致Backup设备在Master_Down_Interval定时器超时后仍没有收到Master设备的报文后,使得Backup设备主动切换为Master。如果此时原Master设备的报文又到达了,新Master设备将再次切换回Backup。如此会出现VRRP设备组成员状态频繁切换的现象。为缓解这种现象,可以配置抢占时延,使得Backup设备在等待了Master_Down_Interval定时器后再等待抢占时延时间。