VRRP的产生

如图1所示,局域网中只有一个路由器RTA,所有PC使用RTA做为网关,此时如果RTA故障,所有PC将不能和外网通信。

vrrp各个协议优先级(虚拟路由冗余协议)(1)

图1 单网关场景

通过部署多网关的方式实现网关的备份,但多网关可能会出现一些问题:网关间IP地址冲突;主机会频繁切换网络出口。

vrrp各个协议优先级(虚拟路由冗余协议)(2)

图2 多网关场景

VRRP的出现很好的解决了这个问题,它在不改变组网的情况下,将多台路由设备组成一个虚拟路由器,通过配置虚拟路由器的IP地址为默认网关,实现默认网关的备份。

vrrp各个协议优先级(虚拟路由冗余协议)(3)

图3 VRRP多网关场景逻辑图

VRRP基本概念

如图4所示,HostA双归到RouterA和RouterB。在RouterA和RouterB上配置VRRP备份组,对外体现为一台虚拟路由器,实现冗余备份。

vrrp各个协议优先级(虚拟路由冗余协议)(4)

图4 VRRP备份组示意图

在图4所示的网络中部署VRRP协议,下面结合该图介绍VRRP协议的基本概念:

VRRP协议报文

VRRP协议只有一种报文类型-VRRP通告(ADVERTISEMENT),只有Master才能发送VRRP通告。VRRP协议报文封装在IP报文中,在IP报文头中,源地址为发送报文接口的主IP地址(不是虚拟IP地址),目的地址是224.0.0.18,TTL是255,协议号是112。

目前,VRRP协议包括两个版本:VRRPv2和VRRPv3。VRRPv2仅适用于IPv4网络,VRRPv3适用于IPv4和IPv6两种网络。

VRRPv2的报文结构分别如图5所示。

vrrp各个协议优先级(虚拟路由冗余协议)(5)

图5 VRRPv2报文结构

各字段的含义如下表所示:

报文字段

含义

Version

VRRP协议版本号,取值为2。

Type

VRRP通告报文的类型,取值为1,表示Advertisement。

Virtual Rtr ID(VRID)

虚拟路由器ID,取值范围是1~255。

Priority

Master设备在备份组中的优先级,取值范围是0~255。0表示设备停止参与VRRP备份组,用来使Backup设备尽快成为Master设备,而不必等到计时器超时;255则保留给IP地址拥有者。缺省值是100。

Count IP Addrs/Count IPvX Addr

备份组中虚拟IPv4地址的个数。

Auth Type

VRRP报文的认证类型。协议中指定了3种类型:

  • 0:Non-authentication,表示无认证。
  • 1:Simple authentication,表示明文认证方式。
  • 2:IP Authentication Header(MD5 authentication),表示MD5认证方式。

Adver Int/Max Adver Int

VRRP通告报文的发送时间间隔,单位是秒,缺省值为1秒。

Checksum

16位校验和,用于检测VRRP报文中的数据破坏情况。

IP Address/IPvX Address(es)

VRRP备份组的虚拟IPv4地址,所包含的地址数定义在Count IP Addrs字段。

Authentication Data

VRRP报文的认证字。目前只有明文认证和MD5认证才用到该部分,对于其它认证方式,一律填0。

状态机

如图6 所示,VRRP协议状态机有三种状态:Initialize(初始状态)、Master(活动状态)、Backup(备状态)。

vrrp各个协议优先级(虚拟路由冗余协议)(6)

图6 VRRP状态的转换

状态

说明

Initialize

该状态为VRRP不可用状态,在此状态时设备不会对VRRP报文做任何处理。

通常刚配置VRRP时或设备检测到故障时会进入Initialize状态。

收到接口Up的消息后,如果设备的优先级为255,则直接成为Master设备;如果设备的优先级小于255,则会先切换至Backup状态。

Master

当VRRP设备处于Master状态时,它将会做下列工作:

  • 定时(Advertisement Interval)发送VRRP通告报文。
  • 以虚拟MAC地址响应对虚拟IP地址的ARP请求。
  • 转发目的MAC地址为虚拟MAC地址的IP报文。
  • 如果收到比自己优先级大的报文,立即成为Backup。
  • 如果收到与自己优先级相等的VRRP报文且本地接口IP地址小于对端接口IP,立即成为Backup。
  • 当接收到接口的Shutdown事件时,转为Initialize状态。

Backup

当VRRP设备处于Backup状态时,它将会做下列工作:

  • 接收Master发送的VRRP通告报文,判断Master的状态是否正常。
  1. 如果收到比自己优先级高的报文时,重置定时器。
  2. 如果收到优先级和自己相同的报文,则重置定时器。
  3. 如果收到比自己优先级小的报文时,默认立刻升主,如果配置了不抢占,则重置定时器;如果配置了抢占延迟,则重置定时器,待抢占延迟到期再升主。
  4. 如果收到报文优先级是0,立刻从Backup状态转为Master状态。
  • 对虚拟IP地址的ARP请求,不做响应。
  • 收到目的IP地址为虚拟IP地址的IP报文时按照正常二层转发流程进行处理。
  • Master_Down_Interval定时器:Backup设备在该定时器超时后仍未收到通告报文,则会转换为Master状态。计算公式如下:
  1. Master_Down_Interval=(3 * Advertisement_Interval) Skew_time(偏移时间)
  2. Skew_Time=(256–Priority)/256
  • 当接收到接口的Shutdown消息时,转为Initialize状态。
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状态,且其优先级恢复为故障前配置的优先级。

下面以图7 VRRP冗余备份的基本过程为例进行简要说明

vrrp各个协议优先级(虚拟路由冗余协议)(7)

图7 VRRP冗余备份示意图

  1. 正常情况下,SwitchA为Master设备并承担业务转发任务,SwitchB和SwitchC为Backup设备且不承担业务转发。用户侧的上行流量路径为: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

为了提高网络可靠性,通常部署主备双归属。为了满足不同的业务需要,设备之间可以运行多个VRRP备份组。此时每个VRRP备份组都需要维护自己的状态机,这样设备之间就会存在大量的VRRP协议报文。

如图8所示,为了减少协议报文对带宽的占用及CPU资源的消耗,可以将其中一个VRRP备份组配置为管理VRRP备份组(mVRRP),其余的业务VRRP备份组与管理VRRP备份组进行绑定。此时,管理VRRP负责发送协议报文来协商设备的主备状态;业务VRRP不发送协议报文,其主备状态与管理VRRP的主备保持一致,以此减少协议报文对CPU与带宽资源的消耗。

vrrp各个协议优先级(虚拟路由冗余协议)(8)

图8 管理VRRP示意图

管理VRRP备份组

管理VRRP备份组与普通VRRP备份组一样,会通过VRRP协议报文来协商VRRP设备的主备状态。管理VRRP可以部署在网络中的以下位置:

业务VRRP备份组

普通VRRP备份组与管理VRRP备份组绑定后成为业务VRRP备份组(也叫成员VRRP备份组)。业务VRRP备份组不再发送VRRP协议报文,它的状态由所在接口状态及与其绑定的管理VRRP备份组的状态共同决定。

VRRP与链路状态联动

VRRP冗余备份功能有时需要额外的技术来完善其工作。例如,Master设备到达某网络的链路突然断掉时,VRRP无法感知故障进行切换,此时主机无法通过Master设备远程访问该网络。此时,可以通过VRRP监视链路状态,解决这个问题。

VRRP直接监视连接上行链路的接口状态

当连接上行链路的接口Down时,Master设备通过降低自身的优先级,使得Backup设备抢占成为Master,承担转发任务。

vrrp各个协议优先级(虚拟路由冗余协议)(9)

图9 VRRP监视上行接口的典型组网图

如图9所示,SwitchA和SwitchB之间配置VRRP备份组,其中SwitchA为Master设备,SwitchB为Backup设备,SwitchA和SwitchB皆工作在抢占方式下。在SwitchA上配置VRRP监视上行接口Interface1,当Interface1故障时,SwitchA降低自身优先级,通过报文协商,SwitchB抢占成为Master,确保用户流量正常转发。

VRRP利用BFD/NQA/路由技术监视上行链路连接的远端主机或者网络状况

BFD/NQA/路由用于检测Master设备上行链路的连通状况,当Master设备的上行链路发生故障时,BFD/NQA/路由可以检测故障并通知Master设备调整自身优先级,触发主备切换,确保流量正常转发。

vrrp各个协议优先级(虚拟路由冗余协议)(10)

图10 VRRP与BFD/NQA/路由联动监视上行链路典型组网图

如图10所示,SwitchA和SwitchB之间配置VRRP备份组,其中SwitchA为Master设备,SwitchB为Backup设备,SwitchA和SwitchB皆工作在抢占方式下。配置BFD/NQA/路由监测SwitchA到SwitchE之间的链路,并在SwitchA上配置VRRP与BFD/NQA/路由联动。当BFD/NQA/路由检测到SwitchA到SwitchE之间的链路故障时,通知SwitchA降低自身优先级,通过VRRP报文协商,SwitchB抢占成为Master,确保用户流量正常转发。

VRRP心跳线

如图11所示,在VRRP STP场景中,SwitchA和SwitchB上配置VRRP备份组。若与用户相连的Switch1不能转发VRRP协议报文(如配置了未知组播丢弃),或者为了防止VRRP协议报文(心跳报文)所经过的链路不通或不稳定,可以在SwitchA和SwitchB之间部署一条心跳线,用于传递VRRP协议报文。

由于配置了心跳线之后,需要将Interface1和Interface2加入与VRRP备份组相对应的VLAN(例如,VRRP备份组配置在VLANIF100接口下,则需要配置Interface1和Interface2加入VLAN100),SwitchA、SwitchB和Switch1之间会存在环路,因此还需要配置破环协议来破除环路(例如,可以配置STP协议来破除环路)。

vrrp各个协议优先级(虚拟路由冗余协议)(11)

图11 VRRP心跳线示意图

,