CN1674557A - 基于tcam的解决范围匹配的并行ip包分类器及方法 - Google Patents

基于tcam的解决范围匹配的并行ip包分类器及方法 Download PDF

Info

Publication number
CN1674557A
CN1674557A CNA2005100115114A CN200510011511A CN1674557A CN 1674557 A CN1674557 A CN 1674557A CN A2005100115114 A CNA2005100115114 A CN A2005100115114A CN 200510011511 A CN200510011511 A CN 200510011511A CN 1674557 A CN1674557 A CN 1674557A
Authority
CN
China
Prior art keywords
tcam
keyword
rule
coding
bag
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
CNA2005100115114A
Other languages
English (en)
Other versions
CN100387028C (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.)
Tsinghua University
Original Assignee
Tsinghua University
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 Tsinghua University filed Critical Tsinghua University
Priority to CNB2005100115114A priority Critical patent/CN100387028C/zh
Publication of CN1674557A publication Critical patent/CN1674557A/zh
Application granted granted Critical
Publication of CN100387028C publication Critical patent/CN100387028C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

基于TCAM的解决范围匹配的并行IP包分类方法属于计算机网络技术中IP包转发和处理领域,其特征在于:他通过对IP包的分类规则定义其ID,并根据ID进而将分类规则划分成多个组,然后将各规则组分别存储在多个TCAM芯片内实现分布式的存储,在实现并行IP包分类的同时,无需显著的增加TCAM的使用量;同时,他充分利用常规TCAM中一些未被实用的比特,对规则中的范围域进行编码,使得某些本来需要用多条TCAM表项存储的规则,仅用一条TCAM表项即可存储,解决了TCAM的范围匹配问题,节省了TCAM的实用量。他具有吞吐量高,稳定性好和实现成本低的优点。

Description

基于TCAM的解决范围匹配的并行IP包分类器及方法
技术领域
IP包分类是计算机网络应用的关键技术之一,被应用在路由器,交换机等网络设备中;他的任务是根据需要转发的IP包的包头信息以及路由器内分类规则表对该IP包进行分类,得到每个IP包的优先级或者相应的处理动作;本发明属于计算机网络技术领域。
背景技术
随着网络技术的不断发展,各种新的网络应用不断涌现,包括相当多对网络服务质量敏感的流媒体应用。网络提供商越来越需要对他们提供的网络传输服务资源按照客户应用的要求(比如对传输质量的要求)进行更合理的管理和分配。同时网络提供商也希望能够根据某些经济原则(如付费原则)或者安全规则(如防止黑客)对网络的流量实现监控和管理。这些都需要网络设备提供可以对IP数据包进行分类的能力。IP包分类器,或流分类器应运而生。
流分类器的主要工作原理是:它首先提取每个进入网络设备的IP数据包的一些相关特征信息,这些信息主要包含在IP包(或其上层的TCP/UDP报文)的包头协议域,如目的IP地址,源IP地址,TCP/UDP的目的端口号,源端口号,高层的协议类型号等等。然后分类器根据提取的IP包的相关信息在预先设定好的流分类规则库内进行匹配查找,寻找与该IP包最为匹配/吻合的规则,然后根据该规则的要求对此IP进行处理,比如丢弃该IP包,按高优先级转发该IP包,或按低优先级转发该IP包,等等等等。
一方面,由于分类器需要对付各种IP包的信息域(每种信息域需要按照不同的原则匹配,例如前缀匹配,范围匹配,精确匹配等等),使得分类器的实现相当复杂;另一方面,由于IP包的分类需要对每一个进入网络设备(比如路由器)的IP包都进行,最坏情况下(最短的即40字节的IP包,100%的流量负荷),对于10Gbps(10千兆位每秒)的接口需要每秒处理25兆个包;而对于40Gbps的接口需要处理100兆个IP包。这2点使得能满足高端要求的流分类器的实现相当困难。
传统的基于软件(微代码+高性能的CPU)的分类方法由于效率较低,根本不能满足高端的IP包分类器的设计需求。主要的原因是这些算法通常需要很多次的内存交互,来访问查找分类规则库,而内存访问的速度是很难被提高的。
TCAM(Ternary Content Accessible Memory),即三元内容寻址内存,是一种新颖的存储器,他不但可以实现对某个关键字基于内容的(在数据库内)全并行查找,还支持带有掩码的查找。这种新颖的存储器首先是被运用在“基于最长前缀匹配的IP路由查找”,它可以实现对于一个32bit(位)的IP地址,一次TCAM访问就可以得到结果的性能。由于IP路由查找和IP包分类有很多相似点,不少人考虑把TCAM也引入到IP包分类器的实现上来。但我们发现,这其中存在不少问题,例如:
1)通常的TCAM的数据宽度是72比特(如CYRESS芯片公司[ http://www.cypress.com/]和IDT芯片公司[ http://www.IDT.com/]的所有TCAM产品),而IP包分类需要匹配的信息通常都远远大于72比特,例如用我们前面提到的5个信息域,总共需要104比特,这导致需要2个或者多个TCAM访问周期来送匹配关键字,会导致分类吞吐量的成倍下降。当前最快的TCAM可以工作在133MHz,如果一个IP包需要2个TCAM访问周期的话,分类器每秒最多只可以完成133/2=67M个IP包,满足不了40Gbps线卡的要求(100M个包);
2)TCAM能够很好的支持基于前缀匹配的信息域,因此TCAM可以很好的被应用在基于最长前缀匹配的IP路由查找问题上。但TCAM却不能很好的支持范围匹配(包含TCP/UDP的端口号范围的规则需要运用这种匹配方式),直接的后果就是,一条含有范围匹配的规则,可能需要多条TCAM表项来表示(关于TCAM不支持范围匹配的说明请见附录),使得TCAM的利用率大大降低。要知道,TCAM是一种很昂贵的,而且集成度很低的存储器。利用率低不但导致需要很高的成本,而且很有可能导致基于TCAM的方案不能支持较大的规则库。
以上2个问题目前都没有被很好的解决,或者说没有同时解决(要知道,其中任何一条都导致基于TCAM的方案不可行),只有很少数试图解决第二个问题的研究:
(1)利用简单的编码方式,对某些需要多条TCAM表示的范围进行编码,相当于“用宽度换取深度”,从而减少TCAM的表项数目[Huan Liu,″Efficient Mapping of RangeClassifier into Ternary-CAM″,Proceedings of the 10TH Symposium on High PerformanceInterconnects Hot Interconnects(HotI’02),2002.],弊端:编码过程不可以控制,甚至可能或产生负面效果;因为规则被编码,导致待查找的关键字也需要编码,需要额外的硬件来对每个IP包相关的端口号进行编码。
(2)在前面这个算法的基础上改进,利用某些本来就浪费的TCAM比特位来编码[H.Che,Z.Wang,K.Zheng,and B.Liu,“DRES:Dynamic Range Encoding Scheme for TCAMCoprocessors,”http://crewman.uta.edu/~zwang/dres.pdf.],同时考虑哪些范围最需要被编码,可以很好的控制编码的效率,避免产生负面效果;采用TCAM本身完成对待查找的IP包信息域的编码,不需要额外硬件;但是,编码也用TCAM,降低了TCAM的可用带宽,使得原来就不足的带宽资源更不足,因而它不能实现高端的要求。
与目前现有的解决方案对比,我们设计的基于TCAM的流分类器的先进性和新颖性在于,它首先利用了一种分布式并行的技术大大的提高了TCAM的处理吞吐量,同时不需要明显的额外的开销,而且他很好的结合了上述第二种算法提到的编码方式,很好的解决了范围匹配的问题,同时也满足高端处理能力的需求。不但如此,我们还在此基础上提供了一个很完美的在各个并行TCAM芯片之间流量均衡策略,使得该方案提供的吞吐量有很好的稳定性。
发明内容
本发明的目的在于提供一个高吞吐量、稳定性好且同时又解决了端口域范围匹配问题的基于TCAM的并行IP包分类器。本发明的特征在于,它含有:
路由器负责维护和管理的CPU,它通过运行分布式规则表生成算法,把IP包分类规则表划分成K个分布式的子规则表,同时对规则的端口域进行编码,同时生成关键字编码表,并把编码后的分布式子规则表和关键字编码表送到TCAM(和与其配套的SRAM)进行存储;
K个三元基于内容寻址的存储器,即K个TCAM,每个TCAM内存有一个由上述路由器CPU划分成的分布式子规则表和一个关键字编码表,对待分类的IP包的关键字进行分类和范围域的编码。
K个SRAM,用于存储每个分类规则对应的实施动作的代码;
并行分类器的控制部分,他是一个现场可编程门阵列,即FPGA芯片,他含有:
一个IP包缓冲器,缓冲待分类的IP包;
一个集中分配器,它内存有各个TCAM内存放的由路由器CPU告知的分布式子规则表的信息,它负责提取待分类的IP包的关键字,并根据分布式子规则表在各个TCAM内存放的信息,把待分类IP包的关键字分配给对应的TCAM进行分类查找,同时根据各个TCAM的负载情况,自适应均衡的把对IP包待编码的端口信息域的编码的任务分配给各个TCAM;他的输入端连接IP包缓冲器的输出端;
K个关键字缓冲器,它们是用来缓存待分类但还没有编码的IP包的关键字,它们各自的输入端与上述的集中分配器的对应输出端相连;
K个待编码信息缓冲器,它们是用来缓存IP包关键字中需要编码的端口域信息;它们各自的输入端与上述的集中分配器的对应输出端相连;
K个调度器,他们各自的2个输入端分别与上述的K个关键字缓冲器、K个代编码信息缓冲器的相应输出端相连,他们各自的一个输出端与上述相应的一个TCAM的输入端相连,他负责安排和调度对应的TCAM的访问;
K个编码结果存储器,它们各自的输出端与上述相应的调度器的输入端相连;
一个编码返回器,他的编码结果的输出端与上述各编码结果存储器的输入端相连;他还有一个最终分类结果的输出端。
从本申请文件提供的IP包分类吞吐量和待查找IP包负荷的变化曲线可见,采用4片工作在133MHz的TCAM时,本分类器可以实现接近40Gbps的线速包分类,并且分类吞吐量曲线和输入IP包负荷有很好的线性关系。
附图说明
图1:一个简单的规则表和其中的规则
图2:对一个现实规则库ID位选择的结果
图3:分布式规则表的生成算法流程
图4:对规则范围域的编码示意。不同颜色代表不同的域
4a:要存储的规则。
4b:TCAM内每个表项(2个内存字)存放规则信息域的安排。
4c:不采用编码时,每个表项144比特,这个规则占用6个表项。
4d:编码后,每个表项仍然144比特,但这个规则只需要1个表项。
图5:自适应均衡的并行IP包分类方案]
图6:设定的16个关键字ID组的等效访问频率分布
图7:关键字编码方案示例。
7a:有三个要编码的范围。
7b:根据这三个要编码的范围生成的关键字编码表。
图8:IP包分类和待查找IP包负荷的变化曲线(按照40Gbps速度的百分比算)
图9:并行IP包分类流程图。
具体实施方式
IP包分类器的设计主要包含2个组成部分:一个是把所给出的规则库按照一定的原则存放到存储器(在我们的设计里即TCAM)芯片里,也就是规则表的组织;另一个是设计一个IP包分类器的流程,即对于每个IP包,如何把其信息域,即关键字,送到规则表内匹配查找,得到与规则匹配而且优先级最高的规则,根据规则给IP包打上标记,以便后面进行处理。
相应的,对于我们的发明内容也分为2部分,第一部分是分布式规则表的生成和规则中范围域的编码;第二个是自适应均衡的并行IP包分类方案。
一、分布式规则表的生成:
现行的基于TCAM的分类器只采用一个TCAM芯片,由于一个IP包分类需要占用2次(或更多的)TCAM访问,造成目前的TCAM速度不能满足高端的要求。因此要解决这个问题,必须采用多块TCAM同时并行的处理多个IP包来提高吞吐量。但如果简单的把所有的规则都复制到这些TCAM里来实现,那么很显然我们就需要成倍的增加TCAM的需求量,这显然是不可行的。
我们的新颖就在于,我们考虑把规则库进行分割,把分割后的规则子集分别存放在各个TCAM里面,这样就不会产生冗余了,而且多个IP包可以同时在多个TCAM内被匹配查找。大大提高吞吐量。但要实现这个方案,仍存在几个很严峻的问题:
1)我们要保证被分到每个TCAM的哪些规则可以保证一个查找的完整性,也就是不能存在一个IP包匹配了在其中一个TCAM的某个规则,而在其他的TCAM内也有别的规则和这个IP包匹配(和任何一个IP包匹配的规则必须都存放在一个TCAM内);
2)我们要尽量保证被储存在各个TCAM内的规则数目差不多,这样才可以保证TCAM的利用率,否则某些TCAM满了,其他一些还很空;
3)我们应该保证,被分到各个TCAM的IP包分类的任务量接近,否则在查找过程中某些TCAM可能负担过重,而另外一些则可能没有任务。
我们的发明方案就是围绕这三个问题展开的,这里,我们首先需要先给出一些符号定义,然后我们在给出设计思路和具体的算法流程说明。
符号说明:
1)对于每一条规则,它包含5个匹配域,相应的处理动作和该规则的优先级这3类信息。5个匹配域包括:源IP地址前缀,目的IP地址前缀,协议代号,TCP/UDP源端口范围和TCP/UDP目的端口范围。图一给出了一个常规规则表的示例。
2)每条规则的源IP地址前缀,目的IP地址前缀,协议代号这3个域都可以表示成“三态比特串”的形式,所谓“三态比特串”就是一个在“0,1,*”这3种符号间选择的比特串。例如图一第一个规则的源IP前缀“166.111.*.*”,可以表示成一个“三态毕特串”:
“10100110.01101111.********.*******”。正是因为这样,这三个可以表现为“三态毕特串”的域才可以直接存放在TCAM内。
我们定义:从一个规则的这3个域(源IP地址前缀,目的IP地址前缀,协议代号)中P个指定位置提取的P个三态比特叫做该规则的规则ID。例如,如果定义源IP前缀的第1(左边起是第1)和第24位以及目的IP地址前缀的第24位这3个位置为指定位置,那么图一中规则第1-5条规则ID分别是:
1**,10*,11*,**0,***。
3)从一个要分类的IP包提取出来的分类信息我们把它叫做关键字。相应的,它包含这个IP包的5个包头信息域:源IP地址,目的IP地址,协议类型号,TCP/UDP源端口号和TCP/UDP目的端口号。(注意这里的IP是“地址”不是“前缀”,端口是“号”,不是“范围”)。
4)每个关键字的源IP地址,目的IP地址和协议代号这3个域都可以表示成一个“两态比特串”的形式。例如一个IP地址:166.111.0.1可以表示成一个“两态比特串”:
“10100110.01101111.00000000.00000001”。
对应的,我们定义:从一个关键字,对应于规则ID那P个位置提取出来的P个两态比特,叫做该关键字的关键字ID。例如仍然定义源IP前缀的第1(左边起是第1)和第24位以及目的IP前缀的第24位这3个位置为指定位置,那么关键字:“166.111.0.1,202.112.0.1,80,1024,11”的关键字ID就是:110。
5)我们定义:拥有相同规则ID的规则组成的集合为一个规则ID组。例如图一中的5个规则,由于他们的规则ID都不同,所以分别属于5各不同的规则ID组。
6)我们定义:2个比特串匹配当且仅当:这2个比特串对应的比特都满足1)相同或2)其中一个为″*″(即任意,或者通配符)。
7)我们定义:拥有能够匹配同一个关键字ID的规则ID的那些规则组成的集合为一个关键字ID组。例如对于一个关键字ID“110”,图一中的第1,3,4,5这4个规则的规则ID都可以和它匹配,所以这4个规则属于同一个关键字ID组。
定理:
只要1)保证一个关键字ID组被存放在同一个TCAM内,2)每个关键字都被送到存放对应关键字ID组的TCAM进行查找,就可以保证对于某个IP包查找/匹配的完整性。
证明:因为1)如果某个规则和某个关键字匹配,一个必要条件是:这个规则的规则ID和这个关键字的关键字ID匹配;2)那些不属于某个关键字ID组的规则,不可能匹配拥有该关键字ID的关键字,因为根据定义和1),所有能匹配该关键字匹配的规则都属于该关键字ID组。因此只要我们把一个待查找的关键字送到存放对应关键字ID组的TCAM去查找就可以保证匹配查找的完整性。
到此为止,我们知道只要按照关键字ID组为单位来存放规则,就可以解决查找完整性的问题。接下来,我们解决如何保证存放在各个TCAM的规则尽可能一样和如何尽量保证被分配到各个TCAM的匹配查找任务尽可能均衡的问题。
对于平均分配规则到各个TCAM的要求,我们注意到,只要尽可能的保证各个关键字ID组包含的规则数接近,而且被分配到各个TCAM的关键字ID组的个数相等,那么就可以较好的保证。在我们的发明里,我们是通过对ID比特串指定位置的选择首先解决了使各个关键字ID组包含的规则数接近的问题。给定一个参数P,我们通过对各种P比特串组合指定位置的测试(因为可以作为ID位的位置有32+32+8=72个,因此这个测试要做C72 P次),看看在每种选择下的,各个关键字ID组内规则数的分布情况,通过比较选择出其中最佳的分配。图二给出了一个对一个真实IP包分类数据库[索引]ID位选择的结果。在这个测试里,目标规则库有1550个规则,我们指定P=4。也就是说我们需要对C72 4种组合进行测试,会得到24=16个关键字ID组。最后的结果是:当选择目的IP地址前缀的第1和第21位,源IP地址前缀的第4位以及协议类型的第5位时结果最好,如图二所示,每个关键字ID组的大小已经比较接近了。
接下来,分布式规则表的生成还剩2个问题没有解决,即1)是要把这些关键字ID组平均分配到各个TCAM内(这样就可以保证每个TCAM得到的规则数接近,提高利用率),2)保证每个TCAM分得的查找任务量在宏观上要尽可能接近,避免由于不均衡带来的拥塞。在我们的发明里,我们通过一个叫做分布式规则表生成算法的方案来同时解决这2个问题。(可以证明,这是一个NP难的问题,所以所有可行的解法都只能是近似最佳的解法,我们的方法也一样。)为了介绍这个算法,我们仍然需要先介绍一下有关的定义:
8)我们定义:
Qk代表被分到第k个TCAM的关键字ID组的集合,k=1,2,...,K,其中K是系统中TCAM的个数;
W[j]为拥有第j个关键字ID的关键字在所有关键字里出现的频率/概率(这个可以通过统计方法获得),j=1,2,...,2P。他代表第j个关键字ID组的等效访问频率,这个频率越高,那么装有这个关键字ID组的TCAM需要负荷的任务就越重。
RM[k]为分配到第k个TCAM内所有的关键字ID组对应的等效访问频率,k=1,2,...,K。它数值上等于被分配到第k个TCAM内的关键字ID组的等效访问频率值和。
G[k]为被分配到第k个TCAM的关键字ID组的个数,k=1,2,...,K。
分布式规则表的生成算法流程参见图三,我们具体描述如下:
第一步:初始化。把所有决策变量复位,包括决策变量Qk(k=1,2,...,K),目标(相关)值RM[k](k=1,2,...,K)和一些中间变量。
第二步:分配关键字ID组到TCAM。
首先,我们将所有关键字ID组按照W[j]的大小从大到小排队,先分配W[j]值大的组,后分配小的组,这样做的好处是:到了分配的后半阶段,我们可以更好的利用W[j]值小的这些组来均衡(大的不利于调节)。
在分配每个关键字ID组的时候,我们需要对TCAM,根据他们当前RM[k]的值从小大大排序,优先把目前要分配的关键字ID组分配给RM[k]较小的TCAM。这样可以尽可能保证匹配查找任务均衡的分配。每分配完一个关键字ID组到某个TCAM,这个TCAM对应的Qk,RM[k]就会被更新。接下来就是分配下一个关键字ID组。直到所有组被分完为止。
第三步:根据Qk,实现分配。
二、对规则中范围域的编码以及相应的生成关键字编码表
范围匹配造成一个规则可能需要多个TCAM表项存储的问题。我们举一个简单的例子来说明。同时,请参考图1中关键字编码表生成的例子中,一个范围需要用多个TCAM表项表示的例子。
我们知道,TCAM储存的“字”是“三态比特串”,也就是说,一个TCAM字可以表示一个三态比特串,例如所有的前缀都可以表示为一个三态比特串,因此一个前缀可以用一个TCAM表项来存储。与此相反,一个端口范围往往不能用一个三态比特串来表示,需要多个表示。例如端口范围:{>1023}(或{1024-65535})就不可以用一个三态比特串来表示,他需要至少6条三态比特串来表示,如下表:
表1:表示范围{>1023}所需要的6个三态比特串
 三态比特串
 **** *1** **** ****
 **** 1*** **** ****
 ***1 **** **** ****
 **1* **** **** ****
 *1** **** **** ****
 1*** **** **** ****
表中右边表示2进制数的低位,左边高位。″*″代表任意。要覆盖从1024到65535所有这些端口值,至少要这6个三态比特串表示。因此拥有{>1023}的规则同样至少需要6个TCAM表项存储。但是,更严重的是,我们注意到,每个规则有2个范围匹配类型的域,即源端口范围和目的端口范围。因此,如果某个规则的这两个域包含的范围都需要多个三态比特串来表示,例如源端口范围需要N个三态比特串,目的端口范围需要M个的话,那么这个管子就至少需要M*N条TCAM表项来存储。这就意味着TCAM的需求量将会由于TCAM不直接支持范围匹配而爆炸性的增长。这就是我们不得不解决他的原因。
如上所述,由于某些规则包含一些范围,这些范围不能用一个“三态比特串”来表示,所以这些规则可能需要很多的TCAM表项来存储,消耗很多的成本。对于这些范围的编码是解决浪费的一个有效的办法。
在我们的发明中,我们注意到,通常可商用的TCAM芯片,数据宽度是72比特,因而他只支持宽度是72整倍数的关键字的查找。要是关键字不是72比特的整倍数,那么势必会形成一些浪费的比特。例如我们涉及的5个IP包信息域共需要23+32+16+16+8=104比特,72<104<72*2,因此一个规则起码占用2个TCAM的字宽,同时多出来的72*2-104=40个比特则被浪费。我们正是利用这40个被浪费的比特来对范围域进行编码。我们称这40比特为可用编码比特。
规则的编码的原理:
如图4所示:一条规则要104比特,需要占用2个TCAM字,即144比特。图4a给出了一个我们需要存放的规则例子。假设TCAM内每个表项(2个内存字)存放规则信息域的安排如图4b所示。那么在没有编码前,由于这条规则的源端口范围包含有{>1023}这个规则,因此要存储这个规则需要6个表项(共计12个内存字),如图4c所示。假设我们定义40个可用编码比特的第一位来代表源端口范围{>1023},那么现在我们只需要用一个表项来储存这个规则,从而达到减少TCAM使用量的作用。
另一方面,通过对真实规则库的分析我们发现,现实的应用中,需要编码的范围其实并不多,40个可用编码比特其实足够用了。而我们并不满足于此,我们采用优先对那些造成更多开销的范围进行编码,这样,就算在很极端的情况40比特不够用,我们仍可以保证尽可能有效的利用这40比特降低TCAM的使用量。
关键字的编码表的生成:
为了实现编码,除了对规则进行编码外,我们对待查找的关键字也需要进行调整/编码。方法很简单,我们对于每一个待查找的关键字,我们需要先检查他的2个端口域,看看这2个端口值有没有落到某些需要编码的范围里面,如果落在了,那么对应于需要编码的范围的位置(也就是关键字的第105-144这40个比特)上的比特被置为‘1’,当这个端口值同时落在了多个需要编码端口的范围内,那么相应的“可用编码比特”的所有对应位置都要置成‘1’;相反,如果该端口没有落到某个需要编码的端口范围内,那么“可用编码比特”的对应位就是‘0’。
例如,我们用“可用编码比特”的第一位代表源端口范围{>1023},第二位代表源端口范围{256-1023},第三位代表源端口范围{0-513}。如果某个关键字的源端口号是258,那么它落在了范围{0-513}和{256-1023}内,所以,关键字的可用编码比特的第1,3位应该为‘1’,而第2位为‘0’。在我们的发明中,这个任务是用TCAM本身来完成的,每个TCAM都有一个关键字编码表,用来对关键字按照上面提到得方法进行编码(具体的实现方法见“具体
实施方式”一章)。
注意到:用TCAM来做关键字的编码虽然实现简单,但这会降低TCAM的可用带宽。而由于我们结合了分布式并行的分类技术,他们可以得到互补,从后面的分析我们可以发现,采用4个TCAM并行,就可以满足40Gbps的线卡要求,计算用TCAM本身来做关键字编码。
三、自适应均衡的并行IP包分类方案
有了分布式规则表的生成算法,我们就可以利用并行的方式同时对多个IP包进行匹配查找,大幅度的提高吞吐量,另一方面也补足了用TCAM做关键字编码带来的影响。
总体设计:
如图五所示:每个要分类的IP包首先会被装入IP包缓冲器。接下来,集中分配器从IP包缓冲器调出一个包,提取他的5个信息域和关键字ID;然后根据关键字ID,得知当前这个IP包应该送到哪一个TCAM进行匹配查找(即存放有对应关键字ID组的那个TCAM),并把相关信息送到这个TCAM对应的关键字缓冲器内。接下来,集中分配器还需要把这个关键字的端口域送到某个TCAM进行编码。所谓的自适应均衡就在这一步进行。由于每个TCAM都有一个关键字编码表,所以对任何一个关键字的编码可以在任何一个TCAM内进行(不同于规则库)。调度器会根据当前各个TCAM的负载程度,选择其中负载最轻的一个TCAM来对关键字进行编码,并将相关的信息送到这个TCAM对应的调度器的待编码信息缓冲器中。每个TCAM对应一个调度器,他负责管理TCAM的工作。每当有关键字编码任务时,他就从对应的待编码信息缓冲器取出要编码的端口信息,送到TCAM进行编码。TCAM编码的结果被编码返回器返回到对应调度器的编码结果存储器里。TCAM对应的调度器发现编码结果返回时,他就(1)从关键字缓冲器取出待查关键字;(2)从编码结果存储器里取出对端口域的编码结果,将他们组合起来送入TCAM查找,并返回最终分类结果。
每个模块的具体功能描述:
1)IP包缓冲器:是先进先出的双端口存储器,用于缓冲存储待分类的IP包;
2)关键字缓冲器:是先进先出的双端口存储器,用于缓冲存储待分类但还没有编码的关键字。
3)待编码信息缓冲器:是先进先出的双端口存储器,用于缓冲存储每个IP包需要编码的端口域信息;
4)编码结果存储器:用于存储完成IP包端口信息在TCAM内进行编码的结果;
5)集中分配器:它主要负责3个任务:第一:提取每个待分类的IP包的信息;第二:根据各个TCAM当前的负荷情况,确定其中最空闲的一个,把当前(IP包的)关键字的编码任务交给他(放入它对应的待编码信息缓冲器内);第三:根据当前IP包关键字的关键字ID确定,当前的关键字应该送入哪一个TCAM进行匹配查找,并把关键字放入其对应的关键字缓冲器内,等待编码结果返回,一并送入TCAM进行查找。
6)调度器:每个TCAM有一个处理专门负责管理这个TCAM的工作调度。它主要有2个任务:第一:当发现有需要编码的任务时,从对应的待编码信息缓冲器取出需要编码的端口信息,送到TCAM进行编码;第二:当发现有编码结果从编码结果返回器返回时,从关键字缓冲器取出对应关键字与返回的编码结果一起送入TCAM进行匹配查找。
7)编码返回器:它的主要任务是判断从各个TCAM返回的结果是编码结果还是匹配查找结果。要是编码结果,他就将结果送到对应的编码结果存储器内;要是匹配查找结果,他就将这作为最终结果返回。
8)TCAM和配套的SRAM:实现IP包分类的最基本存储器,TCAM用来放规则的匹配域,SRAM(静态随机存储器)用来放规则对应的实施动作。(所有基于TCAM的查找装置都必须有SRAM和他配套)
详细流程:
我们采用CYPRESS公司型号为CYNSE70128的TCAM芯片来进行具体的实施示范。控制部分模块采用Altera公司的FPGA(EP2A70)。CYPRESS的这款TCAM工作在133兆Hz,对于我们的发明,每个IP包分类需要2次TCAM访问,因此一个TCAM可以实现大约每秒66兆次的包分类;单个TCAM的容量是64K*72bit约为570KByte,约支持32K条规则的存储(因为关键字编码表较小,所以忽略),当所有表项同时进行匹配时最大功耗是8瓦。
对于一个有100K条规则的规则库:
1)我们采用4个TCAM芯片(CYNSE70128)(4个共支持大约120K条规则,多于100K条,有些富裕,允许各个TCAM分得的规则数有少量的不平均);
2)假设我们采用4位宽的ID比特。首先,我们通过遍历所有72个位置(即32位目的IP前缀,32位源IP前缀和8位协议号)里4个的组合,挑选其中能够使关键字ID组划分最平均的一个组合,作为ID比特位置,把规则集划分成24=16个关键字ID组。
3)假设16个关键字ID组的等效访问频率分布如图六所示(我们有意设计一个不均匀得分布,这样可以体现我们发明的调节能力),根据分布式规则表的生成算法,得到关键字ID组在4个TCAM内的分配:
Q1={2,15,13,O};
Q2={12,8,9,11};
Q3={6,5,3,14);
Q4={7,10,4,1};
具体如表2所示:
表1:16个关键字ID组在4个TCAM内的分配结果
TCAM           关键字ID组编号(对应的关键字ID) TCAM分得的等效访问频率%
#1  2(0010)  15(1111)   13(1101)   0(0000) 25.9
#2  12(1100)  8(1000)   9(1001)   11(1011) 24.7
#3  6(0110)  5(0101)   3(0011)   14(1110) 25.9
#4  7(0111)  10(1010)   4(0100)   1(0001) 23.5
我们可以看到,各个TCAM分得的访问频率很接近。
4)接下来,在把规则装入TCAM之前,我们还需要对规则里的某些范围进行编码。具体需要编码的范围和具体的规则有关,我们假设,在这个例子里面,有三个范围:{256-1023},{0-513}和{>1023}需要编码(可能有很多规则包含这3个范围,因此所有含有这3个范围的规则都需要编码),我们定义40个可用编码比特的前三个分别代表这3范围(按顺序),也就是说,所有包含这3个范围的规则,在40个可用编码比特位置上的对应位置都为‘1’,否则为‘0’。而40个可用编码比特的后37位没有用到,因此所有规则的可用编码比特的后37位都是‘*’(任意)。
5)接下来,我们就根据3),4)的结果,把编码后的第2,15,13,0这4个关键字ID组分到第一个TCAM;第12,8,9,11这四个分到第二个TCAM;第6,5,3,14分到第三个TCAM,剩下的第7,10,4,1分到第四个TCAM。到此为止,规则的分配就完成了。
6)下一步是生成关键字编码表(根据关键字的端口域,得到关键字的可用编码比特应该是什么)。整个过程如图7所示。根据上一步,我们知道三个范围需要编码,也就是说所有端口落在这三个范围内的那些关键字,在他的可用编码比特上应该体现出来(对应德位置应该是‘1’)。我们看见,这三个范围是有重叠的,因此对有某些区间的端口,他可能同时属于这3个范围中的多个,也就是说有多个‘1’。从图中,我们看见这3个范围把整个区间划分为4个区域:<0-255>,<256-513>,<514-1023>和<1024-65535>,每个区域应该对应一个编码结果。例如如果一个关键字的端口为300,它落在第2个区间,这个区间被2个需要编码的范围跨过:{0-513}和{256-1023},所以这个区间对应的编码就必须是对应{0-513}和{256-1023}这2个范围的比特为‘1’,其他为‘0’(或‘*’),即“011***...****”。
同时我们注意到,要表示这个4个区域,每个都可能需要不止一个TCAM表项,比如<256-513>这个区域需要3个表项(三态比特串),而<1024-65535>更是要6个。从图七看出,要对这3个范围完成编码,一共需要18个TCAM表项。但值得注意的是,虽然不编码前存储一个规则需要多个表项,而编码后储存编码表的一个范围也需要多条表项,但2者产生的后果是不同的。因为同样一个范围,很有可能有多个规则包含这个范围,如果不编码,这些规则每个都需要多条TCAM表项,而编码之后,在关键字编码表这个范围只需要一次表示为多条表项即可。所以编码可以节省TCAM的使用量。
7)以上这些都就绪后,分布式的规则表就生成了,我们就可以进行IP包分类了。具体的流程根据“发明内容”一章的描述。
我们对我们的发明进行的仿真试验,图8给出了IP包分类吞吐量根据输入待分类的IP包的流量强度的变化曲线我们发现,由于自适应均衡的作用,在高负荷段(接近40Gbps的100%时),曲线仍然保持接近线形,表示我们的发明可以适应高负荷的情况。在流量输入达到40Gbps的100%(大概100兆包每秒),采用4个TCAM的这个方案可以实现近乎100%的吞吐率,即每秒100兆个IP包的查找。这是当前其他任何技术都不可比拟的。

Claims (2)

1、基于TCAM的解决范围匹配的并行IP包分类器,其特征在于,它含有:
路由器负责维护和管理的CPU,它通过运行分布式规则表生成算法,把IP包分类规则表划分成K个分布式的子规则表,同时对规则的端口域进行编码,并生成关键字编码表,然后把编码后的分布式子规则表和关键字编码表送到TCAM(和与其配套的SRAM)进行存储;
K个三元的基于内容寻址的存储器,即K个TCAM(Ternary Content AccessibleMemory),每个TCAM内存有一个由上述路由器CPU划分成的分布式子规则表和一个关键字编码表,对待分类的IP包的关键字进行分类和范围域的编码。
K个SRAM,用于存储每个分类规则对应的实施动作的代码;
并行分类器的控制部分,他由一个现场可编程门阵列(即FPGA芯片)实现,,他含有:
一个IP包缓冲器,缓冲待分类的IP包;
一个集中分配器,它内存有各个TCAM内存放的由路由器CPU告知的分布式子规则表的信息,它负责提取待分类的IP包的关键字,并根据分布式子规则表在各个TCAM内存放的信息,把待分类IP包的关键字分配给对应的TCAM进行分类查找,同时根据各个TCAM的负载情况,自适应均衡的把对IP包待编码的端口信息域的编码的任务分配给各个TCAM;他的输入端连接IP包缓冲器的输出端;
K个关键字缓冲器,它们是用来缓存待分类但还没有编码的IP包的关键字,它们各自的输入端与上述的集中分配器的对应输出端相连;
K个待编码信息缓冲器,它们是用来缓存IP包关键字中需要编码的端口域信息;它们各自的输入端与上述的集中分配器的对应输出端相连;
K个调度器,他们各自的2个输入端分别与上述的K个关键字缓冲器、K个代编码信息缓冲器的相应输出端相连,他们各自的一个输出端与上述相应的一个TCAM的输入端相连,他负责安排和调度对应的TCAM的访问;
K个编码结果存储器,它们各自的输出端与上述相应的调度器的输入端相连;
一个编码返回器,他的编码结果的输出端与上述各编码结果存储器的输入端相连;他还有一个最终分类结果的输出端。
2、根据权利要求1所述的基于TCAM的解决范围匹配的并行IP包分类器提出的分类方法,其特征在于,它依次包含以下步骤:
步骤1,定义以下参量:
分类规则,IP包分类规则库中的每一条规则,它包含5个匹配域,相应的处理动作和该规则的优先级这3类信息,上述的匹配域包括:源IP地址前缀,目的IP地址前缀,协议代号,TCP/UDP源端口范围和TCP/UDP目的端口范围;
规则ID,从一个规则的源IP地址前缀,目的IP地址前缀,协议代号这三个域中P个指定位置提取组成的三态比特串,所述的三态比特串就是一个在“0,1,*”这3个符号间选择组成的比特串;
关键字,从一个要分类的IP包提取出来的分类信息,它包含这个IP包的5个包头信息域:源IP地址,目的IP地址,协议类型号,TCP/UDP源端口号和TCP/UDP目的端口号;
规则ID组,即含有相同的ID的规则组成的集合;
关键字ID,它是指从一个关键字中,对应于规则ID那P个位置提取出来的P个两态比特串,所述的两态比特串是指一个在“0,1”这2个符号间选择组成的比特串;
关键字ID组,它是一些规则ID组的集合,这些规则ID组的ID能够匹配同一个关键字ID,所述的匹配是指2个比特串对应的比特相同,或其中一个为“*”,即通配符。步骤2,依次按以下步骤,路由器CPU得到分布式规则表方案,即关键字ID组的分配方案:步骤2.1,在路由器CPU内定义以下参量:
P为ID比特的位数;
Qk代表被分到第k个TCAM的关键字ID组的集合,k=1,2,...,K,其中K是系统中TCAM的个数;
W[j]为拥有第j个关键字ID的关键字在所有关键字里出现的频率/概率,j=1,2,...,2P。他代表第j个关键字ID组的等效访问频率;
RM[k]为分配到第k个TCAM内所有的关键字ID组对应的等效访问频率,k=1,2,...,K。它数值上等于被分配到第k个TCAM内的关键字ID组的等效访问频率值和。
G[k]为被分配到第k个TCAM的关键字ID组的个数,k=1,2,...,K。
步骤2.2,根据关键字ID组的定义,只要我们给出一种ID比特位置的选择方案,就会得到一个关键字ID组的划分方案;在本步骤里,我们通过遍历目的IP前缀,源IP前缀,协议代号里所有比特位置中P个的组合,挑选其中能够使关键字ID组划分最平均的一个组合,作为最终ID比特的位置,即它是通过对C位置数 P种组合进行测试实现的;
步骤2.3,依次按照下述分布式规则表的生成步骤,得到关键字ID组在K个TCAM内的分配方案:
步骤2.3.1,路由器CPU对上述Qk,RM[k]和G[k]复位;
步骤2.3.2,路由器CPU分配关键字ID组到K个TCAM,
首先,把所有待分配的关键字ID组按上述W[j]的值从大到小排列,选出其中最大的一个作为目前要分配的关键字ID组,同时按照RM[k]较小的TCAM优先的原则,把目前要分配的关键字ID组分配给上述RM[k]较小的TCAM;
其次,每分配完一个关键字组到上述TCAM,就更新与该TCAM对应的Qk,RM[k]和G[k]值,然后再根据上一步的做法,分配下一个关键字ID组;
步骤2.3.3,重复步骤2.3.2,直到所有关键字组分配完为止,最后得到分配给各个TCAM的关键字ID组的集合Qk,k=1,2,...,K,这个也就是分布式规则表;
步骤2.3.4,路由器CPU把上述获得的关键字ID组的分配方案告知集中分配器;步骤3,路由器CPU对各条规则中的范围域进行编码,同时根据对规则编码结果,生成关键字编码表:
步骤3.1,定义以下参量:
可用比特数T,它等于一个TCAM表项包含的比特数减去5个IP包信息域总共需要的比特数;
规则端口范围的度:对于一些规则,其目的端口范围或源端口范围可能需要用多于一个三态比特串来表示,我们称所需的三态比特串的条数为该端口范围的度;
步骤3.2,确定上述TCAM内存在的可用编码比特数T;
步骤3.3,按照所有规则包含的所有端口范围的度的值从大到小来排列,选取其中度较大的T个端口范围来进行编码:
分配一个可用编码比特给每一个需要编码的端口范围,即对该范围进行编码;具体的,凡是包含该端口范围的规则,可用编码比特中对应分配给这个端口的位置设为1,其他可用编码比特位置则设为0;而不包含任何需要编码的端口范围的规则,其可用编码比特全部位置都为0;
步骤3.4,路由器CPU根据对规则范围端口的编码结果,生成关键字编码表,依次包含以下步骤:
步骤3.4.1,根据所有需要编码的端口范围的重叠关系,得到w个原子编码端口范围,原子编码端口范围就是由所有需要编码的端口范围的边界经过互相组合,得到的一系列不相重叠的子范围,每个原子编码端口范围都包含在一个或多个需要编码的端口范围内,我们定义一组T比特的编码,叫原子范围端口编码,每一个比特代表一个需要编码的端口范围;原子范围端口编码用来表示这个原子端口范围包含在哪些需要编码的端口范围里:凡是包含的对应的比特设为‘1’,否则设为0;
步骤3.4.2,对于每个原子编码端口范围生成若干关键字编码表的表项,其步骤依次包括:
步骤3.4.2.1得到表示该原子端口范围需要的v个三态比特串,其中v是该原子端口范围的度;
步骤3.4.2.2生成v个关键字编码表项,其中每条表项在TCAM内存放的是其中一个三态比特串,而配套SRAM内存放该原子端口范围的原子端口范围编码;步骤4,路由器CPU根据步骤2得到的分布式规则表方案,把在步骤3里经过编码的规则,以关键字ID组为单位,送到相应的TCAM进行存储;同时每个TCAM都存储一份步骤3.4中得到的关键字编码表;
步骤5,对每个送入系统的IP包进行自适应均衡的并行IP包分类,它依次含有以下步骤:
步骤5.1,把每个要分类的IP包装入IP包缓冲器;
步骤5.2,集中分配器从IP包缓冲器中提取出排在最前头的IP包,提取出它的5个信息域,即关键字,并获得该IP包的关键字ID;
步骤5.3,集中分配器根据在步骤2.3.4由路由器CPU告知的关键字ID组分配信息和当前IP包的关键字ID,判断当前这个IP包应该送往哪一个TCAM进行分类查找,并把该IP包的关键字送入对应的该TCAM的关键字缓冲器;
步骤5.4,集中分配器根据每个关键字缓冲器的空满情况,判断对应的各个TCAM负载的高低,从而选出其中最空闲的一个TCAM,把对当前IP包端口范围编码的任务交给他,即把当前IP包的端口范围域放入对应的待编码信息缓冲器;
步骤5.5,对于每一个TCAM,对应的调度器从步骤5.4所述的待编码信息缓冲器中取出一个待编码端口范围,送入TCAM的关键字编码表进行关键字的端口域编码;
步骤5.6,编码结果从对应的SRAM输出,经过编码返回器返回,输出到对应TCAM的编码结果存储器里;
步骤5.7,对应的调度器从编码结果存储器里取出端口范围的编码结果,同时从关键字缓冲器中取出IP包的关键字,组合起来,一起送入TCAM的分布式规则表内进行规则的分类匹配查找;
步骤5.8,分类匹配查找结果从SRAM返回,经过编码结果返回器最终返回。
CNB2005100115114A 2005-04-01 2005-04-01 基于tcam的解决范围匹配的并行ip包分类器及方法 Expired - Fee Related CN100387028C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2005100115114A CN100387028C (zh) 2005-04-01 2005-04-01 基于tcam的解决范围匹配的并行ip包分类器及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2005100115114A CN100387028C (zh) 2005-04-01 2005-04-01 基于tcam的解决范围匹配的并行ip包分类器及方法

Publications (2)

Publication Number Publication Date
CN1674557A true CN1674557A (zh) 2005-09-28
CN100387028C CN100387028C (zh) 2008-05-07

Family

ID=35046830

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2005100115114A Expired - Fee Related CN100387028C (zh) 2005-04-01 2005-04-01 基于tcam的解决范围匹配的并行ip包分类器及方法

Country Status (1)

Country Link
CN (1) CN100387028C (zh)

Cited By (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007101380A1 (fr) * 2006-03-09 2007-09-13 Zte Corporation Procédé étendu de codage de segments permettant de réaliser une adaptation d'intervalle à l'aide d'une mémoire adressable à contenu ternaire
CN100386762C (zh) * 2006-03-02 2008-05-07 华为技术有限公司 动态范围匹配表维护方法
CN100396015C (zh) * 2006-03-29 2008-06-18 华为技术有限公司 一种tcam路由表管理方法和系统
WO2009114974A1 (en) * 2008-03-19 2009-09-24 Shenyang Institute Of Automation Of The Chinese Academy Of Sciences General field bus receiver and receiving method thereof
CN101841546A (zh) * 2010-05-17 2010-09-22 华为技术有限公司 一种规则匹配方法、装置及系统
CN101321162B (zh) * 2008-07-03 2010-12-29 江苏华丽网络工程有限公司 基于tcam序偶的tcp序列号检查硬件实现方法
CN101039253B (zh) * 2006-03-17 2010-12-29 中兴通讯股份有限公司 一种实现三重内容可寻址存储器范围匹配的前缀扩展方法
CN101645852B (zh) * 2009-06-09 2011-06-15 中国科学技术大学 一种网络包分类的设备和方法
CN102857322A (zh) * 2011-06-30 2013-01-02 丛林网络公司 混合端口范围编码
CN103188042A (zh) * 2011-12-31 2013-07-03 重庆重邮信科通信技术有限公司 一种ip数据包的匹配方法和匹配加速器
CN103297296A (zh) * 2013-05-30 2013-09-11 大连梯耐德网络技术有限公司 一种基于fpga的逻辑运算查找方法和系统
CN103546378A (zh) * 2013-05-20 2014-01-29 李险峰 基于tcam的范围多匹配2级分层查找方法
CN103647708A (zh) * 2013-11-29 2014-03-19 曙光信息产业(北京)有限公司 基于atca的数据报文处理板
CN103685041A (zh) * 2012-09-04 2014-03-26 清华大学 一种基于比特粒度可编程的路由器及路由方法
CN104158745A (zh) * 2013-05-13 2014-11-19 中兴通讯股份有限公司 一种实现数据包转发的方法及系统
CN104410573A (zh) * 2014-11-26 2015-03-11 中国电子科技集团公司第四十一研究所 一种基于tcam的包匹配方法
CN104718731A (zh) * 2012-06-27 2015-06-17 华为技术有限公司 三重内容可寻址内存协助的包分类
CN101714948B (zh) * 2009-10-27 2016-03-30 清华大学 一种多域的网包的分类方法和装置
CN105591914A (zh) * 2014-10-21 2016-05-18 中兴通讯股份有限公司 一种openflow流表的查表方法和装置
CN105681201A (zh) * 2015-12-28 2016-06-15 曙光信息产业(北京)有限公司 报文的规则匹配方法和装置
CN105791107A (zh) * 2014-12-22 2016-07-20 中兴通讯股份有限公司 一种acl规则的配置方法、匹配方法及相关装置
CN108400938A (zh) * 2018-01-25 2018-08-14 济南浪潮高新科技投资发展有限公司 一种数据流处理方法和装置
CN108781185A (zh) * 2016-12-13 2018-11-09 甲骨文国际公司 提供用于网络设备的可编程包分类框架的系统和方法
CN109672623A (zh) * 2018-12-28 2019-04-23 大唐软件技术股份有限公司 一种报文处理方法和装置
CN109981464A (zh) * 2019-02-28 2019-07-05 中国人民解放军陆军工程大学 一种在fpga中实现的tcam电路结构及其匹配方法
CN112528094A (zh) * 2020-12-04 2021-03-19 国网山东省电力公司信息通信公司 一种基于分层映射的多字段范围tcam编码方法及系统
CN113157343A (zh) * 2021-04-27 2021-07-23 上海申铁信息工程有限公司 一种phm系统的可配置算法实现装置、方法及存储介质
CN114745327A (zh) * 2022-06-10 2022-07-12 鹏城实验室 业务数据转发方法、装置、设备及存储介质
CN115460148A (zh) * 2022-08-30 2022-12-09 新华三技术有限公司合肥分公司 一种配置acl规则、匹配报文的方法和网络设备
CN115913963A (zh) * 2022-10-28 2023-04-04 新华三半导体技术有限公司 一种规则中的范围展开方法、装置、电子设备及存储介质
CN115913963B (zh) * 2022-10-28 2024-10-25 新华三半导体技术有限公司 一种规则中的范围展开方法、装置、电子设备及存储介质

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6725326B1 (en) * 2000-08-15 2004-04-20 Cisco Technology, Inc. Techniques for efficient memory management for longest prefix match problems
US6516383B1 (en) * 2001-05-30 2003-02-04 Cisco Technology, Inc. Techniques for efficient location of free entries for TCAM inserts
CN1173531C (zh) * 2003-01-17 2004-10-27 清华大学 同时支持路由查找、ip包分类、arp查找的方法及查找系统
JP3949696B2 (ja) * 2003-08-20 2007-07-25 日本電信電話株式会社 プロトコル高速化装置
CN1279725C (zh) * 2004-01-16 2006-10-11 清华大学 路由查找和流分类用的高速低功耗的匹配方法及其系统
CN1279729C (zh) * 2004-02-20 2006-10-11 清华大学 基于tcam的分布式并行ip路由查找方法

Cited By (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100386762C (zh) * 2006-03-02 2008-05-07 华为技术有限公司 动态范围匹配表维护方法
CN101035061B (zh) * 2006-03-09 2010-05-12 中兴通讯股份有限公司 实现三重内容可寻址存储器范围匹配的分段编码扩展方法
WO2007101380A1 (fr) * 2006-03-09 2007-09-13 Zte Corporation Procédé étendu de codage de segments permettant de réaliser une adaptation d'intervalle à l'aide d'une mémoire adressable à contenu ternaire
CN101039253B (zh) * 2006-03-17 2010-12-29 中兴通讯股份有限公司 一种实现三重内容可寻址存储器范围匹配的前缀扩展方法
CN100396015C (zh) * 2006-03-29 2008-06-18 华为技术有限公司 一种tcam路由表管理方法和系统
WO2009114974A1 (en) * 2008-03-19 2009-09-24 Shenyang Institute Of Automation Of The Chinese Academy Of Sciences General field bus receiver and receiving method thereof
CN101321162B (zh) * 2008-07-03 2010-12-29 江苏华丽网络工程有限公司 基于tcam序偶的tcp序列号检查硬件实现方法
CN101645852B (zh) * 2009-06-09 2011-06-15 中国科学技术大学 一种网络包分类的设备和方法
CN101714948B (zh) * 2009-10-27 2016-03-30 清华大学 一种多域的网包的分类方法和装置
CN101841546B (zh) * 2010-05-17 2013-01-16 华为技术有限公司 一种规则匹配方法、装置及系统
CN101841546A (zh) * 2010-05-17 2010-09-22 华为技术有限公司 一种规则匹配方法、装置及系统
CN102857322B (zh) * 2011-06-30 2015-11-04 丛林网络公司 混合端口范围编码
CN102857322A (zh) * 2011-06-30 2013-01-02 丛林网络公司 混合端口范围编码
CN103188042A (zh) * 2011-12-31 2013-07-03 重庆重邮信科通信技术有限公司 一种ip数据包的匹配方法和匹配加速器
CN103188042B (zh) * 2011-12-31 2016-03-30 重庆重邮信科通信技术有限公司 一种ip数据包的匹配方法和匹配加速器
CN104718731A (zh) * 2012-06-27 2015-06-17 华为技术有限公司 三重内容可寻址内存协助的包分类
CN104718731B (zh) * 2012-06-27 2017-08-29 华为技术有限公司 三重内容可寻址内存协助的包分类的方法、装置以及网络路由器
CN103685041B (zh) * 2012-09-04 2017-04-19 清华大学 一种基于比特粒度可编程的路由器及路由方法
CN103685041A (zh) * 2012-09-04 2014-03-26 清华大学 一种基于比特粒度可编程的路由器及路由方法
CN104158745A (zh) * 2013-05-13 2014-11-19 中兴通讯股份有限公司 一种实现数据包转发的方法及系统
WO2014183518A1 (zh) * 2013-05-13 2014-11-20 中兴通讯股份有限公司 一种实现数据包转发的方法及系统
CN104158745B (zh) * 2013-05-13 2018-11-06 南京中兴新软件有限责任公司 一种实现数据包转发的方法及系统
CN103546378A (zh) * 2013-05-20 2014-01-29 李险峰 基于tcam的范围多匹配2级分层查找方法
CN103546378B (zh) * 2013-05-20 2018-06-01 北京百卓网络技术有限公司 基于tcam的范围多匹配2级分层查找方法
CN103297296A (zh) * 2013-05-30 2013-09-11 大连梯耐德网络技术有限公司 一种基于fpga的逻辑运算查找方法和系统
CN103297296B (zh) * 2013-05-30 2016-06-29 大连梯耐德网络技术有限公司 一种基于fpga的逻辑运算查找方法和系统
CN103647708A (zh) * 2013-11-29 2014-03-19 曙光信息产业(北京)有限公司 基于atca的数据报文处理板
CN105591914A (zh) * 2014-10-21 2016-05-18 中兴通讯股份有限公司 一种openflow流表的查表方法和装置
CN105591914B (zh) * 2014-10-21 2020-07-03 中兴通讯股份有限公司 一种openflow流表的查表方法和装置
CN104410573B (zh) * 2014-11-26 2017-07-21 中国电子科技集团公司第四十一研究所 一种基于tcam的包匹配方法
CN104410573A (zh) * 2014-11-26 2015-03-11 中国电子科技集团公司第四十一研究所 一种基于tcam的包匹配方法
CN105791107A (zh) * 2014-12-22 2016-07-20 中兴通讯股份有限公司 一种acl规则的配置方法、匹配方法及相关装置
CN105681201A (zh) * 2015-12-28 2016-06-15 曙光信息产业(北京)有限公司 报文的规则匹配方法和装置
CN108781185B (zh) * 2016-12-13 2021-08-03 甲骨文国际公司 提供用于网络设备的可编程包分类框架的系统和方法
CN108781185A (zh) * 2016-12-13 2018-11-09 甲骨文国际公司 提供用于网络设备的可编程包分类框架的系统和方法
CN108400938A (zh) * 2018-01-25 2018-08-14 济南浪潮高新科技投资发展有限公司 一种数据流处理方法和装置
CN109672623A (zh) * 2018-12-28 2019-04-23 大唐软件技术股份有限公司 一种报文处理方法和装置
CN109672623B (zh) * 2018-12-28 2020-12-25 大唐软件技术股份有限公司 一种报文处理方法和装置
CN109981464A (zh) * 2019-02-28 2019-07-05 中国人民解放军陆军工程大学 一种在fpga中实现的tcam电路结构及其匹配方法
CN109981464B (zh) * 2019-02-28 2021-03-26 中国人民解放军陆军工程大学 一种在fpga中实现的tcam电路结构及其匹配方法
CN112528094A (zh) * 2020-12-04 2021-03-19 国网山东省电力公司信息通信公司 一种基于分层映射的多字段范围tcam编码方法及系统
CN112528094B (zh) * 2020-12-04 2022-08-16 国网山东省电力公司信息通信公司 一种基于分层映射的多字段范围tcam编码方法及系统
CN113157343A (zh) * 2021-04-27 2021-07-23 上海申铁信息工程有限公司 一种phm系统的可配置算法实现装置、方法及存储介质
CN114745327A (zh) * 2022-06-10 2022-07-12 鹏城实验室 业务数据转发方法、装置、设备及存储介质
CN115460148A (zh) * 2022-08-30 2022-12-09 新华三技术有限公司合肥分公司 一种配置acl规则、匹配报文的方法和网络设备
CN115913963A (zh) * 2022-10-28 2023-04-04 新华三半导体技术有限公司 一种规则中的范围展开方法、装置、电子设备及存储介质
CN115913963B (zh) * 2022-10-28 2024-10-25 新华三半导体技术有限公司 一种规则中的范围展开方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
CN100387028C (zh) 2008-05-07

Similar Documents

Publication Publication Date Title
CN1674557A (zh) 基于tcam的解决范围匹配的并行ip包分类器及方法
CN1148917C (zh) 用于标识分组应被转发到网络的下一跳的地址的设备及其操作方法
CN1710879A (zh) 数据包传送装置
CN1282104C (zh) 使用tcam对数据流进行选择性路由的方法、系统和装置
CN1794236A (zh) 高效的基于cam在分组有效载荷中进行串搜索的技术
CN1725761A (zh) 网络设备实现链路聚合的方法
CN1561047A (zh) 基于tcam的分布式并行ip路由查找方法
CN1885822A (zh) 一种网络处理器
CN1863142A (zh) 给数据流提供不同的服务质量策略的方法
CN1191525C (zh) 用于分级软件分布程序包的系统
CN1957573A (zh) 使用最具体的过滤器匹配和传输层共享进行两级分组分类的装置和方法
CN1615471A (zh) 确定一个进度表的方法、调度器和系统
CN1975704A (zh) 可重构处理器或装置
CN1716915A (zh) 模块型分组通信节点设备
CN1859316A (zh) 数据包传送装置
CN1629823A (zh) 生成内容地址以指示即将写入存储系统的数据单元的方法和设备
CN1647079A (zh) 使用神经网络进行数据挖掘
CN101741705A (zh) 一种并行处理路由更新报文的方法及装置
CN101035062A (zh) 一种三重内容可寻址存储器报文分类的规则更新方法
CN1606291A (zh) 网络处理加速器
CN1949221A (zh) 存储元素的方法与系统及查找元素的方法与系统
CN1543150A (zh) 分组分类装置和使用字段级特里结构的方法
CN101047649A (zh) 一种转发数据流的方法和设备
CN1585399A (zh) 一种集群服务器的负载均衡方法
CN1728698A (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
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20080507

Termination date: 20160401

CF01 Termination of patent right due to non-payment of annual fee