[发明专利]避免MAC地址学习时哈希冲突的方法及系统有效
| 申请号: | 201310751196.3 | 申请日: | 2013-12-31 |
| 公开(公告)号: | CN103731355B | 公开(公告)日: | 2017-01-25 |
| 发明(设计)人: | 冷沛聪;魏自强 | 申请(专利权)人: | 迈普通信技术股份有限公司 |
| 主分类号: | H04L12/743 | 分类号: | H04L12/743 |
| 代理公司: | 成都宏顺专利代理事务所(普通合伙)51227 | 代理人: | 周永宏 |
| 地址: | 610041 四川省*** | 国省代码: | 四川;51 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 避免 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收到该中断信息并释放信号量;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于迈普通信技术股份有限公司,未经迈普通信技术股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310751196.3/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种照明无线遥控开关装置
- 下一篇:提醒装置





