虚拟路由冗余协议VRRP(Virtual Router Redundancy Protocol)通过把几台路由设备联合组成一台虚拟的路由设备,使用一定的机制保证当主机的下一跳路由设备出现故障时,及时将业务切换到备份路由设备,从而保持通讯的连续性和可靠性。
VRRP是相关标准 定义的一种冗余容错协议,通过物理设备和逻辑设备的分离,实现在多个出口网关之间选路。
如下图所示,在路由器上成功配置VRRP后,将物理网络中的主、备路由器虚拟为一台路由器,这台虚拟路由器拥有虚拟的IP地址和虚拟的MAC地址,主机只感知到这个虚拟路由器的存在,实际的主、备路由器对于用户并不感知,主机直接通过虚拟路由器与非本网段的其他设备进行通信。
一个虚拟路由器由一个主路由器和若干个备份路由器组成,主路由器实现真正的转发功能。当主路由器出现故障时,通过VRRP协商,从原备份中路由器选出一个,它将成为新的主路由器来接替故障路由器的工作。
在具有多播或广播能力的局域网(如以太网)中,VRRP提供逻辑网关确保重要传输链路的可靠性,不仅能够解决因某网关设备故障带来的业务中断,而且无需修改路由协议等配置信息,具有配置简单、可靠性高的优势。
目的
随着网络的快速普及和相关应用的日益深入,各种增值业务(如IPTV、视频会议等)已经开始广泛部署,基础网络的可靠性日益成为用户关注的焦点,能够保证网络传输不中断对于终端用户非常重要。
现网中,主机一般使用缺省网关与外部网络联系,如果缺省网关发生故障,主机与外部网络的通信将被中断。配置动态路由协议如RIP、OSPF或ICMP路由发现协议等可以提高系统可靠性,但是需要复杂的配置,而且并不能保证每台主机都支持配置动态路由协议。
VRRP的出现很好地解决了这个问题。VRRP能够在不改变组网的情况下,将多台路由设备组成一个虚拟路由器,通过配置虚拟路由器的IP地址为缺省网关,实现缺省网关的备份。当网关设备发生故障时,VRRP机制能够选举新的网关设备承担数据流量,从而保障网络的可靠通信。
现网中,主机一般使用缺省网关与外部网络联系,主机发出目的地址不在本网段的报文通过缺省路由发往出口网关(即下图中的PE),通过网关转发数据流,从而实现主机与外部网络的通信。
如果PE出现故障,与其相连的主机将与外界失去联系,导致业务中断。如果采用在网络中再增加一台路由器与主机相连也不能解决此问题。因为大多数主机只允许配置一个默认网关,同时不管网络上存在多少个与其相连的路由器,对于目的地址不在本网段的数据报文,主机仅使用已经配置好的默认网关进行传输。
对于以上问题,一种解决方案是配置多个出口网关,这是提高系统可靠性的常见方法,但是需要解决如何在多个出口网关之间进行选路的问题。另一种解决方案是运行动态路由协议,如RIP、OSPF,或者是ICMP路由发现协议等,但是很难实现在每一台主机上都运行动态路由协议,这主要涉及管理问题、安全问题、操作系统对协议的是否支持等问题。
VRRP的出现很好地解决了这个问题。VRRP能够在不改变组网的情况下,只在相关路由器上进行简单的配置,就能实现下一跳网关的备份,而不会给主机带来任何负担。
受益
运营商受益:
- 简化网络管理:在具有多播或广播能力的局域网(如以太网)中,借助VRRP能在某台设备出现故障时仍然提供高可靠的缺省链路,无需修改动态路由协议、路由发现协议等配置信息便可有效避免单一链路发生故障后的网络中断问题。
- 适应性强:VRRP报文封装在IP报文中,支持各种上层协议。
- 网络开销小:VRRP只定义了一种报文即VRRP通告报文。
用户受益:
- 用户仅需指定网关地址即可,无需支持复杂的路由协议。
- 用户不会感知网关设备的单点故障,能够持续保持与外部网络的通信。
VRRP基本功能
VRRP可以通过主备备份和负载分担两种基本方式实现设备的冗余备份和负载均衡。
VRRP主备备份示意图如图所示,其工作方式如下:
- 仅有一个备份组,且该备份组包括一个Master设备和若干Backup设备。
- 备份组内优先级最高的一台路由器作为Master设备,承担业务流量。
- 除了Master设备,其它路由器作为备份组内的Backup设备,处于就绪侦听状态,一旦Master设备发生故障,Backup设备中优先级高的设备接替原Master设备工作,承担业务流量转发。
用户能够通过建立多个VRRP备份组实现负载均衡。此时一台路由器可以属于多个备份组,VRRP负载分担示意图如图所示,其工作方式如下:
- PE1作为备份组1的Master设备,同时又是备份组2的Backup设备。
- PE2作为备份组2的Master设备,同时又是备份组1的Backup设备。
- 正常情况下,不同路由器承担不同用户群的业务流量,实现负载均衡。
概念
如图所示,通过将多台网关设备虚拟为一台网关设备,将虚拟网关设备的IP地址作为用户的默认网关实现与外部网络通信。当网关设备发生故障时,VRRP机制能够选举新的网关设备承担数据流量,从而保障网络的可靠通信。
VRRP协议的基本概念如下:
- 虚拟路由器(Virtual Router):又称为VRRP备份组,由一个Master设备和若干个Backup设备组成,被当作一个共享局域网内主机的缺省网关。它包括了一个虚拟路由器标识符和一组虚拟IP地址。
- VRID:虚拟路由器的标识。具有相同VRID的一组设备构成一个虚拟路由器。
- 虚拟IP地址(Virtual IP Address):虚拟路由器的IP地址,一个虚拟路由器可以有一个或多个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请求(VRRP for IPv4)或者NS请求(VRRP for IPv6)时,使用虚拟MAC地址,而不是接口的真实MAC地址。
- IP地址拥有者(IP Address Owner):如果一个VRRP设备将虚拟路由器IP地址作为真实的接口地址,则该设备被称为IP地址拥有者。如果IP地址拥有者是可用的,通常它将成为Master。
- 主IP地址(Primary IP Address):从接口的真实IP地址中选出来的一个主用IP地址,通常选择配置的第一个IP地址。VRRP广播报文使用主IP地址作为IP报文的源地址。
- VRRP路由器(VRRP Router):运行VRRP协议的设备,它可能属于一个或多个虚拟路由器。
- Master路由器(Virtual Router Master):承担转发报文任务的VRRP设备。
- Backup路由器(Virtual Router Backup):一组没有承担转发任务的VRRP设备,当Master设备出现故障时,它们将通过竞选成为新的Master设备。
- 优先级(Priority):虚拟路由器中VRRP路由器的优先级。虚拟路由器根据优先级选举出Master设备和Backup设备。
- VRRP的抢占模式:
- 抢占模式:在抢占模式下,如果Backup设备的优先级比当前Master设备的优先级高,则主动将自己切换成Master。
- 非抢占模式:在非抢占模式下,只要Master设备没有出现故障,Backup设备即使随后被配置了更高的优先级也不会成为Master设备。
- VRRP定时器:
- ADVER_INTERVAL定时器:Master设备会根据该定时器定期发送VRRP通告报文,缺省值为1秒。
- MASTER_DOWN定时器:Backup设备在该定时器超时后,会变为Master状态。计算公式如下:MASTER_DOWN=(3* ADVER_INTERVAL)+ Skew_time(偏移时间),其中,Skew_Time=(256–Priority)/256。
VRRP协议报文
VRRP协议报文用来将Master设备的优先级和状态通告给同一备份组的所有Backup设备。由于VRRP报文是一种组播报文,因此只能在同一个广播域(如VLAN,VSI等)内转发。
目前,VRRP协议包括两个版本:VRRPv2和VRRPv3。VRRPv2仅适用于IPv4网路,VRRPv3适用于IPv4和IPv6两种网络。基于不同的网络类型,VRRP可以分为VRRP for IPv4(简称VRRP4)和VRRP for IPv6(简称VRRP6)。VRRP for IPv4支持VRRPv2和VRRPv3,而VRRP for IPv6仅支持VRRPv3。
- 对IPv4网络而言,VRRP协议报文封装在IP报文中,发送到分配给VRRP的IP组播地址。在IP报文头中,源地址为发送报文接口的主IP地址(不是虚拟IP地址),目的地址是224.0.0.18,TTL是255,协议号是112。
- 对IPv6网络而言,VRRP协议报文封装在IPv6报文中,发送到分配给VRRP6的IPv6组播地址。在IPv6报文头中,源地址为发送报文接口的链路本地地址(不是虚拟IPv6地址),目的地址是FF02::12,跳数值是255,协议号是112。
由报文结构可以看出,VRRPv2和VRRPv3的主要区别为:
- 认证功能不同。VRRPv3不支持认证功能,而VRRPv2支持认证功能。
- 发送通告报文的时间间隔的单位不同。VRRPv3支持的是厘秒级,而VRRPv2支持的是秒级。
VRRP状态机
VRRP协议中定义了三种状态机:初始状态(Initialize)、活动状态(Master)、备份状态(Backup)。其中,只有处于Master状态的设备才可以转发那些发送到虚拟IP地址的报文。
VRRP状态转换如图所示。
VRRP的工作过程如下:
- 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。
由此可见,为了保证Master设备和Backup设备能够协调工作,VRRP需要实现以下功能:
- Master设备的选举
- Master设备状态的通告
下面将从上述两个方面详细介绍VRRP的工作过程。
Master设备的选举
VRRP根据优先级来确定虚拟路由器中每台设备的角色(Master设备或Backup设备)。优先级越高,则越有可能成为Master设备。
初始创建VRRP的设备工作在Initialize状态,收到接口Up的消息后,若此设备的优先级小于255,则会先切换至Backup状态,待MASTER_DOWN定时器超时后再切换至Master状态。首先切换至Master状态的VRRP设备通过VRRP通告报文的交互获知虚拟设备中其他成员的优先级,进行Master的选举:
- 如果VRRP报文中Master设备的优先级高于或等于自己的优先级,则Backup设备保持Backup状态;
- 如果VRRP报文中Master设备的优先级低于自己的优先级,采用抢占方式的Backup设备将切换至Master状态,采用非抢占方式的Backup设备仍保持Backup状态。
-
Master设备状态的通告
Master设备周期性地发送VRRP通告报文,在VRRP备份组中通告其配置信息(优先级等)和工作状况。Backup设备通过接收到VRRP报文的情况来判断Master设备是否工作正常。
- 当Master设备主动放弃Master地位(如Master设备退出备份组)时,会发送优先级为0的通告报文,用来使Backup设备快速切换成Master设备,而不用等到MASTER_DOWN定时器超时。这个切换的时间称为Skew_time,计算方式为:(256-Backup设备的优先级)/256,单位为秒。
- 当Master设备发生网络故障而不能发送通告报文的时候,Backup设备并不能立即知道其工作状况。等到MASTER_DOWN定时器超时后,才会认为Master设备无法正常工作,从而将状态切换为Master。其中,MASTER_DOWN定时器取值为:(3* ADVER_INTERVAL)+ Skew_time,单位为秒。
对于安全程度不同的网络环境,VRRP支持在通告报文中设定不同的认证方式和认证字。
- 在安全程度高的网络中,可以采用无认证方式。设备对要发送的VRRP通告报文不进行任何认证处理,收到通告报文的设备也不进行任何认证,认为收到的都是真实的、合法的VRRP报文。
- 在有可能受到安全威胁的网络中,可以采用简单字符(Simple)认证方式或MD5认证方式。
- 简单字符(Simple)认证:发送VRRP通告报文的设备将认证方式和认证字填充到通告报文中,而收到通告报文的设备则会将报文中的认证方式和认证字与本端配置的认证方式和认证字进行匹配。如果相同,则认为接收到的报文是合法的VRRP通告报文;否则认为接收到的报文是一个非法报文,并丢弃这个报文。
- MD5认证:设备采用MD5算法对本端配置的认证字进行加密,加密之后的密文保存在Authentication Data字段中。当设备收到通告报文时,会对报文中的认证字采用MD5算法进行加密,并通过比较Authentication Data字段中保存的密文和对收到的通告报文的认证字加密之后的密文,检查报文的合法性。