VRRP工作原理和报文格式 - 备忘
工作原理:
VRRP的工作过程如下:
1、路由器开启 VRRP功能后,会根据优先级确定自己在备份组中的角色。优先级高的路由器成为主用路由器,优先级低的成为备用路由器。主用路由器定期发送 VRRP通告报文,通知备份组内的其他路由器自己工作正常;备用路由器则启动定时器等待通告报文的到来。
2、VRRP在不同的主用抢占方式下,主用角色的替换方式不同:
在抢占方式下,当主用路由器收到 VRRP通告报文后,会将自己的优先级与通告报文中的优先级进行比较。如果大于通告报文中的优先级, 则成为主用路由器; 否则将保持备用状态。
在非抢占方式下,只要主用路由器没有出现故障,备份组中的路由器始终保持主用或备用状态,备份组中的路由器即使随后被配置了更高的优先级也不会成为主用路由器。
3、如果备用路由器的定时器超时后仍未收到主用路由器发送来的 VRRP通告报文,则认为主用路由器已经无法正常工作,此时备用路由器会认为自己是主用路由器,并对外发送 VRRP通告报文。备份组内的路由器根据优先级选举出主用路由器,承担报文的转发功能。
在实际组网中一般会进行 VRRP负载分担方式的设置。负载分担方式是指多台路由器同时承担业务,避免设备闲置,因此需要建立两个或更多的备份组实现负载分担。VRRP负载分担方式具有以下特点:
每个备份组都包括一个主用路由器和若干个备用路由器。
各备份组的主用路由器可以不相同。
同一台路由器可以加入多个备份组, 在不同备份组中有不同的优先级, 使得该路由器可以在一个备份组中作为主用路由器,在其他的备份组中作为备用路由器。
VRRP在提高可靠性的同时,简化了主机的配置。在具有多播或广播能力的局域网中,借助VRRP能在某台路由器出现故障时仍然提供高可靠的缺省链路,有效避免单一链路发生故障后网络中断的问题,而无需修改动态路由协议、路由发现协议等配置信息。
一个 VRRP路由器有唯一的标识: VRID,范围为 0—255,该路由器对外表现为唯一的虚拟 MAC地址,地址的格式为 00-00-5E-00-01-[VRID],主控路由器负责对ARP请求用该MAC地址做应答,这样 ,无论如何切换,保证给终端设备的是唯一一致的 IP 和 MAC地址,减少了切换对终端设备的影响。
VRRP控制报文只有一种: VRRP通告 (advertisement) ?它使用 IP多播数据包进行封装,组地址为224.0.0.18,发布范围只限于同一局域网内,这保证了VRID在不同网络中可以重复使用。
为了减少网络带宽消耗,只有主控路由器才可以周期性的发送 VRRP通告报文,备份路由器在连续三个通告间隔内收不到 VRRP或收到优先级为0的通告后启动新的一轮 VRRP选举。
在VRRP路由器组中,按优先级选举主控路由器,VRRP协议中优先级范围是 0—255,若 VRRP路由器的IP地址和虚拟路由器的接口 IP地址相同,则该VRRP路由器被称为该IP地址的所有者;
IP地址所有者自动具有最高优先级: 255优先级0一般用在IP地址所有者主动放弃主控者角色时使用可配置的优先级范围为1—254,优先级的配置原则可以依据链路的速度和成本、路由器性能和可靠性以及其它管理策略设定,主控路由器的选举中, 高优先级的虚拟路由器获胜,因此,如果在 VRRP组中有IP地址所有者, 则它总是作为主控路由的角色出现,对于相同优先级的候选路由器,按照 IP地址大小顺序选举VRRP还提供了优先级抢占策略,如果配置了该策略,高优先级的备份路由器便会剥夺当前低优先级的主控路由器而成为新的主控路由器。
为了保证VRRP协议的安全性,提供了两种安全认证措施:明文认证和IP头认证,明文认证方式要求:在加入一个VRRP路由器组时,必须同时提供相同的 VRID 和明文密码,适合于避免在局域网内的配置错误,但不能防止通过网络监听方式获得密码,IP头认证的方式提供了更高的安全性,能够防止报文重放和修改等×××。
VRRP报文格式
报文格式
VRRP报文被封装在IP包中。使用专门的VRRP IPv4组播地址。(协议号112,组播地址 224.0.0.18)
IANA分配给VRRP的IP协议号为112(十进制)。
IANA给VRRP分配的IP组播地址为224.0.0.18。这是一个本地范围的多播地址。不论TTL的值是多少,路由器都被禁止转发以此地址为目标地址的报文。
VRRP报文的IP头中,TTL必须为255。当VRRP路由器收到TTL不等于255的VRRP协议报文后,必须丢弃。
图1 VRRP报文格式
字段 | 长度 | 描述 |
---|---|---|
Version | 4比特 | 指VRRP协议版本,本文档定义版本号2。 |
Type | 4比特 |
定义了VRRP报文的类型。本版本的协议仅定义了一个报文类型: 1:ADVERTISEMENT 带有未知类型的报文必须被丢弃。 |
Virtual Rtr ID8 | 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位无符号整型。如果报文携带未知的认证类型或者该认证类型和本地配置的认证方法不匹配,那么该报文必须被丢弃。 目前定义的认证方法有:
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报文时该字段应该被忽略。 |
报文示例
参考标准
标准 | 描述 |
---|---|
RFC 2338 | Virtual Router Redundancy Protocol |
RFC 2787 | Definitions of Managed Objects for the Virtual Router Redundancy Protocol |
RFC 3768 | Virtual Router Redundancy Protocol(version number Two 2004) |
RFC 5798 | Virtual Router Redundancy Protocol Version 3 for IPv4 and IPv6 |