MAC地址的写入方法、设备及计算机可读存储介质与流程

文档序号:16631594发布日期:2019-01-16 06:37阅读:1132来源:国知局
MAC地址的写入方法、设备及计算机可读存储介质与流程

本发明涉及分布式交换机产品领域,尤其涉及一种mac地址的写入方法、设备及计算机可读存储介质。



背景技术:

mac(mediaaccesscontrol或者mediumaccesscontrol)地址,意译为媒体访问控制,或称为物理地址、硬件地址,用来定义网络设备的位置。一般情况下,交换机的mac地址是使用的哈希表进行存储,因此理论上在mac地址达到一定程度的时候,一定会出现mac地址哈希冲突的情况,而一旦出现哈希冲突,则可能导致有些mac地址无法被正确的学习到设备上,从而造成一些问题。

目前普遍的设备在进行mac地址学习和下发时;先学习mac地址,再将mac地址写入芯片mac地址表。其中,写入mac地址表时,会根据mac地址条目的值进行计算,计算一个哈希值,并写入mac地址表相应的哈希桶的位置。但若哈希桶满,则出现哈希冲突,则此刻无法将此mac地址写入芯片mac地址表中。

由此可见,目前的技术中,无法保证mac地址能够在出现哈希冲突的时刻保证被写入mac地址表中,由于mac地址学习和写入的顺序是无法保证的,因此如果在动态mac地址被大量写入的网络环境中,尤其无法保证一些重要的静态mac地址,vrrp(virtualrouterredundancyprotocol,虚拟路由器冗余协议)mac地址,或者组播mac地址等重要mac地址是否可以写成功。

而目前能采用的避免mac地址哈希冲突的方法,一般都要借助其他的表项来进行处理,例如使用acl表项来存储出现哈希冲突之后的mac条目,或者使用芯片的其他tcam表项来存储,这样的方法一方面会导致其他表项资源被占用,另一方面可能会由于其他表项的介入,可能导致转发行为出现异常(例如acl条目优先命中优先转发等),还可能由于其他表项没有老化和漂移等mac地址表的特定属性,可能导致管理上的复杂度大量提升。



技术实现要素:

有鉴于此,本发明的目的在于提供一种mac地址的写入方法、设备及计算机可读存储介质,以解决在mac地址哈希冲突的情况下,因写表失败,导致网络业务出现严重故障的问题。

本发明解决上述技术问题所采用的技术方案如下:

根据本发明的一个方面,提供的一种mac地址的写入方法,包括:

判断下发至芯片的mac地址是否成功写入所述芯片的mac地址表;若否,则

判断所述mac地址是否为预设的重要mac地址;若是,则

计算所述mac地址对应的所述芯片的mac地址的哈希桶的位置;

将所述哈希桶内的第一个动态mac地址替换为所述mac地址。

在一个可能的设计中,所述判断所述mac地址是否为预设的重要mac地址包括以下至少一项:

判断所述mac地址是否为vrrpmac地址;

判断所述mac地址是否为组播mac地址;

判断所述mac地址是否为重要静态mac地址。

在一个可能的设计中,所述计算所述mac地址对应的所述芯片的mac地址的哈希桶的位置包括:

用哈希算法计算所述mac地址的哈希值;

根据所述哈希值查找对应的所述芯片的mac地址表的哈希桶的位置。

在一个可能的设计中,所述将所述哈希桶内的第一个动态mac地址替换为所述mac地址之后,包括:

将被替换的所述第一个动态mac地址写入acl表或tcam表中。

根据本发明的另一个方面的一种设备,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的mac地址的写入程序,所述mac地址的写入程序被所述处理器执行以实现以下步骤:

判断下发至芯片的mac地址是否成功写入所述芯片的mac地址表;若否,则

判断所述mac地址是否为预设的重要mac地址;若是,则

计算所述mac地址对应的所述芯片的mac地址的哈希桶的位置;

将所述哈希桶内的第一个动态mac地址替换为所述mac地址。

在一个可能的设计中,在判断所述mac地址是否为预设的重要mac地址时,所述mac地址的写入程序被所述处理器执行以实现以下至少一项:

判断所述mac地址是否为vrrpmac地址;

判断所述mac地址是否为组播mac地址;

判断所述mac地址是否为重要静态mac地址。

在一个可能的设计中,在计算所述mac地址对应的所述芯片的mac地址的哈希桶的位置时,所述mac地址的写入程序被所述处理器执行以实现:

用哈希算法计算所述mac地址的哈希值;

根据所述哈希值查找对应的所述芯片的mac地址表的哈希桶的位置。

在一个可能的设计中,所述将所述哈希桶内的第一个动态mac地址替换为所述mac地址之后,所述mac地址的写入程序被所述处理器执行以实现:

将被替换的所述第一个动态mac地址写入acl表或tcam表中。

根据本发明的再一个方面,提供的一种计算机可读存储介质,所述计算机可读存储介质上存储有mac地址的写入程序,所述mac地址的写入程序程序被处理器执行时实现本发明实施例提供的mac地址的写入方法的步骤。

本发明实施例的一种mac地址的写入方法、设备及计算机可读存储介质,在出现mac地址哈希冲突的时候,保持预设的重要mac地址可以被写入,而删除并不重要的动态学习的mac地址,从而提高产品的稳定性和可维护性。

附图说明

图1为本发明一实施例的mac地址的写入方法的流程示意图;

图2为本发明另一实施例的mac地址的写入方法的流程示意图;

图3a为本发明实施例的写入mac地址之前的芯片的mac地址表;

图3b为本发明实施例的写入mac地址之后的芯片的mac地址表;

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚、明白,以下结合附图和实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

请参照图1,本发明第一实施例提供的一种mac地址的写入方法,包括:

101、开始。

一般地,在设备将mac地址下发至芯片才会进入mac地址的写入流程;在具体实施时,设备可能需要下发一个mac地址,例如组播mac地址,或静态配置mac地址。此外,设备可能学习到一个mac地址,例如vrrpmac地址;设备需要上报此mac地址学习后,并下发此mac地址到芯片。再者,设备可以同步一个mac地址到其他板卡,例如vrrpmac地址,组播mac地址,或静态配置mac地址,此时,设备需要板卡下发此mac地址到芯片。

102、判断下发至芯片的mac地址是否成功写入所述芯片的mac地址表;若否,则进入步骤103;若是,则进入步骤106。

一般地,若芯片发出出现哈希冲突的资源满的告警,并返回写入失败时,就可以判定下发至芯片的mac地址未成功写入所述芯片的mac地址表。

103、判断所述mac地址是否为预设的重要mac地址;若是,则进入步骤104、若否,则进入步骤106。

该预设的重要mac地址可以根据网络应用自行设定,一般若写入失败则可能导致网络业务出现严重故障的mac地址为重要mac地址。

104、计算所述mac地址对应的所述芯片的mac地址的哈希桶的位置。

105、将所述哈希桶内的第一个动态mac地址替换为所述mac地址。

被替换的第一个动态mac地址可以直接删除,也就是说,找到mac地址对应哈希桶的位置之后,逐条对起哈希桶对应的mac地址条目的位置进行判断,如果此处存储的mac地址条目是一个动态学习的mac地址,则删除该动态学习的mac地址,并将需要写入的重要的mac地址写入此删除的位置。

106、结束。

请参照图2,本发明第二实施例提供的一种mac地址的写入方法,包括:

201、开始。

一般地,在设备将mac地址下发至芯片才会进入mac地址的写入流程;在具体实施时,设备可能需要下发一个mac地址,例如组播mac地址,或静态配置mac地址。此外,设备可能学习到一个mac地址,例如vrrpmac地址;设备需要上报此mac地址学习后,并下发此mac地址到芯片。再者,设备可以同步一个mac地址到其他板卡,例如vrrpmac地址,组播mac地址,或静态配置mac地址,此时,设备需要板卡下发此mac地址到芯片。

202、判断下发至芯片的mac地址是否成功写入所述芯片的mac地址表;若否,则进入步骤203;若是,则进入步骤207。

一般地,若芯片发出出现哈希冲突的资源满的告警,并返回写入失败时,就可以判定下发至芯片的mac地址未成功写入所述芯片的mac地址表。

203、判断所述mac地址是否为预设的重要mac地址;若是,则进入步骤204、若否,则进入步骤207。

该预设的重要mac地址可以根据网络应用自行设定,一般若写入失败则可能导致网络业务出现严重故障的mac地址为重要mac地址。

204、计算所述mac地址对应的所述芯片的mac地址的哈希桶的位置。

205、将所述哈希桶内的第一个动态mac地址替换为所述mac地址。

被替换的第一个动态mac地址可以直接删除,也就是说,找到mac地址对应哈希桶的位置之后,逐条对起哈希桶对应的mac地址条目的位置进行判断,如果此处存储的mac地址条目是一个动态学习的mac地址,则删除该动态学习的mac地址,并将需要写入的重要的mac地址写入此删除的位置。

206、将被替换的所述第一个动态mac地址写入acl表或tcam表中。

在本发明的另一实施中,可以先判断被替换掉的动态学习的mac地址对于网络是否重要,若否,则可以不做任何后续处理。若是,则可以将其写入acl表或者其他tcam表中,亦可保证被替换的mac地址转发不受影响,而此处是否需要占用其余的表项资源,可以由网络的需求来具体确定。

207、结束。

在图1或图2对应的实施例的基础上,本发明第三实施例提供的一种mac地址的写入方法,所述判断所述mac地址是否为预设的重要mac地址包括以下至少一项:

判断所述mac地址是否为vrrpmac地址;

判断所述mac地址是否为组播mac地址;

判断所述mac地址是否为重要静态mac地址。

可见,在本实施例中,预设的重要mac地址包括vrrpmac地址、组播mac地址及重要静态mac地址中的至少一项。

在图1或图2对应的实施例的基础上,所述计算所述mac地址对应的所述芯片的mac地址的哈希桶的位置包括:

用哈希算法计算所述mac地址的哈希值;并根据所述哈希值查找对应的所述芯片的mac地址表的哈希桶的位置。

其中,在对所述mac地址进行哈希计算时,其哈希计算的算法需要与芯片计算mac地址哈希位置的算法保持一致,这样才能确保计算出的哈希桶位置与硬件所计算的哈希桶位置保持一致。用这样的哈希算法算出此mac地址的哈希值,并找到其对应的硬件mac地址的哈希桶的位置。

下面辅以具体的实例进一步说明本发明的实施例;

当交换机需要下发一个组播mac地址01:00:5e:00:00:01;或需要学习一个vrrpmac地址00:00:5e:00:00:01;或需要同步一个静态mac地址00:11:22:33:44:55时,交换机都需要将该mac地址下方到芯片的mac地址表。

若芯片返回写入失败;即下发至芯片的mac地址未成功写入所述芯片的mac地址表。且该mac地址为预设的重要mac地址;则交换机会计算此mac地址的哈希桶的位置(哈希桶键值)。

如图3a所示,本实施例中,芯片的mac地址表300的有哈希桶a、哈希桶b。假设上述组播mac地址a9的哈希桶键值计算结果为键值a,且根据键值a查找mac地址表,发现mac地址表中与其匹配的位置为indexa1到indexa8。此时,查询每个index里面的mac地址条目,若发现indexa2里面写入的mac地址条目是一个动态学习的mac地址,则删除此mac地址条目,并将组播mac地址a9写入indexa2中,如图3b所示。

此外,本发明实施例还提供一种设备,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的mac地址的写入程序,所述mac地址的写入程序被所述处理器执行时实现本发明实施例提供的mac地址的写入方法的步骤。

一般地,在设备将mac地址下发至芯片才会进入mac地址的写入流程;在具体实施时,设备可能需要下发一个mac地址,例如组播mac地址,或静态配置mac地址。此外,设备可能学习到一个mac地址,例如vrrpmac地址;设备需要上报此mac地址学习后,并下发此mac地址到芯片。再者,设备可以同步一个mac地址到其他板卡,例如vrrpmac地址,组播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表或tcam表中。

在本发明的另一实施中,可以先判断被替换掉的动态学习的mac地址对于网络是否重要,若否,则可以不做任何后续处理。若是,则可以将其写入acl表或者其他tcam表中,亦可保证被替换的mac地址转发不受影响,而此处是否需要占用其余的表项资源,可以由网络的需求来具体确定。

本发明另一实施例提供的设备,在判断所述mac地址是否为预设的重要mac地址时,所述mac地址的写入程序被所述处理器执行以实现以下至少一项:

判断所述mac地址是否为vrrpmac地址;

判断所述mac地址是否为组播mac地址;

判断所述mac地址是否为重要静态mac地址。

可见,在本实施例中,预设的重要mac地址包括vrrpmac地址、组播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地址哈希冲突而出现异常。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件来实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。

以上参照附图说明了本发明的优选实施例,并非因此局限本发明的权利范围。本领域技术人员不脱离本发明的范围和实质,可以有多种变型方案实现本发明,比如作为一个实施例的特征可用于另一实施例而得到又一实施例。凡在运用本发明的技术构思之内所作的任何修改、等同替换和改进,均应在本发明的权利范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1