CN103731355B - 避免mac地址学习时哈希冲突的方法及系统 - Google Patents

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

Info

Publication number
CN103731355B
CN103731355B CN201310751196.3A CN201310751196A CN103731355B CN 103731355 B CN103731355 B CN 103731355B CN 201310751196 A CN201310751196 A CN 201310751196A CN 103731355 B CN103731355 B CN 103731355B
Authority
CN
China
Prior art keywords
mac address
vlan
chip
hash
tcam
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201310751196.3A
Other languages
English (en)
Other versions
CN103731355A (zh
Inventor
冷沛聪
魏自强
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Maipu Communication Technology Co Ltd
Original Assignee
Maipu Communication Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Maipu Communication Technology Co Ltd filed Critical Maipu Communication Technology Co Ltd
Priority to CN201310751196.3A priority Critical patent/CN103731355B/zh
Publication of CN103731355A publication Critical patent/CN103731355A/zh
Application granted granted Critical
Publication of CN103731355B publication Critical patent/CN103731355B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Small-Scale Networks (AREA)

Abstract

本发明公开了一种避免MAC地址学习时产生哈希冲突的方法及系统,属于网络通信测试领域,包括以下步骤:S1:从报文解析出源MAC地址、虚拟局域网号VLAN ID和端口号;S2:将解析出的源MAC地址和VLAN ID进行哈希计算并在芯片内的MAC地址表中进行哈希查找,如查找到,更新芯片MAC地址表并执行S8,否则执行S3;S3:将源MAC地址、VLAN ID和端口号信息存储到MAC地址表中。本发明的有益效果如下:本发明通过硬件芯片发出中断信息快速定位MAC地址哈希冲突,软件冲突检测单元进行检测,TCAM表存储冲突MAC地址的方式快速解决MAC地址哈希冲突。

Description

避免MAC地址学习时哈希冲突的方法及系统
技术领域
本发明涉及网络通信测试领域,尤其涉及一种避免MAC(Media Access Control,介质访问控制)地址学习时哈希(HASH)冲突的方法及系统。
背景技术
交换机转发是通过MAC地址来进行的,它会建立一张包含源MAC地址、VLAN ID(Virtual Local Area Network ID,虚拟局域网标识号)、Port(端口号)的转发表,并根据该转发表实现报文的单播转发。MAC地址表最初采用顺序表的结构存储,当MAC地址发生变化时,即添加或删除MAC地址时,为了保持MAC地址表的有序性,MAC地址表会出现表项移动。当MAC地址表容量较大时,移动与查找就变得复杂,此时报文无法达到线速,查找效率也较低下。
后期的芯片,MAC地址表采用哈希表结构进行存储。首先确定哈希桶的深度,再用整个MAC地址表的容量除以哈希桶的深度,得到需要的哈希桶个数,每个哈希桶有自己唯一的编号,在哈希桶的内部仍然采用顺序的方式存储。当进行MAC地制学习时,会根据源MAC地址和VLAN ID使用特定的哈希算法得到哈希桶的编号,然后把MAC地址存储到该桶中。这样可以提高查表效率,但是同时也产生了哈希冲突。
假如一个哈希桶能存储N个MAC地址,当它装满N个MAC地址后,一个正在学习的MAC地址根据哈希算法获得的存储编号依然为该哈希桶时,就无法存储到该表项,此时称之为哈希冲突。
现有的解决哈希冲突的方案有以下几种:
方法一:通过ACL(Access Control List,重定向)来转发冲突的MAC地址:检测到MAC地址冲突时,将该MAC地址写入软件表项,并将该MAC地址作为匹配条件生成ACL指向学习到该MAC地址的端口,该条ACL下发到每一个端口,当目的MAC地址为冲突的MAC地址时,直接匹配到该条ACL,之后定向至出端口进行单播线速转发,该方法在解决问题的时候会占用大量ACL资源,一个哈希冲突的MAC地址下发到N个端口使用的ACL数量为N个,当大量MAC地址冲突时,少则造成严重ACL资源浪费,多则ACL资源被耗尽。该方案存在以下缺点(1)使用大量ACL资源,造成资源浪费;(2)无法对所有哈希冲突的MAC地址进行安全性保证;(3)不能彻底解决MAC地址学习以及硬件转发问题,而且会受ACL模块本身的影响。
方法二:通过缩短哈希桶深,扩大哈希链长来解决,该方法不能彻底解决MAC地址冲突,只能减少哈希冲突。
方法三:通过可编程的交换芯片扩展TCAM表进行MAC地址硬件学习,该方法可维护性不强,一旦要更改时需对交换芯片重新编程,其次所有交换芯片需要和TCAM表结合使用,另外不易发生MAC地址哈希冲突的低端设备也会外挂TCAM表,实际运用当中会导致成本过高。
其中,TCAM(ternary content addressable memory)是一种三态内容寻址存储器,主要用于快速查找ACL、路由等表项。
综上所述,目前需要解决以下问题:哈希冲突产生时快速定位及学习问题、硬件转发问题、MAC地址老化等更新问题。
发明内容
本发明的目的在于解决哈希冲突产生时快速定位及学习问题、硬件转发问题、MAC地址老化更新等问题而提出的一种避免MAC地址学习时哈希冲突的学习方法及系统。
为了实现以上发明目的,本发明采取的技术方案如下:一种避免MAC地址学习时哈希冲突的方法,包括以下步骤:
S1:从报文解析出源MAC地址、虚拟局域网号VLAN ID和端口号;
S2:将解析出的源MAC地址和VLAN ID进行哈希计算并在芯片内的MAC地址表中进行哈希查找,如查找到,更新芯片MAC地址表并执行S8,否则执行S3;
S3:将源MAC地址、VLAN ID和端口号信息存储到MAC地址表中;
S4:冲突检测单元检测是否存在哈希冲突,如存在,执行S5,否则执行S8;
S5:将源MAC地址、VLAN ID和端口号信息在三态内容寻址存储器TCAM表中进行并行查找,如查找到,执行S7,否则执行S6;
S6:将源MAC地址、VLAN ID和端口号信息线性存储到TCAM表中;
S7:对TCAM表进行更新;
S8:进行目的MAC地址查询。
作为优选:S4中所述的冲突检测单元检测方法如下:
S41:芯片检测到哈希冲突,产生中断信息通知CPU,并且拷贝产生哈希冲突的数据包到CPU;
S42:CPU收到该中断信息并释放信号量;
S43:冲突检测单元的检测任务模块收到信号量后,调用接收报文的接口,接收对应的数据包;
S44:检测任务模块从接收到的数据包中提取源MAC地址、VLAN ID和端口号。
作为优选:S7所述的TCAM表更新包括老化更新、删除更新和添加更新。
作为优选:TCAM表老化更新方法如下:
S701:芯片老化动作的第一个周期到,芯片检查TCAM表中MAC地址表项的命中标记位;
S702:如MAC地址表项的命中标记位为1,则将TCAM表的命中标记位更改为0,如果MAC地址表项的命中标记位为0,则清除表项,执行S704;
S703:芯片老化动作的第二个周期到,芯片清除命中标记位为0的表项;
S704:芯片老化动作后产生中断信息,通知CPU释放信号量;
S705:冲突检测单元收到信号量后更新相应软件数据结构。
作为优选:TCAM表添加更新方法如下:
S711:相同的报文进入芯片后,在芯片内部的MAC地址表中对该报文的源MAC地址进行查询;
S712:芯片内部的MAC地址表中对该报文的源MAC地址查询失败;
S713:将源MAC地址和VLAN ID进行哈希计算,得出对应的索引号,将源MAC地址写入索引号对应的哈希桶中,产生哈希冲突;
S714:芯片产生中断信息并拷贝该报文到CPU,CPU释放中断信号量;
S715:冲突检测单元收到该信号量,对TCAM进行源MAC地址查询;
S716:查询成功,将该MAC地址表的命中标记位更改为1。
作为优选:S8所述的进行目的MAC地址查询方法如下:
S81:从报文解析出目的MAC地址、VLAN ID和端口号;
S82:将解析出的目的MAC地址和VLAN ID在芯片内的MAC地址表中进行哈希查找,如查找到,执行S85,否则执行S83;
S83:将解析出的目的MAC地址、VLAN ID和端口号在TCAM表内进行并行查找,如查找到,执行S85,否则执行S84;
S84:在相同VLAN内进行洪泛;
S85:根据MAC地址表中的内容进行单播转发。
为了解决上述问题,本发明还提出了一种系统,包括信息解析单元、信息查询单元、信息存储单元、TCAM表更新单元、冲突检测单元和目的MAC地址查询单元;
其中,信息解析单元用于从报文解析出源MAC地址、VLAN ID和端口号;
信息查询单元用于将解析出的源MAC地址和VLAN ID进行哈希计算并在芯片内的MAC地址表中进行哈希查找;
信息查询单元还用于在MAC地址表查询不成功后将源MAC地址、VLAN ID和端口号信息在TCAM表中进行并行查找;
信息存储单元用于信息查询单元在MAC地址表中查询不成功时将源MAC地址、VLANID和端口号信息存储到MAC地址表中;
信息存储单元还用于信息查询单元在TCAM表中查询不成功时将源MAC地址、VLANID和端口号信息线性存储到TCAM表中;
TCAM表更新单元分别用于信息查询单元在MAC地址表和TCAM表中查找成功时对TCAM表进行更新;
冲突检测单元用于源MAC地址、VLAN ID和端口号信息存储到MAC地址表之后检测是否存在哈希冲突,如存在启动信息查询单元将源MAC地址、VLAN ID和端口号信息在TCAM表中进行并行查找,否则启动目的MAC地址查询单元;
目的MAC地址查询单元用于进行目的MAC地址查询。
作为优选:所述的冲突检测单元包括检测任务模块,检测任务模块用于接收芯片产生哈希冲突并产生中断信息后通知CPU释放的信号量;检测任务模块还用于调用接收报文的接口接收拷贝到CPU的产生哈希冲突的数据包;检测任务模块还用于从接收到的数据包中提取源MAC地址、VLAN ID和端口号。
作为优选:所述的TCAM表更新包括老化更新模块、删除更新模块和添加更新模块;
其中,
TCAM表老化更新模块用于芯片老化动作的第一个周期到,芯片检查TCAM表中MAC地址表项的命中标记位;如MAC地址表项的命中标记位为1,则将TCAM表的命中标记位更改为0,如果MAC地址表项的命中标记位为0,则清除表项,同时芯片产生中断信息,通知CPU释放信号量;芯片老化动作的第二个周期到,芯片清除命中标记位为0的表项,芯片产生中断信息,通知CPU释放信号量;冲突检测单元收到信号量后更新相应软件数据结构;
TCAM表添加更新模块用于相同的报文进入芯片后,在芯片内部的MAC地址表中对该报文的源MAC地址进行查询;芯片内部的MAC地址表中对该报文的源MAC地址查询失败;将源MAC地址和VLAN ID进行哈希计算,得出对应的索引号,将源MAC地址写入索引号对应的哈希桶中,产生哈希冲突;芯片产生中断信息并拷贝该报文到CPU,CPU释放中断信号量;冲突检测单元收到该信号量,对TCAM进行源MAC地址查询;查询成功,将该MAC地址表的命中标记位更改为1。
作为优选:目的MAC地址查询单元具体用于从报文解析出目的MAC地址、VLAN ID和端口号;将解析出的目的MAC地址和VLAN ID在芯片内的MAC地址表中进行哈希查找,如查找到,根据MAC地址表中的内容进行单播转发,否则将解析出的目的MAC地址、VLAN ID和端口号在TCAM表内进行并行查找,如查找到,根据MAC地址表中的内容进行单播转发,否则在相同VLAN内进行洪泛。
本发明的有益效果:本发明通过硬件芯片发出中断信息快速定位MAC地址哈希冲突,软件冲突检测单元进行检测,TCAM表存储冲突MAC地址的方式快速解决MAC地址哈希冲突。硬件芯片老化处理速度快,时间也比较准确,而且不需要通过CPU进行干预和控制,减少CPU资源的占用和消耗,CPU部分只需要处理简单的相关软件数据结构,队列长度不需要很大就可处理,这些对于大量地址表的处理优于其他方式。这种软硬件结合的方法做到了可维护性强并且兼容了硬件学习的快速性能等特点,较少的利用了系统资源,增加了设备的系统资源。
附图说明
图1为MAC地址学习的流程图;
图2为MAC地址转发的流程图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明做进一步详细说明。
一种避免MAC地址学习时哈希冲突的方法,包括以下步骤:
S1:从报文解析出源MAC地址、虚拟局域网号VLAN ID和端口号;
S2:将解析出的源MAC地址和VLAN ID进行哈希计算并在芯片内的MAC地址表中进行哈希查找,如查找到,更新芯片MAC地址表并执行S8,否则执行S3;
S3:将源MAC地址、VLAN ID和端口号信息存储到MAC地址表中;
S4:冲突检测单元检测是否存在哈希冲突,如存在,执行S5,否则执行S8;
S5:将源MAC地址、VLAN ID和端口号信息在三态内容寻址存储器(ternarycontent addressable memory,TCAM)表中进行并行查找,如查找到,执行S7,否则执行S6;
S6:将源MAC地址、VLAN ID和端口号信息线性存储到TCAM表中;
S7:对TCAM表进行更新;
S8:进行目的MAC地址查询。
S4中所述的冲突检测单元检测方法如下:
S41:芯片检测到哈希冲突,产生中断信息通知CPU,并且拷贝产生哈希冲突的数据包到CPU;
S42:CPU收到该中断信息并释放信号量;
S43:冲突检测单元的检测任务模块收到信号量后,调用接收报文的接口,接收对应的数据包;
S44:检测任务模块从接收到的数据包中提取源MAC地址、VLAN ID和端口号。
S7所述的TCAM表更新包括老化更新、删除更新和添加更新。
TCAM表老化更新方法如下:
S701:芯片老化动作的第一个周期到,芯片检查TCAM表中MAC地址表项的命中标记位;
S702:如MAC地址表项的命中标记位为1,则将TCAM表的命中标记位更改为0,如果MAC地址表项的命中标记位为0,则清除表项,执行S704;
S703:芯片老化动作的第二个周期到,芯片清除命中标记位为0的表项;
S704:芯片老化动作后产生中断信息,通知CPU释放信号量;
S705:冲突检测单元收到信号量后更新相应软件数据结构。
作为优选:TCAM表添加更新方法如下:
S711:相同的报文进入芯片后,在芯片内部的MAC地址表中对该报文的源MAC地址进行查询;
S712:芯片内部的MAC地址表中对该报文的源MAC地址查询失败;
S713:将源MAC地址和VLAN ID进行哈希计算,得出对应的索引号,将源MAC地址写入索引号对应的哈希桶中,产生哈希冲突;
S714:芯片产生中断信息并拷贝该报文到CPU,CPU释放中断信号量;
S715:冲突检测单元收到该信号量,对TCAM进行源MAC地址查询;
S716:查询成功,将该MAC地址表的命中标记位更改为1。
S8所述的进行目的MAC地址查询方法如下:
S81:从报文解析出目的MAC地址、VLAN ID和端口号;
S82:将解析出的目的MAC地址和VLAN ID在芯片内的MAC地址表中进行哈希查找,如查找到,执行S85,否则执行S83;
S83:将解析出的目的MAC地址、VLAN ID和端口号在TCAM表内进行并行查找,如查找到,执行S85,否则执行S84;
S84:在相同VLAN内进行洪泛;
S85:根据MAC地址表中的内容进行单播转发。(可达到线速转发)
为了解决上述问题,本发明还提出了一种系统,包括信息解析单元、信息查询单元、信息存储单元、TCAM表更新单元、冲突检测单元和目的MAC地址查询单元;
其中,信息解析单元用于从报文解析出源MAC地址、VLAN ID和端口号;
信息查询单元用于将解析出的源MAC地址和VLAN ID进行哈希计算并在芯片内的MAC地址表中进行哈希查找;
信息查询单元还用于在MAC地址表查询不成功后将源MAC地址、VLAN ID和端口号信息在TCAM表中进行并行查找;
信息存储单元用于信息查询单元在MAC地址表中查询不成功时将源MAC地址、VLANID和端口号信息存储到MAC地址表中;
信息存储单元还用于信息查询单元在TCAM表中查询不成功时将源MAC地址、VLANID和端口号信息线性存储到TCAM表中;
TCAM表更新单元分别用于信息查询单元在MAC地址表和TCAM表中查找成功时对TCAM表进行更新;
冲突检测单元用于源MAC地址、VLAN ID和端口号信息存储到MAC地址表之后检测是否存在哈希冲突,如存在启动信息查询单元将源MAC地址、VLAN ID和端口号信息在TCAM表中进行并行查找,否则启动目的MAC地址查询单元;
目的MAC地址查询单元用于进行目的MAC地址查询。
所述的冲突检测单元包括检测任务模块,检测任务模块用于接收芯片产生哈希冲突并产生中断信息后通知CPU释放的信号量;检测任务模块还用于调用接收报文的接口接收拷贝到CPU的产生哈希冲突的数据包;检测任务模块还用于从接收到的数据包中提取源MAC地址、VLAN ID和端口号。
所述的TCAM表更新包括老化更新模块、删除更新模块和添加更新模块;
其中,
TCAM表老化更新模块用于芯片老化动作的第一个周期到,芯片检查TCAM表中MAC地址表项的命中标记位;如MAC地址表项的命中标记位为1,则将TCAM表的命中标记位更改为0,如果MAC地址表项的命中标记位为0,则清除表项,同时芯片产生中断信息,通知CPU释放信号量;芯片老化动作的第二个周期到,芯片清除命中标记位为0的表项,芯片产生中断信息,通知CPU释放信号量;冲突检测单元收到信号量后更新相应软件数据结构;
TCAM表添加更新模块用于相同的报文进入芯片后,在芯片内部的MAC地址表中对该报文的源MAC地址进行查询;芯片内部的MAC地址表中对该报文的源MAC地址查询失败;将源MAC地址和VLAN ID进行哈希计算,得出对应的索引号,将源MAC地址写入索引号对应的哈希桶中,产生哈希冲突;芯片产生中断信息并拷贝该报文到CPU,CPU释放中断信号量;冲突检测单元收到该信号量,对TCAM进行源MAC地址查询;查询成功,将该MAC地址表的命中标记位更改为1。
目的MAC地址查询单元具体用于从报文解析出目的MAC地址、VLAN ID和端口号;将解析出的目的MAC地址和VLAN ID在芯片内的MAC地址表中进行哈希查找,如查找到,根据MAC地址表中的内容进行单播转发,否则将解析出的目的MAC地址、VLAN ID和端口号在TCAM表内进行并行查找,如查找到,根据MAC地址表中的内容进行单播转发,否则在相同VLAN内进行洪泛。
具体实施例:
如图1所示,当芯片收到一个报文会解析它的头部信息,MAC地址、VLAN ID和端口号(Port),当源MAC地址为MAC(X)的报文进行转发时,转发流程会先查找源MAC(X)是否在芯片的MAC地址中,若存在将直接查找目的MAC地址,进入目的地址查找逻辑,查找芯片MAC地址表,若可以进行学习,说明没有产生哈希冲突,若无法学习且芯片产生了哈希冲突中断信息,再查找TCAM中的MAC地址表,若存在将进行目的查找逻辑和转发逻辑。
当产生哈希冲突时,芯片及时产生中断信息,同时将该报文拷贝一份传送到CPU,CPU收到该中断信息并释放信号量,冲突检测单元的检测任务模块收到信号量后,调用接收报文的接口,接收对应的数据包,检测任务模块从接受到的数据包中提取源MAC(X)地址、VLAN ID和端口号后,再调用驱动添加MAC地址表接口到TCAM表中。在写入的时候采用的是顺序写入方式,这样可以完全避免冲突。如图2所示,当完成MAC地址学习进入目的地址查找,当收到目的地址为MAC(Y)的报文时,先查找芯片自带的MAC地址转发表,若查找到就根据MAC地址表进行转发,若没有查找到再查找扩展的芯片表项TCAM,查找TCAM表项可以达到线速。
扩展的MAC地址表需要TCAM的硬件支持。但是与之而来会产生TCAM表的维护及更新等问题,解决方案如下:
冲突检测单元对TCAM表的MAC地址老化采用和芯片一致的处理方式,即冲突检测单元会启用一个周期为T的老化任务,该T值由配置决定,每隔T秒的时间该老化任务会对TCAM表中的MAC地址清除其命中标记位,再经过T个周期后该任务将命中标记位被清除的地址删除掉。冲突检测单元将需要删除的MAC地址,根据特定的条件,调用驱动接口删除TCAM表中的地址。
本领域的普通技术人员将会意识到,这里所述的实施例是为了帮助读者理解本发明的实施方法,应被理解为本发明的保护范围并不局限于这样的特别陈述和实施例。本领域的普通技术人员可以根据本发明公开的这些技术启示做出各种不脱离本发明实质的其它各种具体变形和组合,这些变形和组合仍然在本发明的保护范围内。

Claims (8)

1.一种避免MAC地址学习时产生哈希冲突的方法,其特征在于,包括以下步骤:
S1:从报文解析出源MAC地址、虚拟局域网号VLAN ID和端口号;
S2:将解析出的源MAC地址和VLAN ID进行哈希计算并在芯片内的MAC地址表中进行哈希查找,如查找到,更新芯片MAC地址表并执行S8,否则执行S3;
S3:将源MAC地址、VLAN ID和端口号信息存储到MAC地址表中;
S4:冲突检测单元检测是否存在哈希冲突,如存在,执行S5,否则执行S8;
所述的冲突检测单元检测方法如下:
S41:芯片检测到哈希冲突,产生中断信息通知CPU,并且拷贝产生哈希冲突的数据包到CPU;
S42:CPU收到该中断信息并释放信号量;
S43:冲突检测单元的检测任务模块收到信号量后,调用接收报文的接口,接收对应的数据包;
S44:检测任务模块从接收到的数据包中提取源MAC地址、VLAN ID和端口号;
S5:将源MAC地址、VLAN ID和端口号信息在三态内容寻址存储器TCAM表中进行并行查找,如查找到,执行S7,否则执行S6;
S6:将源MAC地址、VLAN ID和端口号信息线性存储到TCAM表中;
S7:对TCAM表进行更新;
S8:进行目的MAC地址查询。
2.根据权利要求1所述的方法,其特征在于,S7所述的TCAM表更新包括老化更新、删除更新和添加更新。
3.根据权利要求2所述的方法,其特征在于,TCAM表老化更新方法如下:
S701:芯片老化动作的第一个周期到,芯片检查TCAM表中MAC地址表项的命中标记位;
S702:如MAC地址表项的命中标记位为1,则将TCAM表的命中标记位更改为0,如果MAC地址表项的命中标记位为0,则清除表项,执行S704;
S703:芯片老化动作的第二个周期到,芯片清除命中标记位为0的表项;
S704:芯片老化动作后产生中断信息,通知CPU释放信号量;
S705:冲突检测单元收到信号量后更新相应软件数据结构。
4.根据权利要求3所述的方法,其特征在于,TCAM表添加更新方法如下:
S711:相同的报文进入芯片后,在芯片内部的MAC地址表中对该报文的源MAC地址进行查询;
S712:芯片内部的MAC地址表中对该报文的源MAC地址查询失败;
S713:将源MAC地址和VLAN ID进行哈希计算,得出对应的索引号,将源MAC地址写入索引号对应的哈希桶中,产生哈希冲突;
S714:芯片产生中断信息并拷贝该报文到CPU,CPU释放中断信号量;
S715:冲突检测单元收到该信号量,对TCAM进行源MAC地址查询;
S716:查询成功,将该MAC地址表的命中标记位更改为1。
5.根据权利要求3所述的方法,其特征在于,S8所述的进行目的MAC地址查询方法如下:
S81:从报文解析出目的MAC地址、VLAN ID和端口号;
S82:将解析出的目的MAC地址和VLAN ID在芯片内的MAC地址表中进行哈希查找,如查找到,执行S85,否则执行S83;
S83:将解析出的目的MAC地址、VLAN ID和端口号在TCAM表内进行并行查找,如查找到,执行S85,否则执行S84;
S84:在相同VLAN内进行洪泛;
S85:根据MAC地址表中的内容进行单播转发。
6.一种避免MAC地址学习时产生哈希冲突的系统,其特征在于,包括信息解析单元、信息查询单元、信息存储单元、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地址查询单元;
所述的冲突检测单元包括检测任务模块,检测任务模块用于接收芯片产生哈希冲突并产生中断信息后通知CPU释放的信号量;检测任务模块还用于调用接收报文的接口接收拷贝到CPU的产生哈希冲突的数据包;检测任务模块还用于从接收到的数据包中提取源MAC地址、VLAN ID和端口号;
目的MAC地址查询单元用于进行目的MAC地址查询。
7.根据权利要求6所述的系统,其特征在于,所述的TCAM表更新包括老化更新模块、删除更新模块和添加更新模块;
其中,
TCAM表老化更新模块用于芯片老化动作的第一个周期到,芯片检查TCAM表中MAC地址表项的命中标记位;如MAC地址表项的命中标记位为1,则将TCAM表的命中标记位更改为0,如果MAC地址表项的命中标记位为0,则清除表项,同时芯片产生中断信息,通知CPU释放信号量;芯片老化动作的第二个周期到,芯片清除命中标记位为0的表项,芯片产生中断信息,通知CPU释放信号量;冲突检测单元收到信号量后更新相应软件数据结构;
TCAM表添加更新模块用于相同的报文进入芯片后,在芯片内部的MAC地址表中对该报文的源MAC地址进行查询;芯片内部的MAC地址表中对该报文的源MAC地址查询失败;将源MAC地址和VLAN ID进行哈希计算,得出对应的索引号,将源MAC地址写入索引号对应的哈希桶中,产生哈希冲突;芯片产生中断信息并拷贝该报文到CPU,CPU释放中断信号量;冲突检测单元收到该信号量,对TCAM进行源MAC地址查询;查询成功,将该MAC地址表的命中标记位更改为1。
8.根据权利要求6-7任一项所述的系统,其特征在于:目的MAC地址查询单元具体用于从报文解析出目的MAC地址、VLAN ID和端口号;将解析出的目的MAC地址和VLAN ID在芯片内的MAC地址表中进行哈希查找,如查找到,根据MAC地址表中的内容进行单播转发,否则将解析出的目的MAC地址、VLAN ID和端口号在TCAM表内进行并行查找,如查找到,根据MAC地址表中的内容进行单播转发,否则在相同VLAN内进行洪泛。
CN201310751196.3A 2013-12-31 2013-12-31 避免mac地址学习时哈希冲突的方法及系统 Active CN103731355B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310751196.3A CN103731355B (zh) 2013-12-31 2013-12-31 避免mac地址学习时哈希冲突的方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310751196.3A CN103731355B (zh) 2013-12-31 2013-12-31 避免mac地址学习时哈希冲突的方法及系统

Publications (2)

Publication Number Publication Date
CN103731355A CN103731355A (zh) 2014-04-16
CN103731355B true CN103731355B (zh) 2017-01-25

Family

ID=50455290

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310751196.3A Active CN103731355B (zh) 2013-12-31 2013-12-31 避免mac地址学习时哈希冲突的方法及系统

Country Status (1)

Country Link
CN (1) CN103731355B (zh)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104468362B (zh) * 2014-12-01 2017-11-24 上海斐讯数据通信技术有限公司 一种mac地址学习时哈希冲突的同步方法
CN104750488B (zh) * 2015-03-26 2018-07-31 浪潮集团有限公司 一种软件调试日志输出控制实现方法
CN105072208A (zh) * 2015-07-09 2015-11-18 北京宇航系统工程研究所 一种sdh设备的mac地址学习方法
CN107666445B (zh) * 2016-07-29 2021-09-07 中兴通讯股份有限公司 一种分布式系统mac地址处理方法和装置
CN107770076B (zh) * 2016-08-23 2020-12-04 中兴通讯股份有限公司 一种哈希冲突的处理方法、装置及交换设备
CN109218204A (zh) * 2017-06-29 2019-01-15 中兴通讯股份有限公司 一种解决mac hash冲突的方法和装置
CN109218458B (zh) * 2017-07-07 2022-05-27 中兴通讯股份有限公司 Mac地址的写入方法、设备及计算机可读存储介质
CN108134856B (zh) * 2017-12-25 2020-10-23 杭州叙简科技股份有限公司 一种基于网络树的虚拟化mac地址防冲突方法和装置
CN108632148B (zh) * 2017-12-29 2020-06-16 西安电子科技大学 基于预读取方式的学习mac地址的装置及方法
CN108307001B (zh) * 2018-04-28 2021-07-27 深圳市风云实业有限公司 Mac地址老化方法、装置及电子设备
CN108418759B (zh) * 2018-05-31 2020-09-08 新华三技术有限公司 一种mac地址表项处理方法及装置
CN108848034B (zh) * 2018-07-17 2021-04-27 新华三技术有限公司 一种网络设备及表项学习方法
CN109327462B (zh) * 2018-11-14 2020-10-27 盛科网络(苏州)有限公司 一种基于l2vpn网络的mac地址认证方法
CN111107068B (zh) * 2019-12-09 2021-03-09 江苏云涌电子科技股份有限公司 一种fpga高效规则匹配方法及终端
CN111355823B (zh) * 2020-02-17 2023-04-07 杭州迪普科技股份有限公司 Mac地址表项的老化处理方法和装置
CN111343089B (zh) * 2020-02-17 2022-03-25 烽火通信科技股份有限公司 解决mac地址hash冲突导致洪泛问题的方法及系统
CN112087388B (zh) * 2020-08-17 2022-03-08 深圳市风云实业有限公司 一种l2数据报文的转发方法
CN112637072B (zh) * 2020-12-23 2022-08-02 北京时代民芯科技有限公司 一种用于交换芯片地址存储及查找的快速并行电路及方法
CN113783636A (zh) * 2020-12-29 2021-12-10 北京京东尚科信息技术有限公司 通信设备的测试方法、装置、介质及电子设备
CN112667867B (zh) * 2020-12-31 2022-05-10 北京卓讯科信技术有限公司 一种基于tcam特征码的匹配冲突检查方法和设备
CN113904987B (zh) * 2021-10-29 2022-11-15 西安微电子技术研究所 一种mac地址路由管理控制器、系统及控制方法
CN114785396B (zh) * 2022-03-09 2024-04-12 西安电子科技大学 逻辑端口配置、查找映射及流量管理方法、系统及终端
CN115118662A (zh) * 2022-06-16 2022-09-27 浪潮思科网络科技有限公司 一种基于arp表的哈希冲突处理方法、系统、设备及介质
CN115334046B (zh) * 2022-07-04 2023-09-01 超聚变数字技术有限公司 一种mac地址删除方法及装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101232444A (zh) * 2008-01-22 2008-07-30 杭州华三通信技术有限公司 哈希冲突解决方法、装置及具有该装置的交换设备
CN103117931A (zh) * 2013-02-21 2013-05-22 烽火通信科技股份有限公司 基于哈希表和tcam表的mac地址硬件学习方法及系统

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101232444A (zh) * 2008-01-22 2008-07-30 杭州华三通信技术有限公司 哈希冲突解决方法、装置及具有该装置的交换设备
CN103117931A (zh) * 2013-02-21 2013-05-22 烽火通信科技股份有限公司 基于哈希表和tcam表的mac地址硬件学习方法及系统

Also Published As

Publication number Publication date
CN103731355A (zh) 2014-04-16

Similar Documents

Publication Publication Date Title
CN103731355B (zh) 避免mac地址学习时哈希冲突的方法及系统
CN107770076B (zh) 一种哈希冲突的处理方法、装置及交换设备
CN109921996B (zh) 一种高性能的OpenFlow虚拟流表查找方法
US9569561B2 (en) Label masked addressable memory
CN108134748B (zh) 一种基于快速转发表项的丢包方法和装置
CN107547243B (zh) 一种报文转发方法及装置
CN104954218A (zh) 分布式虚拟交换装置及转发方法
CN101834788B (zh) 媒体访问控制地址表项的存储操作方法、装置及设备
CN105052087A (zh) 一种基于流表的表项寻址方法、交换机及控制器
CN108306835A (zh) 一种以太网交换机的输入缓存结构及数据转发方法
CN103560957A (zh) 查表键值构造方法、微码下发方法、装置及系统
US20190349293A1 (en) Managing Data Frames in Switched Networks
CN104486224A (zh) 路由学习方法和设备
CN102291472A (zh) 一种网络地址查找方法及装置
CN102035738A (zh) 一种获取路由信息的方法及装置
CN106301970A (zh) 一种使用转发表收敛以减少tcam表项消耗的芯片实现方法
CN101232508B (zh) 加速多生成树协议网络拓扑收敛的方法及设备
EP2512073A1 (en) Method and device for maintaining routing table
CN106453091B (zh) 路由器转发平面的等价路由管理方法和装置
CN104539561A (zh) 基于报文处理信息的芯片调试方法及装置
CN101699796A (zh) 一种基于流信任的数据报文高速转发的方法、系统及路由器
US9419909B2 (en) Determining when to relearn a relationship between a network address and a port
CN102263700A (zh) 一种报文收发方法、装置和系统
CN106416150B (zh) 一种路由查询方法和网络设备
US9979650B1 (en) Forwarding packets using a probabilistic filter and a grouping technique

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant