VRRP

简介

虚拟路由冗余协议VRRP(Virtual Router Redundancy Protocol)通过把几台路由设备联合组成一台虚拟的路由设备,将虚拟路由设备的IP地址作为用户的默认网关实现与外部网络通信。当网关设备发生故障时,VRRP机制能够选举新的网关设备承担数据流量,从而保障网络的可靠通信。

随着网络的快速普及和相关应用的日益深入,各种增值业务(如IPTV、视频会议等)已经开始广泛部署,基础网络的可靠性日益成为用户关注的焦点,能够保证网络传输不中断对于终端用户非常重要。

通常,同一网段内的所有主机上都设置一条相同的、以网关为下一跳的缺省路由。主机发往其他网段的报文将通过缺省路由发往网关,再由网关进行转发,从而实现主机与外部网络的通信。当网关发生故障时,本网段内所有以网关为缺省路由的主机将无法与外部网络通信。增加出口网关是提高系统可靠性的常见方法,此时如何在多个出口之间进行选路就成为需要解决的问题。

VRRP的出现很好的解决了这个问题。VRRP能够在不改变组网的情况下,采用将多台路由设备组成一个虚拟路由器,通过配置虚拟路由器的IP地址为默认网关,实现默认网关的备份。当网关设备发生故障时,VRRP机制能够选举新的网关设备承担数据流量,从而保障网络的可靠通信。

QQ截图20240525184700
  • VRRP路由器(VRRP Router):运行VRRP协议的设备,它可能属于一个或多个虚拟路由器,如RouterA和RouterB。
  • 虚拟路由器(Virtual Router):又称VRRP备份组,由一个Master设备和多个Backup设备组成,被当作一个共享局域网内主机的缺省网关。如RouterA和RouterB共同组成了一个虚拟路由器。
  • Master路由器(Virtual Router Master):承担转发报文任务的VRRP设备,如RouterA。
  • Backup路由器(Virtual Router Backup):一组没有承担转发任务的VRRP设备,当Master设备出现故障时,它们将通过竞选成为新的Master设备,如RouterB。
  • VRID:虚拟路由器的标识。如RouterA和RouterB组成的虚拟路由器的VRID为1。
  • 虚拟IP地址(Virtual IP Address):虚拟路由器的IP地址,一个虚拟路由器可以有一个或多个IP地址,由用户配置。如RouterA和RouterB组成的虚拟路由器的虚拟IP地址为10.1.1.10/24。
  • IP地址拥有者(IP Address Owner):如果一个VRRP设备将虚拟路由器IP地址作为真实的接口地址,则该设备被称为IP地址拥有者。如果IP地址拥有者是可用的,通常它将成为Master。如RouterA,其接口的IP地址与虚拟路由器的IP地址相同,均为10.1.1.10/24,因此它是这个VRRP备份组的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请求时,使用虚拟MAC地址,而不是接口的真实MAC地址。如RouterA和RouterB组成的虚拟路由器的VRID为1,因此这个VRRP备份组的MAC地址为00-00-5E-00-01-01。

0000-5e00-01xx 其中xx是vrid

报文格式

vrrp只有一种报文,Advertisement报文,基于组播方式发送,目的组播地址为224.0.0.18,ip协议号:112

QQ截图20240525185133
报文字段 含义
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。
  • 支持的网络类型不同。VRRPv3适用于IPv4和IPv6两种网络,而VRRPv2仅适用于IPv4网络。

  • 认证功能不同。VRRPv3不支持认证功能,而VRRPv2支持认证功能。

  • 发送通告报文的时间间隔的单位不同。VRRPv3支持的是厘秒级,而VRRPv2支持的是秒级。

状态机

QQ截图20240525185814

状态 说明
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地址。Master_Down_Interval定时器:Backup设备在该定时器超时后仍未收到通告报文,则会转换为Master状态。计算公式如下:Master_Down_Interval=(3 Advertisement_Interval) + Skew_time。其中,Skew_Time=(256–Priority)/256。*如果收到比自己优先级小的报文且该报文优先级是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需要实现以下功能:

  • Master设备的选举。
  • Master设备状态的通告。

下面将从上述两个方面详细介绍VRRP的工作过程。

  • Master设备的选举

    VRRP根据优先级来确定虚拟路由器中每台设备的角色(Master设备或Backup设备)。优先级越高,则越有可能成为Master设备。

    初始创建的VRRP设备工作在Initialize状态,收到接口Up的消息后,如果设备的优先级为255,则直接成为Master设备;如果设备的优先级小于255,则会先切换至Backup状态,待Master_Down_Interval定时器超时后再切换至Master状态。首先切换至Master状态的VRRP设备通过VRRP通告报文的交互获知虚拟设备中其他成员的优先级,进行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状态。
  • Master设备状态的通告

    Master设备周期性地发送VRRP通告报文,在VRRP备份组中公布其配置信息(优先级等)和工作状况。Backup设备通过接收到VRRP报文的情况来判断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,单位为秒。

VRRP负载分担

负载分担是指多个VRRP备份组同时承担业务,VRRP负载分担与VRRP主备备份的基本原理和报文协商过程都是相同的。同样对于每一个VRRP备份组,都包含一个Master设备和若干Backup设备。与主备备份方式不同点在于:负载分担方式需要建立多个VRRP备份组,各备份组的Master设备可以不同;同一台VRRP设备可以加入多个备份组,在不同的备份组中具有不同的优先级。

QQ截图20240525190602

配置两个VRRP备份组。

  • VRRP备份组1:RouterA为Master设备,RouterB为Backup设备。
  • VRRP备份组2:RouterB为Master设备,RouterA为Backup设备。

一部分用户将VRRP备份组1作为网关,另一部分用户将VRRP备份组2作为网关。这样既可实现对业务流量的负载分担,同时,也起到了相互备份的作用。

VRRP监视上行端口

QQ截图20240525190751

命令:上行接口视图,vrrp vrid 1 track interface g 0/0/1 increased(或者reduced) 30(增加或减少优先级)

VRRP备份组只能感知其所在接口状态的变化,当VRRP设备上行接口或直连链路发生故障时,VRRP无法感知,此时会引起业务流量中断。通过部署VRRP与接口状态联动监视上行接口可以有效地解决上述问题,当Master设备的上行接口或直连链路发生故障时,通过调整自身优先级,触发主备切换,确保流量正常转发。

VRRP可以通过Increased和Reduced方式来监视接口状态:

  • 如果VRRP设备上配置以Increased方式监视一个接口,当被监视的接口状态变成Down后,该VRRP设备的优先级增加指定值。
  • 如果VRRP设备上配置以Reduced方式监视一个接口,当被监视的接口状态变为Down后,该VRRP设备的优先级降低指定值。