徐济成,朱 昊,李静月
(安徽中澳科技职业学院信息技术与艺术传媒系,安徽 合肥 230041)
随着互联网的飞速发展,用户终端对计算机网络的鲁棒性和健壮性提出了更高的要求.对于内网用户来说,与外部网络保持不间断的通信可以保证信息获取的实时性和准确性.内网中的主机一般通过设置指向出口网关的缺省路由来实现主机与外部网络的通信.在此情况下,若该出口网关死机,那么整个上行的流量就会全部断掉,主机与外部网络的通信也中断,这就是所谓的单点故障[1].设置多个出口网关是网络管理人员用来提高网络鲁棒性[2-3]的常用方法,但内网的终端设备大多不支持动态路由协议,因此如何在多个出口网关之间进行路由选择,实现故障环境下的网络稳定通信是亟待解决的问题.
VRRP(Virtual Router Redundancy Protocol,虚拟路由冗余协议)是由IETF 因特网工程任务组推出的一种容错协议,旨在解决局域网主机访问外部网络的可靠性问题[4].它包括如下应用特性:
(1)主备备份:该方式是建立一个虚拟备份组.该备份组中包括一个Master 设备和若干Backup 设备.正常情况下由Master 设备承担全部数据转发业务,当Master 设备出现故障时,Backup 设备接替其工作.
(2)负载均衡:该方式是指多台路由器同时承担业务,单个虚拟备份组不具备负载分担功能的,需要在多台设备上建立两个或两个以上的备份组,所有备份组均匀承担Master 状态,而对于每台设备来说,它们只是承担了部分业务,从而达到负载均衡的作用[5].
(3)监视接口状态:每一个VRRP 的虚拟备份组都可以监视与该备份组绑定的接口的状态.一旦接口出现故障,VRRP 就会通过调整优先级来重新确定主备关系.
(4)安全功能:VRRP 通过在报头上设定相应的认证方式和认证字来适应安全程度不同的网络环境.
(5)快速切换:VRRP 通过双向转发检测机制来实现主备间的快速切换,切换时间在1 s 以内.
VRRP 将内部网络中的一组路由器构成一个虚拟备份组,相当于一个虚拟路由器.局域网内的主机无需知道具体某台网关设备的IP 地址,只需要知道该虚拟路由器的IP 地址,并将网络内主机的缺省网关设置为该虚拟路由备份组的IP 地址,主机就可以利用该虚拟网关与外部网络进行通信.VRRP 将该虚拟路由器动态关联到承担传输业务的物理路由器上.当该物理路由器出现故障时,会再次选择新的物理路由器来接替业务传输工作,整个过程对用户完全透明,实现了内部网络和外部网络不间断通信.VRRP 协议既消除了单点故障,又同时实现了下行设备在故障发生时的流量无障碍转发.这种协议无需下行设备与出口路由器进行交互性操作,却完全实现了网络出口的冗余备份[6].
图1 VRRP 工作原理拓扑
如图1所示,RA、RB 和RC 的真实IP 地址分别是10.110.10.5、10.110.10.6 和10.110.10.7,它们构成一个VRRP 虚拟备份组,形成一个虚拟路由器,可以给这个虚拟路由器设置IP地址10.110.10.1,主机终端通过该虚拟IP 与外部网络进行通信.在此过程中,路由器RA、RB 和RC 按如下方式进行工作:
(1)选出Master 设备.比较路由器优先级的大小,优先级高的当选为Master 设备.在优先级相同的情况下,比较接口IP 地址大小,接口地址较大者当选为Master 设备.其他路由器则作为Backup 设备,随时监听Master 设备的状态.
(2)当Master 设备正常工作时,会每隔一段时间发送一个VRRP 组播报文,以通知组内的Backup 设备,Master 设备处于正常工作状态.
(3)当VRRP 虚拟备份组内的Backup 设备一段时间内没有接收到来自Master 设备的报文,则将自己转为Master 设备.当一个虚拟备份组里有多台Backup 设备时,短时间内可能产生多个Master,此时,路由器将会把收到的VRRP 报文中的优先级与本地优先级做比较,从而选取优先级高的设备做Master.
从上述分析可以看到,当某台路由器出现故障时,内部网络的主机终端只需要将缺省网关的IP 地址设置成10.110.10.1,即可与外界继续保持通信,而无需知道具体路由器上的接口地址.
VRRP 协议仅有一种报文,该报文主要用来将Master 设备的优先级和状态通告给同一虚拟备份组中的所有VRRP 路由器[7].
VRRP 协议的报文结构如图2所示,它的协议号为112,TTL 为255,源地址为发送报文的主接口地址.VRRP 报文事先要封装到IP 报文中,再发送给目的地址224.0.0.18(该地址是分配给VRRP 的组播地址).
图2 VRRP 协议的报文结构
VRRP 协议在运行中会出现3 种状态:初始状态、活动状态和备份状态[4].其中,发往虚拟IP 地址的报文只有处于活动状态的路由器才可以转发.VRRP 状态转换如图3所示.
图3 VRRP 状态机
(1)初始状态(Init)
路由器启动时进入此状态,收到接口开启的消息,将转入活动状态或者备份状态.处于初始状态的VRRP 报文不做任何处理.
(2)活动状态(Master)
当路由器处于活动状态时,它将定期发送VRRP 报文,再通过虚拟MAC 地址响应虚拟IP地址的ARP 请求,然后转发目的MAC 地址为虚拟MAC 地址的IP 报文.若它是这个虚拟IP 地址的拥有者,则接收目的IP 地址为这个虚拟IP地址的IP 报文,否则丢弃这个IP 报文;若收到比自己优先级大的报文则转为备份状态;若收到优先级和自己相同的报文,并且发送端的主IP地址比自己的主IP 地址大,则转为备份状态.当接收到接口的关闭消息时,转为初始状态.
(3)备份状态(Backup)
当路由器处于备份状态时,它将接收Master发送的VRRP 报文,判断Master 的状态是否正常.对于虚拟IP 地址的ARP 请求,路由器不做响应,同时丢弃目的MAC 地址为虚拟MAC 地址的IP 报文和目的IP 地址为虚拟IP 地址的IP 报文.在此状态下,若收到比自己优先级小的报文时,丢弃报文,不重置定时器;若收到优先级与自己相同的报文,则重置定时器,不进一步比较IP 地址.当Backup 接收到MASTER_DOWN_TIMER定时器超时的事件时,才会转为Master;当接收到接口的Shutdown 事件时,转为初始状态.
本文采用Cisco 开发的GNS3 模拟器[8],搭建如图4所示的网络拓扑.该拓扑结构将图1中的示例进行简化,增加了VRRP 协议实验验证的便利性.其中,路由器RA、RB 属于同一个VRRP虚拟备份组,指定该虚拟备份组的IP 地址为10.110.10.1.
图4 VRRP 实验仿真拓扑
(1)在路由器上配置RIP 协议,实现全网连通,如Config 1(其他路由器配置类似)所示.在不运行VRRP 的情况下,如果RA 或者RB 中的某台路由器宕机,主机都将无法访问Network.
Config 1:
RA(config)#router rip
RA(config-router)#version 2
RA(config-router)#network 210.96.10.0
RA(config-router)#network 10.110.10.0
RA(config-router)#no auto-summary
RA(config-router)#end
(2)在RA 和RB 上运行VRRP 协议.设置RA 的优先级为200,RB 的优先级为100,根据VRRP 路由器的工作机制,RA 成为主路由器(Master),RB 成为备份路由器(Backup),如Config 2 所示.
Config 2:
RA#show vrrp brief
Interface Grp Pri Pre State Grp addr
Fa0/0 1 200 Y Master 10.110.10.1
RB#show vrrp brief
Interface Grp Pri Pre State Grp addr
Fa0/0 1 100 Y Backup 10.110.10.1
(3)将RA 的fa0/0 端口down 掉,RA 和RB的状态将迅速发生切换,RB 由原来的Backup 状态转换为Master 状态,如Config 3 所示.
Config 3:
RA#show vrrp brief
Interface Grp Pri Pre State Grp addr
Fa0/0 1 200 Y Init 10.110.10.1
RB#show vrrp brief
Interface Grp Pri Pre State Grp addr
Fa0/0 1 100 Y Master 10.110.10.1
(4)设置HostA 的网关地址为虚拟备份组的IP 地址10.10.110.1,当前的主路由器RB 将为HostA 转发数据,从而实现了在RA 宕机的情况下,HostA 依然能够访问Network.
本文通过仿真实验设计,验证了VRRP 协议具有消除单点故障,提升网络鲁棒性的功能.但在VRRP 的运行环境中,备份路由器只负责监听网络状态而不转发数据,造成了资源的浪费.因此,为了进一步提高网络资源的利用率,可以通过配置多个VRRP 组来实现网络的负载均衡[9].
[1]徐江红,马蕾.使用双机备份方案解决网络中单点故障[J].微处理机,2012,33(6):20 -22.
[2]李国颖,成柏松,张鹏,等.相互依存网络鲁棒性研究综述[J].电子科技大学学报,2013(1):23-28.
[3]黄金源,张宁,肖仰华.基于拷贝模型的复杂网络鲁棒性研究[J].计算机应用研究,2010(4):1403-1406.
[4]R.Hinden Ed.Virtual router redundancy protocol(VRRP)[S].IETF RFC3768,USA,2004:10 -18.
[5]关瑞东,孙文胜.支持动态负载均衡的虚拟路由器冗余技术与实现[J].计算机工程与科学,2010,32(1):13 -16.
[6]张珠庭.VRRP+MSTP 技术提升网络可用性水平的方案设计研究[J].淮海工学院学报,2013,22(2):42-45.
[7]陈伟旭.基于IPv4 的VRRP 协议研究与实现[D].北京:北京邮电大学硕士学位论文,2012:10 -11.
[8]王丽娜,刘炎.基于GNS3 的冗余网络仿真[J].实验室研究与探索,2013,32(8):55 -59.
[9]祝伟华,徐强.基于动态负载均衡的VRRP 协议研究[J].重庆理工大学学报:自然科学版,2011,25(7):76 -80.