VRRP概述
VRRP(Virtual Router Redundancy Protocol,虚拟路由冗余协议)
VRRP在实际网络中已被广泛部署,它目前有两个版本:VRRPv2和VRRPv3,其中VRRPv2仅适用于IPv4网络,而VRRPv3适用于IPv4和IPv6两种网络。本篇将围绕VRRPv2进行解读。
VRRP解决的问题有:
1.单网关的缺陷
2.多网关存在的问题--网关间IP地址冲突;主机频繁切换网络出口
VRRP能够在不改变组网的情况下,将多台路由器虚拟成一台虚拟路由器,通过配置虚拟路由器的IP地址为默认网关,实现网关的备份,所以虚拟路由器是一台逻辑设备。在整个VRRP的切换过程中,用户是完全无感知的,PC终端的配置也不需要做任何修改。
基本概念
1.VRRP路由器(VRRP Router)--运行VRRP协议的设备
实际上,VRRP是配置在路由器的接口上,而且也是基于接口来工作的。VRRP一旦被激活,路由器的接口便开始发送及侦听VRRP协议报文。需要协同工作的VRRP路由器(接口)必须属于同一广播域,否则VRRP报文无法正常交互。
注:不仅路由器支持VRRP,许多交换机、防火墙产品同样也支持VRRP。
2.VRRP组及vrid
一个VRRP组由多台协同工作的路由器(的接口)组成,使用相同的vrid(Virtual Router Identifier,虚拟路由器标识符)进行标识。属于同一个VRRP组的路由器之间交互VRRP协议报文并产生一台虚拟路由器。一个VRRP组中只能出现一台Master路由器。
一个接口可以加入单个VRRP组,也可以加入多个VRRP组。不同的VRRP组需使用不同的vrid进行区分。
注:vrid需手工配置,范围为1~255。
3.虚拟路由器、虚拟IP地址及虚拟MAC地址
VRRP为每一组抽象出一台虚拟路由器,它是一台逻辑设备,拥有自己的IP地址以及MAC地址,其中虚拟路由器的IP地址(虚拟IP地址)由网络管理员在配置VRRP时指定,一台虚拟机可以有一个或多个IP地址。虚拟MAC地址的格式是“0000-5e00-01xx”,其中xx为vrid。一个VRRP组只会产生一台虚拟路由器。
注:1、当Master路由器收到请求虚拟路由器MAC地址的ARP Request时,它的ARP Reply中回应的MAC地址是虚拟MAC地址,而不是其物理接口的MAC地址。
2、通常情况下,VRRP路由器的接口IP地址不会与虚拟路由器的IP地址重叠。但是也存在例外,IP地址资源紧缺,就有可能会将某台路由器的接口IP地址用于虚拟路由器,那么该路由器将无条件成为Master。
4.Master路由器、Backup路由器
Master路由器也称为主路由器,Master路由器在一个VRRP组中承担报文转发任务。在每个VRRP组中,只有Master路由器才会响应针对虚拟IP地址的ARP Request。Master路由器会以一定的时间间隔周期性(时间默认缺省为1s)发送VRRP报文,以便通知同一个VRRP组的Backup路由器关于自己的存活情况。
Backup路由器也称为备份路由器,Backup路由器将会实时侦听Master路由器发送的VRRP报文,随时准备接替Master路由器的工作。
Priority为设备在备份组中的优先级,取值范围是0~255。
注:1、0代表设备停止参与VRRP的备份组,用来使备份设备尽快成为Master设备,而不必等到计时器超时;
2、255则保留给IP地址拥有着,无法手工配置;
3、设备缺省优先级为100。
5.抢占模式
如果Backup路由器激活了抢占模式,遇到优先级比自己低的,会立即切换为Master状态;
如果Backup路由器没有激活抢占模式,即使遇到优先级比自己低的,也只能保持Backup状态,直到Master路由器失效。
注:缺省为抢占模式,如果IP地址拥有着是可用的,则它总是处于抢占模式,并且成为Master设备。
抢占延时默认为0,即立即抢占。
工作机制
报文格式
VRRP只定义了一种报文格式,即通告(Advertisement)报文,它被封装在IP报文中,IP头部的协议号字段值为112,其目的地址是组播地址224.0.0.18,目的MAC地址为0100-5e00-0012(谨记:别和虚拟MAC地址搞混)
VRRP报文的格式(具体略)
状态机
VRRP定义了三种状态,RFC3768详细地描述了这些状态。
Initialize(初始状态)
Initialize状态是VRRP的初始状态--接口处于Down状态。
Backup(备份状态)
Backup路由器不会参与数据转发工作,它的工作如下:
1、对关于VRRP虚拟IP地址的ARP请求不予回应;
2、丢弃目的MAC地址为VRRP虚拟MAC地址的数据帧;
3、不接受目的IP地址为VRRP虚拟IP地址的数据包;
4、实时侦听Master路由器发送的VRRP报文,以便了解其工作状态。
5、当其收到一个VRRP报文时:
第一种情况:若该VRRP报文的优先级为0,则将Master_Down_Timer设置为Skew_Time。
第二种情况:若该VRRP报文的优先级不为0,当抢占模式未激活,或VRRP报文的优先级大于or等于本接口优先级时,将Master_Adver_Interval设置为VRRP报文中的Advertisement Interval,并重置Master_Down_Timer,将Master_Down_Timer的时间设置为Master_Down_Interval。
第三种情况:若该VRRP报文的优先级不为0,当抢占模式激活并且VRRP报文的优先级小于本接口优先级时,忽略该VRRP报文,立即切换到Master状态。
注:Master_Adver_Interval:Master路由器所发送的VRRP报文中,Advertisement Interval字段所填充的值,缺省时该值为1s。该时间间隔即Master路由器周期性发送VRRP报文的间隔。
Master_Down_Timer:Backup路由器将持续接收来自当前Master路由器的报文,每到报文到达时,Backup路由器的Master_Down_Timer会被重置。如果一定时间内没有接收到VRRP报文,则Master路由器判定为已经失效。
Master_Down_Interval:一定时间没有收到来自Master路由器的VRRP报文后,Backup路由器可认为当前Master路由器已经失效。Master_Down_Interval=(3×Master_Adver_Interval)+Skew_Time。
Skew_Time:一个偏移时间,Skew_Time=((256-Backup设备的优先级)×Master_Adver_Interval)/256。
第四种情况:当Master_Down_Timer超时--及它认为当前的Master路由器已经失效
将接口状态切换为Master状态;
开始从接口发送自己的VRRP报文;
从接口发送一个免费ARP Request广播帧,该ARP Request携带了VRRP虚拟IP地址及虚拟MAC地址的绑定信息,用于刷新该接口所直连的广播域内的ARP表、MAC地址表,从而把用户的流量引到此设备上面,整个过程对用户完全透明。
Master(主状态)

选举规则
1、比较优先级;
2、比较接口IP地址大小,接口IP地址较大者当选为Master设备。