VRRP技术白皮书

VRRP技术白皮书

微信搜索 zze_coding 或扫描 👉 二维码关注我的微信公众号获取更多资源推送:

下文用到的缩略语:

缩略语

英文全名

中文解释

VRRP

Virtual Router Redundancy Protocol

虚拟路由器冗余协议

NQA

Network Quality Analyzer

网络质量分析

BFD

Bidirectional Forwarding Detection

双向转发检测

IRDP

ICMP Router Discovery Protocol

ICMP路由发现协议

VRID

Virtual Router ID

虚拟路由器号

概述

产生背景

随着 Internet 的发展,人们对网络可靠性的要求越来越高。特别是对于终端用户来说,能够实时与网络其他部分保持联系是非常重要的。一般来说,主机通过设置默认网关来与外部网络联系,如下图所示:

image.png

主机将发送给外部网络的报文发送给网关,由网关传递给外部网络,从而实现主机与外部网络的通信。正常的情况下,主机可以完全信赖网关的工作,但是当网关坏掉时,主机与外部的通信就会中断。要解决网络中断的问题,可以依靠再添加网关的方式解决,不过由于大多数主机只允许配置一个默认网关,此时需要网络管理员进行手工干预网络配置,才能使得主机使用新的网关进行通信;有时,人们运用动态路由协议的方法来解决网络出现故障这一问题,如运行 RIP、OSPF 等,或者使用 IRDP。然而,这些协议由于配置过于复杂,或者安全性能不好等原因都不能满足用户的需求。

为了更好地解决网络中断的问题,网络开发者提出了 VRRP,它既不需要改变组网情况,也不需要在主机上做任何配置,只需要在相关路由器上配置极少的几条命令,就能实现下一跳网关的备份,并且不会给主机带来任何负担。和其他方法比较起来,VRRP 更加能够满足用户的需求。

技术优点

VRRP是一种容错协议,它保证当主机的下一跳路由器出现故障时,由另一台路由器来代替出现故障的路由器进行工作,从而保持网络通信的连续性和可靠性。

VRRP 具有如下优点:

  • 简化网络管理。在具有多播或广播能力的局域网(如以太网)中,借助 VRRP 能在某台设备出现故障时仍然提供高可靠的缺省链路,有效避免单一链路发生故障后网络中断的问题,而无需修改动态路由协议、路由发现协议等配置信息,也无需修改主机的默认网关配置。
  • 适应性强。VRRP 报文封装在 IP 报文中,支持各种上层协议。
  • 网络开销小。VRRP 只定义了一种报文——VRRP 通告报文,并且只有处于 Master 状态的路由器可以发送 VRRP 报文。

VRRP 协议介绍

相关术语

  • 虚拟路由器:由一个 Master 路由器和多个 Backup 路由器组成。主机将虚拟路由器当作默认网关。
  • VRID:虚拟路由器的标识。有相同 VRID 的一组路由器构成一个虚拟路由器。
  • Master 路由器:虚拟路由器中承担报文转发任务的路由器。
  • Backup 路由器:Master 路由器出现故障时,能够代替 Master 路由器工作的路由器。
  • 虚拟IP地址:虚拟路由器的 IP 地址。一个虚拟路由器可以拥有一个或多个 IP 地址。
  • IP地址拥有者:接口IP地址与虚拟 IP 地址相同的路由器被称为IP地址拥有者。
  • 虚拟MAC地址:一个虚拟路由器拥有一个虚拟 MAC 地址。虚拟 MAC 地址的格式为 00-00-5E-00-01-{VRID}。通常情况下,虚拟路由器回应 ARP 请求使用的是虚拟 MAC 地址,只有虚拟路由器做特殊配置的时候,才回应接口的真实 MAC 地址。
  • 优先级:VRRP 根据优先级来确定虚拟路由器中每台路由器的地位。
  • 非抢占方式:如果 Backup 路由器工作在非抢占方式下,则只要 Master 路由器没有出现故障,Backup 路由器即使随后被配置了更高的优先级也不会成为 Master 路由器。
  • 抢占方式:如果 Backup 路由器工作在抢占方式下,当它收到 VRRP 报文后,会将自己的优先级与通告报文中的优先级进行比较。如果自己的优先级比当前的 Master 路由器的优先级高,就会主动抢占成为 Master 路由器;否则,将保持 Backup 状态。

虚拟路由器简介

VRRP 将局域网内的一组路由器划分在一起,形成一个 VRRP 备份组,它在功能上相当于一台虚拟路由器,使用虚拟路由器号进行标识。以下使用虚拟路由器代替 VRRP 备份组进行描述。

虚拟路由器有自己的虚拟 IP 地址和虚拟 MAC 地址,它的外在表现形式和实际的物理路由器完全一样。局域网内的主机将虚拟路由器的IP地址设置为默认网关,通过虚拟路由器与外部网络进行通信。

虚拟路由器是工作在实际的物理路由器之上的。它由多个实际的路由器组成,包括一个 Master 路由器和多个 Backup 路由器。Master 路由器正常工作时,局域网内的主机通过 Master 与外界通信。当 Master 路由器出现故障时,Backup 路由器中的一台设备将成为新的 Master 路由器,接替转发报文的工作,如下图所示。

image.png

VRRP 工作过程

VRRP 的工作过程为:

  1. 虚拟路由器中的路由器根据优先级选举出 Master。Master 路由器通过发送 ARP 报文,将自己的虚拟 MAC 地址通知给与它连接的设备或者主机,从而承担报文转发任务;
  2. Master 路由器周期性发送 VRRP 报文,以公布其配置信息(优先级等)和工作状况;
  3. 如果 Master 路由器出现故障,虚拟路由器中的 Backup 路由器将根据优先级重新选举新的 Master;
  4. 虚拟路由器状态切换时,Master 路由器由一台设备切换为另外一台设备,新的 Master 路由器只是简单地发送一个携带虚拟路由器的 MAC 地址和虚拟 IP 地址信息的 ARP 报文,这样就可以更新与它连接的主机或设备中的 ARP 相关信息。网络中的主机感知不到 Master 路由器已经切换为另外一台设备。
  5. Backup 路由器的优先级高于 Master 路由器时,由 Backup 路由器的工作方式(抢占方式和非抢占方式)决定是否重新选举 Master。

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

  • Master 路由器的选举;
  • Master 路由器状态的通告;
  • 同时,为了提高安全性,VRRP 还提供了认证功能;

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

Master 路由器的选举

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

初始创建的路由器工作在 Backup 状态,通过 VRRP 报文的交互获知虚拟路由器中其他成员的优先级:

如果 VRRP 报文中 Master 路由器的优先级高于自己的优先级,则路由器保持在 Backup 状态;
如果 VRRP 报文中 Master 路由器的优先级低于自己的优先级,采用抢占工作方式的路由器将抢占成为 Master 状态,周期性地发送 VRRP 报文,采用非抢占工作方式的路由器仍保持 Backup 状态;
如果在一定时间内没有收到 VRRP 报文,则路由器切换为 Master 状态。

VRRP 优先级的取值范围为 0 到 255(数值越大表明优先级越高),可配置的范围是 1 到 254,优先级 0 为系统保留给路由器放弃 Master 位置时候使用,255 则是系统保留给 IP 地址拥有者使用。当路由器为 IP 地址拥有者时,其优先级始终为 255。因此,当虚拟路由器内存在 IP 地址拥有者时,只要其工作正常,则为 Master 路由器。

Master 路由器状态的通告

Master 路由器周期性地发送 VRRP 报文,在虚拟路由器中公布其配置信息(优先级等)和工作状况。Backup 路由器通过接收到 VRRP 报文的情况来判断 Master 路由器是否工作正常。

Master 路由器主动放弃 Master 地位(如 Master 路由器退出虚拟路由器)时,会发送优先级为 0 的 VRRP 报文,致使 Backup 路由器快速切换变成 Master 路由器。这个切换的时间称为 Skew time,计算方式为:(256-Backup 路由器的优先级)/256,单位为秒,即 Backup 路由器的优先级越高,则切换的时间越短。

当 Master 路由器发生网络故障而不能发送 VRRP 报文的时候,Backup 路由器并不能立即知道其工作状况。Backup 路由器等待一段时间之后,如果还没有接收到 VRRP 报文,那么会认为 Master 路由器无法正常工作,而把自己升级为 Master 路由器,周期性发送 VRRP 报文。如果此时多个 Backup 路由器竞争 Master 路由器的位置,将通过优先级来选举 Master 路由器。Backup 路由器默认等待的时间称为 Master_Down_Interval,取值为:(3×VRRP报文的发送时间间隔)+Skew time,单位为秒。

在性能不够稳定的网络中,Backup 路由器可能因为网络堵塞而在 Master_Down_Interval 期间没有收到 Master 路由器的报文,而主动抢占为 Master 位置,如果此时原 Master 路由器的报文又到达了,就会出现虚拟路由器的成员频繁的进行 Master 抢占现象。为了缓解这种现象的发生,特制定了延迟等待定时器。它可以使得 Backup 路由器在等待了 Master_Down_Interval 后,再等待延迟等待时间。如在此期间仍然没有收到 VRRP 报文,则此 Backup 路由器才会切换为 Master 路由器,对外发送 VRRP 报文。

认证方式

VRRP 提供了三种认证方式:

  • 无认证:不进行任何 VRRP 报文的合法性认证,不提供安全性保障。
  • 简单字符认证:在一个有可能受到安全威胁的网络中,可以将认证方式设置为简单字符认证。发送 VRRP 报文的路由器将认证字填入到 VRRP 报文中,而收到 VRRP 报文的路由器会将收到的 VRRP 报文中的认证字和本地配置的认证字进行比较。如果认证字相同,则认为接收到的报文是合法的 VRRP 报文;否则认为接收到的报文是一个非法报文。
  • MD5 认证:在一个非常不安全的网络中,可以将认证方式设置为 MD5 认证。发送 VRRP 报文的路由器利用认证字和 MD5 算法对 VRRP 报文进行加密,加密后的报文保存在 Authentication Header(认证头)中。收到 VRRP 报文的路由器会利用认证字解密报文,检查该报文的合法性。

Comware 实现的技术特色

监视上行链路

VRRP 网络传输功能有时需要额外的技术来完善其工作。例如,Master 路由器到达某网络的链路突然断掉时,主机无法通过此 Master 路由器远程访问该网络。此时,可以通过监视指定接口上行链路功能,解决这个问题。当 Master 路由器发现上行链路出现故障后,主动降低自己的优先级(使 Master 路由器的优先级低于 Backup 路由器),并立即发送 VRRP 报文。Backup 路由器接收到优先级比自己低的 VRRP 报文后,等待 Skew_Time 切换为新的 Master 路由器。从而,使得能够到达此网络的 Backup 路由器充当 VRRP 新的 Master 路由器,协助主机完成网络通讯。

VRRP 可以直接监视连接上行链路的接口状态。当连接上行链路的接口 down 时,将 Master 路由器降低指定的优先级。VRRP 优先级最低可以降低到 1。

VRRP 可以利用 NQA 技术监视上行链路连接的远端主机或者网络状况。例如,Master 设备上启动 NQA 的 ICMP-echo 探测功能,探测远端主机的可达性。当 ICMP-echo 探测失败时,它可以通知本设备探测结果,达到降低 VRRP 优先级的目的。

VRRP 也可以利用 BFD 技术监视上行链路连接的远端主机或者网络状况。由于 BFD 的精度可以到达 10ms,通过 BFD 能够快速检测到链路状态的变化,达到快速抢占的目的。例如,可以在 Master 路由器上使用 BFD 技术监视上行设备的物理状态,在上行设备坏掉之后,快速检测到该变化,并降低 Master 路由器的优先级,致使 Backup 路由器等待 Skew time 后,抢占成为新的 Master 路由器。

Backup 监视 Master 工作状态

Backup 路由器在 Master 路由器坏掉之后,正常情况下需要等待 Master_Down_Interval 才能切换为新的 Master 的位置,这段时间内主机将无法正常通信,因为此时没有 Master 设备替它转发报文。为了解决这个网络故障,Backup 设备提供了一个监听 Master 工作状态的功能,使得 Master 路由器坏掉之后 Backup 能够立即切换成为新的 Master 路由器,维持网络通讯。

Backup 路由器监视 Master 路由器采用的是具有快速检测功能的 BFD 技术。在 Backup 设备上使用该技术监视 Master 路由器的状态,一旦 Master 路由器发生故障,Backup 就可以自动切换成为新的 Master 路由器,将切换时间缩短到毫秒级。

典型组网案例

主备备份

主备备份方式表示业务仅由 Master 路由器承担。当 Master 路由器出现故障时,才会由选举出来的 Backup 路由器接替它工作。如下图中所示。

image.png

初始情况下,Device A 是 Master 路由器并承担转发任务,Device B 和 Device C 是 Backup 路由器且都处于就绪监听状态。如果 Device A 发生故障,则虚拟路由器内处于 Backup 状态的 Device B 和 Device C 路由器将根据优先级选出一个新的 Master 路由器,这个新 Master 路由器继续为网络内的主机转发数据。

负载分担

在路由器的一个接口上可以创建多个虚拟路由器,使得该路由器可以在一个虚拟路由器中作为 Master 路由器,同时在其他的虚拟路由器中作为 Backup 路由器。

负载分担方式是指多台路由器同时承担业务,因此负载分担方式需要两个或者两个以上的虚拟路由器,每个虚拟路由器都包括一个 Master 路由器和若干个 Backup 路由器,各虚拟路由器的 Master 路由器可以各不相同,如下图中所示。

image.png

在上图中,有三个虚拟路由器存在:

  • 虚拟路由器 1:Device A 作为 Master 路由器,Device B 和 Device C 作为 Backup 路由器。
  • 虚拟路由器 2:Device B 作为 Master 路由器,Device A 和 Device C 作为 Backup 路由器。
  • 虚拟路由器 3:Device C 作为 Master 路由器,Device A 和 Device B 作为 Backup 路由器。

为了实现业务流量在 Device A、Device B 和 Device C 之间进行负载分担,需要将局域网内的主机的默认网关分别设置为虚拟路由器 1、2 和 3。在配置优先级时,需要确保三个虚拟路由器中各路由器的 VRRP 优先级形成一定的交叉,使得一台路由器尽可能不同时充当 2 个 Master 路由器。

Master 使用 BFD/NQA 监视上行链路

VRRP 可以通过 BFD 或 NQA 等快速检测协议监视一些上行敏感链路,使得 Master 路由器快速地发现网络故障,降低自身的优先级,从而保证上行链路工作正常的 Backup 路由器能够接替它的工作。

image.png

如上图所示,初始情况下,Device A 作为 Master 路由器,承担转发任务;Device B 为 Backup 路由器,处于就绪监听状态。Device A 使用 BFD 监视上行到达 Internet 的链路状态。如果 Device A 的上行链路发生故障,Device A 可以在毫秒级感知到网络变化,立即发送低优先级的 VRRP 报文给 Device B。如果此时 Device B 的优先级高于报文中的优先级,那么它将在 Skew Time 时间之后切换为新的 Master 路由器,之后由这个新的 Master 路由器为网络内的主机转发数据。

Backup 使用 BFD 监视 Master 状态

为了保证网络传输的稳定性,可以在 Backup 设备上使用 BFD 技术监视 Master 的状态,使得 Master 设备发生故障时,Backup 设备能够立即切换为新的 Master 设备。

image.png

如上图中所示,初始情况下,Device A 作为 Master 路由器,承担转发任务;Device B 是 Backup 路由器,处于就绪监听状态。Device B 使用 BFD 监视 Device A 上 IP 地址 10.1.1.1 的可达性。如果 Device A 发生故障,Device B 可以立即通过 BFD 感知到对端的变化,主动切换成为新的 Master 设备,之后这个新 Master 路由器将为网络内的主机转发数据。

转自《H3C VRRP 技术白皮书》。

Copyright: 采用 知识共享署名4.0 国际许可协议进行许可

Links: https://www.zze.xyz/archives/vrrp-doc.html

Buy me a cup of coffee ☕.