VRRP基础
VRRP
VRRP(Virtual Router Redundancy Protocol)虚拟路由器冗余协议,实现了网关的备份,同时解决了多个网关之间互相冲突的问题,从而提高网络可靠性。
VRRP相关概念
如上图所示,通过把几台(不一定只有两台)路由设备联合成一台虚拟的路由设备,保证当主机的下一条路由设备出现故障时,及时将业务切换到备份路由设备,从而保证通讯的可靠性和连续性。
VRRP路由器
VRRP路由器(VRRP Router):运行VRRP协议的设备,它可能属于一个或多个虚拟路由器,如R1和R2。VRRP是配置在路由器的接口上的,也是基于接口来工作的。
VRID
VRID(Virtual Router Identifier):一个VRRP组(VRRP Group)由多台协同工作的路由器(的接口)组成,使用相同的VRID进行标识。如R1和R2组成的虚拟路由器的VRID为1。
虚拟路由器
虚拟路由器(Virtual Router):又称VRRP备份组,由一个Master设备和多个Backup设备组成,被当作一个共享局域网内主机的缺省网关。如R1和R2共同组成了一个虚拟路由器。一个VRRP组只有一个虚拟路由器。
虚拟IP和虚拟MAC
虚拟IP地址(Virtual IP Address):虚拟路由器的IP地址,一个虚拟路由器可以有一个或多个IP地址,由用户配置。如SwitchA和SwitchB组成的虚拟路由器的虚拟IP地址为192.168.1.254/24。
虚拟MAC地址(Virtual MAC Address):虚拟路由器根据虚拟路由器ID生成的MAC地址。当虚拟路由器回应ARP请求时,使用虚拟MAC地址,而不是接口的真实MAC地址。虚拟路由器的MAC地址格式为**00-00-5E-00-01-xx
,xx
为VRID**,如R1和R2组成的虚拟路由器的VRID为1,因此这个VRRP备份组的MAC地址为00-00-5E-00-01-01。
Master路由器
Master路由器(Virtual Router Master):承担转发报文任务的VRRP设备,在每一个VRRP组中,只有Master路由器才会相应针对虚拟IP的ARP Request。同时Master会周期性地发送VRRP报文通知Backup路由器关于自己存活情况。例如在该例下Master为R1。
Backup路由器
Backup路由器(Virtual Router Backup):一组没有承担转发任务的VRRP设备,实时侦听Master发来的VRRP报文,当Master设备出现故障时,它们将通过竞选成为新的Master设备,如R2。
优先级
优先级(Priority)是用于选举Master和Backup路由器的依据,优先级取值范围为0~255,值越大优先级越高(生成树协议中相反🤣),当优先级相同时则比较接口的IP地址大小,大的优先。(默认值为100)
IP地址拥有者
IP地址拥有者(IP Address Owner):如果一个VRRP设备将虚拟路由器IP地址作为真实的接口地址,则该设备被称为IP地址拥有者。如果IP地址拥有者是可用的,通常它将成为Master。如R1,其接口的IP地址与虚拟路由器的IP地址相同,均为10.1.1.10/24,因此它是这个VRRP备份组的IP地址拥有者。
VRRP定时器
前面提到,Master会周期性地向Backup发送VRRP报文,周期依据就是Advertisement_Interval定时器,缺省值为1s(100厘秒)
而Backup也会侦听Master,当超过一定时间没有收到Master发来的VRRP报文,就会切换到Master身份。依据就是Master_Down_Interval定时器,其计算公式如下: $$ Master_Down=(3×Adver_Interval)+Skew_time(偏移时间)\ 其中\ Skew_time=(256-Priority)/256 $$
VRRP报文格式
VRRP协议报文用来将Master设备的优先级和状态通告给同一备份组的所有Backup设备。
VRRP协议报文封装在IP报文中,发送到分配给VRRP的IP组播地址。在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 for IPv4支持VRRPv2和VRRPv3,而VRRP for IPv6仅支持VRRPv3。
V2版本:
V3版本:
没有
报文字段 | 含义 | 含义 |
---|---|---|
VRRPv2 | VRRPv3 | |
Version | VRRP协议版本号,取值为2。 | VRRP协议版本号,取值为3。 |
Type | VRRP通告报文的类型,取值为1,表示Advertisement。 | VRRP通告报文的类型,取值为1,表示Advertisement。 |
Virtual Rtr ID(VRID) | 虚拟路由器ID,取值范围是1~255。 | 虚拟路由器ID,取值范围是1~255。 |
Priority | Master设备在备份组中的优先级,取值范围是0~255。0表示设备停止参与VRRP备份组,用来使备份设备尽快成为Master设备,而不必等到计时器超时;255则保留给IP地址拥有者。缺省值是100。 | Master设备在备份组中的优先级,取值范围是0~255。0表示设备停止参与VRRP备份组,用来使备份设备尽快成为Master设备,而不必等到计时器超时;255则保留给IP地址拥有者。缺省值是100。 |
Count IP Addrs/Count IPvX Addr | 备份组中虚拟IPv4地址的个数。 | 备份组中虚拟IPv4或虚拟IPv6地址的个数。 |
Auth Type | VRRP报文的认证类型。协议中指定了3种类型: 0:Non Authentication,表示无认证。 1:Simple Text Password,表示明文认证方式。 2:IP Authentication Header,表示MD5认证方式。 | - |
Adver Int/Max Adver Int | VRRP通告报文的发送时间间隔,单位是秒,缺省值为1秒。 | VRRP通告报文的发送时间间隔,单位是厘秒,缺省值为100厘秒(1秒)。 |
Checksum | 16位校验和,用于检测VRRP报文中的数据破坏情况。 | 16位校验和,用于检测VRRP报文中的数据破坏情况。 |
IP Address/IPvX Address(es) | VRRP备份组的虚拟IPv4地址,所包含的地址数定义在Count IP Addrs字段。 | VRRP备份组的虚拟IPv4地址或者虚拟IPv6地址,所包含的地址数定义在Count IPvX Addrs字段。 |
Authentication Data | VRRP报文的认证字。目前只有明文认证和MD5认证才用到该部分,对于其它认证方式,一律填0。 | - |
rsvd | - | VRRP报文的保留字段,必须设置为0。 |
VRRP工作原理
VRRP三种状态
一个Startup事件可以由系统在VRRP配置完成后自动触发,也可以是在已经配置VRRP的端口上,底层链路由不可用变为可用而触发。
三种状态说明:
状态 | 说明 |
---|---|
Initialize | 该状态为VRRP不可用状态,在此状态时设备不会对VRRP报文做任何处理。通常刚配置VRRP时或设备检测到故障时会进入Initialize状态。收到接口Up的消息后,如果设备的优先级为255,则直接成为Master设备;如果设备的优先级小于255,则会先切换至Backup状态。 |
Master | 当VRRP设备处于Master状态时,它将会做下列工作: 定时(Advertisement Interval)发送VRRP通告报文。 以虚拟MAC地址响应对虚拟IP地址的ARP请求。 转发目的MAC地址为虚拟MAC地址的IP报文。 如果它是这个虚拟IP地址的拥有者,则接收目的IP地址为这个虚拟IP地址的IP报文。否则,丢弃这个IP报文。 如果收到比自己优先级大的报文,立即成为Backup。 如果收到与自己优先级相等的VRRP报文且本地接口IP地址小于对端接口IP,立即成为Backup。 |
Backup | 当VRRP设备处于Backup状态时,它将会做下列工作: 接收Master设备发送的VRRP通告报文,判断Master设备的状态是否正常。 对虚拟IP地址的ARP请求,不做响应。 丢弃目的IP地址为虚拟IP地址的IP报文。 如果收到优先级和自己相同或者比自己大的报文,则重置Master_Down_Interval定时器,不进一步比较IP地址。 如果收到比自己优先级小的报文且该报文优先级是0时,定时器时间设置为Skew_time(偏移时间),如果该报文优先级不是0,丢弃报文,立刻成为Master。 |
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设备。
由此可见,为了保证Master设备和Backup设备能够协调工作,VRRP需要实现以下功能:
- 主备选举。
- 主备切换
主备选举
接口优先级不同
初始创建VRRP的设备工作在Initialize状态,收到接口Up的消息后,若此设备的优先级小于255,则会先切换至Backup状态,等待MASTER_DOWN定时器超时后再切换至Master状态。
如果优先级高的设备先启动,优先级低的设备后启动,则优先级高的设备先进入Master状态,优先级低的设备收到高优先级的VRRP通告报文,自己仍处于Backup状态。
如果优先级低的先启动,优先级高的后启动,则优先级低的先由Backup状态切换为Master状态,优先级高的设备收到优先级低的VRRP通告报文,重新进行选举,将优先级高的设备切换为Master状态。
接口优先级相同
存在IP地址拥有者
通常情况下,VRRP路由器的接口IP地址不会与虚拟路由器的IP地址重叠,也就是说我们会为虚拟路由器单独规划一个IP地址,而不会使用某台路由器的接口IP地址。当然也存在一个特殊的情况,例如在某些网络中IP地址资源比较紧缺,那么也有可能会将某台路由器的接口IP地址用于虚拟路由器,此时该路由器将无条件成为Master。
无法手动将VRRP接口优先级配置为255,当接口IP地址为IP地址拥有者时,优先级自动成为255。
主备切换
- 当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,单位为秒。
Master故障:备切主
Master恢复:主切备
开启抢占模式的VRRP备份组,当主备进行切换时,总共时长为:3xAdver_Interval+Skew_time+Delay_time
在抢占模式下,当Master的设备状态不稳定或者网络质量差时,会导致VRRP备份组频繁切换,从而引发终端ARP表项频繁刷新,为缓解此问题,通常设置抢占延时定时器,通过MASTER_INTERVAL定时器超时时间加上延时时间,确定状态稳定后,再进行主备回切。
VRRP应用场景
负载分担
负载分担方式需要建立多个VRRP备份组,各备份组的Master设备可以不同;同一台VRRP设备可以加入多个备份组,在不同的备份组中具有不同的优先级。
VRRP监视上行端口
如果用户未配置VRRP监视上行端口,则当VRRP备份组中的Master设备R1的上行接口或者链路出现故障时,VRRP备份组无法感知,Master无法向外转发流量。但是由于主备不会发生切换,导致出现流量黑洞。
VRRP+BFD
当VRRP备份组之间的链路出现故障时,由于此时VRRP报文无法正常交互,Backup设备需要等待Master_Down_Timer计时器超时后才会切换为Master设备,在等待切换期间内,业务流量仍会发往Master设备,此时会造成业务流量丢失。
通过在Master设备和Backup设备之间建立BFD会话并与VRRP备份组进行绑定,由BFD机制快速检测VRRP备份组之间的通信故障,并在出现故障时及时通知VRRP备份组进行主备切换,从而大大减少应用中断时间。
在普通BFD联动中,VRRP备份组会根据BFD会话的状态进行优先级调整,并根据调整后的优先级判断是否进行主备切换。在实际应用中,通常Master设备配置延时抢占,而Backup设备配置立即抢占,当Backup设备检测到BFD会话状态出现DOWN后,通过增加自身优先级大于Master优先级实现快速切换,当故障排除,BFD会话状态出现UP时,新的Master通过减小自己的优先级,发送vrrp通告报文,经过延迟时间后再次切换为Backup。
VRRP+MSTP
- MSTP是将一个或多个VLAN映射到一个生成树的实例,若干个VLAN共用一个生成树,MSTP可以实现负载均衡。
- VRRP配置网关可以灵活根据网络拓扑变化而自动切换,提高网络可靠性。
- VRRP+MSTP可以在实现负载分担的同时保证网络冗余备份。