CN103581024A - Mac地址硬件与软件相结合的学习方法及装置 - Google Patents
Mac地址硬件与软件相结合的学习方法及装置 Download PDFInfo
- Publication number
- CN103581024A CN103581024A CN201310593719.6A CN201310593719A CN103581024A CN 103581024 A CN103581024 A CN 103581024A CN 201310593719 A CN201310593719 A CN 201310593719A CN 103581024 A CN103581024 A CN 103581024A
- Authority
- CN
- China
- Prior art keywords
- hash table
- memory cell
- software
- hash
- grade
- 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.)
- Pending
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明揭示了一种MAC地址硬件与软件相结合的学习方法及装置,包括在FIB处理引擎将一多项式扩展为独立的多个多项式,同时将FDB表拆分为多级哈希表;所述FIB处理引擎根据报文的关键字计算出对应的桶索引;根据所述桶索引查看对应哈希桶存储单元的使用状态,若对应的存储单元为空,则将该报文存储到存储单元空闲较多或已使用的存储单元较少的哈希表中;若所述存储单元不为空,则比较每级哈希表中已使用的存储单元数量和预期使用的存储单元的数量,从而确定是否中断上报CPU,通知软件来解决冲突。本发明在硬件上采用多级存储空间和多个多项式,减少了哈希冲突的发生;在软件上,通过动态调整预期哈希使用率,减少了不必要的软件干预哈希冲突。
Description
技术领域
本发明涉及MAC(MediaAccess Control,媒体访问控制)地址学习领域,尤其是涉及一种MAC地址硬件与软件相结合的学习方法及装置。
背景技术
网络处理器的FIB(fowarding information base,转发信息库)模块既是FDB(Forwarding Data Base,转发数据库)管理者又是它的使用者。FIB通过FDB为网络处理器转发报文提供报文编辑和目的地信息。FDB由关键字(key)和关联的转发数据(associate data)两部分组成,key和associatedata之间是1:1或1:N的关系。FIB模块通过key索引FDB。Key由报文的一些特征值组成,如目的MAC地址(DA)或源MAC地址(SA)。为了降低网络处理器的成本和功耗,目前主流的网路处理器的FIB通过哈希多项式计算key索引和组织FDB,尽量减少TCAM(ternary content addressablememory,三态内容寻址存储器)的使用,但哈希存储存在冲突的问题,为了解决这个问题需要保留少量TCAM为哈希解决冲突使用。
如图1所示FDB Key存储空间是一个二维数组,假设横向的最大桶索引是n-1,纵向的最大桶索引是m-1,这样bucket index(哈希桶索引)索引范围是0到m-1,每个bucket index最多可以存放n-1个key entry即桶深为n-1。当d-left多项式d等于2,一个key通过两个多项式产生两个桶索引值,并且这两个索引值由公式保证不会相同。如果桶索引对应的entry不为空,则把该entry和key比较,如果匹配则返回FDB中该key的AD,不匹配则返回空。
存储key的过程和查找类似,主要用在网络处理器硬件线速MAC地址学习和用户调用FIB接口存储key的应用中。当网络处理器收到报文的MAC SA通过FIB在FDB中没有查找到时,需要存储该MAC地址,网络处理器的硬件学习模块调用FIB查找接口获取由该MAC组成key的索引值,并且返回对应桶entry的状态,如果两个桶索引所对应的entry都不为空,则说明没有存储空间存放该key,这时上报给CPU处理,CPU通过搬移或把key存储到TCAM解决冲突,如果两个桶索引任意一个所对应的entry为空,则把key存储在该entry。
网络处理器的FIB模块直接使用d-left多项式产生哈希桶的索引,会带来以下几个问题:1、存储空间的利用率低,现有技术直接使用d-left计算哈希索引值,如果d-left值是2,在硬件学习的时候,对于没有学习过的MAC key,两次查找不到空entry就认为该条MAC学习失败;2、不支持线速MAC地址学习,由于存储利用率低,需要频繁上报CPU,通过软件搬移或使用TCAM解决哈希冲突使CPU负载重无法及时响应网络处理器其它业务。在需要CPU处理网络处理器上报的各类网络协议报文的情况下无法支持线速MAC地址学习;3、软件搬移解决哈希冲突,由于在FIB模块在管理FDB存储资源时没有把两个桶索引对应的entry使用情况作为存储key的依据,当FDB存储空间利率用还比较低的情况下就出现哈希冲突时,为了提高FDB存储效率只能依靠软件搬移解决哈希冲突。
在现有的芯片设计中,芯片的FIB处理引擎一般没有FDB存储状态信息的维护。FIB只对FDB entry的空闲于否决定是否使用该entry。FIB对于FDB的管理缺乏相应的状态信息,无法在硬件MAC地址时,动态调整两个桶的负荷。同时现有的硬件MAC地址学习的实现不管FDB的哈希桶entry和解决哈希冲突的TCAM entry的使用率,只要有哈希冲突就上报,而仿真测试表明在随着FDB存储利用率的提高,依赖软件解决冲突的可能性越来越低,达到一定比例后软件也无法解决哈希冲突,这样会造成CPU资源的极大浪费。
发明内容
本发明的目的在于克服现有技术的缺陷,提供一种MAC地址硬件与软件相结合的学习方法及装置,通过采用多级FDB存储空间和加入FDB表存储状态信息的维护逻辑,软件和硬件相结合实现了线速MAC地址学习。
为实现上述目的,本发明提出如下技术方案:一种MAC地址硬件与软件相结合的学习方法,包括以下步骤:
步骤一,初始化时,在FIB处理引擎将一多项式扩展为独立的多个多项式,同时将FDB的一级哈希表相应拆分为多级哈希表,每级哈希表中包括多个哈希桶和预期使用的存储单元的数量,所述哈希桶中包括多个存储单元;
步骤二,所述FIB处理引擎根据报文的关键字由多个独立的多项式计算出对应的多个桶索引;
步骤三,根据所述桶索引查看对应哈希桶存储单元的使用状态,若对应的存储单元为空,则将该报文存储到存储单元空闲较多或已使用的存储单元较小的哈希表中;
步骤四,若所述存储单元不为空,则比较每级哈希表中已使用的存储单元数量和预期使用的存储单元的数量,从而确定是否中断上报CPU,通知软件来解决冲突。
优选地,所述多项式为d-left多项式,扩展后的每对独立的d-left多项式的d等于2。
拆分后的每级哈希表对应一块独立编址内存。
所述预期使用的存储单元的数量是软件可配的。
在步骤三中,比较所述桶索引对应的每级哈希表中空闲的存储单元的数量,若每级哈希表中空闲的存储单元的数量不等,则选择空闲存储单元数量较多的哈希表存储该报文;若每级哈希表空闲的存储单元的数量相等,则继续比较每级哈希表已使用的存储单元的数量,选择已使用的存储单元的数量较小的哈希表存储该报文。
通过调用FIB处理引擎的写接口将报文存储到哈希表中。
所述每级哈希表还包括一计数器,每存储一报文,相应计数器便自动加1。
在步骤四中,判断每级哈希表中已使用的存储单元数量和预期使用的存储单元的数量,当已使用的存储单元数量小于等于预期使用的存储单元的数量,则通过中断上报CPU,通知软件解决冲突;当已使用的存储单元数量大于预期使用的存储单元的数量,则放弃上报CPU。
本发明还揭示了一种MAC地址硬件与软件相结合的学习装置,包括网络处理器、硬件学习模块、FIB处理引擎、第一判断单元、第二判断单元和多级FDB哈希表,所述FIB处理引擎内包括多个独立的多项式,每级哈希表内包括多个存储单元,所述网络处理器接收到报文后,根据报文的关键字在FIB处理引擎内由多个多项式计算得到多个桶索引,根据所述桶索引在对应的FDB哈希表中查找匹配,若匹配,则所述硬件学习模块通过调用所述FIB处理引擎的写接口将所述报文存储到经所述第一判断单元选择出的哈希表的存储单元中;若不匹配,则通过第二判断单元判断是否通过中断上报CPU,通知软件来解决冲突。
优选地,每级哈希表中包括一计数器和可调的预期使用的存储单元的数量。
本发明的有益效果是:(1)本发明在芯片硬件上采用多级FDB存储空间,同时使用多对d-left哈希多项式,减少了哈希冲突的发生;(2)在软件上,定期检查FDB表中硬件资源的使用情况,通过维护的FDB存储状态的信息,动态调整预期哈希使用率,减少不必要的软件干预哈希冲突。
附图说明
图1是现有在FIB处理引擎中查找匹配报文关键字的流程示意图;
图2是本发明MAC地址硬件与软件相结合的学习方法的流程示意图;
图3是本发明MAC地址硬件与软件相结合的学习装置的结构示意图。
具体实施方式
下面将结合本发明的附图,对本发明实施例的技术方案进行清楚、完整的描述。
本发明所揭示的一种MAC地址硬件和软件相结合的学习方法,通过硬件与软件相结合,共同完成线速MAC地址的学习。
如图2所示,本实施例在初始化时,在芯片FIB处理引擎将一对d-left多项式扩展为独立的N-1个d-left多项式,每对d-left多项式的d等于2。同时将FDB的一级哈希表相应拆分为m-1级哈希表,每级哈希表对应一块独立编址内存,每级哈希表可以选择使用某个多项式计算本级哈希的桶索引。
每级哈希表中包括m-1个哈希桶、一计数器(图未示)和预期使用的entry(哈希桶存储单元的最小单位)数量。其中,所述计数器用于记录该级哈希表实际使用的entry的数量,每使用该级哈希表的entry一次,该计数器加1,删除entry或entry被老化掉则减1;所述预期使用的entry数量通过软件可以进行调整设置,初始时每级哈希表的预期使用的桶entry数量可以配一个经验值,软件通过定期读取芯片各级哈希表的entry实际使用数量,结合芯片中断上报CPU要求软件解决冲突的频率,实时调整每级哈希表entry的预期使用数量。
当网络处理器收到一个报文时,FIB处理引擎根据报文的关键字用N-1个d-left多项式计算得到N-1个桶索引,一个桶索引对应一级哈希表,每级哈希表统计出桶索引指向的哈希桶中所有空闲的entry数量和该级哈希表已使用的entry数量,其中所述报文的关键字包括报文的源MAC地址、目的MAC地址。
根据计算得到的桶索引查看对应哈希桶存储单元的使用状态,若对应的存储单元为空,则比较所述桶索引对应的每级哈希表中空闲的存储单元的数量,若每级哈希表中空闲的存储单元的数量不等,则调用FIB处理引擎的写接口选择空闲存储单元数量较多的哈希表存储该报文;若每级哈希表空闲的存储单元的数量相等,则继续比较每级哈希表已使用的存储单元的数量,并调用FIB处理引擎的写接口选择已使用的存储单元的数量较小的哈希表存储该报文,即选择存储率最低的哈希表进行存储。
若所述存储单元不为空,说明发生了哈希冲突,则比较每级哈希表中已使用的存储单元数量和预期使用的存储单元的数量,当已使用的存储单元数量小于等于预期使用的存储单元的数量,则通过中断上报CPU,通知软件解决冲突;当已使用的存储单元数量大于预期使用的存储单元的数量,说明当前通过软件解决哈希冲突的可能性已非常小,则放弃上报CPU。
本发明还揭示了一种MAC地址硬件和软件相结合的学习装置,如图3所示,包括网络处理器、硬件学习模块、FIB处理引擎、第一判断单元、第二判断单元和多级FDB哈希表,所述FIB处理引擎内包括多个独立的多项式,所述多项式为d-left多项式,每个独立的d-left多项式的d等于2。每级哈希表内包括多个存储单元。
所述网络处理器接收到报文后,根据报文的关键字在FIB处理引擎内由多个多项式计算得到多个桶索引,所述关键字一般为报文的源MAC地址和目的MAC地址;根据所述桶索引在对应的FDB哈希表中查找匹配,若匹配,所述第一判断单元比较各级哈希表中空闲的存储单元的数量,若每级哈希表中空闲的存储单元的数量不等,则选择出空闲存储单元数量较多的哈希表;若每级哈希表空闲的存储单元的数量相等,则继续比较每级哈希表已使用的存储单元的数量,选择已使用的存储单元的数量较小的哈希表。所述第一判断单元选择结束后,所述硬件学习模块通过调用所述FIB处理引擎的写接口将所述报文存储到经所述第一判断单元选择出的哈希表的存储单元中。
若不匹配,则所述第二判断单元判断每级哈希表中已使用的存储单元数量和预期使用的存储单元的数量,当已使用的存储单元数量小于等于预期使用的存储单元的数量,则通过中断上报CPU,通知软件解决冲突;当已使用的存储单元数量大于预期使用的存储单元的数量,则放弃上报CPU,并丢弃该报文。
本发明把降低哈希冲突并且易于芯片实现的逻辑放在芯片中,通过增加这部分逻辑,易于芯片的验证测试;在软件层面通过定期检查各级哈希表的有效负载,动态调整各级哈希表的预期使用率,在不影响存储空间的使用率的情况下,降低了不必要的软件干预哈希冲突,合理的明确了硬件层面和软件层面对于FDB哈希资源的组织,适用于线速MAC地址学习的应用环境下。
本发明的技术内容及技术特征已揭示如上,然而熟悉本领域的技术人员仍可能基于本发明的教示及揭示而作种种不背离本发明精神的替换及修饰,因此,本发明保护范围应不限于实施例所揭示的内容,而应包括各种不背离本发明的替换及修饰,并为本专利申请权利要求所涵盖。
Claims (10)
1.一种MAC地址硬件与软件相结合的学习方法,其特征在于,包括以下步骤:
步骤一,初始化时,在FIB处理引擎将一多项式扩展为独立的多个多项式,同时将FDB的一级哈希表相应拆分为多级哈希表,每级哈希表中包括多个哈希桶和预期使用的存储单元的数量,所述哈希桶中包括多个存储单元;
步骤二,所述FIB处理引擎根据报文的关键字由多个独立的多项式计算出对应的多个桶索引;
步骤三,根据所述桶索引查看对应哈希桶存储单元的使用状态,若对应的存储单元为空,则将该报文存储到存储单元空闲较多或已使用的存储单元较小的哈希表中;
步骤四,若所述存储单元不为空,则比较每级哈希表中已使用的存储单元数量和预期使用的存储单元的数量,从而确定是否中断上报CPU,通知软件来解决冲突。
2.根据权利要求1所述的MAC地址硬件与软件相结合的学习方法,其特征在于,所述多项式为d-left多项式,扩展后的每对独立的d-left多项式的d等于2。
3.根据权利要求1所述的MAC地址硬件与软件相结合的学习方法,其特征在于,拆分后的每级哈希表对应一块独立编址内存。
4.根据权利要求1所述的MAC地址硬件与软件相结合的学习方法,其特征在于,所述预期使用的存储单元的数量是软件可配的。
5.根据权利要求1所述的MAC地址硬件与软件相结合的学习方法,其特征在于,在步骤三中,比较所述桶索引对应的每级哈希表中空闲的存储单元的数量,若每级哈希表中空闲的存储单元的数量不等,则选择空闲存储单元数量较多的哈希表存储该报文;若每级哈希表空闲的存储单元的数量相等,则继续比较每级哈希表已使用的存储单元的数量,选择已使用的存储单元的数量较小的哈希表存储该报文。
6.根据权利要求5所述的MAC地址硬件与软件相结合的学习方法,其特征在于,通过调用FIB处理引擎的写接口将报文存储到哈希表中。
7.根据权利要求1所述的MAC地址硬件与软件相结合的学习方法,其特征在于,所述每级哈希表还包括一计数器,每存储一报文,相应计数器便自动加1。
8.根据权利要求1所述的MAC地址硬件与软件相结合的学习方法,其特征在于,在步骤四中,判断每级哈希表中已使用的存储单元数量和预期使用的存储单元的数量,当已使用的存储单元数量小于等于预期使用的存储单元的数量,则通过中断上报CPU,通知软件解决冲突;当已使用的存储单元数量大于预期使用的存储单元的数量,则放弃上报CPU。
9.一种MAC地址硬件与软件相结合的学习装置,其特征在于,包括网络处理器、硬件学习模块、FIB处理引擎、第一判断单元、第二判断单元和多级FDB哈希表,所述FIB处理引擎内包括多个独立的多项式,每级哈希表内包括多个存储单元,所述网络处理器接收到报文后,根据报文的关键字在FIB处理引擎内由多个多项式计算得到多个桶索引,根据所述桶索引在对应的FDB哈希表中查找匹配,若匹配,则所述硬件学习模块通过调用所述FIB处理引擎的写接口将所述报文存储到经所述第一判断单元选择出的哈希表的存储单元中;若不匹配,则通过第二判断单元判断是否通过中断上报CPU,通知软件来解决冲突。
10.根据权利要求9所述的MAC地址硬件与软件相结合的学习装置,其特征在于,每级哈希表中包括一计数器和可调的预期使用的存储单元的数量。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310593719.6A CN103581024A (zh) | 2013-11-21 | 2013-11-21 | Mac地址硬件与软件相结合的学习方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310593719.6A CN103581024A (zh) | 2013-11-21 | 2013-11-21 | Mac地址硬件与软件相结合的学习方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103581024A true CN103581024A (zh) | 2014-02-12 |
Family
ID=50051986
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310593719.6A Pending CN103581024A (zh) | 2013-11-21 | 2013-11-21 | Mac地址硬件与软件相结合的学习方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103581024A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107332774A (zh) * | 2017-06-09 | 2017-11-07 | 烽火通信科技股份有限公司 | 一种vpls中基于软硬件协同进行mac地址学习的方法 |
WO2018120109A1 (zh) * | 2016-12-30 | 2018-07-05 | 华为技术有限公司 | 数据处理的方法和装置 |
CN109656468A (zh) * | 2017-10-11 | 2019-04-19 | 深圳市中兴微电子技术有限公司 | 一种实现数据存储的方法及装置 |
CN111309772A (zh) * | 2020-03-23 | 2020-06-19 | 优刻得科技股份有限公司 | 数据操作的管理方法及硬件处理模块 |
CN113507415A (zh) * | 2021-05-31 | 2021-10-15 | 新华三信息安全技术有限公司 | 一种表项处理方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101655861A (zh) * | 2009-09-08 | 2010-02-24 | 中国科学院计算技术研究所 | 基于双计数布鲁姆过滤器的哈希方法和哈希装置 |
CN103001878A (zh) * | 2012-11-26 | 2013-03-27 | 中兴通讯股份有限公司 | Mac地址哈希冲突的确定方法及装置 |
CN103238145A (zh) * | 2010-12-03 | 2013-08-07 | 华为技术有限公司 | 用于网络装备中的高性能、可更新和确定的哈希表的方法和设备 |
-
2013
- 2013-11-21 CN CN201310593719.6A patent/CN103581024A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101655861A (zh) * | 2009-09-08 | 2010-02-24 | 中国科学院计算技术研究所 | 基于双计数布鲁姆过滤器的哈希方法和哈希装置 |
CN103238145A (zh) * | 2010-12-03 | 2013-08-07 | 华为技术有限公司 | 用于网络装备中的高性能、可更新和确定的哈希表的方法和设备 |
CN103001878A (zh) * | 2012-11-26 | 2013-03-27 | 中兴通讯股份有限公司 | Mac地址哈希冲突的确定方法及装置 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018120109A1 (zh) * | 2016-12-30 | 2018-07-05 | 华为技术有限公司 | 数据处理的方法和装置 |
CN107332774A (zh) * | 2017-06-09 | 2017-11-07 | 烽火通信科技股份有限公司 | 一种vpls中基于软硬件协同进行mac地址学习的方法 |
CN107332774B (zh) * | 2017-06-09 | 2019-12-03 | 烽火通信科技股份有限公司 | 一种vpls中基于软硬件协同进行mac地址学习的方法 |
CN109656468A (zh) * | 2017-10-11 | 2019-04-19 | 深圳市中兴微电子技术有限公司 | 一种实现数据存储的方法及装置 |
CN111309772A (zh) * | 2020-03-23 | 2020-06-19 | 优刻得科技股份有限公司 | 数据操作的管理方法及硬件处理模块 |
CN113507415A (zh) * | 2021-05-31 | 2021-10-15 | 新华三信息安全技术有限公司 | 一种表项处理方法及装置 |
CN113507415B (zh) * | 2021-05-31 | 2022-11-18 | 新华三信息安全技术有限公司 | 一种表项处理方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10114749B2 (en) | Cache memory system and method for accessing cache line | |
US20190114213A1 (en) | Streaming data distributed processing method and device | |
US8200628B2 (en) | Multi-tenancy data storage and access method and apparatus | |
CN102479207B (zh) | 一种信息搜索的方法、系统及信息搜索设备 | |
CN103581024A (zh) | Mac地址硬件与软件相结合的学习方法及装置 | |
CN102362464B (zh) | 内存访问监测方法和装置 | |
CN108259328B (zh) | 报文转发方法及装置 | |
US9210219B2 (en) | Systems and methods for consistent hashing using multiple hash rings | |
CN101692651A (zh) | 一种哈希查找表的方法和装置 | |
CN101834788B (zh) | 媒体访问控制地址表项的存储操作方法、装置及设备 | |
CN102880724A (zh) | 处理哈希冲突的方法及系统 | |
CN106599091B (zh) | 基于键值存储的rdf图结构存储和索引方法 | |
CN107229747A (zh) | 一种基于流式处理框架的大规模数据处理装置及方法 | |
US20090282167A1 (en) | Method and apparatus for bridging | |
CN102970349B (zh) | 一种dht网络的存储负载均衡方法 | |
CN104166649B (zh) | 一种用于搜索引擎的缓存方法和设备 | |
US20150020193A1 (en) | Automatic Isolation and Detection of Outbound Spam | |
CN104253754A (zh) | 一种acl快速匹配的方法和设备 | |
CN100487697C (zh) | 一种应用改进的哈希方法进行查找的方法 | |
CN101599910A (zh) | 报文发送的方法及设备 | |
CN103186542A (zh) | 一种数据查询的方法及装置 | |
CN114996023B (zh) | 目标缓存装置、处理装置、网络设备及表项获取方法 | |
US20210149960A1 (en) | Graph Data Storage Method, System and Electronic Device | |
US11416517B2 (en) | Partitioning data in a clustered database environment | |
CN103064901A (zh) | 一种ram、网络处理系统和一种ram查表方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20140212 |