第17卷第6期 2016年12月 信息工程大学学报 Journal of Information Engineering University Vo1.17 No.6 Dec.20l6 DOI:10.3969/j.issn.1671 673.2016.06.017 一种基于TCAM的报文分类算法 张杰鑫,邰 铭,杜 江,张 浩 (数学工程与先进计算国家重点实验室,河南郑州450001) 摘要:基于TCAM的报文分类算法的关键问题在于如何高效地存储规则,而TCAM对范围形 式的规则存储效率不高。文章提出了一种基于TCAM的报文分类算法——GD—TCAM算法,该 算法基于格雷编码的纵向压缩,再利用TCAM的剩余位宽进行横向扩展,通过纵向压缩和横 向扩展实现降低扩展系数的目的。通过利用预留表项的顺序移动法,改进TCAM的储存方 式,保证分类的正确性、利于规则更新。经过理论证明和实验验证,GD.TCAM算法可以有效地 降低扩展系数、降低能耗、便于规则更新。 关键词:报文分类;规则集;TCAM技术;扩展系数 中图分类号:TP393.021 文献标识码:A 文章编号:1671_0673(2016)06 ̄724-06 Packet CIassincatiOn Algorithm Based on TCAM ZHANG Jiexin,TAI Ming,DU Jiang,ZHANG Hao (State Key Laboratory of Mathematical Engineering and Advanced Computing,Zhengzhou 450001,China) Abstract:The packet classiication algorifthms based on TCAM focus on eficient storing rules.How— fever,TCAM can not store rules of range form in high eficiency.Thifs paper proposes GD—TCAM packet classiication algorithm based on TCAM.GD—TCAM conducts verticalf compression based on gray code and horizontal scaling—up using the left bits in TCAM,thus to reduce the coeficifent of scaling—up.By moving the reserved table entries serially,the storing method of TCAM is improved, the rules updating is convenient,and the classifying accuracy is guaranteed as wel1.Both theoretical proof and experimental verification show that GD・-TCAM can reduce the coeficifent of scaling--up and energy consumption as well as update rules conveniently. Key words:packet classification;rule set;TCAM;extended coeficifent 对高速链路基于软件的报文分类算法显得越来越 0 引言 虽然有很多的基于软件的报文分类算法被提 出,但是随着规则集的越来越复杂和链路速度的不 断增长,报文分类算法也变得越来越复杂。最好的 软件分类算法在最好的计算机上仅能达到1Gbps 的吞吐量,甚至使用最好的分类算法在多核网络处 理器上实现结果仅仅能达到10Gbps的吞吐量,面 力不从心。研究人员寻求从硬件上找到解决方案, 虽然已经提出了基于RAM的路由查找算法和报 文分类算法 ,但是工业界中使用最多的硬件实 现路由查找的方法仍然是使用内容存储器(content addressable memoty.CAM)[21来进行快速路由查找, 它能够快速对存储在CAM中的大量数据进行并行 查找,CAM的每一个存储位存储0或者1。目前, 使用最多的是三态内容地址存储器,简称TCAM 收稿日期:2015-03—31:修回日期:2015-04-18 基金项目:国家863计划资助项目(2009AA012200);上海市科研计划资助项目(08dz1501600;13dzl108800) 作者简介:张杰鑫(1989一),男,硕士生,主要研究方向为包分类技术、计算机体系结构。 第6期 张杰鑫等:一种基于TCAM的报文分类算法 725 (ternary content addressable memo ̄),TCAM以表 项为单位存储分类规则,低地址的表项具有更高优 先级。 1 基于TCAM的报文分类概述 1.1 TCAM简介 TCAM每条表项的宽度被配置为固定比特的 宽度,表项内容由关键字和掩码相“与”组成,因此 每位有3种状态:0、1和 。关键字查询时,TCAM 并行地将搜索关键字与所有表项进行并行匹配,并 返回最高优先级命中表项对应的地址,其查询速度 与表项的数目无关,为O(1)。虽然TCAM具有良 好的查询性能,但它也存在不足,TCAM实现每比 特的查询功能需要10个~12个晶体管,而SRAM 只需4个一6个 ,加之复杂的控制逻辑,导致 TCAM每比特的价格是DDR SRAM的30倍 ,功 耗则达到了150倍 。更为重要的是,TCAM不能 直接进行非字段和范围字段匹配,进而导致规则集 在纵向上膨胀,而且TCAM只能为每个表项分配 固定带宽,虽然很好地适应了不同的系统应用,但 是不可避免地在横向上产生了带宽浪费,并且其支 持硬件设计的优先级编码器每次匹配仅能输出一 个结果。因此,基于TCAM的报文分类算法最主 要解决的就是规则集膨胀问题和规则的优化储存 问题。 1.2基于TCAM的报文分类 基于TCAM的报文分类指系统通过配有 TCAM的分类引擎来实现报文分类,它可以分为规 则管理和报文分类处理两个方面。虽然实际统计 结果是所有规则集的实际复杂度均远小于理论复 杂度 ,但是规则集管理在分类系统中仍然至关 重要。基于TCAM的规则集管理,即系统将规则 转化成由掩码和关键字组成的三态比特串,并按照 一定的存放规则存人TCAM表项中。报文处理是 指系统处理器(NP、ASIC或FPGA等)从输入报文 中提取出关键字,然后将关键字送入TCAM中进 行匹配,最后根据匹配的结果对报文进行相应的处 理。由于报文处理的方式较为固定,因此,广义的 基于TCAM报文分类算法就是规则集管理,即如 何用TCAM表项表示和存储规则。 图1为基于TCAM的报文分类系统框图。规 则集管理算法运行在普通PC机或线卡CPU的嵌 入式系统中,对规则进行相应的处理,之后通过报 文处理器把规则配置到TCAM表项中。处理报文 时,报文处理器提取进入报文首部各字段内容作为 搜索关键字,并输入TCAM进行查询,然后根据处 理结果对报文进行相应处理。 图1 基于TCAM的报文分类系统框图 TCAM只适用于前缀匹配和精确匹配,无法直 接支持范围匹配和非匹配,为实现范围非匹配和非 匹配,需要用多条TCAM表项表示一条规则,即对 规则进行纵向扩展。平均扩展系数是平均一条规 则需要TCAM表项表示的条目数,如何降低扩展 系数也是研究重点之一。表1列出了规则集的统 计数据(其中1998年和2004年的数据来自于文献 [7]),可以看出范围规则越来越多,如何有效地支 持范围匹配对网络设备至关重要。 表1规则集范围统计 2 基于格雷编码的前缀扩展算 法——GD-TCAM算法 2.1 直接前缀扩展算法 TCAM只适用于前缀匹配和精确匹配,无法直 接支持范围匹配和非匹配。直接前缀扩展算法 是传统的范围匹配算法,该算法将用范围表示的规 则转化为一组前缀表示的形式。对于IP五元组而 言,端口号的表示方法通常是范围表示,如1— 1023、1024—65535。TCAM由于采用了并行查找 方式,所以若规则中出现范围匹配,首先要将范围 726 信息工程大学学报 转化为前缀形式,而且往往一个范围要表示成多条 code),另外由于最大数与最小数之间也仅一位数 前缀。如区间[000,111],需转化为 :it ( 表示 不同,即“首尾相连”,因此又称循环码或反射码。 此位取值可为0也可为1),如果采用直接前缀扩 基于格雷码的前缀扩展算法用格雷编码表示 展算法,所消耗的空间极大,其在最坏情况下空间 范围字段的每个元素,并利用格雷码的对称性对范 [1,2 一2]转化为前缀表示为{01 ,001 ,…0 围进行分割,子范围各元素中满足遍历条件的位用 1,10 ,1 10 ,…,1 0}(1 0 表示m个1后n 代替,使这些带 的三态比特串能表示所有元 个0, 表示此位及其后的位为任意位),最坏情况 素,而这些三态比特串就是此范围字段用格雷编码 下需要用2 一2条前缀匹配规则来表示一条范围 产生的TCAM表项。当输入范围中的元素作为搜 匹配规则。如果以端口号为例,端口号的位宽是 索关键字时,由于表项中有几位用 表示,而其它 16位,则需要30条规则来表示一条范围规则,在 都与元素相同,因此可以命中搜索。 实际应用中,一条规则包含源端口号和目的端口 算法首先利用对称性对范围进行分割,然后分 号,即存在两个范围区间,最坏情况下需要900条 别得到各子范围带 的三态比特串。对范围[a, 规则来表示,空间消耗严重 。Taylor用直接前缀 b]进行自然二进制编码,然后以其二进制编码的 扩展算法对多个实际的规则集进行转换实验,结果 公共前缀为界对范围[a,b]进行分割,进而得到左 表明这种方法的平均扩展系数为6倍多,TCAM空 子树的最右叶子结点Node 和右子树的最左叶子 间利用率仅为16.12%¨…。 结点Node,。先依据(1)、(2)式得到g ,然后再根 2.2基于格雷编码的前缀扩展算法 据g 范围[m,n]带 的三态比特串,并且以(C+ 典型的二进制格雷码(binary gray code)简称 d)/2为中心、以2 为长度对子范围向外再次进行 格雷码,因1953年公开的弗兰克・格雷(Frank 分割,这样即可保证分割出来的元素可以用一条带 Gray)专利“pulse code communication”而得名,现在 的三态比特串表示: 常用于模拟一数字转换和位置一数字转换中。在 g0=fix(1og2(n—m+1)) (1) 一组数的编码中,若任意两个相邻的代码只有一位 g =fix(z0g:(n一,n+1一∑; 2 )) (2) 二进制数不同,则称这种编码为格雷码(gray 图2 基于格雷码的前缀扩展算法对范围编码过程示意图 图2展示了基于格雷码的前缀扩展算法对范 展算法时需要用001 1和0100两条表项,而使用基 围[5,12]的编码过程,算法首先得到两个子范围 于格雷码的前缀扩展算法时只需要0 10一条 [5,l0]和[1 1,12],再次切割出来的元素为{6,7, 表项。 8,9}、{5,10}和{11,12},经过处理最终得到的带 的 基于格雷码的前缀扩展算法得到的扩展系数 三态比特串为:*10%、 l11和1*10,因此可以用3 小于等于直接前缀扩展算法得到的扩展系数。 条TCAM表项来表示范围[5,12],而如果用直接 在纵向扩展方面,对于范围规则[m,n],如果 前缀扩展算法进行编码的话,则需要0101、O11 、 可以由一条基于格雷码的TCAM表项表示则必须 10 和1100等4条TCAM表项。 满足条件: 基于格雷码的前缀扩展算法对短范围编码时 n—m+1=2x, =0,1,… (3) 可以获得较好的扩展系数,由于格雷编码具有相邻 m=((n—m+1)/2) Y,Y=0,1,… (4) 数之间只差一位的特点,相邻数之间可以用一条 如果由一条基于直接前缀扩展算法的TCAM TCAM表项表示,例如范围[3,4],用直接前缀扩 表项表示,则条件为 第6期 张杰鑫等:一种基于TCAM的报文分类算法 727 n—m+1:2x, =0,1,… (5) 展后的规则源地址、目的地址和协议相同,而源端 口号和目的端口号不同,所以可将两条扩展后的规 m=(n—m+1) Y,Y=0,1,… (6) 由于(6)式成立的条件比(4)式苛刻,即可以 用一条基于直接前缀扩展算法的TCAM表项表示 则存储在一条TCAM表项中(如果一条规则扩张 后的规则数目是奇数,则在最后一个条目‘中存储相 同的端口号),达到减少TCAM存储空间、降低功 耗的目的。 的范围肯定可以被一条基于格雷码的前缀扩展算 法的表项表示,反之,则不成立。 可以得到一个结论:基于格雷码的前缀扩展算 法得到的扩展系数小于等于直接前缀扩展算法得到 的扩展系数。从格雷编码的特征可以直接看出,基 于格雷码的前缀扩展算法对短范围编码时比直接前 缀扩展算法获得更好的扩展系数。对于一个长度为 查找时,TCAM芯片支持分区掩码寄存器 (block mask register,BMR)和全局掩码寄存器 (global mask register,GMR),分区掩码寄存器用于 在横向对TCAM表项进行区分,可以支持禁用部 分分区,全局掩码寄存器可以在纵向上确定那些 TCAM表项参与匹配。本方法利用了TCAM的此 项功能特性,在查找时通过对两个寄存器的动态配 置,确定参与匹配的TCAM表项和参与匹配的比 2的范围,如果使用直接前缀扩展算法来表示需要 两条TCAM表项,而使用格雷编码只需要一条 TCAM表项,使用格雷编码可以使一般范围规则节 省50%的TCAM的存储空间。当范围长度增加时, 特,在降低扩展系数的同时,也减少了参与匹配的 TCAM表项数目,进而降低功耗。如图3所示,查 找时,步骤如下: 基于格雷码的前缀扩展算法的优势开始下降。 可以归纳出,基于格雷码的前缀扩展算法比直 接前缀扩展算法更加优秀,其关注位不只是在表项 的末尾,可以在表项的任意位置,而且对于短范围 编码优势更加明显,该算法的灵活性更好。 2.3基于TCAM优化存储结构 由于TCAM的表项必须被配置成固定位宽, ①设置TCAM的分区掩码寄存器为全部有 效,全局掩码寄存器设置为源地址、目的地址、源端 口号1、目的端口号1和协议有效; ②报文的五元组信息与所有TCAM表项进行 匹配,结果记为result ,结果存储在判决器中; ③计算result。所在的block,结果记为block , i≥0: 在存储IP五元组时,存在的位宽浪费的现象,如存 储IP五元组只需要使用104bit(源地址、目的地址 各需32bit,源端口号、目的端口号各需16bit,协议 需要8bit),而TCAM必须被配置成144bit,存在 40bit的位宽浪费。可以利用剩余的40位再存储 一④重新设置分区掩码寄存器为block。~block 有效,全局掩码寄存器设置为源地址、目的地址、源 端口号2、目的端口号2和协议有效; 对端口号,一条规则存在纵向扩展的现象,即扩 全局掩码寄存器 R1 源地址l目的地址I源端口号l 目的端口号1I协议l源端口号2 目的端口号2l空闲 源地址l目的地址I源端口号1旧的端口号1l协议I源端口号2 目的端口号2l空闲 源地址I目的地址l源端口号1 目的端口号ll协议l源端口号2 目的端口号2I空闲 源地址l目的地址I源端口号l 目的端口号1l协议l源端口号2 目的端口号2l空闲 空闲TCAM表项 判 决 器 R2 blocko R3 R4 分 区 掩 码 寄 R5 源地址l目的地址l源端口号l 目的端口号1l协议l源端口号2 目的端口号2l空闲 存 器 R6 源地址 目的地址l源端口号l旧的端口号1 协议l源端口号2 目的端口号2l空闲 源地址 目的地址l源端口号l 目的端口号l 协议l源端口号2 目的端口号2J空闲 R7 R8 源地址 目的地址I源端口号l 目的端口号1 协议I源端口号2 目的端口号2l空闲 空闲TcAM表项 图3 TCAM存储示意图 728 信息工程大学学报 ⑤对报文的五元组信息再进行匹配,结果记为 result2; P2≤PI (8) 而采用GD-TCAM算法的能耗为 P3=(1+(B+B1)/2B) (P2/2) (9) ⑥判决器,返回优先级高的表项地址,即若re. sultl≤result2,返回result】,若result2≤resultl,返回 result2。 其中,B代表用到的所有TCAM的block数目, 代表第2次匹配时用到的TCAM的block数目,因 为有 (B+B )/2B≤1 (10) 存储时,由于规则集中有规则存在交集的现 象,例如@192.151.11.17/32 15.0.120.4/32 0: 65535 1221:1221 OxO6/Oxff.@192.151.11.17/32 在最坏情况下,GD.TCAM算法耗能比直接前 缀扩展算法和基于格雷码的前缀扩展算法要少。 在查找性能方面,虽然GD.TCAM算法需要2 15.0.120.4/32 0:65535 0:1599 OxO6/Oxff,如果规 则存储不当会导致分类错误,如果将规则1存储在 高地址,而规则2存储在低地址,对于有一个报文 的头部为192.151.11.17 15.0.120.4 1024 1221 个时钟周期,若要到达每秒处理若要达到OC.1536 (80 Gbps)的线速转发速率,以最小的以太网分组 和帧间隙来计算,每秒必须处理119M个数据包, 从表2可以看出,现在很多TCAM芯片都支持该算 法。 表2几种TCAM芯片介绍 经过匹配后会返回规则2的结果,但是规则1更加 准确。在存储规则时,按照优先级排列,优先级高 的规则存储在低地址,优先级低的存储在高地址。 利用带预留表项的顺序移动法H。n],并且每个 block的最后端存在一部分空余的TCAM表项,有 以下几种情况: ①当插入一条新的规则时,计算其优先级并规 则进入相应的block,之后再确定其在block中的位 置,顺序移动其后的表项。如图3所示,在R2后 面插入一条表项,首先移动R4到空余表项,再移 动R3到R4的位置。 ②当删除一条规则时,确定规则在TCAM中 的位置,删除该规则,并顺序移动其后的表项。如 图3所示,删除R6后,首先移动R7到R6的位置, 再移动R8到R7的位置。 2.4 GD—TCAM算法 表3给出了3种算法的一些指标,包括最坏情 况下的扩张因子、最坏情况下功耗、更新性能和匹 配性能,其中规则的范围字段为源端口号和目的端 口号, 为范围字段长度,Ⅳ为规则的数目,曰代表 GD—TCAM算法用到的所有TCAM的block数目, 曰.代表第2次匹配时用到的TCAM的block数目。 综上所述,提出一种基于格雷编码的优化存储 的TCAM报文分类算法,即GD-TCAM算法。 在最坏情况下,GD—TCAM算法耗能比直接前 3 实验验证 由于分类规则很少公开,所以实验采用Class— 缀扩展算法和基于格雷码的前缀扩展算法要少。 设范围字段只是源端口和目的端口号时。 在最坏情况下,基于直接前缀扩展算法的能 耗为 P,=N(2(W一1)) (7) Bench¨ 工具来产生分类规则库。本实验中所用 分类规则是防火墙的安全策略规则(fw—Bum),例 如,fw—lOk表示由ClassBench在fW种子文件下产 生的10000条规则,实验中采用了fw一1O0、fw一1k、 fw_5k、fw一1Ok的4个规则集。经过直接前缀扩展 基于前面的证明,在最坏情况下,基于格雷码 的前缀扩展算法的能耗为 衰3 3种算法指标对比 第6期 张杰鑫等:一种基于TCAM的报文分类算法 729 法、基于格雷码的前缀扩展法和GD-TCAM算法转 换后的规则条目如表4所示。 表4测试用规则库转换 从表4中可以看出,经过GD—TCAM算法转换 后,TCAM规则条目显著减少,存储效率大大增加。 为了便于比较,图4给出了基于表4的不同算法的 规则集扩张因子对比,可以看出,GD—TCAM算法的 扩张因子要比直接前缀扩展法和基于格雷码的前 缀扩展算法要低。因此GD—TCAM在节省空间、降 低能耗上具有优势。 fw 100 fw lk fw 5k fw 10k 图4 3种算法规则扩张因子对比 4 总结 本文首先详细介绍了基于TCAM的报文分类 概念,分析了基于TCAM的报文分类算法的难点, 针对TCAM在存储规则时存在规则扩张的问题, 提出了基于格雷编码的纵向压缩,利用TCAM的 剩余位宽进行横向扩展,优化存储结构的报文分类 算法・GD—TCAM算法。在理论上证明了该算法比 直接前缀扩展算法和基于格雷码的前缀扩展算法 能更有效的解决规则扩张问题,通过实验检验了理 论的正确性。最坏情况下GD.TCAM的扩张因子 是W.1或W.2,提高了空间利用率,通过减少无效 表项参与匹配降低了功耗。该算法可以保证分类 的正确性,保证分类速度,提高TCAM的利用率, 减少能耗,方便规则更新。在现有TCAM的芯片 的情况下,即使在双周期完成查找依然可以支持 80Gbps的线速查找。 参考文献6 5 4 3 2 ● O : [1]Gupta V,Lin S,Mckeown N.Routing Lookups in Hard・ ware at Memory Access Speeds[c]//Proceedings of IEEE Infoeom 98.1998:801—809. [2]Baboescu F,Singh S,Baboecu F,at a1.Packet Classifica— tion for Core Router:Is there an alternative to CAMs [c]//Proceedings of the 22nd IEEE Conference on Com・ purer Communications.2003:53-63. [3]Li Xiong,Ling Liu.PeerTrust:Supporting reputation- based trust for peer-to-peer electronic communities[J]. IEEE Transactions on Knowledge and Data Engineering, 2004,16(7):843—857. [4]Micron Technology.Micron 1 GbDDR SDRAM.Data Sheet[EB/OL].[2008・1 1—21].http://www.micron. com/products/dram/ddr2/partlist.asp. [5]Fang Yu,Lakshman T V,Martin Austin Motoyama.Effi— fient Multimatch Packet Classiifcation for Network Securi. ty Applications[J].IEEE Journal on Selected Areas in Communications,2006,24(10):1805—1816. [6]亓亚炬,李军.高性能网包分类理论与算法综述[J]. 计算机学报,2013,36(2):408-421. [7] Karthik Lakshminarayanan, Srinivasan Venkatachary, Anand Rangarajan.Algorithms for advanced packet clas— sification with ternary cams[c]//Proc.of the IEEE Sig— comm.2005:193-204. [8]Srinivasan V,Varghese G,Suri S.Fast and Scalable Lay— er Four Switching[C]//Proc.of the ACM Sigomm. 1998:19卜202. [9]Sun Hai,Sun Yan,Valgenti,V C,et a1.TCAM—based classiifcation using divide-・and・・conquer for range expan・・ sion[c]//Proc.of the Computer Communication and Net— works(ICCCN).2014:154.161. [1O]Taylor D E.Survey Taxonomy of Packet Classification Techniques[J].ACM Computing Surveys,2005,37 (3):238・275. [11]周立力.基于TCAM技术的高速路由查找方案[J]. 计算机应用,2003,23(9):17一l9. [12]王志强,王振兴,张定心.快速路由查找算法研究 [J].计算机应用研究,2004,21(2):231—234. [1 3]David E Taylor,Jonathan S Turner.ClassBench:A Packet Classiifcation Benchmark[C]//Proceedings of the 24th IEEE INFOC0M.2005:648—656.