基于bf_tcam实现零范围扩张的高效范围匹配方法

文档序号:9754462阅读:793来源:国知局
基于bf_tcam实现零范围扩张的高效范围匹配方法
【技术领域】
[0001 ]本发明涉及一种基于Bloom filter算法和TCAM(Ternary Content Addressable Memory,三态内容寻址存储器)实现零范围扩张的高效范围匹配方法,主要用于解决报文分 类中端口范围匹配,存储保护中访存地址的审查等,实现访问控制、安全过滤、带宽控制等 功能,广泛应用于防火墙、路由器、交换机、分布式存储网络、可信计算安全平台等设备中。 这些应用对查找性能要求很高,高速的范围匹配是其实现的技术支撑。
【背景技术】
[0002] 目前业界普遍使用TCAM实现高速查找表。和普通内存通过地址寻找内容不同, TCAM通过内容定位地址,它将查找输入的关键字和所有表项进行并行比较来定位关键字匹 配的存储地址,根据得到的地址在RAM中索引规则内容。TCAM可以在固定的时钟周期完成查 找操作,目前其时钟周期可以达到2ns,实现500MSPS的查找速率。TCAM三态特性需要使用多 达16个晶体管来实现一个比特的存储,导致芯片面积较大且价格不菲,而其并行比较特性 使得功耗很高,一个18Mbit的TCAM功耗高达15W。
[0003] TCAM突出的问题在于其不适于实现范围匹配,它的三态性便于实现精确匹配和前 缀匹配。比如TCAM可以方便地表达报文分类中的协议字段和IP地址字段,但端口范围无法 直接实现。目前已有方案是将范围匹配转换成前缀匹配和精确匹配,一个范围字段往往映 射出多条匹配表项,称为范围扩张 (range expansion)。范围扩张降低了TCAM空间使用效 率,造成了较大的配置负载,提高了更新代价,同时使TCAM的功耗问题雪上加霜。
[0004] 文献"面向存储和功耗优化的TCAM报文分类算法研究(2013年解放军信息工程大 学硕士论文)"提出一种基于域转换的范围匹配算法DTRM(Domain Transformation for Range Match),充分利用TCAM表项中的冗余位压缩规则集,理想情况下可使范围扩张因子 达到1.21以下,TCAM空间利用率提高到82 %以上。文献"基于TCAM的范围匹配方法一一C-TCAM(通信学报,2012,33( 1 ) :31-37 )"提出一种基于TCAM的范围匹配方法C-TCAM (Compressed TCAM),通过二级压缩将2个扩展后的表项压缩成一个,最坏情况下范围扩张 因子为W-1或W-2(W为关键字位宽,如端口号位宽为16),同时减少查找过程中无效表项参与 比较来降低功耗。文献"Space-Efficient TCAM-Based Classification Using Gray Coding(IEEE TRANSACTIONS ON COMPUTERS,2012,61(1): 18-30)"提出了基于格雷码的范 围编码方法SRGE(Short Range Gray Encoding),利用格雷码相邻编码之间只有一位不同 的特点对规则集进行压缩,但随着范围长度增加格雷编码效率大打折扣,只适用于较小范 围,最坏情况下扩展因子达到了2W-2。报文分类中要同时匹配源端口和目的端口两个字段, 上述文献为代表的范围匹配方案扩张因子是单字段下的平方,大幅增加了规则表项,造成 大量存储冗余,同时提高了更新操作的复杂性和TCAM功耗,如最差情况下DTRM造成49倍扩 张,C-TCAM造成225倍扩张,SRGE造成784倍扩张,同时DTRM和C-TCAM每条表项需要额外使用 32个比特。文南犬"A Fast Range Matching Architecture with Unit Storage Expansion Ratio and High Memory Utilization using SBiCAM for Packet Classification(2014 Annual IEEE India Conference)"提出一种用于范围查找的新型存储器结构SBiCAM (Smart Binary Content Addressable Memory),无需规则扩展,直接实现关键字与表项并 行比较大小,而传统的TCAM只能判断是否相等,因而可实现高效的范围匹配。但其缺陷显而 易见,SBiCAM是一种新型电路,投入实际应用尚需时日,从TCAM的发展历程可以判断SBiCAM 即使投入生产也要经历一段漫长历程才能达到较理想的性能以满足应用需求。近年来出现 TCAM分块存储策略,按照前缀长度进行分类存储,实现了前缀子集内表项的随机存放,提高 了更新性能,而且查找操作只涉及TCAM部分区域,大幅降低了TCAM工作功耗,其中引入 Bloom filter对前缀分类处理是最近几年的一个创新。文献"Longest Prefix Matching Using Bloom FiIters(IEEE/ACM TRANSACTIONS ON NETWORKING,2006,14(2):397-409)" 利用Bl〇〇m_filter算法先对关键字的前缀长度进行预判断,再利用哈希查找表搜索前缀 值,最差情况下需要使用N/2(N为前缀子集表项的最大数目)次哈希查找实现匹配,查找性 能较TCAM差许多;文献"基于并行BP神经网络的路由查找算法(通信学报,2012,33(2): 61-68)"提出BF_BP模型,第一步与文献"Longest Prefix Matching Using Bloom Filters"相 似,使用Bloom filter匹配前缀长度,第二步利用BP反射神经网络实现前缀值匹配,然而其 不足之处在于神经网络相比TCAM配置与更新要花费较长时间,需要多次训练实现神经单元 学习。

【发明内容】

[0005]本发明所要解决的技术问题是提供一种基于Bloom filter算法和TCAM实现零范 围扩张的高效范围匹配算法,以解决基于TCAM实现范围匹配方法存在的存储利用率低、功 耗大的问题,本算法高效性体现在:高效存储、高速查找及低功耗。
[0006]为达到上述目的,本发明具体方案如下。
[0007] 一种基于BF_TCAM实现零范围扩张的高效范围匹配方法,适用于网络设备中端口 范围匹配、存储保护中访存地址审查,设计了基于最长共同前缀的分段匹配(Segmented Match on Longest Common Prefix,SMLCP)算法,将范围匹配转化为前缀匹配和特征区间 比对两个步骤,实现了零范围扩张,使TCAM存储空间利用率达到100%;根据SMLCP算法设计 了BF_TCAM模型,结合Bloom filter的前缀分类处理优势和TCAM的高速查找特性,在保持高 性能的同时大幅降低TCAM功耗;范围区间[s,t]内任意一整数点X,其二进制编码可以分为 最长共同前缀和偏移量两段,其中LCP是区间内所有整数点的最长共同前缀,如LCP([37, 57])=001*_##是范围[37,57]的1^^,40的二进制编码分为001*_##和01000两部分,* 表示不关心;SMLCP算法利用范围区间的这种特性,将匹配过程分段进行,其具体步骤如下:
[0008] 步骤一,查找与关键字X任意长度前缀相匹配的范围区间,至多有W个范围的LCP与 X相匹配,W为X二进制编码位宽;
[0009] 步骤二,根据X的偏移量精确挑选出匹配的范围。
[0010] 算法的关键在于第一步将搜索范围缩小至W个以下,从而大幅减小了查找范围。 [0011]使用分类处理思想,根据前缀长度划分范围子集,各子集独立并行处理,能够随机 插入或删除表项,支持增量更新,从而提高了更新性能;利用Bloom filter对关键字各长度 前缀进行预判断,过滤无关范围子集参与比较,从而大大降低功耗;针对Bloom filter无法 删除元素的缺陷设计Bloom filter计数器,将位数组的每一位扩展为计数器,每增加或删 除一个元素时执行加1或减1操作;设计BF_TCAM模型,分为前缀预处理(Bloom filter Preprocessing,BFPP)单元,TCAM_RAM单元(附优化的区间比较器),更新单元和状态单元; BFPP单元对关键字进行判断,筛选出关键字所在的前缀子集;TCAM_RAM单元存储所有范围 的LCP、特征区间及附属信息(Acs_Inf or),每个前缀子集对应一组TCAM_RAM,由片选信号进 行选择;更新单元维护Bloom fiIter计数器,实时更新BFPP单元的Bloom fiIter和TCAM_ RAM,有效减少了电路资源开销;状态单元记录工作状态,指示关键字是否有效;利用SMLCP 特征区间比对特点优化了比较器设计,降低电路资源开销。
[0012] 配置过程分为4个步骤:
[0013]步骤1、获取范围区间;
[0014]步骤2、计算范围区间的lcp,根据LCP前缀长度划分子集;
[0015] 步骤3、首先训练各子集的Bloom filter
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1