虚拟路由冗余协议(VRRP)
目录
1 VRRP简介
1.1 定义
虚拟路由冗余协议VRRP(Virtual Router Redundancy Protocol)通过把几台路由设备联合组成一台虚拟的路由设备,将虚拟路由设备的IP地址作为用户的默认网关实现与外部网络通信。当网关设备发生故障时,VRRP机制能够选举新的网关设备承担数据流量,从而保障网络的可靠通信。
##目的:
VRRP能够在不改变组网的情况下,采用将多台路由设备组成一个虚拟路由器,通过配置虚拟路由器的IP地址为默认网关,实现默认网关的备份。当网关设备发生故障时,VRRP机制能够选举新的网关设备承担数据流量,从而保障网络的可靠通信。
1.2 收益
在具有多播或广播能力的局域网(如以太网)中,借助VRRP能在网关设备出现故障时仍然提供高可靠的缺省链路,无需修改主机及网关设备的配置信息便可有效避免单一链路发生故障后的网络中断问题。
2 VRRP原理描述
2.1 VRRP概述
- VRRP路由器(VRRP Router):运行VRRP协议的设备,它可能属于一个或多个虚拟路由器。
- 虚拟路由器(Virtual Router):又称VRRP备份组,由一个Master设备和多个Backup设备组成,被当作一个共享局域网内主机的缺省网关。
- Master路由器(Virtual Router Master):承担转发报文任务的VRRP设备。
- Backup路由器(Virtual Router Backup):一组没有担转发任务的VRRP设备,当Master设备出现故障时,它们将通过竞选成为新的Master设备。
- VRID:虚拟路由器的标识。
- 虚拟IP地址(Virtual IP Address):虚拟路由器的IP地址,一个虚拟路由器可以有一个或多个IP地址,由用户配置。
- IP地址拥有者(IP Address Owner):如果一个VRRP设备将虚拟路由器IP地址作为真实的接口地址,则该设备被称为IP地址拥有者。如果IP地址拥有者是可用的,通常它将成为Master。
- 虚拟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地址。
2.2 VRRP报文
VRRP协议报文用来将Master设备的优先级和状态通告给同一备份组的所有Backup设备。
VRRP协议报文封装在IP报文中,发送到分配给VRRP的IP组播地址。在IP报文头中,源地址为发送报文接口的主IP地址(不是虚拟IP地址),目的地址是224.0.0.18,TTL是255,协议号是112。
VRRP报文的IP头中,TTL必须为255。当VRRP路由器收到TTL不等于255的VRRP协议报文后,必须丢弃。
主IP地址(Primary IP Address):从接口的真实IP地址中选出来的一个主用IP地址,通常选择配置的第一个IP地址。
目前,VRRP协议包括两个版本:VRRPv2和VRRPv3。VRRPv2仅适用于IPv4网络,VRRPv3适用于IPv4和IPv6两种网络。
基于不同的网络类型,VRRP可以分为VRRP for IPv4和VRRP for IPv6(简称VRRP6)。VRRP for IPv4支持VRRPv2和VRRPv3,而VRRP for IPv6仅支持VRRPv3。
2.2.1 VRRP报文结构
图:VRRPv2报文结构
图:VRRPv3报文结构
2.2.2 字段解释
字段 | 长度 | 描述 |
---|---|---|
Version | 4比特 | 指VRRP协议版本,VRRPv2此字段为2,VRRPv3此字段为3。 |
Type | 4比特 | 定义了VRRP报文的类型。本版本的协议仅定义了一个报文类型:1:ADVERTISEMENT 带有未知类型的报文必须被丢弃。 |
Virtual Rtr ID8 | 8比特 | 虚拟路由器标识(VRID)字段标识了此报文所报告状态的虚拟路由器。可配置的范围是1–255。没有缺省值。 |
Priority | 8比特 | Priority字段申明了发送此报文的VRRP路由器的优先级。值越高优先级越高。该字段为8位无符号整型。如果VRRP路由器是虚拟路由器地址的IP地址所有者,那么其优先级必须为255。起备用作用的VRRP路由器的优先级必须在1–254之间。缺省的VRRP路由器优先级为100。优先级值0 用于指示当前虚拟路由器的主路由器停止参与VRRP组。主要用于触发备用路由器快速地迁移到主路由器,而不用等待当前主路由器超时。 |
Count IP Addrs | 8比特 | 在此VRRP通告中包含的IP地址的数量。 |
Auth Type | 8比特 | 认证类型字段用于标识要用到的认证方法。在一个虚拟路由器组内认证类型是唯一的。认证类型字段是一个8位无符号整型。如果报文携带未知的认证类型或者该认证类型和本地配置的认证方法不匹配,那么该报文必须被丢弃。目前定义的认证方法有:0 : No Authentication 不认证该认证类型表明VRRP协议报文的交换不需要认证。在发送VRRP协议报文时,Authentication Data 字段将被置为0;而在接收协议报文时,Authentication Data 字段被忽略。 1 : Simple Text Password,表示明文认证方式。2: IP Authentication Header,表示MD5认证方式。 |
Adver Int | 8比特 | VRRP通告间隔时间,单位为秒。缺省为1秒。这个字段主要用于错误配置路由器时的故障定位和解决。 |
Checksum | 16比特 | 16位校验和,用于检测VRRP报文中的数据破坏情况。 |
IP Address | 32比特 | VRRP备份组的虚拟IPv4地址 或者虚拟IPv6地址 |
Authentication Data | 32比特 | VRRP报文的认证字。目前只有明文认证和MD5认证才用到该部分,对于其它认证方式,一律填0。 |
2.2.3 VRRP报文v2/v3主要区别
- 支持的网络类型不同。VRRPv3适用于IPv4和IPv6两种网络,而VRRPv2仅适用于IPv4网络。
- 认证功能不同。VRRPv3不支持认证功能,而VRRPv2支持认证功能。VRRPv2版本保留报文的认证字段,是为了兼容早期版本(RFC2338),VRRP认证并不能提高安全性。
- 发送通告报文的时间间隔的单位不同。VRRPv3支持的是厘秒级,而VRRPv2支持的是秒级。
2.2.4 VRRP认证
- 无认证方式:设备对要发送的VRRP通告报文不进行任何认证处理,收到通告报文的设备也不进行任何认证,认为收到的都是真实的、合法的VRRP报文。
- 简单字符(Simple)认证方式:发送VRRP通告报文的设备将认证方式和认证字填充到通告报文中,而收到通告报文的设备则会将报文中的认证方式和认证字与本端配置的认证方式和认证字进行匹配。如果相同,则认为接收到的报文是合法的VRRP通告报文;否则认为接收到的报文是一个非法报文,并丢弃这个报文。
- MD5认证方式:发送VRRP通告报文的设备利用MD5算法对认证字进行加密,加密后保存在Authentication Data字段中。收到通告报文的设备会对报文中的认证方式和解密后的认证字进行匹配,检查该报文的合法性。
2.2.5 VRRP报文抓包示例
图:VRRPv2报文抓包示例
图:VRRPv3报文抓包示例
3 VRRP工作原理
3.1 VRRP状态机
VRRP协议中定义了三种状态机:初始状态(Initialize)、活动状态(Master)、备份状态(Backup)。其中,只有处于Master状态的设备才可以转发那些发送到虚拟IP地址的报文。
- 该状态为VRRP不可用状态,在此状态时设备不会对VRRP报文做任何处理。
- 通常刚配置VRRP时或设备检测到故障时会进Initialize状态。
- 收到接口Up的消息后,如果设备的优先级为255,则直接成为Master设备;如果设备的优先级小于255,则会先切换至Backup状态。
当VRRP设备处于Master状态时,它将会做下列工作:
- 定时(Advertisement Interval)发送VRRP通告报文。
- 以虚拟MAC地址响应对虚拟IP地址的ARP请求。
- 转发目的MAC地址为虚拟MAC地址的IP报文。
- 如果它是这个虚拟IP地址的拥有者,则接收目的IP地址为这个虚拟IP地址的IP报文。否则,丢弃这个IP报文。
- 如果收到比自己优先级大的报文,立即成为Backup。
- 如果收到与自己优先级相等的VRRP报文且本地接口IP地址小于对端接口IP,立即成为Backup。
-
当VRRP设备处于Backup状态时,它将会做下列工作:
-
接收Master设备发送的VRRP通告报文,判断Master设备的状态是否正常。
-
对虚拟IP地址的ARP请求,不做响应。
-
丢弃目的IP地址为虚拟IP地址的IP报文。
-
如果收到优先级和自己相同或者比自己大的报文,则重置Master_Down_Interval定时器,不进一步比较IP地址。
Master_Down_Interval定时器:Backup设备在该定时器超时后仍未收到通告报文,则会转换为Master状态。计算公式如下:Master_Down_Interval=(3*Advertisement_Interval) + Skew_time。其中,Skew_Time=(256–Priority)/256。
-
如果收到比自己优先级小的报文且该报文优先级是0时,定时器时间设置为Skew_time(偏移时间),如果该报文优先级不是0,丢弃报文,立刻成为Master。
3.2 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。
- 抢占模式:在抢占模式下,如果Backup设备的优先级比当前Master设备的优先级高,则主动将自己切换成Master。
- 非抢占模式:在非抢占模式下,只要Master设备没有出现故障,Backup设备即使随后被配置了更高的优先级也不会成为Master设备。
3.3 Master设备的选举
VRRP根据优先级来确定虚拟路由器中每台设备的角色(Master设备或Backup设备)。优先级越高,则越有可能成为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状态。
3.4 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设备。
4 VRRP负载分担
负载分担是指多个VRRP备份组同时承担业务,VRRP负载分担与VRRP主备备份的基本原理和报文协商过程都是相同的。同样对于每一个VRRP备份组,都包含一个Master设备和若干Backup设备。与主备备份方式不同点在于:负载分担方式需要建立多个VRRP备份组,各备份组的Master设备可以不同;同一台VRRP设备可以加入多个备份组,在不同的备份组中具有不同的优先级。
4.1 多网关负载分担
通过创建多个带虚拟IP地址的VRRP备份组,为不同的用户指定不同的VRRP备份组作为网关,实现负载分担。
5 VRRP小结
VRRP报文通告是通过组播来通告的,组播地址:224.0.0.18,组播MAC:01-00-5e-00-00-12,VRRP是三层协议,通过IP协议承载,协议号112。同时IP包中的TTL值为255。
VRRP需要通过VRRP报文来选举Master和Backup,只有Master才能装发数据,而backup不装发数据,收到数据帧后丢弃。
5.1 如何选举Master和Backup?
- 比较优先级,默认情况下优先级为100,最大可以配置的优先级为1-254,优先级越大越优。255(V-IP = Interface ip),优先级如果为0,说明退出Master(Master离组,例如在Master的接口下删除VRRP配置)
- 如果优先级一样,IP地址大的一端成为Master。
Master:
- 可以装发报文。
- 应答 ARP请求。
- 通告基于VIP的免费ARP。
- master定时通告VRRP报文。
Backup:
- 如果backup接收到目标mac为虚拟mac地址的数据帧,丢弃不转发。
- backup被动接收vrrp报文,不通告。
5.2 影响VRRP协商的条件
- IP包头中的TTL值必须为255.
- 版本必须一致。
- VRRP报文中的字段必须一致。(Authen date)
- VRID必须一致。
- 认证类型和认证必须一致。
- VIP(Count ip address)列表必须一致。
- VRRP报文通告间隔必须一致(华为Backup会使用master端的通告间隔)
- checksum必须一致。