CN100355241C - 散列存储表表项位宽压缩的实现方法 - Google Patents
散列存储表表项位宽压缩的实现方法 Download PDFInfo
- Publication number
- CN100355241C CN100355241C CNB031095666A CN03109566A CN100355241C CN 100355241 C CN100355241 C CN 100355241C CN B031095666 A CNB031095666 A CN B031095666A CN 03109566 A CN03109566 A CN 03109566A CN 100355241 C CN100355241 C CN 100355241C
- 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.)
- Expired - Lifetime
Links
Images
Abstract
本发明公开了一种散列存储表(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进行逻辑运算后得到。该方法简单、性能可靠,节省RAM空间,应用范围广。
Description
技术领域
本发明涉及动态地址表的存储管理技术,特别是关于散列存储表(HASH)表项位宽压缩的实现方法。
背景技术
动态地址表是数据链路层与网络层中的数据通信设备的转发引擎内部所必须的功能模块,用于存放和管理数据转发的地址和策略信息。比如,以太网交换、因特网协议(IP)路由、流分类等查表。动态地址表管理模块还要实现地址绑定、基于查找结果的表项数控制等复杂功能。
按实现方式来划分,动态地址表分为内容可寻址存储器表(CAM)和HASH表两种。CAM表是使用硬件实现查找,并且实现查找需要专门的控制器发出不同操作的控制命令,其优点是查找速度快,查找过程中不会出现冲突,通常应用于大容量、高性能的网络核心设备或者芯片内部,其缺点是成本偏高;而HASH表是通过可编程逻辑器件或软件实现查找,该表通常应用于小容量、低性能的网络边缘、终端设备或模块中,并且使用灵活、成本低,但查找速度慢,稳定性和可靠性也较低。目前,提高HASH表项查找速度主要通过逻辑或软件的工作主频或采用冲突的方式来读取RAM表项内容来减小额外等待开销。
例如,在以太网到异步传输模式的转换芯片(ETA,Ethernet to ATM Bridge)上,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逻辑上的单播地址表。
所述单播地址表的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逻辑上的单播地址表来进一步说明本发明的实施方案。
这里,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与VLAN_ID两部分组成,共60比特,加上地址表处理结果的PVC-INDEX(12bits)和一些控制位(4bits),总要求的表项大小为76bits,要使用4×32bits的SSRAM空间(SSRAM为32bits宽),如果能使表项压缩为64bits,则HASH地址管理模块的性能将大大提高,并减少了SSRAM的使用空间进而降低产品成本。
Claims (5)
1、一种散列存储表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进行逻辑运算后得到。
2、根据权利要求1所述的方法,其特征在于,所述输入A比特位输出B+N比特位的算法为循环冗余校验码CRC算法。
3、根据权利要求1所述的方法,其特征在于,所述HASH表为以太网到异步传输模式的转换芯片ETA逻辑上的单播地址表。
4、根据权利要求3所述的方法,其特征在于,所述单播地址表的a部分为MAC地址,MAC地址为48比特,b部分为VLAN_ID,VLAN_ID为12比特,所述N的位数为3。
5、根据权利要求1所述的方法,其特征在于,所述逻辑运算为异或。
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 CN1538661A (zh) | 2004-10-20 |
CN100355241C true 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) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100531097C (zh) * | 2007-02-16 | 2009-08-19 | 华为技术有限公司 | 一种桥接的方法及装置 |
CN101499065B (zh) | 2008-02-01 | 2011-11-02 | 华为技术有限公司 | 基于fa的表项压缩方法及装置、表项匹配方法及装置 |
CN102594931B (zh) * | 2011-01-07 | 2016-03-30 | 中兴通讯股份有限公司 | 一种交换表的维护方法及装置 |
CN102291398B (zh) * | 2011-08-05 | 2017-03-29 | 中兴通讯股份有限公司 | 无线通讯系统中数据压缩与解压缩方法、装置及系统 |
CN109039911B (zh) * | 2018-07-27 | 2021-02-26 | 烽火通信科技股份有限公司 | 一种基于hash查找方式共享ram的方法及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1155799A (zh) * | 1995-12-22 | 1997-07-30 | 德来怀通用仪器公司 | 使用混杂键产生密码签名 |
US6115802A (en) * | 1995-10-13 | 2000-09-05 | Sun Mircrosystems, Inc. | Efficient hash table for use in multi-threaded environments |
KR20030015677A (ko) * | 2001-08-17 | 2003-02-25 | 삼성전자주식회사 | 해시함수를 이용한 데이터베이스 검색방법 |
-
2003
- 2003-04-14 CN CNB031095666A patent/CN100355241C/zh not_active Expired - Lifetime
Patent Citations (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 |
CN1155799A (zh) * | 1995-12-22 | 1997-07-30 | 德来怀通用仪器公司 | 使用混杂键产生密码签名 |
KR20030015677A (ko) * | 2001-08-17 | 2003-02-25 | 삼성전자주식회사 | 해시함수를 이용한 데이터베이스 검색방법 |
Also Published As
Publication number | Publication date |
---|---|
CN1538661A (zh) | 2004-10-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Dai et al. | Bloom filter with noisy coding framework for multi-set membership testing | |
CN103117931B (zh) | 基于哈希表和tcam表的mac地址硬件学习方法及系统 | |
US8542686B2 (en) | Ethernet forwarding database method | |
CN107770076A (zh) | 一种哈希冲突的处理方法、装置及交换设备 | |
US20110317699A1 (en) | Method for media access control address learning and learning rate suppression | |
CN103475584B (zh) | 三态内容寻址存储器(tcam)查询方法和装置 | |
US20090282167A1 (en) | Method and apparatus for bridging | |
CN102754394B (zh) | 一种哈希表存储、查找方法以及装置 | |
CN101022407A (zh) | 一种基于二叉树的流分类查找方法 | |
CN105515997B (zh) | 基于bf_tcam实现零范围扩张的高效范围匹配方法 | |
CN111680489B (zh) | 目标文本的匹配方法和装置、存储介质及电子设备 | |
CN104158744A (zh) | 用于网络处理器的建表和查找方法 | |
CN100355241C (zh) | 散列存储表表项位宽压缩的实现方法 | |
CN101241499B (zh) | 在高内存访问位宽下实现Patricia查找树的方法 | |
CN1319325C (zh) | 一种采用哈希链表查找路由表项的方法 | |
CN113901280A (zh) | 一种集成电路展平式设计的字符串存储与查询系统及方法 | |
Hamdan et al. | Compression techniques used in IoT: A comparitive study | |
US6819671B1 (en) | Relay control circuit using hashing function algorithm | |
CN100426791C (zh) | 一种路由转发表地址查找引擎装置 | |
US20220417324A1 (en) | Computer-implemented method, system, and storage medium for prefetching in a distributed graph architecture | |
CN1184775C (zh) | 多哈希函数的虚通道标识/虚通路标识的查找方法 | |
Kaxiras et al. | Ipstash: A power-efficient memory architecture for ip-lookup | |
CN106878185B (zh) | 一种报文ip地址匹配电路及方法 | |
EP2523399A1 (en) | Method and device for realizing flexible qinq | |
CN105336379B (zh) | 一种信息处理方法及固态存储器 |
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 |
Granted publication date: 20071212 |
|
CX01 | Expiry of patent term |