【技术实现步骤摘要】
本专利技术涉及计算机应用
,尤其涉及一种基于TCAM(ternary contentaddressable memory,三态内容寻址存储器)的 NFA(non-deterministic finiteautomaton,非确定性有限自动机)的匹配方法和装置。
技术介绍
从最早的 grep(global search regular expression and print out theline,全面搜索正则表达式并把行打印出来),到现在非常流行的PCRE (Perl CompatibleRegular Expressions, peri语言兼容正则表达式),正则表达式因其强大、便捷、高效的文本处理能力,得到了广泛的使用。目前,几乎所有主编程流语言都支持正则表达式;在软件开发和日常数据处理工作中,正则表达式更是人们不可或缺的得力助手。正则表达式是一种“通用的模式语言”,它由两种字符构成:特殊字符和普通字符。特殊字符称为“元字符”,普通字符称为“文字”。“文字”就像语言中的单词,“元字符”则像文法;把单词按文法组织起来,就有了语义。正如文章由句子段落构成一样,一个完整的正则表达式也是由小的模块单元组成的。虽然模块单元各自都很简单,但它们的组合却千变万化。正是这种简单模块的复杂组合,使得正则表达式具有了强大的表达能力。例如,正则表达式a+b可以用来描述ab, aab, aaab,......等一系列特征的字符串。正则表达式匹配技术是一项用于检测给定的输入字符流中是否包含特定的正则表达式所描述的模式的技术,它计算机网络系统的一项核心基础技术,被广泛应用 ...
【技术保护点】
一种基于TCAM的非确定性有穷状态自动机的匹配方法,其特征在于,包括:对非确定性有穷状态自动机NFA的状态和活跃状态子集进行编码,将所述NFA的每个状态转移边用一个三态内容寻址存储器TCAM条目表示,每个TCAM条目由匹配域和目的域组成,所述匹配域包括:源状态域、输入字符域,所述目的域包括目的状态域或者包括目的状态域和掩码域;将所述NFA的源活跃状态子集的编码和输入字符的编码的拼接作为搜索关键词,按照所述搜索关键字在所述NFA的所有TCAM条目的匹配域中进行搜索,将获取的目的活跃状态子集的编码作为输出结果,所述源活跃状态子集为所述NFA当前所有同时活跃的状态的集合,所述目的活跃状态子集为在所述NFA中输入所述输入字符、进行状态转换后,得到的同时活跃的状态的集合。
【技术特征摘要】
1.一种基于TCAM的非确定性有穷状态自动机的匹配方法,其特征在于,包括: 对非确定性有穷状态自动机NFA的状态和活跃状态子集进行编码,将所述NFA的每个状态转移边用一个三态内容寻址存储器TCAM条目表示,每个TCAM条目由匹配域和目的域组成,所述匹配域包括:源状态域、输入字符域,所述目的域包括目的状态域或者包括目的状态域和掩码域; 将所述NFA的源活跃状态子集的编码和输入字符的编码的拼接作为搜索关键词,按照所述搜索关键字在所述NFA的所有TCAM条目的匹配域中进行搜索,将获取的目的活跃状态子集的编码作为输出结果,所述源活跃状态子集为所述NFA当前所有同时活跃的状态的集合,所述目的活跃状态子集为在所述NFA中输入所述输入字符、进行状态转换后,得到的同时活跃的状态的集合。2.根据权利要求1所述的基于TCAM的非确定性有穷状态自动机的匹配方法,其特征在于,对所述NFA的状态和活跃状态子集进行编码,包括: 将所述活跃状态子集编码为一个活跃向量,该活跃向量由所述活跃状态子集中包括的每个状态所归属的兼容组中的活跃码进行拼接得到,所述兼容组是 由若干NFA状态组成的集合,该集合中的状态两两之间都不能同时活跃,每个自循环状态单独组成一个自循环兼容组,所述自循环状态是NFA中转移到自身的边超过了一定阈值的状态,所述活跃码为所述兼容组为组内每个状态各自分配的一个唯一的非全O的编码。3.根据权利要求1所述的基于TCAM的非确定性有穷状态自动机的匹配方法,其特征在于,所述的将非确定性有穷状态自动机NFA的每个状态转移边用一个三态内容寻址存储器TCAM条目表示,每个TCAM条目由匹配域和目的域组成,包括: 将所述TCAM条目的目的域分两种方法表示:方法一,所述目的域仅由目的状态域组成,所述目的状态域存放的是目的活跃状态子集的活跃向量;方法二,所述目的域由目的状态域和掩码域组成,所述掩码域的长度为自循环兼容组的数目,即为每个自循环兼容组依次分配一个比特;若所述自循环兼容组在所述掩码域中的掩码值为“1”,则在目的状态域中存储所述自循环兼容组在目的活跃状态子集中的活跃码与所述自循环兼容组在源活跃状态子集中的活跃码的异或结果,否则直接存储所述自循环兼容组在目的活跃状态子集中的活跃码; 所述编码NFA中所有的状态转移的方法为: 枚举所述NFA中所有的状态转移,将每一个状态转移所对应的源状态域、输入字符域和目的域存储在一个TCAM条目中,所述源状态域中存储源状态的编码,所述输入字符域中存储输入字符的编码,所述目的域中的目的状态域中存储目的状态的编码; 或者; 获取所述NFA中的每个输入字符c的有效集E。,该E。是所有自循环状态以及所有对所述输入字符有转移边的NFA状态的集合,针对每个输入字符计算E。与所述NFA中每一个活跃状态子集S的交集,这些交集组成的集合记为I。,即I。= U s (Ec Π S),将I。中的各个交集按集合大小的非递增顺序进行排序; 依次处理排过序的所述I。中的每一个交集Ε。η S,为每一个交集ε。n s生成一个新的TCAM条目,在所述新的TCAM条目的输入字符域中存储输入字符的编码; 所述ε。n s的活跃向量按如下方式生成,对ε。n s中的每一个状态S,设置S所在的兼容组的编码为S的活跃码,对每一个自循环状态s',若s' eE。但Yg1S,则设置s'所在的兼容组的编码为“O”,其他的兼容组的编码均设置为全“*”,将所有兼容组的编码组合成活跃向量,在所述新的TCAM条目的源状态域中存储所述活跃向量; 对E。n S中的所有状态,计算它们经过所述输入字符所转移到的目的状态的集合记为D,在所述新的TCAM条目的目的状态域中存储所述D的活跃向量; 当所述目的域中包含掩码域时,则对Ε。H S中的每一个自循环状态s',在掩码域中为s'分配一个比特,判断s'是否存在一条边经过所述输入字符转移到自身,如果是,则在s'的掩码域中设置s'所在的兼容组的编码为I;否则,在s'的掩码域中设置s'所在的兼容组的编码为O ; 当所述目的域包含掩码域时,则对E。n S中的每一个自循环状态S',若S'所在的兼容组在掩码域中的值为1,则V的目的状态域中存储V在目的状态域中的编码与V在源状态域中的编码的异或结果。4.根据权利要求1所述的基于TCAM的非确定性有穷状态自动机的匹配方法,其特征在于,所述的方法还包括: 当所述NFA的一个TCAM条目Ti和另一个TCAM条目Tj的目的状态域相同、匹配域相差共m位比特,生成一个新TCAM条目T' k, Ti k初始化为Tj,在T' k的匹配域中将1\和1^之间相异的比特位的值置为“ * ”,若在TCAM中用T' k代替Ir并删除Ti后不影响TCAM的语义正确性,则在TCAM中用T' k代替Ir并删除凡。5.根据权利要求1或2或3或4所述的基于TCAM的非确定性有穷状态自动机的匹配方法,其特征在于,所述的将所述NFA的源活跃状态子集的编码和输入字符的编码的拼接作为搜索关键词,按照所述搜索关键字在所述NFA的所有TCAM条目中进行搜索,将获取的目的活跃状态子集的编码作为输出结 果,包括: 按照所述搜索关键字在所述NFA的所有TCAM条目中进行并行搜索,一次NFA状态转换只需要一次TCAM并行搜索,当TCAM条目的目的域仅由目的状态域组成时,则搜索得到的所有目的状态域的编码的组合即为目的活跃状态子集的编码; 当TCAM条目的目的域由目的状态域和掩码域组成时,对于源状态域中的每一个自循环兼容组,当所述自循环兼容组在搜索得到的掩码域中的值为I时,将搜索得到的目的状态域的编码与所述自循环兼容组的编码做异或,将异或的结果作为最终搜索得到的目的状态域的编码,将最终搜索得到的所有目的状态域的编码的组合作为目的活跃状态子集的编码; 将上一次TCAM并行搜索得到...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。