用于数据流的模式匹配方法和装置的制作方法

文档序号:7706774阅读:102来源:国知局
专利名称:用于数据流的模式匹配方法和装置的制作方法
技术领域
本发明涉及一种用于数据流的模式匹配(FPM)方法和装置。
背景技术
作为一项新型的防火墙技术,深度包检测(DPI)技术已被广泛应用于入侵检测/ 防御系统(IDS/IPS)、阻止垃圾邮件/防病毒、防止数据泄漏、内容过滤等领域。深度包检测 技术深入地检查通过防火墙的每个数据包及其有效载荷,其中的DPI引擎基于指纹匹配、 启发式技术、异常检测、以及统计学分析等技术的规则集来决定如何处理数据包。为了检测 数据流中的每个数据包例如是否具有攻击特征,在DPI引擎中普遍采用了模式匹配/特征 搜索技术,对数据流中的每个可疑字节进行比较。然而现有的模式匹配算法所需的计算量 和通信量均非常巨大。通常,DPI应用针对包含大量模式的模式集需要有大量网络传输量 与其相适配,而且所需的计算能力与被监控的网络接口的线速成正比(因为DPI不仅检测 包头,而且还检测有效载荷),这使得DPI难以应付数千兆甚至万兆比特的线速和庞大模式 集。由于模式匹配算法对CPU处理速度有较高的要求,而微电子技术的发展已接近它 的极限,可能很快会出现“存储墙(memory wall) ”问题,即存储速度制约了处理速度,因此 采用并行(parallelism)算法可能是开发针对高性能网络入侵检测系统(NIDS)的可扩展 的模式匹配引擎(PM引擎)的唯一出路。目前已经提出了一些并行执行的模式匹配算法。 目前,TCAM(三态内容寻址存储器)芯片尤其适合用作并行处理的模式匹配引擎,从而实 现对流模式匹配的硬件加速。TCAM技术的优点的是查找速度快、功耗低,并且已经得到了 CiSC0、3C0m等设备供应商的广泛支持。因此,有必要提供执行效率高、即可以实现高效率并 行流水线作业的解决方案。

发明内容
本发明旨在提供一种效率更高的流模式匹配方法和装置,其中通过利用互斥的模 式子集来完成流水线式的并行模式匹配。为此,本发明一方面提供了一种用于数据流的模式匹配方法,该方法包括以下步 骤将输入的数据流分割成多个片段,并将这些片段分别分配给多个模式匹配引擎中的一 个,其中每个模式匹配引擎存储多个在给定检测窗口长度下互斥的模式子集中的一个;以 及所述多个模式匹配引擎中的任意一个模式匹配引擎根据其中存储的模式子集对所分配 的片段进行模式匹配对比,并在该片段与该任意一个模式匹配引擎存储的模式子集匹配命 中的情况下将该片段输出。为了实现流水线式处理,可选地,当某个模式匹配引擎发现分配给它的片段不能 与相应的模式子集相匹配时,将该片段送至另一个模式匹配引擎继续进行对比;并且当某 个片段已经被所有的模式匹配引擎检查过之后均没有发现匹配时,报告该片段没有发生匹 配命中,结束对该片段的检查。
为了无误地对各数据片段进行匹配检测,输入的数据流被分割成长度不小于检测 窗口长度的片段,最好是片段的长度等于检测窗口长度。可选的是,在将数据流分成多个片 段时,使得需要对比的模式不跨越至少两个片段的分割点。为此,可以按照需要对比的目标 模式的“反模式(negative pattern) ”来确定数据流上的分割点,在该分割点处分割片段, 其中所述反模式无论加上任何后缀和/或前缀都不会构成所述目标模式。根据本发明,所述多个互斥的模式子集可以是通过对包含多个模式的模式集进行 划分而得到的。可选的是,在将一个模式集划分成互斥的模式子集时,首先将该模式集划分 成尽可能多的互斥模式子集,然后再将较小的模式子集进行合并,以实现模式子集大小的 均衡。本发明另一方面还提供了一种用于深度包检测的流模式匹配装置,包括多个模 式匹配引擎,其中每个模式匹配引擎存储多个在给定检测窗口长度下互斥的模式子集中的 一个;流分割及分配单元,用于将输入的数据流分割成多个片段,并将这些片段分别分配给 所述模式匹配引擎,其中所述多个模式匹配引擎中的任意一个模式匹配引擎根据其中存储 的模式子集对所分配的片段进行模式匹配对比,并在该片段与该任意一个模式匹配引擎存 储的模式子集匹配命中的情况下将该片段输出。该流模式匹配装置相应地执行根据本发明 的上述方法的各步骤。由于当将一个大的模式集划分成若干个互斥的子集时,针对一个数据包片段可能 不需要检查所有的子集,因而本发明利用了模式子集的互斥性减少了 PM引擎的查找次数, 使流水线处理成为可能,从而大大提高了并行PM引擎的工作效率。通过这种基于“互斥”模 式子集的并行模式匹配,无需采用冗余存储器来扩展存储空间。


图1示出了根据本发明执行并行流模式匹配的装置的示例性示意图;图2示出了根据互斥原理对模式集进行划分的一种示例性算法;以及图3示出了根据本发明所述方法对一个数据流进行模式匹配的实例。
具体实施例方式发明人通过研究发现在给定的检测窗口长度下,一个包含许多模式的大的模式 集总是能够被划分成若干个彼此“互斥”的子集,从而可以由多个并行的PM引擎分别基于 这些互斥的子集对数据流片段进行处理,以实现高效的流水线作业,大大提高匹配速度。在这里,模式之间的“互斥(exclusive) ”关系是指同一个数据片段不能同时与两 个模式发生匹配。而互斥的模式子集是指这样的情况当一个模式子集SA中的任一模式PA 与另一模式子集SB中的任一模式PB均互斥时,则认为这两个模式子集SA和SB是“互斥” 的。发明人注意到当检测窗口的长度w给定后,某些模式在任何情况下(不管输入数 据流是什么,也不管模式是以什么样的方式存储的)均能与其他模式形成互斥的关系。例 如,假定检测窗口的长度为w = 7个字节,模式P1为“ABCD”,模式P2为“wxyz”。显然,无 论输入的字符串是什么,以及这两个模式是如何存储在TCAM中的(例如以“? AB⑶??”或 “AB⑶??? ”的形式存储,其中“? ”表示通配符),这两个模式总是互斥的。因为能够同时和
6模式PI、P2相匹配的字符串必须要大于或等于4+4 = 8个字节,总是超过7字节的检测窗 口长度。对于两个模式P1和P2来说,它们的最小合并长度(MCL)可以用函数MCL(P1,P2) 来表示,这个最小合并长度等于能够同时包含PI和P2作为其子串的模式的最小长度。在 上面的例子中,模式P1和P2分别包含四个字节,而且它们本身是互斥的,因此其最小合并 长度就是4+4 = 8个字节。对于例如模式P3 = "ABC",模式P4 = “CAB”的情况,其最小合 并长度MCL (P1,P2) = 4,在检测窗口长度为7的情况下,这两个模式P3和P4就并非是互斥 的;而当检测窗口长度为3时,P3和P4就是互斥的了。也就是说,当且仅当最小合并长度 MCL(PA,PB)大于检测窗口长度w时,则这两个模式PA和PB在检测窗口长度w下总是“互 斥”的。图1示出了根据本发明执行并行流模式匹配的装置的示意图。首先,在对进入流 模式匹配装置1的例如网络数据(数据包)进行匹配检测之前,像通常的入侵检测系统所 做的那样,在流缓冲器中将这些到来的数据重新组装成连续的数据流。为了对组装好的数 据流进行流水线式的并行匹配,由流分割及分配单元101将数据流分割成若干个小的片 段,以便在各模式匹配引擎PM1,PM2,. . .,PMk中分别进行模式匹配对比。将准备好的数据流分割成小的片段是为了小粒度实现并行处理。为了无误地对 各数据片段进行匹配检测,对数据流进行分割得到的各个数据片段的长度不应小于每个PM 引擎的检测窗口长度。为了实现最优的系统运算效率,充分利用并行处理的优点,数据片段 的长度最好等于检测窗口的长度《,这样使得各PM引擎的工作负荷更为均衡。一种分割数 据流的方案是,按照数据片段的长度要求,从数据流中依次取出该长度的数据片段。例如, 数据流为abcdefg,数据片段的长度要求为5,则分割出的数据片段为abCde、bCdef、Cdefg。作为替换地,可以采用另一种数据流分割方案。根据该分割方案,按照需要对比的 目标模式不跨越至少两个片段的分割点的原则来分割数据流。为此,可以按照需要对比的 目标模式的“反模式”来确定数据流上的分割点,在该分割点处分割片段,其中所述反模式 无论加上任何后缀和/或前缀都不会构成所述目标模式的子集。这种优选的数据流分割方 案同样也适用于本发明,其能够实现更好的负荷平衡,并有利于减少执行模式匹配的次数。在执行匹配之前,由图1中的互斥子集划分单元102根据给定的检测窗口长度w 和各匹配模式的最小合并长度,将一个包含许多模式大的模式集划分成多个“互斥”的模式 子集SSi,ss2,...,ssk,即任一模式子集内包含的各模式与另一模式子集内包含的各模式均 互斥。这种根据互斥性对模式集的划分在实际情况下总是能够实现的,而且有许多不同 的划分方案(例如采用穷举法),只要满足任一模式子集内包含的各模式与另一模式子集 内包含的各模式之间的最小合并长度MCL均大于检测窗口长度w的条件即可,其区别仅在 于计算量的大小。之后,所得到的每个互斥子集SSi,SS2,. . .,SSk被分别分配给一个相应的 模式匹配引擎PM1,PM2,. . .,PMk,在实际应用中,可以将各互斥子集分别存储到与子集数目 相同的片上TCAM中。接着,流分割及分配单元101将所得到的各个数据片段尽量按照负载 均衡的原则分配给各个PM引擎来处理,与存储在该PM引擎内的模式子集进行对比。如果最初大的模式集中所包含的模式长度超过了 TCAM所支持的检测窗口长度, 则可以预先按照TCAM的支持位数将该较长的模式分成多个较短的模式,使其长度不超过
7检测窗口长度,然后再将所得到的较短的模式按照互斥原则划分成模式子集。例如,假设一 个较长的模式为“AB⑶EF”,为了装入到支持5字节,即检测窗口长度为5字节的TCAM中,可 以将该模式划分成“AB⑶E”和“B⑶EF”两个5字节长的模式。在采用一个包含了 1993个模式的典型模式集完成的仿真实验中,采用四个PM引 擎,即所要得到的模式子集为四个。当检测窗口长度10字节时,首先将1993个模式分 成4369个较短的模式,使其适应检测窗口长度,然后再按照互斥原则将这些模式分成四个 互斥的模式子集,每个模式子集中分别包含1088 1105个模式,将其分配给四个PM引擎 执行匹配,此时能够实现各PM引擎的大致均衡的工作负荷。当w= 12字节时,1993个模式 被分成3730个较短的模式,所得到的四个互斥模式子集中分别包含930 939个模式,此 时仍能实现PM引擎的大致均衡的工作负荷。但当w = 16字节时,1993个模式被分成3099 个较短的模式,最后得到的四个互斥模式子集中分别包含636 1207个模式,此时各PM引 擎的工作负荷就不能再保持均衡了。因此建议在实际应用中适当地选择TCAM所支持的检 测窗口长度,以实现较好的负荷均衡效果,这可以根据实际规则集的情况加以调整。另外,需要注意的是,图1中的互斥子集划分单元102对于模式匹配而言仅仅是可 选的元件,因为这种划分可以离线地完成,从而预先在各模式匹配引擎中设定互斥的模式 子集。如上所述,检测窗口长度可能会对PM引擎的工作负荷的均衡情况造成很大的影响, 而检测窗口长度又以TCAM所支持的字节数为上限。另一方面,所要得到的模式子集的数目 也对模式子集的划分情况有很大影响,而模式子集的数目取决于所采用的TCAM的数量。进 一步,TCAM的数量和所支持的字节数又取决于硬件设计的方便和成本因素。因此,优选地, 在给定模式集的情况下,离线地针对不同的模式子集数目和检测窗口长度进行多次实验, 从而划分出既满足硬件设计方便和成本因素,又使得PM引擎的工作负荷尽可能均衡的互 斥子集划分。由于各PM引擎中存储的模式子集均为互斥的,因而当某一个PM引擎发现了分配 给它的数据片段与存储在该PM引擎中的模式子集相匹配时,不需要再由其他PM引擎进行 检查,可以直接报告该片段发生了匹配命中并输出该片段用于后续处理,并将下一个需要 检查的片段分配给这个PM引擎继续进行处理,从而充分利用存储器资源。所述后续处理 例如是根据所发生的匹配命中情况与已知的规则集、如病毒特征库进行对比,这与通常的 IDS/IPS等应用情况的后续处理相同,这里不再赘述。如果在模式集分割时,将某较长的模式划分成了若干较短的模式,由于匹配模式 不一定匹配模式,因此可以在后续处理中进一步检查该数据片段是否进一步匹配该模式。 在上面的例子中,一个较长的模式“AB⑶EF”被划分成“AB⑶E”和“B⑶EF”两个较短的模式。 匹配“AB⑶E”这一较短模式的数据片段在后续处理中被进一步检查是否匹配“AB⑶EF”这 一较长的模式。否则,如果在该PM引擎中没有发生针对该数据片段的匹配命中,而且还有其他的 PM引擎没有对该片段进行检测,则该片段由流分割及分配单元101重新分配给下一个PM引 擎执行匹配对比。这一过程顺序地重复执行,直至在某一 PM引擎中发现了匹配命中或者在 所有PM引擎中均未发现匹配命中。可选地,为了实现上述流水线式的处理,所述流分割及分配单元101可以在每个 片段上附上一个指示向量,模式匹配引擎在检查过一个片段后,该片段的指示向量可以被修改,从而指示该片段已被哪个模式匹配引擎检查过。例如,在将数据流分割成多个较短的 片段后可以同时在每个片段上附上一个k比特的指示向量(k表示PM引擎的个数),其初始 的所有比特例如均被设为“0”。当一个数据片段被某一个PM引擎检测之后,其指示向量中 的对应比特被置为“1”。当某一片段已经被所有的PM引擎检查过之后(例如所述指示向量中的所有比特 均已被置为“ 1”),均没有发现匹配命中,则报告该片段是“干净”的,不包含可疑数据内容, 从而不再对其进行检查。当然,也可以默认所述片段是“干净”的,当没有发现匹配命中时 就不需要特意进行报告。本领域技术人员可以理解,参照图1所示的装置进行的描述实际上对应于以下流 程将输入的数据流分割成多个片段,并将这些片段分别分配给多个模式匹配引擎中的一 个,其中每个模式匹配引擎存储多个在给定检测窗口长度下互斥的模式子集中的一个;以 及由所述模式匹配引擎根据其中存储的模式子集对所分配的片段分别进行模式匹配对比, 并在匹配命中的情况下将该片段输出进行后续处理。由于在给定窗口下将一个模式集划分成多个互斥的模式子集总是能够实现的,因 此有许多不同的划分方案。图2给出了根据互斥原理对模式集进行划分的一种示例性算 法,它试图以合理的计算量实现互斥子集的划分。该算法的运算复杂度可以用0(N2)来表 示,其中的N代表模式集的大小,即随着模式集的增大,该算法的计算量成平方增加。该算 法的主要思想是首先将包含多个模式的模式集划分成尽可能多的互斥模式子集,此时无 需考虑各子集的均衡情况,然后再将较小的模式子集进行合并,以实现模式子集大小的均 衡。例如,对于一个包含N个模式P2,...,&的模式集(假设模式集中所有的模式P” P2,. . .,PN的长度都不超过检测窗口长度w,否则还要如上所述将较大的模式划分成较短的 模式,以限制在检测窗口长度w以内),最初可以设置对应于模式数目的N个空的模式子集 SSp SS2,SSN,然后按照图2所示流程逐个模式地进行比较和合并。如图2的流程图所示,在步骤S201中,首先从尚未划分到已有模式子集中的模式 中拣出一个模式作为当前模式,如P」。然后在步骤S202中,计算在给定的检测窗口长度w 下,所拣出的当前模式Pj与已有模式子集SSn SS2,...,最小合并长度(MCL)。这里 所谓一个模式与一个模式子集的MCL指的是该模式与该模式子集中各模式的最小合并长 度的最小值。接着在步骤S203中,判断该模式Pj与各子集的MCL是否都大于检测窗口长 度《,如果是的话,相当于该模式与已划分到已有模式子集中的各模式的MCL均大于检测窗 口长度《,则认为这个当前模式Pj与已有模式子集中的所有模式都是互斥的,流程进行到步 骤S204,即将P」本身作为一个新的互斥模式子集SS」。否则,如果在步骤S203中发现该当 前模式h与至少一个模式子集(例如SSm、SSn)的MCL小于检测窗口长度w,则流程进行到 S205。在S205,将当前模式Pj连同所有与当前模式Pj的MCL小于检测窗口长度的模式子集 一起作为一个新的模式子集。具体而言,如果发现存在与当前模式h的MCL小于检测窗口 长度w的多个模式子集SSm、SSn,则将这些模式子集SSm、SSn合并成一个新的模式子集SSj, 并将该当前模式P」划分到这个新的模式子集SS」中;如果只发现一个已有模式子集SSm与 当前模式P」的MCL小于检测窗口长度w,则可以直接将当前模式P」划分到该模式子集SSm 中。然后,在步骤S206中判断该当前模式?」是否是最后一个模式。如果不是,流程返回到 步骤S201,从尚未划分到模式子集中的模式中拣出下一个模式作为当前模式,重复执行上述步骤。如果在步骤S206发现该当前模式已经是最后一个模式,即所有的模式都已经被划 分完毕,则得到了若干个互斥的子集。然而,这些子集的大小可能是非常不均衡的。因而, 在步骤S207利用已知的例如针对“背包”问题的“贪婪算法(greedyalgorithm) ”对一些较 小的子集进行合并,从而使得子集的大小变得更加均衡。例如,在子集SSn SS2*SS3彼此 互斥的情况下,将SS2和SS3合并后得到的子集肯定也是与SSi互斥的,因此能够确保互斥 子集划分的正确性。当然,图2所示的流程仅仅是作为示例,也可以采用其他算法将模式集 划分成若干互斥子集。图3中示出了根据本发明所述方法对一个数据流进行模式匹配的一个实际的例 子。这里假定需要查找的模式集为{AB⑶,DEre,XYYZ,XYZZ,1234,4321},在要检测的数据片 段不超过7个字节时,很显然其中的三个子集{AB⑶,DETO}、{XYYZ,XYZZ}和{1234,4321} 是彼此互斥的。由图3中可见,原本存储了 6个模式的模式匹配引擎被三个较小的模式匹 配引擎(TCAM)PMl、PM2、PM3所代替,每个PM引擎中存储2个模式,在任意时刻都由这三个 PM引擎同时对三个数据片段分别进行处理。从图3中可以看到,假设要检查的输入数据流由一个长字符串“AB⑶EFSAB⑶El^i 2C1234ABCDE1MBCDE33. 123456. ” 组成,其中的 “GA”、“21”、“4A” 和 “3A” 等可以被认 为是该目标模式集的“反模式”,即它们无论加上任何后缀和/或前缀都不会构成要对比的 目标模式的子集。将这些“反模式”作为分割点,将输入数据流分割成多个片段,如S1 = “ABCDEFG”,S2 = “ABCDE12”,S3 = “12C1234”,S4 = “ABCDE13”,S5 = “ABCDE33”, ,Sn =“123456”,等等。如图3所示,在第一个阶段,片段SI、S2和S3被分别分配给三个模式匹配引擎 PMUPM2和PM3。在执行模式匹配时,发现S1和S3与相应的模式匹配引擎中所存储的模式 子集发生了匹配命中,因而在后续阶段中,S1和S3完成了它们在该系统中的匹配任务(即 不需要再对其做进一步的匹配对比),而S2仍然要由其它的模式匹配引擎继续检查。在第 二个阶段,S2被分配给第一个模式匹配引擎PM1,并将后面的两个新的片段S4和S5分别分 配给第二和第三个模式匹配引擎PM2和PM3。这样,该过程对于整个数据流依次连续地执 行。下面对本发明所述并行模式匹配方案的性能进行分析假定发生匹配命中的概率是x%,并且假定使用了 y个TCAM芯片作为模式匹配引 擎,每个TCAM芯片处理一个互斥子集。对于可能发生匹配命中的片段(可疑片段),其需要遍历的TCAM的数目的期望值 为y/2 ;而对于没有匹配命中可能的片段,该期望值为y,即需要由所有TCAM芯片检查一遍。 因此能够节省的TCAM匹配速率参照下式
_0] ! {yf2)xx% + yx(\-x%) = x%
y2对于没有发生匹配命中的理想情况,即X%= 0,其效率和现有方法是相同的,然 而IDS应用往往考虑的是频繁出现可疑特征代码的最差情况。在这样的情况下,侵入者可 能会发起DDoS攻击,其中可疑特征代码来自大量的“僵尸机(corpse machine) ”,匹配命中 率可能会接近100%,许多实际应用都会面临这种情况。在实验中,申请人针对由MIT[1]所提供的带有DDoS攻击黑客数据包以及SNORT
10入侵检测模式集进行了模拟测试,在219,148,064字节(加上包头就是329,322,084字节) 的带有攻击特征的数据包中发生了 56,072,428次模式匹配命中,此时的匹配命中概率约 为26%,因此在这种情况下,能够节省的TCAM匹配速率达到了 13%。另外,在“网络工作量/应用分类/识别”的情况下,匹配命中率可能比IDS/IPS的 情况还要高得多,因为数据包的内容最终都应当和模式集中的一项相匹配,即匹配命中率
趋近于100%。在这种情况下,根据本发明的方案更为有利,TCAM查找的速率能够节省 大约50%。应当理解的是,上面借助图1至3详细描述的实施例仅仅是作为示例,而并非对本 发明的限制。对输入数据流的分割、模式子集的划分和负载均衡、以及流水线处理也可以采 用实现方式,只要不背离本发明采用互斥原理执行并行处理的思想。模式匹配引擎也并不 限于TCAM,也可以考虑采用其它具有并行匹配运算能力的处理器。本发明的实施方式可以通过硬件、软件、固件或者其结合来实现。本领域技术人员 应该认识到,也可以在供任何合适数据处理系统使用的信号承载介质上所设置的计算机程 序产品中体现本发明。这种信号承载介质可以是传输介质或用于机器可读信息的可记录介 质,包括磁介质、光介质或其他合适介质。可记录介质的示例包括硬盘驱动器中的磁盘或 软盘、用于光驱的光盘、磁带,以及本领域技术人员所能想到的其他介质。本领域技术人员 应该认识到,具有合适编程装置的任何通信终端都将能够执行如程序产品中体现的本发明 方法的步骤。应当注意,为了使本发明更容易理解,上面的描述省略了对于本领域的技术人员 来说是公知的、并且对于本发明的实现可能是必需的更具体的一些技术细节。提供本发明的说明书的目的是为了说明和描述,而不是用来穷举或将本发明限制 为所公开的形式。对本领域的普通技术人员而言,许多修改和变更都是显而易见的。因此,选择并描述实施方式是为了更好地解释本发明的原理及其实际应用,并使 本领域普通技术人员明白,在不脱离本发明实质的前提下,所有修改和变更均落入由权利 要求所限定的本发明的保护范围之内。
1权利要求
一种用于数据流的模式匹配方法,包括以下步骤将输入的数据流分割成多个片段,并将这些片段分别分配给多个模式匹配引擎中的一个,其中每个模式匹配引擎存储在给定检测窗口长度下互斥的多个模式子集中的一个;以及所述多个模式匹配引擎中的任意一个模式匹配引擎根据其中存储的模式子集对所分配的片段进行模式匹配对比,并在该片段与该任意一个模式匹配引擎存储的模式子集匹配命中的情况下将该片段输出。
2.如权利要求1所述的方法,其中响应于某个模式匹配引擎发现分配给它的片段不能 与该模式匹配引擎存储的模式子集匹配命中,将该片段送至另一个模式匹配引擎继续进行 模式匹配对比,其中该片段未在所述另一个模式匹配引擎中进行过模式匹配对比;并且响应于某个片段在所有的模式匹配引擎中进行模式匹配对比之后均没有匹配命中,报 告该片段没有发生匹配命中,结束对该片段的检查。
3.如权利要求2所述的方法,其中在每个片段上附上一个指示向量,用来指示该片段 被哪个模式匹配引擎进行过模式匹配对比。
4.如权利要求1所述的方法,其中在将输入的数据流分割成多个片段时,所述输入的 数据流被分割成多个长度不小于检测窗口长度的片段。
5.如权利要求4所述的方法,其中在将输入的数据流分割成多个片段时,使得需要对 比的模式不跨越两个片段之间的分割点。
6.如权利要求5所述的方法,其中按照需要对比的模式的反模式来确定数据流上的分 割点并在该分割点处分割片段,其中所述反模式无论加上任何后缀和/或前缀都不会构成 所述需要对比的模式。
7.如权利要求1至6中任一项所述的方法,进一步包括对包含多个模式的模式集进行预处理,以便将其中长度大于所述检测窗口长度的模式 划分成长度不超过所述检测窗口长度的模式;将预处理后的模式集划分成所述多个在给定检测窗口长度下互斥的模式子集。
8.如权利要求7所述的方法,其中将预处理后的模式集划分成所述多个互斥的模式子 集的步骤包括将所述模式集划分成尽可能多的互斥的模式子集;将较小的互斥的模式子集进行合并,以实现模式子集大小的均衡。
9.如权利要求8所述的方法,其中将所述模式集划分成尽可能多的互斥的模式子集的 步骤包括从尚未划分到任何一个已划分的模式子集中的模式中选出一个模式,计算该模式与已划分的各模式子集的最小合并长度,判断计算出的所有最小合并长度是否均大于给定的检测窗口长度,响应于该判断结果 为是,将该模式作为一个新的模式子集;否则,将将该模式连同所有与该模式的最小合并长 度小于检测窗口长度的模式子集一起作为一个新的模式子集,重复执行上述步骤,直至模式集中所有的模式都被划分到模式子集中,从而得到若干 个互斥的模式子集。
10.如权利要求1所述的方法,进一步包括改变检测窗口长度和期望的互斥的模式子集数目中的至少一个,对包含多个模式的模式集进行多次划分以便使所划分的互斥的模式 子集大小均衡。
11.一种用于数据流的模式匹配装置,包括多个模式匹配引擎,每个模式匹配引擎存储在给定检测窗口长度下互斥的多个模式子 集中的一个;流分割及分配单元,用于将输入的数据流分割成多个片段,并将这些片段分别分配给 所述模式匹配引擎,其中所述多个模式匹配引擎中的任意一个模式匹配引擎根据其中存储的模式子集对所分 配的片段进行模式匹配对比,并在该片段与该任意一个模式匹配引擎存储的模式子集匹配 命中的情况下将该片段输出。
12.如权利要求11所述的装置,其中当某个模式匹配引擎发现分配给它的片段不能与 该模式匹配引擎存储的模式子集匹配命中时,所述流分割及分配单元将该片段送至另一个 模式匹配引擎继续进行模式匹配对比,其中该片段未在所述另一个模式匹配引擎中进行过 模式匹配对比;并且当所述流分割及分配单元发现不存在所述另一个模式匹配引擎时,报告该片段没有发 生匹配命中,结束对该片段的检查。
13.如权利要求12所述的装置,其中所述流分割及分配单元在每个片段上附上一个指 示向量,所述模式匹配引擎在检查过一个片段后修改该片段的指示向量,从而指示该片段 被哪个模式匹配引擎进行过模式匹配对比。
14.如权利要求11所述的装置,其中所述流分割及分配单元将输入的数据流分割成多 个长度不小于检测窗口长度的片段。
15.如权利要求14所述的装置,其中所述流分割及分配单元在将输入的数据流分成多 个片段时,使得需要对比的模式不跨越两个片段之间的分割点。
16.如权利要求15所述的装置,其中所述流分割及分配单元按照需要对比的模式的反 模式来确定数据流上的分割点并在该分割点处分割片段,其中所述反模式无论加上任何后 缀和/或前缀都不会构成所述需要对比的模式。
17.如权利要求11至16中任一项所述的装置,其中还包括互斥子集划分单元,用于对 包含多个模式的模式集进行预处理以便将其中长度大于所述检测窗口长度的模式划分成 长度不超过所述检测窗口长度的模式,并且将预处理后的模式集划分成多个在所述检测窗 口长度下互斥的模式子集。
18.如权利要求17所述的装置,其中所述互斥子集划分单元首先将所述预处理后的模 式集划分成尽可能多的互斥的模式子集,然后再将较小的模式子集进行合并,以实现模式 子集大小的均衡。
19.如权利要求18所述的装置,其中所述互斥子集划分单元在将所述模式集划分成尽 可能多的互斥的模式子集时执行下述操作从尚未划分到任何一个已划分的模式子集中的模式集中选出一个模式,计算该模式与 已划分的各模式子集的最小合并长度,判断计算出的所有最小合并长度是否均大于给定的检测窗口长度,响应于该判断结果 为是,将该模式作为一个新的模式子集;否则,将该模式连同所有与该模式的最小合并长度小于检测窗口长度的模式子集一起作为一个新的模式子集,重复执行上述操作,直至模式集中所有的模式都已被划分到模式子集中,从而得到若 干个互斥的模式子集。
20.如权利要求17所述的装置,进一步包括互斥子集划分单元,用于改变检测窗口长 度和期望的互斥的模式子集数目中的至少一个,对包含多个模式的模式集进行多次划分以 便使所划分的互斥的模式子集大小均衡。
全文摘要
本发明涉及一种用于数据流的模式匹配方法和装置。通过将包含多个模式的模式集划分成多个在给定检测窗口长度下互斥的模式子集,从而在多个模式匹配引擎中分别针对这些互斥子集进行模式匹配检查,大大减少了模式匹配引擎的查找次数,从而相应地提高了系统的工作效率。
文档编号H04L9/36GK101854341SQ20091013254
公开日2010年10月6日 申请日期2009年3月31日 优先权日2009年3月31日
发明者郑凯 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1