CN1538661A - 散列存储表表项位宽压缩的实现方法 - Google Patents
散列存储表表项位宽压缩的实现方法 Download PDFInfo
- Publication number
- CN1538661A CN1538661A CNA031095666A CN03109566A CN1538661A CN 1538661 A CN1538661 A CN 1538661A CN A031095666 A CNA031095666 A CN A031095666A CN 03109566 A CN03109566 A CN 03109566A CN 1538661 A CN1538661 A CN 1538661A
- Authority
- CN
- China
- Prior art keywords
- hash
- bit
- bits
- list item
- vlan
- 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.)
- Granted
Links
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种散例存储表(HASH)表项位宽压缩的实现方法,一种散例存储表(HASH)表项位宽压缩的实现方法,该HASH表中表项至少含有a和b两部分的关键字(KEY),a部分的比特位数为A,b部分的比特位数为B,且A大于B,其特征在于,该方法包括以下步骤:删除HASH表中的表项b部分,保留a部分,得到压缩后的HASH表;并设置压缩后的HASH表的索引值。该方法简单、性能可靠,节省RAM空间,应用范围广。
Description
技术领域
本发明涉及动态地址表的存储管理技术,特别是关于散例存储表(HASH)表项位宽压缩的实现方法。
背景技术
动态地址表是数据链路层与网络层中的数据通信设备的转发引擎内部所必须的功能模块,用于存放和管理数据转发的地址和策略信息。比如,以太网交换、因特网协议(IP)路由、流分类等查表。动态地址表管理模块还要实现地址绑定、基于查找结果的表项数控制等复杂功能。
按实现方式来划分,动态地址表分为内容可寻址存储器表(CAM)和HASH表两种。CAM表是使用硬件实现查找,并且实现查找需要专门的控制器发出不同操作的控制命令,其优点是查找速度快,查找过程中不会出现冲突,通常应用于大容量、高性能的网络核心设备或者芯片内部,其缺点是成本偏高;而HASH表是通过可编程逻辑器件或软件实现查找,该表通常应用于小容量、低性能的网络边缘、终端设备或模块中,并且使用灵活、成本低,但查找速度慢,稳定性和可靠性也较低。目前,提高HASH表项查找速度主要通过逻辑或软件的工作主频或采用冲突的方式来读取RAM表项内容来减小额外等待开销。
例如,ETA逻辑上的单播地址表是一种动态地址表,用于存放以太网帧的媒体访问控制(MAC)地址与ATM-PVC之间的对应关系,该表采用HASH表来实现。该表最多支持4K个地址,上行方式通过MAC地址和虚拟局域网号(VLAN-ID)进行地址查找,下行方向通过添加新表项或更新ICI来进行地址学习,定时删掉不活跃的表项,能自动完成地址表的老化刷新。
如表1所示,ETA逻辑上的单播地址表包括控制位、PVC连接号(PVC-INDEX)、VLAN_ID和MAC_Addr等表项,共76比特。其中,控制位占4比特;PVC-INDEX表明地址表处理结果,占12比特;VLAN_ID表示地址所在区域地址,占12比特;MAC_Addr表示在某区域中的具体地址,占48比特。这里,VLAN_ID和MAC_Addr可以看作KEY的两个部分,MAC_Addr为A部分,VLAN_ID为B部分。
控制位(75-72) | PVC-INDEX(71-60) | VALN-ID(59-48) | MAC_Addr(47-0) |
表1
每次进行地址查找时,将用48位的MAC_Addr和12位的VLAN_ID一起进行HASH算法,得到15位的HASH_Index。利用该值索引单播地址表,然后从相应表项中读出MAC_Addr和VLAN_ID,然后用进行HASH算法的MAC_Addr和VLAN_ID与查找得到的MAC_Addr和VLAN_ID进行比较,如果相同,该表项中PVC_INDEX即为查找结果;否则,查找错误。
由于在进行地址查找或学习时,都将用KEY计算出HASH索引,利用该索引对应的动态地址表中的数据进行比较,当动态地址表中地址数据的占用位宽过宽时,必然占用较多静态存储(RAM)空间,导致读RAM周期加长,同时成本较高,应用面比较小。
发明内容
有鉴于此,本发明提供了散例存储表表项位宽压缩的实现方法,使其在不影响使用的前提下缩短HASH表中的数据位宽。
一种散例存储表(HASH)表项位宽压缩的实现方法,该HASH表中表项至少含有a和b两部分的关键字(KEY),a部分的比特位数为A,b部分的比特位数为B,且A大于B,该方法包括以下步骤:
删除HASH表中的表项b部分,保留a部分,得到压缩后的HASH表;并设置压缩后的HASH表的索引值。
所述索引值是将b部分的低位补N位0获得C,且N为大于或等于1的自然数;将a部分通过输入A比特位输出B+N比特位的算法,得到B+N比特的值,然后将所述B+N比特的值与所述C逻辑运算后得到。
所述输入A比特位输出B+N比特位的算法为循环冗余校验码(CRC)算法。
所述HASH表为(ETA,Ethernet to ATM Bridge)逻辑上的单播地址表。
所述单播地址表的a部分为MAC地址,MAC地址为48比特,b部分为VLAN-ID,VLAN-ID为12比特,所述N的位数为3。
所述逻辑运算为异或。
本发明通过删除VLAN-ID标志位,在保证动态地址表功能不变的前提下,从而压缩了动态地址表项的位宽,并且方法简单、性能可靠,节省RAM空间,应用范围广。
附图说明
图1为本发明计算HASH索引的方法的流程示意图。
具体实施方式
本发明的核心内容是在保证动态地址表完整功能的前提下删除某一部分,并且计算出新的HASH索引,从而实现动态地址表的位宽压缩。
由于KEY包括a、b两部分,且a部分的比特位数是A,b部分的比特位数是B,且A大于B,参见图1所示,本发明计算HASH索引的方法是包括以下步骤:
步骤101、将b部分的低位补N位0,获得C,且N为大于等于1的自然数;
步骤102、将a部分通过输入A比特位输出B+N比特位的算法,得到B+N比特位的值;
步骤103、将该值与C值逻辑运算,得到B+N比特位数值的HASH索引值;且较佳的,逻辑运算为异或算法。
下面以应用于逻辑上的单播地址表(ETA,Ethernet to ATM Bridge)来进一步说明本发明的实施方案。
这里,VLAN_ID和MAC_Addr可以看作KEY的两个部分,MAC_Addr为a部分,VLAN_ID为b部分。本实施例定义了关键字和索引之间的映射关系,即HASH函数,输入A比特位输出B+N比特位的算法采用循环冗余校验码(CRC)算法。其定义如下:
HASH_index=HASH_func(key)={CRC15(MAC[47:0])}xor{VLAN_ID[11:0],3′b000}
其中“CRC15”是48bit输入15bit输出的CRC算法,12bit的VLAN-ID低位补3个0后,与48bitMAC地址的15bitCRC结果异或,最终得到15bit的HASH索引。
通过上面算法得到的HASH_Index值中已隐含了VLAN_ID信息,如果需查找的MAC_Addr相同,而VLAN_ID不同,那么查找结果HASH_Index值必然不同。因此,每次进行地址查找时,只需比较MAC_Addr是否相等即可。因此,在动态地址表项中VLAN_ID位就显得不重要了,而删除VLAN_ID位就可以大大缩减位宽。
具体的说,当两个HASH表项的MAC地址相同、而VLAN-ID不同时,进行HASH映射后得到的index的高12位不同,而低3位总是相同的,也就是说,它们在HASH动态地址表中的位置肯定相差8个表项以上。如果采用线性探测的次数小于了8次,就可以保证每次查找过程中不会出现多个MAC地址相同、但VLAN-ID不同的表项。因此,在每个HASH动态地址表的表项中可以只存放48位的MAC地址,判断表项是否匹配也只需比较MAC地址是否相同就可以了。
因此,这样每个单播表项占用2个SRAM单元(共64bit),如表2所示,每个表项包括4比特的控制位、12比特的PVC-INDEX、48比特的MAC_Addr。
控制位(75-72) | PVC-INDEX(59-48) | MAC_Addr(47-0) |
表2
并且,由于经过HASH算法后的索引值相当于将原来的KEY压缩后得到的,所以,利用该索引值索引出的表项中可能存在含有的MAC值不相等的情况,也就是索引到的表项不是要查找的表项,为了减少这样的碰撞,本实施例采用了线性探测法,即读出当前索引对应表项开始的连续4个表项,这样就可以大大减少查找错误的概率。
由于ETA逻辑的地址学习KEY由MAC_Addr与VLANID两部分组成,共60比特,加上地址表处理结果的PVC-INDEX(12bits)和一些控制位(4bits),总要求的表项大小为76bits,要使用4×32bits的SSRAM空间(SSRAM为32bits宽),如果能使表项压缩为64bits,则HASH地址管理模块的性能将大大提高,并减少了SSRAM的使用空间进而降低产品成本。
Claims (6)
1、一种散例存储表(HASH)表项位宽压缩的实现方法,该HASH表中表项至少含有a和b两部分的关键字(KEY),a部分的比特位数为A,b部分的比特位数为B,且A大于B,其特征在于,该方法包括以下步骤:
删除HASH表中的表项b部分,保留a部分,得到压缩后的HASH表;
并设置压缩后的HASH表的索引值。
2、根据权利要求1所述的方法,其特征在于,所述索引值是将b部分的低位补N位0获得C,且N为大于或等于1的自然数;将a部分通过输入A比特位输出B+N比特位的算法,得到B+N比特的值,然后将所述B+N比特的值与所述C进行逻辑运算后得到。
3、根据权利要求1所述的方法,其特征在于,所述输入A比特位输出B+N比特位的算法为循环冗余校验码(CRC)算法。
4、根据权利要求1所述的方法,其特征在于,所述HASH表为(ETA,Ethernet to ATM Bridge)逻辑上的单播地址表。
5、根据权利要求4所述的方法,其特征在于,所述单播地址表的a部分为MAC地址,MAC地址为48比特,b部分为VLAN-ID,VLAN-ID为12比特,所述N的位数为3。
6、根据权利要求2所述的方法,其特征在于,所述逻辑运算为异或。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB031095666A CN100355241C (zh) | 2003-04-14 | 2003-04-14 | 散列存储表表项位宽压缩的实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB031095666A CN100355241C (zh) | 2003-04-14 | 2003-04-14 | 散列存储表表项位宽压缩的实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1538661A true CN1538661A (zh) | 2004-10-20 |
CN100355241C CN100355241C (zh) | 2007-12-12 |
Family
ID=34319393
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB031095666A Expired - Lifetime CN100355241C (zh) | 2003-04-14 | 2003-04-14 | 散列存储表表项位宽压缩的实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100355241C (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008101423A1 (fr) * | 2007-02-16 | 2008-08-28 | Huawei Technologies Co., Ltd. | Système et procédé de montage en pont |
WO2009097762A1 (zh) * | 2008-02-01 | 2009-08-13 | Huawei Technologies Co., Ltd. | 基于fa的表项压缩方法及装置、表项匹配方法及装置 |
CN102291398A (zh) * | 2011-08-05 | 2011-12-21 | 中兴通讯股份有限公司 | 无线通讯系统中数据压缩与解压缩方法、装置及系统 |
WO2012092835A1 (zh) * | 2011-01-07 | 2012-07-12 | 中兴通讯股份有限公司 | 一种交换表的维护方法及装置 |
CN109039911A (zh) * | 2018-07-27 | 2018-12-18 | 烽火通信科技股份有限公司 | 一种基于hash查找方式共享ram的方法及系统 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6115802A (en) * | 1995-10-13 | 2000-09-05 | Sun Mircrosystems, Inc. | Efficient hash table for use in multi-threaded environments |
US5754659A (en) * | 1995-12-22 | 1998-05-19 | General Instrument Corporation Of Delaware | Generation of cryptographic signatures using hash keys |
KR100744378B1 (ko) * | 2001-08-17 | 2007-07-30 | 삼성전자주식회사 | 해시함수를 이용한 데이터베이스 검색방법 |
-
2003
- 2003-04-14 CN CNB031095666A patent/CN100355241C/zh not_active Expired - Lifetime
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008101423A1 (fr) * | 2007-02-16 | 2008-08-28 | Huawei Technologies Co., Ltd. | Système et procédé de montage en pont |
WO2009097762A1 (zh) * | 2008-02-01 | 2009-08-13 | Huawei Technologies Co., Ltd. | 基于fa的表项压缩方法及装置、表项匹配方法及装置 |
US8244693B2 (en) | 2008-02-01 | 2012-08-14 | Huawei Technologies Co., Ltd. | Method and device for compressing table based on finite automata, method and device for matching table |
WO2012092835A1 (zh) * | 2011-01-07 | 2012-07-12 | 中兴通讯股份有限公司 | 一种交换表的维护方法及装置 |
CN102594931A (zh) * | 2011-01-07 | 2012-07-18 | 中兴通讯股份有限公司 | 一种交换表的维护方法及装置 |
CN102594931B (zh) * | 2011-01-07 | 2016-03-30 | 中兴通讯股份有限公司 | 一种交换表的维护方法及装置 |
CN102291398A (zh) * | 2011-08-05 | 2011-12-21 | 中兴通讯股份有限公司 | 无线通讯系统中数据压缩与解压缩方法、装置及系统 |
CN102291398B (zh) * | 2011-08-05 | 2017-03-29 | 中兴通讯股份有限公司 | 无线通讯系统中数据压缩与解压缩方法、装置及系统 |
CN109039911A (zh) * | 2018-07-27 | 2018-12-18 | 烽火通信科技股份有限公司 | 一种基于hash查找方式共享ram的方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN100355241C (zh) | 2007-12-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP1623347B1 (en) | Comparison tree data structures and lookup operations | |
US6928526B1 (en) | Efficient data storage system | |
US7415472B2 (en) | Comparison tree data structures of particular use in performing lookup operations | |
US20060176721A1 (en) | Method and apparatus for managing ternary content addressable memory | |
CN101022407A (zh) | 一种基于二叉树的流分类查找方法 | |
CN113901280A (zh) | 一种集成电路展平式设计的字符串存储与查询系统及方法 | |
CN102075430A (zh) | 深度报文检测dfa状态转移表的压缩与报文匹配方法 | |
CN1538661A (zh) | 散列存储表表项位宽压缩的实现方法 | |
CN111966654A (zh) | 一种基于Trie字典树的混合过滤器 | |
CN1538663A (zh) | 一种采用哈希链表查找路由表项的方法 | |
CN1885820A (zh) | 一种路由转发表地址查找引擎装置 | |
CN1184775C (zh) | 多哈希函数的虚通道标识/虚通路标识的查找方法 | |
Song et al. | Packet classification using coarse-grained tuple spaces | |
EP4217883A1 (en) | Hardware-implemented file reader | |
US7634634B2 (en) | Data search apparatus and a method thereof | |
US7573880B2 (en) | Set-associative memory architecture for routing tables | |
CN109754021B (zh) | 基于范围元组搜索的在线包分类方法 | |
US20140108718A1 (en) | Method and apparatus for setting tcam entry | |
WO2008085340A1 (en) | Accelerating queries using secondary semantic column enumeration | |
US20230101865A1 (en) | Pattern-based string compression | |
US11126622B1 (en) | Methods and apparatus for efficiently scaling result caching | |
CN109240989A (zh) | 文件对象查询方法、装置、终端设备及可读存储介质 | |
TW200933406A (en) | Data item interval indentifier lookup method and system | |
US8244677B2 (en) | Focal point compression method and apparatus | |
CN113343034A (zh) | Ip查找方法、系统及存储介质 |
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 | ||
CX01 | Expiry of patent term | ||
CX01 | Expiry of patent term |
Granted publication date: 20071212 |