使用网络处理器和并行模式检测引擎检测侵入的制作方法

文档序号:7610922阅读:342来源:国知局
专利名称:使用网络处理器和并行模式检测引擎检测侵入的制作方法
技术领域
本发明一般涉及用于检测由系统组成的网络中的恶意侵入的方法和系统。
背景技术
识别一组数据中的模式(pattern)在很多领域包括语音识别、图像处理、地震数据等中都是重要的。某些图像处理器收集图像数据并随后预处理该数据以使其与基准数据相关联。其他系统例如语音识别系统是实时的,其中实时地将输入数据与基准数据相比较以识别模式。一旦模式被“识别”或与基准相匹配,则系统可输出该基准。例如,语音识别系统可输出与被处理的语音模式等价的文本。其他系统如生物系统可使用类似技术来确定分子串例例如DNA的序列。
在某些系统中,需要发现嵌入连续数据流中的模式。在非对齐的数据流中,如果实施的仅是单一的逐字节比较,则存在可能错失模式的情况。当在输入流或要检测的模式中存在重复的或嵌套重复的模式时,将发生可能错失模式的情况。包含正被寻找的序列的一基准模式(RP)被装入存储器中,在存储器中该序列的每个元素具有唯一地址。将要与输入模式(IP)的第一个元素相比较的、该RP的第一个元素的地址被装入一地址寄存器中。该地址寄存器称为“指针”。在通常情况下,可向一指针装入一或者递增(增加)或者递减(减少)的地址。该指针所指向的元素被检索出来,并与随时钟输入或装入一比较器中的输入元素(IE)进行比较。
在模式识别中,经常希望将一IP的各元素与很多RP进行比较。例如,可能希望比较从扫描一指纹得到的一IP(对于在指纹技术中定义的某些特征组合,典型地为1千字节大小)与一RP库(存档的所有扫描结果)。为快速完成工作,可将每个RP的元素并行地与IP中的元素相比较。每个RP可能有重复的子串(短模式),这些子串是嵌入该RP中的较小的模式。因为RP库可能非常大,所需的处理量可能是相当大的。希望有一种方法来减少保存这些RP所需的存储量。如果能够减少用来表示RP的数据的量,则也会减少装载和卸载RP所需的时间。并行处理也可用于每个RP和IP被装入不同的处理单元以确定匹配的场合。
生物系统中的其他模式识别处理可能需要比较一IP与所存储的大量具有重复的子串的RP。在小的并行处理单元中的处理可能受限于RP所需的存储大小。用于化学分析、生物分析等的便携式的、廉价的处理系统也会受限于快速处理大量RP所需的存储量。
模式检测或识别是当今很多应用中的瓶颈,并且软件解决方案无法达到所需的性能。希望有一种用于快速匹配模式的可扩展的硬件解决方案。还希望有一种允许多种方式(mode)的模式识别的系统。某些应用要求在输入数据流中的模式与希望的目标模式的精确匹配。在其他情况下,希望确定最长的匹配、最大字符数的匹配、或者需要各种字符包含或排除的“模糊”匹配。
侵入检测系统(IDS)提供了检测包中的肯定或很可能与恶意活动相关的字节模式的手段。IDS可运行于基于主机的系统上或者称为基于网络的系统的网络数据流上。在任一情况下,IDS寻找源自内部网络的外部或内部的攻击(任何恶意活动)并发挥着非常类似于防盗报警器的作用。这实质上是一种模式识别的任务,其中IDS分析进入的数据,同时试图检测指示已知侵入者的存在的已知模式(特征(signature))。
侵入检测产品是通过扩展用来管理来自威胁和弱点的风险的可用选项来协助保护网络免受侵入的工具。侵入检测能力可帮助公司保护其信息。当系统检测到攻击后,系统可提供关于该攻击的信息。可使用该信息来删除、记录或避免侵入包。然后技术支持调查试图发现侵入者是如何突破网络安全性的,并随后阻止未来的侵入者使用该突破方法。
恶意通信流在今天的因特网上是常见的。在高带宽时,当前的IDS的性能可能成为瓶颈。某些攻击者可能发起一高速攻击以便淹没IDS,而同时发起一低速攻击,并希望低速攻击不会引起注意。这些攻击可能是实时的、正在进行的通信流攻击。这意味着计算网络必须持续地扫描通信流,以捕获这些恶意活动。当前的IDS软件的吞吐量反比于网络负载,因而更易于受到攻击,并运行在更高的负载下。IDS软件使得能够或者进行全面检测或者进行高速检测,但不能同时获得这两者。
因此,需要一种构成这样的IDS的方法和电路,该IDS能够检测侵入,识别多种攻击,并运行在高性能网络的实时速度下。

发明内容
一种网络处理器包含一种并行模式检测引擎(PPDE),该PPDE包括大量被设计专用于模式比较和检测的处理单元(PU)。这些处理单元是高度可伸缩的,并且并行地以多种可编程方式进行模式检测,其中每一个PU并行地接收输入数据。每个PU已经接收唯一的标识(ID)数据,以及代表与输入数据流进行比较的模式的字节序列。在各PU之间的通信允许将具有希望的比较结果数据的PU的ID输出到耦合所有PU的总线结构上。当将模式数据装入PU时,设置全局配置寄存器,从而其定义了将执行的匹配的类型,以及在相邻的PU之间的所希望的级联。以这种方式,PPDE使用级联的PU组成的组来检测比使用单个PU时所可能的更大的模式,而不必诉诸于占用更多时间的迭代过程。
该PPDE是这样的一种集成电路(IC),其具有大量PU,可与其他PPDE IC级联在一起,并且可通过一输入/输出(IO)总线进行配置。根据本发明的实施例,该IDS是通过将一个或多个PPDE IC耦合到一网络处理器(NP)而构成的。使用主计算机将侵入者的已知特征装入IDS的PU中,作为要被匹配(检测)的模式。当该NP接收到网络通信流(输入数据)时,它处理数据包,并将该数据以网络数据发送给该IDS,该IDS将该输入数据与模式数据字节进行比较以寻找匹配。如果检测到匹配,则输出检测到该匹配的PU的ID,其标识出侵入者的特征。然后该NP可执行应对措施代码来消除检测到的侵入者的威胁。
可配置该IDS,从而可根据需要添加其他的PPDE IC。因为PPDE IC被设计为它们的PU在并行总线上接收输入数据,是可编程的,它们的比较结果被输出在输出总线上,并且可以被级联,所以IDS是动态可配置的,而不需要添加另外的逻辑。
以上相当粗略地概述了本发明的特征和技术优点,以便更好地理解以下对本发明的详细描述。本发明的其他特征和优点将在下文中描述,它们构成了本发明要求保护的主题。


为了更完整地理解本发明及其优点,现结合附图参照以下描述,在附图中图1是适合于实现本发明的实施例的由N个处理单元(PU)构成的并行模式检测引擎(PPDE)的结构框图;图2A-2D是可以为图1的N个处理单元(PU)中的每一个编程的4种匹配方式的框图;图3是示出本发明的PPDE的可伸缩性的各种方式的图示;图4是适合于实现本发明的实施例的采用了1500个PU的PPDE集成电路的可获得的性能结果的图表;图5是图1的PPDE中的单个PU的概略框图;图6是图1的PPDE中的单个PU的详细框图;图7是图1的PPDE中的单个PU的另一个详细框图;图8是图1的PPDE中的单个PU的一特定实现的电路图;图9是适合于实现本发明的实施例的用于匹配模式的方法步骤的流程图;图10是适于实现本发明的实施例的网络处理器(NP)的框图;图11A-11G描述了可用于本发明的实施例的各种方式的模式匹配中的操作;图12是根据本发明的实施例的侵入检测系统(IDS)的框图;图13是用于本发明的实施例的方法步骤的流程图;图14是适合于实现本发明的实施例的用于在PPDE100中级联多个PU500单元的通信电路的电路框图;以及图15是适合于实现本发明的实施例的在一PU500和两个相邻PU500单元之间的通信电路的另一个框图。
具体实施例方式
在以下描述中,提出了很多特定细节,以便提供对本发明的充分理解。然而对本领域的技术人员显然的是,可以没有这些特定细节而实施本发明。在其他一些情况下,公知的电路将以框图的形式示出,以免因不必要的细节而模糊本发明。一般来说,省略了有关定时、通信协议中的数据格式等等的细节,只要这些细节对于充分理解本发明不是必要的并且是处于相关领域的普通技术人员的技能范围内。
现在参照附图,其中所示的元件不一定是按比例显示的,并且相同或相似的元件在若干视图中都以相同的标号标示。
软件中数据流的顺序匹配目前是一种中央处理单元(CPU)密集的任务。因此很难获得高性能。模式匹配处理单元(此后称为PU)体系结构提供了高性能的匹配,因为它是一件专用于模式匹配的硬件。该PU提供了更有效的搜索(匹配),因为每个输入模式被并行地与相应的目标模式进行匹配。并行匹配之所以可能,是因为可以级联大量的PU。此外,每个PU具有这样的内建功能,其可通过纳入这样一些方式而减少所需PU的数量,这些方式允许包括通配符(目标模式中的任意字符)、多个通配符和反向操作的匹配。PU体系结构的快速模式检测能力在网络侵入检测、数据库扫描和移动设备安全性应用中是有用的。此外,使用其内建的距离计算,可实现在图像处理和生命科学应用中特别有用的“模糊”模式检测。
图5是根据本发明的实施例的一PU 500的概略框图。PU 500从标识(ID)总线501、控制总线502和输入数据总线503接收输入。来自各总线的输入被缓冲在ID寄存器509、控制寄存器505和输入数据寄存器504中。来自控制寄存器505的控制数据被耦合到控制逻辑电路508,该电路也从存储器507接收数据。来自输入数据寄存器504的输入数据被耦合到存储器507、地址电路506、屏蔽电路510。地址电路506将地址耦合到存储器507。地址电路506也耦合到屏蔽电路510和输出电路512。输出电路512接收来自ID寄存器509、地址电路506和距离电路511的数据,并有选择地将数据耦合到输出总线513。
图6是根据本发明的实施例的PU 500的另一更详细的框图。为清楚起见,重复了图5所示的方框。PU 500从标识(ID)总线501、控制总线502和输入数据总线503接收输入。各总线的输入被缓冲在ID寄存器509、控制寄存器505和输入数据寄存器504中。存储器507是一具有用于模式数据601和操作码(Opcode)602的字段的寄存器阵列。存储器507存储与输入数据相比较的模式。操作码602定义正在执行哪种类型的模式比较。操作码602和来自控制寄存器505的控制位被耦合到控制逻辑电路508。模式数据601被耦合到屏蔽电路510中的屏蔽寄存器603。屏蔽寄存器603的输出在逻辑与605中合并,以产生对距离电路511中的分量距离计算单元610的输入。类似地屏蔽寄存器603的输出在逻辑与606中合并,以形成对数据选择器604的输入。数据选择器604在来自输入寄存器504的输入数据和来自地址寄存器614的地址之间进行选择以提供对分量距离计算单元610的输入。地址寄存器614将地址耦合到存储器507。分量距离计算单元610将输出耦合到模式距离计算单元611。当前的距离计算结果被存储在距离寄存器612中。当前的距离计算结果被向回耦合到模式距离计算单元611和比较电路607。将距离寄存器612的输出与存储在最终距离寄存器中的值相比较,以产生输出GT 615。GT代表“大于”,并且当存储在最终距离寄存器中的值大于存储在距离寄存器中的值时,该信号被置为有效。存储在最终距离寄存器608中的最终距离值是由距离选择器609从输入寄存器504或距离寄存器612中的选择的。
每个PU 500具有有限的存储器来存储模式数据601。如果一模式较长,则可能合并几个PU 500单元来存储模式数据601的一个长序列。例如,如果使用两个PU 500,则当一模式检测阶段开始时,使用该两个PU 500单元中的第一个的存储器507。根据匹配方式和操作码602来修改该第一个PU 500的地址指针。当地址指针到达其最后存储器位置时,将一最后信号650发送给该两个PU 500单元中的第二个,以便使用存储在该第二个PU500中的、模式数据601的剩余部分来继续匹配过程。在此情况下,使用控制总线502中的控制数据来初始化该第二个PU 500,因此仅当该第二个PU 500接收到来自该第一个PU 500的“最后”信号650时,它才开始匹配。另外在此情况下,如果在匹配过程中指明了“重新装载”指针地址,则必须更新用于该模式数据601的长序列的该两个PU 500单元的地址指针。这是通过向适当的PU 500(其包含开始的模式601字节)发送“重新装载”信号651来完成的。因为在一模式数据序列中的字节数不是特别限定的,可能以上述方式使用多于两个PU 500单元。再次地,在控制总线502上的初始化控制数据配置PU 500以作为独立的PU或级联的PU运行。
当匹配方式是“模糊”匹配时,模式距离计算单元611计算存储在距离寄存器612中的当前距离值。如果使用了两个或更多级联在一起的PU500单元来存储用于模糊匹配的模式数据601,则通过距离信号652将距离值发送给级联中的下一个PU 500,从而可确定最终的距离值,并将其存储在级联中的最后一个PU 500的最终距离寄存器608中。
图7是电路PU 500的更多细节的框图。将待比较的模式预装入到存储器(寄存器文件)507中作为一些字节,其中每个字节存储为位[11:4]中的8位。每个操作码602存储为位[3:0]。将输入数据流750与由读地址614所确定的、存储器507中的存储的字节相比较。比较和距离单元511为该比较操作计算距离。匹配逻辑709产生被耦合到重新装载逻辑710、递增逻辑711或保持逻辑712的逻辑信号。多种类型的匹配都是可能的,如由与模式的每个字节一起存储在存储器507中的操作码602所确定的那样。取决于操作码602以及比较和距离单元511中的比较的结果,重新装载逻辑710、递增逻辑711和保持逻辑712中的逻辑确定是否保持当前读地址、递增当前读地址到下一个值、或者将该读地址重新装载为其初始值以便在该模式的开始进行比较。选择线逻辑705由启动逻辑713通过启动信号730使能。取决于重新装载逻辑710、递增逻辑711和保持逻辑712的输出逻辑状态,对多路转换器(MUX)704的输入之一,即保持723、递增722或重新装载721,将成为逻辑1,从而分别选择输入703、702或701。递增1(714)向当前读地址添加1并产生输入702。当前读地址被耦合到保持703,并且该模式中的首地址是从714耦合的。寄存器614在操作码602的控制下被装载该模式中的首地址。包重置信号751重置读地址。如果活动信号706是逻辑0,则选择线逻辑705被切断(degate),从而所有的输入保持703、递增702和重新装载701是逻辑0,并且MUX 704被切断。为允许多个PU(例如PU 500)的级联,信号730和ID 707被耦合到下一个PU。类似地,PU 500从上一个PU接收ID 752和活动信号753。启动逻辑712通过信号线790被耦合到前一个PU。
图8是PU 500的电路的更详细的电路图。图8示出了用于选择线逻辑705(与门760-762)、重新装载逻辑710(或门763和与门764-765)、递增逻辑711(或门766和与门767-769)以及保持逻辑712(与门770)的更详细的电路。反相器780-784用于产生操作码602信号的补码。
以下描述将参照图5、6、7和8,因为这些图以不同程度的细节示出了PU 500。
该快速模式匹配技术利用了每个PU 500中的本地存储器(例如寄存器阵列507),其包含一模式601和指定了各选项的标志位(操作码602)。这些选项可包括单个通配符、多个通配符、最后以及反向匹配操作。单个通配符匹配意味着如果已设置了单个通配符匹配操作码602的字节匹配输入流中的当前字节,则指示匹配。多个通配符匹配意味着如果不定数量的成序列的字节不与具有多个通配符操作码602的字节匹配,则指示匹配。反向匹配意味着如果除了具有反向操作码602的字节之外的每个字节都与输入流中的一字节匹配,则指示匹配。最后操作码602意味着该字节是一模式中的最后一个字节。
全局寄存器包括ID寄存器509、读地址寄存器614、控制寄存器505和寄存器阵列507中的寄存器。其他全局寄存器,即活动寄存器706、匹配寄存器708和选择寄存器(未示出)可用于指定PU 500为活动的、已匹配的、或已被选择来写入配置数据。一PU 500的ID是在包含多个PU的整个芯片中的唯一的ID,并用来确定在被并行地耦合到多于一个PU 500的数据流中已检测到什么模式。计数器714用来在存储的模式601中进行索引,以便与输入数据流(来自输入总线503)中的字节801进行比较,并且比较单元511中的比较器(未示出)将模式601与输入数据801一次一个字节地进行比较。
当PU 500开始在线时,所有寄存器被初始化为0(重置)。接着PU 500从输入总线503接收到唯一的ID,并将其存储在ID寄存器509中。然后PU 500等待,直到接收到其他命令。第一个命令是选择命令,其启动PU 500接收进一步的只适用于PU 500的配置命令。此时可装载全局寄存器。将包括模式数据601和相应的操作码数据602的数据字节发送给寄存器阵列507。当配置完成并且活动寄存器被置为“活动的”时,PU 500等待包重置信号802以使能读地址614。这表明一个新的输入包正被发送给PU 500以开始匹配阶段。
在匹配阶段,每个时钟周期发送给PU 500一个字节。PU 500比较存储在寄存器阵列507的当前寄存器阵列位置(由地址614确定)中的字节(601)与输入寄存器504中的输入字节,并检查用于存储在601中的模式的、当前寄存器阵列位置的字节的操作码(602)。如果存在匹配,或者该操作码602被置为单个通配符匹配,则递增指针以在地址寄存器614中选择下一个读地址。如果用于模式601中的当前字节的操作码602被设置为多个通配符,则地址寄存器614的指针保持其当前值。如果未发现匹配,则重新装载该指针。该过程继续进行,直到该指针位于模式的最后位置并且发生匹配。此时,在PU 500中匹配寄存器被置位。该过程的最后阶段是报告发现的匹配。如果匹配寄存器708置位,则输出逻辑电路512发送PU500的ID到输出总线513。
图1是并行模式检测引擎(PPDE)100集成电路(IC)体系结构的框图。PPDE 100提供了多方式模式匹配,并具有高度灵活的、大规模并行的体系结构。PPDE 100可执行精确的、模糊的、最长和最大字符的模式匹配。可得益于PPDE 100的高性能模式匹配的某些可能应用有网络侵入检测、数据库搜索图像处理、无损压缩、和实时数据处理(声音、EKG、MRI等)。PPDE 100的体系结构是高度灵活和可伸缩的,并可使其适应于特定应用。
PPDE 100是一种包括多个PU 500单元和其他逻辑功能的集成电路。输入/输出(I/O)接口101将PPDE芯片100耦合到系统功能。I/O接口101将64位的输入数据耦合到IC输入总线120,后者转而耦合到输入缓冲器103。将数据写入输入缓冲器103中由写地址102确定的位置。使用读地址108将数据从输入缓冲器103中读出。数据是使用由选择线逻辑109控制的多路转换器(MUX)115以8位字节从输入缓冲器103中读出的。输入总线503被耦合到N个PU 500单元中的每一个。I/O接口101也将控制数据耦合到全局控制107,后者将ID总线501上的24位ID数据和控制总线502上的4位控制数据发送给每个PU 500单元(PU1-PUn)。
图9是适合于实现本发明的实施例的使用一PU 500的模式匹配中的方法步骤的流程图。在步骤901中,接收到一包重置信号,其表明PU500的配置已完成,并且一新包(输入模式)正被发送到PU,并且它应当开始匹配过程。在步骤902,检索出模式的第一模式字节。在步骤903,将该第一模式字节与输入数据中的第一个字节进行比较,并进行检验以确定它们是否匹配。该第一模式字节由地址指针(指针)指明。如果在步骤903中存在匹配,则在步骤910进行检验以确定是否已为当前模式字节(在该第一遍,当前模式字节为第一模式字节)将操作码602设置为“匹配”。如果操作码602已被设置为“匹配”,则将指针增加1以移到下一个模式字节,因为这是所希望的结果。如果当前模式字节的操作码602未被设置为“匹配”,则在步骤911检验操作码602以确定它是否已被设置为“反向”。如果操作码602已被设置为“反向”,则这不是所希望的结果,并且在步骤913将指针重新装载回到第一模式字节,如果它尚未装载第一模式字节的话。然后分支回到步骤902。如果在步骤911中操作码602未被设置为“反向”,则检验操作码602以确定它是已被设置为“最后”,从而表明该模式字节是该模式中的最后一个字节。如果操作码602在步骤912未被设置为“最后”,则在步骤914指针递增,并且分支回到步骤902。如果操作码602在步骤912已被设置为“最后”,则将指针“冻结”,并分支回到步骤901,等待一个新的包重置信号来重新开始匹配处理。
如果在步骤903中模式字节和输入数据字节不匹配,则在步骤904进行检验以确定是否已为该模式字节将操作码602设置为“匹配”。如果在步骤904中确定操作码602已被设置为“匹配”,则这不是所希望的结果,并且在步骤913将指针重新装载回到第一模式字节,如果它尚未装载第一模式字节的话。然后分支回到步骤902。如果在步骤904中确定操作码602未被设置为“匹配”,则在步骤905进行检验以确定操作码602是否已被设置为“反向”。如果在步骤905中确定操作码602已被设置为“反向”,则这是所希望的结果,并且在步骤914指针递增,并且分支回到步骤902。如果在步骤905中确定操作码602未被设置为“反向”,则在步骤906进行检验以确定操作码602是否已被设置为“通配符”。如果在步骤906中确定操作码602已被设置为“通配符”,则这是所希望的结果,并且在步骤914指针递增,并且分支回到步骤902。如果在步骤906中确定操作码602未被设置为“通配符”,则在步骤907进行检验以确定操作码602是否已被设置为“多个通配符”。如果在步骤907中确定操作码602已被设置为“多个通配符”,则在步骤908中保持该指针,并且分支回到步骤902。如果在步骤907中确定操作码602未被设置为“多个通配符”,则在步骤909重新装载指针,并且分支回到902。
参照图9所讨论的操作称为正则表达式匹配。在由根据本发明的实施例的包含了多个PU 500单元的PPDE所使用的匹配方式中使用了这些正则表达式。
图11A-11G示出了当将一模式601与一输入数据流750进行比较时采取的动作。图11A示出了这样一种情形1100的3个时钟周期,在这种情形中,输入数据750是“AAC”,将其与身为“ABC”的模式数据601进行比较,其中每个模式字节具有一操作码602。动作1101是响应于操作码602而采取的。在时钟周期1,指针614开始于模式601中的字节(“A”)。输入数据750的第一个字节也是“A”。模式601中的第一字节的操作码602被设置为“匹配”。因为输入数据750的第一个字节和模式601匹配,并且操作码601被设置为“匹配”,所以指针递增而移到模式601中的第二个字节“B”。这是在一个时钟周期中发生的,因此,在第二个时钟周期(其被标记为1102,因为其对于图11A中的特定模式是有重要意义的),将输入模式750中的第二字节(“A”)与模式601中的第二字节(“B”)进行比较。模式602的第二字节的操作码602被设置为“匹配”。因为这两个字节不匹配,所以模式601中的序列“AB”不能如操作码602所要求的那样与输入数据750的前两个字节“AA”匹配。因此,在时钟周期2(1102)中,以模式602的第一个字节的地址重新装载指针614,并再次进行比较。在时钟周期3,将输入数据750中的第三个字节与模式602中的第一个字节“A”进行比较。
图11B示出了这样一种情形1110,其中输入数据流750的字节序列“CDE”确实与匹配模式602“CDE”匹配,但其中一个模式字节的操作码602被设置为“反向”,指示在输入数据750中的一字节与模式601中的一字节之间的匹配不是所希望的。在时钟周期1,输入数据750中的第一字节“C”与模式601中的“C”匹配,并且操作码602被设置为“匹配”。因为这是所希望的结果,指针614递增,并且将输入数据750的第二字节(“D”)与模式601的第二字节(“D”)进行比较,并且这两个字节确实匹配。但是,操作码602已被设置为“反向”因而匹配不是所希望的,因此在时钟周期2(1103)指针614被重新装载,并且再次选择模式601的第一字节。在时钟周期3,将输入数据750的第三字节“E”与模式601的第一字节“C”进行比较。图11B的例子是“寻找”一输入序列“C!DE”,其中“!D”表示除“D”之外的任何字符是可接受的。
图11C示出了这样一种情形1120,其中一完整的模式601被显示为具有一被设置为“最后”的操作码602。在时钟周期1,输入数据750中的第一字节“F”与模式601中的第一个字节“F”匹配,并且操作码602被设置为“匹配”。因为这是正确的结果,指针614递增。在时钟周期2,输入数据750的第二字节“G”与模式601的第二字节“G”相匹配,并且操作码602已被设置为“匹配”。再次地,指针614递增,因为这是正确的结果。在时钟周期3(1104),输入数据750的第三字节“H”与模式601的第三字节“H”匹配。在这种情况下,操作码602已被设置为“最后”,表明该第三个字节是一完整模式601(在该情况中为“FGH”)中的最后一个字节。在这种情况下,在输入数据750中检测到了模式“FGH”,并且可使一匹配信号有效。
因为还存在其他输入数据750,将指针614重新装载回到模式601的第一个字节,并且匹配过程继续“寻找”在输入数据750的随后字节中完整的模式“FGH”的其他出现。
图11D示出了这样一种情形1130,其中一模式601字节具有被设置为“反向”的操作码602,并且字节不匹配。在时钟周期1,输入数据750中的第一字节“I”与模式601中的第一个字节“I”匹配,并且操作码602被设置为“匹配”。因为这是所希望的结果,指针614递增,并且将输入数据750的第二字节“J”与模式601的第二字节“I”相比较,并且这些字节不匹配。然而,操作码602已被设置为“反向”,因而不匹配是所希望的结果;因此,在时钟周期2(1105),指针614递增,并且再次选择模式601的第三个字节“K”。在时钟周期3,将输入数据750的第三字节“K”与模式601的第三字节“K”比较。再次地,检测到匹配,并且指针614递增。图11D的例子是“寻找”一输入序列“I!JK”,其中“!J”表示除“J”之外的任何字符是可接受的。
图11E示出了这样一种情形1140,其中模式601匹配输入数据750中的一序列,并且操作码602被设置为“匹配”。在时钟周期1,指针614开始于模式601中的字节(“L”)。输入数据750中的第一字节也是“L”。模式601中的第一字节的操作码602被设置为“匹配”。因为输入数据750中的第一字节与模式601匹配,并且操作码602被设置为“匹配”,指针614递增到模式601中的第二个字节“M”。在第二个时钟周期,将输入数据750中的第二字节(“M”)与模式601中的第二字节(“M”)相比较。模式601的第二个字节“M”的操作码602已被设置为“匹配”。因为这两个字节匹配,指针614再次递增。在时钟周期3,将输入数据750中的第三字节“N”与模式601中的第三字节“N”比较。因为它们匹配,指针再次递增。图11E示出了模式601中的“LMN”与输入数据750中的序列“LMN”的部分匹配。
图11F示出了这样一种情形1150,其中没有模式匹配,并且已为模式601中的一字节设置了通配符操作码。在时钟周期1,输入数据750中的“O”与模式601中“O”匹配。因为操作码602被设置为“匹配”,指针614递增。在第二个时钟周期,模式601的第二字节“O”与输入数据750的第二字节“P”不匹配。然而,因为操作码602已被设置为“通配符”,任何字符都是可接受的,因而指针614再次递增。在时钟周期3,模式601的第三字节“Q”与输入数据750中的第三字节“Q”匹配,因而指针614递增。在这种情况下,发现了“O·Q”,其中“·”表示任何字符。
图11G示出了这样一种情形1160,其中没有模式匹配,并且模式601中的一字节具有已被设置为“多个通配符”(简单地示为“多个”)的操作码602。在时钟周期1,模式601中的第一字节“T”不与输入数据750中的第一个字节“R”匹配。然而,因为操作码602被设置为“多个”,指针614保持在其当前位置(在该情况中,为模式601的第一个字节)。在时钟周期2,模式601的第一个字节“T”不与输入数据750中的第二字节匹配。因为操作码602仍被设置为“多个”,指针614被保持在模式601的第一个字节。在时钟周期3,模式601的第一个字节“T”确实与输入数据750的第三字节匹配,因而指针614递增到模式601的第二个字节。在时钟周期4,模式601的第二个字节确实与输入数据750的第四个字节匹配,因而指针614再次递增。在时钟周期5(未示出),模式601的第三个字节与输入数据750的第五个字节匹配,并且检测到输入数据750中的模式“TUV”。
PPDE 100具有4种匹配方式精确的、最长的、最大的和模糊的。精确匹配可用于对齐或非对齐数据,并且可包含正则表达式例如单个通配符、多个通配符、反向、或包含集(inclusive set)。精确匹配方式可用于诸如网络侵入等应用中,其中线路速度匹配是关键性的,并且只需要二元的匹配或不匹配响应。
在最长匹配方式中,每个PU 500跟踪连续的匹配字节的数量,并且直到一模式包的末尾才重置。在最长匹配方式中,每个PU 500将匹配字节的数量与其ID一起输出给ID选择单元114(图1A)。然后ID选择单元114将具有最大数量的匹配字节的PU 500的ID以及该最长匹配的长度值输出给输出缓冲器105。
在最大匹配方式中,每个PU 500跟踪匹配字节的数量,并且直到一模式包的末尾才重置。在这种方式中,每个PU 500将匹配字节的数量与其ID一起输出给ID选择单元114。然后ID选择单元114将具有最大数量的匹配的PU 500的ID以及该最大数量的值输出给输出缓冲器105。
在模糊匹配方式中,每个PU 500“寻找”接近的模式,并且然后将具有最接近的匹配的PU 500的ID以及一相应的量化了该匹配的接近程度的距离值输出给ID选择单元114,后者转而将结果输出给输出缓冲器105。该距离是在输入模式和先前存储在存储器中的基准模式(RP)之间进行比较的结果。距离计算方法是基于用户可选择的准则。可使用若干准则,并且准则可使用“差异的绝对值”算符。在曼哈坦(Manhattan)距离的情况下,可将连续的初级距离相加,即dist=sum(abs(IEi-REi)),或者在最大准则的情况下,选择其中的最大值来确定最终的距离。即dist=max(abs(IEi-Rei)),其中IEi(输入元素)和REi(基准元素)分别是输入模式IP和存储的原型基准模式RP的第i个分量(变量i的变化范围为1到k)。注意“abs”是“绝对值”的通常缩写。也存在其他准则,例如诸如dist=square root(sum(IEi-REi)2等L2准则。L2准则被称为“欧几里德的”,而曼哈坦及最大准则是“非欧几里德的”准则的例子。其他欧几里德或非欧几里德准则(例如“匹配/不匹配”)是本领域的技术人员已知的。特别地,由“match(IEi,REi)”算符所表示的“匹配/非匹配”准则被广泛使用。最接近的匹配是具有最低结果的模式。模糊匹配在图像处理以及其中输入数据流具有施加于数据之上的白噪声的实时数据处理中是有用的。
图2A示出了使用根据本发明的实施例的PPDE 100的精确匹配方式200的一例子。模式203对应于标号为1-n并标识了PPDE 100中所包含n个PU 500单元的各ID号码205。输入模式201将被并行发送这n个PU 500单元中的每一个。在该方式中,PPDE 100被编程为去寻找是否在输入数据流201中存在这n个模式中的任何一个。通过查看,可以看到只有模式“4”以其精确的序列存在于所示输入数据流201的一部分中。在这种情况下,具有该精确匹配的PU 500的ID(在该情况中,该ID是“4”)将被输出(输出204)给ID选择单元114(未示出),而后者将把该值发送给输出缓冲器105(未示出)。
图2B示出了使用根据本发明的实施例的PPDE 100的最长匹配方式220的一例子。再次地,输入数据流201被并行耦合到具有标号为1-n的ID号码205的n个PU 500单元。在该方式中,PPDE 100被编程为去确定模式213中的在输入数据流201中出现的最多的连续字节。再次地,通过查看,可以看到模式“4”具有带有出现在输入数据流201中的5个连续字节“ABCDE”的最长匹配。在这种情况下,具有该最长匹配的PU 500的ID(在该情况中,该ID是“4”)将和最长匹配值“5”一起被输出(输出204)给ID选择单元114(未示出),而后者将把该值发送给输出缓冲器105(未示出)。
图2C示出了使用根据本发明的实施例的PPDE 100的最大匹配方式230的一例子。再次地,输入数据流212被并行耦合到具有标号为1-n的ID号码205的n个PU 500单元。在该方式中,PPDE 100被编程为去确定模式223中的在输入数据流212中出现的未必呈连续顺序的最大数量的字节。再次地,通过查看,可以看到模式“4”具有带有出现在输入数据流212中的5个匹配字节“ACYEF”的最大数量。在这种情况下,具有该最大数量匹配的PU 500的ID(在该情况中,该ID是“4”)将和该最大数量值“5”一起被输出(输出206)给ID选择单元114(未示出),而后者将把该值发送给输出缓冲器105(未示出)。
图2D示出了使用根据本发明的实施例的PPDE 100的模糊匹配方式240的一例子。输入数据流222被并行耦合到具有标号为1-n的ID号码205的n个PU 500单元。在该例子中,输入数据流222是模拟信号,其将被数字化,并且每个8位输入值将被并行发送给n个PU 500单元。在该方式中,PPDE 100被编程为去确定其中哪一个模式233最接近地匹配输入数据流222。再次地,通过查看,可以看到模式“4”具有最接近的匹配。在实际操作中,将使用距离电路611(未示出)来进行这种判定。在这种情况下,具有该最接近匹配的PU 500的ID(在该情况中,该ID是“4”)将和该距离值“10”一起被输出给ID选择单元114(未示出),而后者将把该值发送给输出缓冲器105(未示出)。
图3是示出了PPDE 100的可伸缩性的框图。PPDE 100的体系结构允许将多个芯片级联起来。可使用这一特征或者增加处理单元的数量,或者通过将输入数据在若干芯片之间划分而提高性能。图3示出了芯片的数量和PU 500单元的数量之间的直接相关性。方框303示出了一个PPDE 100芯片的标准性能。当沿着X轴添加PPDE 100芯片时(通过级联),性能就提高了。此外,当沿着Y轴增加每个PPDE 100芯片的PU 500单元的数量时,性能也提高了。方框301示出了通过添加4个芯片(1500个PU 500单元),处理速度提高到对于1500个模式的8Gb/sec。方框304示出了使用4个芯片来增加模式的数量,而同时保持2Gb/sec的处理速度。方框302示出了添加5组耦合起来以处理6000个模式4个芯片,从而使得系统可以10Gb/sec的速度处理6000个模式。
图4示出了PPDE 100芯片的性能表。使用.13微米CMOS技术,具有1500个PU 500单元的PPDE 100将产生8毫米(mm)×8毫米的芯片尺寸。该相应的PPDE 100将获得250MHz频率下的2Gb/sec的带宽,其中每个时钟周期处理一个8位字节。以这种速度,该PPDE 100芯片将消耗大约300毫瓦(mw)的功率,并将以每秒1.25万亿次运算的速度进行计算。该PPDE 100具有被置于等待状态的能力,在这种状态中它将消耗最少量的功率。PPDE 100可与任何I/O接口101一起使用。使用外围部件互连(PCI)协议,在I/O 100处可接收最高4Gb/sec的数据。PCI连接将具有88个I/O信号,其中64个将是进入数据,24个被保留用于控制。
网络处理器(NP)是一种可编程的CPU芯片,其已被优化用于网络和通信功能。它向网络设备商提供了现成的用于建造路由器、交换机和接入设备的远比设计定制的ASIC芯片更快的选择。网络处理器被编程为执行由设备所支持的包处理,并且预期它将在除最高端产品之外的所有产品中被广泛使用。
图10示出了适合于实现本发明的实施例的一网络处理器1000的框图。物理层设备1007具有分别耦合到中间数据存储PMM-UP 1009和PMM-DN 1008的直接存储器单元(DMU)总线1015和1014。以这种方式,数据被接收自并传送给物理层设备1007。EPC 1006分别通过连接1050和1056与入队/出队调度器(EDS)-UP 1005和EDS-DN 1004单元两者耦合(UP和DN代表数据流的方向)。EPC 1006还具有内部片上存储器1011。EPC 1006中的所选单元使用一接口连接1054通向外部世界(例如,互联网连接)。网络处理器1000还可耦合到包括SRAM和DRAM以及数据存储设备1010的外部芯片存储器1001。网络处理器1000还可包括其自身的存储器,在这种情况下所述存储器块1001将局部化于网络处理器的内部。数据是通过包存储器模块(PMM)-UP 1009和耦合到交换结构接口(switchfabric interface)1002的接口单元1012耦合到EDS-UP 1005的。接口单元1012包括串行数据存储器(SDM)、串行接口(SIF)、和数据对齐串行链路(DASL),后者是IBM的专有接口。可使用除DASL 1012之外的其他接口,并仍处于本发明的范围之内。数据通过接口单元1013而从交换结构接口1003到来,接口单元1013也包括DASL、SIF和SDM-DN。然后将数据耦合到EDS-DN 1004,后者转而又耦合到PMM-DN 1008。以这种方式,数据输入并被EPC 1006置于所希望的包协议中,并输出到物理层设备或返回到交换结构。EPC 1006包括专用处理器(Pico处理器),这些处理器可由制造商而不是最终用户编程。以这种方式,制造商可定制网络处理器1000以用于他们希望的应用,而不必诉诸于制造ASIC。EPC中的处理器引擎足够快,其操作可与定制的ASIC相比。
图1中示出的PPDE 100适合于实现本发明的实施例,并且当与一NP结合时可被配置为提供满足网络速度要求的一流的成本高效的方法,该方法具有足够的性能和可伸缩性以满足侵入检测要求。PPDE 100被设计用于识别和分类应用,这些应用当前需要超级计算机的处理能力。NP 1000被设计用于从网络读取数据和向网络写入数据,并执行快速分类和路由功能。
与现有的IDS模式匹配硬件技术相比,PPDE 100是具有适应性和高度灵活性的体系结构。PPDE 100也没有由通用处理器强加的速度限制,因为它使用其各个PU 500单元来并行地计算侵入特征的所有匹配。此外,在侵入检测中需要PPDE 100的适应能力,因为新的攻击不断被发现,并且侵入特征的列表继续看起来无止境地增长着。
PPDE 100单元提供了灵活的和大规模并行的体系结构,并且具有几乎无限的可伸缩性。PPDE 100体系结构能够以1Gb/sec或更高的速率进行处理。PPDE 100是侵入检测应用的理想解决方案。
图12是根据本发明的实现例的利用一NP(例如,NP 1000)和一个或多个PPDE的IDS 1200的方框图。通过网络连接1003将网络输入数据1201接收到网络处理器1000。存储器1001可用于存储程序、侵入特征、每个PPDE 100(1207-1210)中的每个PU 500的标识(ID)数据。PPDE输入总线1206用于将控制数据、侵入特征数据、和ID数据耦合到每个PU500单元。一旦PU 500单元已装载了ID数据和它们的侵入特征数据,则它们就准备好被使能开始逐字节地比较输入数据字节和侵入特征数据。网络输入数据1201由网络处理器1000接收,并被分析以确定包是否有效。无效包被丢弃,并且有效包被转换为与PPDE 1207-PPDE 1209兼容的格式。有效包数据也与路由数据一起作为输出数据1208发送到网络连接1002上。PPDE 1207-PPDE 1209中的PU 500单元通过级联总线1201进行通信,该级联总线允许当PU 500单元级联在一起时必需的信息交换。构成级联总线1210的电路将参照图14和图14详细描述。级联总线1210允许控制数据动态地配置PPDE 1207-1209中的PU 500单元,以用于长于单个单元所能处理的侵入者特征或者扩大可被并行的处理的侵入者特征的数量。
如果一PU 500检测到对一特定侵入特征的匹配,则它通过I/O总线1206将其ID数据输出到网络处理器(NP)1000。然后NP 1000能够在存储器1001中查找检测到的侵入者特征。存储器1001也包含与被检测到的侵入者特征相关联的任何动作代码。网络处理器1000执行动作代码,该动作代码可包括报告被检测到的侵入以及用来消除被检测到的侵入的影响的应对措施。因为网络数据是并行地耦合到大量的PU 500单元的,IDS系统1200能够以网络通信速度比较输入数据。如果识别出新的侵入者特征,则网络处理器1000接收到该新的特征,并通过连接1205将其写入存储器1001。然后将新的侵入者特征装入未使用的PU 500单元中,被一起装入的还有相应的ID数据。控制数据被耦合到PPDE 1207-1209,该控制数据根据需要配置PU 500单元,从而或者把各单元级联在一起以用于附加的特征,或者将各PU 500单元连接起来,以匹配对单个PU 500来说过大的长的侵入特征。
图13是用于本发明的实施例的方法步骤的流程图。在步骤1300,进行检验以确定网络处理器1000是否正在执行阻止其处理网络数据的任何恢复例程或代码。如果NP 1000忙,则执行等待,来等待网络处理器1000做好准备。如果没有恢复例程是活动的,则在步骤1301,NP 1000接收到任何侵入者特征和与接收到的侵入者特征相应的适用的动作代码。在步骤1302,将所接收到的侵入者特征与相应的ID数据和任何动作代码一起存储在存储器1001中。在步骤1303,将侵入者特征与相应的控制数据通过PPDE I/O总线1206一起发送给PPDE 1207-1209,以配置PPDE 1207-1209中的PU 500单元。在步骤1304,PPDE 1207-1209被使能开始并行地比较存储的侵入特征与从NP 1000传送的输入数据。在步骤1305,NP 1000接收网络输入数据1201。在步骤1306,NP 1000分析这些数据包,并选择要作为网络输出数据1208路由的数据包。然后在步骤1307,将同样的数据转换和并行传送给PPDE 1207-1209。在步骤1308,使用PPDE 1207-1209中的PU 500单元,将传送的网络输入数据与存储的侵入特征进行比较。在步骤1309,进行检验以确定是否发生了任何匹配。如果没有发生匹配,则分支回到步骤1308,在此比较继续进行。如果发生了匹配,则在步骤1310,将检测到匹配的PU 500的ID发送给NP 1000。在步骤1311,NP 1000执行与检测到的侵入特征相应的任何动作代码。在步骤1312,进行检验以确定是否可继续进行网络数据处理。如果否,则在步骤1313,分支回到步骤1300,等待任何恢复过程的完成。如果在步骤1312的检验的结果是“是”,则分支回到步骤1301,在此由NP 1000接收任何新的侵入特征。
图14是用于图12示出的级联总线1210的级联电路1401的图示。级联电路1401用于使能在PPDE 100中级联多个PU 500单元所需的通信,所述PPDE 100被用在根据本发明的实施例的IDS 1200中。控制逻辑1402通过线1413接收数据,并通过线1412发送数据,以使能与PU 1400的双向通信。级联电路1401具有耦合到控制逻辑1402的通信逻辑1406和功能逻辑1410。链路输出(Link Out)1404接收从前一个PU 500(未示出)输出的数据,并且链路输出1414将来自控制逻辑1402的数据输出到后一个PU 500(未示出)。如果使能了PU 1400和前一个PU 500之间的通信,则逻辑1被写入链接输入(Chain In)寄存器1403,后者转而使能与逻辑门1405。来自链路输出1404的数据通过与门1405被耦合到或逻辑门1416的输入,然后被耦合到链路输出1414。链路输出1414或者耦合来自链路输出1404的数据或者耦合来自控制逻辑1402的线1413的数据。如果不希望通过链路输出1404的与前一个PU 500的通信,则将逻辑0装入链接输入寄存器1403,所述逻辑0将禁止与门1405。来自前一个PU 500的数据通过到线1418的与门1405(链接输入是逻辑1)被耦合到控制逻辑。或门1416将数据耦合到线1420,其是或门1411的输入。然后或门1411的输出通过线1413将数据耦合到控制逻辑1402。类似地,来自后一个PU 500的数据通过链路输入(Link In)1417及线1415发送到或门1411的输入。再次地,或门1411的输出通过线1413将数据耦合到控制逻辑1402。如果链接输出(Chain Out)1409被装入了逻辑1,则来自后一个PU 500的数据通过与门1408被耦合到链路输入1407,其作为链路输入信号被耦合到前一个PU 500。
图15是一个PU 500和两个相邻PU 500单元之间的框图,其进一步示出了使用级联电路1401的级联双向通信和隔离。每个PU 500(1510-1530)中的级联电路的细节已参照图14进行了详细说明和描述。图15示出了PU 500单元1510和1520之间的双向通信。虽然PU 500单元1530与PU 500单元1520物理地连接,PU 500单元1520并不使用如图所示的链接输入和链接输出寄存器位的逻辑状态来向PU 500单元1530接收或发送数据。
链接输入寄存器1501被设置为逻辑0,并且链接输出寄存器1502也被设置为逻辑0。这将PU 500单元1510与任何从左边物理地耦合的PU 500单元(未示出)隔离开来。链接输入寄存器1503和链接输出寄存器1504被设置为逻辑1,这使能了PU 500单元1510和PU 500单元1520之间的双向通信。再次地,链接输入寄存器1505和链接输出寄存器1506被设置为逻辑0,这将PU 500单元1520与PU 500单元1530以及耦合到PU 500单元1530的右边的任何其他PU 500单元(未示出)隔离开来。
尽管已详细描述了本发明及其优点,应当理解在此可以进行各种改变、替换和变更,而不脱离由所附权利要求所定义的本发明的精神和范围。
权利要求
1.一种用于网络通信的快速侵入检测的方法,包括以下步骤在与网络结构(fabric)耦合的网络处理器中接收网络数据包;将路由的网络数据传送给该网络结构;以及将所选的来自该网络数据的数据耦合到并行模式检测引擎(PPDE),以便将该所选的数据并行地与存储在该PPDE中的模式数据的M个序列进行比较,并且当该模式数据的M个序列中的至少一个与该所选数据的一部分匹配时,产生匹配输出信号。
2.如权利要求1所述的方法,进一步包括以下步骤将N个侵入特征存储在该模式数据的M个序列中,并与其一起存储用于识别该N个侵入特征中的哪一个被检测到的相应的标识(ID)数据;以及存储动作代码,该动作代码指示响应于检测到该N个侵入特征中的特定一个而采取的动作。
3.如权利要求2所述的方法,进一步包括以下步骤分析该些网络数据包的有效性,借以产生有效的网络数据包,作为该所选的数据;将该所选的数据与该存储的N个侵入特征进行比较,并以网络数据速度产生模式比较信号,并且当检测到该N个侵入特征中的特定一个时,产生特定的ID数据;以及执行与该N个侵入特征中的被检测到的该特定一个相应的动作代码。
4.如权利要求3所述的方法,其中该PPDE包括输入/输出(I/O)接口,其用于将数据耦合进入或出自该PPDE;M个处理单元(PU),该M个处理单元中的每一个都具有比较电路,该比较电路用于将输入数据序列的每一个与存储在该M个PU中的每一个中的模式数据相比较,并产生比较输出,其中响应于该比较输出的逻辑状态和与该模式数据一起存储的操作码,修改该M个PU中的每一个中的选择该模式数据的地址指针;输入总线,其用于将该输入数据序列并行地耦合到该M个PU中的每一个;输出总线,其被耦合到该I/O接口,用于将输出数据发送到该I/O接口;控制电路,其被耦合到该I/O接口,并将控制数据总线上的控制数据和ID总线上的标识(ID)耦合到该M个处理单元中的每一个;以及ID选择电路,其用于响应于模式匹配信号和匹配方式数据而从标识该M个PU的ID数据中选择匹配ID,其中该匹配ID和相应于该匹配ID的匹配数据存储在暂时寄存器中作为输出数据。
5.如权利要求3所述的方法,其中该PPDE进一步包括级联电路,该级联电路被从该M个PU中的每一个耦合到该M个PU中的一个或多个相邻的PU,用于响应于所述控制数据在一个或多个由从该M个PU中选择的两个或更多相邻的PU组成的组之间有选择地耦合链接数据。
6.一种用于网络通信的快速侵入检测的系统,包括网络处理器;该网络处理器中用于从网络结构接收网络数据的电路;该网络处理器中用于将路由的网络数据传送给该网络结构的电路;以及这样的电路,其用于将该网络处理器耦合到并行模式检测引擎(PPDE),以便将来自该网络数据的所选的数据并行地与存储在该PPDE中的模式数据的M个序列进行比较,并且当该模式数据的M个序列中的至少一个与该所选数据的一部分匹配时,产生匹配输出信号。
7.如权利要求6所述的系统,进一步包括这样的电路,其用于将N个侵入特征存储在该模式数据的M个序列中,并与其一起存储用于识别该N个侵入特征中的哪一个被检测到的相应的标识(ID)数据。
8.如权利要求6所述的系统,进一步包括用于存储动作代码的电路,该动作代码指示响应于检测到该N个侵入特征中的特定一个而采取的动作。
9.如权利要求6所述的系统,进一步包括用于在该网络过程中接收来自该网络结构的网络数据包的电路;用于分析该些网络数据包的有效性,以产生有效的网络数据包的电路;用于将来自该些有效的网络数据包的网络数据传送给该PPDE的电路;这样的电路,其用于将该所选的数据与该存储的N个侵入特征进行比较,并以网络数据速度产生模式比较信号,并且当检测到该N个侵入特征中的特定一个时,产生特定的ID数据;以及用于执行与该N个侵入特征中的被检测到的该特定一个相应的动作代码的电路。
10.如权利要求9所述的系统,其中该PPDE包括输入/输出(I/O)接口,其用于将数据耦合进入或出自该PPDE;M个处理单元(PU),该M个处理单元中的每一个都具有比较电路,该比较电路用于将输入数据序列的每一个与存储在该M个PU中的每一个中的模式数据相比较,并产生比较输出,其中响应于该比较输出的逻辑状态和与该模式数据一起存储的操作码,修改该M个PU中的每一个中的选择该模式字节的地址指针;输入总线,其用于将该输入数据序列并行地耦合到该M个PU中的每一个;输出总线,其被耦合到该I/O接口,用于将输出数据发送到该I/O接口;控制电路,其被耦合到该I/O接口,并将控制数据总线上的控制数据和ID总线上的标识(ID)耦合到该M个处理单元中的每一个;以及ID选择电路,其用于响应于模式匹配信号和匹配方式数据而从标识该M个PU的ID数据中选择匹配ID,其中该匹配ID和相应于该匹配ID的匹配数据存储在暂时寄存器中作为输出数据。
11.如权利要求10所述的系统,进一步包括级联电路,该级联电路被从该M个PU中的每一个耦合到该M个PU中的一个或多个相邻的PU,用于响应于所述控制数据在一个或多个由从该M个PU中选择的两个或更多相邻的PU组成的组之间有选择地耦合链接数据。
12.如权利要求11所述的系统,其中该PPDE进一步包括输入缓冲器,该输入缓冲器耦合到该I/O接口上,以便接收和在一写地址上写入输入数据作为并行数据。
13.如权利要求12所述的系统,其中该PPDE进一步包括被耦合到该输入总线和该输入缓冲器上的多路转换器,用于顺序地将来自该输入缓冲器数据的单个数据耦合到该输入总线上,其中使用读地址选择并行数据。
14.如权利要求13所述的系统,其中该PPDE进一步包括耦合到该输出总线和暂时寄存器的输出缓冲器,该暂时寄存器接收输出数据并在一写地址上向该输出缓冲器写输出数据,该输出缓冲器相应于一读地址将输出数据耦合到该输出总线上。
15.如权利要求10所述的系统,其中该M个PU中的每一个具有ID寄存器,用于存储从该控制电路发送的唯一ID。
16.如权利要求10所述的系统,其中该M个PU中的每一个具有控制寄存器,用于存储所述匹配方式数据,其中所述匹配方式数据确定用于产生该匹配信号和该匹配数据的标准。
17.如权利要求10所述的系统,其中该M个PU中的每一个具有存储器寄存器阵列,用于存储模式数据的序列以及相应的操作码,该操作码由地址寄存器寻址,该地址寄存器由所述地址指针索引。
18.如权利要求11所述的系统,其中所述级联电路使能两个或更多PU的存储的模式链接在一起,作为使用该链接数据的单个模式。
19.如权利要求18所述的系统,其中该链接数据阻止索引一个PU的指针,直到与该级联电路耦合的一相邻PU已比较了最后模式数据与输入数据。
20.如权利要求10所述的系统,其中在该M个PU中的每一个中的比较电路在同一个时钟信号周期里完成输入数据与所选模式数据的比较并且产生比较输出并且修改所述地址指针。
21.一种侵入检测系统,包括网络处理器,其具有到网络结构的输入连接,以及到该网络结构的输出连接;以及与该网络处理器耦合的并行模式检测引擎(PPDE),该PPDE用于并行地比较来自该网络数据的所选数据与相应于存储在该PPDE中的M个侵入特征的侵入特征数据的M个序列,并且当在该网络数据中检测到该M个侵入特征之一时产生匹配输出信号,其中该网络处理器接收网络输入数据,处理该网络输入数据以便作为有效的网络输出数据传送,以及将该有效的网络输出数据耦合到该PPDE,以便在该有效的网络输出数据中进行实时的侵入模式检测。
全文摘要
一种侵入检测系统(IDS)包括一网络处理器(NP),该NP耦合到用于存储程序和数据的一存储器单元。该NP也耦合到一个或多个并行模式检测引擎(PPDE),所述PPDE提供了在输入数据流中进行的高速并行模式检测。每个PPDE包括很多处理单元(PU),每个PU被设计为将侵入特征作为数据序列与所选的操作码一起存储。该些PU具有用于选择模式识别方式的配置寄存器。每个PU在每个时钟周期比较一个字节。如果来自输入模式的字节的一序列匹配一存储的模式,则将检测到该模式的PU的标识与任何适用的比较数据输出。通过在很多并行的PU中存储侵入特征,该IDS可以NP处理速度处理网络数据。可以将各PU级联以提高对侵入的覆盖范围或检测长的侵入特征。
文档编号H04L9/00GK1642112SQ20051000183
公开日2005年7月20日 申请日期2005年1月13日 优先权日2004年1月14日
发明者M·A·布兰格, C·D·杰弗里斯, C·M·基纳德, K·A·克拉夫采, R·K·萨比基, A·G·赛义迪, J·M·斯莱菲尔德, P·R·坦霍夫 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1