一、 产生背景
图 1
通常,同一网段内的所有主机上都存在一个相同的默认网关,如图 1所示,处于同一网段的主机A B C的默认网关路由器为Gateway,主机发往其它网段的报文将通过默认网关进行转发,从而实现主机与外部网络的通信。当默认网关发生故障时,本网段内所有主机将无法与外部网络通信。如下图 2,若Gateway发生故障,主机A、B、C通往外界的报文都不可达了。
图 2
解决这种问题的一个常见办法就是增加虚拟网关的数量,从而提高链路可靠性,而如果有多台网关,主机选择哪个网关路由器作为出口就成为需要解决的问题, VRRP协议就是为了解决这种情况而生。vrrp全称为Virtual Router Redundancy Protocol,即虚拟路由冗余协议,实现了对网关路由器的冗余备份。
二、 基本概念
- VRRP路由器(VRRP Router):运行VRRP协议一个或多个实例的路由器。
- 虚拟路由器(Virtual Router):指形成冗余备份的一组路由器,其在主机端看来相当于一台路由器,所以将这一组路由器看做一个虚拟路由器。
- Master(Virtual Router Master):备份组中承担流量转发的路由器。
- Backup(Virtual Router Backup):备份组中对Master路由器形成冗余备份的一台或多台路由器。
- VRID(Virtual Router ID):虚拟路由器标识,标识属于哪个备份组。
- 虚地址(Virtual Address):虚拟路由器的ip地址,一个虚拟路由器可以拥有一个或多个虚ip地址。
- 虚MAC(Virtual MAC):虚拟路由器的mac地址。
- 地址拥有者(Address Owner):备份组中某路由器的接口ip地址与虚地址相同,则这个路由器为地址拥有者。一个备份组中只能有一个地址拥有者。
- 优先级(priority):用以从备份组中选举出Master路由器。
- 抢占(preempt):VRRP工作模式之一,Master路由器可以被具有更高优先级的路由器所替代。
三、 应用场景
图 3
如图 3所示,将可以承担网关功能的上方两台路由器加入到备份组1中,实现对网关路由器的冗余备份,在底下的四台主机看来,他们的上游只有一台ip为10.1.1.1,mac地址为0000-5e00-0101的虚拟网关路由器,这个虚拟的网关路由器有其虚ip和虚mac地址,虚拟地址和虚拟mac就是10.1.1.1和0000-5e00-0101。备份组中的backup和master路由器都下发虚ip地址,但只有master的虚拟ip地址是激活的;只有master路由器才会将虚mac地址下内核,当收到arp请求时master进行应答,引导流量通过。
上面的两个VRRP路由器属于同一个备份组,备份组号为1,运行于抢占模式,Master的优先级比Backup的优先级高,承担流量转发任务。当备份组中的master路由器故障,backup能及时感知并从中选举新的master路由器进行流量转发,从而保证业务不中断。
Vrrp协议的常用组网方式为主备备份和负载分担两种。
四、 VRRP功能
- IP地址的备份
由于网络中的主机是以Virtual router 的IP地址作为网关,当master down掉的时候,backup接替master的工作,网络中的主机不需要改变网关,仍然以Virtual router的IP作为网关。
这是VRRP最首要和重要的功能,该功能将网络路由黑洞的持续时间最小化,并能够实现负载分担功能。 - 首选路径指定
支持通过人工指定参数达到控制master的竞选结果,从而达到使用指定链路的目的。VRRP用简单易行的方法从冗余路由器中选取主路由器,这种方法就是设定优先级和抢占方式。根据优先级来确定参与备份组的每台路由器的地位,用户可以通过设定优先级和抢占方式来指定某一路由器成为Master或Backup,达到控制虚拟路由器的行为的目的。 - 最小化服务中断时间
当进行master选举的时候,网络服务是中断的。因此当master竞选成功且工作正常的时候,应当避免backup引起的任何状态改变,当然前提条件是master工作正常。当主路由器选好后,除了主路由器定时发送的VRRP组播报文,Master和备份路由器之间没有多余的通信。任何优先级低或相等的备份路由器不能发起状态转换,这样主路由器可以持续稳定地工作。 - 有效的工作于扩展LAN(Efficient Operation over Extended LANs )
确保手段为:
A.使用Virtual router的MAC地址作为master发送数据包的源MAC,从而保证在master变更的时候,网络内主机不需要发送arp广播来学习新master的MAC;
B.变为master之后立即发送免费ARP;
C.Master发送周期信息维护站点学习缓冲区(VRRP周期报文)。
五、 状态机
Vrrp的状态机一共有四种状态,分别为inactive、init、backup、master,inactive为初始状态,当VR数据结构刚被创建出来,被初始化的状态就是inactive状态;若配置了首个虚ip,状态机的状态将由inactive迁移至init状态,此时vrrp具备了运行的基本条件,反之,若删除了最后一个虚ip,备份组的状态将重新变为inactive;init状态向更高状态迁移的条件是具备发包条件,需要接口up(网络层up—存在接口ip地址),同时备份组处于使能状态,若任一条件不满足,状态机的状态都将由高状态变为init状态;从init状态直接迁移(若配置了延迟恢复,将等待一段时间后再迁移)至backup状态还是masterz状态取决于路由器是否为ip地址拥有者,若为ip地址拥有者,直接迁移至master状态,否则变为backup状态;变为backup状态后将等待固定的时间,若这段时间没收到比自己优先级更高的包(优先级相同的特殊情况参照主备选举小节),将会迁移至master状态;而当master状态收到比自己更高优先级的报文,且为抢占模式,则会迁移至backup状态。特别的,若发生接口拔出(接口去激活)事件,VR的状态将直接变为Inactive状态,反之,当接口插入时(接口激活),VR状态将由inactive变为init(存在虚ip配置时);
六、 VRRP定时器
vrrp共有报文通告定时器、延迟抢占定时器、延迟恢复定时器、免费arp定时器等四种定时器。
报文定通告时器用于master路由器定时发包,默认周期为1s;成为master时创建。
延迟抢占定时器用于backup路由器切换到master路由器的等待时间。
延迟恢复定时器决定备份组从Initialize状态切换到Master(或Backup)状态的延迟时间,默认时间为0秒(不配置)。只有init状态接口up事件才会创建延迟恢复定时器。
免费arp定时器用于发送免费arp报文,功能默认不开启,若开启,默认时间为120s。master根据配置情况决定是否创建免费arp定时器。
七、 主备选举
路由器刚加入备份组时处于backup状态,若在3×发送间隔+Skew_Time内收到大于自己优先级的vrrp通告报文,则保持backup状态。若在这段时间内没收到报文,则直接抢占成为master路由器;若收到了报文,但优先级都比自己小(非0),则会等待抢占延迟时间+Skew_Time,再发送通告报文成为master,抢占延迟时间默认值为0(未配置)。特别的,若收到0优先级报文,且本地优先级不为0,则快速抢占—经过Skew_Time即抢占成为master。
由于网络故障原因造成备份组中存在多台Master路由器时,这些Master路由器会根据优先级和IP地址选举出一个Master路由器:优先级高的路由器成为Master路由器;优先级低的成为Backup路由器;如果优先级相同,则IP地址大的成为Master路由器。
八、 报文特征
- IPv4 VRRP Advertisement报文头特征
目的MAC为组播MAC:01:00:5E:00:00:12
源MAC为虚MAC: 00:00:5E:00:01:{VRID}
IPv4,TTL为255,协议号为112
目的IP地址:224.0.0.18,源IP地址为接口IP地址 - IPv6 VRRP Advertisement报文头特征
目的MAC为:33:33:00:00:00:12
源MAC为虚MAC: 00:00:5E:00:02:{VRID}
IPv6,HopLimit为255, NextHeader为112
目的IP地址:ff02::12,源IP地址为接口LinkLocal地址
九、 配置限制
Ip拥有者优先级是始终为255,track对其不生效。
在聚合组的成员端口上配置VRRP不生效。
每台路由器都需要配置一致的功能,才能形成一个VRRP备份组。
IPv4 VRRP备份组中的所有路由器上配置的IPv4 VRRP版本必须一致,否则备份组无法正常工作。
建议将备份组的虚拟IP地址和备份组中设备下行接口的IP地址配置为同一网段,否则可能导致局域网内的主机无法访问外部网络
同一备份组内配置相同虚ip直接返回成功,不进行处理。若早其他备份组内已存在,则返回配置冲突错误。
备份组的虚拟IP地址。不能为全零地址(0.0.0.0)、广播地址(255.255.255.255)、环回地址、非A/B/C类地址和其它非法IP地址(如0.0.0.1)。
十、 问题分析
Vrrp双主问题分析。首先查看vrrp配置,避免由于配置有误出现的双主,比如两个路由器配置了不同的vrrp版本号,配置了不同的工作模式,认证失败,指定了源接口等。排除这种情况后,一般来说,若这两个路由器的ip地址不冲突,依据vrrp的选举机制,若能够收到报文,不会出现双主的现象。一般vrrp备份组下行设备为交换机,然后再连接主机。考虑接收报文异常导致双主。物理层,查看接口是否接错,链路层先查看交换机的链路状态是否是通的,检查vlan等配置,看是否是配置问题导致报文不能互通,从而解决双主问题。