一种基于tcam的区域匹配装置和方法

文档序号:7758244阅读:221来源:国知局
专利名称:一种基于tcam的区域匹配装置和方法
技术领域
本发明涉及互联网高速报文分类技术,尤其涉及一种基于三态内容寻址存储器 (TCAM)的区域匹配装置和方法。
背景技术
互联网路由交换网络设备中,通过采用报文分类技术,可将到达的报文分组的头部信息和分类规则库中的规则条件进行匹配,以根据匹配结果实现所述分类规则的动作, 包括报文转发、丢弃、排队等,以此实现访问控制、安全过滤、带宽控制等的功能。与IP路由查找过程相类似,报文分类功能处在网络设备的数据平面,由于需要对报文进行复杂的处理,因此,对网络设备的性能要求很高。另外,与IP路由查找只对报文头部的目的地址进行最长匹配的处理方式不同,报文分类则需要对报文头部的多个字段,如源地址、目的地址、 源端口、目的端口和协议等字段同时进行包括前缀匹配、精确匹配和区域匹配等项工作,因此报文分类往往成为路由交换网络设备的报文处理瓶颈。目前,业界普遍采用三态内容寻址存储器(TCAM,Ternary Content Address-able Memory)来实现高速报文分类。可将TCAM配置成36、72、144、288或576比特/位(bit)等宽度,以用于存储固定宽度的查找条件,对于32bit的IPv4路由查找,一般配置成36bit ; 对于IPv4报文分类,规则条件包括源地址、目的地址、源端口、目的端口和协议共104bit, 一般配置成144bit的宽度。这样每个规则条件可以用一个TCAM表项来表示。与普通内存中通过地址查找内容的方式不同,TCAM是通过内容来定位地址,它将查找关键字和所有 TCAM表项进行并行比较来定位关键字匹配的存储地址,然后根据得到的存储地址获取存储在快速静态随机存取存储器(SRAM)中的规则动作。TCAM的并行特性使得报文分类查找可以在固定的时钟周期内完成。目前TCAM的时钟周期可高达2ns,能够满足500MBps查找速率的要求,而由于TCAM的三态特性,需要采用多达16个晶体管来实现一个比特位的存储, 这将会导致芯片面积较大而且成本较高;而TCAM的并行特性还会使得芯片功耗增大,例如一个18Mbit的TCAM功耗可达15W。因此在单板线卡设计中必须充分考虑TCAM的成本、功耗和体积因素,并充分利用TCAM的每个比特。现有技术条件下,有效利用TCAM来实现高速报文分类的困难主要在于,TCAM不适合实现区域匹配,虽然利用TCAM的三态特性可以很容易的实现规则条件中的前缀匹配和精确匹配,比如规则条件中的地址字段和协议字段;但是规则条件中的区域字段,如端口区域等则无法直接实现。因此,还必须转换成前缀匹配和精确匹配。一个包含区域字段的规则需要转换成多个规则才能存放在TCAM中,此现象称之为区域扩张(Range Expansion), 区域扩张会大大降低TCAM的使用效率。目前,常用的利用TCAM来实现报文分类的方法通常有如下几种基于硬件的区域匹配方法,如采用扩展三态内容寻址存储器(E-TCAM)的方法直接修改TCAM硬件以支持区域匹配,可以降低90%的功耗,由于需要对TCAM硬件进行修改, 因而会增加每比特的成本,且还存在兼容性和扩展性问题,短期内无法大规模部署和实现。
规则库无关的区域匹配方法,对每个区域单独进行转换,无需考虑规则库里各种区域的分布以及和其他区域的关系。通过前缀扩展(PEfrefix Expansion)方法可将区域转换成若干个前缀,每个前缀对应一个TCAM表项,在最坏情况下一个区域需要转换成 2 (W-I)个前缀,其中W为区域字段的长度,区域Rw= [l,2w-2]就是这种情况。对于长度为 16的源端口和目的端口来说,最坏情况下一条规则需要转换成(2*16-2)2 = 900个TCAM表项,对于真实分类规则库转换显示平均会导致6倍的表项扩张。采用数据库独立区域预编码(DIRPE :DatabaseInd印endent Range PreEncoding)方法可利用 TCAM 的额外比特对区域进行独立编码。假定TCAM的额外比特为则每个区域只需要一个TCAM表项就可完成转换,由于TCAM的额外比特数有限,在配置为144bit宽度时,额外比特数仅为40,为减少对 TCAM额外比特的需求,提出了对区域字段进行分段编码以及结合规则库相关的编码方法, 增加了每个区域需要的TCAM表项数目,因此、该方法的效率和区域字段的长度、TCAM的额外比特数量相关。格雷码(SRGE,Short Range Gray Encoding)的区域编码方法利用了格雷码的相邻编码之间只有一个bit不同从而可以合并成一个TCAM表项特点(将该不同bit 用通配符“*”表示),在最坏情况下,一个区域内的匹配需要转换成2 (W-2)个前缀了,该方法无需利用TCAM的额外比特,对于短的区域比较有效。规则库相关的区域匹配方法对每个单独的区域用一个额外的TCAM比特来表示的规则库相关的区域匹配方法,只需要一个TCAM表项就可以完成一个区域规则的表示。由于目前规则库中的单独区域在增加,现在已经超过300个,而且还在不断增加,而额外的 TCAM比特数量非常有限,分段编码方法(Region-based Encoding)增加TCAM表项从而减少对TCAM额外比特的需求。为了进一步对区域进行有效的编码并减少编码的比特数,层次化编码方法在每个层次中,区域都是不相交的,对每个层次中的区域进行单独编码,假定层 Li中的不相交区域个数为队,则需要的比特数为Iog2Ni,而前述方法终每个区域都需要一个TCAM比特位,因此,减少了每个区域需要的bit位。综上所述,现有的利用TCAM来完成高速报文分类的区域匹配方法,存在规则条目区域扩张较大、受限于TCAM空闲比特、功耗较高等缺点。

发明内容
有鉴于此,本发明的主要目的在于提供一种基于三态内容寻址存储器(TCAM)的区域匹配装置和方法,以在减少表项扩张的同时降低对TCAM的空间需求,同时通过对查找算法进行优化,以降低TCAM芯片的功耗。为达到上述目的,本发明的技术方案是这样实现的一种基于三态内容寻址存储器TCAM的区域匹配装置,该装置主要包括TCAM存储单元、逻辑判决单元和动作单元;其中,TCAM存储单元,用于对规则库中包含区域的规则进行前缀扩展或格雷码扩展,并将扩展后的规则在TCAM中按照规则优先级在TCAM中压缩存放,即将扩展后的两条规则在一个TCAM表项中进行存放;逻辑判决单元,用于采用压缩三态内容寻址存储器C-TCAM法,对经过二轮匹配后确定匹配的结果进行比较,并选择低返回索引值小者作为最终报文分类结果;动作单元,用于对报文根据匹配的规则条件执行对应的动作。
一种基于TCAM的区域匹配方法,该匹配方法包括A、将分类规则库中的规则条件进行前缀扩张或者格雷码扩张后,按照优先级在 TCAM压缩存放;B、从报文头部提取查找关键字KEY和TCAM进行匹配,得到匹配结果索引,执行相关规则关动作。其中,所述步骤A进一步包括Al、使每个原始的分类规则在扩展后的个数为偶数,若所述个数为奇数,则将最后的扩展规则复制一份;A2、将扩展后的规则按每两个一组在TCAM中进行存放,区域字段以外的字段只需存放一份拷贝。其中,步骤B所述从报文头部提取查找关键字KEY和TCAM进行匹配,进一步包括B 1、第一轮匹配,在纵向方向上选择两个规则中的前一个规则所占用的比特位, 横向上选择所有的TCAM表项参与比较匹配,得到索引landexl);B2、第二轮匹配,在纵向上选择二个规则中的后一个规则所占用的bit位,横向上选择索引I(Indexl)所在分块Block及其以上的Block的表项参与比较,得到索引 2(Index2);B3、选择所述索引I(Indexl)与索引2(IndeX2)中较小的作为匹配结果,并按照所述匹配结果执行相应的规则动作。一种利用权利要求2所述方法进行报文分类匹配的方法,该方法包括C、在纵向上用全局掩码寄存器GMR选择两个规则中的前一个规则所占用的比特位,在横向上用分区掩码寄存器BMR选择所有的块,取查找关键字KEY的值与TCAM进行匹配,得到索引I(Indexl);D、在纵向上选择所述两个规则中的后一个规则占用的比特位,计算索引 I(Indexl)所在的当前块号,所述当前块号等于索引I(IndexI)所在的块号;E、在横向上再选择所述当前块号及其以上的块,取查找KEY值与TCAM进行匹配, 得到索引2(IndeX2);F、判断所述索引landexl)与索引2 (IndeX2)的大小,若索引1 andexl)小于索引2andex2),则返回索引I(Indexl)作为查找结果;否则,返回索引2(Index2)作为查找结果。本发明所提供的基于TCAM的区域匹配装置和方法,具有以下优点本发明方法利用TCAM芯片的特性,即分别利用全局掩码寄存器(GMR)和分区掩码寄存器(BMR)的特性,通过对前缀扩展或格雷码扩展后的分类规则在TCAM中压缩存放,并充分利用TCAM的空闲bit,最坏情况下的扩张因子减少为原先的一半,降低了规则库扩张因子和规则库区域冗余因子,同时,在查找匹配时,通过GMR和BMR寄存器动态的选择参与比较的比特位和参与比较的TCAM表项,减少了参与匹配的TCAM表项个数,减少了 TCAM的空间需求,从而降低TCAM芯片的功耗。


图1为本发明基于TCAM的区域匹配装置示意图2为本发明基于TCAM的分类规则放置方法流程示意图;图2A为本发明支持区域匹配的基于TCAM的分类规则放置方法具体过程图(实施例一);图3为应用本发明所述基于TCAM的分类规则放置方法进行报文分类查找的过程示意图。
具体实施例方式下面结合附图及本发明的实施例对本发明的装置和方法作进一步详细的说明。本发明的基本思想为有效利用TCAM的存储空间,利用规则库无关的区域匹配方法和具体规则库无关性在规则更新方面的优势,提出一种基于TCAM的规则库无关的区域匹配方法,即本发明的压缩三态内容寻址存储器(C-TCAM)方法,具体为将一条规则经前缀扩展转换(或经格雷码转换)成多条规则后,仅区域字段不一样(其非区域字段内容不变)。例如,基于TCAM的报文分类在实现范围匹配时存在表项扩张问题,最坏情况下, 基于前缀扩展方法PE的范围扩张因子为2 (W-I),基于格雷码表示方法即短区域格雷码的范围扩张因子为2(W-2),其中W为范围字段的长度,利用本发明C-TCAM方法,可以将2个扩展后的TCAM表项压缩成1个,最坏情况下表项扩张比因子为W-I者W-2。因此,可利用报文分类时所述非区域字段内容不变的性质,将多条规则存放在一个TCAM表项中,而且,只需保存一份非区域字段的拷贝,如对于IPv4报文分类来说,采用 144比特TCAM位宽,非区域字段包括源地址、目的地址、协议字段共72bit,区域字段包括源端口、目的端口共32bit,还剩余40bit可以再保存一份源端口、目的端口字段。这样即可将二条规则压缩在一个TCAM表项中,以可实现成倍地减少最坏情况规则扩张的现象。考虑到现有商用TCAM芯片均支持全局掩码寄存器(GMR,GlcAal Mask Register)和分区掩码寄存器(BMR,Block Mask Register),在查找过程中,利用GMR寄存器可以从纵向确定TCAM芯
片中参与比较的比特位,将BMR寄存器用于支持从横向上将TCAM芯片进行分区和支持分区
ttffl 不 Ztd ο在报文结构中,报头由若干个字段组成,每个字段包含若干个bit位。查找关键字 KEY是从报文头部提取的K个字段的组合。查找关键字需要和存储在分类规则库中的规则条件进行匹配。所述规则,包含规则条件和规则动作。所述规则条件是由相应的K个字段组成,如果报文P的K个关键字字段和规则R的K个规则条件匹配,则认为报文P匹配规则R,相应会对报文P采取规则R规定的规则动作。每个规则字段f可以指定三种类型的匹配条件1)精确匹配关键字字段和规则条件字段指定的值相等;2)前缀匹配规则条件字段是关键字字段的前缀;3)区域匹配关键字字段在规则条件指定的区域中,如规则条件指定的区域为 [s,e],s和e为整数,且s < e,对于IP端口号来说,该字段长度W = 16。所述分类规则库,可以存放在TCAM中以实现高速报文分类,所述规则在TCAM中按照优先级从高到低排序存放,高优先级存放在TCAM低地址区,TCAM总是返回第一个匹配的结果(低地址区)。TCAM的每个bit支持‘0’、‘1’和‘*’三种状态,可以直接存放所述精确匹配规则条件和前缀匹配规则条件,而区域匹配则需要转换成相应的精确匹配和前缀匹配,因此一条规则R需要采用转换方法E转换成多个TCAM表项TCAMk [1,ηκ],区域R的扩张因子& = ηκ。假定η (D)为分类规则库D的规则数量,nE (D)采用转换方法E对分类规则库进行转换后所有TCAM表项的数目,则分类规则库D的扩张因子De = nE (D) /n (D)。由于规则库里存在不包含区域匹配的规则,为进一步考察区域规则转换的有效性,假定r (D)表示规则库中包含区域的规则数,rE(D)表示对这些包含区域的规则进行转换后的TCAM表项数,FRe(D) = (rE(D)-r(D))/r(D)表示规则库D的区域冗余因子,而某条规则R的区域冗余因子FI^e(R) = rE(R)-l,也就是规则R需要的额外的TCAM表项的个数。图1为本发明基于TCAM的区域匹配装置示意图,如图1所示,该区域匹配装置主要包括TCAM存储单元11、逻辑判决单元12和动作单元13 ;其中,TCAM存储单元11,用于存放经过前缀扩展或格雷码扩展后的规则,扩展后的规则在TCAM中按照规则优先级排序并进行压缩存放,也就是将扩展后的两条规则在一个TCAM 表项中进行存放。如图1所示,可在每行TCAM中存放2条规则,这2条规则除了源端口和目的端口不同外,其他的包括源地址、目的地址、协议和规则动作均相同,因此除了源端口和目的端口外的其他字段只需要保存一份拷贝,降低了对TCAM存储空间的需求。图中的GMR用于从纵向上选择和查找关键字进行匹配的b i t位,当选择GMR =GMR0+GMR1+GMR2,则GMR3和GMR4对应的bit位不参与匹配比较;当选择GMR = GMR0+GMR2+GMR3,则GMRl和GMR4对应的bit位不参与匹配比较,可以看出GMR4对应的bit 位为空闲bit,在两种情况下都不参与比较。对于IPv4报文分类,TCAM配置为144bit宽度, GMR4为8bit,某些规则条件还包括TCP标志字段,这时所述空闲bit可以进一步被利用。图中的BMR用于从横向上选择参与匹配比较的TCAM表项,现有商用TCAM芯片均支持分区禁用(Patition Disable),因此可只选择必须的块(Block),如图所示的BlockO 或Blockl参与匹配比较,从而降低TCAM功耗。逻辑判决单元12,由于规则存在重叠关系,采用本发明C-TCAM方法需要经过二轮匹配才能确定匹配的规则,为保证结果正确(选择优先级高的),C-TCAM需要查找匹配需要进行二轮匹配,判决逻辑用于对二次匹配的结果进行比较,并选择低地址区的匹配结果即返回索引值小者作为最终报文分类结果。因此,在第二轮匹配时,通过BMR寄存器只对第一轮匹配结果所在TCAM的Block 及其以上的Block进行匹配,减少了参与匹配的TCAM表项个数,从而降低TCAM芯片的功
^^ ο动作单元13,用于根据报文的规则条件执行对应的动作。参考图1,假定规则库D包含Rtl到&共7条规则,并且按照优先级库进行排序,经过前缀扩展编码或者格雷码编码转换后,Rq转换成了 4条规则RJ0]、Rq[1]、Rq[2]、Rq[3]), R2和&还是保持1条规则,其他规则均转换成2条规则,则转换后的规则存储如图1所示, R。的4个TCAM表项占据2行TCAM(Rq
、Rq[1]占据第一行,Rq [2]、Rq [3]占据第二行),其他规则均占据1行TCAM,需要注意的是虽然&和&只各需要一个TCAM表项,但依然在GMR3 对应的bit位存放了 &和&对应的源端口和目的端口,而且和GMRl对应的源端口和目的端口相同。
图2为本发明基于TCAM的分类规则放置方法流程示意图,如图2所示,该方法包括如下步骤步骤21、将分类规则库中的规则条件进行前缀扩张或者格雷码扩张后,按照优先级在TCAM中压缩存放。具体为使每个原始的分类规则库在扩展后的个数为偶数,若扩展后的个数为奇数的,则将最后的扩展规则复制一份;然后再将扩展后的规则按每两个一组在TCAM中进行存放,区域字段以外的字段只需存放一份拷贝。步骤22、从报文头部提取查找关键字和TCAM进行匹配,得到匹配结果索引,执行相关规则关动作。所述步骤22需要经过二轮匹配,该匹配过程为首先,第一轮匹配时,在纵向上选择两个规则中的前一个规则所占用的比特位,横向上选择所有的TCAM表项,参与比较匹配,得到索引landexl);其次,第二轮匹配时,在纵向上选择两个规则中的后一个规则占用的bit位,横向上选择索引I(Indexl)所在分块(Block)及其以上的Block的表项参与比较,得到索引 2(Index2);再次,选择hdexl和hdex2中较小的一个作为匹配结果;最后,按上述匹配结果执行相应的规则动作,如转发、丢弃、排队等。结合图1中所示基于TCAM的区域匹配装置,具体的分类规则存放方法如图2A所示的流程图(实施例一),包括步骤201、将规则库D中的规则按照优先级从高到低依次排序,如R。、R1. . . , > Rn^10步骤202、对每条规则氏,进行前缀扩展或格雷码转换,得到氏
,并且保证Hii 为奇数,否则增加Ri [mj = Ri [Hli-I]。步骤203、初始化TCAM索引和规则表索引,使TCAMHndex = 0,Rule-Index = 0。
步骤204、按照TCAM-Index和Rule-Index取得规则索引和TCAM存放位置索引,将Rule-Index对应的扩展转换后的规则按照每两个一组依次存放在TCAM中,更新 TCAM-Index 和 Rule-Index,然后执行步骤 205。步骤205、判断规则是否处理完成即判断Rule-Index是否等于n_l,若是,执行步骤106结束该存放过程;否则,返回步骤204。图3为应用本发明所述基于TCAM的分类规则放置方法进行报文分类查找的过程示意图,如图3所示,该报文分类查找过程包括步骤301、在纵向上选择两个规则中的前一个规则所占用的bit位,GMR = GMR0+GMR1+GMR2 ;步骤302、在横向上选择所有的Block,即BMR = All Blocks ;步骤303、取查找关键字(KEY)值和TCAM进行匹配,得到hdexl = Match (KEY, TCAM);步骤304、纵向上选择所述两个规则中的后一个规则占用的bit位,GMR = GMR0+GMR3+GMR2 ;步骤305、计算hdexl所在的当前Block号,所述当前Block号Blockcurrent =Indexl所在的Block号;步骤306、横向上再选择Blockcurrent及其以上的Block :BMR =
;步骤307、取查找 KEY 值和 TCAM 进行匹配,得到 hdex2 = Match (KEY, TCAM);步骤308、判断Indexl和Index2的大小,即比较Indexl是否小于Index2 ?若否, 则执行步骤310 ;否则,则执行步骤309 ;步骤309、返回hdexl作为查找结果,然后结束。步骤310、返回hdeU作为查找结果,然后结束。以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
权利要求
1.一种基于三态内容寻址存储器TCAM的区域匹配装置,其特征在于,该装置主要包括TCAM存储单元、逻辑判决单元和动作单元;其中,TCAM存储单元,用于对规则库中包含区域的规则进行前缀扩展或格雷码扩展,并将扩展后的规则在TCAM中按照规则优先级在TCAM中压缩存放,即将扩展后的两条规则在一个 TCAM表项中进行存放;逻辑判决单元,用于采用压缩三态内容寻址存储器C-TCAM法,对经过二轮匹配后确定匹配的结果进行比较,并选择低返回索引值小者作为最终报文分类结果;动作单元,用于对报文根据匹配的规则条件执行对应的动作。
2.一种基于TCAM的区域匹配方法,其特征在于,该匹配方法包括A、将分类规则库中的规则条件进行前缀扩张或者格雷码扩张后,按照优先级在TCAM 压缩存放;B、从报文头部提取查找关键字KEY和TCAM进行匹配,得到匹配结果索引,执行相关规则关动作。
3.根据权利要求2所述的基于TCAM的区域匹配方法,其特征在于,所述步骤A进一步包括Al、使每个原始的分类规则在扩展后的个数为偶数,若所述个数为奇数,则将最后的扩展规则复制一份;A2、将扩展后的规则按每两个一组在TCAM中进行存放,区域字段以外的字段只需存放一份拷贝。
4.根据权利要求2所述的基于TCAM的区域匹配方法,其特征在于,步骤B所述从报文头部提取查找关键字KEY和TCAM进行匹配,进一步包括Bi、第一轮匹配,在纵向方向上选择两个规则中的前一个规则所占用的比特位,横向上选择所有的TCAM表项参与比较匹配,得到索引landexl);B2、第二轮匹配,在纵向上选择二个规则中的后一个规则所占用的bit位,横向上选择索引I(Indexl)所在分块Block及其以上的Block的表项参与比较,得到索引2(Index2);B3、选择所述索引I(IndexI)与索引2(IndeX2)中较小的作为匹配结果,并按照所述匹配结果执行相应的规则动作。
5.一种利用权利要求2所述方法进行报文分类匹配的方法,其特征在于,该方法包括C、在纵向上用全局掩码寄存器GMR选择两个规则中的前一个规则所占用的比特位,在横向上用分区掩码寄存器BMR选择所有的块,取查找关键字KEY的值与TCAM进行匹配,得到索引 I(Indexl);D、在纵向上选择所述两个规则中的后一个规则占用的比特位,计算索引Klndexl)所在的当前块号,所述当前块号等于索引1 (Indexl)所在的块号;E、在横向上再选择所述当前块号及其以上的块,取查找KEY值与TCAM进行匹配,得到索引 2(Index2);F、判断所述索引landexl)与索引2(IndeX2)的大小,若索引1 Gndexl)小于索引 2andex2),则返回索引I(Indexl)作为查找结果;否则,返回索引2(Index2)作为查找结^ ο
全文摘要
本发明公开了一种基于三态内容寻址存储器(TCAM)的区域匹配装置和方法,属于互联网高速报文分类技术。其主要包括TCAM存储单元、逻辑判决单元和动作单元。其方法包括A、将分类规则库中的规则条件进行前缀扩张或者格雷码扩张后,按照优先级在TCAM中压缩存放,也就是将扩展后的二条规则在一个TCAM表项中进行存放;B、从报文头部提取查找关键字和TCAM进行匹配,得到匹配结果索引,执行相关规则关动作。针对高速报文分类在实现区域匹配时存在表项扩张的问题,本发明在降低TCAM空间需求的同时降低了TCAM的功耗。
文档编号H04L12/56GK102377664SQ20101026478
公开日2012年3月14日 申请日期2010年8月27日 优先权日2010年8月27日
发明者朱国胜 申请人:武汉烽火网络有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1