基于TCAM的确定性有穷状态自动机DFA的匹配方法和装置制造方法及图纸

技术编号:9143227 阅读:182 留言:0更新日期:2013-09-12 04:43
本发明专利技术涉及一种基于TCAM(ternary?content?addressable?memory,三态内容寻址存储器)的DFA的匹配方法和装置。该方法主要包括:将DFA的每个状态用若干TCAM条目表示,每个TCAM条目由源状态域、输入字符域和目的状态域三个域组成,所述源状态域由模板ID域和私有ID域两个子域组成,所述目的状态域由模板ID域和私有ID域两个子域组成,以具体的所述源状态域和输入字符域的拼接作为搜索关键词,按照所述搜索关键字在所述DFA的所有TCAM条目中进行搜索,获取搜索得到的目的状态域,将所述目的状态域中的模板ID域的值与所述搜索关键字搜索关键词中的模板ID域的值进行异或,将所述异或结果作为所述目的状态域中的最终的模板ID域的值。本发明专利技术实施例可以在不牺牲匹配速度的前提下突破DFA状态数指数膨胀的问题,大大减少了DFA所需的存储空间。

【技术实现步骤摘要】
基于TCAM的确定性有穷状态自动机DFA的匹配方法和装置
本专利技术涉及计算机应用
,尤其涉及一种基于TCAM(ternarycontentaddressablememory,三态内容寻址存储器)的DFA的匹配方法和装置。
技术介绍
正则表达式技术是计算机网络系统的一项核心基础技术,被广泛应用于入侵检测和防护、签名匹配、蠕虫检测、包内容过滤、流量分析、协议识别等领域。正则表达式具有灵活、强大的描述字符串模式的能力,正则表达式的匹配通过有限自动机实现,该有限自动机包括NFA(non-deterministicfiniteautomaton,非确定性有限自动机)和DFA(deterministicfiniteautomaton,确定性有限自动机)。即可将正则表达式编译为一个NFA,然后可以进一步将此NFA编译为一个与之等价的DFA,通过NFA或者DFA的状态转换检查输入字符串中是否存在给定的正则表达式模式。NFA和DFA在存储空间和匹配速度两个方面拥有各自的优点和缺点。有限自动机存储的是一个状态转换表,给定一个当前活跃状态和一个输入字符,通过在状态转换表中查询,可得到下一时刻活跃的状态。自动机的存储空间取决于这个状态转换表的大小,由于字符表的大小通常是确定的(如ASCII表),所以自动机的存储空间主要取决于状态的个数。NFA所需存储空间小,其状态数与正则表达式的规则集大小(即规则集中字符数)成线性增长关系。但NFA的匹配速度很慢。由于NFA的不确定性,对于每个字符,NFA中的状态都有可能同时转移到多个目的状态,导致一次状态转换需要多次内存访问。对于这些同时激活的目的状态,在处理下一个输入字符时,它们又会同时激活更多的目的状态。因此,NFA的匹配速度是不可预测的,实际应用中,通常需要几十次内存访问才能完成一次NFA状态转换,远不能满足网络线速(linerate)。DFA具有确定性的匹配速度,由于对于每个输入字符,每个DFA状态有且仅有唯一的目的状态,因此每次DFA状态转换仅需一次内存访问。但DFA的状态数可能与正则表达式的规则集大小成指数增长关系,导致正则表达式规则通常无法用DFA存储。目前的基于DFA的方法都无法突破一个存储体积的瓶颈,即所存储的DFA转移边的数目总是大于DFA状态数,因此也就无法存储状态数成指数膨胀的DFA。目前,由于上述有限状态自动机的体量非常大,导致上述基于DFA的正则表达式匹配方法亟待改进。
技术实现思路
本专利技术的实施例提供了一种基于TCAM的DFA的匹配方法和装置,以实现解决同时兼顾存储空间和匹配速度的难题。为实现上述的专利技术目的,本专利技术采用下述的技术方案:一种基于TCAM的确定性有穷状态自动机DFA的匹配方法,包括:将确定性有穷状态自动机DFA的每个状态用若干三态内容寻址存储器TCAM条目表示,每个TCAM条目由源状态域、输入字符域和目的状态域三个域组成,所述源状态域由模板ID域和私有ID域两个子域组成,分别用于存储源状态的模板ID编码和私有ID编码,所述目的状态域由模板ID域和私有ID域两个子域组成,所述模板ID域用于存储目的状态的模板ID编码和源状态的模板ID编码的异或结果,所述私有ID域用于存储目的状态的私有ID编码;以具体的所述源状态域和输入字符域的拼接作为搜索关键词,按照所述搜索关键字在所述DFA的所有TCAM条目中进行搜索,获取搜索得到的目的状态域,将所述目的状态域中的模板ID域的值与所述搜索关键字搜索关键词中的模板ID域的值进行异或,将所述异或结果作为所述目的状态域中的最终的模板ID域的值。一种基于TCAM的确定性有穷状态自动机的匹配装置,包括:TCAM条目构造模块,用于将确定性有穷状态自动机DFA的每个状态用若干三态内容寻址存储器TCAM条目表示,每个TCAM条目由源状态域、输入字符域和目的状态域三个域组成,所述源状态域由模板ID域和私有ID域两个子域组成,分别用于存储源状态的模板ID编码和私有ID编码,所述目的状态域由模板ID域和私有ID域两个子域组成,所述模板ID域用于存储目的状态的模板ID编码和源状态的模板ID编码的异或结果,所述私有ID域用于存储目的状态的私有ID编码;搜索匹配模块,用于以具体的所述源状态域和输入字符域的拼接作为搜索关键词,按照所述搜索关键字在所述DFA的所有TCAM条目中进行搜索,获取搜索得到的目的状态域,将所述目的状态域中的模板ID域的值与所述搜索关键词中的模板ID域的值进行异或,将所述异或结果作为所述目的状态域中的最终的模板ID域的值。本专利技术实施例通过基于TCAM实现DFA,TCAM条目的源状态域由模板ID域和私有ID域两个子域组成,目的状态域由模板ID域和私有ID域两个子域组成,可以在不牺牲匹配速度的前提下突破DFA状态数指数膨胀的问题,大大减少了DFA所需的存储空间。【附图说明】图1为本专利技术实施例一提供的一种基于TCAM(ternarycontentaddressablememory,三态内容寻址存储器)的DFA的匹配方法的具体处理流程图;图2为本专利技术实施例二所提供的用于匹配正则表达式ab.*cd的和ef.*gh的DFA;图3为本专利技术实施例四所提供的图2中的状态00生成的TCAM条目;图4为本专利技术实施例五所提供的用于匹配正则表达式ab.*cd的和ef.*gh的NFA;图5为本专利技术实施例五所提供的图2中的各个DFA状态所对应的NFA子集;图6为本专利技术实施例五所提供的模板ID的编码;图7为本专利技术实施例五所提供的基于私有ID相同的状态集合和模板关系构造的树;图8为本专利技术实施例五所提供的私有ID的编码;图9为本专利技术实施例六所提供的图2的整个DFA进行编码后的TCAM;图10为本专利技术实施例七所提供的对图9中的TCAM进行压缩后的TCAM;图11为本专利技术实施例八提供的一种基于TCAM的DFA的匹配装置的具体结构图。【具体实施方式】为使本专利技术实施例的目的、技术方案和优点更加清楚,下面将结合附图,以对本专利技术实施例进行清楚、完整地描述人员。本专利技术实施例的目的在于突破当前DFA实现技术难以同时兼顾存储空间和匹配速度的难题,尤其是在不牺牲匹配速度的前提下突破DFA状态数指数膨胀的问题,提供一种基于TCAM实现DFA的方法。实施例一该实施例提供的一种基于TCAM的DFA的匹配方法的具体处理流程如图1所示,包括如下的处理步骤:步骤S101、将DFA的每个状态用若干TCAM条目表示,每个TCAM条目由源状态域、输入字符域和目的状态域三个域组成,所述源状态域由模板ID域和私有ID域两个子域组成。DFA可采用TCAM实现。TCAM作为一种高速并行查找引擎,已广泛部署于各种高速网络设备中,用于IP地址查找和基于包头的包分类等网络应用。TCAM存储单元可存储“0”、“1”、“*”三种状态的比特值,其中,比特值“*”表示“不关心状态”,即既可以是“0”也可以是“1”。TCAM芯片由一定数目的TCAM条目(entry)组成。每个时钟周期内,TCAM并行地将所有条目与搜索关键词(searchkey)进行比较,在所有满足匹配条件的条目中,TCAM返回第一个条目作为输出。TCAM的输出将作为新的搜索关键词的一部分,继续参与下一次匹配。由于TCAM能存储“*”的本文档来自技高网
...
基于TCAM的确定性有穷状态自动机DFA的匹配方法和装置

【技术保护点】
一种基于TCAM的确定性有穷状态自动机DFA的匹配方法,其特征在于,包括:将确定性有穷状态自动机DFA的每个状态用若干三态内容寻址存储器TCAM条目表示,每个TCAM条目由源状态域、输入字符域和目的状态域三个域组成,所述源状态域由模板ID域和私有ID域两个子域组成,分别用于存储源状态的模板ID编码和私有ID编码,所述目的状态域由模板ID域和私有ID域两个子域组成,所述模板ID域用于存储目的状态的模板ID编码和源状态的模板ID编码的异或结果,所述私有ID域用于存储目的状态的私有ID编码;以具体的所述源状态域和输入字符域的拼接作为搜索关键词,按照所述搜索关键字在所述DFA的所有TCAM条目中进行搜索,获取搜索得到的目的状态域,将所述目的状态域中的模板ID域的值与所述搜索关键词中的模板ID域的值进行异或,将所述异或结果作为所述目的状态域中的最终的模板ID域的值。

【技术特征摘要】
2012.02.28 CN 201210047854.61.一种基于TCAM的确定性有穷状态自动机DFA的匹配方法,其特征在于,包括:将确定性有穷状态自动机DFA的每个状态用若干三态内容寻址存储器TCAM条目表示,每个TCAM条目由源状态域、输入字符域和目的状态域三个域组成,所述源状态域由模板ID域和私有ID域两个子域组成,分别用于存储源状态的模板ID编码和私有ID编码,所述目的状态域由模板ID域和私有ID域两个子域组成,所述模板ID域用于存储目的状态的模板ID编码和源状态的模板ID编码的异或结果,所述私有ID域用于存储目的状态的私有ID编码;以具体的所述源状态域和输入字符域的拼接作为搜索关键词,按照所述搜索关键字在所述DFA的所有TCAM条目中进行搜索,获取搜索得到的目的状态域,将所述目的状态域中的模板ID域的值与所述搜索关键词中的模板ID域的值进行异或,将所述异或结果作为所述目的状态域中的最终的模板ID域的值;其中,所述的将确定性有穷状态自动机DFA的每个状态用若干三态内容寻址存储器TCAM条目表示,包括:若对于某个输入字符,状态i和状态j各有一条出边经过该输入字符转移到某个相同的目的状态,则这两条出边是状态i和状态j之间的共享边;若对于某个输入字符,状态i和状态j各有一条出边经过该输入字符转移到不同的目的状态,则状态i的这条出边是关于状态j的非共享边,且状态j的这条出边是关于状态i的非共享边;每个DFA状态均用一对状态ID进行编号,所述状态ID对为模板ID和私有ID,全部的DFA状态被划分成多个状态集合,每个状态集合包含的是全部拥有相同私有ID的状态,且该状态集合以这个私有ID命名;如果两个状态分属于两个状态集合,且所述两个状态集合共享相同的模板ID,则所述两个状态集合互为彼此的亲属状态;对于私有ID为K的状态集合,若私有ID为J的状态集合同时满足下述条件,则状态集合K的所有状态都各自选择它们在状态集合J中的亲属状态作为模板状态:J<K;对于集合K中的每一个状态,其在集合J中都存在一个亲属状态;在所有满足上述两个条件的候选状态集合中,集合J与集合K的相似度最大;每个DFA状态最多只有一个模板状态,对于自循环状态不为之分配模板;若一个DFA状态有模板状态时,则该DFA状态的状态转移边只需存储该DFA状态关于其模板状态的非共享边;若一个DFA状态没有模板状态,则该DFA状态需要存储其全部的状态转移边;存在模板关系的两个DFA状态生成的TCAM条目之间的存储顺序如下:若状态i以状态j为模板,则状态i的状态转移边都必须存储在状态j的状态转移边之前;不存在模板关系的两个DFA状态生成的TCAM条目之间的存储顺序是任意的。2.根据权利要求1所述的基于TCAM的确定性有穷状态自动机DFA的匹配方法,其特征在于,所述的源状态域由模板ID域和私有ID域两个子域组成,分别用于存储源状态的模板ID编码和私有ID编码,包括:将转移到自身的出边的数目超过了一定的阈值的状态定义为自循环状态,每个DFA状态有且仅有唯一的(模板ID,私有ID)对;为每个自循环状态分配一个唯一的模板ID,为所有的自循环状态分配一个相同的私有ID;对于每个非自循环状态,其模板ID的取值为与其相似度最大的自循环状态的模板ID;其私有ID的取值按如下宽度遍历过程迭代进行:维护一个状态集合的队列,尝试为所有在同一个状态集合中的状态分配相同的私有ID,初始将由所有自循环状态组成的状态集合入队,并将该状态集合标记为已访问,每次取出队首的状态集合S直至队列为空:依次迭代检查S经每一个字符所达到的目的状态集合D:从D中删去所有自循环状态;若D中存在多个状态共享相同的模板ID,则只留下其中一个状态,其余的状态从D中删去;若存在一个已访问过的状态集合S',使得则跳出本次迭代;若存在一个已访问过的状态集合S’,S’中所有的状态已被分配相同的私有ID,使得则将S'中状态所分配的私有ID分配给D中所有状态;否则,D中所有状态分配一个尚未被分配过的私有ID;将D中所有状态从所有已访问的状态集合中删除;标记集合D为已访问;D入队。3.根据权利要求1所述的基于TCAM的确定性有穷状态自动机DFA的匹配方法,其特征在于,所述的源状态域由模板ID域和私有ID域两个子域组成,分别用于存储源状态的模板ID编码和私有ID编码,包括:对于存在模板关系的两个DFA状态i和j,若状态i以状态j为模板,则状态i的私有ID编码匹配状态j的私有ID编码;DFA状态间的模板关系将所有的DFA状态组织成多个树,每个树均以一个自循环状态作为根,每个DFA状态均以它的模板状态为父结点;在所述树中为每个状态分配一个子编码,如果一个状态有N个子结点,则这N个子结点所需的子编码比特数为每个子结点分配一个长度为n的互不相同的子编码;全“0”的编码保留不分配,叶子结点的子编码为空;私有ID相同的状态分配的子编码必须相同;每个状态的私有ID的编码即为该状态所有祖先结点的子编码与自身子编码的拼接,即从树根开始到每个状态,该状态的初始私有ID编码为空,沿途依次在后面拼接上所访问的父结点的子编码,最后拼接上该状态的子编码,作为该状态的私有ID编码;将所有状态的私有ID编码的长度设置为一致。4.根据权利要求1至3任一项所述的基于TCAM的确定性有穷状态自动机DFA的匹配方法,其特征在于,所述的方法还包括:若存在共享相同的目的状态域、源状态域的两个TCAM条目i和j且i和j的输入字符域只相差一个比特,则在TCAM条目i的输入字符域中,将与TCAM条目j相差的比特位的值置为“*”,删除TCAM条目j;若存在共享相同的目的状态域、输入字符域、源状态域的私有ID域的两个TCAM条目i和j且i和j的...

【专利技术属性】
技术研发人员:董群峰彭坤杨
申请(专利权)人:中国科学技术大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1