Tcam表项的压缩方法

文档序号:7756711阅读:319来源:国知局
专利名称:Tcam表项的压缩方法
TCAM表项的压缩方法
技术领域
本发明涉及一种 TCAM(Ternary Content Addressable Memory,三态内容寻址寄存器)表项的压缩方法,属于互联网数据通信内容压缩领域。
背景技术
随着互联网的高速发展,网络中节点数目大幅度增长,对路由器接口速率的要求也越来越高,例如支持IOG速率的路由器,单包转发处理时间已经要求小于50纳秒,软件路由查找机制显然已不能满足线速转发要求。由于三态内容可寻址寄存器(TCAM)查表速度快,且解决了 CIDR最长前缀匹配的问题,已成为业界目前常用的硬件解决方案。TCAM的每个单元位可以赋予3个逻辑态0、1或者X,其中χ代表一个不确定位, 可以起到掩码的作用,这个掩码使得TCAM可以存储那些包含有通配符的规则。TCAM另外一个优点是它所保存的表项可以实现长度灵活配置,结合掩码的应用可以在同一个TCAM芯片中保存任意长度的关键字表项,因此,TCAM非常适用于最长前缀路由的查找。但是,由于TCAM对路由表项存放的有序性要求,使其表项管理较为复杂。若表项更新时间过长,必然影响查表速度,非常容易引起处理队列阻塞甚至丢包,严重影响路由器的性能,也提高了路由器设计的难度,如对缓存容量提出更高的要求等。与本发明相关的现有技术请参阅2005年3月2日公告的中国发明专利第 CN1191520C号,该专利揭示了一种把都基于树结构的路由压缩以及建立在把TCAM芯片内的空间划分为N个子空间的前缀链约束基础上的前缀更新这两个步骤前后合在一起的 TCAM高速更新方法,其中,判断前缀是否需要更新的原则是该节点是否冗余,冗余则不更新,反之,则更新。然而,现有技术所揭示的方案适用于具有前缀的路由表项的压缩,却不适合于不具有前缀的非路由的普通TCAM表项的压缩。例如,在虚拟私有局域网服务(VPLQ和虚拟专线服务(VPWQ应用中,一个端口可以支持多个虚拟局域网(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)与步骤( 之间还包括一个通过采用添加新表项或者删除表项的方式对段进行维护的步骤。相较于现有技术,经验证,在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)中的该某段,如果在,把该两段合并成一段;( .结束。CN 102375820 A
说明书
3/4页

请参图2所示,(1).删除表项,元素值为a; (2).判断元素值a是否属于某段,如果不属于,结束;如果属于,进行下一步;(3).判断元素值a是否在某段的边缘,如果不在, 就创建两个新段,范围分别为start a-1,a+1 end ;如果在,进行下一步;(4).更新步骤(3)中的该某段;(5).结束。对于一个数值连续的段,本发明使用如下算法,压缩表项段。首先,系统先找出段内可以马上进行掩码压缩的子段。如子段G 7)可以直接压缩,其压缩后,data = 4,mask = 0x1100。这样的段,特征在于 start = 2x,end = 2x+l-l, 并被称之为规则子段。规则子段压缩后,data = start, mask = “ (2χ-1)。对于不能立即压缩的子段,被称之为非规则子段。非规则字段也可以压缩,系统首先找出此类段公共数值,再进行压缩。如段(6 7)不能直接压缩,找出段公共数值为4,则新段成为0 ;3),段0 3)可以直接压缩。压缩后,data = 4+2,mask = 0x1110。此类段的公共数值为^,对于规则子段的压缩算法伪码如下compress_regular_segment (start, end) // 压缩规则子段段(start end){common_value = 0 -J/ 保存公共数值While(I){χ = log2 (start);H立即得到规则子段压缩后的数据和掩码data = start+common_value ;mask = “ (2x_l);start = 2x+l ;continue -J/ 对新段(start end)继续压缩}}对于非规则子段的压缩算法伪码如下compress_unrelular_segment (start, end) // 压缩非规则子段段(start end){common_value = 0 -J/ 保存公共数值While(I){χ = log2 (start);if (start == 2x){If (end >= 2x+l){//立即得到规则子段压缩后的数据和掩码data = start+common_value ;
5
mask = “ (2χ-1);start = 2x+l ;continue -J/ 对新段(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 %以上,且表项数目越多,数值越连续,压缩效率越高。综上所述,以上仅为本发明的较佳实施例而已,不应以此限制本发明的范围,即凡是依本发明权利要求书及发明说明书内容所作的简单的等效变化与修饰,皆应仍属本发明专利涵盖的范围内。
权利要求
1.一种TCAM表项的压缩方法,其特征在于包括如下步骤(1).首先把一组没有前缀且只有一个变值元素的TCAM(TernaryContentAddressable 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)与步骤( 之间还包括一个通过采用添加新表项或者删除表项的方式对段进行维护的步骤。
全文摘要
本发明公开了一种TCAM(Ternary Content Addressable Memory,三态内容寻址寄存器)表项的压缩方法,包括如下步骤首先把一组没有前缀且只有一个变值元素的TCAM表项,划分为变值元素数值连续的段;通过采用添加新表项或者删除表项的方式,对段进行维护;对于数值连续的段,系统先找出段内可以马上进行掩码压缩的规则子段进行直接压缩,而对段内不能立即压缩的非规则子段,系统首先找出此类段公共数值,然后再进行压缩。经验证,在VPWS、VPLS的捆绑应用中,使用本发明,当表项数目大于100时,压缩率平均在50%以上,且表项数目越多,数值越连续,压缩效率越高。
文档编号H04L12/46GK102375820SQ20101025219
公开日2012年3月14日 申请日期2010年8月12日 优先权日2010年8月12日
发明者陈玉强 申请人:盛科网络(苏州)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1