4-2-vrrp协议详解
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通告报文时间间隔定时器VRRP备份组中的Master路由器会定时发送VRRP通告报文 , 通知备份组内的路由器自己工作正常用户可以通过设置
VRRP定时器来调整Master路由器发送VRRP通告报文的 时间间隔如果
Backup路由器在等待了3个间隔时间后 , 依然没有收到VRRP通告报文 , 则认为自己是Master路由器 , 并对外发送VRRP通告报文,重新进行Master路由器的选举
VRRP抢占延迟时间定时器为了避免备份组内的成员频繁进行主备状态转换 , 让
Backup路由器有足够的时间搜集必要的信息(如路由信息) ,Backup路由器接收到优先级低于本地优先级的通告报文后, 不会立即抢占成为Master而是等待一定时间——抢占延迟时间后 ,才会对外发送
VRRP通告报文取代原来的Master路由器
3. VRRP工作流程
路由器使能
VRRP功能后 , 会根据优先级确定自己在备份组中的角色。优先级高的路由器成为Master路由器 , 优先级低的成为Backup路由器。虚拟路由器中的路由器根据优先级选举出Master。Master路由器通过发送免费ARP报文 , 将自己的虚拟MAC地址通知给与它连接的设备或者主机 , 从而承担报文转发任务。(Master设备会每隔10s发送一次免费ARP报文)Master路由器周期性发送VRRP通过报文 , 以公布其配置信息和工作状况, 通知备份组内的其他设备自己工作正常。Backup路由器则启动定时器等待通告报文的到来。如果
Master路由器出现故障 , 虚拟路由器中的Backup路由器将根据优先级重新选举新的Master, 保证Master路由器和Backup路由器能够协调工作。虚拟路由器状态切换时 ,
Master路由器由一台设备切换为另外一台设备 , 新的Master路由器将会发送免费ARP报文 , 这样就可以更新与它连接的主机或设备中的ARP相关信息。网络中的主机感知不到Master路由器已经切换为另外一台设备。在抢占方式下 , 当
Backup路由器收到VRRP通告报文后 , 会将自己的优先级与通告报文中的优先级进行比较。如果大于通告报文中的优先级, 则成为Master路由器 ; 否则将保持Backup状态。在非抢占方式下 , 只要
Master路由器没有出现故障 , 备份组中的路由器始终保持Master或Backup状态 ,Backup路由器即使随后被配置了更高的优先级也不会成为Master路由器。
如果
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报文

vrrp v3报文

报文示例:
vrrp v2包


vrrp v3包

二层报文
VRRP报文的二层头部只包含了Source MAC address 和Destination MAC address
VRRP报文中源MAC地址格式必须为00-00-5E-00-01-XX
其中XX为虚拟路由器的编号(Virtual Router Identifier,简写为VRID)

三层报文
目的IP地址是组播240.0.0.18
TTL则必须设定为255 , 否则会被丢弃
IP的更一层是VRRP , 故Protocol字段数值是112(0x70)

四层报文

在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通告报文。
Master路由器周期性以组播形式地发送VRRP报文 , 默认时间为1s。VRRP报文封装于IP层 ;协议号
112目的IP为
224.0.0.18源
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路由器

Initialize 初始状态
Initialize状态代表VRRP不可用 , 处于Initialize状态的设备无法处理VRRP通告报文。当
VRRP进程启动时或者设备处于主备状态并检测到故障时 , 进入初始化状态。
Master 活动状态
路由器获取到虚拟地址。
承担流量转发。
Backup 备份状态
路由器正在启动或准备好获取虚拟地址,以防主设备出现故障。
不会承担流量转发。
6. 选举机制

VRRP使用选举机制来确定路由器的状态 , 运行VRRP的一组路由器对外构成了一个虚拟路由器 , 其中一台路由器处于Master状态 , 其他处于Backup状态。所以主路由器又叫做Master路由器 , 备份路由器又叫做Backup路由器。
优先级选举 :
VRRP组中IP拥有者。如果虚拟IP地址与VRRP组中的某台VRRP路由器IP地址相同 , 则此路由器为IP地址拥有者 , 这台路由器将被定位主路由器。比较优先级。如果没有
IP地址拥有者 , 则比较路由器的优先级 , 优先级的范围是0~255, 大的作为主路由器比较
IP地址。在没有Ip地址拥有者和优先级相同的情况下 ,IP地址大的作为主路由器。
主要就是要注意下根据优先级选择主路由器 : 优先级高的路由器被选择为主路由器。
如果两台路由器的优先级相同 , 则比较接口IP地址 , 具有较大接口IP地址的路由器将被选为主路由器。
其他路由器作为备份路由器 , 随时监控Master路由器的状态。
如果组内的备份路由器在Master_Down_Interval时间内没有收到Master路由器的报文 , 则切换到主路由器,在有多个备份路由器的VRRP组中 , 可能会在短时间内产生多个Master路由器 , 然后将接收到的VRRP报文中的优先级与本地优先级进行比较 , 选择优先级最高的路由器作为Master路由器。
参考链接
图解网络:什么是虚拟路由器冗余协议 VRRP? (qq.com)
虚拟路由冗余协议VRRP原理及配置,网工必看! (qq.com)
虚拟路由器冗余协议【原理篇】VRRP详解我一直都在-赵玉强的技术博客51CTO博客