CN102375820A - Tcam表项的压缩方法 - Google Patents
Tcam表项的压缩方法 Download PDFInfo
- Publication number
- CN102375820A CN102375820A CN2010102521946A CN201010252194A CN102375820A CN 102375820 A CN102375820 A CN 102375820A CN 2010102521946 A CN2010102521946 A CN 2010102521946A CN 201010252194 A CN201010252194 A CN 201010252194A CN 102375820 A CN102375820 A CN 102375820A
- Authority
- CN
- China
- Prior art keywords
- section
- sections
- compression
- rule
- element value
- 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
Images
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明公开了一种TCAM(Ternary Content Addressable Memory,三态内容寻址寄存器)表项的压缩方法,包括如下步骤:首先把一组没有前缀且只有一个变值元素的TCAM表项,划分为变值元素数值连续的段;通过采用添加新表项或者删除表项的方式,对段进行维护;对于数值连续的段,系统先找出段内可以马上进行掩码压缩的规则子段进行直接压缩,而对段内不能立即压缩的非规则子段,系统首先找出此类段公共数值,然后再进行压缩。经验证,在VPWS、VPLS的捆绑应用中,使用本发明,当表项数目大于100时,压缩率平均在50%以上,且表项数目越多,数值越连续,压缩效率越高。
Description
【技术领域】
本发明涉及一种TCAM(Ternary Content Addressable Memory,三态内容寻址寄存器)表项的压缩方法,属于互联网数据通信内容压缩领域。
【背景技术】
随着互联网的高速发展,网络中节点数目大幅度增长,对路由器接口速率的要求也越来越高,例如支持10G速率的路由器,单包转发处理时间已经要求小于50纳秒,软件路由查找机制显然已不能满足线速转发要求。由于三态内容可寻址寄存器(TCAM)查表速度快,且解决了CIDR最长前缀匹配的问题,已成为业界目前常用的硬件解决方案。
TCAM的每个单元位可以赋予3个逻辑态:0、1或者x,其中x代表一个不确定位,可以起到掩码的作用,这个掩码使得TCAM可以存储那些包含有通配符的规则。TCAM另外一个优点是它所保存的表项可以实现长度灵活配置,结合掩码的应用可以在同一个TCAM芯片中保存任意长度的关键字表项,因此,TCAM非常适用于最长前缀路由的查找。
但是,由于TCAM对路由表项存放的有序性要求,使其表项管理较为复杂。若表项更新时间过长,必然影响查表速度,非常容易引起处理队列阻塞甚至丢包,严重影响路由器的性能,也提高了路由器设计的难度,如对缓存容量提出更高的要求等。
与本发明相关的现有技术请参阅2005年3月2日公告的中国发明专利第CN1191520C号,该专利揭示了一种把都基于树结构的路由压缩以及建立在把TCAM芯片内的空间划分为N个子空间的前缀链约束基础上的前缀更新这两个步骤前后合在一起的TCAM高速更新方法,其中,判断前缀是否需要更新的原则是该节点是否冗余,冗余则不更新,反之,则更新。
然而,现有技术所揭示的方案适用于具有前缀的路由表项的压缩,却不适合于不具有前缀的非路由的普通TCAM表项的压缩。例如,在虚拟私有局域网服务(VPLS)和虚拟专线服务(VPWS)应用中,一个端口可以支持多个虚拟局域网(VLAN)的绑定。这种绑定方式称为捆绑(bundle),它是MEF(Metro Ethernet Forum)城域以太网论坛定义的一种绑定方式。在此种应用下,系统中存在大量的不具有前缀的表项,它们的源端口相同,VLAN不同,而处理相同。现有技术并不适合于此类表项的压缩。
【发明内容】
本发明所要解决的技术问题在于提供一种能够处理没有前缀且只有一个变值元素的TCAM(Ternary Content Addressable Memory,三态内容寻址寄存器)表项的压缩方法。
为解决上述技术问题,本发明采用如下技术方案:一种TCAM表项的压缩方法,其特征在于包括如下步骤:
(1).首先把一组没有前缀且只有一个变值元素的TCAM表项,划分为变值元素数值连续的段;
(2).对于数值连续的段,系统先找出段内可以马上进行掩码压缩的规则子段进行直接压缩;而对段内不能立即压缩的非规则子段,系统首先找出此类段公共数值,然后再进行压缩。
作为本发明的进一步改进,在添加新表项的步骤中,包括如下过程:(a).确定元素值;(b).判断该元素值是否不属于任何段,如果属于,结束;如果不属于,进行下一步;(c).判断元素值是否在某段的边缘,如果不在,就创建新段,其start和end分别为元素值;如果在,进行下一步;(d).判断元素值是否在某两段的边缘,如果不在,把元素值合并入步骤(c)中的该某段,如果在,把该两段合并成一段;(e).结束。
作为本发明的进一步改进,在删除表项的步骤中,包括如下过程:(a).确定删除表项的元素值;(b).判断元素值是否属于某段,如果不属于,结束;如果属于,进行下一步;(c).判断元素值是否在某段的边缘,如果不在,就创建两个新段,范围分别为start~元素值-1,元素值+1~end;如果在,进行下一步;(d).更新步骤(c)中的该某段;(e).结束。
作为本发明的进一步改进,规则子段的压缩包括如下过程:(a).压缩规则子段段(start~end);(b).保存公共数值;(c).得到规则子段压缩后的数据和掩码;(d).对新段(start~end)继续压缩。
作为本发明的进一步改进,非规则子段的压缩包括如下过程:(a).压缩非规则子段段(start~end);(b).保存公共数值;(c).得到规则子段压缩后的数据和掩码;(d).对新段(start~end)继续压缩;(e).提取段公共数值,继续压缩,直至非规则子段不能压缩为止。
作为本发明的进一步改进,所述步骤(1)与步骤(2)之间还包括一个通过采用添加新表项或者删除表项的方式对段进行维护的步骤。
相较于现有技术,经验证,在VPWS、VPLS的捆绑应用中,使用本发明,当表项数目大于100时,压缩率平均在50%以上,且表项数目越多,数值越连续,压缩效率越高。
【附图说明】
图1是本发明压缩方法中添加表项时的段划分流程图。
图2是本发明压缩方法中删除表项时的段划分流程图。
【具体实施方式】
一组没有前缀的TCAM(Ternary Content Addressable Memory,三态内容寻址寄存器)表项,其中表项内的其它元素数值均相同,只有一项元素数值不同,对这样的元素,称为变值元素,本发明就是针对这种TCAM表项,提供一种使用掩码的压缩方法。本发明压缩方法的基本思想是首先把这样的一组TCAM表项,划分为变值元素数值连续的段,然后通过下述方法,对表项段进行压缩。
图1和图2分别描述了在添加和删除表项时,TCAM如何维护表项段。请参图1所示,(1).添加新表项,元素值为a;(2).判断元素值a是否不属于任何段,如果属于,结束;如果不属于,进行下一步;(3).判断元素值a是否在某段的边缘,如果不在,就创建新段,其start和end分别为a;如果在,进行下一步;(4).判断元素值a是否在某两段的边缘,如果不在,把元素值a合并入步骤(3)中的该某段,如果在,把该两段合并成一段;(5).结束。
请参图2所示,(1).删除表项,元素值为a;(2).判断元素值a是否属于某段,如果不属于,结束;如果属于,进行下一步;(3).判断元素值a是否在某段的边缘,如果不在,就创建两个新段,范围分别为start~a-1,a+1~end;如果在,进行下一步;(4).更新步骤(3)中的该某段;(5).结束。
对于一个数值连续的段,本发明使用如下算法,压缩表项段。
首先,系统先找出段内可以马上进行掩码压缩的子段。如子段(4~7)可以直接压缩,其压缩后,data=4,mask=0x1100。这样的段,特征在于start=2x,end=2x+1-1,并被称之为规则子段。规则子段压缩后,data=start,mask=^(2x-1)。
对于不能立即压缩的子段,被称之为非规则子段。非规则字段也可以压缩,系统首先找出此类段公共数值,再进行压缩。如段(6~7)不能直接压缩,找出段公共数值为4,则新段成为(2~3),段(2~3)可以直接压缩。压缩后,data=4+2,mask=0x1110。此类段的公共数值为2x,
对于规则子段的压缩算法伪码如下:
compress_regular_segment(start,end)//压缩规则子段段(start~end)
{
common_value=0;//保存公共数值
While(1)
{
x=log2(start);
//立即得到规则子段压缩后的数据和掩码
data=start+common_value;
mask=^(2x-1);
start=2x+1;
continue;//对新段(start~end)继续压缩
}
}
对于非规则子段的压缩算法伪码如下:
compress_unrelular_segment(start,end)//压缩非规则子段段(start~end)
{
common_value=0;//保存公共数值
While(1)
{
x=log2(start);
if(start==2x)
{
If(end>=2x+1)
{
//立即得到规则子段压缩后的数据和掩码
data=start+common_value;
mask=^(2x-1);
start=2x+1;
continue;//对新段(start~end)继续压缩
}
Else
{
common_value=common_value+2x;
start=start-common_value;
end=end-common_value;
continue;//提取段公共数值common_value,继续压缩。
}
}
else
{
common_value=common_value+2x;
start=start-common_value;
end=end-common_value;
continue;//提取段公共数值common_value,继续压缩。
}
}
}
本发明的压缩方法,先把表项分为数值连续的段,然后对段进行压缩。可以实现对没有前缀且只有一个变值元素的TCAM表项进行压缩。经验证,在VPWS、VPLS的捆绑应用中,使用本发明,当表项数目大于100时,压缩率平均在50%以上,且表项数目越多,数值越连续,压缩效率越高。
综上所述,以上仅为本发明的较佳实施例而已,不应以此限制本发明的范围,即凡是依本发明权利要求书及发明说明书内容所作的简单的等效变化与修饰,皆应仍属本发明专利涵盖的范围内。
Claims (6)
1.一种TCAM表项的压缩方法,其特征在于包括如下步骤:
(1).首先把一组没有前缀且只有一个变值元素的TCAM(Ternary ContentAddressable Memory,三态内容寻址寄存器)表项,划分为变值元素数值连续的段;
(2).对于数值连续的段,系统先找出段内可以马上进行掩码压缩的规则子段进行直接压缩;而对段内不能立即压缩的非规则子段,系统首先找出此类段公共数值,然后再进行压缩。
2.如权利要求1所述的压缩方法,其特征在于:在添加新表项的步骤中,包括如下过程:(a).确定元素值;(b).判断该元素值是否不属于任何段,如果属于,结束;如果不属于,进行下一步;(c).判断元素值是否在某段的边缘,如果不在,就创建新段,其start和end分别为元素值;如果在,进行下一步;(d).判断元素值是否在某两段的边缘,如果不在,把元素值合并入步骤(c)中的该某段,如果在,把该两段合并成一段;(e).结束。
3.如权利要求1所述的压缩方法,其特征在于:在删除表项的步骤中,包括如下过程:(a).确定删除表项的元素值;(b).判断元素值是否属于某段,如果不属于,结束;如果属于,进行下一步;(c).判断元素值是否在某段的边缘,如果不在,就创建两个新段,范围分别为start~元素值-1,元素值+1~end;如果在,进行下一步;(d).更新步骤(c)中的该某段;(e).结束。
4.如权利要求1所述的压缩方法,其特征在于:规则子段的压缩包括如下过程:(a).压缩规则子段段(start~end);(b).保存公共数值;(c).得到规则子段压缩后的数据和掩码;(d).对新段(start~end)继续压缩。
5.如权利要求1所述的压缩方法,其特征在于:非规则子段的压缩包括如下过程:(a).压缩非规则子段段(start~end);(b).保存公共数值;(c).得到规则子段压缩后的数据和掩码;(d).对新段(start~end)继续压缩;(e).提取段公共数值,继续压缩,直至非规则子段不能压缩为止。
6.如权利要求1所述的压缩方法,其特征在于:所述步骤(1)与步骤(2)之间还包括一个通过采用添加新表项或者删除表项的方式对段进行维护的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010252194 CN102375820B (zh) | 2010-08-12 | 2010-08-12 | Tcam表项的压缩方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010252194 CN102375820B (zh) | 2010-08-12 | 2010-08-12 | Tcam表项的压缩方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102375820A true CN102375820A (zh) | 2012-03-14 |
CN102375820B CN102375820B (zh) | 2013-07-31 |
Family
ID=45794443
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201010252194 Active CN102375820B (zh) | 2010-08-12 | 2010-08-12 | Tcam表项的压缩方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102375820B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111988231A (zh) * | 2020-08-20 | 2020-11-24 | 国家计算机网络与信息安全管理中心 | 一种掩码五元组规则匹配的方法及装置 |
CN112787938A (zh) * | 2021-01-14 | 2021-05-11 | 北京星网锐捷网络技术有限公司 | 一种路由表项配置方法及装置 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1447223A (zh) * | 2003-04-04 | 2003-10-08 | 清华大学 | 支持路由压缩的tcam高速更新方法 |
-
2010
- 2010-08-12 CN CN 201010252194 patent/CN102375820B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1447223A (zh) * | 2003-04-04 | 2003-10-08 | 清华大学 | 支持路由压缩的tcam高速更新方法 |
Non-Patent Citations (2)
Title |
---|
刘刚等: "基于三态内容寻址存储器的路由表", 《西安交通大学学报》 * |
赵峥嵘等: "TCAM表项管理算法研究", 《微计算机信息(管控一体化)》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111988231A (zh) * | 2020-08-20 | 2020-11-24 | 国家计算机网络与信息安全管理中心 | 一种掩码五元组规则匹配的方法及装置 |
CN111988231B (zh) * | 2020-08-20 | 2022-07-22 | 国家计算机网络与信息安全管理中心 | 一种掩码五元组规则匹配的方法及装置 |
CN112787938A (zh) * | 2021-01-14 | 2021-05-11 | 北京星网锐捷网络技术有限公司 | 一种路由表项配置方法及装置 |
CN112787938B (zh) * | 2021-01-14 | 2022-09-20 | 北京星网锐捷网络技术有限公司 | 一种路由表项配置方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN102375820B (zh) | 2013-07-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11102120B2 (en) | Storing keys with variable sizes in a multi-bank database | |
EP3035613B1 (en) | Ccn routing using hardware-assisted hash tables | |
CN101345707B (zh) | 一种实现IPv6报文分类的方法及设备 | |
US7706375B2 (en) | System and method of fast adaptive TCAM sorting for IP longest prefix matching | |
US20070171911A1 (en) | Routing system and method for managing rule entry thereof | |
US9369293B2 (en) | Compressing singly linked lists sharing common nodes for multi-destination group expansion | |
WO2016184029A1 (zh) | 支持哈希查找和路由查找的存储、查找方法和装置、存储介质 | |
US8179792B1 (en) | Packet de-duplication | |
CN109639579B (zh) | 组播报文的处理方法及装置、存储介质、处理器 | |
CN107431660B (zh) | 检索装置、检索方法及记录介质 | |
Bremler-Barr et al. | CompactDFA: Scalable pattern matching using longest prefix match solutions | |
US7403526B1 (en) | Partitioning and filtering a search space of particular use for determining a longest prefix match thereon | |
US10587516B1 (en) | Hash lookup table entry management in a network device | |
WO2016106506A1 (zh) | 一种路由方法和设备 | |
CN102045412B (zh) | IPv6地址前缀压缩存储方法及设备 | |
Le et al. | Memory-efficient and scalable virtual routers using FPGA | |
CN106453091B (zh) | 路由器转发平面的等价路由管理方法和装置 | |
CN102375820B (zh) | Tcam表项的压缩方法 | |
US11775342B2 (en) | System and method for processing information hierarchy management | |
Chang et al. | LayeredTrees: Most specific prefix-based pipelined design for on-chip IP address lookups | |
CN112187743B (zh) | 一种基于ip地址最长前缀的网络策略匹配方法及系统 | |
CN114448886A (zh) | 一种流表的处理方法及装置 | |
Li et al. | Deterministic and efficient hash table lookup using discriminated vectors | |
Kogan et al. | Efficient FIB representations on distributed platforms | |
Matoušek et al. | Towards hardware architecture for memory efficient IPv4/IPv6 Lookup in 100 Gbps networks |
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 | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: 215000 unit 13 / 16, 4th floor, building B, No.5 Xinghan street, Suzhou Industrial Park, Jiangsu Province Patentee after: Suzhou Shengke Communication Co.,Ltd. Address before: 215006 unit 13 / 16, 4th floor, building B, No. 5, Xinghan street, Suzhou Industrial Park, Suzhou City, Jiangsu Province Patentee before: CENTEC NETWORKS (SU ZHOU) Co.,Ltd. |