避免mac地址学习时哈希冲突的方法及系统的制作方法

文档序号:7783227阅读:399来源:国知局
避免mac地址学习时哈希冲突的方法及系统的制作方法
【专利摘要】本发明公开了一种避免MAC地址学习时产生哈希冲突的方法及系统,属于网络通信测试领域,包括以下步骤:S1:从报文解析出源MAC地址、虚拟局域网号VLAN?ID和端口号;S2:将解析出的源MAC地址和VLAN?ID进行哈希计算并在芯片内的MAC地址表中进行哈希查找,如查找到,更新芯片MAC地址表并执行S8,否则执行S3;S3:将源MAC地址、VLAN?ID和端口号信息存储到MAC地址表中。本发明的有益效果如下:本发明通过硬件芯片发出中断信息快速定位MAC地址哈希冲突,软件冲突检测单元进行检测,TCAM表存储冲突MAC地址的方式快速解决MAC地址哈希冲突。
【专利说明】避免MAC地址学习时哈希冲突的方法及系统
【技术领域】
[0001]本发明涉及网络通信测试领域,尤其涉及一种避免MAC (Media Access Control,介质访问控制)地址学习时哈希(HASH)冲突的方法及系统。
【背景技术】
[0002]交换机转发是通过MAC地址来进行的,它会建立一张包含源MAC地址、VLAN ID(Virtual Local Area Network ID,虚拟局域网标识号)、Port (端口号)的转发表,并根据该转发表实现报文的单播转发。MAC地址表最初采用顺序表的结构存储,当MAC地址发生变化时,即添加或删除MAC地址时,为了保持MAC地址表的有序性,MAC地址表会出现表项移动。当MAC地址表容量较大时,移动与查找就变得复杂,此时报文无法达到线速,查找效率也较低下。
[0003]后期的芯片,MAC地址表采用哈希表结构进行存储。首先确定哈希桶的深度,再用整个MAC地址表的容量除以哈希桶的深度,得到需要的哈希桶个数,每个哈希桶有自己唯一的编号,在哈希桶的内部仍然采用顺序的方式存储。当进行MAC地制学习时,会根据源MAC地址和VLAN ID使用特定的哈希算法得到哈希桶的编号,然后把MAC地址存储到该桶中。这样可以提高查表效率,但是同时也产生了哈希冲突。
[0004]假如一个哈希桶能存储N个MAC地址,当它装满N个MAC地址后,一个正在学习的MAC地址根据哈希算法获得的存储编号依然为该哈希桶时,就无法存储到该表项,此时称之为哈希冲关。
[0005]现有的解决哈希冲突的方案有以下几种:
[0006]方法一:通过ACL (Access Control List,重定向)来转发冲突的MAC地址:检测到MAC地址冲突时,将该MAC地址写入软件表项,并将该MAC地址作为匹配条件生成ACL指向学习到该MAC地址的端口,该条ACL下发到每一个端口,当目的MAC地址为冲突的MAC地址时,直接匹配到该条ACL,之后定向至出端口进行单播线速转发,该方法在解决问题的时候会占用大量ACL资源,一个哈希冲突的MAC地址下发到N个端口使用的ACL数量为N个,当大量MAC地址冲突时,少则造成严重ACL资源浪费,多则ACL资源被耗尽。该方案存在以下缺点(I)使用大量ACL资源,造成资源浪费;(2)无法对所有哈希冲突的MAC地址进行安全性保证;(3)不能彻底解决MAC地址学习以及硬件转发问题,而且会受ACL模块本身的影响。
[0007]方法二:通过缩短哈希桶深,扩大哈希链长来解决,该方法不能彻底解决MAC地址冲突,只能减少哈希冲突。
[0008]方法三:通过可编程的交换芯片扩展TCAM表进行MAC地址硬件学习,该方法可维护性不强,一旦要更改时需对交换芯片重新编程,其次所有交换芯片需要和TCAM表结合使用,另外不易发生MAC地址哈希冲突的低端设备也会外挂TCAM表,实际运用当中会导致成本过高。
[0009]其中,TCAM(ternarycontent addressable memory)是一种三态内容寻址存储器,主要用于快速查找ACL、路由等表项。
[0010]综上所述,目前需要解决以下问题:哈希冲突产生时快速定位及学习问题、硬件转发问题、MAC地址老化等更新问题。

【发明内容】

[0011]本发明的目的在于解决哈希冲突产生时快速定位及学习问题、硬件转发问题、MAC地址老化更新等问题而提出的一种避免MAC地址学习时哈希冲突的学习方法及系统。
[0012]为了实现以上发明目的,本发明采取的技术方案如下:一种避免MAC地址学习时哈希冲突的方法,包括以下步骤:
[0013]S1:从报文解析出源MAC地址、虚拟局域网号VLAN ID和端口号;
[0014]S2:将解析出的源MAC地址和VLAN ID进行哈希计算并在芯片内的MAC地址表中进行哈希查找,如查找到,更新芯片MAC地址表并执行S8,否则执行S3 ;
[0015]S3:将源MAC地址、VLAN ID和端口号信息存储到MAC地址表中;
[0016]S4:冲突检测单元检测是否存在哈希冲突,如存在,执行S5,否则执行S8 ;
[0017]S5:将源MAC地址、VLAN ID和端口号信息在三态内容寻址存储器TCAM表中进行并行查找,如查找到,执行S7,否则执行S6 ;
[0018]S6:将源MAC地址、VLAN ID和端口号信息线性存储到TCAM表中;
[0019]S7:对TCAM表进行更新;
[0020]S8:进行目的MAC地址查询。
[0021]作为优选:S4中所述的冲突检测单元检测方法如下:
[0022]S41:芯片检测到哈希冲突,产生中断信息通知CPU,并且拷贝产生哈希冲突的数据包到CPU ;
[0023]S42 =CPU收到该中断信息并释放信号量;
[0024]S43:冲突检测单元的检测任务模块收到信号量后,调用接收报文的接口,接收对应的数据包;
[0025]S44:检测任务模块从接收到的数据包中提取源MAC地址、VLAN ID和端口号。
[0026]作为优选:S7所述的TCAM表更新包括老化更新、删除更新和添加更新。
[0027]作为优选:TCAM表老化更新方法如下:
[0028]S701:芯片老化动作的第一个周期到,芯片检查TCAM表中MAC地址表项的命中标记位;
[0029]S702:如MAC地址表项的命中标记位为1,则将TCAM表的命中标记位更改为0,如果MAC地址表项的命中标记位为0,则清除表项,执行S704 ;
[0030]S703:芯片老化动作的第二个周期到,芯片清除命中标记位为O的表项;
[0031]S704:芯片老化动作后产生中断信息,通知CPU释放信号量;
[0032]S705:冲突检测单元收到信号量后更新相应软件数据结构。
[0033]作为优选:TCAM表添加更新方法如下:
[0034]S711:相同的报文进入芯片后,在芯片内部的MAC地址表中对该报文的源MAC地址进行查询;
[0035]S712:芯片内部的MAC地址表中对该报文的源MAC地址查询失败;[0036]S713:将源MAC地址和VLAN ID进行哈希计算,得出对应的索引号,将源MAC地址写入索引号对应的哈希桶中,产生哈希冲突;
[0037]S714:芯片产生中断信息并拷贝该报文到CPU,CPU释放中断信号量;
[0038]S715:冲突检测单元收到该信号量,对TCAM进行源MAC地址查询;
[0039]S716:查询成功,将该MAC地址表的命中标记位更改为I。
[0040]作为优选:S8所述的进行目的MAC地址查询方法如下:
[0041 ] S81:从报文解析出目的MAC地址、VLAN ID和端口号;
[0042]S82:将解析出的目的MAC地址和VLAN ID在芯片内的MAC地址表中进行哈希查找,如查找到,执行S85,否则执行S83 ;
[0043]S83:将解析出的目的MAC地址、VLAN ID和端口号在TCAM表内进行并行查找,如查找到,执行S85,否则执行S84 ;
[0044]S84:在相同VLAN内进行洪泛;
[0045]S85:根据MAC地址表中的内容进行单播转发。
[0046]为了解决上述问题,本发明还提出了一种系统,包括信息解析单元、信息查询单元、信息存储单元、TCAM表更新单元、冲突检测单元和目的MAC地址查询单元;
[0047]其中,信息解析单元用于从报文解析出源MAC地址、VLAN ID和端口号;
[0048]信息查询单元用于将解析出的源MAC地址和VLAN ID进行哈希计算并在芯片内的MAC地址表中进行哈希查找;
[0049]信息查询单元还用于在MAC地址表查询不成功后将源MAC地址、VLAN ID和端口号信息在TCAM表中进行并行查找;
[0050]信息存储单元用于信息查询单元在MAC地址表中查询不成功时将源MAC地址、VLAN ID和端口号信息存储到MAC地址表中;
[0051]信息存储单元还用于信息查询单元在TCAM表中查询不成功时将源MAC地址、VLANID和端口号信息线性存储到TCAM表中;
[0052]TCAM表更新单元分别用于信息查询单元在MAC地址表和TCAM表中查找成功时对TCAM表进行更新;
[0053]冲突检测单元用于源MAC地址、VLAN ID和端口号信息存储到MAC地址表之后检测是否存在哈希冲突,如存在启动信息查询单元将源MAC地址、VLAN ID和端口号信息在TCAM表中进行并行查找,否则启动目的MAC地址查询单元;
[0054]目的MAC地址查询单元用于进行目的MAC地址查询。
[0055]作为优选:所述的冲突检测单元包括检测任务模块,检测任务模块用于接收芯片产生哈希冲突并产生中断信息后通知CPU释放的信号量;检测任务模块还用于调用接收报文的接口接收拷贝到CPU的产生哈希冲突的数据包;检测任务模块还用于从接收到的数据包中提取源MAC地址、VLAN ID和端口号。
[0056]作为优选:所述的TCAM表更新包括老化更新模块、删除更新模块和添加更新模块;
[0057]其中,
[0058]TCAM表老化更新模块用于芯片老化动作的第一个周期到,芯片检查TCAM表中MAC地址表项的命中标记位;如MAC地址表项的命中标记位为I,则将TCAM表的命中标记位更改为O,如果MAC地址表项的命中标记位为O,则清除表项,同时芯片产生中断信息,通知CPU释放信号量;芯片老化动作的第二个周期到,芯片清除命中标记位为O的表项,芯片产生中断信息,通知CPU释放信号量;冲突检测单元收到信号量后更新相应软件数据结构;
[0059]TCAM表添加更新模块用于相同的报文进入芯片后,在芯片内部的MAC地址表中对该报文的源MAC地址进行查询;芯片内部的MAC地址表中对该报文的源MAC地址查询失败;将源MAC地址和VLAN ID进行哈希计算,得出对应的索引号,将源MAC地址写入索引号对应的哈希桶中,产生哈希冲突;芯片产生中断信息并拷贝该报文到CPU,CPU释放中断信号量;冲突检测单元收到该信号量,对TCAM进行源MAC地址查询;查询成功,将该MAC地址表的命中标记位更改为I。
[0060]作为优选:目的MAC地址查询单元具体用于从报文解析出目的MAC地址、VLAN ID和端口号;将解析出的目的MAC地址和VLAN ID在芯片内的MAC地址表中进行哈希查找,如查找到,根据MAC地址表中的内容进行单播转发,否则将解析出的目的MAC地址、VLAN ID和端口号在TCAM表内进行并行查找,如查找到,根据MAC地址表中的内容进行单播转发,否则在相同VLAN内进行洪泛。
[0061]本发明的有益效果:本发明通过硬件芯片发出中断信息快速定位MAC地址哈希冲突,软件冲突检测单元进行检测,TCAM表存储冲突MAC地址的方式快速解决MAC地址哈希冲突。硬件芯片老化处理速度快,时间也比较准确,而且不需要通过CPU进行干预和控制,减少CPU资源的占用和消耗,CPU部分只需要处理简单的相关软件数据结构,队列长度不需要很大就可处理,这些对于大量地址表的处理优于其他方式。这种软硬件结合的方法做到了可维护性强并且兼容了硬件学习的快速性能等特点,较少的利用了系统资源,增加了设备的系统资源。
【专利附图】

【附图说明】
[0062]图1为MAC地址学习的流程图;
[0063]图2为MAC地址转发的流程图。
【具体实施方式】
[0064]为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明做进一步详细说明。
[0065]一种避免MAC地址学习时哈希冲突的方法,包括以下步骤:
[0066]S1:从报文解析出源MAC地址、虚拟局域网号VLAN ID和端口号;
[0067]S2:将解析出的源MAC地址和VLAN ID进行哈希计算并在芯片内的MAC地址表中进行哈希查找,如查找到,更新芯片MAC地址表并执行S8,否则执行S3 ;
[0068]S3:将源MAC地址、VLAN ID和端口号信息存储到MAC地址表中;
[0069]S4:冲突检测单元检测是否存在哈希冲突,如存在,执行S5,否则执行S8 ;
[0070]S5:将源MAC地址、VLAN ID和端口号信息在三态内容寻址存储器(ternarycontent addressable memory, TCAM)表中进行并行查找,如查找到,执行S7,否则执行S6 ;[0071 ] S6:将源MAC地址、VLAN ID和端口号信息线性存储到TCAM表中;
[0072]S7:对TCAM表进行更新;[0073]S8:进行目的MAC地址查询。
[0074]S4中所述的冲突检测单元检测方法如下:
[0075]S41:芯片检测到哈希冲突,产生中断信息通知CPU,并且拷贝产生哈希冲突的数据包到CPU ;
[0076]S42 =CPU收到该中断信息并释放信号量;
[0077]S43:冲突检测单元的检测任务模块收到信号量后,调用接收报文的接口,接收对应的数据包;
[0078]S44:检测任务模块从接收到的数据包中提取源MAC地址、VLAN ID和端口号。
[0079]S7所述的TCAM表更新包括老化更新、删除更新和添加更新。
[0080]TCAM表老化更新方法如下:
[0081]S701:芯片老化动作的第一个周期到,芯片检查TCAM表中MAC地址表项的命中标记位;
[0082]S702:如MAC地址表项的命中标记位为1,则将TCAM表的命中标记位更改为0,如果MAC地址表项的命中标记位为0,则清除表项,执行S704 ;
[0083]S703:芯片老化动作的第二个周期到,芯片清除命中标记位为O的表项;
[0084]S704:芯片老化动作后产生中断信息,通知CPU释放信号量;
[0085]S705:冲突检测单元收到信号量后更新相应软件数据结构。
[0086]作为优选:TCAM表添加更新方法如下:
[0087]S711:相同的报文进入芯片后,在芯片内部的MAC地址表中对该报文的源MAC地址进行查询;
[0088]S712:芯片内部的MAC地址表中对该报文的源MAC地址查询失败;
[0089]S713:将源MAC地址和VLAN ID进行哈希计算,得出对应的索引号,将源MAC地址写入索引号对应的哈希桶中,产生哈希冲突;
[0090]S714:芯片产生中断信息并拷贝该报文到CPU,CPU释放中断信号量;
[0091]S715:冲突检测单元收到该信号量,对TCAM进行源MAC地址查询;
[0092]S716:查询成功,将该MAC地址表的命中标记位更改为I。
[0093]S8所述的进行目的MAC地址查询方法如下:
[0094]S81:从报文解析出目的MAC地址、VLAN ID和端口号;
[0095]S82:将解析出的目的MAC地址和VLAN ID在芯片内的MAC地址表中进行哈希查找,如查找到,执行S85,否则执行S83 ;
[0096]S83:将解析出的目的MAC地址、VLAN ID和端口号在TCAM表内进行并行查找,如查找到,执行S85,否则执行S84 ;
[0097]S84:在相同VLAN内进行洪泛;
[0098]S85:根据MAC地址表中的内容进行单播转发。(可达到线速转发)
[0099]为了解决上述问题,本发明还提出了一种系统,包括信息解析单元、信息查询单元、信息存储单元、TCAM表更新单元、冲突检测单元和目的MAC地址查询单元;
[0100]其中,信息解析单元用于从报文解析出源MAC地址、VLAN ID和端口号;
[0101]信息查询单元用于将解析出的源MAC地址和VLAN ID进行哈希计算并在芯片内的MAC地址表中进行哈希查找;[0102]信息查询单元还用于在MAC地址表查询不成功后将源MAC地址、VLAN ID和端口号信息在TCAM表中进行并行查找;
[0103]信息存储单元用于信息查询单元在MAC地址表中查询不成功时将源MAC地址、VLAN ID和端口号信息存储到MAC地址表中;
[0104]信息存储单元还用于信息查询单元在TCAM表中查询不成功时将源MAC地址、VLANID和端口号信息线性存储到TCAM表中;
[0105]TCAM表更新单元分别用于信息查询单元在MAC地址表和TCAM表中查找成功时对TCAM表进行更新;
[0106]冲突检测单元用于源MAC地址、VLAN ID和端口号信息存储到MAC地址表之后检测是否存在哈希冲突,如存在启动信息查询单元将源MAC地址、VLAN ID和端口号信息在TCAM表中进行并行查找,否则启动目的MAC地址查询单元;
[0107]目的MAC地址查询单元用于进行目的MAC地址查询。
[0108]所述的冲突检测单元包括检测任务模块,检测任务模块用于接收芯片产生哈希冲突并产生中断信息后通知CPU释放的信号量;检测任务模块还用于调用接收报文的接口接收拷贝到CPU的产生哈希冲突的数据包;检测任务模块还用于从接收到的数据包中提取源MAC地址、VLAN ID和端口号。
[0109]所述的TCAM表更新包括老化更新模块、删除更新模块和添加更新模块;
[0110]其中,
[0111]TCAM表老化更新模块用于芯片老化动作的第一个周期到,芯片检查TCAM表中MAC地址表项的命中标记位;如MAC地址表项的命中标记位为I,则将TCAM表的命中标记位更改为0,如果MAC地址表项的命中标记位为0,则清除表项,同时芯片产生中断信息,通知CPU释放信号量;芯片老化动作的第二个周期到,芯片清除命中标记位为O的表项,芯片产生中断信息,通知CPU释放信号量;冲突检测单元收到信号量后更新相应软件数据结构;
[0112]TCAM表添加更新模块用于相同的报文进入芯片后,在芯片内部的MAC地址表中对该报文的源MAC地址进行查询;芯片内部的MAC地址表中对该报文的源MAC地址查询失败;将源MAC地址和VLAN ID进行哈希计算,得出对应的索引号,将源MAC地址写入索引号对应的哈希桶中,产生哈希冲突;芯片产生中断信息并拷贝该报文到CPU,CPU释放中断信号量;冲突检测单元收到该信号量,对TCAM进行源MAC地址查询;查询成功,将该MAC地址表的命中标记位更改为I。
[0113]目的MAC地址查询单元具体用于从报文解析出目的MAC地址、VLAN ID和端口号;将解析出的目的MAC地址和VLAN ID在芯片内的MAC地址表中进行哈希查找,如查找到,根据MAC地址表中的内容进行单播转发,否则将解析出的目的MAC地址、VLAN ID和端口号在TCAM表内进行并行查找,如查找到,根据MAC地址表中的内容进行单播转发,否则在相同VLAN内进行洪泛。
[0114]具体实施例:
[0115]如图1所示,当芯片收到一个报文会解析它的头部信息,MAC地址、VLAN ID和端口号(Port),当源MAC地址为MAC (X)的报文进行转发时,转发流程会先查找源MAC (X)是否在芯片的MAC地址中,若存在将直接查找目的MAC地址,进入目的地址查找逻辑,查找芯片MAC地址表,若可以进行学习,说明没有产生哈希冲突,若无法学习且芯片产生了哈希冲突中断信息,再查找TCAM中的MAC地址表,若存在将进行目的查找逻辑和转发逻辑。
[0116]当产生哈希冲突时,芯片及时产生中断信息,同时将该报文拷贝一份传送到CPU,(PU收到该中断信息并释放信号量,冲突检测单元的检测任务模块收到信号量后,调用接收报文的接口,接收对应的数据包,检测任务模块从接受到的数据包中提取源MAC (X)地址、VLAN ID和端口号后,再调用驱动添加MAC地址表接口到TCAM表中。在写入的时候采用的是顺序写入方式,这样可以完全避免冲突。如图2所示,当完成MAC地址学习进入目的地址查找,当收到目的地址为MAC (Y)的报文时,先查找芯片自带的MAC地址转发表,若查找到就根据MAC地址表进行转发,若没有查找到再查找扩展的芯片表项TCAM,查找TCAM表项可以达到线速。
[0117]扩展的MAC地址表需要TCAM的硬件支持。但是与之而来会产生TCAM表的维护及更新等问题,解决方案如下:
[0118]冲突检测单元对TCAM表的MAC地址老化采用和芯片一致的处理方式,即冲突检测单元会启用一个周期为T的老化任务,该T值由配置决定,每隔T秒的时间该老化任务会对TCAM表中的MAC地址清除其命中标记位,再经过T个周期后该任务将命中标记位被清除的地址删除掉。冲突检测单元将需要删除的MAC地址,根据特定的条件,调用驱动接口删除TCAM表中的地址。
[0119]本领域的普通技术人员将会意识到,这里所述的实施例是为了帮助读者理解本发明的实施方法,应被理解为本发明的保护范围并不局限于这样的特别陈述和实施例。本领域的普通技术人员可以根据本发明公开的这些技术启示做出各种不脱离本发明实质的其它各种具体变形和组合,这些变形和组合仍然在本发明的保护范围内。
【权利要求】
1.一种避免MAC地址学习时产生哈希冲突的方法,其特征在于,包括以下步骤: 51:从报文解析出源MAC地址、虚拟局域网号VLAN ID和端口号; 52:将解析出的源MAC地址和VLAN ID进行哈希计算并在芯片内的MAC地址表中进行哈希查找,如查找到,更新芯片MAC地址表并执行S8,否则执行S3 ; 53:将源MAC地址、VLAN ID和端口号信息存储到MAC地址表中; 54:冲突检测单元检测是否存在哈希冲突,如存在,执行S5,否则执行S8 ; 55:将源MAC地址、VLAN ID和端口号信息在三态内容寻址存储器TCAM表中进行并行查找,如查找到,执行S7,否则执行S6 ; 56:将源MAC地址、VLAN ID和端口号信息线性存储到TCAM表中; 57:对TCAM表进行更新; 58:进行目的MAC地址查询。
2.根据权利要求1所述的方法,其特征在于,S4中所述的冲突检测单元检测方法如下: 541:芯片检测到哈希冲突, 产生中断信息通知CPU,并且拷贝产生哈希冲突的数据包到 CPU ; 542=CPU收到该中断信息并释放信号量; 543:冲突检测单元的检测任务模块收到信号量后,调用接收报文的接口,接收对应的数据包; 544:检测任务模块从接收到的数据包中提取源MAC地址、VLAN ID和端口号。
3.根据权利要求1或2所述的方法,其特征在于,S7所述的TCAM表更新包括老化更新、删除更新和添加更新。
4.根据权利要求3所述的方法,其特征在于,TCAM表老化更新方法如下:5701:芯片老化动作的第一个周期到,芯片检查TCAM表中MAC地址表项的命中标记位; 5702:如MAC地址表项的命中标记位为1,则将TCAM表的命中标记位更改为O,如果MAC地址表项的命中标记位为O,则清除表项,执行S704 ; 5703:芯片老化动作的第二个周期到,芯片清除命中标记位为O的表项; 5704:芯片老化动作后产生中断信息,通知CPU释放信号量; 5705:冲突检测单元收到信号量后更新相应软件数据结构。
5.根据权利要求3所述的方法,其特征在于,TCAM表添加更新方法如下: 5711:相同的报文进入芯片后,在芯片内部的MAC地址表中对该报文的源MAC地址进行查询; 5712:芯片内部的MAC地址表中对该报文的源MAC地址查询失败; 5713:将源MAC地址和VLAN ID进行哈希计算,得出对应的索引号,将源MAC地址写入索引号对应的哈希桶中,产生哈希冲突; 5714:芯片产生中断信息并拷贝该报文到CPU,CPU释放中断信号量; S715:冲突检测单元收到该信号量,对TCAM进行源MAC地址查询; S716:查询成功,将该MAC地址表的命中标记位更改为I。
6.根据权利要求4所述的方法,其特征在于,S8所述的进行目的MAC地址查询方法如下:581:从报文解析出目的MAC地址、VLAN ID和端口号; 582:将解析出的目的MAC地址和VLAN ID在芯片内的MAC地址表中进行哈希查找,如查找到,执行S85,否则执行S83 ; 583:将解析出的目的MAC地址、VLAN ID和端口号在TCAM表内进行并行查找,如查找到,执行S85,否则执行S84; 584:在相同VLAN内进行洪泛; 585:根据MAC地址表中的内容进行单播转发。
7.一种系统,其特征在于,包括信息解析单元、信息查询单元、信息存储单元、TCAM表更新单元、冲突检测单元和目的MAC地址查询单元; 其中,信息解析单元用于从报文解析出源MAC地址、VLAN ID和端口号; 信息查询单元用于将解析出的源MAC地址和VLAN ID进行哈希计算并在芯片内的MAC地址表中进行哈希查找; 信息查询单元还用于在MAC地址表查询不成功后将源MAC地址、VLAN ID和端口号信息在TCAM表中进行并行查找; 信息存储单元用于信息查询单元在MAC地址表中查询不成功时将源MAC地址、VLAN ID和端口号信息存储到MAC地址表中; 信息存储单元还用于信息查询单元在TCAM表中查询不成功时将源MAC地址、VLAN ID和端口号信息线性存储到TCAM表中; TCAM表更新单元分别用于信息查询单元在MAC地址表和TCAM表中查找成功时对TCAM表进行更新; 冲突检测单元用于源MAC地址、VLAN ID和端口号信息存储到MAC地址表之后检测是否存在哈希冲突,如存在启动信息查询单元将源MAC地址、VLAN ID和端口号信息在TCAM表中进行并行查找,否则启动目的MAC地址查询单元; 目的MAC地址查询单元用于进行目的MAC地址查询。
8.根据权利要求7所述的系统,其特征在于,所述的冲突检测单元包括检测任务模块,检测任务模块用于接收芯片产生哈希冲突并产生中断信息后通知CPU释放的信号量;检测任务模块还用于调用接收报文的接口接收拷贝到CPU的产生哈希冲突的数据包;检测任务模块还用于从接收到的数据包中提取源MAC地址、VLAN ID和端口号。
9.根据权利要求8所述的系统,其特征在于,所述的TCAM表更新包括老化更新模块、删除更新模块和添加更新模块; 其中, TCAM表老化更新模块用于芯片老化动作的第一个周期到,芯片检查TCAM表中MAC地址表项的命中标记位;如MAC地址表项的命中标记位为I,则将TCAM表的命中标记位更改为O,如果MAC地址表项的命中标记位为O,则清除表项,同时芯片产生中断信息,通知CPU释放信号量;芯片老化动作的第二个周期到,芯片清除命中标记位为O的表项,芯片产生中断信息,通知CPU释放信号量;冲突检测单元收到信号量后更新相应软件数据结构; TCAM表添加更新模块用于相同的报文进入芯片后,在芯片内部的MAC地址表中对该报文的源MAC地址进行查询;芯片内部的MAC地址表中对该报文的源MAC地址查询失败;将源MAC地址和VLAN ID进行哈希计算,得出对应的索引号,将源MAC地址写入索引号对应的哈希桶中,产生哈希冲突;芯片产生中断信息并拷贝该报文到CPU,CPU释放中断信号量;冲突检测单元收到该信号量,对TCAM进行源MAC地址查询;查询成功,将该MAC地址表的命中标记位更改为I。
10.根据权利要求7-9任一项所述的系统,其特征在于:目的MAC地址查询单元具体用于从报文解析出目的MAC地址、VLAN ID和端口号;将解析出的目的MAC地址和VLAN ID在芯片内的MAC地址表中进行哈希查找,如查找到,根据MAC地址表中的内容进行单播转发,否则将解析出的目的MAC地址、VLANID和端口号在TCAM表内进行并行查找,如查找到,根据MAC地址表中的内容进行单播转发,否`则在相同VLAN内进行洪泛。
【文档编号】H04L12/743GK103731355SQ201310751196
【公开日】2014年4月16日 申请日期:2013年12月31日 优先权日:2013年12月31日
【发明者】冷沛聪, 魏自强 申请人:迈普通信技术股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1