VRRP
VRRP(Virtual Router Redundancy Protocol,虚拟路由器冗余协议)既能够实现网关的备份,又能解决多个网关之间互相冲突的问题,从而提高网络可靠性。
单网关面临的问题
当网关Router出现故障时,本网段内以该设备为网关的主机都不能与Internet进行通信
VRRP概述
通过把几台路由设备联合组成一台虚拟的"路由设备",使用一定的机制保证当主机的下一跳路由设备出现故障时,及时将业务切换到备份路由设备,从而保持通讯的连续性和可靠性
如图中:
- 局域网中有两个路由器R1和R2,R1端口IP:192.168.1.251/24,R2端口IP:192.168.1.252/24
- 配置R1和R2关联到同一虚拟路由器,该虚拟路由器使用192.168.1.254作为端口IP地址
- 所有PC使用192.168.1.254作为默认网关
VRRP基本概念
VRRP路由器:运行VRRP协议的路由器,VRRP是配置在路由器的接口上的,而且也是基于接口来工作的
VRID:一个VRRP组(VRRP Group)由多台协同工作的路由器(的接口)组成,使用相同的VRID(Virtual Router Identifier,虚拟路由器标识符)进行标识。属于同一个VRRP组的路由器之间交互VRRP协议报文并产生一台虚拟"路由器"。一个VRRP组中只能出现一台Master路由器。
虚拟路由器:VRRP为每一个组抽象出一台虚拟"路由器(Virtual Router)",该路由器并非真实存在的物理设备,而是由VRRP虚拟出来的逻辑设备。一个VRRP组只会产生一台虚拟路由器
虚拟IP地址:虚拟路由器拥有自己的IP地址以及MAC地址,其中IP地址由网络管理员在配置VRRP时指定,一台虚拟路由器可以有一个或多个IP地址,通常情况下用户使用该地址作为网关地址。
虚拟MAC地址:虚拟MAC地址的格式是:0000-5e00-01xx,其中xx为VRID
Master路由器:Master路由器在一个VRRP组中承担报文转发任务。在每一个VRRP组中,只有Master路由器才会响应针对虚拟IP地址的ARP Request。Master路由器会以一定的事件间隔周期性地发送VRRP报文,以便通知同一个VRRP组中的Backup路由器关于自己的存活情况
Backup路由器:也被称为备份路由器。Backup路由器将会实时侦听Master路由器发送出来的VRRP报文,它随时准备接替Master路由器的工作
Priority:优先级值是选举Master路由器和Backup路由器的依据,优先级取值范围0-255,值越大越优先,值相等则比较接口IP地址的大小,大者优先。
VRRP报文格式
VRRP只有一种报文,即Advertisement报文,基于组播方式发送,因此只能在同一个广播域传递。Advertisement报文的目的组播地址为224.0.0.18
VRRP报文字段含义:
- Ver:VRRP目前有两个版本,其中VRRPv2仅适用于IPv4网络,VRRPv3适用于IPv4和IPv6两种网络
- Virtual Rtr ID:该报文所关联的虚拟路由器的标识
- Priority:发送该报文的VRRP路由器的优先级
- Count IP Addrs:该VRRP报文中所包含的虚拟IP地址的数量
- Auth Type:VRRP支持三种认证类型:不认证、纯文本密码认证、MD5方式认证,对应值分别为0、1、2
- Adver Int:发送VRRP通告消息的间隔,默认为1秒
- IP Address:所关联的虚拟路由器的虚拟IP地址,可以为多个
- Authentication Data:验证所需要的密码信息
VRRP定时器
在VRRP协议工作过程中,VRRP定义了两个定时器
- ADVER_INTERVAL定时器:Master发送VRRP通告报文时间周期,缺省值:1秒
- MASTER_DOWN定时器:Backup设备监听该定时器超时后,会变为Master状态
MASTER_DOWN定时器计算公式:
MASTER_DOWN = (3 * ADVER_INTERVAL) + Skew_time(偏移时间),其中Skew_time = (256 - Priority)/256
VRRP技术原理
VRRP状态机
VRRP协议状态机有三种状态:Initialize(初始状态)、Master(活动状态)、Backup(备份状态)
一个Startup事件可以由系统在VRRP配置完成后自动触发,也可以是在已经配置VRRP的端口上,底层链路由不可用变为可用而触发
VRRP协议状态
Master状态
- 定期(ADVER_INTERVAL)发送VRRP报文
- 以虚拟MAC地址响应对虚拟IP地址的ARP请求
- 转发目的MAC地址为虚拟MAC地址的IP报文
- 默认允许ping通虚拟IP地址
- 当多台设备同时为Master时,若设备收到与自己优先级相同的报文时,会进一步比较IP地址的大小。如果收到报文的源IP地址比自己大,则切换到Backup状态,否则保持Master状态
Backup状态
- 接收Master设备发送的VRRP报文,判断Master设备的状态是否正常
- 对虚拟IP地址的ARP请求,不做响应
- 丢弃目的MAC地址为虚拟MAC地址的IP报文
- 丢弃目的IP地址为虚拟IP地址的IP报文
- 如果收到优先级和自己相同或者比自己优先级大的报文时,重置MASTER_DOWN定时器,不进一步比较IP地址的大小
VRRP主备选举
VRRP优先级不相等时主备选举过程:
- R1的接口VRRP优先级为200,R2的接口VRRP优先级为100,两台设备完成初始化后首先切换至Backup状态
- R1与R2根据各自MASTER_DOWN定时器超时时间由Backup切换到Master状态,所以R1比R2更快切换至Master状态
- R1和R2通过相互发送VRRP报文进行Master选举,优先级高的被选举为Master设备,因此R1被选为Master路由器
- R1被选举为Master路由器后,立即发送免费ARP报文将虚拟MAC地址通告给与它连接的设备和主机
VRRP优先级相等时主备选举过程:
- R1和R2接口的VRRP优先级都为200,两台设备完成初始化后首先切换至Backup状态
- 由于优先级相同,R1与R2的MASTER_DOWN定时器超时后,同时由Backup状态切换至Master状态
- R1与R2交换VRRP报文,优先级一样,通过比较接口IP地址选举Master路由器,由于R2的接口IP地址大于R1的接口IP地址,因此R2被选举为Master路由器
- R2被选举为Master路由器后,立即发送免费ARP报文将虚拟MAC地址通告给与它连接的设备和主机
配置为IP地址拥有者时主备选举过程:
- R1和R2的接口VRRP优先级都采用默认配置(默认为100),但是R1的接口IP地址与Virtual IP地址相同
- R1的接口直接切换至Master状态,R1成为Master路由器
无法手动将VRRP接口优先级配置为255,当接口IP地址为IP地址拥有者时,优先级自动称为255
VRRP主备切换
- 当Master设备主动放弃Master地位时,会发送优先级为0的通告报文,用来使Backup设备快速切换成Master设备,而不用等到MASTER_DOWN定时器超时。这个切换时间称为Skew_time
- 当Master设备发生网络故障而不能发送通告报文的时候,Backup设备并不能立即知道其工作状况。等到MASTER_DOWN定时器超时后,才会认为Master设备无法正常工作,从而将状态切换为Master
VRRP主备回切
正常情况下,由Master设备负责转发用户报文,如图所示,所有用户流量通过R1到达Internet
当R1出现故障时,网络会重新进行VRRP主备选举,如图所示,此时R2会称为新的Master设备负责转发用户报文
当R1从故障恢复后,网络将重新进行VRRP主备选举,由于R1的优先级大于R2,所以R1又重新称为新的Master设备负责转发用户报文
VRRP抢占模式
- 抢占模式(默认激活):如果Backup路由器激活了抢占功能,那么当它发现Master路由器的优先级比自己更低时,他将立即切换至Master状态,成为新的Master路由器
当主备进行切换时,总共时长:3 * ADVER_INTERVAL + Skew_time + Delay_time
- 非抢占模式:如果Backup路由器没有激活抢占功能,那么即使它发现Master路由器的优先级比自己更低,也只能依然保持Backup状态,直到Master路由器失效
VRRP典型应用
VRRP负载分担
通过创建多个虚拟路由器,每个物理路由器在不同的VRRP组中扮演不同的角色,不同虚拟路由器的Virtual IP作为不同的内网网关地址可以实现流量转发负载分担
VRRP监视上行端口
如果用户未配置VRRP监视上行端口,则当VRRP备份组中的Master设备R1的上行接口或者链路出现故障时,VRRP备份组无法感知,Master无法向外转发流量。但是由于主备不会发生切换,导致出现流量黑洞
VRRP与BFD联动
通过配置VRRP与BFD联动,当Backup设备通过BFD感知故障发生之后,不再等待Master_Down_Timer计时器超时而会在BFD检测周期结束后立即切换VRRP状态,此时可以实现毫秒级的主备切换
VRRP与MSTP结合应用