一种tcam多模式字符串匹配方法及装置的制作方法

文档序号:6357973阅读:209来源:国知局
专利名称:一种tcam多模式字符串匹配方法及装置的制作方法
技术领域
本发明是关于字符串匹配技术,特别是关于多模式字符串匹配技术,具体的讲是关于一种TCAM多模式字符串匹配方法及装置。
背景技术
随着科学技术的高速发展,人们需要处理的信息急剧增加,如何在这些海量的信息中快速提取自己所需的信息,成为一个很重要的课题。字符串匹配技术,作为文本处理、关键词检索、敏感词过滤等多种应用的关键技术,对信息检索起着至关重要的作用。尤其是多模式的字符串匹配技术,成为各种多字符串、超大容量信息检索的核心技术。信息检索工具的性能,取决于其所使用的多模式字符串匹配技术的性能。现有技术中,针对多模式字符串匹配技术的算法通常都是基于AC算法或状态机匹配。然而,基于计算机执行的软件,受到了 DDR内存数据读取延时较长的缺点的限制;而基于AC或状态机匹配的软件算法,需要根据当前状态获得下一状态的值,才能继续进行匹配。因此,现有的软件算法,都有一个性能极限,这个极限与DDR的频率和读数据延时有关。

发明内容
本发明提供一种TCAM多模式字符串匹配方法及装置,以提高多模式字符串匹配的速度。为了实现上述目的,本发明实施例提供一种TCAM多模式字符串匹配方法,该方法包括接收用户输入的多模式字符串及字符串配置信息,根据所述多模式字符串及字符串配置信息选择TCAM表项宽度、TCAM容量及TCAM工作频率符合条件的TCAM ;以位置域的值和前掩码域表征字符串偏移且字符串域包含模式字符串内容的方式,将所述的多模式字符串存储到TCAM表项包含所述位置域、所述前掩码域、字符串域及后掩码域的所述选择的 TCAM中;接收所述用户输入的待匹配字符串,根据每次匹配重复送入的字节数及TCAM表项宽度将所述待匹配字符串分为多个字符段,其中,相邻字符段的部分字符重叠;将所述字符段及对应的匹配顺序值发送到所述TCAM中进行匹配;从所述的TCAM中获取并输出字符串匹配结果。进一步地,所述的字符串配置信息包括字符串类型、字符串偏移、字符串标识、优先级及匹配性能。进一步地,根据所述多模式字符串及字符串配置信息选择TCAM表项宽度、TCAM容量及TCAM工作频率符合条件的TCAM,包括根据字符串长度及字符串偏移确定TCAM表项宽度;根据字符串的类型及大小确定TCAM的容量;根据匹配性能确定TCAM的工作频率。进一步地,将所述的多模式字符串存储到TCAM表项包含位置域、前掩码域、字符串域及后掩码域的所述选择的TCAM中,包括根据所述的字符串优先级确定字符串在TCAM 中的存储地址;将所述字符串的对应表项内容存储到TCAM的所述存储地址中。在将所述的多模式字符串存储到TCAM表项包含位置域、前掩码域、字符串域及后掩码域的所述选择的 TCAM中时,采用所述的前掩码域及后掩码域屏蔽多模式字符串中无需匹配部分。进一步地,根据所述多模式字符串及字符串配置信息选择TCAM表项宽度、TCAM容量及TCAM工作频率符合条件的TCAM之前,所述的方法还包括将所述的浮动偏移字符串转化为多条固定偏移字符串。进一步地,从所述的TCAM中获取并输出字符串匹配结果,包括根据所述多个字符段的匹配的结果生成总匹配结果;根据总匹配结果获取匹配到的多模式字符串的标识及匹配位置信息。进一步地,所述字符段对应的匹配顺序值是按顺序分配的,每个待匹配字符串通过多次分段匹配的方式完成整个匹配过程。为了实现上述目的,本发明实施例还提供一种TCAM多模式字符串匹配装置,该装置包括TCAM选择单元,用于接收用户输入的多模式字符串及字符串配置信息,根据所述多模式字符串及字符串配置信息选择TCAM表项宽度、TCAM容量及TCAM工作频率符合条件的TCAM ;字符串存储单元,用于以位置域的值和前掩码域表征字符串偏移且字符串域包含模式字符串内容的方式,将所述的多模式字符串存储到TCAM表项包含所述位置域、所述前掩码域、字符串域及后掩码域的所述选择的TCAM中;待匹配字符串处理单元,用于接收所述用户输入的待匹配字符串,根据每次匹配重复送入的字节数及TCAM表项宽度将所述待匹配字符串分为多个字符段,其中,相邻字符段的部分字符重叠;字符串匹配单元,用于将所述字符段及对应的匹配顺序值发送到所述TCAM中进行匹配;匹配结果输出单元,用于从所述的TCAM中获取并输出字符串匹配结果。进一步地,所述的字符串配置信息包括字符串类型、字符串偏移、字符串标识、优先级及匹配性能。进一步地,所述的TCAM选择单元包括表项宽度确定模块,用于根据字符串长度及字符串偏移确定TCAM表项宽度;容量确定模块,用于根据字符串的类型及大小确定TCAM 的容量;工作频率驱动模块,用于根据匹配性能确定TCAM的工作频率。进一步地,所述的字符串存储单元包括地址确定模块,用于根据所述的字符串优先级确定字符串在TCAM中的存储地址;存储模块,用于将所述字符串的对应表项内容存储到TCAM的所述存储地址中。所述的前掩码域及后掩码域用于屏蔽多模式字符串中无需匹配部分。进一步地,所述的TCAM选择单元还包括字符串转化模块,用于将所述的浮动偏移字符串转化为多条固定偏移字符串。进一步地,所述的匹配结果输出单元包括匹配结果生成模块,用于根据所述多个字符段的匹配的结果生成总匹配结果;匹配信息获取模块,用于根据总匹配结果获取匹配到的多模式字符串的标识及匹配位置信息。本发明的有益效果在于,通过本发明的TCAM多模式字符串匹配方法及装置,可使多模式字符串匹配的规模与TCAM的容量相当,匹配速度与TCAM匹配带宽相当,提高多模式字符串匹配的规模和速度。


为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。在附图中图1为本发明实施例TCAM多模式字符串匹配装置的结构框图;图2为本发明实施例TCAM选择单元的结构框图;图3为本发明实施例字符串存储单元的结构框图;图4为本发明实施例固定偏移字符串的表项示意图;图5为本发明实施例浮动偏移字符串的表项示意图;图6为本发明实施例L < La时浮动偏移字符串的表项示意图;图7为本发明实施例TCAM字符串匹配原理示意图;图8为本发明实施例匹配结果输出单元的结构框图;图9为本发明实施例TCAM多模式字符串匹配装置示意图;图10为本发明实施例TCAM字符串匹配示意图;图11为本发明实施例TCAM多模式字符串匹配方法流程图;图12为本发明实施例的匹配参数实例。
具体实施例方式为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。内容寻址内存(Content Addressable Memory, CAM)与 SRAM、DDR 等普通内存不同,普通内存通过输入地址得到数据;而CAM则是通过输入数据得到数据所在的地址。 TCAM (Ternary CAM)为三态CAM,不仅可以匹配二进制数“0”和“ 1 ”,还可以通过掩码匹配任意值,也称为可匹配“X”。CAM的数据宽度通常可配置,如9字节、18字节、36字节或72字节等。进行多模式字符串匹配时,字符串通常有固定偏移方式及浮动偏移方式两种。固定偏移方式是指需要在输入串的某个确定的偏移位置匹配到字符串,这种匹配方式在网络协议识别等领域有较多的应用;浮动偏移方式是指在输入串的任意位置匹配到字符串即为匹配成功,通常在关键词搜索等领域应用广泛。本发明提供了一种TCAM多模式字符串匹配方法及装置,为固定偏移字符串设计以位置域的值和前掩码域表征字符串偏移且字符串域包含模式字符串内容的TCAM存储方式,将浮动偏移字符串转化为多条固定偏移字符串存储;然后通过包含匹配次数和部分串重复匹配的方式,完成多模式字符串的精确和高速匹配。通过本发明,使多模式字符串匹配的速度与TCAM匹配带宽相当,达到每秒吉字节量级,远高于各种软件匹配算法。如图1所示,本发明实施例提供一种TCAM多模式字符串匹配装置,该装置包括 TCAM选择单元101,字符串存储单元102,待匹配字符串处理单元103,字符串匹配单元104 及匹配结果输出单元105。TCAM选择单元101,接收用户输入的多模式字符串及字符串配置信息,根据所述
6多模式字符串及字符串配置信息选择TCAM表项宽度、TCAM容量及TCAM工作频率符合条件的TCAM。字符串配置信息可以包括字符串类型、字符串偏移、字符串标识、优先级及匹配性能。如图2所示,TCAM选择单元101可以包括表项宽度确定模块201,容量确定模块 202及工作频率驱动模块203。表项宽度确定模块201根据字符串长度及字符串偏移确定TCAM表项宽度;容量确定模块202根据字符串的类型及大小确定TCAM的容量;工作频率驱动模块203根据匹配性能确定TCAM的工作频率。字符串长度为已知量,给定字符串偏移之后就可以确定TCAM的宽度。TCAM容量即TCAM中最多能容纳的TCAM表项的数量。匹配性能例如可以为IG/秒, 如果TCAM表项宽度为8字节,此时TCAM工作频率为125MHz。如图2所示,TCAM选择单元101还包括如果TCAM选择单元101接收的多模式字符串中包含浮动偏移字符串,字符串转化模块204可以将所述的浮动偏移字符串转化为多条固定偏移字符串。字符串存储单元102以位置域的值和前掩码域表征字符串偏移且字符串域包含模式字符串内容的方式,将所述的多模式字符串存储到TCAM表项包含所述位置域、所述前掩码域、字符串域及后掩码域的所述选择的TCAM中。本发明TCAM的每一 TCAM表项包含位置域、前掩码域、字符串域及后掩码域,位置域的值C和前掩码域可以用来表征字符串偏移,字符串域中包含模式字符串内容,采用前掩码域及后掩码域屏蔽多模式字符串中无需匹配部分。设TCAM表项的宽度、位置域的宽度、前掩码域的宽度、字符串域的宽度分别为W、K、N、L,那么后掩码域的宽度为W-L-N-K。表项宽度确定模块201可以设定位置域的宽度K及字符串的偏移量offset,根据字符串长度L及字符串偏移offset确定TCAM表项宽度W,根据匹配重复送入的字节数、所述TCAM表项宽度W、字符串宽度L、位置域的宽度K及字符串的偏移量offset计算位置值 C及前掩码的宽度N。如图3所示,字符串存储单元102可以包括地址确定模块301及存储模块302。如果字符串配置信息中包含优先级,地址确定模块301可以根据所述的字符串优先级确定字符串在TCAM中的存储地址;存储模块302可以将所述字符串的对应表项内容存储到TCAM 的所述存储地址中。固定偏移字符串在TCAM中存储于一个地址表项中,每个地址表的域、含义及所占用的字节数如图4所示。TCAM表项分为分别是位置域、前掩码域、字符串域和后掩码域四个域。offset、L 和W为已知量,C、K(C的最大值决定K的大小)和N为需要确定的量,它们之间存在如下关系式C = offset/(W-K-La)(式 1)N = offset % (ff-K-La)(式 2)其中除法为整数除,即除后进行下取整;%为取模符号。La为每次匹配重复送入的字节数,即匹配进行分段送入时,各字符段的重叠部分字节的宽度。位置域的值C用于匹配时确定位置是否正确,与被匹配字符串的长度和TCAM表项的宽度W有关。被匹配字符串越长,所需的C值越大,位置域所占的宽度K也越大;TCAM表项的宽度W越大,所需的C值越小,位置域所占的宽度K也越小。前掩码域与后掩码域用于屏蔽非关键词部分的比较。前掩码域的宽度N与位置值 C 一起,确定了当发生匹配时,位置必然与字符串的偏移量相同。浮动偏移字符串在CAM中存储于多个地址表项中,浮动偏移字符串S可转化多条固定字符串表项进行存储。每个表项的C值为任意,即该字节全部掩码;N的取值分别为0 至W-L-K,总共需转化为W-L-K+1条固定关键词。通过C值的任意性和N的枚举,从而达到匹配任意偏移的目的。浮动关键词存储的如图5所示。其中,位置域和掩码及字符串域中的值,括号中的数字或表达式为该域的宽度,括号前为该域的内容,“*”表示值可为任意,即全部被掩码。当L < La时,由于匹配时会重重复送入La个字节,最后几个表项可略去,转化为 W-La-K+1条固定关键词即可,如图6所示。待匹配字符串处理单元103接收所述用户输入的待匹配字符串,根据每次匹配重复送入的字节数La及TCAM表项宽度W将所述待匹配字符串分为多个字符段,其中,相邻字符段的部分字符重叠。举例说明,如果为LO = 25个字节,TCAM表项宽度W = 8,每次匹配重复送入的字节数La = 3,如果假设位置域的宽度K = 1,此时可以将待匹配字符串分为每个字符段占7(W-K)个字节,因为相邻两个字符段的字符重叠3个字节,所以待匹配字符串可以分为6个字符段,分别为第0-6字节,第4-10字节,第8-14字节,第12-18字节,第 16-22字节,第20-24字节。上述6个字符串分别对应匹配顺序值0-5,第0-6字节的字符段对应的顺序值为 0,第4-10字节的字符段对应的顺序值为1,第8-14字节的字符段对应的顺序值为2,第 12-18字节的字符段对应的顺序值为3,第16-22字节的字符段对应的顺序值为4,第20-24 字节的字符段对应的顺序值为5。字符串匹配单元104将所述字符段及对应的匹配顺序值分为多次发送到所述 TCAM中进行匹配。多模式字符串与输入串的匹配分多次进行,设输入串为P,P[j]表示输入串的第j 个字节;下表列出了第0次、第1次、第2次和第i次进行匹配时送入TCAM比较的内容,如图7所示。La为每次匹配重复送入的字节数即匹配进行分段送入时,各字符段的重叠部分字节的宽度。从图7可以看出,第0次进行匹配时送入的后La个字节(即P[W-K-La]至 P[W-K-1]),在第1次进行匹配时被作为最前面La个字节再次送入了一次;第i次匹配时送入的字节数为 P[ (W-K-La)*i]至 P[ (W-K-La)*i+ (W_K_1)],其中 P[ (W-K-La)*i]至 P [ (W-K-La) * (i-1) +ff-K-1]为重复送入的字节。重复送入TCAM进行比较,是进行多模式字符串精确匹配的关键,它使得当字符串跨越TCAM的边界而无法在当前次匹配成功时,部分输入串的字符能够进入下一次的匹配, 从而在下一次比较中匹配成功。只要字符串能够在TCAM的一个表项中存储,就一定能正确匹配。因此,每次重复送入La个字节进行匹配,多模式字符串能够匹配无误的充要条件是L^ (W-K)-offset % (ff-K-La)(式 3)上式右边的最小值为La+Ι,因而这种匹配方法至少可以匹配到任意长度为La+1 以下的字符串。对固定偏移字符串,其最大长度与偏移量有关,满足(式幻即可;对浮动偏移字符串,由于offset值的任意性,长度只能为La+Ι及以下。K值决定了输入串可以送入TCAM进行比较的次数,每次送入比较的有效字节数为 (W-K-La),因此,输入串的最大长度为28kX (W-K-La)(式 4)完成匹配后,TCAM给出匹配的结果。若匹配未成功,得到的是未匹配功能的标志位;若匹配成功,可得到与输入相匹配的TCAM地址,也就是说,TCAM的地址表征匹配到了哪
一条字符串匹配。匹配结果输出单元105从所述的TCAM中获取并输出字符串匹配结果。如图8所示,匹配结果输出单元105可以包括匹配结果生成模块801及匹配信息获取模块802。匹配结果生成模块801可以根据所述多个字符段的匹配的结果生成总匹配结果; 匹配信息获取模块802可以根据总匹配结果获取匹配到的多模式字符串的标识及匹配位
直fe息。每个待匹配字符串会分成多段进入TCAM进行匹配,匹配信息获取模块802综合这些结果给出整体的匹配结果;然后根据整体的匹配结果,得到命中的模式字符串的标识并输出。匹配信息获取模块802可输出命中的位置,命中的位置值为匹配成功的次序值乘以每次送入的有效字节数(W-K-La)再加上命中表项的前掩码宽度(N)。对固定偏移字符串而言,命中位置即为该固定偏移字符串的偏移。如图9所示,该字符串匹配装置包括模式配置模块901,模式接收模块902, TCAM903,输入模块904,模式匹配模块905及输出模块906。模式接收模块902用于实现图 1中TCAM选择单元101101及字符串存储单元102的功能;模式匹配模块905用于实现图1 中待匹配字符串处理单元103,字符串匹配单元104及匹配结果输出单元105的功能。模式配置模块901接收用户的多模式字符串及字符串的配置信息,并将这些信息传递到模式接收模块902中。模式配置模块901与用户接口,通常以软件方式实现。模式配置模块901通常也为用户提供查看TCAM中的当前字符串模式的功能。模式接收模块902对模式配置模块901从用户处获得的模式串(包括多模式字符串及字符串配置信息)进行处理,并转化为TCAM可接收的地址和数据,如根据所述多模式字符串及字符串配置信息选择TCAM表项宽度、TCAM容量及TCAM工作频率符合条件的 TCAM,为固定字符串计算相应的C、N值等,以位置域的值和前掩码域表征字符串偏移且字符串域包含模式字符串内容的方式,将所述的多模式字符串存储到TCAM表项包含所述位置域、所述前掩码域、字符串域及后掩码域的所述选择的TCAM中。,如果多模式字符串为浮动偏移字符串,还需要将浮动偏移字符串化为多条固定字符串,模式接收模块902通常也可从TCAM中读取地址和数据,并将其转化为多模式字符串,以呈现给用户。TCAM903是多模式字符串的存储区和匹配区,其内存大小决定了可存储的字符串模式的最大个数,其匹配速度决定了进行多模式字符串匹配的峰值性能,其最大数据宽度决定了能匹配的字符串的最大宽度。输入模块904为各种不同的匹配应用方式,提供不同的输入接口,如网络数据匹配则提供网络数据的接入和待匹配负载的提取,关键词搜索应用则提供为被搜索内容提供输入接口 ;然后将待匹配的输入串送至模式匹配模块905。模式匹配模块905对待匹配字符串(输入串),根据每次匹配重复送入的字节数及TCAM表项宽度将所述待匹配字符串分为多个字符段(其中,相邻字符段的部分字符重叠), 并分多次将所述字符段及对应的匹配顺序值发送到所述TCAM中进行匹配;从所述的TCAM 中获取并输出字符串匹配结果;然后从TCAM获得每次匹配的结果,根据所述多个字符段的匹配的结果生成总匹配结果;匹配信息获取模块,用于根据总匹配结果获取匹配到的多模式字符串的标识及匹配位置信息;并将匹配到的多模式字符串的标识及匹配位置信息送给输出模块906。模式接收模块902、TCAM903及模式匹配模块905为整个字符串匹配装置的核心部分,该部分可以通过FPGA芯片实现,本领域技术人员可以容易想到通过除FPGA芯片以外的其他的硬件结构也可以实现,本发明不以此为限。输出模块906为各种不同的匹配应用方式,提供不同的输出接口,将匹配的结果根据具体的应用方式或用户的要求呈现给用户,如标记网络数据报文、将关键词匹配结果存为文件等。下面以用户查找固定偏移字符串ABC及EF两个字符串为例,详细说明本发明实施例。用户想要匹配字符串为ABC、EF,需要通过用户接口输入字符串ABC、EF及它们的配置信息。字符串ABC的配置信息可以包括优先级为LEVEL 1,字符串编号(字符串标识) 为1,字符串类型为固定偏移字符串,字符串偏移为0 ;字符串EF的配置信息包括优先级为LEVEL 2,字符串编号(字符串标识)为2,字符串类型为固定偏移字符串,字符串偏移为 8,总体匹配性能要求为l(ibps。这里需要说明的时,字符串配置信息中可以不包括优先级,此时可以不用事先确定字符串的优先级,而随机将字符串存储到TCAM中。模式配置模块901接收用户接口输入的字符串ABC、EF及上述的配置信息,并将字符串ABC、EF及配置信息发送给模式接收模块902。模式接收模块902接收字符串ABC、EF及它们的配置信息,根据字符串ABC、EF及字符串配置信息选择TCAM表项宽度、TCAM容量及TCAM作频率符合条件的TCAM。字符串 ABC占用3个字节,字符串EF占用2个字节,考虑到位置域的宽度,可以选择TCAM表项宽度为大于或等于4字节的TCAM。字符串ABC、EF均为固定偏移字符串,分别各占一个表项,可以选择TCAM容量包含至少两个表项的TCAM。根据Kibps匹配性能的要求,可以选择TCAM 工作频率为125MHz的TCAM。经分析可知,选择的TCAM需要满足TCAM表项宽度为大于或等于4字节,TCAM容量包含至少两个表项,TCAM工作频率为125MHz。模式接收模块902根据字符串ABC、EF的字符串类型标识可以判断二者均为固定偏移字符串,不需要字符串的转化。模式接收模块902可以设定字符串ABC的位置域的宽度Kl = 1,字符串的偏移量 offsetl = 0,根据字符串长度Ll = 3及字符串偏移offsetl = 0可以确定TCAM表项宽度 Wl = 6 (本发明不限于此),匹配重复送入的字节数Lal可以设定为2。将匹配重复送入的字节数2、所述TCAM表项宽度6、字符串宽度3、位置域的宽度1及字符串的偏移量0带入根据公式1、2,计算位置值C = 0,前掩码的宽度N = 0。模式接收模块902可以设定字符串EF的位置域的宽度K2 = 1,字符串的偏移量 offset2 = 8,根据字符串长度L2 = 2及字符串偏移offset2 = 8可以确定TCAM表项宽度 W2 = 4 (本发明不限于此),匹配重复送入的字节数La2可以设定为1。表项宽度W和重复送入的字节数La分别取Wl和W2、Lal和La2的最大值。将匹配重复送入的字节数2、所述 TCAM表项宽度6、字符串宽度2、位置域的宽度1及字符串的偏移量8带入根据公式1、2,计算位置值C = 2,前掩码的宽度N = 2。计算完成Cl、m、C2、N2后就可以得到字符串ABC、EF的所有表项信息。模式接收模块902以位置域的值和前掩码域表征字符串偏移且字符串域包含模式字符串内容的方式,将所述的多模式字符串存储到TCAM表项包含所述位置域、所述前掩码域、字符串域及后掩码域的所述选择的TCAM中。因为字符串ABC、EF及它们的配置信息中存在优先级信息,需要根据所述的字符串优先级确定字符串在TCAM中的存储地址,然后可以将所述字符串的对应表项内容存储到TCAM的所述存储地址中。用户输入模块904输入待匹配字符串,模式匹配模块905可以接收用户输入的待匹配字符串。待匹配字符串的最大长度满足LO = 28kX (W-K-La),对于ABC字符串,LO = 28 X (6-1-2) = 768(字节),对于 EF 字符串,LO = 28 X (6-1-2) = 768 (字节),因此,如果要进行字符串ABC及EF的匹配,送到TCAM进行匹配的字节最大长度为768字节。模式匹配模块905接收待匹配字符串,假设接收的待匹配字符串字节数为15,具体内容是ABCXXXXXEFXXXXX。根据前面计算出的表项宽度为6可知,需要将待匹配字符串分为字节数小于等于5的字符段,再根据前面计算,可以选择重复送入的字节数为2,所以需要将待匹配字符串分为5个字符段,分别为第0-4字节的字符段(匹配顺序值0),第3-7 字节的字符段(匹配顺序值1),第6-10字节的字符段(匹配顺序值2、,第9-13字节的字符段(匹配顺序值幻,第12-14字节的字符段(匹配顺序值4)。模式匹配模块905需要按照顺序值0-4的顺序分别将对应的字符段发送到TCAM中进行多次匹配。在TCAM中进行字符串匹配的示意图如图10,该15字节的待匹配字符串被分为5个字符段,匹配次数为5次, 每次将产生一个匹配结果。模式匹配模块905将从TCAM获取每次的匹配结果,根据5次的匹配的结果生成总匹配结果,然后根据总匹配结果获取匹配到的多模式字符串的标识及匹配位置信息。字符串ABC在第0次匹配时被匹配到,所占字节为第0-2字节,模式匹配模块905会将字符串 ABC的标识1及匹配位置信息(第0-2字节)发送到输出模块906,以展现给用户。字符串 EF在第2次匹配时被匹配到,所占字节为第2-3字节,模式匹配模块905会将字符串EF的标识2及匹配位置信息(第2-3字节)发送到输出模块906,以展现给用户。如图11所示,本发明实施例还提供一种TCAM多模式字符串匹配方法,该方法包括步骤SllOl 接收用户输入的多模式字符串及字符串配置信息,根据所述多模式字符串及字符串配置信息选择TCAM表项宽度、TCAM容量及TCAM工作频率符合条件的 TCAM0字符串配置信息包括字符串类型、字符串偏移、字符串标识、优先级及匹配性能。字符串标识可以是字符串对应的编号,以区分不同的字符串。字符串类型标识可以用来区分的类型为浮动偏移字符串还是固定偏移字符串。根据所述多模式字符串及字符串配置信息选择TCAM表项宽度、TCAM容量及TCAM 工作频率符合条件的TCAM,具体包括根据字符串长度及字符串偏移确定TCAM表项宽度;根据字符串的类型及大小确定TCAM的容量;根据匹配性能确定TCAM的工作频率。字符串长度为已知量,给定字符串偏移之后就可以确定TCAM的宽度。TCAM容量即TCAM中最多能容纳的TCAM表项的数量。匹配性能例如可以为IG/秒,如果TCAM表项宽度为8字节,此时 TCAM工作频率为125MHz。如果接收的多模式字符串中包含浮动偏移字符串,还需要先将将浮动偏移字符串转化为多条固定偏移字符串,再选择TCAM表项宽度、TCAM容量及TCAM工作频率符合条件的 TCAM。步骤S1102 以位置域的值和前掩码域表征字符串偏移且字符串域包含模式字符串内容的方式,将所述的多模式字符串存储到TCAM表项包含所述位置域、所述前掩码域、 字符串域及后掩码域的所述选择的TCAM中。本发明TCAM的每一 TCAM表项包含位置域、前掩码域、字符串域及后掩码域,位置域的值C和前掩码域可以用来表征字符串偏移,字符串域中包含模式字符串内容,采用前掩码域及后掩码域屏蔽多模式字符串中无需匹配部分。设TCAM表项的宽度、位置域的宽度、前掩码域的宽度、字符串域的宽度分别为W、K、N、L,那么后掩码域的宽度为W-L-N-K。位置域的宽度K及字符串的偏移量of f set可以设定,根据字符串长度L及字符串偏移offset可以确定TCAM表项宽度W,根据匹配重复送入的字节数、所述TCAM表项宽度 W、字符串宽度L、位置域的宽度K及字符串的偏移量offset计算位置值C及前掩码的宽度 N0如果字符串配置信息中包含优先级,可以根据所述的字符串优先级确定字符串在 TCAM中的存储地址,将所述字符串的对应表项内容存储到TCAM的所述存储地址中。步骤S1103 接收所述用户输入的待匹配字符串,根据每次匹配重复送入的字节数及TCAM表项宽度将所述待匹配字符串分为多个字符段,其中,相邻字符段的部分字符重叠。举例说明,如果为待匹配字符串字节数LO = 14,TCAM表项宽度W = 8,每次匹配重复送入的字节数La = 5,如果假设位置域的宽度K = 1,此时可以将待匹配字符串分为每个字符段占7(W-K)个字节,因为相邻两个字符段的字符重叠5个字节,所以待匹配字符串可以分为5个字符段,分别为第0-6字节,第2-8字节,第4-10字节,第6-12字节,第8_13字节。上述5个字符串分别对应匹配顺序值0-4,第0-6字节的字符段对应的顺序值为 0,第2-8字节的字符段对应的顺序值为1,第4-10字节的字符段对应的顺序值为2,第6-12 字节的字符段对应的顺序值为3,第8-13字节的字符段对应的顺序值为5。步骤S1104 将所述字符段及对应的匹配顺序值发送到所述TCAM中进行匹配。步骤S1105 从所述的TCAM中获取并输出字符串匹配结果。根据所述多个字符段的匹配的结果生成总匹配结果,根据总匹配结果获取匹配到的多模式字符串的标识及匹配位置信息。每个待匹配字符串分成多段进入TCAM进行多次匹配,产生每次的匹配结果,综合这些匹配结果给出整体的匹配结果,根据整体的匹配结果。得到命中的模式字符串的标识并输出,然后输出命中的位置,命中的位置值为匹配成功的次序值乘以每次送入的有效字节数(W-K-La)再加上命中表项的前掩码宽度(N)。对固定偏移字符串而言,命中位置即为该固定偏移字符串的偏移。最后将被匹配的字符串标识及匹配位置信息输出,以展现给用户。本发明的TCAM匹配方法,具有极高的性能,可达到与TCAM的匹配带宽相当的性能。设TCAM的匹配带宽为B,由于每次送入CAM比较的W个字节中,进行字符串比较的有效字节为W-K-La,故其匹配速度为B X (W-K-La) /W (式 5)La值越小,性能越高,但适用的多模式字符串的长度也越小;La越大,性能越低, 但多模式字符串的长度也越大。K值越小,性能越高,但适用的输入串的长度也越小;K值越大,性能越低,但适用的输入串的长度也越大。图12中给出一个匹配参数实例以说明本发明的有益效果,如图12所示,由式3可得该实例一定能匹配宽度为36个字节及以下的字符串,对于某些特殊的固定偏移,甚至能达到匹配宽度为71个字节的字符串;由式4可得该实例一定能匹配长度为9216个字节及以下的输入串;由式5可得该实例可达到每秒匹配12G比特(即每秒1500兆字节)的匹配性能。当字符串的偏移量offset和L满足式6、式7两个不等式时(其中m为非负整数)C值和N值可以使用式8及式9表示。(W-K-La) X m+ (W-K-La)彡 offset 彡(ff-K-La) X m+ (ff-K)(式 6)(W-K-La) Xm+ (ff-K-La)彡 offset+L 彡(ff-K-La) Xm+ (ff-K)(式 7)C = offset/ (ff-K-La) -I = m(式 8)N = offset % (ff-K-La) + (ff-K-La)(式 9)进行字符串的存储。与使用式3和式4进行存储相比,同样能匹配成功。但使用式8和式9会在第m次匹配时即匹配成功获得结果,而使用式3和式4存储需在第m+1次匹配才到得到结果。满足这种条件的字符串,是正好与重复送入的La个字节相匹配的字符串ο对于各种中间次数的匹配,两种方式完全相同;但对最后一次匹配,本节的优化方式可以少进行一次比较。在输入串较短匹配次数较少的情况下,可获得较大的性能提高。本发明的有益效果在于,通过本发明的TCAM多模式字符串匹配方法及装置,可使多模式字符串匹配的规模与TCAM的容量相当,匹配速度与TCAM匹配带宽相当,提高多模式字符串匹配的规模和速度。以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种TCAM多模式字符串匹配方法,其特征在于,所述的方法包括接收用户输入的多模式字符串及字符串配置信息,根据所述多模式字符串及字符串配置信息选择TCAM表项宽度、TCAM容量及TCAM工作频率符合条件的TCAM ;以位置域的值和前掩码域表征字符串偏移且字符串域包含模式字符串内容的方式,将所述的多模式字符串存储到TCAM表项包含所述位置域、所述前掩码域、字符串域及后掩码域的所述选择的TCAM中;接收所述用户输入的待匹配字符串,根据每次匹配重复送入的字节数及TCAM表项宽度将所述待匹配字符串分为多个字符段,其中,相邻字符段的部分字符重叠; 将所述字符段及对应的匹配顺序值发送到所述TCAM中进行匹配; 从所述的TCAM中获取并输出字符串匹配结果。
2.如权利要求1所述的方法,其特征在于,所述的字符串配置信息包括字符串类型、 字符串偏移、字符串标识、优先级及匹配性能。
3.如权利要求2所述的方法,其特征在于,根据所述多模式字符串及字符串配置信息选择TCAM表项宽度、TCAM容量及TCAM工作频率符合条件的TCAM,包括根据字符串长度及字符串偏移确定TCAM表项宽度; 根据字符串的类型及大小确定TCAM的容量; 根据匹配性能确定TCAM的工作频率。
4.如权利要求2所述的方法,其特征在于,将所述的多模式字符串存储到TCAM表项包含位置域、前掩码域、字符串域及后掩码域的所述选择的TCAM中,包括根据所述的字符串优先级确定字符串在TCAM中的存储地址; 将所述字符串的对应表项内容存储到TCAM的所述存储地址中。
5.如权利要求1所述的方法,其特征在于,在将所述的多模式字符串存储到TCAM表项包含位置域、前掩码域、字符串域及后掩码域的所述选择的TCAM中时,采用所述的前掩码域及后掩码域屏蔽多模式字符串中无需匹配部分。
6.如权利要求3所述的方法,其特征在于,根据所述多模式字符串及字符串配置信息选择TCAM表项宽度、TCAM容量及TCAM工作频率符合条件的TCAM之前,所述的方法还包括将所述的浮动偏移字符串转化为多条固定偏移字符串。
7.如权利要求1所述的方法,其特征在于,从所述的TCAM中获取并输出字符串匹配结果,包括根据所述多个字符段的匹配的结果生成总匹配结果;根据总匹配结果获取匹配到的多模式字符串的标识及匹配位置信息。
8.—种TCAM多模式字符串匹配装置,其特征在于,所述的装置包括TCAM选择单元,用于接收用户输入的多模式字符串及字符串配置信息,根据所述多模式字符串及字符串配置信息选择TCAM表项宽度、TCAM容量及TCAM工作频率符合条件的 TCAM ;字符串存储单元,用于以位置域的值和前掩码域表征字符串偏移且字符串域包含模式字符串内容的方式,将所述的多模式字符串存储到TCAM表项包含所述位置域、所述前掩码域、字符串域及后掩码域的所述选择的TCAM中;待匹配字符串处理单元,用于接收所述用户输入的待匹配字符串,根据每次匹配重复送入的字节数及TCAM表项宽度将所述待匹配字符串分为多个字符段,其中,相邻字符段的部分字符重叠;字符串匹配单元,用于将所述字符段及对应的匹配顺序值发送到所述TCAM中进行匹配;匹配结果输出单元,用于从所述的TCAM中获取并输出字符串匹配结果。
9.如权利要求8所述的装置,其特征在于,所述的字符串配置信息包括字符串类型、 字符串偏移、字符串标识、优先级及匹配性能。
10.如权利要求9所述的装置,其特征在于,所述的TCAM选择单元包括 表项宽度确定模块,用于根据字符串长度及字符串偏移确定TCAM表项宽度; 容量确定模块,用于根据字符串的类型及大小确定TCAM的容量;工作频率驱动模块,用于根据匹配性能确定TCAM的工作频率。
11.如权利要求9所述的装置,其特征在于,所述的字符串存储单元包括地址确定模块,用于根据所述的字符串优先级确定字符串在TCAM中的存储地址; 存储模块,用于将所述字符串的对应表项内容存储到TCAM的所述存储地址中。
12.如权利要求10所述的装置,其特征在于,所述的前掩码域及后掩码域用于屏蔽多模式字符串中无需匹配部分。
13.如权利要求10所述的装置,其特征在于,所述的TCAM选择单元还包括 字符串转化模块,用于将所述的浮动偏移字符串转化为多条固定偏移字符串。
14.如权利要求8所述的装置,其特征在于,所述的匹配结果输出单元包括 匹配结果生成模块,用于根据所述多个字符段的匹配的结果生成总匹配结果;匹配信息获取模块,用于根据总匹配结果获取匹配到的多模式字符串的标识及匹配位直fe息。
全文摘要
一种TCAM多模式字符串匹配方法及装置,该方法包括接收用户输入的多模式字符串及字符串配置信息,根据多模式字符串及字符串配置信息选择TCAM表项宽度、TCAM容量及TCAM工作频率符合条件的TCAM;以位置域的值和前掩码域表征字符串偏移且字符串域包含模式字符串内容的方式,将多模式字符串存储到TCAM中;接收所述用户输入的待匹配字符串,根据每次匹配重复送入的字节数及TCAM表项宽度将所述待匹配字符串分为多个字符段;将字符段及对应的匹配顺序值发送到TCAM中进行匹配;从TCAM中获取并输出字符串匹配结果。本发明可使多模式字符串匹配的规模与TCAM的容量相当,匹配速度与TCAM匹配带宽相当,提高多模式字符串匹配的规模和速度。
文档编号G06F17/30GK102253957SQ201110092439
公开日2011年11月23日 申请日期2011年4月13日 优先权日2011年4月13日
发明者叶军, 周志雄, 梁丽华, 汪锐, 王增丽, 赵彦博 申请人:北京恒光信息技术有限公司, 北京恒光创新科技股份有限公司, 北京恒光科技发展有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1