发明内容
本发明的目的在于提供一种实现虚拟路由冗余协议VRRP负载分担的方法及其装置,以实现在不对现有VRRP协议进行改动的前提下,实现VRRP备份组负载分担,提高VRRP备份组的资源利用率。为此,本发明采用如下技术方案:
一种实现虚拟路由冗余协议VRRP负载分担的方法,应用于VRRP组网, VRRP备份组中各路由器互不相连,二层交换机分别与所述VRRP备份组中的各路由器连接,且所述二层交换机阻断所述VRRP备份组中各路由器之间的VRRP报文交互,该方法包括:
所述二层交换机接收所述路由器发送的VRRP通告报文,并根据该VRRP通告报文维护虚MAC表项;所述虚MAC表项中记录有所述二层交换机接收到的VRRP通告报文中携带的虚MAC地址与接收到该VRRP通告报文的端口的对应关系;
当所述二层交换机接收到目的MAC地址与所述虚MAC表项中记录的MAC地址匹配的报文时,所述二层交换机将所述目的MAC地址对应的端口中的一个端口确定为所述报文的出端口,并将所述报文从该出端口转发给对应的路由器。
其中,所述二层交换机根据VRRP通告报文维护虚MAC表项,包括:
所述二层交换机根据该VRRP通告报文中携带的虚MAC地址查询所述虚MAC表项;
当所述虚MAC表项中未记录有所述虚MAC地址对应的表项时,所述二层交换机建立所述虚MAC地址对应的表项,并将接收到该VRRP通告报文的端口记录到所述虚MAC地址对应的表项中;或,当所述虚MAC表项中记录有所述虚MAC地址对应的表项,但该表项中记录的端口不包含接收到所述VRRP通告报文的端口时,所述二层交换机将接收到所述VRRP通告报文的端口记录到所述虚MAC地址对应的表项中。
其中,该方法还包括:
所述虚MAC表项中记录的对应关系中未接收到VRRP通告报文的端口持续时长超过阈值时,删除相应的虚MAC表项中的该端口。
其中,所述二层交换机将虚MAC表项中对应于同一个虚MAC地址的各端口加入到同一个二层聚合口;
所述二层交换机将所述目的MAC地址对应的端口中的一个端口确定为所述报文的出端口,并将所述报文从该出端口转发给对应的路由器,具体为:
所述二层交换机通过所述目的MAC地址对应的二层聚合口将所述报文转发给对应的路由器。
其中,所述二层交换机将所述目的MAC地址对应的端口中的一个端口确定为所述报文的出端口,并将所述报文从该出端口转发给对应的路由器,具体为:
所述二层交换机根据预先配置的访问控制列表ACL 规则对所述报文进行哈希运算,并根据哈希运算结果将所述目的MAC地址对应的端口中的一个端口确定为所述报文的出端口,并将所述报文从该出端口转发给对应的路由器。
其中,该方法还包括:
当所述二层交换机接收到客户端发送的目的IP地址为虚IP地址的地址解析协议ARP请求报文时,所述二层交换机终止该ARP请求报文,并确定所述目的IP地址对应的虚MAC地址,将所述目的IP地址与该虚MAC地址的对应关系携带在ARP应答报文中返回给所述客户端。
其中,所述二层交换机接收所述路由器发送的VRRP通告报文,并根据该VRRP通告报文维护虚MAC表项,具体为:
当所述二层交换机接收到所述VRRP通告报文的端口为预先配置的可靠端口时,所述二层交换机根据接收到的VRRP通告报文维护虚MAC表项。
一种网络设备,作为二层交换机应用于虚拟路由冗余协议VRRP组网, VRRP备份组中各路由器互不相连,该网络设备分别与所述VRRP备份组中的各路由器连接,且网络设备阻断所述VRRP备份组中各路由器之间的VRRP报文交互,该网络设备包括:
第一接收模块,用于接收所述路由器发送的VRRP通告报文;
维护模块,用于根据所述VRRP通告报文维护虚MAC表项,所述虚MAC表项中记录有所述第一接收模块接收到的VRRP通告报文中携带的虚MAC地址与接收到该VRRP通告报文的端口的对应关系;
第二接收模块,用于接收客户端设备发送的报文;
第一发送模块,用于当所述第二接收模块接收到目的MAC地址与所述虚MAC表项中记录的MAC地址匹配的报文时,将所述目的MAC地址对应的端口中的一个端口确定为所述报文的出端口,并将所述报文从该出端口转发给对应的路由器。
其中,所述维护模块具体用于,根据所述VRRP通告报文中携带的虚MAC地址查询所述虚MAC表项;当所述虚MAC表项中未记录有所述虚MAC地址对应的表项时,建立所述虚MAC地址对应的表项,并将接收到该VRRP通告报文的端口记录到所述虚MAC地址对应的表项中;或,当所述虚MAC表项中记录有所述虚MAC地址对应的表项,但该表项中记录的端口不包含接收到所述VRRP通告报文的端口时,将接收到所述VRRP通告报文的端口记录到所述虚MAC地址对应的表项中。
其中,所述维护模块还用于,当所述虚MAC表项中记录的对应关系中未接收到VRRP通告报文的端口持续时长超过阈值时,删除相应的虚MAC表项中的该端口。
其中,所述网络设备将虚MAC表项中对应于同一个虚MAC地址的各端口加入到同一个二层聚合口;
所述第一发送模块具体用于,通过所述目的MAC地址对应的二层聚合口将所述报文转发给对应的路由器。
其中,所述第一发送模块具体用于,根据预先配置的访问控制列表ACL 规则对所述报文进行哈希运算,并根据哈希运算结果将所述目的MAC地址对应的端口中的一个端口确定为所述报文的出端口,并将所述报文从该出端口转发给对应的路由器。
其中,该网络设备还包括:
第二发送模块,用于当所述第二接收模块接收到客户端发送的目的IP地址为虚IP地址的地址解析协议ARP请求报文时,终止该ARP请求报文,并确定所述目的IP地址对应的虚MAC地址,将所述目的IP地址与该虚MAC地址的对应关系携带在ARP应答报文中返回给所述客户端。
其中,所述维护模块具体用于,当所述第一接收模块接收到所述VRRP通告报文的端口为预先配置的可靠端口时,根据接收到的VRRP通告报文维护虚MAC表项。
本发明上述实施例中,二层交换机接收路由器发送的VRRP通告报文,并根据该VRRP通告报文维护虚MAC表项,该虚MAC表项中记录有二层交换机接收到的VRRP通告报文中携带的虚MAC地址与接收到该VRRP通告报文的端口的对应关系;当VRRP接收到目的MAC地址与自身虚MAC表项中记录的虚MAC地址匹配的报文时,二层交换机将该目的MAC地址对应的端口中的一个端口确定为该报文的出端口,并将该报文从该出端口转发给对应的路由器,在不对现有VRRP协议进行改动的前提下,实现了VRRP备份组的负载分担,提高了VRRP备份组的资源利用率,并保证了方案使用的兼容性。
具体实施方式
针对现有技术中存在的上述问题,本发明实施例提供了一种实现虚拟路由冗余协议VRRP负载分担的技术方案,应用于VRRP组网。在该技术方案中,二层交换机接收路由器发送的VRRP通告报文,并根据该VRRP通告报文维护虚MAC表项,该虚MAC表项中记录有二层交换机接收到的VRRP通告报文中携带的虚MAC地址与接收到该VRRP通告报文的端口的对应关系;当VRRP接收到目的MAC地址与自身虚MAC表项中记录的虚MAC地址匹配的报文时,二层交换机将该目的MAC地址对应的端口中的一个端口确定为该报文的出端口,并将该报文从该出端口转发给对应的路由器。
其中,在本发明实施例中,VRRP备份组中各路由器互不相连,二层交换机阻断了同一VRRP备份组中各路由器之间的报文转发,使VRRP备份组中各路由器均作为Master路由器,并周期性的发送VRRP通告报文;二层交换机根据接收到的VRRP通告报文维护虚MAC表项,并当接收到需要通过VRRP备份组中的路由器转发的报文时,根据预设规则确定该报文的出端口,并将该报文发送给该出端口对应的路由器,由该路由器对报文进行转发,在不对现有VRRP协议进行改动的前提下,实现了VRRP备份组的负载分担,提高了VRRP备份组的资源利用率,并保证了方案使用的兼容性。
下面将结合本发明的实施例中的附图,对本发明的实施例中的技术方案进行清楚、完整的描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本发明的实施例保护的范围。
参见图1,为本发明实施例提供的一种VRRP组网的架构示意图。其中,VRRP备份组中的各路由器(在该实施例中以VRRP备份组中包含两个路由器为例)互不相连,二层交换机分别与VRRP备份组中各路由器连接。
在该VRRP组网中,由于二层交换机阻断了VRRP备份组中各路由器之间的报文转发,VRRP备份组中各路由器接收不到其他路由器发送的VRRP通告报文,无法感知其他路由器的存在,备份组中的各路由器均会升级为Master路由器,并周期性的发送VRPP通告报文。
基于上述VRRP组网,本发明实施例提供的实现VRRP负载分担的方法流程可以如图2所示。
参见图2,为本发明实施例提供的一种实现VRRP负载分担的方法的流程示意图,可以包括以下步骤:
步骤201、二层交换机接收路由器发送的VRRP通告报文,并根据该VRRP通告报文维护虚MAC表项。
具体的,在本发明实施例中,二层交换机可以在MAC地址表(即二层转发表)中添加虚MAC表项,该虚MAC表项中记录有接收到的VRRP通告报文中携带的虚MAC地址与接收到该VRRP通告报文的端口的对应关系。其中,在虚MAC表项中,一个MAC地址可以对应多个端口,这些端口分别连接同属于一个VRRP备份组的各路由器。
二层交换机接收到VRRP通告报文后,可以根据该VRRP通告报文中携带的虚MAC地址查询虚MAC表项,以查询虚MAC表项中是否记录有该虚MAC地址以及接收到该VRRP通告报文的端口的对应关系,并当虚MAC表项中未记录该虚MAC对应的表项时,二层交换机建立该虚MAC地址对应的表项,并将接收到该VRRP通告报文的端口记录到该虚MAC地址对应的表项中;或,当虚MAC表项中记录有该虚MAC地址对应的表项,但该表项中记录的端口不包含接收到该VRRP通告报文的端口时,二层交换机将接收到该VRRP通告报文的端口的对应关系记录到该虚MAC地址对应的表项中。
进一步地,当VRRP备份组中某个路由器出现故障时,它就无法继续发送VRRP通告报文。二层交换机如果在某个端口未接收到VRRP通告报文的持续时长超过阈值,则可以删除虚MAC表项中记录的该端口与相应的MAC地址的对应关系。优选地,该阈值可以设定为3倍的VRRP通告报文的发送周期(3倍的VRRP通告报文发送周期内未接收到VRRP通告报文为VRRP协议规定的Backup路由器升级为Master路由器的条件)。
当VRRP备份组中的路由器从故障中恢复时,它又可以继续发送VRRP通告报文。当交换机接收到该路由器发送的VRRP通告报文时,将VRRP通告报文的源MAC地址与接收到该VRRP通告报文的端口的对应关系记录到虚MAC表项中。
需要注意的是,在本发明实施例提供的技术方案中,虚MAC表项并不一定需要添加在MAC地址表中,也可以单独建立并存储,具体实现流程在此不再赘述。
步骤202、当二层交换机接收到目的MAC地址与虚MAC表项中记录的MAC地址匹配的报文时,二层交换机将该目的MAC地址对应的端口中的一个端口确定为该报文的出端口,并将该报文从该出端口转发给对应的路由器。
具体的,二层交换机接收到客户端发送的报文后,根据该报文的目的MAC地址查询虚MAC表项,以确定虚MAC表项中是否记录有该目的MAC地址对应的表项,并当虚MAC表项中记录有该目的MAC地址记录的表项时,确定该目的MAC地址与虚MAC表项中记录的MAC地址匹配。
当二层交换机确定接收到的报文的目的MAC地址与虚MAC地址匹配时,二层交换机可以根据该目的MAC地址以及虚MAC表项确定该目的MAC地址对应的端口,将该目的MAC地址对应的端口中的一个端口确定为报文的出端口,并报文从该出端口转发给对应的路由器。
其中,在本发明实施例中,将目的MAC地址对应的端口中的一个端口确定为报文的出端口,并将报文从该出端口转发给对应的路由器的实现方式,可以至少包括以下几种:
方式一、二层交换机将虚MAC表中对应同一虚MAC地址的各端口加入到同一个二层聚合口,利用二层聚合口天然的负载分担特性实现流量的分发。
具体的,当二层交换机维护虚MAC表项时,将对应同一虚MAC地址的各端口加入到同一个二层聚合口;二层交换机接收到目的MAC地址与虚MAC表项中记录的MAC地址匹配的报文后,将该报文通过该目的MAC地址对应的二层聚合口转发给对应的路由器。其中,通过二层聚合口转发报文时如何实现负载分担在此不再赘述。
进一步地,当有新端口被记录到虚MAC表项时,二层交换机把该端口加入到相应的二层聚合口;当端口从虚MAC表项中删除时,二层交换机从相应的二层聚合口中删除该端口;二层交换机对应虚MAC表项创建的二层聚合口中各成员(端口)均为选中状态,均可以参与流量的转发。
方式二、二层交换机根据预先配置的ACL(Access Control List,访问控制列表)规则对该报文进行哈希运算,并根据希运算结果将目的MAC地址对应的端口中的一个端口确定为报文的出端口,并将报文从该出端口转发给对应的路由器。其中,二层交换机对虚MAC表项中对应同一虚MAC地址的各端口进行编号。
具体的,二层交换机接收到目的MAC地址与虚MAC表项中记录的虚MAC地址匹配的报文后,可以读取该报文的源IP地址、目的IP地址、源端口、目的端口和协议号字段;二层交换机将读取到的各字段的值相加,将得到的结果对虚MAC表项中对应该目的MAC地址的端口的总数取余,并将虚MAC表项中对应该目的MAC地址的各端口中,端口编号与取余结果一致的端口确定为报文的出端口。
其中,当虚MAC表项中的对应同一虚MAC地址的端口数发生变化时,需要对变化后的端口重新编号,并对对应的ACL规则进行相应的调整,其具体实现在此不再赘述。
需要注意的是,上述通过对报文携带的5个特征字段进行哈希运算确定报文的出端口是为了在实现负载均衡的同时,保证同一客户端多次发送的上述5个特征字段相同的报文能被定位到同一出端口,保证客户端与路由器报文交换的准确性和连贯性。因此,在本发明实施例中,在能够达到上述目的的前提下,也可以仅对上述5个特征字段中的部分特征字段或其他特征字段进行哈希运算以确定报文的出端口,其具体实现在此不再赘述。
在现有VRRP组网中,二层交换机接收到客户端发送的目的IP地址为虚IP地址的ARP(Address Resolution Protocol,地址解析协议)请求报文后,会将该ARP请求报文向对应的VRRP备份组中各路由器进行广播,由VRRP备份组中的Master路由器返回ARP应答报文。而在本发明实施例提供的技术方案中,由于VRRP备份组中各路由器均为Master路由器,若仍采用现有技术中的ARP报文交互方式,则VRRP备份组中的各路由器均会返回ARP应答报文,从而造成资源浪费。因此,在本发明实施例中,当二层交换机接收到客户端发送的目的IP地址为虚IP地址的ARP请求报文时,二层交换机终止该ARP请求报文(即不再将该ARP请求报文进行转发),并根据该目的IP确定对应的虚MAC地址,将该目的IP地址与虚MAC地址的对应的关系携带在ARP应答报文中返回给该客户端。
进一步地,为了避免攻击者冒充VRRP备份组中的路由器加入虚MAC表项导致流量丢失,在本发明实施例中,可以将二层交换机与可靠路由器连接的端口设置为信任端口,二层交换机接收到VRRP通告报文时,只有当接收到该VRRP通告报文的端口为信任端口时,才将该端口与相应虚MAC地址的对应关系记录到虚MAC表项中,提高了VRRP组网的安全性。
进一步地,在本发明实施例中,二层交换机根据接收到的VRRP通告报文维护虚MAC表项时,还需要对VRRP备份组的一致性进行检测。具体的,二层交换机通过分析VRRP通告报文中的相应字段,可以确定不同路由器发送的VRRP通告报文对应的VRRP版本是否一致、VRRP通告报文发送周期是否相同、VRRP通告报文中的虚IP地址是否一致、是否认证通过等。若二层交换机通过分析某路由器发送的VRRP通告报文发现,该VRRP通告报文携带的虚MAC地址与虚MAC表项中记录的某虚MAC地址匹配,但与该虚MAC表项中记录的虚MAC地址对应的VRRP备份组相比,VRRP通告报文对应的VRRP版本不一致、VRRP通告报文发送周期不相同、VRRP通告报文中的虚IP地址不一致、或/和认证不通过时,二层交换机确定该路由器不属于虚MAC表项中记录的上述虚MAC地址对应的VRRP备份组,则不将接收到该VRRP通告报文的端口记录到虚MAC表项中。
下面结合具体的应用场景对本发明实施例提供的技术方案进行更加详细的描述。在该实施例中,以图1所示的VRRP组网架构图为具体应用场景的架构示意图。
参见图3,为该实施例提供的一种VRRP配置示意图,其中,路由器1和路由器2分别与二层交换机的Port 1和Port 2连接,路由器1和路由器2组成VRRP备份组1,虚IP地址为1.0.0.1,虚MAC地址为0000-5e00-0101。二层交换机中维护的对应VRRP备份组1的虚MAC表项可以如表1所示:
表1
其中,MAC-Address表示VRPP备份组的虚MAC地址,Port-Number表示对应的端口数量,Port-List表示对应的端口列表。
在该实施例中,二层交换机将虚MAC地址0000-5e00-0101对应的端口(即Port 1和Port 2)加入到二层聚合口S。
当二层交换机接收到目的MAC地址为0000-5e00-0101的报文时,二层交换机根据目的MAC地址0000-5e00-0101查询虚MAC表项,确定与虚MAC地址0000-5e00-0101对应的端口包括Port 1和Port 2,且Port 1和Port 2属于二层聚合口S,则二层交换机将该报文通告二层聚合口S转发给对应的路由器。
通过以上描述可以看出,在本发明实施例提供的技术方案中,VRRP备份组中各路由器互不相连;二层交换机接收路由器发送的VRRP通告报文,并根据该VRRP通告报文维护虚MAC表项,该虚MAC表项中记录有二层交换机接收到的VRRP通告报文中携带的虚MAC地址与接收到该VRRP通告报文的端口的对应关系;当VRRP接收到目的MAC地址与自身虚MAC表项中记录的虚MAC地址匹配的报文时,二层交换机将该目的MAC地址对应的端口中的一个端口确定为该报文的出端口,并将该报文从该出端口转发给对应的路由器,在不对现有VRRP协议进行改动的前提下,实现了VRRP备份组的负载分担,提高了VRRP备份组的资源利用率,并保证了方案使用的兼容性。
基于上述方法实施例系统的发明构思,本发明实施例还提供了一种网络设备,可以作为二层交换机应用于上述方法实施例。
如图4所示,为本发明实施例提供的一种网络设备的结构示意图,该网络设备可以作为二层交换机应用于VRRP组网,该VRRP组网中,VRRP备份组中各路由器互不相连,该网络设备分别与所述VRRP备份组中的各路由器连接,且网络设备阻断所述VRRP备份组中各路由器之间的VRRP报文交互,该网络设备可以包括:
第一接收模块41,用于接收所述路由器发送的VRRP通告报文;
维护模块42,用于根据所述VRRP通告报文维护虚MAC表项,所述虚MAC表项中记录有所述第一接收模块41接收到的VRRP通告报文中携带的虚MAC地址与接收到该VRRP通告报文的端口的对应关系;
第二接收模块43,用于接收客户端设备发送的报文;
第一发送模块44,用于当所述第二接收模块43接收到目的MAC地址与所述虚MAC表项中记录的MAC地址匹配的报文时,将所述目的MAC地址对应的端口中的一个端口确定为所述报文的出端口,并将所述报文从该出端口转发给对应的路由器。
其中,所述维护模块42具体用于,根据所述VRRP通告报文中携带的虚MAC地址查询所述虚MAC表项;当所述虚MAC表项中未记录有所述虚MAC地址对应的表项时,建立所述虚MAC地址对应的表项,并将接收到该VRRP通告报文的端口记录到所述虚MAC地址对应的表项中;或,当所述虚MAC表项中记录有所述虚MAC地址对应的表项,但该表项中记录的端口不包含接收到所述VRRP通告报文的端口时,将接收到所述VRRP通告报文的端口记录到所述虚MAC地址对应的表项中。
其中,所述维护模块42还用于,当所述虚MAC表项中记录的对应关系中未接收到VRRP通告报文的端口持续时长超过阈值时,删除相应的虚MAC表项中的该端口。
其中,所述网络设备将虚MAC表项中对应于同一个虚MAC地址的各端口加入到同一个二层聚合口;
所述第一发送模块44具体用于,通过所述目的MAC地址对应的二层聚合口将所述报文转发给对应的路由器。
其中,所述第一发送模块44具体用于,根据预先配置的访问控制列表ACL 规则对所述报文进行哈希运算,并根据哈希运算结果将所述目的MAC地址对应的端口中的一个端口确定为所述报文的出端口,并将所述报文从该出端口转发给对应的路由器。
其中,该网络设备还包括:
第二发送模块45,用于当所述第二接收模块43接收到客户端发送的目的IP地址为虚IP地址的地址解析协议ARP请求报文时,终止该ARP请求报文,并确定所述目的IP地址对应的虚MAC地址,将所述目的IP地址与该虚MAC地址的对应关系携带在ARP应答报文中返回给所述客户端。
其中,所述维护模块42具体用于,当所述第一接收模块41接收到所述VRRP通告报文的端口为预先配置的可靠端口时,根据接收到的VRRP通告报文维护虚MAC表项。
本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台终端设备(可以是手机,个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。