发明内容
本发明的实施例提供一种VRRP负载均衡的方法及装置,能够避免浪费主用路由设备的带宽。
第一方面,提供一种VRRP负载均衡的方法,该方法包括:
主用路由设备接收终端发送的ARP请求报文;
在ARP请求报文中的目的IP地址为主用路由设备所属的虚拟路由设备的IP地址,且主用路由设备中的终端信息表中未保存终端的MAC地址、IP地址的情况下,主用路由设备根据负载情况选择虚拟路由设备中的一台路由设备作为终端的主转发设备,将终端的管理信息添加到终端信息表中,并将终端信息表发送至虚拟路由设备中的各个备用路由设备,终端的管理信息包括:终端的MAC地址、IP地址和终端的主转发设备的转发MAC地址;
在终端信息表中保存有终端的MAC地址和IP地址,且终端信息表中保存的终端的主转发设备的转发MAC地址为主用路由设备的转发MAC地址的情况下,主用路由设备向终端发送ARP应答报文,并负责转发来自终端的数据报文。
本申请中,主用路由设备可以接收终端发送的ARP请求报文;并在ARP请求报文中的目的IP地址为主用路由设备所属的虚拟路由设备的IP地址,且主用路由设备中的终端信息表中未保存终端的MAC地址、IP地址的情况下,主用路由设备可以根据负载情况选择虚拟路由设备中的一台路由设备作为终端的主转发设备,将终端的管理信息添加到终端信息表中,并将终端信息表发送至虚拟路由设备中的各个备用路由设备,终端的管理信息包括:终端的MAC地址、IP地址和终端的主转发设备的转发MAC地址;如此可以在终端信息表中保存有终端的MAC地址和IP地址,且终端信息表中保存的终端的主转发设备的转发MAC地址为主用路由设备的转发MAC地址的情况下,主用路由设备向终端发送ARP应答报文,并负责转发来自终端的数据报文。因为主用路由设备只有在其为终端的主转发设备时,才向终端回复ARP应答报文,所以主用路由设备无需回复大量的ARP应答报文,避免浪费主用路由设备的带宽。
可选的,主用路由设备建立并保存转发MAC分配信息表,转发MAC分配转发信息表中包括:虚拟路由设备中的每台路由设备的转发MAC地址、IP地址和每台路由设备的备转发设备的IP地址;其中,每台路由设备的转发MAC地址和每台路由设备的备转发设备均由主用路由设备分配;
主用路由设备将转发MAC分配表发送至虚拟路由设备中的各个备用路由设备。
可选的,在转发MAC分配信息表中某台路由设备的备用转发设备的IP地址为主用路由设备的IP地址的情况下,主用路由设备定时检测某台路由设备的状态,若主用路由设备检测到某台路由设备故障,则将某台路由设备的转发MAC地址添加到本地硬件MAC地址表,并向以某台路由设备作为主转发设备的终端发送单播免费ARP报文。
本申请中,由于主用路由设备建立并保存转发MAC分配信息表,转发MAC分配转发信息表中包括:虚拟路由设备中的每台路由设备的转发MAC地址、IP地址和每台路由设备的备转发设备的IP地址;其中,每台路由设备的转发MAC地址和每台路由设备的备转发设备均由主用路由设备分配。因此在转发MAC分配信息表中某台路由设备的备用转发设备的IP地址为主用路由设备的IP地址的情况下,主用路由设备可以定时检测某台路由设备的状态,若主用路由设备检测到某台路由设备故障,则将某台路由设备的转发MAC地址添加到本地硬件MAC地址表,并向以某台路由设备作为主转发设备的终端发送单播免费ARP报文。从而可以在终端的主转发设备发生故障时,由该主转发设备的备转发设备来为该终端转发数据报文,从而可以保证终端与外部网络通信。
可选的,主用路由设备向终端信息表中的终端发送ARP请求报文;
若在预设时间内主用路由设备未收到终端发送的ARP应答报文,则主用路由设备从终端信息表中删除终端的管理信息,并将终端信息表发送至虚拟路由设备中的各个备用路由设备。
第二方面,提供一种VRRP负载均衡的方法,该包括:
备用路由设备接收并保存主用路由设备发送的终端信息表;终端信息表中包括终端的管理信息,终端的管理信息包括:终端的MAC地址、IP地址和终端的主转发设备的转发MAC地址;
备用路由设备接收终端发送的ARP请求报文;
在终端信息表中保存有终端的MAC地址和IP地址,且终端信息表中保存的终端的主转发设备的转发MAC地址为备用路由设备的转发MAC地址的情况下,向终端发送ARP应答报文,并负责转发来自终端的数据报文。
本申请中,由于备用路由设备可以接收并保存主用路由设备发送的终端信息表;终端信息表中包括终端的管理信息,终端的管理信息包括:终端的MAC地址、IP地址和终端的主转发设备的转发MAC地址,因此在备用路由设备接收终端发送的ARP请求报文之后,在终端信息表中保存有终端的MAC地址和IP地址,且终端信息表中保存的终端的主转发设备的转发MAC地址为备用路由设备的转发MAC地址的情况下,向终端发送ARP应答报文,并负责转发来自终端的数据报文。因为备用路由设备可以在其为终端的主转发设备时,直接向终端回复ARP应答报文,所以主用路由设备无需回复大量的ARP应答报文,避免浪费主用路由设备的带宽。
可选的,备用路由设备接收并保存主用路由设备发送的转发MAC分配表,转发MAC分配表包括:主用路由设备所属的虚拟路由设备中的每台路由设备的转发MAC地址、IP地址和每台路由设备的备转发设备的IP地址;其中,每台路由设备的转发MAC地址和每台路由设备的备转发设备均由主用路由设备分配。
可选的,在转发MAC分配信息表中某台路由设备的备用转发设备的IP地址为备用路由设备的IP地址的情况下,备用路由设备定时检测台路由设备的状态,若备用路由设备检测到某台路由设备故障,则将某台路由设备的转发MAC地址添加到本地硬件MAC地址表,并向以某台路由设备作为主转发设备的终端发送单播免费ARP报文。
本申请中,由于备用路由设备接收并保存主用路由设备发送的转发MAC分配表,转发MAC分配表包括:主用路由设备所属的虚拟路由设备中的每台路由设备的转发MAC地址、IP地址和每台路由设备的备转发设备的IP地址;其中,每台路由设备的转发MAC地址和每台路由设备的备转发设备均由主用路由设备分配,因此在转发MAC分配信息表中某台路由设备的备用转发设备的IP地址为备用路由设备的IP地址的情况下,备用路由设备可以定时检测台路由设备的状态,若备用路由设备检测到某台路由设备故障,则将某台路由设备的转发MAC地址添加到本地硬件MAC地址表,并向以某台路由设备作为主转发设备的终端发送单播免费ARP报文。从而可以在终端的主转发设备发生故障时,可以由该主转发设备的备转发设备来为该终端转发数据,从而可以保证终端与外部网络通信。
可选的,备用路由设备保存主用路由设备发送的终端信息表包括:
备用路由设备根据主用路由设备发送的终端信息表更新备用路由设备中原有的终端信息表。
第三方面,提供一种主用路由设备,该设备包括:
收发模块,用于接收终端发送的ARP请求报文,将终端信息表发送至虚拟路由设备中的各个备用路由设备,以及向终端发送单播免费ARP报文;
存储模块,用于保存终端信息表;
处理模块,用于在收发模块接收到的ARP请求报文中的目的IP地址为主用路由设备所属的虚拟路由设备的IP地址,且存储模块存储的终端信息表中未保存终端的IP地址和MAC地址的情况下,主用路由设备根据负载情况选择虚拟路由设备中的一台路由设备作为终端的主转发设备,将终端的管理信息添加到终端信息表中,并控制收发模块将终端信息表发送至虚拟路由设备中的各个备用路由设备,终端的管理信息包括:MAC地址、IP地址和主转发设备的转发MAC地址;在终端信息表中保存有终端的MAC地址和IP地址,且终端信息表中保存的终端的主转发设备的转发MAC地址为主用路由设备的转发MAC地址的情况下,主用路由设备控制收发模块向终端发送ARP应答报文,并负责转发来自终端的数据报文。
可选的,收发模块,还用于将转发MAC分配表发送至虚拟路由设备中的各个备用路由设备;
存储模块,还用于保存转发MAC分配信息表;
处理模块,还用于建立转发MAC分配信息表,转发MAC分配转发信息表中包括:虚拟路由设备中的每台路由设备的转发MAC地址、IP地址和每台路由设备的备转发设备的IP地址;其中,每台路由设备的转发MAC地址和每台路由设备的备转发设备均由主用路由设备分配。
可选的,处理模块,还用于在转发MAC分配信息表中某台路由设备的备用转发设备的IP地址为备用路由设备的IP地址的情况下,备用路由设备定时检测某台路由设备的状态,若备用路由设备检测到某台路由设备故障,则将某台路由设备的转发MAC地址添加到本地硬件MAC地址表,并控制收发模块向以某台路由设备作为主转发设备的终端发送单播免费ARP报文;
收发模块,还用于向以某台路由设备作为主转发设备的终端发送单播免费ARP报文。
可选的,收发模块,还用于向终端信息表中的终端发送ARP请求报文;以及接收终端发送的ARP应答报文;
处理模块,还用于若在预设时间内收发模块未收到终端发送的ARP应答报文,则从终端信息表中删除终端的管理信息,并将终端信息表发送至虚拟路由设备中的各个备用路由设备。
对于上述第三方面或其可选的实现方式的技术效果可以参见上述第一方面或其可选的实现方式的技术效果的描述,此处不再赘述。
第四方面,一种备用路由设备,包括:
收发模块,用于接收主用路由设备发送的终端信息表;接收终端发送的ARP请求报文,以及向终端发送ARP应答报文;终端信息表中包括终端的管理信息,终端的管理信息包括:终端的MAC地址、IP地址和主转发设备的转发MAC地址;
存储模块,用于保存收发模块接收的终端信息表;
处理模块,用于在终端信息表中保存有终端的MAC地址和IP地址,且终端信息表中保存的终端的主转发设备的转发MAC地址为备用路由设备的转发MAC地址的情况下,控制收发模块向终端发送ARP应答报文,并负责转发来自终端的数据报文。
可选的,收发模块,还用于接收主用路由设备发送的转发MAC分配表,转发MAC分配表包括:主用路由设备所属的虚拟路由设备中的每台路由设备的转发MAC地址、IP地址和每台路由设备的备转发设备的IP地址;其中,每台路由设备的转发MAC地址和每台路由设备的备转发设备均由主用路由设备分配。
存储模块,还用于保存转发MAC分配表。
可选的,处理模块,还用于在转发MAC分配信息表中某台路由设备的备用转发设备的IP地址为备用路由设备的IP地址的情况下,备用路由设备定时检测某台路由设备的状态,若备用路由设备检测到某台路由设备故障,则将某台路由设备的转发MAC地址添加到本地硬件MAC地址表,并控制收发模块向以某台路由设备作为主转发设备的终端发送单播免费ARP报文;
收发模块,还用于向以某台路由设备作为主转发设备的终端发送单播免费ARP报文。
可选的,存储模块,具体用于根据主用路由设备发送的终端信息表更新备用路由设备中原有的终端信息表。
对于上述第四方面或其可选的实现方式的技术效果可以参见上述第二方面或其可选的实现方式的技术效果的描述,此处不再赘述。
具体实施方式
下面结合附图对本发明实施例提供的VRRP负载均衡的方法及装置进行详细描述。
在本发明实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本发明实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。本文中符号“/”表示关联对象是或者的关系,例如A/B表示A或者B。
本发明实施例中的终端也可以称为终端设备,该终端设备可以是计算机、手机、移动台、移动终端、笔记本电脑等。
VRRP是将多个具有网关功能的路由设备组成一台虚拟路由设备,该虚拟路由设备中的多个路由设备按照VRRP的选举机制选举出一个作为主(英文:MASTER)路由设备,其他作为备用(英文:BACKUP)路由设备。
示例性的,如图1所示为本发明实施例提供的VRRP负载均衡的方法的应用场景示意图。图1中包括三个了具有网关功能的路由设备(在图1中分别表示为R1、R2和R3)、一个交换机(在图1中表示为S1)和两个终端(在图1中分别表示为PC1和PC2)终端通过交换机与路由设备连接,以实现终端与外部网络(图1中表示为Internet)的连接。VRRP将图1中的R1、R2和R3组成一台虚拟路由器设备,并在按照VRRP的选举机制在R1、R2和R3中选举出一个作为主用,例如在R1、R2和R3中选举出R1作为主用路由设备,而R2和R3作为备用路由设备。
目前,实现VRRP负载均衡的方法中,承载终端转发任务的路由设备(例如主用路由设备、或某一个备用路由设备)接收到ARP请求时,在承载终端转发任务的路由设备为主用路由设备时,该路由设备可以直接向该终端回复ARP应答报文,在承载终端转发任务的路由设备为备用路由设备时,该路由设备无法直接向该终端回复ARP应答报文,而是仍然由MASTER路由设备向该终端回复ARP应答报文,也就是说现有的ARP应答报文均由主用路由设备回复给终端,如此导致主用路由设备需要回复大量的ARP应答报文,可能会浪费主用路由设备的带宽。
为了解决上述问题,本发明实施例提供一种VRRP负载均衡的方法,该方法可以实现分布式的应答,即在主用路由设备为终端的主转发设备时,向该终端回复ARP应答报文,以及在备用路由设备为终端的主转发设备时,直接向该终端回复ARP应答报文。从而使得主用路由设备无需回复大量的ARP应答报文,避免浪费主用路由设备的带宽。
为了更加清楚的描述本发明实施例提供的技术方案,下面将分别从主用路由设备侧的角度和备用路由设备侧的角度对本发明实施例提供的VRRP负载均衡的方法进行示例性的说明。
主用路由设备侧:
如图2所示,本发明实施例提供的VRRP负载均衡的方法包括以下步骤S101-S111。
S101、主用路由设备接收终端发送的ARP请求报文。
主用路由设备可以接收多个终端发送的ARP请求报文。其中,ARP请求报文为广播报文。
S102、主用路由设备判断该ARP请求报文中的目的IP地址是否为主用路由设备所属的虚拟路由设备的IP地址。
本发明实施例中,主用路由设备可以为虚拟路由设备设置IP地址。
本发明实施例中,由于主用路由设备对以虚拟路由设备为默认网关的终端进行管理,而对其他的终端其不做管理,因此主用路由设备需确认该终端是否为其需管理的终端(即该终端的目的IP地址是否为主用路由设备所属的虚拟路由设备的IP地址)。
若该ARP请求报文中的目的IP地址为主用路由设备所属的虚拟路由设备的IP地址,则主用路由设备执行下述S103-S111;若该ARP请求报文中的目的IP地址不是主用路由设备所属的虚拟路由设备的IP地址,则主用路由设备执行下述S111。
S103、主用路由设备判断终端信息表是否保存了该终端的MAC地址和IP地址。
上述主用路由设备判断终端信息表是否保存了该终端的MAC地址和IP地址可以理解为:主用路由设备判断终端信息表是否保存了上述ARP报文携带的源MAC地址和源IP地址。
上述终端信息表为保存在主用路由设备中的终端信息表。
其中,终端信息表中包括终端的管理信息。可选的,该终端信息表中可以包括有一个或多个终端的管理信息。每个终端的管理信息均包括:终端的IP地址、MAC地址和终端的主转发设备的转发MAC地址。
本发明实施例中,终端的主转发设备可以由主用路由设备分配。主用路由设备可以根据负载情况选择虚拟路由设备中的一台路由设备作为终端的主转发设备。
可选的,该终端的主转发设备的转发MAC地址也可以由上述主用路由设备分配。该转发MAC地址具体可以为主用路由设备为中的主转发设备配置的虚拟MAC地址。
可选的,上述终端的管理信息中具体还可以包括接口信息。例如可以包括主转发设备中用于转发终端的数据的接口信息。
示例性的,本发明实施例中可以将每个终端的管理信息构建为终端信息表中的一个表项(即下述表1中的每行为一个表项),然后在该一个表项中记录一个终端的管理信息(即终端的IP地址、MAC地址和终端的主转发设备的转发MAC地址)。示例性的,以终端信息表中保存有3个终端(分别为终端a、终端b和终端c)的管理信息为例,该终端信息表可以为表1所示的形式。其中,表1中采用IPa、IPb和IPc来分别表示终端a、终端b和终端c的IP地址,采用MACa、MACb和MACc来分别表示终端a、终端b和终端c的MAC地址,采用MAC1、MAC2和MAC3来分别表示终端a、终端b和终端c的主转发设备的MAC地址。
表1
若终端信息表保存了该终端的MAC地址和IP地址;则主用路由设备执行下述S104和S105以及S111;若终端信息表未保存该终端的MAC地址和IP地址;则主用路由设备可以执行下述S106-S108和/或执行S109-S111。
S104、主用路由设备判断终端信息表中保存的该终端的主转发设备的转发MAC地址是否为主用路由设备的转发MAC地址。
若终端信息表中保存的该终端的主转发设备的转发MAC地址为主用路由设备的MAC地址,则主用路由设备执行下述S105;若终端信息表中保存的该终端的主转发设备的转发MAC地址不是主用路由设备的MAC地址,则主用路由设备可以直接执行下述S111。
S105、主用路由设备向该终端回复ARP应答报文。
其中,该ARP应答报文中携带有该主用路由设备的转发MAC地址。
本发明实施例中,主用路由设备向该终端回复ARP应答报文之后,相应的终端接收该ARP应答报文,并且可以根据该ARP应答报文中携带的该主用路由设备的转发MAC地址获知该主用路由设备为承载其转发任务的路由设备,即该主用设备负责转发来自该终端的数据报文。从而终端可以通过该主用路由设备将数据转发到外部网络,以实现和外部网络通信。
S106、主用路由设备根据负载情况选择虚拟路由设备中的一台路由设备作为该终端的主转发设备。
S107、主用路由设备将该终端的管理信息添加到终端信息表中。
本发明实施例中,主用路由设备可以将该终端的管理信息作为一个表项添加至终端信息表中。
可选的,本发明实施例中在预设的时间内,若主用路由设备可能会陆续接收到多个终端发送的ARP请求报文,在接收到的请求ARP报文中的目的IP地址均为主用路由设备所属的虚拟路由设备的IP地址,且终端信息表均未保存该ARP请求报文携带的源IP地址和源MAC地址的情况下,主用路由设备可以先在终端信息表中保存该ARP请求报文携带的终端的部分管理信息(即终端的IP地址和MAC地址),这样在预设时间之后,主用路由设备可能保存了多个终端的部分管理信息,由此主用路由设备可以获知需要分配主转发设备的终端的个数。此时,主用路由设备可以根据负载均衡的原则,尽量平均的为该多个终端分配主转发设备,并将为每个终端分配的主转发设备的MAC地址保存在终端的管理信息中,以在终端信息表中完整的保存终端的管理信息。
示例性的,如上述图1所示,假设虚拟路由设备中包括有3个路由设备,在主用路由设备获知需要分配转发路由器的终端的个数为6个,那么主用路由设备可以将该3个路由设备平均的分配给该6个终端,使每个路由器作为主转发设备负责2个终端的转发任务。
S108、主用路由设备将该终端信息表发送至虚拟路由设备中的各个备用路由设备。
示例性的,如上述图1所示,虚拟路由设备包括有一个主用路由设备R1和两个备用路由设备R2和R3。以图1中的虚拟路由设备为例,主用路由设备R1可以将该终端信息表发送至虚拟路由设备中的备用路由设备R2和备用路由设备R3。
S109、主用路由设备根据负载情况选择虚拟路由设备中的一台路由设备作为该终端的主转发设备。
若终端信息表中保存的该终端的主转发设备的转发MAC地址为主用路由设备的MAC地址,则主用路由设备执行下述S110;若终端信息表中保存的该终端的主转发设备的转发MAC地址不是主用路由设备的MAC地址,则主用路由设备可以直接执行下述S111。
S110、主用路由设备向该终端回复ARP应答报文。
对于上述S109和S110的相关描述具体可以参见对上述S104和S105的相关描述,此处不再赘述。
S111、主用路由设备丢弃该ARP请求报文。
需要说明的是,本发明实施例在执行上述S106-S108和上述S109-S111时,不限定上述S106-S108和上述S109-S111的执行顺序,即本发明实施例中可以先执行上述S106-S108,后执行S109-S111;也可以先执行上述S109-S111,后执行上述S106-S108;还可以同时执行上述S106-S108和上述S109-S111。
本发明实施例中,由于备用路由设备可以接收并保存主用路由设备发送的终端信息表,因此在备用路由设备接收终端发送的ARP请求报文之后,在终端信息表中保存有终端的MAC地址和IP地址,且终端信息表中保存的终端的主转发设备的转发MAC地址为备用路由设备的转发MAC地址的情况下,向终端发送ARP应答报文,并负责转发来自终端的数据报文。因为备用路由设备可以在其为终端的主转发设备时,直接向终端回复ARP应答报文,所以主用路由设备无需回复大量的ARP应答报文,避免浪费主用路由设备的带宽。
如图3所示,本发明实施例提供的提供的VRRP负载均衡的方法,还可以包括下述步骤S201-S205。
S201、主用路由设备建立并保存转发MAC分配信息表。
主用路由设备可以为虚拟路由设备中的每一个路由设备(例如图1中的R1、R2和R3)均设置虚拟的MAC地址作为路由设备的转发MAC地址。下面本发明实施例所涉及到的虚拟路由设备中的路由设备的转发MAC地址均可以为虚拟的MAC地址。
其中,该转发MAC分配转发信息表中包括:虚拟路由设备中的每台路由设备的转发MAC地址、IP地址和每台路由设备的备转发设备的IP地址;其中,每台路由设备的转发MAC地址和每台路由设备的备转发设备均由主用路由设备分配。
示例性的,以上述图1所示的虚拟路由设备为例,主用路由设备R1可以为R1、R2和R3分配转发MAC地址,并且为R1、R2和R3分配一台路由设备分别作为R1、R2和R3的备转发设备,例如,R1可以为R1、R2和R3分配MAC1、MAC2和MAC3分别作为R1、R2和R3的转发MAC地址,然后为R1分配R2为其备转发设备,为R2分配R3为其备转发设备,为R3分配R1为其备转发设备,如此上述转发MAC分配表可以如表2所示。其中表2中采用IP1、IP2和IP3来分别表示R1、R2和R3的IP地址。
表2
S202、主用路由设备将该转发MAC分配表发送至虚拟路由设备中的各个备用路由设备。
在该转发MAC分配信息表中某台路由设备的备转发设备的IP地址为主用路由设备的IP地址的情况下,如图3所示,该方法还可以包括下述步骤S203-S205.
S203、主用路由设备定时检测该某台路由设备的状态。
在主用路由设备检测到该某台路由设备故障的情况下,则执行下述S204。
S204、主用路由设备将该某台路由设备的转发MAC地址添加到本地硬件MAC地址表。
主用路由设备将该终端的主转发设备的转发MAC地址添加到本地硬件MAC地址表,也即此时主用路由设备的本地硬件MAC地址表中保存有两个转发MAC地址,一个为主用路由设备自身的转发MAC地址,一个为该终端的主转发设备的转发MAC地址。
在主用路由设备中保存的终端信息表中已经保存了以该某台路由设备作为主转发设备的终端的管理信息的情况下,可以执行下述S205。
S205、主用路由设备向以该某台路由设备作为主转发设备的终端发送单播免费ARP报文。
其中,该单播免费ARP报文中携带该终端的主转发设备的转发MAC地址。
需要说明的是,在执行完上述S101之后,本发明实施例不限定上述S202和上述S203-S205的执行顺序,即本发明实施例可以先执行S202,也可以先执行S203-S205;也可以先执行S203-S205,后执行S202;还可以同时执行上述S202和上述S203-S205。
本发明实施例中,所涉及的单播免费ARP报文为单播的报文。
由于主用路由设备向该终端发送携带该终端的主转发设备的转发MAC地址的单播免费ARP报文的过程中,负责中继的交换设备(如图1中所示的交换机)可以根据该单播免费ARP报文中携带的主转发设备的转发MAC地址更新其保存的MAC端口表项,即将该交换设备中接收该单播免费ARP报文的端口与该主转发设备的转发MAC地址以对应关系的形式保存在MAC端口表项中,以保证在后续该终端发送数据报文时,可以将该终端发送的数据报文直接转发至主用路由设备。从而实现在终端的主转发设备故障的情况下,作为该终端的主转发设备的备转发设备(即主用路由设备)可以将该终端发送的数据转发至外部网络,实现与外部网络的通信。
本发明实施例中,由于主用路由设备建立并保存转发MAC分配信息表。因此在转发MAC分配信息表中某台路由设备的备用转发设备的IP地址为主用路由设备的IP地址的情况下,主用路由设备可以定时检测某台路由设备的状态,若主用路由设备检测到某台路由设备故障,则将某台路由设备的转发MAC地址添加到本地硬件MAC地址表,并向以某台路由设备作为主转发设备的终端发送单播免费ARP报文。从而可以在终端的主转发设备发生故障时,由该主转发设备的备转发设备来为该终端转发数据报文,从而可以保证终端与外部网络通信。
可选的,在主用路由设备接收到终端发送的ARP报文之后,除了在上述主用路由设备为该终端的主转发设备时,主用路由设备可以向该终端回复ARP报文以外,在上述主用路由设备为该终端的主转发设备的备转发设备,且主用路由设备通过定时检测,检测到该终端的主转发设备故障的情况下,主用路由设备设备可以将该终端的主转发设备的转发MAC地址添加到本地硬件MAC地址表,并向该终端回复携带有该终端的主转发设备的转发MAC地址的ARP应答报文。
可选的,主用路由设备可以向终端信息表中的终端(即在终端信息表中保存有管理信息的某个或某些终端)发送ARP请求报文,并等待一个预设时间,若在预设时间内主用路由设备未收到终端(即终端信息表中保存有管理信息的终端中的某个或某些终端)发送的ARP应答报文,则主用路由设备从终端信息表中删除该终端的管理信息,并将终端信息表发送至虚拟路由设备中的各个备用路由设备。
可选的,上述图2所示的VRRP负载均衡的方法,在主用路由设备侧可以通过数据面和协议面两层逻辑来对终端进行管理。这样分数据面和协议面两层逻辑来对终端进行管理可以明确处理职责,其中,数据面主要用于直接感知终端(如接收终端的ARP请求报文,以及向终端发送ARP报文等);协议面主要用于对终端进行构建和分配(例如保存和更新终端信息表)等。
进一步的分数据面和协议面两层逻辑来对终端进行管理可以更有效的支持本发明实施例提供的VRRP负载均衡的方法的进程化;例如可以将上述数据面的逻辑嵌入到现有的终端感知相关模块(如协议栈、ARP模块等),而协议面的逻辑可以嵌入到现有VRRP进程里。
示例性的,如图4所示,主用路由设备中协议面与数据面的部分交互流程可以包括下述流程1至流程7。其中,图4中协议面的逻辑嵌入在现有VRRP进程中,数据面的逻辑嵌入在现有协议栈中。
流程1:协议面的终端管理模块向数据面的终端管理模块发送ARP过滤规则。
示例性的,主用路由设备可以在协议面设置对ARP请求报文的过滤规则,并将对ARP请求报文的过滤规则发送给数据面,以使得数据面在接收到ARP请求报文之后,可以对不同的ARP请求报文执行不同的处理(具体是对发送该ARP请求的终端进行不同的管理流程)。
流程2:数据面的终端管理模块根据过滤规则处理接收到的ARP请求报文,并设置数据面的终端信息表。
流程3:如果数据面的终端信息表有改变,则数据面的终端管理模块发送创建终端的管理信息的请求到协议面终端管理模块。
可选的,数据面接收到上述过滤规则之后,可以执行上述流程2。示例性的,数据面的终端管理模块判断ARP请求报文中的目的IP地址是否为主用路由设备所属的虚拟路由设备的IP地址。
若否,可以直接将该ARP请求报文丢弃。
若是,则判断是否保存过该终端的IP地址和源MAC地址(也即上述ARP请求报文中携带的源IP地址和源MAC地址);若未保存过,说明终端信息表中还没有保存该终端的管理信息,此时可以在数据面的终端信息表中添加一个表项记录该终端的部分管理信息,即该终端的IP地址和源MAC地址(也即上述ARP请求报文中携带的源IP地址和源MAC地址)。在数据面的终端信息表中添加一个表项记录该终端的部分管理信息之后,由于终端信息表有改变,因此数据面的终端管理模块执行上述流程3,发送构建终端的完整管理信息的请求给协议面的终端管理模块,该请求中携带有终端的部分管理信息(即终端的IP地址和MAC地址)。若保存过,则在主用路由设备为该终端(即发送上述ARP请求报文的终端)的主转发设备的情况下,向终端回复ARP应答报文;在主用路由设备不是该终端(即发送上述ARP请求报文的终端)的主转发设备的情况下,将该ARP请求报文丢弃。
可选的,本发明实施例中,还可以在该终端的主转发设备的备转发设备的IP地址为主用路由设备的IP地址,且该终端的主转发设备故障的情况下,向终端回复携带有该终端的主转发设备的转发MAC地址的ARP应答报文。
其中,上述流程2中当在数据面的终端信息表中添加一个表项记录该终端的部分管理信息之后,可以开启客户端无效老化定时器,来进行时间的计算,以便在等待一段时间后,若还未接收到协议面管理模块发送的该终端的完整管理信息的情况下,对该终端的部分管理信息进行删除。
流程4:协议面的终端管理模块接收数据面的终端管理模块发送的构建终端的完整管理信息的请求,并设置协议面的终端信息表。
相应的,在协议面收到数据面发送的构建终端的管理信息的请求之后,协议面可以构建该终端的完整管理信息,即在协议面的终端信息表中添加该终端的管理信息。
由于协议面收到的数据面发送的构建终端的管理信息的请求中包括有该终端的部分管理信息,因此协议面可以根据该终端部分管理信息结合构建该终端的完整管理信息,即为该终端分配主转发设备,如此得到该终端的完整管理信息:终端的IP地址、MAC地址和终端的主转发设备的转发MAC地址,并将该终端的完整管理信息保存至协议面的终端信息表中。
流程5:协议面的终端管理模块将为终端分配的主转发设备的转发MAC地址,发送至数据面的终端管理模块。
流程6:数据面的终端管理模块收到协议面的终端管理模块为该终端分配的主转发设备的转发MAC地址后,设置数据面的终端信息表,并取消终端无效老化定时器。
数据面的终端管理模块收到为该终端分配的主转发设备的转发MAC地址后,可以将该终端的主转发设备的转发MAC地址保存在数据面的终端信息表中(即将该终端的部分终端信息的基础上保存该终端的主转发设备的转发MAC地址)。在数据面的终端信息表中保存了该终端的完整信息表项之后可以取消该终端的无效老化定时器。
流程7:数据面的终端管理模块根据ARP探测时间,定时发送ARP探测。
在主用路由设备确定终端的主转发设备的IP地址为主用路由设备的IP地址,则主用路由设备可以执行上述流程7。
其中,该ARP探测时间(即发送ARP请求报文的时间周期)可以由协议面的终端管理模块来设置,并将ARP探测时间发送至数据面。这样数据面可以根据该ARP探测时间定时的(即周期性的)向数据面的终端信息表中所记录的终端发送ARP请求报文,以使得数据面的终端管理模块可以在预设时间内(可以通过设置终端老化定时器来实现该预设时间的计算)未接收到终端(即数据面的终端信息表中保存有管理信息的终端中的某个或某些终端)发送的ARP应答报文之后,删除数据面的终端信息表中该终端的管理信息。
备用路由设备侧:
如图5所示,本发明实施例提供的VRRP负载均衡的方法包括以下步骤S301-S306。
S301、备用路由设备接收并保存主用路由设备发送的终端信息表。
其中,上述终端信息表中可以包括一个或多个终端的管理信息,终端的管理信息包括:终端的IP地址、MAC地址和终端的主转发设备的转发MAC地址。
具体的对于终端管理信息表的描述可以参见上述S103中的相关描述,此处不再赘述。
可选的,本发明实施例中备用路由设备保存主用路由设备发送的终端信息表包括:备用路由设备根据主用路由设备发送的终端信息表更新备用路由设备中原有的终端信息表。
可选的,本发明实施例中,当备用路由设备第一次接收到主用路由设备发送的终端信息表时,可以直接保存接收到的终端信息表;当备用路由设备再次接收到主用路由设备发送的终端信息表时,可以根据主用路由设备发送的终端信息表更新备用路由设备中原有的终端信息表。例如,主用路由设备发送的终端信息表中相比于原有的终端信息表中增加了一个终端的管理信息,则备用路由设备可以将该增加的终端管理信息增加到备用路由设备中的原有终端信息表中。
S302、备用路由设备接收终端发送的ARP请求报文。
S303、备用路由设备判断该终端信息表中是否保存有该终端的MAC地址和IP地址。
其中,上述备用路由设备判断该终端信息表中是否保存有该终端的MAC地址和IP地址可以理解为备用路由设备判断该终端信息表中是否保存有该ARP请求报文的源MAC地址和源IP地址。
上述终端信息表为保存在备用路由设备中的终端信息表。
若终端信息表保存了该终端的MAC地址和IP地址;则备用路由设备执行下述S304-S306;若终端信息表未保存该终端的MAC地址和IP地址;则备用路由设备可以执行下述S306。
S304、备用路由设备判断该终端信息表中保存的该终端的主转发设备的转发MAC地址是否为备用路由设备的转发MAC地址。
若该终端信息表中保存的该终端的主转发设备的转发MAC地址为备用路由设备的转发MAC地址;则备用路由设备执行下述S304-S306;若该终端信息表中保存的该终端的主转发设备的转发MAC地址不是备用路由设备的转发MAC地址;则备用路由设备可以直接执行下述S306。
S305、备用路由设备向该终端回复ARP应答报文。
其中,该ARP应答报文中携带有该备用路由设备的转发MAC地址。
S306、备用路由设备丢弃该ARP请求报文。
本发明实施例中,由于备用路由设备可以接收并保存主用路由设备发送的终端信息表,因此在备用路由设备接收终端发送的ARP请求报文之后,在终端信息表中保存有终端的MAC地址和IP地址,且终端信息表中保存的终端的主转发设备的转发MAC地址为备用路由设备的转发MAC地址的情况下,备用路由设备可以向终端发送ARP应答报文,并负责转发来自终端的数据报文。因为备用路由设备可以在其为终端的主转发设备时,直接向终端回复ARP应答报文,所以主用路由设备无需回复大量的ARP应答报文,避免浪费主用路由设备的带宽。
如图6所示,本发明实施例提供的提供的VRRP负载均衡的方法,还可以包括下述步骤S401-S404。
S401、备用路由设备接收并保存主用路由设备发送的转发MAC分配表。
其中,对于转发MAC分配表的描述具体可以参见上述S201中的相关描述,此处不再赘述。
在上述S401之后,在转发MAC分配信息表中某台路由设备的备用转发设备的IP地址为备用路由设备的IP地址的情况下,本发明实施例提供的VRRP负载均衡的方法还包括下述步骤S402-S404。
S402、备用路由设备定时检测该某台路由设备的状态。
若备用路由设备检测到该某台路由设备故障,备用路由设备则执行下述S403。
S403、备用路由设备将该某台路由设备的转发MAC地址添加到本地硬件MAC地址表。
备用路由设备将该终端的主转发设备的转发MAC地址添加到本地,也即此时备用路由设备的本地中保存有两个转发MAC地址,一个为备用路由设备自身的转发MAC地址,一个为该终端的主转发设备的转发MAC地址。
在备用路由设备中保存的终端信息表中已经保存了以该某台路由设备作为主转发设备的终端的管理信息的情况下,可以执行下述S404。
S404、备用路由设备向以该某台路由设备作为主转发设备的终端发送单播免费ARP报文。
上述单播免费ARP报文中携带有该某台路由设备的转发MAC地址。
其中,该单播免费ARP报文为单播的报文。
由于备用路由设备向该终端发送携带该终端的主转发设备的转发MAC地址的单播免费ARP报文的过程中,负责中继的交换设备(如图1中所示的交换机)可以根据该单播免费ARP报文中携带的主转发设备的转发MAC地址更新其保存的MAC端口表项,即将该交换设备中接收该单播免费ARP报文的端口与该主转发设备的转发MAC地址以对应关系的形式保存在MAC端口表项中,以保证在后续该终端发送数据时,可以将该终端发送的数据直接转发至备用路由设备。从而实现在终端的主转发设备故障的情况下,作为该终端的主转发设备的备转发设备(即备用路由设备)可以将该终端发送的数据转发至外部网络,实现与外部网络的通信。
本发明实施例中,由于备用路由设备接收并保存主用路由设备发送的转发MAC分配表,因此在转发MAC分配信息表中某台路由设备的备用转发设备的IP地址为备用路由设备的IP地址的情况下,备用路由设备可以定时检测台路由设备的状态,若备用路由设备检测到某台路由设备故障,则将某台路由设备的转发MAC地址添加到本地硬件MAC地址表,并向以某台路由设备作为主转发设备的终端发送单播免费ARP报文。从而可以在终端的主转发设备发生故障时,可以由该主转发设备的备转发设备来为该终端转发数据,从而可以保证终端与外部网络通信。
可选的,在备用路由设备接收到终端发送的ARP报文之后,除了在上述备用路由设备为该终端的主转发设备时,备用路由设备可以向该终端回复ARP报文以外,在上述备用路由设备为该终端的主转发设备的备转发设备,且备用路由设备通过定时检测,检测到该终端的主转发设备故障的情况下,备用路由设备设备可以将该终端的主转发设备的转发MAC地址添加到本地硬件MAC地址表,并向该终端回复携带有该终端的主转发设备的转发MAC地址的ARP应答报文。
可选的,与上述主用路由设备侧类似,对于上述图4或图5所示的VRRP负载均衡的方法,在备用路由设备侧也可以通过数据面和协议面两层逻辑来对终端进行管理。
示例性的,如图7所示,备用路由设备中协议面(嵌入在协议栈模块中)与数据面(嵌入在VRRP负载均衡协议进程中)的部分交互流程可以包括下述流程a至流程e。其中,图7中协议面的逻辑嵌入在现有VRRP负载均衡协议进程中,数据面的逻辑嵌入在现有协议栈中。
流程a:协议面的终端管理模块向数据面的终端管理模块发送ARP请求报文的过滤规则。
流程b:数据面的终端管理模块根据过滤规则,处理接收到的ARP请求报文。
可选的,数据面接收到上述过滤规则之后,可以执行上述流程b。示例性的,数据面的终端管理模块可以判断终端信息表是否保存了该终端的IP地址和MAC地址,也即判断终端信息表是否保存了ARP请求报文携带的源IP地址和源MAC地址;
若未保存,则可以直接将该ARP请求报文丢弃。
若保存了,则在备用路由设备为该终端(即发送上述ARP请求报文的终端)的主转发设备的情况下,向终端回复ARP应答报文;在备用路由设备不是该终端(即发送上述ARP请求报文的终端)的主转发设备的情况下,将该ARP请求报文丢弃。
可选的,本发明实施例中,还可以在该终端的主转发设备的备转发设备的IP地址为备用路由设备的IP地址,且该终端的主转发设备故障的情况下,向终端回复携带有该终端的主转发设备的转发MAC地址的ARP应答报文。
流程c:协议面的终端管理模块接收主用路由设备发送的终端信息表,并设置协议面的终端信息表。
可选的,协议面的终端管理模块可以直接将主用路由设备发送的终端信息表保存为协议面的终端信息表。
流程d:协议面的终端管理模块将协议面的终端信息表发送至数据面的终端管理模块。
流程e:数据面的终端管理模块根据接收到的终端信息表,设置数据面的终端信息表。
可选的,数据面的终端管理模块可以直接将协议面的终端信息表保存为数据面的终端信息表。
如图8所示,本发明实施例提供一种主用路由设备,该主用路由设备包括:
收发模块11,用于接收终端发送的ARP请求报文,将终端信息表发送至虚拟路由设备中的各个备用路由设备,以及向终端发送单播免费ARP报文;
存储模块12,用于保存终端信息表;
处理模块13,用于在收发模块11接收到的ARP请求报文中的目的IP地址为主用路由设备所属的虚拟路由设备的IP地址,且存储模块12存储的终端信息表中未保存终端的IP地址和MAC地址的情况下,主用路由设备根据负载情况选择虚拟路由设备中的一台路由设备作为终端的主转发设备,将终端的管理信息添加到终端信息表中,并控制收发模块11将终端信息表发送至虚拟路由设备中的各个备用路由设备,终端的管理信息包括:MAC地址、IP地址和主转发设备的转发MAC地址;在终端信息表中保存有终端的MAC地址和IP地址,且终端信息表中保存的终端的主转发设备的转发MAC地址为主用路由设备的转发MAC地址的情况下,主用路由设备控制收发模块11向终端发送ARP应答报文,并负责转发来自终端的数据报文。
可选的,收发模块11,还用于将转发MAC分配表发送至虚拟路由设备中的各个备用路由设备;
存储模块12,还用于保存转发MAC分配信息表。
处理模块13,还用于建立转发MAC分配信息表,转发MAC分配转发信息表中包括:虚拟路由设备中的每台路由设备的转发MAC地址、IP地址和每台路由设备的备转发设备的IP地址;其中,每台路由设备的转发MAC地址和每台路由设备的备转发设备均由主用路由设备分配。
可选的,处理模块13,还用于在转发MAC分配信息表中某台路由设备的备用转发设备的IP地址为备用路由设备的IP地址的情况下,备用路由设备定时检测某台路由设备的状态,若备用路由设备检测到某台路由设备故障,则将某台路由设备的转发MAC地址添加到本地硬件MAC地址表,并控制收发模块11向以某台路由设备作为主转发设备的终端发送单播免费ARP报文;
收发模块11,还用于向以某台路由设备作为主转发设备的终端发送单播免费ARP报文。
可选的,收发模块11,还用于向终端信息表中的终端发送ARP请求报文;以及接收终端发送的ARP应答报文;
处理模块13,还用于若在预设时间内收发模块未收到终端发送的ARP应答报文,则从终端信息表中删除终端的管理信息,并将终端信息表发送至虚拟路由设备中的各个备用路由设备。
如图9所示,本发明实施例提供一种备用路由设备,该备用路由设备包括:
收发模块21,用于接收主用路由设备发送的终端信息表;接收终端发送的ARP请求报文,以及向终端发送ARP应答报文;终端信息表中包括终端的管理信息,终端的管理信息包括:终端的MAC地址、IP地址和主转发设备的转发MAC地址;
存储模块22,用于保存收发模块接收的终端信息表;
处理模块23,用于在终端信息表中保存有终端的MAC地址和IP地址,且终端信息表中保存的终端的主转发设备的转发MAC地址为备用路由设备的转发MAC地址的情况下,控制收发模块21向终端发送ARP应答报文,并负责转发来自终端的数据报文。
可选的,收发模块21,还用于接收主用路由设备发送的转发MAC分配表,转发MAC分配表包括:主用路由设备所属的虚拟路由设备中的每台路由设备的转发MAC地址、IP地址和每台路由设备的备转发设备的IP地址;其中,每台路由设备的转发MAC地址和每台路由设备的备转发设备均由主用路由设备分配。
存储模块22,还用于保存转发MAC分配表。
可选的,处理模块23,还用于在转发MAC分配信息表中某台路由设备的备用转发设备的IP地址为备用路由设备的IP地址的情况下,备用路由设备定时检测某台路由设备的状态,若备用路由设备检测到某台路由设备故障,则将某台路由设备的转发MAC地址添加到本地硬件MAC地址表,并控制收发模块21向以某台路由设备作为主转发设备的终端发送单播免费ARP报文;
收发模块21,还用于向以某台路由设备作为主转发设备的终端发送单播免费ARP报文。
可选的,存储模块22,具体用于根据主用路由设备发送的终端信息表更新备用路由设备中原有的终端信息表。
本发明实施例提供的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以通过软件程序、硬件、固件或者其任意组合来实现。当使用软件程序实现时,该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行该计算机指令时,全部或部分地产生按照本发明实施例中的流程或功能。该计算机可以是通用计算机、专用计算机、计算机网络或者其他可编程装置。该计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,该计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))方式或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心传输。该计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包括一个或多个可用介质集成的服务器、数据中心等数据存储设备。该可用介质可以是磁性介质(例如,软盘、磁盘、磁带)、光介质(例如,数字视频光盘(digital video disc,DVD))、或者半导体介质(例如固态硬盘(solid statedrives,SSD))等。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。