CN103546378A - 基于tcam的范围多匹配2级分层查找方法 - Google Patents

基于tcam的范围多匹配2级分层查找方法 Download PDF

Info

Publication number
CN103546378A
CN103546378A CN201310193403.8A CN201310193403A CN103546378A CN 103546378 A CN103546378 A CN 103546378A CN 201310193403 A CN201310193403 A CN 201310193403A CN 103546378 A CN103546378 A CN 103546378A
Authority
CN
China
Prior art keywords
scope
tcam
range
new
ranges
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
Application number
CN201310193403.8A
Other languages
English (en)
Other versions
CN103546378B (zh
Inventor
李险峰
沈然生
阮昭
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
BYZORO NETWORK LTD.
Original Assignee
李险峰
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by 李险峰 filed Critical 李险峰
Priority to CN201310193403.8A priority Critical patent/CN103546378B/zh
Publication of CN103546378A publication Critical patent/CN103546378A/zh
Application granted granted Critical
Publication of CN103546378B publication Critical patent/CN103546378B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明提出了一种基于TCAM的范围多匹配2级分层查找方法,实现了基于TCAM的包分类问题中端口范围多匹配。其特点在于,首先从范围集中提取出宽区间范围,并对宽区间范围做单独的处理,然后,再对剩下的范围集,尽可能多的将有关联的范围合并在一起,组合成一些新的范围集,而这些重新组合后的新的范围中绝大多数都是由原先的多个原始范围组合而成的。然后对这些新的范围中包含不止一个原始范围的新范围,将其划分成若干个相互间距为1的毗连范围。在查找过程中,首先在第一级TCAM+SRAM内对合并后的新范围进行查找,然后根据新范围集的查找结果再通过判断来确定是否需要再对第二级TCAM+SRAM进行查找,从而通过这两次的划分查找来实现基于TCAM的范围多匹配技术。

Description

基于TCAM的范围多匹配2级分层查找方法
技术领域
本发明涉及一种基于TCAM(Ternary Content Addressable Memory,三态内容可寻址存储器)的解决范围多匹配问题的2级分层查找方法,主要应用在入侵检测系统、路由器、交换机等网络设备中,属于计算机网络中网络数据包分类技术领域。
背景技术
随着网络技术的快速发展,尤其是近些年来各种新型网络应用的出现,像网络入侵检测系统(Network Intrusion Detection System,NIDS),质量服务(Quality of Service,QoS),负载均衡(Load Balance)等都需要报告出所有匹配结果或部分匹配结果,传统的基于软件的包分类技术远远不能满足线速的要求,而基于硬件的技术却能够很好的解决这一问题,如TCAM。
TCAM是从CAM的基础上发展而来的,它的基本结构图如图1所示。一般的CAM存储器中每个bit位的状态只有两个:“0”或“1”,而TCAM中每个bit位有三种状态,除去“0”和“1”外,还有一个“don′t care”状态,经常用“*”来表示,它是通过掩码来实现的。因此,TCAM不仅能进行精确匹配查找,而且还能进行前缀匹配查找。
TCAM能够用于包分类技术中主要是因为它具有快速且精确的查找速度、结构的通用性以及操作简单等优点,但同时它也具有几个明显的缺点:成本高、功耗大和路由更新复杂。另外,由于TCAM中的所有条目都是进行并行查找的,而传统的包分类中只需要得到最优匹配的条目即可,故只需要对TCAM进行一次查找即可得到所需要的结果。然而近些年来出现的新型网络应用,像网络入侵检测系统、负载均衡等都需要报告所有的匹配结果。如此一来,就需要对TCAM进行多次查找,即如果规则库中有n个规则与输入进来的查找关键字匹配,那么就至少需要进行n次查找才能得到所有的匹配结果。这使得TCAM的查找功耗很大,且需要的时钟周期也很长,这是无法接受的,于是产生了基于TCAM的包分类技术中的多匹配问题。而在基于TCAM的包分类技术的多匹配问题中,人们最关心的两个问题是TCAM的存储空间以及查找功耗。
前面提到,由于TCAM的固有特性使得它非常适合于精确匹配和前缀匹配,但是当TCAM用于范围匹配时,比如,具有代表性的用于入侵检测系统的规则库SNORT系统,其数据包头的源端口和目的端口中都有范围大量出现的情况,往往一个范围就需要转换为许多个前缀才能在TCAM中进行存储,即一个范围需要多个TCAM条目存储。例如,范围[1024:65536]需要转换为6个前缀,即需要6个TCAM条目来存储这一个范围,这样就大大的增加了TCAM的存储空间,也就是大大的增加了成本,于是产生了基于TCAM包分类技术中的范围匹配问题。中国专利:基于TCAM的解决范围匹配的并行IP包分类器及方法,申请号200510011511,公开号1674557,将IP包的分类规则根据其定义的ID划分成若干个模块,然后将这些模块分别存储到多个TCAM芯片内实现分布式存储来解决TCAM的范围匹配问题。但是该方法存在查找效率低、需要使用扩展位、占用额外的TCAM空间、更新效率低、需要对查找关键字进行预处理等缺点。中国专利:一种实现三重内容可寻址存储器范围匹配的前缀扩展方法,申请号200610011517,公开号101039253B,以及中国专利:实现三重内容可寻址存储器范围匹配的分段编码扩展方法,申请号200610011465,公开号101035061B,分别提出了前缀扩展方法和分段编码扩展方法来解决TCAM范围匹配问题,但是这两种方法仍需要若干个前缀来代替一个范围,因此,并不能很好的降低TCAM的存储空间;另外,若对于源端口和目的端口同时是范围的情况,因前缀的扩展数量是两个端口前缀扩展数量倍乘的关系,则一个规则就需要更多的TCAM条目来存储,故也不适用于规则集中含有许多同时包含多个范围域的情况。此外,已经存在若干个已知的解决TCAM范围匹配的方案。“使用三态内容可寻址存储器排序和查找”(“Sorting and searching using ternary CAMs”by R.Panigrahy and S.Sharma,publish in IEEE Computer Society(2003)pp.44-53)是解决基于TCAM范围匹配问题的几类方法中的一类方法的资料来源,其部分内容通过引用结合于本文。“用于解决范围的一个2级TCAM结构”(“A2-Level TCAM Architecture for Ranges”by Yeim-Kuan Chang,publish in IEEEComputer Society(2006)pp.1614-1629)是在论文“使用三态内容可寻址存储器排序和查找”的基础上的改进与创新,其部分内容也将通过引用结合于本文。此论文中说的2级指的是TCAM+SRAM构成的2级结构,而本发明所说的2级指的是以TCAM+SRAM一个整体为1级,即由两层TCAM+SRAM组成的2级结构,与此论文是有区别的。另外,此论文中没有采用TCAM分区查找的思想,而只是对TCAM中所有范围集进行全部查找,所以查找功耗比本发明要大的多。
本发明在综合考虑到前面提到的基于TCAM的包分类技术中的两个问题的基础上,并结合论文“使用三态内容可寻址存储器排序和查找”中提出的最长相同前缀(Longest CommonPrefix,LCP)技术的思想,提出了一种基于TCAM的范围多匹配2级分层查找方法,此方法不仅解决了包分类中的多匹配问题,而且还引用了分区查找的技术,减小了TCAM的存储空间,降低了TCAM的查找功耗。
发明内容
本发明所需要解决的技术问题是提供一种基于TCAM的范围多匹配2级分层查找方法,此方法不仅要能解决基于TCAM的包分类问题中的多匹配问题和范围匹配问题,而且要能在TCAM的存储空间和查找功耗上做一个最优的权衡。
为达到上述要求,本发明提供了一种基于TCAM的范围多匹配2级分层查找方法,适用于网络设备中使用TCAM来实现包分类中的多匹配查找和范围匹配查找。其特点在于,首先将原始范围集进行分类处理,提取出宽区间范围(对于现实中的规则库来说,需要解决范围问题的维(域)一般是指源端口域和目的端口域,而由观察知,现实中的源端口域和目的端口域中的范围区间大于最大范围区间W一半的范围是非常少的,所以,在本发明中,我们规定一个范围为宽区间范围的条件是其区间大于或等于1/2最大范围区间W);然后,对剩下的范围集,尽可能多的将有关联的范围合并在一起,组合成一个新的范围,通过这一步之后,所有新的范围之间就都是互不相关的范围了,即它们之间没有任何部分相交或重合的部分。而这些重新组合后的新的范围中绝大多数都是有原先的多个原始范围组合而成的,对这些新的范围中包含不止一个原始范围的新范围,根据它们的起始点,将其划分成若干个相互间距为1的毗连范围。在查找过程中,首先在第一级TCAM+SRAM中对新范围集进行查找,定位到某一个新范围区间,然后再通过对这个新范围进行比较判断,确定是否需要再到第二级TCAM+SRAM中进行毗连范围的查找,从而通过这两次的划分查找来实现基于TCAM的范围多匹配技术。
本发明的特点在于,按照分类处理的方法将范围集进行分类处理:通过判断范围是否为宽区间范围,如果为宽区间范围,则将其采用常用的经典技术来实现如HICUT/HYPERCUT或者用一个单独的小TCAM来实现(因为宽区间范围是非常少的);如果不是,则采用本发明提出的2级分层查找方法来实现。
本发明的特点在于,我们对不包括宽区间范围的范围集采用了TCAM的每个位的三种状态:“0”,“1”,“*”来表示每个范围的前缀。
本发明的特点在于我们采用了最长相同前缀LCP方法来实现了在查找中的TCAM前缀存储技术,与直接将范围转化为前缀的方法相比,大大降低TCAM的存储空间,节省了成本。
本发明的特点在于,我们采用了TCAM中模块划分的技术,通过第一级TCAM查找返回的索引来激活第二级TCAM中相应的模块,实现了区域查找的技术,减小了TCAM的查找范围,从而降低了TCAM的查找功耗。
本发明的特点在于,我们采用了2级查找技术,首先对范围进行粗略定位查找,定位到我们经过模块划分后的某一个新的范围区间内,然后再通过判断来确定这个新的范围区间是否只包含一个原始范围,如果是,则直接就可以得到所需要的查找结果;如果不是,则在这个新的范围区间内上进行二级毗连范围的查找,从而得到最终的匹配结果。
本发明的特点在于,我们的方法综合考虑了基于TCAM的包分类中的多匹配问题以及范围匹配问题,并同时解决了这两个问题。
本发明的特点在于,我们的方法不仅可以解决包分类中的多匹配问题,而且还可以用于解决包分类问题中的单匹配问题。
本发明的特点在于,我们采用了并行技术和流水线技术相结合的方法,理论情况下,我们在一个时钟周期里就可以得到所需要的查找结果。
本发明的特点在于,我们采用了3个小的TCAM来实现范围多匹配技术,从而进一步降低了TCAM的查找功耗,并且降低了成本。
本发明的技术效果在于:本发明所述的方法利用了3个小的TCAM就可以实现TCAM的范围多匹配。本发明的方法不仅降低了实现范围匹配所需要的TCAM存储空间,而且降低TCAM查找功耗,为基于TCAM的范围匹配问题提供了一个非常有效的方法。它的优点在于:1.适用任何情况下的范围集;2.不占用额外的TCAM空间;3.减小了TCAM的存储空间;4.降低了TCAM的查找功耗;5.实现了软硬件协同的技术。
附图说明
图1:一个标准的TCAM结构图;
图2:表1中的每个范围所对应的范围区间图;
图3:表1中提取出宽区间范围后的范围集再经过最大相关联范围的划分后所对应的新范围构成的范围区间图;
图4:基于TCAM的范围多匹配2级分层查找的查找流程图;
具体实施方式
下面结合具体附图实例来对本发明的技术方案作进一步的详细描述:
一:几个名词和技术方法的介绍
1.最长相同前缀(Longest Common Prefix,LCP)
如表1中所示,每一个范围是由两个端点值组成的范围区间(这里我们规定两个端点值都包含在范围内),前面的一个端点值称为始点,后面一个端点值称为终点。而一个范围的LCP是指这个范围的两个端点值在二进制形式下从左到右依次按位与,直到遇到第一个两个位不相同为止,并且从此位开始以及后面所有位都用“*”代替所组成的三态形式。如表1中的第一个范围的始点是10,即8位的二进制形式为00001010,而其终点是30,即8位的二进制形式为00011110,可以看出从左到右的前3位都依次相同,即都为0,而始点的第4为0,终点的第4位为1,故第一个不相同的位为第4位,则此范围的LCP为:000*****。
表1:一个简单的8位的一维范围集
R1 R2 R3 R4 R5 R6 R7 R8 R9 R10
10:30 20:50 40:70 55:60 80:100 90:115 200:220 120:150 145:160 5:255
2.最长相同前缀扩展(Extended Longest Common Prefix,ELCP)
将每一个LCP扩展成一对LCP组,扩展方法是将LCP中从左到右的第一个位为“*”的位分别用0和1代替,组成一对0-ELCP和1-ELCP组。如表1中的范围[10:30]的LCP是000*****,则通过最长前缀扩展后得到的0-ELCP和1-ELCP分别为0000****和0001****。
3.宽区间范围
在本发明中,我们规定对于一个N位的范围集,当一个范围的区间大于等于2N-1,也就是理论最大范围的一半时,我们称这个范围为宽区间范围。例如,对于一个8位的范围集,其理论最大范围为[0:255],也就是最大范围宽度W为255,故当一个范围的范围区间为大于等于128时,则此范围为宽区间范围。
4.毗连范围(contiguous range)
毗连范围是指一个范围与另一个范围之间是一种相邻且这两个范围之间的间距为1。如范围[10:19]与[20:30]之间没有重合的部分,且前面一个范围的端点值与后面一个范围的始点值相差为1,我们将这样的一类范围集称为毗连范围集,对应的每一个范围称为毗连范围。
5.最大关联范围集模块
最大关联范围集模块是指尽可能多的将有关联的范围划分到一个模块内,关联的条件是部分相交或包含的关系。例如,有范围集a,b,c,d。它们的关系是:a与b部分相交,b包含c,但d与a,b,c均既没有部分相交也没有任何包含关系,则a,b,c为一个最大关联范围集模块,d单独为一个最大关联范围集模块。
二:方法介绍
第一步:提取出宽区间范围
图2是表1中的每个范围所对应的范围区间图。从图中,我们可以很清楚的看到R10的范围区间为200,远大于最大范围端点值(W=255)的一半,故R10为宽区间范围。前面我们已经提过,现实中的规则库中的源端口域和目的端口域中的宽区间范围的个数是非常少的,而且基本上是固定不变的。考虑到这个特点,对于宽区间范围,我们可以将其提取出来进行单独处理。通过学习,我们知道对于这种情况的范围,经典算法-Hicut/Hypercut等都是非常有效的解决方法,同时,因为这样的范围数量非常少,也可以将他们集中在一个或少量的几个TCAM模块中单独查找。在本发明中,我们不再对宽区间范围的解决方法做详细的介绍。
第二步:划分最大关联范围集模块
经过第一步宽区间范围的提取后,接下来对剩余的范围再进行最大关联范围集模块的划分。从图2中可以看出R1与R2部分相交,R2与R3部分相交,而R3包含R4,即他们之间都存在某种关联关系,而其余的都与它们没有任何的关系,所以,R1、R2、R3、R4组成了一个最大关联范围集模块,同理,R5、R6组成另一个最大关联范围集模块,R8、R9组成第三个最大关联范围集模块。由于R7不与任何一个范围有关联,所以R7单独为一个最大关联范围集模块。经过这一步的划分后,原来由9个范围组成的原始范围集现在被缩减成了4个最大关联范围集模块。
第三步:产生新的范围集
对于经过第二步形成的最大关联范围集模块中,由多个原始范围组合产生的每一个新范围集模块,我们将这个新范围集模块中的所有原始范围的始点中最小的一个始点作为新范围的始点,将所有原始范围的终点中的最大的一个终点作为新范围的终点,则这个由多个原始范围组成的最大关联范围集模块就可以用一个新的范围来代替了,而对于最大关联范围集模块中只包含一个原始范围的情况,其新范围就是原始范围。如图2中,由R1,R2,R3,R4组成的最大关联范围集模块,它们可以由新范围[10:70]来代替。而R7只有它一个,故新范围就是其自身。图2中,去除宽区间范围外的所有原始范围经过最大关联模块划分后产生的新规则集如图3所示。在本发明中,我们将那些只包含有一个原始范围的新范围依次放在那些包含不止一个原始范围的新范围的后面,如表2中的第一列所示,F4中只包含R7一个原始范围,而F1,F2,F3中至少都包含两个或两个以上的原始范围,故将F4放在其余3个新范围之后。
第四步:毗连范围的划分
前面知道,对于经过第三步后产生的新范围集中绝对大数的新范围都是由若干个原始范围组成的,如图3中的新范围F1则是由原始范围R1、R2、R3、R4形成的,结合图2和图3,我们可以看出在这个新范围内部的不同区间内,它们的匹配情况是不同的。如图2,R1与R2的交点20将R1、R2分为两个部分,即R1与R2的交点20将区间[10:19]与区间[20:30]分为两个毗连范围。从图2中可以看出,区间[10:19]内只有R1,而区间[20:30]则有R1,R2,即如果一个查找关键字K在区间[10:19]内,那么这个查找关键字K只与R1匹配;如果一个查找关键字K在区间[20:30]内,那么这个查找关键字K与R1,R2都匹配,即属于多匹配情况,我们的目的是要找到与输入进来的查找关键字K在每一点上的所有匹配情况。当然这里未考虑已经被提取出来做单独处理的宽区间范围R10,因为R10也与之匹配。表2中的第二列中列出了每个新范围内部的毗连范围的情况,而第五列中则列出了第二列中原始范围在每一个毗连范围区间内的分布情况。
第五步:新范围集的最长相同前缀LCP和最长相同前缀扩展ELCP的生成
表3是图3中所示的每一个新范围所对应的LCP以及扩展后的0-ELCP和1-ELCP。在论文“使用三态内容可寻址存储器排序和查找”中已经证明:对于一个不相毗连的范围集,如果查找关键字K在某一个范围R内,那么这个范围R的LCP所对应的0-ELCP或者1-ELCP之一必定是这个范围集内与查找关键字K相匹配的最长前缀。
第六步:新范围内部的毗连范围的最长相同前缀LCP的生成和包含不止一个原始范围的新范围内部的毗连范围所对应的存储信息的产生
表2中的第三列为每一个毗连范围所对应的LCP,而第四列中则详细的记录了每一个LCP所对应的存储信息,此存储信息的内容是在论文“用于解决范围的一个2级TCAM结构”中描述的方法的基础之上加以改进的,目的是为了通过这些信息来判断最终的匹配结果。如表2中的第四列所示,每一个存储信息对应的内容是[L,U,addr-1,addr,addr+1],分别代表的含义是:L:表示此毗连范围的始点;U:表示此毗连范围的终点;addr:表示此毗连范围区间所对应的最后一个存储匹配信息的SRAM的地址;故addr-1和addr+1分别表示此毗连范围的前一个地址和后一个地址。
表2:图3中的新范围内的毗连范围的划分以及每一个毗连范围区间所对应的原始范围
Figure BSA00000899768400061
表3:图3中的新范围集中的每个范围所对应的LCP和ELCP
新范围集 始点 终点 LCP 0-ELCP 1-ELCP
F1 00001010 01000110 0******* 00****** 01******
F2 01010000 01110011 01****** 010***** 011*****
F3 01111000 10100000 ******** 0******* 1*******
F4 11001000 11011100 110***** 1100**** 1101****
第七步:存储到相应的TCAM和SRAM中
首先,将表3中的第五列的0-ELCP存储到TCAM0中,再将第六列的1-ELCP存储到TCAM1中,而将第二列中的始点值存储到与TCAM0相对应的SRAM0中,将第三列中的终点值存储到与TCAM1相对应的SRAM1中,如图4所示;然后,对表2中的新范围集中包含不止只有一个原始范围的新范围,依次将这些新范围内的毗连范围所对应的LCP存储到TCAM2相应的模块中,每一个新范围内的毗连范围存储到TCAM2的一个模块中,并依次给TCAM2的这些模块一个唯一的ID,其次,并依次将这些毗连范围存储信息存储到与TCAM2相对应的SRAM2的相应的位置中;最后再将表2中的第五列中每个毗连范围所对应的原始范围对应的存储到最后一个存储匹配信息的SRAM中,如图4所示。
第八步:包查找过程
数据包的整个查找流程图,如图4所示。其步骤主要有:
801:当输入进来一个查找关键字K的时候,这个查找关键字K被同时送到TCAM0和TCAM1中进行并行查找,并分别返回与TCAM0和TCAM1中与之最优匹配的条目(第一个匹配的条目)的索引值i和j;
802:将这两个索引i和j分别送到SRAM0和SRAM1中读取相应位置的始点值Si和终点值Ej;
803:在比较器C0和C1中,同时将读取出来的始点值Si和终点值Ej与查找关键字K进行比较;
所述的步骤803包括:
8031:在C0中,如果查找关键字K大于或等于从SRAM0中读取的始点值Si成立,则将从TCAM0中返回的索引i输入到比较器C2中,并执行步骤8041。否则,此条路径查找结束;
8032:在C1中,如果查找关键字K的值小于从SRAM1中读取的终点值Ej成立,则将从TCAM1中返回的索引j输入到比较器C3中,并执行步骤8042。否则,此条路径查找结束;
8041:在比较器C2中,如果i小于M(M为新范围集中包含不止一个原始范围的新范围的个数,如本发明中所举的实例中,新范围集包含不止一个原始范围的新范围的个数为3,即M=3)成立,则执行步骤8051,否则,执行步骤8061;
8042:在比较器C3中,如果j小于M成立,则执行步骤8052,否则,执行步骤8062;
8051:激活开关A0;
8052:激活开关A1;
8061:将i、M、N输入到逻辑运算单元ALU0中,然后通过公式(1)计算出索引值index,并执行步骤811;
index=i-M+N    (1)
其中,N表示存储到TCAM2中所有毗连范围对应的LCP的个数,如图4中存储到TCAM2所有毗连范围对应的LCP的个数为13,即N=13,而ALU0所需实现的逻辑功能如公式(1)所示。
8062:将j、M、N输入到逻辑运算单元ALU1中,然后通过公式(2)计算出索引值index,并执行步骤811;
index=j-M+N    (2)
ALU2所需实现的逻辑功能如公式(2)所示。
807:如果步骤8051被执行,则通过选择器sel1将i赋值给ID,并执行步骤808;如果步骤8052被执行,则通过选择器sel1将j赋值给ID,并执行步骤808;
808:将ID输入到TCAM2中,激活TCAM2中相应的模块,然后,将查找关键字K与TCAM2中被激活的模块的所有条目进行比较,返回最优匹配条目的索引值index0,并执行809;
809:将索引值index0输入到SRAM2中,读取相应的存储信息,并执行810;
810:将从SRAM2中读取的存储信息输入到ALU2中,并将查找关键字K输入到ALU2中,然后通过公式(3)计算出索引值index,并执行步骤811;
index = addr - 1 , if K < L addr , if L < K < U addr + 1 , if K > U - - - ( 3 )
811:如果步骤8061、步骤8062和步骤810有一个被执行,则将通过此步骤计算得到的索引值index通过选择器sel2输入到最后一个存储匹配信息的SRAM中,从而得到最终的匹配结果。
从论文“使用三态内容可寻址存储器排序和查找”中可知,在一次查找中,比较器C0和C1最多只有一个是条件满足的,即不存在C0和C1同时条件满足的情况。因此,步骤8041和步骤8042不可能同时被执行,它们最多只有一个被执行,或都不被执行;步骤8051和步骤8052也同样如此,即最多只有一个被执行或都不被执行。如果步骤8051和步骤8052都不被执行,则步骤807到步骤810就都不会被执行。通过这些,我们又知道步骤8061、步骤8062以及步骤810,这三个步骤最多只有一个被执行,或都不被执行。如果这三个步骤都不被执行,则说明比较器C0和C1条件都不满足,则此次查找就已经结束。
通过ALU0和ALU1计算出访问最后一个存储匹配信息的SRAM的索引值index,进而得到最终的匹配结果,其正确性在论文“使用三态内容可寻址存储器排序和查找”中已经详细说明;而通过ALU2计算出访问最后一个存储匹配信息的SRAM的索引值index,进而得到最终的匹配结果,其正确性在论文“用于解决范围的一个2级TCAM结构”中也已详细说明,这里均就不再重复。
接下来,我们将通过举例来进一步说明整个的查找流程:
当查找关键字K=81(01010001)时,通过查找,可知TCAM0的第二个条目与之匹配,即i=1,而TCAM1的第一个条目与之匹配,即j=0,所以从SRAM0的第二行和SRAM1的第一行中分别取出Si=80和Ej=70,并分别送到C0和C1中进行比较判断,通过比较后,我们知道C1条件不满足,因此,此条路径查找结束,而C0条件满足,故C2被激活。于是i=1输入到C2中与M进行比较,此例中M=3,因i<M,即条件满足,故再将i=1赋值给ID,然后通过ID=1来激活TCAM2中的第二个模块,然后查找关键字K=81与此模块内的所有条目进行比较,通过查找知,K=81与此模块内的第一个条目匹配,故返回此条目的索引值index0=7。最后通过此索引到SRAM2相应的位置读取相应的存储信息,读出的地址行内容为:[80,89,6,7,8],然后将此内容输入到ALU2中,因80<81<89,所以index=7。通过index=7到SRAM中得到的查找结果为R5,从图2中,我们也可以看出与K=81相匹配的范围为R5(这里未考虑宽区间范围R10)。当K=210(11010001)时,通过同样的查找,知TCAM0中没有与之匹配的条目,即此条路径查找结束,而TCAM1中的第四个条目与之匹配,即j=3,故Ej=220,通过C1比较知,条件满足,故C3被激活,于是将j输入到C3中与M比较,因j=M,条件不满足,故ALU1被激活,于是j输入到ALU1中,通过公式(1)计算得到index=3-3+13=13,所以从SRAM中得到的查找结果为R7,即K=210与R7匹配,而从图2中,也可以看出与K=220相匹配的范围为R7。
以上内容只是结合具体的实例对本发明实施所作的进一步的详细说明,但不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单变异或替换,都应当视为属于本发明的保护范围。

Claims (8)

1.一种实现基于TCAM(Ternary Content Addressable Memory,三态内容可寻址存储器)的范围多匹配问题2级分层查找方法,适用于网络设备中使用TCAM解决包分类问题中的端口范围匹配和多匹配问题。其特点在于,将原始范围集进行分类处理后再根据各类范围集的特点采用适当的方法进行分类查找。
2.根据权利要求1所述的方法,其特点在于,我们基于对现实中的规则库中源端口域和目的端口域的观察知,实际中的源端口域和目的端口域中的范围区间大于最大范围宽度W一半的范围数量是非常少的,而且是相对固定的。所以,在本发明中,我们规定了一个范围为宽区间范围,要求其满足的条件是其区间大于或等于1/2最大范围区间W,但对宽区间范围的划分不仅仅只是局限于这一种规定。
3.根据权利要求2所述的方法,我们首先提取出宽区间范围,然后根据宽区间范围的特点可以采用经典算法,如Hicut/Hypercut方法进行查找;或者使用一个单独的小TCAM来实现(因为宽区间范围是非常少的)。但不仅仅只是局限于这些方法,任何一种有效的方法都可以用来解决宽区间范围的查找。
4.根据权利要求1和3的方法,我们将对提取出宽区间范围后的剩余范围集,采用最大关联范围集模块的方法尽可能多的将有关联的范围合并在一起,组合成一个新的范围,通过这一步之后,所有的新的范围之间就都是相互之间不相关的范围了。
5.根据权利要求4的方法,因为这些重新组合后的新的范围中绝大多数都是由多个原始范围组合而成的,所以我们再对这些新的范围中包含不止一个原始范围的新范围,将其划分成若干个毗连范围,毗连范围是指一个范围与另一个范围之间不相交且这两个范围之间相互间距为1。
6.根据权利要求4和5的方法,我们采用了论文“使用三态内容可寻址存储器排序和查找”中提出的最长前缀匹配LCP的方法,分别对产生的新范围集进行LCP和ELCP的生成,并对毗连范围进行LCP的生成。但这里的LCP和ELCP技术不属于本专利的权利要求范围内。
7.根据以上权利的方法,我们采用了3个小的TCAM来解决了基于TCAM包分类问题中的范围多匹配问题,以及降低了单个大的TCAM查找功耗过高、延时大的问题。
8.根据以上权利要求的方法,我们采用了基于TCAM的解决范围多匹配的2级分层查找方法,其特点在于,它的查找过程如下所示:
801:当输入进来一个查找关键字K的时候,这个查找关键字K被同时送到TCAM0和TCAM1中进行并行查找,并分别返回TCAM0和TCAM1中与之最优匹配的条目(第一个匹配的条目)的索引值i和j;
802:将这两个索引i和j分别送到SRAM0和SRAM1中读取相应位置的始点值Si和终点值Ej;
803:查找关键字K分别在比较器C0和C1中与读取出来的始点值Si和终点值Ej同时进行比较;
所述的步骤803包括:
8031:在C0中,如果查找关键字K大于或等于从SRAM0中读取的始点值Si成立,则将从TCAM0中返回的索引i输入到比较器C2中,并执行步骤8041。否则,此条路径查找结束;
8032:在C1中,如果查找关键字K的值小于从SRAM1中读取的终点值Ej成立,则将从TCAM1中返回的索引j输入到比较器C3中,并执行步骤8042。否则,此条路径查找结束;
8041:在比较器C2中,如果i小于M(M为新范围集中包含不止一个原始范围的新范围的个数,如本发明中所举的实例中,新范围集包含不止一个原始范围的新范围的个数为3,即M=3)成立,则执行步骤8051,否则,执行步骤8061;
8042:在比较器C3中,如果j小于M成立,则执行步骤8052,否则,执行步骤8062;
8051:激活开关A0;
8052:激活开关A1;
8061:将i、M、N输入到逻辑运算单元ALU0中,然后通过公式(1)计算出索引值index,并执行步骤811;
index=i-M+N    (1)
其中,N表示存储到TCAM2中所有毗连范围对应的LCP的个数,如图4中存储到TCAM2所有毗连范围对应的LCP的个数为13,即N=13,而ALU0所需实现的逻辑功能如公式(1)所示。
8062:将j、M、N输入到逻辑运算单元ALU1中,然后通过公式(2)计算出索引值index,并执行步骤811;
index=j-M+N    (2)
ALU2所需实现的逻辑功能如公式(2)所示。
807:如果步骤8051被执行,则通过选择器sel1将i赋值给ID(ID是用来激活第二级TCAM+SRAM结构中的相应的某个TCAM模块),并执行步骤808;如果步骤8052被执行,则选择器sel1将j赋值给ID,并执行步骤808;
808:将ID输入到TCAM2中,激活TCAM2中相应的模块,然后,将查找关键字K与TCAM2中被激活的模块的所有条目进行比较,,返回最优匹配条目的索引值index0,并执行809;
809:将索引值index0输入到SRAM2中,读取相应的存储信息,并执行810;
810:将从SRAM2中读取的存储信息输入到ALU2中,并将查找关键字K输入到ALU2中,然后通过公式(3)计算出索引值index,并执行步骤811;
index = addr - 1 , if K < L addr , if L < K < U addr + 1 , if K > U - - - ( 3 )
其中,L:表示此毗连范围的始点;U:表示此毗连范围的终点;addr:表示此毗连范围区间所对应的最后一个存储匹配信息的SRAM的地址;故addr-1和addr+1分别表示此毗连范围的前一个地址和后一个地址。
811:如果步骤8061、步骤8062和步骤810有一个被执行,则将通过此步骤计算得到的索引值index通过选择器sel2输入到最后一个存储匹配信息的SRAM中,从而得到最终的匹配结果。
CN201310193403.8A 2013-05-20 2013-05-20 基于tcam的范围多匹配2级分层查找方法 Active CN103546378B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310193403.8A CN103546378B (zh) 2013-05-20 2013-05-20 基于tcam的范围多匹配2级分层查找方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310193403.8A CN103546378B (zh) 2013-05-20 2013-05-20 基于tcam的范围多匹配2级分层查找方法

Publications (2)

Publication Number Publication Date
CN103546378A true CN103546378A (zh) 2014-01-29
CN103546378B CN103546378B (zh) 2018-06-01

Family

ID=49969444

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310193403.8A Active CN103546378B (zh) 2013-05-20 2013-05-20 基于tcam的范围多匹配2级分层查找方法

Country Status (1)

Country Link
CN (1) CN103546378B (zh)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103905304A (zh) * 2014-03-18 2014-07-02 汉柏科技有限公司 一种acl匹配方法和设备
CN104410573A (zh) * 2014-11-26 2015-03-11 中国电子科技集团公司第四十一研究所 一种基于tcam的包匹配方法
CN105515997A (zh) * 2015-12-07 2016-04-20 刘航天 基于bf_tcam实现零范围扩张的高效范围匹配方法
CN105763454A (zh) * 2016-02-25 2016-07-13 比威网络技术有限公司 基于二维路由策略的数据报文转发方法及装置
CN107222496A (zh) * 2017-06-29 2017-09-29 北京东土军悦科技有限公司 基于现场层设备的报文的安全策略匹配方法和现场层设备
CN108075979A (zh) * 2017-12-20 2018-05-25 盛科网络(苏州)有限公司 实现最长掩码匹配的方法及系统
CN108512776A (zh) * 2018-03-07 2018-09-07 深圳市风云实业有限公司 交换芯片中tcam表的灵活组合方法、装置及芯片
CN108781185A (zh) * 2016-12-13 2018-11-09 甲骨文国际公司 提供用于网络设备的可编程包分类框架的系统和方法
WO2021004543A1 (zh) * 2019-07-11 2021-01-14 深圳市中兴微电子技术有限公司 范围信息的编码、匹配方法和计算机存储介质
CN112528094A (zh) * 2020-12-04 2021-03-19 国网山东省电力公司信息通信公司 一种基于分层映射的多字段范围tcam编码方法及系统
CN113270132A (zh) * 2021-07-21 2021-08-17 中科南京智能技术研究院 一种基于sram的tcam存储、查找方法及系统
CN113392039A (zh) * 2021-06-09 2021-09-14 新华三信息安全技术有限公司 一种数据存储、查找方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1674557A (zh) * 2005-04-01 2005-09-28 清华大学 基于tcam的解决范围匹配的并行ip包分类器及方法
CN101350771A (zh) * 2008-07-07 2009-01-21 中国人民解放军国防科学技术大学 三态内容可寻址存储器条目免排序存储方法及其系统
CN101035061B (zh) * 2006-03-09 2010-05-12 中兴通讯股份有限公司 实现三重内容可寻址存储器范围匹配的分段编码扩展方法
US7814268B2 (en) * 2005-09-01 2010-10-12 Netlogic Microsystems, Inc. Row expansion reduction by inversion for range representation in ternary content addressable memories

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1674557A (zh) * 2005-04-01 2005-09-28 清华大学 基于tcam的解决范围匹配的并行ip包分类器及方法
US7814268B2 (en) * 2005-09-01 2010-10-12 Netlogic Microsystems, Inc. Row expansion reduction by inversion for range representation in ternary content addressable memories
CN101035061B (zh) * 2006-03-09 2010-05-12 中兴通讯股份有限公司 实现三重内容可寻址存储器范围匹配的分段编码扩展方法
CN101350771A (zh) * 2008-07-07 2009-01-21 中国人民解放军国防科学技术大学 三态内容可寻址存储器条目免排序存储方法及其系统

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
RINA PANIGRAHY: "Sorting and Searching Using ternary CAMs", 《IEEE MICRO》 *
YEIM-KUAN CHANG: "A2-Level TCAM Architecture for Ranges", 《IEEE TRANSACTIONS ON COMPUTERS》 *
夏军波: "一种基于TCAM的双循环多匹配包分类引擎设计", 《通信技术》 *

Cited By (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103905304A (zh) * 2014-03-18 2014-07-02 汉柏科技有限公司 一种acl匹配方法和设备
CN104410573A (zh) * 2014-11-26 2015-03-11 中国电子科技集团公司第四十一研究所 一种基于tcam的包匹配方法
CN104410573B (zh) * 2014-11-26 2017-07-21 中国电子科技集团公司第四十一研究所 一种基于tcam的包匹配方法
CN105515997B (zh) * 2015-12-07 2018-07-06 刘航天 基于bf_tcam实现零范围扩张的高效范围匹配方法
CN105515997A (zh) * 2015-12-07 2016-04-20 刘航天 基于bf_tcam实现零范围扩张的高效范围匹配方法
CN105763454A (zh) * 2016-02-25 2016-07-13 比威网络技术有限公司 基于二维路由策略的数据报文转发方法及装置
CN105763454B (zh) * 2016-02-25 2018-11-27 比威网络技术有限公司 基于二维路由策略的数据报文转发方法及装置
CN108781185B (zh) * 2016-12-13 2021-08-03 甲骨文国际公司 提供用于网络设备的可编程包分类框架的系统和方法
CN108781185A (zh) * 2016-12-13 2018-11-09 甲骨文国际公司 提供用于网络设备的可编程包分类框架的系统和方法
CN107222496A (zh) * 2017-06-29 2017-09-29 北京东土军悦科技有限公司 基于现场层设备的报文的安全策略匹配方法和现场层设备
CN107222496B (zh) * 2017-06-29 2019-12-03 北京东土军悦科技有限公司 基于现场层设备的报文的安全策略匹配方法和现场层设备
CN108075979A (zh) * 2017-12-20 2018-05-25 盛科网络(苏州)有限公司 实现最长掩码匹配的方法及系统
CN108075979B (zh) * 2017-12-20 2020-10-13 盛科网络(苏州)有限公司 实现最长掩码匹配的方法及系统
CN108512776B (zh) * 2018-03-07 2021-09-14 深圳市风云实业有限公司 交换芯片中tcam表的灵活组合方法、装置及芯片
CN108512776A (zh) * 2018-03-07 2018-09-07 深圳市风云实业有限公司 交换芯片中tcam表的灵活组合方法、装置及芯片
WO2021004543A1 (zh) * 2019-07-11 2021-01-14 深圳市中兴微电子技术有限公司 范围信息的编码、匹配方法和计算机存储介质
CN112528094A (zh) * 2020-12-04 2021-03-19 国网山东省电力公司信息通信公司 一种基于分层映射的多字段范围tcam编码方法及系统
CN112528094B (zh) * 2020-12-04 2022-08-16 国网山东省电力公司信息通信公司 一种基于分层映射的多字段范围tcam编码方法及系统
CN113392039A (zh) * 2021-06-09 2021-09-14 新华三信息安全技术有限公司 一种数据存储、查找方法及装置
CN113270132A (zh) * 2021-07-21 2021-08-17 中科南京智能技术研究院 一种基于sram的tcam存储、查找方法及系统
CN113270132B (zh) * 2021-07-21 2021-09-24 中科南京智能技术研究院 一种基于sram的tcam存储、查找方法及系统

Also Published As

Publication number Publication date
CN103546378B (zh) 2018-06-01

Similar Documents

Publication Publication Date Title
CN103546378A (zh) 基于tcam的范围多匹配2级分层查找方法
US9627063B2 (en) Ternary content addressable memory utilizing common masks and hash lookups
US6985483B2 (en) Methods and systems for fast packet forwarding
CN102377664B (zh) 一种基于tcam的区域匹配装置和方法
CN101827137B (zh) 一种基于哈希表和扩展存储器的高性能IPv6地址查找方法
CN104579941A (zh) 一种OpenFlow交换机中的报文分类方法
CN104580027A (zh) 一种OpenFlow报文转发方法及设备
KR100512949B1 (ko) 필드레벨 트리를 이용한 패킷분류장치 및 방법
CN104303482A (zh) 用于分组分类的方法和设备
CN106416152B (zh) 一种查找装置、查找配置方法和查找方法
Meiners et al. Hardware based packet classification for high speed internet routers
CN100488174C (zh) 流分类中基于硬件的差异化组织方法
CN102255788A (zh) 报文分类决策构建系统及方法、报文分类系统及方法
Pao et al. A multi-pipeline architecture for high-speed packet classification
US20160142316A1 (en) Apparatus and method for scalable and flexible table search in a network switch
CN101222434B (zh) 存储策略控制列表、策略搜索方法和三态寻址存储器
Li et al. A power-saving pre-classifier for TCAM-based IP lookup
Lim et al. A new hierarchical packet classification algorithm
CN104954263A (zh) 一种复杂网络目标节点的搜索方法及装置
Pao et al. IP address lookup using bit-shuffled trie
Veeramani et al. Efficient IP lookup using hybrid trie-based partitioning of TCAM-based open flow switches
Kekely et al. Packet classification with limited memory resources
US20130163595A1 (en) Packet classification apparatus and method for classifying packet thereof
Mahini et al. MLET: a power efficient approach for TCAM based, IP lookup engines in Internet routers
CN103309950A (zh) 一种键值搜索方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
CB03 Change of inventor or designer information
CB03 Change of inventor or designer information

Inventor after: Cao Xiaojuan

Inventor before: Li Xianfeng

Inventor before: Shen Ransheng

Inventor before: Ruan Zhao

TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20171201

Address after: 226600 Nantong City, Haian Province, Haian Town, Pingqiao village, Group No. three, No. 10, No.

Applicant after: Cao Xiaojuan

Address before: 518055 Guangdong city in Shenzhen Province, Nanshan District City Xili Shenzhen University North Campus

Applicant before: Li Xianfeng

TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20180503

Address after: No. 3, courtyard No. 5, di Kam Road, Haidian District, Beijing

Applicant after: BYZORO NETWORK LTD.

Address before: 226600 No. 10, group three, Pingqiao village, Haian Town, Haian, Nantong, Jiangsu.

Applicant before: Cao Xiaojuan

GR01 Patent grant
GR01 Patent grant