一、 什么是VRRP?
虚拟路由冗余协议(Virtual Router Redundancy Protocol,简称VRRP,它是一种在不改变组网的情况下,将物理上多台路由器虚拟成一个虚拟路由器的技术,此虚拟路由器由一个Master设备和多个Backup设备组成,被当作一个共享局域网内主机的缺省网关。
二、 为什么需要VRRP?
如图,当网络中只有一个路由器充当网关的时候,如果路由器故障,则网段内的主机就无法通信了。
那有人就会说,我设置多个网关,连接多个路由器,但是多网关又会产生网关间地址冲突,主机频繁切换网络出口的问题,如图
三、 那如何从根本上解决问题呢?
这个时候就需要VRRP协议,将物理上多台路由器虚拟成一个虚拟路由器,通过配置虚拟路由器的IP地址为默认网关,实现网关的备份。
1. VRRP协议版本
VRRP协议有2个版本:VRRPv2仅适用于IPv4网络,也是最常用的一个版本;VRRPv3适用于IPv4和IPv6两种网络。
2. VRRP协议报文
只有一种报文:advertisement报文,目的IP地址是224.0.0.18,目的MAC地址是01-00-5e-00-00-12,协议号是112。
3. VRRP基本概念
(1)VRRP路由器:运行了VRRP协议的设备;
(2)虚拟路由器:又称VRRP备份组,由一个Master设备和多个Backup设备组成,被当作一个共享局域网内主机的缺省网关。就是多个路由器共同组成的一个虚拟路由器;
(3)Master路由器:承担转发报文任务的VRRP设备;
(4)Backup路由器:一组没有承担转发任务的VRRP设备,当Master设备出现故障时,它们将通过竞选成为新的Master设备;
(5)Priority:设备在备份组中的优先级,取值范围是0~255。0表示设备停止参与VRRP备份组,用来使备份设备尽快成为Master设备,而不必等到计时器超时;255则保留给IP地址拥有者,无法手工配置;设备缺省优先级值是100。
(6)vrid:虚拟路由器的标识,如图中RouterA和RouterB组成的虚拟路由器的vrid为1,需手工指定,范围1-255。
(7)虚拟IP地址:虚拟路由器的IP地址,一个虚拟路由器可以有一个或多个IP地址,由用户配置。
(8)IP地址拥有者(IP Address Owner):如果一个VRRP设备将真实的接口IP地址配置为虚拟路由器IP地址,则该设备被称为IP地址拥有者。如果IP地址拥有者是可用的,则它将一直成为Master。
(9)虚拟MAC地址(Virtual MAC Address):虚拟路由器根据vrid生成的MAC地址。一个虚拟路由器拥有一个虚拟MAC地址,格式为:00-00-5E-00-01-{vrid} 。当虚拟路由器回应ARP请求时,使用虚拟MAC地址,而不是接口的真实MAC地址。
如图所示VRRP实现过程:
1) 通过VRRP技术,将两台路由器RouterA和RouterB构成一个虚拟路由器vrid1;
2) 在vrid1中,两台路由器优先级不同Router优先级高,RouterA为Master路由器,负责报文转发,RouterB为Backup路由器,不做报文转发,相当于“备份”路由器;
3) RouterA与RouterB构成的虚拟路由器的虚拟IP地址为10.1.1.254/24;
4) RouterA与RouterB构成的虚拟路由器的虚拟MAC地址为0000-5e00-0101;
5) PC机HostA的网关地址则为虚拟路由器的虚拟地址10.1.1.254.
4. VRRP状态机
VRRP协议有三种状态:Initialize(初始状态)、Master(活动状态)、Backup(备状态)
1) Initialize(初始状态):设备启动时进入此状态,当收到接口Startup的消息,将转入Backup或Master状态(IP地址拥有者的接口优先级为255,直接转为Master)。在此状态时,不会对VRRP报文做任何处理。
2) Master(活动状态):此状态的路由器会定期发送VRRP报文。以虚拟MAC地址响应对虚拟IP地址的ARP请求。转发目的MAC地址为虚拟MAC地址的IP报文。如果它是虚拟IP地址的拥有者,则接收目的IP地址为这个虚拟IP地址的IP报文。否则,丢弃这个IP报文。
3) Backup(备状态):此状态的路由器会接收Master发送的VRRP报文,判断Master的状态是否正常。它对虚拟IP地址的ARP请求,不做响应。且丢弃目的MAC地址为虚拟MAC地址的IP报文。丢弃目的IP地址为虚拟IP地址的IP报文。
状态之间的转换:
Initialize->Master:Startup priority=255;
Initialize->Backup:Startup priority!=255;
Master->Initialize:设备关闭;
Master->Backup:收到比自己优先级更高的数据包;
Backup->Initialize:设备关闭;
Backup->Master:在超时时间内没有收到VRRP通告报文或者收到通告报文原Master优先级为0,或者收到的通告报文中的原Master优先级比自己的优先级低。
5. VRRP详细工作过程
第一步,选举Master,比较优先级,高的为Master,若优先级相同无Master时,比较接口IP地址,大的为Master,Master设备发送ARP报文,承担报文转发工作;
第二步,状态维持,Master设备周期发送通告报文,公布配置信息和工作状态;
Backup设备根据收到的通告报文判断Master设备是否工作正常,如果Master设备主动放弃Master地位时,会发送优先级为0的通告报文,Backup设备收到后会快速切换成Master设备或者定时器超时后Backup设备认为Master设备无法正常工作,会切换状态为Master,如图所示:
6.当Master设备出现故障后怎么办?
Master设备故障后,组内的备份设备一段时间(Master_Down_Interval定时器取值为:3×Advertisement_Interval+Skew_Time,单位为秒)内没有接收到来自Master设备的报文,则将自己转为Master设备。一个VRRP组里有多台备份设备时,短时间内可能产生多个Master设备,设备将会对收到的VRRP报文中的优先级与本地优先级做比较,从而选取优先级高的设备成为Master。如图所示:
7.Master设备故障后恢复的时候会怎么样?
Master设备恢复后,若其优先级为255则立即为Master设备,若优先级小于255,先切换为Backup设备,当Backup优先级高于Master设备时,如果此时工作模式为抢占模式,则Backup设备切换为Master设备,如果工作模式为非抢占模式,Backup设备不会切换为Master。(当设备切换为Master地位时都会发送免费ARP报文,承担报文转发功能),如图所示:
以下为华为产品文档关于VRRP的介绍,可作为学习资料:
VRRP简介
定义
虚拟路由冗余协议VRRP(Virtual Router Redundancy Protocol)通过把几台路由设备联合组成一台虚拟的路由设备,将虚拟路由设备的IP地址作为用户的默认网关实现与外部网络通信。当网关设备发生故障时,VRRP机制能够选举新的网关设备承担数据流量,从而保障网络的可靠通信。
目的
随着网络的快速普及和相关应用的日益深入,各种增值业务(如IPTV、视频会议等)已经开始广泛部署,基础网络的可靠性日益成为用户关注的焦点,能够保证网络传输不中断对于终端用户非常重要。
通常,同一网段内的所有主机上都设置一条相同的、以网关为下一跳的缺省路由。主机发往其他网段的报文将通过缺省路由发往网关,再由网关进行转发,从而实现主机与外部网络的通信。当网关发生故障时,本网段内所有以网关为缺省路由的主机将无法与外部网络通信。增加出口网关是提高系统可靠性的常见方法,此时如何在多个出口之间进行选路就成为需要解决的问题。
VRRP的出现很好的解决了这个问题。VRRP能够在不改变组网的情况下,将多台路由设备组成一个虚拟路由器,通过配置虚拟路由器的IP地址为默认网关,实现默认网关的备份。
优点
冗余备份
VRRP可以将多台路由设备配置为缺省网关路由器,当出现单点故障的时候通过备份链路进行业务传输,从而降低网络故障的可能性,保证用户的各种业务不中断传输。
负载分担
VRRP可以实现多台设备同时承担业务流量,从而减轻主用设备上数据流量的承载压力,在路由设备之间更均衡地分担流量。
联动功能
· VRRP联动可以监视上行链路的故障。当上行接口或链路故障时,VRRP备份组的Master设备降低优先级,重新进行选举,确保Master路由器为最佳的VRRP路由设备,保证流量的正常转发。
· VRRP与BFD联动可以提高VRRP备份组中主备设备的切换速度。利用BFD检测速度快的特点,在Master设备和Backup设备之间建立BFD会话并与VRRP备份组进行绑定,实现Master设备和Backup设备之间的链路出现故障时,Backup设备迅速切换为Master,承担网络流量。
VRRP基本概念
如图1所示,HostA通过Switch1双归到SwitchA和SwitchB。在SwitchA和SwitchB上配置VRRP备份组,对外体现为一台虚拟路由器,实现冗余备份。
在如图1所示的网络中部署VRRP协议,下面结合该图介绍VRRP协议的基本概念:
· VRRP路由器(VRRP Router):运行VRRP协议的设备。
· 虚拟路由器(Virtual Router):又称VRRP备份组,由一个Master设备和多个Backup设备组成,被当作一个共享局域网内主机的缺省网关。如SwitchA和SwitchB共同组成了一个虚拟路由器。
· Master路由器(Virtual Router Master):承担转发报文任务的VRRP设备,如SwitchA。
· Backup路由器(Virtual Router Backup):一组没有承担转发任务的VRRP设备,当Master设备出现故障时,它们将通过竞选成为新的Master设备,如SwitchB。
· VRID:虚拟路由器的标识。如SwitchA和SwitchB组成的虚拟路由器的VRID为1。
· 虚拟IP地址(Virtual IP Address):虚拟路由器的IP地址,一个虚拟路由器可以有一个或多个IP地址,由用户配置。如SwitchA和SwitchB组成的虚拟路由器的虚拟IP地址为10.1.1.10/24。
· IP地址拥有者(IP Address Owner):如果一个VRRP设备将虚拟路由器IP地址作为真实的接口地址,则该设备被称为IP地址拥有者。如果IP地址拥有者是可用的,通常它将成为Master。如SwitchA,其接口的IP地址与虚拟路由器的IP地址相同,均为10.1.1.10/24,因此它是这个VRRP备份组的IP地址拥有者。
· 虚拟MAC地址(Virtual MAC Address):虚拟路由器根据VRID生成的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协议报文
VRRP协议报文用来将Master设备的优先级和状态通告给同一备份组的所有Backup设备。
VRRP协议报文封装在IP报文中,拥有专门的VRRP组播地址。在IP报文头中,源地址为发送报文接口的主IP地址(不是虚拟IP地址),目的地址是224.0.0.18,TTL是255,协议号是112。
主IP地址(Primary IP Address):从接口的真实IP地址中选出来的一个主用IP地址,通常选择配置的第一个IP地址。
目前,VRRP协议包括两个版本:VRRPv2和VRRPv3。VRRPv2仅适用于IPv4网络,VRRPv3适用于IPv4和IPv6两种网络。
基于不同的网络类型,VRRP可以分为VRRP for IPv4和VRRP for IPv6(简称VRRP6)。
VRRP报文结构
VRRP工作原理
VRRP的状态机
VRRP协议中定义了三种状态机:初始状态(Initialize)、活动状态(Master)、备份状态(Backup)。其中,只有处于活动状态的设备才可以转发那些发送到虚拟IP地址的报文。VRRP状态的转换如图1所示。
VRRP工作过程
VRRP的工作过程如下:
1. VRRP备份组中的设备根据优先级选举出Master。Master设备通过发送免费ARP报文,将虚拟MAC地址通知给与它连接的设备或者主机,从而承担报文转发任务。
2. Master设备周期性向备份组内所有Backup设备发送VRRP通告报文,以公布其配置信息(优先级等)和工作状况。
3. 如果Master设备出现故障,VRRP备份组中的Backup设备将根据优先级重新选举新的Master。
4. VRRP备份组状态切换时,Master设备由一台设备切换为另外一台设备,新的Master设备会立即发送携带虚拟路由器的虚拟MAC地址和虚拟IP地址信息的免费ARP报文,刷新与它连接的主机或设备中的MAC表项,从而把用户流量引到新的Master设备上来,整个过程对用户完全透明。
5. 原Master设备故障恢复时,若该设备为IP地址拥有者(优先级为255),将直接切换至Master状态。若该设备优先级小于255,将首先切换至Backup状态,且其优先级恢复为故障前配置的优先级。
VRRP的优先级和抢占功能
VRRP冗余备份方案的一个重要方面是VRRP路由器的优先级和抢占功能,优先级和抢占功能决定了每个VRRP路由器所扮演的角色,以及当虚拟路由器Master发生故障时、故障排除的处理方式。
· VRRP路由器的抢占功能
VRRP设备的工作方式有如下两种:
§ 抢占模式:在抢占模式下,如果Backup设备的优先级比当前Master设备的优先级高,则主动将自己切换成Master。
§ 非抢占模式:在非抢占模式下,只要Master设备没有出现故障,Backup设备即使随后被配置了更高的优先级也不会成为Master设备。
因此,如果需要优先级高的VRRP设备能够主动成为Master,可以将此设备配置采用抢占方式。
· VRRP路由器的优先级
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状态。
· VRRP路由器状态的通告
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设备。
VRRP冗余备份
冗余备份是VRRP提供备份功能的基本方式,如图1所示。该方式需要建立一个虚拟路由器,该虚拟路由器包括一个Master设备和若干Backup设备。
正常情况下,SwitchA为Master设备并承担业务转发任务,SwitchB和SwitchC为Backup设备且不承担业务转发。SwitchA定期发送VRRP通告报文通知SwitchB和SwitchC自己工作正常。如果SwitchA发生故障,SwitchB和SwitchC会根据优先级选举新的Master设备,继续为主机转发数据,实现网关备份的功能。
SwitchA故障恢复后,在抢占方式下,将重新选举成为Master;在非抢占方式下,将保持在Backup状态。
下面以图1为例简要说明VRRP冗余备份的基本原理。
· SwitchA为Master设备,优先级设置为120,抢占方式为延迟抢占。
· SwitchB为Backup设备,优先级为默认值100,抢占方式为立即抢占。
· SwitchC为Backup设备,优先级设置为110,抢占方式为立即抢占。
1. 正常情况下,用户侧的上行流量路径为:Switch1->SwitchA->Router。此时,SwitchA定期发送VRRP报文通知SwitchB和SwitchC自己工作正常。
2. 当SwitchA发生故障时,SwitchA上的VRRP会处于不可用状态。由于SwitchC优先级高于SwitchB,因此SwitchC变为Master设备,并开始发送VRRP报文和免费ARP报文,SwitchB继续保持为Backup设备。用户侧的上行流量路径为:Switch1->SwitchC->Router。
3. 当SwitchA故障恢复时,VRRP的优先级为120,状态变为Backup。此时SwitchC继续定期发送VRRP报文,当SwitchA收到VRRP报文后,会比较优先级,发现自己的优先级更高,等待抢占延迟后抢占为Master设备,并开始发送VRRP报文和免费ARP报文。用户侧的上行流量路径恢复为:Switch1->SwitchA->Router。
VRRP负载分担
负载分担方式是指多台设备同时承担业务,因此负载分担方式需要两个或者两个以上的虚拟路由器,每个虚拟路由器都包括一个Master路由器和若干个Backup路由器,各虚拟路由器的Master路由器可以各不相同。
VRRP负载分担与VRRP冗余备份的基本原理和报文协商过程都是相同的。VRRP负载分担与VRRP冗余备份方式不同点在于:
· 负载分担方式需要建立多个VRRP备份组,各备份组的Master设备可以不同。
· 同一台VRRP设备可以加入多个备份组,在不同的备份组中具有不同的优先级。
如图1所示,配置两个VRRP备份组。
· VRRP备份组1:SwitchA为Master设备,SwitchB为Backup设备。
· VRRP备份组2:SwitchB为Master设备,SwitchA为Backup设备。
一部分用户将VRRP备份组1作为网关,另一部分用户将VRRP备份组2作为网关。这样即可实现对业务流量的负载分担,同时,也可以起到相互备份的作用
VRRP安全认证
目前仅VRRPv2版本支持认证,因此对于安全程度不同的网络环境,可以在报头上设定不同的认证方式和认证字。
在有可能受到安全威胁的网络中,VRRP提供了简单字符(Simple)认证方式和MD5(Message-Digest Algorithm 5)认证方式。
VRRPv2在通告报文中设定的认证方式如下:
· 无认证方式:设备对要发送的VRRP通告报文不进行任何认证处理,收到通告报文的设备也不进行任何认证,认为收到的都是真实的、合法的VRRP报文。
· 简单字符(Simple)认证方式:发送VRRP通告报文的设备将认证方式和认证字填充到通告报文中,而收到通告报文的设备则会将报文中的认证方式和认证字与本端配置的认证方式和认证字进行匹配。如果相同,则认为接收到的报文是合法的VRRP通告报文;否则认为接收到的报文是一个非法报文,并丢弃这个报文。
· MD5认证方式:发送VRRP通告报文的设备利用MD5算法对认证字进行加密,加密后保存在Authentication Data字段中。收到通告报文的设备会对报文中的认证方式和解密后的认证字进行匹配,检查该报文的合法性。
同一VRRP备份组的认证方式和认证字必须相同,否则Master设备和Backup设备无法协商成功。
为了保证更好的安全性,建议您使用更安全的MD5算法作为VRRP的认证算法。
在一个安全的网络中,可以采用缺省设置。设备对要发送的VRRP报文不进行任何认证处理,收到VRRP报文的设备也不进行任何认证,认为收到的都是真实的、合法的VRRP报文。这种情况下,不需要设置认证字。