掌桥专利:专业的专利平台
掌桥专利
首页

一种堆叠系统中MAC地址的同步方法、装置、设备及介质

文献发布时间:2023-06-19 13:48:08


一种堆叠系统中MAC地址的同步方法、装置、设备及介质

技术领域

本说明书涉及交换机通信领域,尤其涉及一种堆叠系统中MAC地址的同步方法、装置、设备及介质。

背景技术

堆叠技术是一种将多台交换机作为逻辑交换实体运行的交换集群框架技术。通过堆叠口将多台支持堆叠的交换机连接成一个链式或者环式的拓扑结构,组成一个堆叠系统,使其在逻辑上如同一台设备。堆叠系统中的每台设备统称为成员设备,成员设备根据功能可分为3种不同的角色:主控交换机、备交换机和从交换机。

由于堆叠系统的设备在逻辑上等效于一台设备,在堆叠系统内的各个设备为了保证流量的正常转发,每个成员设备都应该有相同的MAC地址表,也就是在堆叠系统中的MAC地址的同步。目前堆叠系统中MAC地址的同步过程中如果堆叠系统内某台设备的本地MAC变化信息,则CPU会发送大量的消息给堆叠系统内的其他成员设备,消息发起端需要CPU组装MAC同步数据包,消息接收端需要解析该数据包,导致CPU消耗过度,当大量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表项存储到所述主控设备对应的本地Redis数据库中。

可选地,本说明书一个或多个实施例中,所述实现所述堆叠系统在所述第一预设时间的MAC地址同步之后,所述方法还包括:

在第二预设时间内,所述非主控设备根据Redis数据库的同步机制,将所述本地Redis数据库中存储的MAC表项全量同步到所述非主控设备对应的Redis数据库中;

将所述非主控设备对应的Redis数据库中的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地址信息的成员设备。

可选地,本说明书一个或多个实施例中,所述在第二预设时间内,所述非主控设备根据Redis数据库的同步机制,将所述本地Redis数据库中存储的MAC表项全量同步到所述非主控设备对应的Redis数据库中之前,所述方法还包括:

根据预设堆叠协议对所述堆叠系统的组成设备进行角色选举,以获得选举结果;

将所述选举结果发送到所述堆叠系统中的各设备中,以使所述各设备根据所述角色为对应的Redis数据库设置角色;其中,所述主控设备对应的Redis数据库为主盘,所述成员设备与所述备用设备对应的Redis数据库为从盘;

所述主盘中的MAC表项同步到所述从盘中,以实现Redis数据库中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地址的同步设备,包括:

至少一个处理器;以及,

与所述至少一个处理器通信连接的存储器;其中,

所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:

在第一预设时间内,第一设备对第一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地址信息和所述第二MAC地址信息中的一个或多个,所述非主控设备为组成所述堆叠系统的备用设备和成员设备。

本说明书实施例采用的上述至少一个技术方案能够达到以下有益效果:

在第一预设时间内,成员设备的本地芯片上传MAC地址变化信息之后,成员设备先进行本地MAC地址学习后再发送到主控设备,解决了传统方式中大量的MAC地址变化信息时,消息全部上传主控设备再同步到其他设备造成的同步时延的问题。且经过MAC表项的同步避免了消息发起端打包MAC同步数据包以及消息接收端解析数据包时,CPU的过度消耗问题。

附图说明

为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。在附图中:

图1为本说明书实施例提供的一种堆叠系统中MAC地址的同步方法流程图;

图2为本说明书实施例提供的一种应用场景下堆叠系统的结构示意图;

图3为本说明书实施例提供的一种第一预设时间内MAC地址的同步流程图;

图4为本说明书实施例提供的一种第二预设时间内MAC地址的同步流程图;

图5为本说明书实施例提供的一种堆叠系统中MAC地址的同步装置的结构示意图;

图6为本说明书实施例提供的一种堆叠系统中MAC地址的同步设备的结构示意图;

图7为本说明书实施例提供的一种非易失性存储介质。

具体实施方式

本说明书实施例提供一种堆叠系统中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地址快速变化时,消息全部上传主控设备进行学习再同步到其他设备所造成的同步时延的问题。而通过非主控设备基于Redis同步机制实现的定时全量同步,解决了传统方式中部分成员设备同步失败所导致的成员设备间MAC表项不一致的问题。此外,基于Redis的同步也解决了新上线设备与其他设备MAC地址信息不同步的问题。

为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。

如图1所示,本说明书实施例提供了一种堆叠系统中MAC地址的同步方法的流程图。

由图1可知,方法包括:

S101:在第一预设时间内,第一设备对第一MAC地址信息进行本地MAC地址学习;其中,所述第一Mac地址信息为所述第一设备的本地芯片上报的MAC地址信息。

如图2所示,为本说明书实施例提供的一种堆叠系统的结构示意图,堆叠系统是将多台交换机作为一个逻辑交换实体运行的交换集群框架技术。通过堆叠口将多台支持堆叠的交换机连接成一个链式或者环式的拓扑结构,组成一个堆叠系统,使得多台交换机在逻辑上等效为一台设备,该等效过程如图2所示,堆叠系统中的交换机Active、交换机Standby、交换机Member等效于交换机SCF。此外,在堆叠系统中的每台设备统称为成员设备,而成员设备根据功能可以分为3种不同的角色:主控设备、备用设备、成员设备。一个堆叠系统中只有一台主控设备和一台备用设备但可以有多台成员设备,其中主控设备负责管理整个堆叠系统,备用设备在主控设备故障后重启时,接替原有的主控设备成为新的主控设备。

因为,堆叠系统的设备在逻辑上等效为一台设备,所以在堆叠系统内的各个设备为了保证流量的正常转发,需要保证堆叠系统中各设备MAC地址的同步,避免报文在堆叠系统中进行泛洪。本说明书实施例中,设置第一预设时间进行MAC表项的逐条下发同步,以实现堆叠系统中各设备的MAC地址同步。其中,当堆叠系统中的某台成员设备收到本地芯片上报的第一MAC地址信息后,首先进行本地MAC地址的学习,并在该设备内生成该第一MAC地址信息所对应的MAC表项。

其中,需要说明的是第一预设时间内进行MAC地址的逐条学习下发与第二预设时间的全量同步操作并列执行,以保证堆叠系统中各成员设备间MAC表项的一致性。通过,第二预设时间基于全量定时器设定的时间间隔进行全量下发,辅助第一预设时间内主控设备对MAC地址进行逐条下发的过程,提高了堆叠系统的可靠性。

S102:所述第一设备将所述第一MAC地址信息上报到堆叠系统中的主控设备;其中,所述第一设备为所述堆叠系统中的一个或多个成员设备。

结合上述步骤S101中记载的内容,本说明书实施例中是在第一设备对第一MAC地址进行本地MAC地址学习之后,再将第一MAC地址上报主控设备,该过程解决了在大量的MAC地址信息变化时,消息全部上传主控设备进行学习后再下发到堆叠系统中的其他设备所造成的同步时延问题。

S103:所述主控设备获取的本地芯片上报的第二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表项,且确定所述MAC地址信息发生更新,则将所述MAC地址下发。

如图3所示,为本说明书实施例提供的一种第一预设时间内MAC地址的同步流程图。由图3可知,在成员设备和备用设备进行本地MAC地址学习后,将第一MAC地址信息根据上传的时间顺序依次加入到了主控设备的消息队列中等待主控设备进行本地MAC地址的学习。其中,需要说明的是主控设备获取到本地芯片上报的第二MAC地址信息后,与第一MAC地址信息一样需要根据上报时间顺序加入消息队列中等待处理。例如:成员设备1上传了1条第一MAC地址信息且上传时间顺序先于主控设备的本地芯片上传第二MAC地址信息的时间顺序,则主控设备先对消息队列中成员设备1上传的第一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地址信息不下发,那么需要将上述步骤101中,第一设备进行本地MAC地址学习时产生的,与第一MAC地址信息相对应的MAC表项,在第一设备已存储的表项中删除该MAC表项。

S104:若所述主控设备根据所述学习结果确定对第三MAC地址信息进行下发,则基于预设规则依次将所述第三MAC地址信息对应的MAC表项下发到非主控设备的芯片,以实现所述堆叠系统在所述第一预设时间的MAC地址同步;其中,所述第三MAC地址信息为所述第一MAC地址信息和所述第二MAC地址信息中的一个或多个,所述非主控设备为组成所述堆叠系统的备用设备和成员设备。

在本说明书一个或多个实施例中,所述基于预设规则将所述第三MAC地址信息对应的MAC表项下发到非主控设备的芯片,具体包括:

若所述第三MAC地址信息为主控设备的本地芯片上报的第二MAC地址信息,则所述主控设备将所述第二MAC地址信息对应的MAC表项下发到所述堆叠系统的成员设备与备用设备中;

若所述第三MAC地址信息为所述第一MAC地址信息,则所述主控设备将所述第一MAC地址信息对应的MAC表项下发到第二设备中;其中,所述第二设备不包括所述主控设备和上报所述第一MAC地址信息的成员设备。

如果第三MAC地址信息是主控设备的本地芯片所上报的第二MAC地址,那么主控设备在进行本地MAC地址学习后,先将第二MAC地址信息所对应的MAC表项存储到主控设备的本地数据库中,同时将该MAC表项同步到堆叠系统中的各个成员设备和备用设备内。如图3所示,各成员设备收到消息后执行下远端MAC地址下发。如果该MAC地址信息需要删除,则会将所述MAC地址对应的MAC表项在主控设备中进行删除。

如果第三MAC地址信息是主控设备的本地芯片所上报的第一MAC地址信息,那么主控设备在进行本地MAC地址学习,先将第一MAC地址信息所对应的MAC表项存储到本地数据库中,再对该第一MAC地址信息所对应的第一设备下发本地MAC表项的下发,对除第一设备之外的其他设备进行远端MAC表项的下发。如果该MAC地址信息需要删除,则主控设备对该MAC地址对应的第一设备下发删除指令,以将第一设备已经学习到的第一MAC地址对应的表项进行删除。

其中需要说明的是,用户需要对主控设备中的某个MAC表项进行删除时,需要将消息发送给堆叠系统中的各成员设备与备用设备,应将该MAC表项进行删除,保证堆叠系统中各个设备MAC地址的一致性。

接上述步骤S102中的例子进行说明,依次对消息队列中的第一MAC地址信息与第二MAC地址信息进行同步。例如:如果成员设备1接收到本地芯片上报的第一MAC地址信息的学习事件,则先在成员设备1的中央处理器中进行本地MAC地址的学习获得MAC表项。同时将该第一MAC地址信息上传到主控设备的处理器中进行逻辑判断,如果主控设备经过逻辑判断确定添加该MAC表项则主控设备将第一MAC地址信息对应的MAC表项添加到Redis数据库中,并将该MAC表项下发到除成员设备1之外的其他成员设备当中。如果主控设备判定第一MAC地址信息不能下发则将删除信息发送到成员设备1使得成员设备1删除学习到的MAC表项。此外,如果第一MAC地址信息的学习事件如果为老化删除事件,则成员设备1的本地芯片上传老化事件后,中央处理器发送该老化事件的第一MAC地址信息到主控设备,主控设备经过本地MAC地址学习后,先进行本地MAC地址学习,删除主控设备本地Redis数据库中的该MAC表项,下发本地芯片删除,并将删除消息发送到其他设备以完成堆叠系统中MAC地址的老化删除同步。

如果主控设备接收到第二MAC地址信息为添加同步事件,则经过逻辑处理后判断添加该MAC表项,则将该表象存入本地的Redis数据库中和上层的逻辑MAC表中,然后将该表项下发到堆叠系统中的非主控设备中,非主控设备接收到该MAC表项的下发消息后,不经过本地的逻辑处理直接下发远端MAC表项。如果主控设备接收到第二MAC地址信息为老化删除事件,则主控设备经过本地MAC地址学习之后,如果确定该第二MAC地址信息对应的MAC表项可以删除,则先删除主控设备上层逻辑MAC表项,并删除本地Redis数据库中的该表项,同时将消息发送到堆叠系统中的其他成员设备,以使其他成员设备下发芯片进行删除,完成堆叠系统中MAC地址的同步。

在本说明书一个或多个实施例中,所述主控设备根据所述学习结果确定对第三MAC地址信息进行下发之后,所述方法还包括:

所述主控设备将所述第三MAC地址信息所对应的MAC表项存储到所述主控设备对应的本地Redis数据库中。

在本说明书一个或多个实施例中,所述实现所述堆叠系统在所述第一预设时间的MAC地址同步之后,所述方法还包括:

在第二预设时间内,所述非主控设备根据Redis数据库的同步机制,读取所述主控设备的本地Redis数据库在所述第一预设时间内写入的第三MAC地址信息所对应MAC表项,以将所述MAC表项全量同步到所述非主控设备对应的Redis数据库中;

将所述非主控设备对应的Redis数据库中的MAC表项下发芯片,使所述非主控设备进行MAC地址的全量同步,以实现所述堆叠系统在所述第二预设时间的MAC地址同步。

在本说明书一个或多个实施例中,所述在第二预设时间内,所述非主控设备根据Redis数据库的同步机制,将所述本地Redis数据库中存储的MAC表项全量同步到所述非主控设备对应的Redis数据库中之前,所述方法还包括:

根据预设堆叠协议对所述堆叠系统的组成设备进行角色选举,以获得选举结果;

将所述选举结果发送到所述堆叠系统中的各设备中,以使所述各设备根据所述角色为对应的Redis数据库设置角色;其中,所述主控设备对应的Redis数据库为主盘,所述成员设备与所述备用设备对应的Redis数据库为从盘;

所述主盘中的MAC表项同步到所述从盘中,以实现Redis数据库中MAC表项的同步。

在预设第一时间内,堆叠系统中各设备根据上述步骤S101-S104中的同步过程,进行MAC地址的逐条同步。为了避免堆叠系统中的通信机制出错时,使得某成员设备在预设第一时间内进行逐条同步时,未接收到主控设备的信息所导致的成员设备间MAC地址表项不一致的问题。如图4所示,本说明书实施例提供了一种预设第二时间内MAC地址的同步流程图。由图4可知,主控设备的本地Redis数据库将数据信息同步到了堆叠系统中的其他成员设备中。

本说明书实施例利用Redis数据库的同步机制,在主控设备根据学习结果确定对第三Mac地址信息进行下发之后,先将第三MAC地址信息所对应的MAC表项存储到主控设备所对应的本地Redis数据库中。在预设第一时间超时即全量同步定时器超时后,非主控设备根据Redis数据库的同步机制把主控设备本地Redis数据库中存储的数据,全量同步到非主控设备的Redis数据库中。非主控设备在其对应的Redis数据库中获取所有的MAC表项,下发到非主控设备的芯片中,实现堆叠系统在所述第二预设时间的MAC地址同步。避免了部分成员设备在预设第一时间内同步出错所导致的成员设备间MAC地址表项不一致的问题,提高了堆叠系统中MAC地址同步的可靠性。

其中,需要说明的是,在将MAC表项全量同步到非主控设备之前,需要根据预设堆叠协议对堆叠系统中的各个设备进行角色选举,获得选举的结果。并将选举结果通知到堆叠系统的各个设备中。各设备在接收到拓扑选举的结果之后,采用Redis数据库同步机制,将主控设备的Redis角色设置为主盘master,其他成员设备的Redis角色设置为从盘slave。通过Redis同步机制,主控设备会将本地Redis数据库即主盘,实时同步到其他成员设备的Redis数据库即从盘中,从而保证所有成员设备的Redis数据库内容的一致性。需要进一步说明的是:该同步机制允许主控设备对本地Redis数据库进行写数据的操作,而其他成员设备只能对其本地Redis数据库进行读数据的操作。主控设备只进行Redis数据库的写操作,保证Redis数据库的表项内容与转发芯片的MAC地址信息表项完全一致。而非主控设备在第二预设时间内,从本地的Redis数据库读取所有的MAC地址信息全部下发到本地芯片,从而使所有非主控设备的MAC地址信息与主控信息完全一致。

当堆叠系统中有新设备上线时,主控设备会将本地Redis数据库实时同步到新设备的Redis数据库中,以使新设备将从本地Redis数据库中获取的MAC地址下发到芯片中,实现新设备中MAC地址信息与堆叠系统中各成员设备的实时同步。解决了新上线设备与其他设备中MAC地址不同步的问题。

本说明书上述实施例中,将Redis数据库同步机制应用于堆叠系统的MAC同步,实现了堆叠系统中成员设备可以在第二预设时间中将主控设备的本地Redis数据库中的数据全量同步到其他设备的Redis数据库中,使得其他设备根据将数据库中存储的MAC表项同步到当前设备中,实现了成员设备的定时全量同步以及新设备上线的数据同步过程。此外将第一预设时间内的MAC地址同步与第二预设时间内的MAC地址同步方式相结合,解决了堆叠系统中MAC地址同步时序问题以及不一致的问题,使得堆叠系统的可靠性得到了提高。

如图5所示,本说明书实施例提供了一种堆叠系统中MAC地址的同步装置的结构示意图。

由图5可知,装置包括:

第一学习模块501,用于在第一预设时间内,第一设备对第一MAC地址信息进行本地MAC地址学习;其中,所述第一Mac地址信息为所述第一设备的本地芯片上报的MAC地址信息;

上报模块502,用于所述第一设备将所述第一MAC地址信息上报到堆叠系统中的主控设备;其中,所述第一设备为所述堆叠系统中的一个或多个成员设备;

第二学习模块503,用于所述主控设备获取的本地芯片上报的第二MAC地址信息,并根据所述第一MAC地址信息和所述第二MAC地址信息上报的时间顺序,依次进行本地MAC地址学习,以获得对应的学习结果;

第一下发模块504,用于若所述主控设备根据所述学习结果确定对第三MAC地址信息进行下发,则基于预设规则依次将所述第三MAC地址信息对应的MAC表项下发到非主控设备的芯片,以实现所述堆叠系统在所述第一预设时间的MAC地址同步;其中,所述第三MAC地址信息为所述第一MAC地址信息和所述第二MAC地址信息中的一个或多个,所述非主控设备为组成所述堆叠系统的备用设备和成员设备。

在本说明书一个或多个实施例中,所述装置还包括:存储模块;

所述存储模块用于所述主控设备将所述第三MAC地址信息所对应的MAC表项存储到所述主控设备对应的本地Redis数据库中。

在本说明书一个或多个实施例中,所述装置还包括:全量同步模块、第二下发模块;

所述全量同步模块用于在第二预设时间内,所述非主控设备根据Redis数据库的同步机制,将所述本地Redis数据库中存储的MAC表项全量同步到所述非主控设备对应的Redis数据库中

所述第二下发模块用于将所述非主控设备对应的Redis数据库中的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表项上时,则将所述MAC地址下发;

所述同步模块用于当确定所述MAC地址信息存在所述本地MAC表项,且确定所述MAC地址信息发生更新时,则将所述MAC地址下发。

如图6所示,本说明书实施例提供了一种堆叠系统中MAC地址的同步设备的内部结构示意图。

由图6可知,所述设备包括:

至少一个处理器601;以及,

与所述至少一个处理器601通信连接的存储器602;其中,

所述存储器602存储有可被所述至少一个处理器601执行的指令,所述指令被所述至少一个处理器601执行,以使所述至少一个处理器601能够:

在第一预设时间内,第一设备对第一MAC地址信息进行本地MAC地址学习;其中,所述第一Mac地址信息为所述第一设备的本地芯片上报的MAC地址信息;

所述第一设备将所述第一MAC地址信息上报到堆叠系统中的主控设备;其中,所述第一设备为所述堆叠系统中的一个或多个成员设备;

所述主控设备获取的本地芯片上报的第二MAC地址信息,并根据所述第一MAC地址信息和所述第二MAC地址信息上报的时间顺序,依次进行本地MAC地址学习,以获得对应的学习结果;

若所述主控设备根据所述学习结果确定对第三MAC地址信息进行下发,则基于预设规则依次将所述第三MAC地址信息对应的MAC表项下发到非主控设备的芯片,以实现所述堆叠系统在所述第一预设时间的MAC地址同步;其中,所述第三MAC地址信息为所述第一MAC地址信息和所述第二MAC地址信息中的一个或多个,所述非主控设备为组成所述堆叠系统的备用设备和成员设备。

如图7所示,本说明书实施例提供了一种非易失性存储介质的内部结构示意图。

由图7可知,一种非易失性存储介质,存储有计算机可执行指令701,其特征在于,所述可执行指令701包括:

在第一预设时间内,第一设备对第一MAC地址信息进行本地MAC地址学习;其中,所述第一Mac地址信息为所述第一设备的本地芯片上报的MAC地址信息;

所述第一设备将所述第一MAC地址信息上报到堆叠系统中的主控设备;其中,所述第一设备为所述堆叠系统中的一个或多个成员设备;

所述主控设备获取的本地芯片上报的第二MAC地址信息,并根据所述第一MAC地址信息和所述第二MAC地址信息上报的时间顺序,依次进行本地MAC地址学习,以获得对应的学习结果;

若所述主控设备根据所述学习结果确定对第三MAC地址信息进行下发,则基于预设规则依次将所述第三MAC地址信息对应的MAC表项下发到非主控设备的芯片,以实现所述堆叠系统在所述第一预设时间的MAC地址同步;其中,所述第三MAC地址信息为所述第一MAC地址信息和所述第二MAC地址信息中的一个或多个,所述非主控设备为组成所述堆叠系统的备用设备和成员设备。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、设备、非易失性计算机存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。

以上所述仅为本说明书的一个或多个实施例而已,并不用于限制本说明书。对于本领域技术人员来说,本说明书的一个或多个实施例可以有各种更改和变化。凡在本说明书的一个或多个实施例的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书的权利要求范围之内。

相关技术
  • 一种堆叠系统中MAC地址的同步方法、装置、设备及介质
  • 一种MAC地址同步方法、装置、系统、设备及介质
技术分类

06120113818814