4-2-vrrp协议详解

熊 0 阅读 Linux集群服务

1. vrrp协议

虚拟路由冗余协议VRRP(Virtual Router Redundancy Protocol) 是一种用于提高网络可靠性的容错协议, 一个虚拟路由设备由一个Master主设备和若干个Backup备份设备组成 , 主设备实现真正的转发功能,可实现主备链路切换或负载分担。通过VRRP , 可以在主机的下一跳设备出现故障时 , 及时将业务切换到备份设备 , 从而保障网络通信的连续性和可靠性。

  • 英文全称 : Virtual Router Redundancy Protocol

  • 中文名称 : 虚拟路由器冗余协议

  • 协议 : IETF – RFC 3768

  • 组播地址 : 224.0.0.18

  • 网络层协议

  • 协议号: 112

协议号在OSI模型的网络层。用来表示网络层或网络层以上使用的协议。例如协议号为6 表示传输层使用的是TCP协议。可以说 , 只有在协议号为6(TCP) 或17(UDP) 的时候 , 端口号才会存在。

VRRP具有如下优点 :

  • 简化管理 : 在具有多播或广播能力的局域网中 , 借助VRRP能在某台设备出现故障时仍然提供高可靠的缺省链路 , 有效避免单一链路发生故障后网络中断的问题 , 无需修改主机的默认网关配置。

  • 适应性强 : VRRP报文封装在IP报文中 , 支持各种上层协议。

  • 网络开销小 : VRRP只定义了一种报文------VRRP 通告报文 , 并且只有处于Master状态的路由器可以发送VRRP报文。

  • 故障转移发生得很快(通常在几秒钟内)。

  • VRRP用于主动-被动(主-备份)配置 ,也可以配置为具有负载平衡的Active-Active配置。

  • VRRP是IETF开放标准协议 。因此多个供应商/多种类型的设备可以成为VRRP组的一部分。

VRRPv2与VRRPv3的主要区别是

  • 支持的网络类型不同:VRRPv2 只支持IPv4 , VRRPv3支持IPv4和IPv6。

  • 认证功能不同:VRRPv2支持认证但VRRPv3不支持认证。

  • 通告间隔时间单位不同 :VRRPv2中单位为秒 , VRRPv3中单位是厘秒( 1 秒 =100厘秒)。

2. vrrp术语

  • 虚拟路由器 : 由一个Master路由器和多个Backup路由器组成。

  • VRID:虚拟路由器的标识 , 对同一广播域内不同的虚拟路由器进行区分 , 取值范围为1-255 ,有相同VRID的一组路由器构成一个虚拟路由器不同van-if接口下可以配相同的VRID。

  • Master 路由器 : 虚拟路由器中承担报文转发任务的路由器。

  • Backup路由器 : Master路由器出现故障时 , 能够代替Master路由器工作的路由器。

  • 虚拟IP地址 : 虚拟路由器的IP地址

  • 虚拟MAC地址 : 一个虚拟路由器拥有一个虚拟MAC地址。虚拟MAC地址的格式为00-00-5E-00-01-VRID。

  • 优先级 : 用来确定虚拟路由器中每台路由器的地位。长8个bit位 , 默认为100 , 取值范围为0-255 , 可配范围为1-254。

  • 非抢占方式 : 如果Backup路由器工作在非抢占方式下 , 则只要Master路由器没有出现故障 , Backup 路由器即使随后被配置了更高的优先级也不会成为Master 路由器。

  • 抢占方式 : 如果Backup路由器工作在抢占方式下 , 当它收到VRRP报文后 , 会将自己的优先级与通告报文中的优先级进行比较。如果自己的优先级比当前的Master路由器的优先级高 , 就会主动抢占成为Master路由器 ; 否则 , 将保持Backup状态。

  • 监视接口 : 监视接口down后减去一定的优先级 ; 监视接口UP , 增加上减去的优先级。

  • 定时器

    • VRRP通告报文时间间隔定时器

      1. VRRP备份组中的Master路由器会定时发送VRRP通告报文 , 通知备份组内的路由器自己工作正常

      2. 用户可以通过设置VRRP定时器来调整Master路由器发送VRRP通告报文的 时间间隔

      3. 如果Backup路由器在等待了3个间隔时间后 , 依然没有收到VRRP通告报文 , 则认为自己是Master路由器 , 并对外发送VRRP通告报文,重新进行Master路由器的选举

    • VRRP抢占延迟时间定时器

      1. 为了避免备份组内的成员频繁进行主备状态转换 , 让Backup路由器有足够的时间搜集必要的信息(如路由信息) , Backup路由器接收到优先级低于本地优先级的通告报文后, 不会立即抢占成为Master

      2. 而是等待一定时间——抢占延迟时间后 ,才会对外发送VRRP通告报文取代原来的Master路由器

3. VRRP工作流程

  1. 路由器使能VRRP功能后 , 会根据优先级确定自己在备份组中的角色。优先级高的路由器成为Master路由器 , 优先级低的成为Backup 路由器。虚拟路由器中的路由器根据优先级选举出Master。Master路由器通过发送免费ARP报文 , 将自己的虚拟MAC地址通知给与它连接的设备或者主机 , 从而承担报文转发任务。(Master设备会每隔10s发送一次免费ARP报文)

  2. Master路由器周期性发送VRRP通过报文 , 以公布其配置信息和工作状况, 通知备份组内的其他设备自己工作正常。Backup路由器则启动定时器等待通告报文的到来。

    如果Master路由器出现故障 , 虚拟路由器中的Backup路由器将根据优先级重新选举新的Master , 保证Master路由器和Backup路由器能够协调工作。

  3. 虚拟路由器状态切换时 , Master路由器由一台设备切换为另外一台设备 , 新的 Master 路由器将会发送免费 ARP 报文 , 这样就可以更新与它连接的主机或设备中的ARP相关信息。网络中的主机感知不到Master路由器已经切换为另外一台设备。

    • 在抢占方式下 , 当Backup路由器收到VRRP通告报文后 , 会将自己的优先级与通告报文中的优先级进行比较。如果大于通告报文中的优先级, 则成为Master路由器 ; 否则将保持Backup状态。

    • 在非抢占方式下 , 只要Master 路由器没有出现故障 , 备份组中的路由器始终保持Master或Backup状态 , Backup路由器即使随后被配置了更高的优先级也不会成为Master路由器。

  4. 如果Backup路由器的定时器超时后仍未收到Master路由器发送来的VRRP通告报文 , 则认为Master路由器已经无法正常工作 , 此时Backup路由器会认为自己是Master路由器 , 并对外发送VRRP通告报文。备份组内的路由器根据优先级选举出Master路由器 , 承担报文的转发功能

4. VRRP报文

VRRP通告报文使用Ip组播数据包进行封装 , 组播地址为224.0.0.18 , IANA给其分配的协议号为112。

VRRP通告报文的TTL值必须是255 , 如果VRRP路由器接受到TTL值不为255的VRRP通告报文 ,必须丢弃。

VRRP组中的主路由器会定期发送通告报文 , 备份路由器接受 , 他们通过这种方式来交流选举

vrrp v2报文

20180522132453744

vrrp v3报文

20180522132459144

字段

长度

描述

Version

4比特

指VRRP协议版本 , 本文档定义版本号2。

Type

4比特

定义了VRRP报文的类型。本版本的协议仅定义了一个报文类型: ADVERTISEMENT 该字段的值恒为1 带有未知类型的报文必须被丢弃。

Virtual Rtr ID

8比特

虚拟路由器标识(VRID)字段标识了此报文所报告状态的虚拟路由器。可配置的范围是1--255。没有缺省值。

Priority

8比特

Priority字段申明了发送此报文的VRRP路由器的优先级。值越高优先级越高。该字段为8位无符号整型。 如果VRRP路由器是虚拟路由器地址的IP地址所有者 , 那么其优先级必须为255。起备用作用的VRRP路由器的优先级必须在1--254之间。缺省的VRRP路由器优先级为100。 优先级值0用于指示当前虚拟路由器的主路由器停止参与VRRP组。主要用于触发备用路由器快速地迁移到主路由器 ,而不用等待当前主路由器超时。

Count IP Addrs

8比特

在此VRRP通告中包含的IP地址的数量。

Auth Type

8比特

认证类型字段用于标识要用到的认证方法。在一个虚拟路由器组内认证类型是唯一的。认证类型字段是一个8位无符号整型。如果报文携带未知的认证类型或者该认证类型和本地配置的认证方法不匹配 , 那么该报文必须被丢弃。 目前定义的认证方法有: 0 - No Authentication不认证。该认证类型表明VRRP协议报文的交换不需要认证。在发送VRRP协议报文时 , ·Authentication Data字段将被置为0 ;而在接收协议报文时 , Authentication Data字段被忽略。 1 - Reserved 保留 2 -Reserved保留 说明: VRRP的早期版本 定义了一些认证类型[RFC2338]。这些认证类型的定义已经在本文档中被删除 , 因为根据实际经验表明 , 这些认证方法并不能提供任何真正的安全保障 , 并且仅会导致在一个VRRP组内出现多个Master的情况。

Adver Int

8比特

VRRP通告间隔时间 , 单位为秒。缺省为1秒。这个字段主要用于错误配置路由器时的故障定位和解决。

Checksum

16比特

校验和字段用于检测VRRP消息的数据是否出错。校验和是从version字段开始的整个VRRP消息的1的16位补码和。(RFC1071描述了校验和的计算细节)

IP Address

32比特

IP地址字段为虚拟路由器的一个或者多个IP地址。IP地址的数量在"Count IP Addrs"字段中说明。IP地址字段用于错误配置路由器时的故障定位和解决。

Authentication Data

32比特

认证字符串仅仅用于对RFC2338的向后兼容。在发送VRRP报文时该字段应该被置为0,而在接收VRRP报文时该字段应该被忽略。

报文示例:

vrrp v2包

vrrp_package1
VRRPv2抓包

vrrp v3包

VRRPv3抓包

二层报文

VRRP报文的二层头部只包含了Source MAC address 和Destination MAC address

VRRP报文中源MAC地址格式必须为00-00-5E-00-01-XX

其中XX为虚拟路由器的编号(Virtual Router Identifier,简写为VRID)

a76k1-eub91

三层报文

目的IP地址是组播240.0.0.18

TTL则必须设定为255 , 否则会被丢弃

IP的更一层是VRRP , 故Protocol字段数值是112(0x70)

a4cyx-3qwun

四层报文

alt2u-1ktye

在RFC3768中有详细说明各字段的意义 , 在此不作赘述。

其中要特别注意到的是Priority字段 , 这个字段定义了sending VRRP router的vrrp优先级(0-255)。

5. Master路由选举

  • 优先级 : 优先级高的成为Master路由器。

  • IP地址 : 如果优先级相同的情况下 , IP地址大的会成为Master设备。

VRRP优先级的取值范围为0到255(数值越大表明优先级越高) , 可配置的范围是1到254 , 优先级0为系统保留给路由器放弃Master位置时候使用 , 255则是系统保留给IP地址拥有者使用(即虚拟机IP和设备IP配置一致)。

5.1 Master路由器状态的通告

VRRP只使用VRRP通告报文。

  1. Master路由器周期性以组播形式地发送VRRP报文 , 默认时间为1s。

  2. VRRP报文封装于IP层 ;

  3. 协议号112

  4. 目的IP为224.0.0.18

  5. 源IP为接口主IP地址 , 源MAC地址为虚MAC地址00-00-5e-00-01-VRID。

5.2 VRRP状态通告

  • Master路由器主动放弃Master地位时 , 会发送优先级为0的VRRP报文 , 致使Backup路由器快速切换变成Master路由器。

  • Master路由器发生网络故障而不能发送VRRP报文时 , Backup路由器并不能立即知道其工作状况。Backup路由器等待3个VRRP通告间隔后 , 如果还没有接收到VRRP报文 , 那么会认为Master路由器无法正常工作 , 而把自己升级为Master路由器

vrrp_status_switch

Initialize 初始状态

  • Initialize状态代表VRRP不可用 , 处于Initialize状态的设备无法处理 VRRP 通告报文。

  • 当 VRRP 进程启动时或者设备处于主备状态并检测到故障时 , 进入初始化状态。

Master 活动状态

  • 路由器获取到虚拟地址。

  • 承担流量转发。

Backup 备份状态

  • 路由器正在启动或准备好获取虚拟地址,以防主设备出现故障。

  • 不会承担流量转发。

6. 选举机制

vrrp_vote

VRRP使用选举机制来确定路由器的状态 , 运行VRRP的一组路由器对外构成了一个虚拟路由器 , 其中一台路由器处于Master状态 , 其他处于Backup状态。所以主路由器又叫做Master路由器 , 备份路由器又叫做Backup路由器。

优先级选举 :

  1. VRRP组中IP拥有者。如果虚拟IP地址与VRRP组中的某台VRRP路由器IP地址相同 , 则此路由器为IP地址拥有者 , 这台路由器将被定位主路由器。

  2. 比较优先级。如果没有IP地址拥有者 , 则比较路由器的优先级 , 优先级的范围是0~255 , 大的作为主路由器

  3. 比较IP地址。在没有Ip地址拥有者和优先级相同的情况下 , IP地址大的作为主路由器。

主要就是要注意下根据优先级选择主路由器 : 优先级高的路由器被选择为主路由器。

如果两台路由器的优先级相同 , 则比较接口IP地址 , 具有较大接口IP地址的路由器将被选为主路由器。

其他路由器作为备份路由器 , 随时监控Master路由器的状态。

如果组内的备份路由器在Master_Down_Interval时间内没有收到Master路由器的报文 , 则切换到主路由器,在有多个备份路由器的VRRP组中 , 可能会在短时间内产生多个Master路由器 , 然后将接收到的VRRP报文中的优先级与本地优先级进行比较 , 选择优先级最高的路由器作为Master路由器。


参考链接

图解网络:什么是虚拟路由器冗余协议 VRRP? (qq.com)

虚拟路由冗余协议VRRP原理及配置,网工必看! (qq.com)

虚拟路由器冗余协议【原理篇】VRRP详解我一直都在-赵玉强的技术博客51CTO博客

VRRP报文格式 - 知乎 (zhihu.com)