一种MAC地址哈希冲突的处理方法和装置与流程

文档序号:13391426阅读:1338来源:国知局
本发明涉及通信
技术领域
:,特别涉及一种mac地址哈希冲突的处理方法和装置。
背景技术
::交换设备在转发报文时,根据报文的目的mac(mediaaccesscontrol,媒体访问控制)地址查询mac地址表:如果mac地址表中包含有与报文目的mac地址对应的表项,那么就直接通过该表项中的出接口转发该报文;如果mac地址表中没有包含该报文目的mac地址对应的表项,那么设备将采取广播方式通过对应vlan(virtuallocalareanetwork,虚拟局域网)内除接收接口外的所有接口转发该报文。然而,目前交换设备的mac地址表采用哈希表(hashtable)的结构进行存储,通过把mac地址的关键字映射到表中一个位置来访问记录,其容量受限于具体的交换芯片,对于一些低端的交换芯片而言,mac地址表容量很小(通常在16k以下,甚至有些交换芯片mac地址表容量只有1k)。在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地址可以抢占冲突位置,从而可以解决现有的在哈希冲突存在时候,交换设备压力过大的问题,达到了从一定程度上降低交换设备压力的技术效果。附图说明图1为根据本发明实施例的mac地址哈希冲突的处理方法的一种方法流程示意图;图2为根据本发明实施例的替换mac地址的方法流程示意图;图3为根据本发明实施例的mac地址存储示意图;图4为根据本发明mac地址哈希冲突处理装置的一个实施例的硬件结构示意图;图5为根据本发明实施例的mac地址哈希冲突的处理装置的一种功能结构框图。具体实施方式为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。为了更好地说明本申请,下面对本申请提及的几个概念解释如下:1)mac:mediaaccesscontrol,媒体访问控制。mac地址表记录了mac地址与接口的对应关系,以及接口所属的vlan等信息。2)哈希(hash):哈希算法又称散列法、杂凑法以及关键字地址计算法等,相应的表称为哈希表。哈希算法的基本思想是,首先在元素(即mac地址)的关键字k和元素的存储位置p之间建立一个对应关系f,使得p=f(k),其中,f称为哈希函数。在创建哈希表时,将关键字为k的元素直接存入地址为f(k)的单元,后续在查找关键字为k的元素时,利用哈希函数计算出该元素的存储位置p=f(k),从而达到按关键字直接存取元素的目的。在实际实现的时候,基于哈希算法不可避免地会存在哈希冲突,即当k1≠k2时,p1=f(k1)=f(k2)=p2。参见图1,为本发明实施例提供的mac地址哈希冲突的处理方法,通过该方法使得访问量高的主机的mac地址即使在存在哈希冲突的情况下,依然可以被设备学习到,如图1所示,可以包括如下步骤:步骤101:当待学习的新的第二mac地址与mac地址表中已经存储的第一mac地址发生哈希冲突后,获取预定时段内以第一mac地址为目的地址的第一访问量和以第二mac地址为目的地址的第二访问量。其中,第一mac地址是已经存储在mac地址表中的已有mac地址,第二mac地址表示新的mac地址,即交换设备从报文中获取到的新的报文源mac地址,但是由于第二mac地址和第一mac地址存在哈希冲突,因此,第二mac地址无法被加进mac地址表中。在这种情况下可以统计一段时间内访问两个mac地址的访问量,例如,可以统计从确定冲突开始60s内访问两个mac地址各自的访问量。步骤102:当所述第二访问量与所述第一访问量的差值超过预设阈值时,则确定达到预设的替换条件。实现的时候,可以是预先设置替换条件,例如,第二mac地址的访问量是第一mac地址访问量的两倍及以上,那么就触发第二mac地址替换第一mac地址存储在mac地址列表中。从而使得访问量高的主机的mac地址即使在存在哈希冲突的情况下,依然可以被交换设备学习到。上述所列举的以第二mac地址的访问量是第一mac地址访问量的两倍作为预设的替换条件,仅是一种示例性说明。需要说明的是,本实施例中,当第二访问量与第一访问量的差值超过预设阈值时,就确定达到了预设的替换条件,当然预设的替换条件也可以为其他条件,在实际实现的时候,可以根据需要和实际的情况选择合适的替换条件,对此,本申请不作限定。步骤103:若确定达到预设的替换条件,则将所述第二mac地址替换所述第一mac地址存储在所述mac地址表中。如果第一访问量和第二访问量可以满足预设的替换条件,那么就可以触发替换。从而,可以使访问量大的mac地址替换掉访问量小的mac地址,以降低通过广播方式的转发的报文数量,降低转发设备压力。在本发明的一个实施例中,所述预设的替换条件为,所述第二访问量是所述第一访问量的两倍以上,可以采用公式计算的方式设置替换条件,例如,所述预设的替换条件,以如下公式表示:(x2-x1)/x1>δ其中,x2表示所述第二访问量,x1表示所述第一访问量,δ为替换倍数,表示当第二访问量超出第一访问量δ倍时进行替换,δ>=1。如果满足上述公式,则确定满足所述预设的替换条件;如果不满足上述公式,则确定不满足所述预设的替换条件。其中,上述δ的值还可以根据实际需要和情况调整选择。在本发明的一个实施例中,为了实现更为简单的标识和判断过程,可以设置替换标识,通过替换标识确定是否进行替换。具体地,在确定所述第二访问量达到预设的替换条件之后,为所述第二mac地址设置高级替换标识。对应地,所述若确定达到所述预设的替换条件,则将所述第二mac地址替换所述第一mac地址存储在所述mac地址表中,具体包括:若检测到所述第二mac地址存在高级替换标识(high),则将所述第二mac地址替换所述第一mac地址存储在所述mac地址表中。当然,可以仅仅为第二mac地址设置高级替换标识,以便于在进行替换时进行识别。可选的,还可以将mac地址表中存储的所有mac地址的替换标识均设置为低级替换标识(normal)。从而在进行替换时,采用高级替换标识对应的第二mac地址,替换与第二mac地址发生哈希冲突的第一mac地址,其中,第一mac地址的替换标识为低级替换标识。设置替换标识(包括高级替换标识和低级替换标识)的时机并不加以限定,可以在步骤101之前进行设置,也可以在检测到有mac地址存在哈希冲突之后再进行设置,或者,也可以在确定达到预设的替换条件,即将进行替换之前进行设置。举例而言,所述替换标识有两个值:0和1。0标明mac地址为低级替换状态,1标明mac地址为高级替换状态,高级替换标识的mac地址可以替换低级替换标识的mac地址。当然,也可以是其它的标识方式,只要能实现两者之间的区分都可以,具体采用何种标识方式,可以根据实际需要选择。对于mac地址表中已经存在的mac地址,其替换标识设置为0,即默认为低级替换状态。在上述实施方式的基础上,可选的,在步骤103之后,即在将第二mac地址替换第一mac地址存储在mac地址表中后,将该第二mac地址的替换标识修改为低级替换标识,以在再出现哈希冲突时调取使用。下面结合一个具体实施例对上述mac地址哈希冲突的处理方法进行说明,然而值得注意的是,该具体实施例仅是为了更好地说明本申请,并不构成对本申请的不当限定。在本例中,提供了一种在发生哈希冲突时mac地址的替换方式,通过本申请的方案,在发生哈希冲突时,可以使得访问量高的主机的mac地址抢占冲突位置的哈希资源。具体地,在本例中,根据发生mac地址哈希冲突时访问目标主机网络流量的多少引入“替换标识”的概念,替换标识有两个值:0和1,0为低级,1为高级。设备上已经存在的mac地址替换标识为0,新加入的mac地址如果和已有mac发生哈希冲突,则比较发生哈希冲突后一段时间内(例如,一个访问周期)新加入的mac地址和已有mac地址各自的访问流量,计算新加入mac地址的替换标识,如果新加入mac地址的替换标识为1,则抢占已有mac地址的哈希位置。如图2所示,可以包括如下步骤:s1:检测到新加入mac地址(mac-new)。s2:确定mac-new是否发生哈希冲突,发生则执行s3,未发生则执行s7。s3:提取和mac-new发生哈希冲突的mac地址(mac-old)。s4:启动定时器计算统计周期内:mac-old的访问量x1,mac-new的访问量x2。s5:确定(x2-x1)/x1是否大于δ,如果大于,执行s6,如果不大于,执行s8。其中,可以用p表示新加入mac的替换标识,t表示统计周期,单位为秒,δ为替换倍数,δ可以大于等于1,x1表示一个统计周期内已有mac地址的访问次数,即目的mac为已有mac地址的报文个数,x1从1开始计数,即x1>=1,x2表示一个统计周期内新加入mac地址的访问次数,即目的mac为新加入mac地址的报文个数,x2从0开始计数,即x2>=0。s6:mac-new替换标识为1,替换mac-old。s7:设备正常学习mac-new,mac-new替换标识更新为0,结束。s8:mac-new替换标识为0,不能替换mac-old,结束。如图3所示,上述mac地址表可以存在于硬件交换芯片的存储器中,mac地址的流量统计可以借助cpu完成,有些交换芯片内置cpu,有些交换芯片没有cpu,如果没有内置cpu可以借助网络设备的cpu完成。通过上例所述的方案,在mac地址哈希冲突严重的设备上,提高访问更频繁用户的mac替换标识,使替换标识为1的mac地址可以抢占已发生冲突的哈希位置,减少了交换设备广播报文的次数,提高了转发效率。在本发明的一个实施例中,该方法还包括:若确定所述第二访问量与所述第一访问量的差值未超过预设阈值,即没有达到预设的替换条件时,则启动定时器,在定时器超时后,重新获取所述第一访问量和所述第二访问量以进行冲突处理,即在对mac地址的哈希冲突做一次处理后,经过一段时间再进行计算,该定时时间可以根据交换设备的实际网络压力和配置设置,本申请不做限定。更优选地,在上述实施例基础上,在本发明的另一个实施例中,该方法还包括:在每次确定所述第二访问量与所述第一访问量的差值未超过预设阈值,即没有达到预设的替换条件后,延长所述定时器的定时时间。通过上述设置,可以在访问量差距不大、无需进行mac地址替换的情况下,减少对访问量的无用统计,节约计算资源。与前述方法相对应,本公开还提供了一种mac地址哈希冲突的处理装置,该装置可应用于网络设备中。本申请提供的装置可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,交换机等网络交换设备中,可通过处理器将非易失性存储器中与mac地址哈希冲突的处理装置对应的机器可执行指令读取到易失性存储器中运行。从硬件层面而言,如图4所示,为本发明mac地址哈希冲突处理装置的一种硬件结构示意图,除了图4所示,该处理装置包括处理器10、存储器20、设备端口30、转发芯片40和内容可寻址存储器50,根据该mac地址哈希冲突处理装置的实际功能,还可以包括其他硬件,对此不再赘述。处理器10与存储器20通过总线连接,存储器20存储处理器10要执行的程序代码,处理器10统计转发芯片40转发的报文流量,实现对第一访问量和第二访问量的统计判断,以确定是否要进行mac地址的替换改写,若第二访问量超过第一访问量足够多,以致达到预设的替换调节,则判断需要改写,指示转发芯片40将新的mac地址替换原有mac地址写入到内容可寻址存储器50的mac地址表中。转发芯片40通过访问内容可寻址存储器50内的mac地址表,实现对报文的转发,将访问所述mac地址的报文从设备端口30转发出去。从而,使得访问量最高的mac地址能够优先抢占冲突位置的哈希资源,以通过对应端口单播发送,减少广播发送的报文数量,以降低网络交换设备的工作压力。上述硬件结构中,可以替换的,转发芯片40也可以内置cpu执行上述方法。请参考图5,从功能上划分,mac地址哈希冲突的处理装置60可包括:获取模块601、确定模块602和替换模块603。获取模块601,用于当待学习的新的第二mac地址与mac地址表中已经存储的第一mac地址发生哈希冲突后,获取预定时段内以第一mac地址为目的地址的第一访问量和以第二mac地址为目的地址的第二访问量。其中,所述第一mac地址是mac地址表中存储的与所述第二mac地址存在哈希冲突的mac地址,所述第二地址为学习到的新的mac地址。确定模块602,用于在所述第二访问量与所述第一访问量的差值超过预设阈值时,则确定达到预设的替换条件。替换模块603,用于在确定达到预设的替换条件时,将所述第二mac地址替换所述第一mac地址存储在所述mac地址表中。在一个实施方式中,确定模块602预设的替换条件为,所述第二访问量是所述第一访问量的两倍以上,可通过如下方式实现:根据如下公式确定所述第二访问量与所述第一访问量的差值是否超过预设阈值:(x2-x1)/x1>δ其中,x2表示所述第二访问量,x1表示所述第一访问量,δ为替换倍数,表示当第二访问量超出第一访问量δ倍时进行替换,δ>=1。在一个实施方式中,确定模块602还包括:标识单元,用于在所述确定模块602确定达到预设的替换条件之后,为所述第二mac地址设置高级替换标识。对应地,所述替换模块603具体用于:在检测到所述第二mac地址存在高级替换标识时,将所述第二mac地址替换所述第一mac地址存储在所述mac地址表中。在一个实施方式中该装置还包括:定时单元,用于在确定所述第二访问量与所述第一访问量的差值未超过预设阈值之后,即确定没有达到预设的替换条件后,启动定时,在定时器超时后,令所述获取模块重新获取所述第一访问量和所述第二访问量以进行冲突处理。在一个实施方式中该装置还包括:延长单元,用于在每次确定所述第二访问量与所述第一访问量的差值未超过预设阈值,即确定没有达到预设的替换条件后,延长所述定时单元的定时时间。本申请还公开了一种mac地址哈希冲突的处理装置,包括处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令,所述处理器被所述机器可执行指令促使:实现上述任一实施例所述的方法步骤。本申请还公开了一种机器可读存储介质,存储有机器可执行指令,在被处理器调用和执行时,所述机器可执行指令促使所述处理器:实现上述任一实施例所述的方法步骤。对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1