VRRP

VRRP(Virtual Router Redundancy Protocol)虚拟路由器冗余协议,实现了网关的备份,同时解决了多个网关之间互相冲突的问题,从而提高网络可靠性。

image-20211212151300433

VRRP相关概念

image-20211212151405569

如上图所示,通过把几台(不一定只有两台)路由设备联合成一台虚拟的路由设备,保证当主机的下一条路由设备出现故障时,及时将业务切换到备份路由设备,从而保证通讯的可靠性和连续性。

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-xxxxVRID**,如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地址拥有者

image-20211212154445585

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

而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.18TTL是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版本:

image-20211212161630493

V3版本:

image-20211212163325939

没有

报文字段 含义 含义
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三种状态

image-20211212163738057

一个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工作过程

  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状态,且其优先级恢复为故障前配置的优先级。
  6. Backup设备的优先级高于Master设备时,由Backup设备的工作方式(抢占方式和非抢占方式)决定是否重新选举Master。
    • 抢占模式:在抢占模式下,如果Backup设备的优先级比当前Master设备的优先级高,则主动将自己切换成Master。
    • 非抢占模式:在非抢占模式下,只要Master设备没有出现故障,Backup设备即使随后被配置了更高的优先级也不会成为Master设备。

由此可见,为了保证Master设备和Backup设备能够协调工作,VRRP需要实现以下功能:

  • 主备选举。
  • 主备切换

主备选举

接口优先级不同

image-20211213130338614

初始创建VRRP的设备工作在Initialize状态,收到接口Up的消息后,若此设备的优先级小于255,则会先切换至Backup状态,等待MASTER_DOWN定时器超时后再切换至Master状态。

如果优先级高的设备先启动,优先级低的设备后启动,则优先级高的设备先进入Master状态,优先级低的设备收到高优先级的VRRP通告报文,自己仍处于Backup状态。

如果优先级低的先启动,优先级高的后启动,则优先级低的先由Backup状态切换为Master状态,优先级高的设备收到优先级低的VRRP通告报文,重新进行选举,将优先级高的设备切换为Master状态。

接口优先级相同

image-20211213130937567

存在IP地址拥有者

image-20211213131129978

通常情况下,VRRP路由器的接口IP地址不会与虚拟路由器的IP地址重叠,也就是说我们会为虚拟路由器单独规划一个IP地址,而不会使用某台路由器的接口IP地址。当然也存在一个特殊的情况,例如在某些网络中IP地址资源比较紧缺,那么也有可能会将某台路由器的接口IP地址用于虚拟路由器,此时该路由器将无条件成为Master。

无法手动将VRRP接口优先级配置为255,当接口IP地址为IP地址拥有者时,优先级自动成为255。

主备切换

image-20211213131614936

  • 当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故障:备切主

image-20211213131822978

Master恢复:主切备

image-20211213131846140

  • 开启抢占模式的VRRP备份组,当主备进行切换时,总共时长为:3xAdver_Interval+Skew_time+Delay_time

  • 在抢占模式下,当Master的设备状态不稳定或者网络质量差时,会导致VRRP备份组频繁切换,从而引发终端ARP表项频繁刷新,为缓解此问题,通常设置抢占延时定时器,通过MASTER_INTERVAL定时器超时时间加上延时时间,确定状态稳定后,再进行主备回切。

VRRP应用场景

负载分担

image-20211213132601284

负载分担方式需要建立多个VRRP备份组,各备份组的Master设备可以不同;同一台VRRP设备可以加入多个备份组,在不同的备份组中具有不同的优先级。

VRRP监视上行端口

image-20211213152413335

如果用户未配置VRRP监视上行端口,则当VRRP备份组中的Master设备R1的上行接口或者链路出现故障时,VRRP备份组无法感知,Master无法向外转发流量。但是由于主备不会发生切换,导致出现流量黑洞。

VRRP+BFD

image-20211213152455841

当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

image-20211213152659379

  • MSTP是将一个或多个VLAN映射到一个生成树的实例,若干个VLAN共用一个生成树,MSTP可以实现负载均衡。
  • VRRP配置网关可以灵活根据网络拓扑变化而自动切换,提高网络可靠性。
  • VRRP+MSTP可以在实现负载分担的同时保证网络冗余备份。

VPPR基本配置

image-20211213153352415

image-20211213153403218