前言
局域网中的用户终端通常采用配置一个默认网关的形式访问外部网络,如果此时默认网关设备发生故障,将中断所有用户终端的网络访问,这很可能会给用户带来不可预计的损失,所以可以通过部署多个网关的方式来解决单点故障问题,那么如何让多个网关能够协同工作但又不会互相冲突就成了最迫切需要解决的问题。
于是VRRP应运而生,它既可以实现网关的备份,又能解决多个网关之间互相冲突的问题。那么VRRP的工作原理是如何实现的?在网络中又该如何配置呢?
网关的缺陷
1)单网关的缺陷问题:当网关路由器出现问题,本网段内不能与外网进行通信;
2)多网关的缺陷问题:本网段出现网关IP地址冲突,主机频繁切换网络出口;
VRRP基本概念
VRRP路由器(VRRP Router):运行VRRP协议的设备,如RouterA和RouterB。
虚拟路由器(Virtual Router):又称VRRP备份组,由一个Master设备和多个Backup设备组成,被当作一个共享局域网内主机的缺省网关。如RouterA和RouterB共同组成了一个虚拟路由器。
Master路由器(Virtual Router Master):承担转发报文任务的VRRP设备,如RouterA。
Backup路由器(Virtual Router Backup):一组没有承担转发任务的VRRP设备,当Master设备出现故障时,它们将通过竞选成为新的Master设备,如RouterB。
Priority:设备在备份组中的优先级,取值范围是0~255。0表示设备停止参与VRRP备份组,用来使备份设备尽快成为Master设备,而不必等到计时器超时;255则保留给IP地址拥有者,无法手工配置;设备缺省优先级值是100。
vrid:虚拟路由器的标识,如图中RouterA和RouterB组成的虚拟路由器的vrid为1,需手工指定,范围1-255。
虚拟IP地址(Virtual IP Address):虚拟路由器的IP地址,一个虚拟路由器可以有一个或多个IP地址,由用户配置。如RouterA和RouterB组成的虚拟路由器的虚拟IP地址为10.1.1.254/24。
IP地址拥有者(IP Address Owner):如果一个VRRP设备将真实的接口IP地址配置为虚拟路由器IP地址,则该设备被称为IP地址拥有者。如果IP地址拥有者是可用的,则它将一直成为Master。
虚拟MAC地址(Virtual MAC Address):虚拟路由器根据vrid生成的MAC地址。一个虚拟路由器拥有一个虚拟MAC地址,格式为:00-00-5E-00-01-{vrid} 。当虚拟路由器回应ARP请求时,使用虚拟MAC地址,而不是接口的真实MAC地址。如RouterA和RouterB组成的虚拟路由器的vrid为1,因此这个VRRP备份组的MAC地址为00-00-5E-00-01-01。
VRRP协议状态机有三种状态:Initialize(初始状态)、Master(活动状态)、Backup(备状态)。
三种状态之间的转换条件如下:
Initialize->Master:Startup priority=255;
Initialize->Backup:Startup priority!=255;
Master->Initialize:设备关闭;
Master->Backup:收到比自己优先级更高的数据包;
Backup->Initialize:设备关闭;
Backup->Master:在超时时间内没有收到VRRP通告报文或者收到通告报文原Master优先级为0,或者收到的通告报文中的原Master优先级比自己的优先级低。
Initialize状态
① 该状态为VRRP不可用状态,在此状态时设备不会对VRRP报文做任何处理。
② 通常刚配置VRRP时或设备检测到故障时会进入Initialize状态。
③ 收到接口Up的消息后,如果设备的优先级为255,则直接成为Master设备;如果设备的优先级小于255,则会先切换至Backup状态。
Master状态
① 定时(Advertisement Interval)发送VRRP通告报文。
② 以虚拟MAC地址响应对虚拟IP地址的ARP请求。
③ 转发目的MAC地址为虚拟MAC地址的IP报文。
④ 如果它是虚拟IP地址的拥有者,则接收目的IP地址为这个虚拟IP地址的IP报文。
⑤ 如果收到比自己优先级大的报文,立即成为Backup。
⑥ 如果多个VRRP设备同时切换到Master状态,通过VRRP通告报文的交互进行协商后,优先级较低的VRRP设备将切换成Backup状态,优先级最高的VRRP设备成为最终的Master设备;优先级相同时,VRRP设备上VRRP备份组所在接口主IP地址较大的成为。Master设备
⑦ 当接收到接口的Shutdown事件时,转为Initialize状态。
Backup状态
① 接收Master发送的VRRP通告报文,判断Master的状态是否正常。
② 对虚拟IP地址的ARP请求,不做响应。
③ 如果收到比自己优先级小的报文时,默认立刻升主,如果配置了不抢占,则重置定时器。如果配置了抢占延迟,则重置定时器,待抢占延迟到期再升主。收到比自己优先级高的报文时,重置定时器。如果收到优先级和自己相同的报文,则重置定时器,不进一步比较IP地址。
④ Master_Down_Interval定时器:Backup设备在该定时器超时后仍未收到通告报文,则会转换为Master状态。计算公式如下:
Master_Down_Interval=(3 * Advertisement_Interval) + Skew_time(偏移时间)
Skew_Time=(256–Priority)/256
⑤ 如果收到比自己优先级小的报文且该报文优先级不是0,丢弃报文,立刻成为Master;如果收到报文优先级是0,定时器时间设置为Skew_time(偏移时间)。
⑥ 当接收到MASTER_DOWN_TIMER定时器超时的消息时,Backup状态才会转为Master状态。
⑦ 当接收到接口的Shutdown消息时,转为Initialize状态。
VRRP主备备份过程
选举过程:
选举规则:比较优先级大小,如果优先级高则为Master设备,如果优先级相同,并且没有Master设备将比较IP接口地址大小,接口地址大则为Master设备。
Master设备发送免费ARP报文,将虚拟的MAC地址通知与他相连的设备或主机,从而承担报文转发任务。
Master设备维持与切换:
Master设备周期发送VRRP报文,通知其他VRRP设备组中公开配置信息(优先级等)和工作状况,Backup设备接收到Master设备发送过来的数据包知道Master设备是否正常工作。
当Master设备出现故障时,Backup设备不会直接变成Master设备,需要经过Master_Down_Interval定时器超时后,Backup设备切换成Master设备,Master_Down_Interval=3×Advertisement_Interval+Skew_Time,单位为秒。
当Master设备要退出VRRP设备组时,会发送优先级为0的通过报文,Backup设备接收到后会迅速的切换成Master设备,不用经过Master_Down_Interval定时器超时,这个切换时间为SKew_time((256-Backup优先级)/256),单位秒。
抢占机制
控制具有更高优先级的备用路由器是否能够抢占具有较低优先级的Master路由器,使自己成为Master。缺省为抢占模式。
注意:存在的例外情况是如果IP地址拥有者是可用的,则它总是处于抢占的状态,并成为Master设备。
抢占延时(Delay Time):
抢占延迟时间,默认为0,即立即抢占。
图中RouterA故障恢复后,立即抢占可能会导致流量中断,因为RouterA的上行链路的路由协议可能未完成收敛,这种情况则需要配置Master设备的抢占延时。
另外,在性能不稳定的网络中,网络堵塞可能导致Backup设备在Master_Down_Interval期间没有收到Master设备的报文,Backup设备则会主动切换为Master。如果此时原Master设备的报文又到达了,新Master设备将再次切换回Backup,如此则会出现VRRP备份组成员状态频繁切换的现象。为了缓解这种现象,可以配置抢占延时,使得Backup设备在等待了Master_Down_Interval时间后,再等待抢占延迟时间。如在此期间仍没有收到通告报文,Backup设备才会切换为Master设备。
VRRP联动功能
当上行链路出现故障时,Master一样还是会给VRRP组发送通告报文,不会进行主备切换,会将去往Iternet数据包丢弃。
解决方法:利用VRRP的联动功能监视上行接口或链路故障,主动进行主备切换。
VRRP负载分担工作过程
负载分担是指多个VRRP备份组同时承担业务转发,VRRP负载分担与VRRP主备备份的基本原理和报文协商过程都是相同的。对于每一个VRRP备份组,都包含一个Master设备和若干Backup设备。
与主备备份方式的不同点在于:负载分担方式需要建立多个VRRP备份组,各备份组的Master设备分担在不同设备上;单台设备可以加入多个备份组,在不同的备份组中扮演不同的角色。
VRRP配置
vrrp vrid 1 virtual-ip 10.0.0.10 //配置vrid1中的虚拟IP地址。
vrrp vrid 1 priority 120 //配置在vrid1中的优先级为120,其他设备优先级未手动指定,缺省为100,则本设备为Master。
vrrp vrid 1 preempt-mode timer delay 20 //配置Master设备的抢占时延为20秒。
vrrp vrid 1 track interface GigabitEthernet0/0/0 reduce 30 //跟踪上行接口G0/0/0的状态,如果端口出现故障,则Master设备VRRP优先级降低30。