VRRP(Virtual Router Redundancy Protocol,虚拟路由器冗余协议)将可以承担网关功能的一组路由器加入到备份组中,形成一台虚拟路由器,由VRRP的选举机制决定哪台路由器承担转发任务,局域网内的主机只需将虚拟路由器配置为缺省网关。 VRRP是一种容错协议,在提高可靠性的同时,简化了主机的配置。在具有多播或广播能力的局域网(如以太网)中,借助VRRP能在某台路由器出现故障时仍然提供高可靠的缺省链路,有效避免单一链路发生故障后网络中断的问题,而无需修改动态路由协议、路由发现协议等配置信息。 VRRP协议的实现有VRRPv2(ipv4)和VRRPv3(ipv6)两个版本,两者在功能实现上并没有区别,只是应用的网络环境不同。
VRRP根据优先级来确定备份组中每台路由器的角色(Master路由器或Backup路由器)。优先级越高,则越有可能成为Master路由器。 1、Master路由器:正常情况下由Master路由器负责ARP响应及提供数据包的转发,并且默认每隔1s向其他路由器通告Master路由器当前状态信息。 2、Backup路由器:是Master路由器的备用路由器,正常情况下不提供数据包的转发,当master路由器故障时,在所有的Backup路由器中优先级最高的路由器将成为新的master路由器,接替转发数据包的工作,从而保证业务不中断。
备份组中的路由器具有以下两种工作方式: • 非抢占方式:如果备份组中的路由器工作在非抢占方式下,则只要Master路由器没有出现故障,Backup路由器即使随后被配置了更高的优先级也不会成为Master路由器。 • 抢占方式:如果备份组中的路由器工作在抢占方式下,它一旦发现自己的优先级比当前的Master路由器的优先级高,就会对外发送VRRP通告报文。导致备份组内路由器重新选举Master路由器,并最终取代原有的Master路由器。相应地,原来的Master路由器将会变成Backup路由器。
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协议报文后,必须丢弃。
字段 | 长度 | 描述 |
---|---|---|
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位无符号整型。如果报文携带未知的认证类型或者该认证类型和本地配置的认证方法不匹配,那么该报文必须被丢弃。 |
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的工作过程如下: (1) 路由器使能VRRP功能后,会根据优先级确定自己在备份组中的角色。优先级高的路由器成为Master路由器,优先级低的成为Backup路由器。Master路由器定期发送VRRP通告报文,通知备份组内的其他路由器自己工作正常;Backup路由器则启动定时器等待通告报文的到来。 (2) 在抢占方式下,当Backup路由器收到VRRP通告报文后,会将自己的优先级与通告报文中的优先级进行比较。如果大于通告报文中的优先级,则成为Master路由器;否则将保持Backup状态。 (3) 在非抢占方式下,只要Master路由器没有出现故障,备份组中的路由器始终保持Master或Backup状态,Backup路由器即使随后被配置了更高的优先级也不会成为Master路由器。 (4) 如果Backup路由器的定时器超时后仍未收到Master路由器发送来的VRRP通告报文,则认为Master路由器已经无法正常工作,此时Backup路由器会认为自己是Master路由器,并对外发送VRRP通告报文。备份组内的路由器根据优先级选举出Master路由器,承担报文的转发功能。
本文验证vrrp功能只配置了用户侧配置,使用pc侧ping vrrp的虚IP地址来验证功能。组网如下所示:
vpp1配置--设置成maste服务器,并设置成抢占模式
set interface state GigabitEthernet2/4/0 up
set interface ip address GigabitEthernet2/4/0 192.168.90.100/24
#接口添加vrrp配置,设置优先级200,vip:192.168.90.50
vrrp vr add GigabitEthernet2/4/0 vr_id 1 priority 200 accept_mode 192.168.90.50
#启动vrrp协议
vrrp proto start GigabitEthernet2/4/0 vr_id 1
vpp2配置
set interface state GigabitEthernet2/4/0 up
set interface ip address GigabitEthernet2/4/0 192.168.90.101/24
vrrp vr add GigabitEthernet2/4/0 vr_id 1 priority 100 no_preempt accept_mode 192.168.90.50
vrrp proto start GigabitEthernet2/4/0 vr_id 1
Pc 配置 设置接口ip地址及网关指定vrrp虚ip地址:
ifconfig ens160 192.168.90.20/24
route add default gw 192.168.90.50
1、查询vpp1 vrrp配置显示未master,切物理口已配置vip。
DBGvpp# show interface address GigabitEthernet2/4/0
GigabitEthernet2/4/0 (up):
L3 192.168.90.100/24
L3 192.168.90.50/24
DBGvpp# show vrrp vr GigabitEthernet2/4/0
[0] sw_if_index 3 VR ID 1 IPv4
state Master flags: preempt yes accept yes unicast no
priority: configured 200 adjusted 200
timers: adv interval 100 master adv 100 skew 21 master down 321
virtual MAC 00:00:5e:00:01:01
addresses 192.168.90.50
peer addresses
tracked interfaces
2、将vpp1物理口down掉,vpp2接口查询升为主,物理口已配置vip,可以正常ping通vip。 3、将vpp1物理口up,vpp1又恢复为主,物理口已配置vip;设置成非抢占模式,vpp1不会升为主。 这里有一个问题就是发现pc无法ping通192.168.90.50,原因是vpp的接口未开启混杂模式,导致报文丢弃,貌似vpp没有什么手段来查询到丢弃原因(有知道的小伙伴可以留言告知一下)。开启混杂模式后功能正常。
本文分享自 DPDK VPP源码分析 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!