CN1748205A - 数据包模式匹配的方法和装置 - Google Patents
数据包模式匹配的方法和装置 Download PDFInfo
- Publication number
- CN1748205A CN1748205A CNA2004800034816A CN200480003481A CN1748205A CN 1748205 A CN1748205 A CN 1748205A CN A2004800034816 A CNA2004800034816 A CN A2004800034816A CN 200480003481 A CN200480003481 A CN 200480003481A CN 1748205 A CN1748205 A CN 1748205A
- Authority
- CN
- China
- Prior art keywords
- bytes
- stream
- pattern
- look
- data stream
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/02—Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
- H04L63/0227—Filtering policies
- H04L63/0263—Rule management
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1408—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
- H04L63/1416—Event detection, e.g. attack signature detection
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99933—Query processing, i.e. searching
- Y10S707/99936—Pattern matching access
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Business, Economics & Management (AREA)
- General Business, Economics & Management (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
一种模式匹配引擎(12)以非锚定方式支持高速(等于至少每秒2.4G比特线(14)速的速度)并行模式匹配操作。优选以硬件装置实现该引擎(12)。移位寄存器(18)顺序接收数据流字节串,这些数据流字节被分成多个多字节重叠相邻流块(20)。将被搜索的库模式字节(24,25)相似地被分成存储在查找表(24)中的多字节重叠相邻表块(26)。寄存器将多个多字节重叠相邻流块(20)并行应用到查找表(24),并得到指示每个流块(20)是否与查找表存储的表块(26)中的一个匹配的返回。然后逻辑组合(30)并行查找操作的结果以进行匹配判定(34,36)。
Description
技术领域
本发明涉及模式匹配操作,特别涉及一种利用模式匹配器筛选数据包流的可疑内容的网络安全系统。
背景技术
随着企业越来越多地使用互联网管理业务,互联网也正在扩大,通过互联网传送和访问大量的机密及敏感的信息。与私人的不同,近几十年企业为管理业务而使用的专用通信网络相对没有遭受外部入侵者的危害,而由于与企业连接的互联网和网络具有开放性且容易访问,所以它们容易受到安全威胁和恶意窃听。近来,试图破坏网络安全或黑客攻击愈加频繁,企图访问该机密信息或干扰网络通信。
网络功击变得不但更普遍而且更复杂和严重,这一部分是由于有关如何进行这些攻击的工具和信息的可用性、黑客技术的提高、易受攻击的网络访问点数目的增加、以及通过互联网访问或传送的机密信息总量的增加。这些攻击包括分布式拒绝服务攻击,其中黑客利用大量的包或连接请求冲击网站,从而控制该网站并阻止合法用户访问网站。其他类型的攻击被设计成不但阻止访问网站,而且穿透其安全措施并允许黑客控制服务器、破坏该网站或窃取敏感信息。其他攻击还包括恶意窃听,其允许黑客盗用通过互联网传送的机密通信。如果机密信息落入坏人手中,就会引起对企业业务的破坏,或者至少破坏其名誉。由于拒绝服务攻击还会导致大量的费用和负面宣传。在抵御所有这些类型攻击的尝试中,企业已经增加了它们的安全预算以解决有关提高的网络易受攻击性。
入侵检测系统通常用作一种网络防护的方法。这种系统通常是被动系统,其用来监测业务流,识别业务流中可疑、威胁或危险的部分,然后当检测出这种业务流时发出警报或者报警。这种系统的问题是它们的响应能力仅限于报警。这就需要响应检测到的威胁或危险而主动管理包和业务流的能力。另一个问题是这种系统非常慢,并且不具有有效并且高效监测每秒G比特或更高范围线路速率的包流的性能。
为此在开发入侵防护系统上已做出了努力。入侵防护系统作为一种主动业务流监测系统而设计。优选地,这种系统相对于包数据流“内嵌”布置,并且可以作为用于受保护网络的基础设施的一部分而存在。利用这种结构,系统必须在作为适用于网络交换机或路由器的相同性能基准下运行。进入系统的包必须被检查,并且在几毫秒窗口的时间内被转送或被阻止。
众所周知检查包业务流的筛选操作费时,从而会延迟包业务流传输吞吐量。当将被检查的流量增加时,这种延迟关系被放大,并且入侵检测系统使包业务流通道存在潜在的瓶颈。由于使用更全面的(并且费时的)筛选操作,会进一步延迟用于处理包的吞吐量时间。
内嵌筛选处理可以采用模式匹配操作的形式。在这个操作中,将通过的包业务流与包含已知的可疑、威胁或危险包业务流的已存储模式的库作比较。如果在筛选的包业务流与库中模式条目之间发现匹配,则可以发出警报,此外匹配包业务流可以在任何损害发生前捕获。
为了使这种模式匹配操作是有效的,很重要的是该操作不会过度影响包吞吐量。换句话说,模式匹配操作不能起瓶颈作用且不可限制包流。当包流的速度随着时间增加(例如,接近或大于每秒2.4G比特)时,现存基于软件的在先技术解决方案和现存基于硬件的在先技术解决方案(例如直接存储器访问类型匹配系统)已经不能通过不能接受地限制包流来满足吞吐量的需要。由于这个原因(和其他关于所需存储器的花费和尺寸),这些在先技术模式匹配系统不再是满意的解决方案。
因此就需要一种更有效的方法进行例如包筛选的各种应用中使用的模式匹配。
发明内容
本发明提供一种以非锚定方式支持高速(等于至少每秒2.4G比特线路速率的速度)并行模式匹配的模式匹配引擎。优选地以硬件装置实现该引擎。
根据模式匹配引擎的一个实施例,移位寄存器顺序接收数据流字节串。移位寄存器将数据流字节串分成多个多字节重叠相邻流块(或子串)。将被搜索的库模式字节被分成存储在查找表中的多字节重叠相邻表块。然后将多个多字节重叠相邻流块并行应用到存储表块的查找表。然后逻辑组合并行查找操作的结果以判定数据流的一部分是否与字节模式中的一个匹配。
也可以执行辨别数据流的特征的预匹配操作。然后可使用数据流特征的结果以协助模式匹配器在考虑中减小库模式的字段。
附加预匹配操作可以重新组合数据流中无次序的包。从而使得模式匹配器可利用正确次序的包以提高匹配准确性。
另一附加预匹配操作还可解码数据流的任何编码部分,在这种方式中,仅需要以解码格式提供库模式。此外,在执行与编码和解码数据流部分相关的模式匹配操作时,可以编码和解码格式提供库模式。
多个查找表可被用来存储用于待寻找的不同类库模式的重叠相邻表字节块。不同类库模式可以包括用于每个查找表的不同长度的模式。不同类库模式还可以包括用于每个查找表的不同业务流类别的模式。
附图说明
当结合附图参考下面的详细描述时,可获得对本发明的方法和装置更完整的理解,其中:
图1是示出根据本发明实施例包业务流筛选的引擎的方框图。
图2A和图2B示出流模式如何载入移位寄存器并且被引擎处理的典型实施例。
图3A,图3B和图4示出图2B所示的技术的典型实施。
图5是示出用于图2B所示的引擎的逻辑组合器实施的方框图。
图6A和图6B示出使用图2B所示技术的包业务流筛选引擎的优选实施例。
图7示出由引擎利用以减小模式表存储器需求的机构。
图8至图11是示出根据本发明其他实施例用于包业务流筛选的引擎的方框图。
图12是本发明模式匹配引擎的优选实施的硬件功能方框图。
具体实施方式
现在参考图1,其中显示了示出根据本发明实施例包业务流筛选的方法的方框图。筛选引擎10(用在例如网络保护、入侵防护、防火墙、防病毒内容过滤等许多应用中)执行模式匹配处理技术。模式匹配器12相对于数据包流14“内嵌(in-line)”布置,从而接收数据包流14。该数据包流例如可以是具有线路速率等于且超过每秒2.4G比特的数据包流。模式匹配器12包括多单元16串联移位寄存器18,用于顺序处理接收的数据包流14。一旦寄存器18的每个单元16载有一个字节的数据包流(组成数据串的载入字节包括全部或一部分将被评估的“流模式”19),模式匹配器12就将寄存器内的多个字节的数据串分为多个重叠字节块20(“流模式字节块”)。在本发明的优选实施例中,载入寄存器18的多个字节的流14只包括所含流包的有效载荷部分。也支持全部数据流(和其中的多个流,如将描述的)的检查。然后在指定时钟周期以并行格式22将多个重叠流模式字节块20中的每一个输出。
筛选引擎10还包括模式表24,其用于存储(在包业务流中)已经预先被识别为可疑、威胁或危险的字节模式的有关信息(“表模式”25,也被称为库模式)。为了使检查数据包流是否存在这些表模式25的字节的筛选引擎10处理的等待时间最小化并使其速度最大化,表模式相似地被分为重叠字节块26(“表模式字节块”)并以查找表类型格式被存储在模式表24中。
然后将在指定时钟周期输出的重叠流模式字节块20以并行格式22应用到模式表24,在模式表24中对表模式字节块26执行相应的多个并行查找。优选以这种方式执行该查寻操作:将流模式字节块20视为被应用到作为可寻址存储器执行的模式表的一些地址。如果存储器具有一个与流模式字节块20对应的有效地址(也就是,一个表模式字节块26),则发现该地址匹配。每个比较(地址)查找的结果都是从模式表24输出的返回(也称为结果)28。如果指定的流模式字节块20与模式表24中发现的已存储表模式字节块26中的一个匹配,则查找操作返回28有关该比较的第一逻辑状态(例如,真或逻辑1),否则返回28第二逻辑状态(例如,假或逻辑0)。由于在每个时钟周期中并行进行多个这种匹配查找操作,因此对应的多个返回28提供到模式匹配器12。然后模式匹配器12对来自模式表24查找操作的返回28逻辑组合(例如,逻辑地AND和/或逻辑地OR)来确定是否在检查中的流模式19(在接收的数据包流14之中)中发现表模式25(也就是,预先被识别为可疑、威胁或危险的字节模式)匹配。在这个情况中,模式匹配器12假设(该假设不是完全地正确,下面将被描述),如果在模式表24中发现每个单独的流模式字节块20(也就是说,与表模式字节块26匹配),则流模式19自身也与表模式25中的一个匹配。
响应来自每个流块(有关串流模式19)与有关模式表24中存储的表模式25的表块之间的主动匹配的逻辑组合器30的指示32,模式匹配器12决定应当如何处理一般而言的接收的数据包流14,特别是其中在检查之中的流模式19(或串)。例如,主动匹配可以触发发出报警或者警报34。或者,由适当包过滤功能组件36在模式匹配器12中可捕获或阻止接收的数据包流14、在其中的匹配流模式19(或串)、和/或其他关联的数据包或流或串。再进一步说,由模式匹配器12发出的报警或警报34可以触发单个元件或功能组件,例如,防火墙(未示出),以在引擎10的下游位置捕获或阻止接收的数据包流14、在其中的匹配流模式19(或串)、和/或其他关联的数据包或流或串。到目前为止的另一选择,可以从数据流中分离接收的数据包流14、在其中的匹配流模式19(或串)、和/或其他关联的数据包或流或串并将它们传递以由第二处理(筛选)层进行更深入的检查。
现在来参考图2A和2B,它们说明了流模式/串(例如,流包的有效载荷部分)如何被载入移位寄存器18并由图1的系统所处理的两个实施例。假设数据包流14的格式为:
X0,X1,X2,X3,X4,X5,X6,X7,X8,X9,X10,X11,...,Xn-1,Xn,...
进一步假设表模式25的长度为P个字节。再进一步假设字节重叠为两个,从而每个表模式25将产生P-1个存储在模式表24中的关联表模式字节块26。移位寄存器18包括N个单元16。在这个结构中,在移位寄存器18之内N=P个单元16(虽然,如这里所述,但是并不需要N=P,并且事实上当P≠N时会产生某些优点)。
对于图2A中所示的实施例,X个字节的数据包流14一次一个字节地顺序移入寄存器18。换句话说,随着每个时钟周期,一个新的字节移入寄存器18并且一个旧的字节从寄存器中移出。随着每个时钟周期,模式匹配器12还产生P-1个重叠流模式字节块20,它们代表在检查之中的当前寄存器18中的流模式(或串)。
为了说明这点,设定图2A中特定时钟周期T1,其中移位寄存器18的N=P个单元16载有下面的字节(串):
X0,X1,X2,X3,X4,X5
在时钟周期T1期间,模式匹配器12将多个字节的串划分(或分割)成P-1个重叠流模式字节块20,如下:
(X0,X1),(X1,X2),(X2,X3),(X3,X4),(X4,X5)
然后将这些重叠流模式字节块20中的每一个并行22输出到模式表24,以用于与其中存储的表模式字节块26比较(查找L)。如果在模式表24中发现每个流模式字节块20,则将返回28有关每个块的第一逻辑状态,并且逻辑器30将产生有关在检查之中的流模式19的主动匹配的指示32。优选在与查找的同一时钟周期期间发出这个指示32,并且如果希望的话也可以在随后的时钟周期中发出。如果任何一个或多个的查找L未发现匹配,则将返回28一个或多个对应的第二逻辑状态,并且逻辑器30将产生有关在检查之中的流模式19的未匹配指示32。
下面,假设前进一个时间到下一时钟周期T2。随着这个前进,寄存器18中最旧的字节被移出,并且移入数据包流14中的下一个字节。在这个时间点上,移位寄存器18的N个单元16载有字节(串):
X1,X2,X3,X4,X5,X6
在时钟周期T2期间,模式匹配器12将多个字节的串划分(或分割)成P-1个重叠流模式字节块20,如下:
(X1,X2),(X2,X3),(X3,X4),(X4,X5),(X5,X6)
然后将这些重叠流模式字节块20中的每一个并行22输出到模式表24,以用于与其中存储的表模式字节块26比较(查找L)。如果在模式表24中发现每个流模式字节块20,则将返回有关每个块的第一逻辑状态,并且逻辑器30将产生有关在检查之中的流模式19的主动匹配的指示32。相反,如果任何一个或多个查找L未发现匹配,则将返回28一个或多个对应的第二逻辑状态,并且逻辑器30将产生有关在检查之中的流模式19的未匹配指示32。
当在每个时钟周期这种单个字节移位执行运转良好时,考虑可以如图2B中所示执行更有效的处理。不是将X个字节的数据包流14一次一个字节地顺序移入寄存器18,而是优选地一次移位N-1个字节(也称为一次移位多个字节的块)。换句话说,随着每个时钟周期,N-1个字节的旧块移出寄存器的同时,N-1个字节的新块移入寄存器18。以与上述同样的方式,随着每个时钟周期,模式匹配器12还产生P-1个重叠流模式字节块20。然而,由于每个时钟周期的N-1个字节的块移位和重叠的块,逻辑器30不仅必须考虑当前时钟周期的对应的P-1个返回28,而且还要考虑以前时钟周期的一个或多个返回28,以进行匹配判定。为了协助该操作,模式匹配器12包括一历史存储器38,其临时保存以前时钟周期的返回28以用于作为当前时钟周期期间的返回28’。然后,逻辑组合被选择的一个返回28与被选择的一个返回28’,以进行有关该时钟周期的匹配判定。为了说明该块移位,该时钟周期匹配判定实际上是在不同移位位置上进行的多个单独匹配判定的组合结果。这里将更详细地解释这个概念。
为了说明该块移位操作,考虑图2B中某个时钟周期T1,其中移位寄存器18的N=P个单元16载有下面的字节(串):
X5,X6,X7,X8,X9,X10
在时钟周期T1期间,模式匹配器12将多个字节的串划分(或分割)成P-1个重叠流模式字节块20,如下:
(X5,X6),(X6,X7),(X7,X8),(X8,X9),(X9,X10)
然后将这些重叠流模式字节块20中的每一个并行22输出到模式表24,以用于与其中存储的表模式字节块26比较(查找L)。如果在模式表24中发现每个流模式字节块20,则将返回28有关每个块的第一逻辑状态。
然而,必须记住,由于在前一时钟周期T0期间的块移位,移位寄存器18的N个单元16载有下面的流模式:
X0,X1,X2,X3,X4,X5
因此只有字节X5在相邻时钟周期中执行的匹配操作之间被共享。由于P个字节表模式、两个字节重叠和N-1个字节块移位,所以逻辑组合器30需要访问有关下面重叠流模式字节块20的来自时钟周期T0的返回28:
(X2,X3),(X3,X4),(X4,X5)
以在每个移位位置上进行必需的匹配判定。因此从时钟周期T0就在历史存储器38中保存这些返回28,然后在时钟周期T1中作为再用的返回28’与当前组返回28一起被提供。
在这个执行中选择性地使用返回28和28’以进行匹配判定。由于N-1个字节移位,逻辑组合器30必须查找跨越多个字节移位的多个位置上的模式匹配。因此,对于每个位置,逻辑器30检验是否在模式表24中发现那个移位位置发出的流模式字节块20(如仅与当前时钟周期返回28的某几个以及前一时钟周期的历史返回28’的某几个有关的相邻第一逻辑状态所指示)。如果那些相邻返回28和28’为真,则逻辑器30将发现在那个移位位置上的匹配,并在该时钟周期产生有关在检查之中的流模式19的主动匹配的指示32。优选在与查找的同一时钟周期期间发出该指示32,但是如果需要的话也可以在随后的时钟周期中发出。如果肯定在当前时钟周期移位位置上没有匹配判定(例如,由于每个移位位置上的一个或多个相干返回28/28’具有第二逻辑状态),则逻辑器30将产生与在检查之中的流模式19有关的未匹配指示32。
为了协助在下一时钟周期(T2)期间的检查,用于下面的重叠流模式字节块20的当前时钟周期返回28被保存在历史存储器38中:
(X7,X8),(X8,X9),(X9,X10)
为了进行匹配判定,上述选择使用的返回28和28’可以参考图5获得更好的理解,其中示出用于图2B中所示技术的逻辑组合器30的典型实施的方框图。这个电路设计假定真返回28/28’为逻辑1,并且已经明确设计用于图2B的执行。然而,图5中逻辑器30的一般系统结构可应用到图2B类型块移位解决方案的任何实施中。
设置多个AND门31以逻辑AND所选择的相邻几个查找表返回28/28’。特别地,包括N-1个AND门31,考虑跨越块移位的全部字节(也就是,不但考虑当前串的多个字节,而且考虑过去串的多个字节),在对应的N-1个移位位置上进行匹配判定。因此,第一个AND门31(1)考虑与图2B(时间T1)中字节X6-X10的移位位置上发现模式匹配有关的四个相邻返回28(如所需的五个字节模式匹配)。然后进行一个字节移位,并且第二AND门31(2)考虑与图2B中字节X5-X9的移位位置上发现模式匹配有关的四个相邻返回28。现在移动例如进行两个字节移位,第四AND门31(4)考虑与图2B中字节X3-X6的移位位置上发现模式匹配有关的四个相邻返回28/28’。因而可以注意到,随着考虑与N-1个移位位置有关的P-1个相邻返回28/28’的每个比较,通过逻辑器30执行N-1个单独匹配比较。OR门33逻辑组合N-1个AND操作的结果,产生指示32。从而,如果执行匹配比较的那些AND门中的任一个是成功的(也就是,输入到AND门的全部相干相邻的返回28/28’是逻辑1),则OR门产生真的匹配结果指示32。
很重要的是从图5的典型组合器30中认识到每个AND门执行单独的匹配查找检验(与执行块移位中的特定移位位置有关),并且如果任一AND门发现匹配,OR门便产生“真”的匹配结果指示32。采用另一种方法,(当施加到AND门的全部适当返回28/28’是真时)并行操作,每个AND门检验与数据流中不同移位位置有关(也就是,关于不同的流模式)的匹配,并且如果任何检验的流模式的P-1个相邻流块与存储的表块匹配,则在当前时钟周期输出真匹配结果指示32。
现在,假设前进一个时间到下一时钟周期T2。随着该前进,寄存器18中的N-1个最旧的字节移出,并且数据包流14中的N-1个随后的字节块移入。在这个时间点上,移位寄存器18的N个单元16载有字节(串):
X10,X11,X12,X13,X14,X15
在时钟周期T2期间,模式匹配器12将多个字节的串划分(或分割)成P-1个重叠流模式字节块20,如下:
(X10,X11),(X11,X12),(X12,X13),(X13,X14),(X14,X15)
然后将这些重叠流模式字节块20中的每一个并行22输出到模式表24以便应用,从而与其中存储的表模式字节块26比较(查找L)。再次如通过图5的典型实例所述,选择性地使用返回28和28’以进行匹配判定。逻辑组合器30通过对每个位置检验是否在模式表24中发现那个移位位置发出的流模式字节块20,来查找跨越多个字节块移位的多个移位位置上的模式匹配。如果关于任一移位位置存在与当前时钟周期返回28和/或来自前一时钟周期的历史返回28’中相干的、相邻的几个有关的第一逻辑状态,则在该时钟周期产生匹配指示32。相反,如果有关每个移位位置匹配比较的返回28或28’是第二逻辑状态,则逻辑器30将产生有关在检查之中的流模式19的未匹配指示32。
再次,可理解的是用于下面重叠流模式字节块20的当前时钟周期返回28将被保存在历史存储器38中,以协助下一时钟周期(T2)期间的检查:
(X12,X13),(X13,X14),(X14,X15)
然后反复重复上述处理以继续流14的检查和筛选。
当然,可理解的是具有N=P=6的上述方案、两个字节重叠以及N-1个字节的块移位实质上是典型的。用户能够选择模式大小、字节重叠、字节块移位量以及模式查找的任何适当组合,该组合是用户所期望的并且适合正被检查的数据包流的处理需求。图3A说明了具有P=8个字节表模式、N=9个单元16、两个字节重叠和N-1个字节块移位的图2B类型解决方案的操作。此外,图3B说明了具有P=5个字节表模式、N=9个单元16、两个字节重叠和N-1个字节块移位的图2B类型解决方案的操作。最后,作为另一个实例,图4说明了具有P=5个字节表模式、N=7个单元16、三个字节重叠和N-1个字节块移位的图2B类型方案的操作。这里不再提供图3A、图3B和图4的实例的详细解释,相信本领域的技术人员利用图2B类型方案的知识并且参考在此提供的有关附图2B的描述,将会明白在每种情况中的操作。进一步提供图3A、图3B和图4的实例,是为了说明图2B类型解决方案在处理不同大小的字节模式、寄存器大小和重叠中的适应性。借此,应当知道,该解决方案能够适合特定处理和数据处理需求以及当用户设计并执行一模式匹配系统时的限制。
可以知道在同一包数据流中可以同时存在多个流,以使多个流的数据包相互交错。引擎10能够同时处理多个流的筛选。为了完成此处理,引擎10记住传输多个流的包(也就是,属于该流的每个包)状态。除了存储在随后时钟周期中使用的返回28之外,当检查中出现了属于不同流的新包时,历史存储器38记录每个流的上下文,然后使得适当上下文的历史返回28为可用的。
由图2A或2B执行的寄存器加载处理和相关查找处理说明了本发明的重要特性。由于在每个时钟周期匹配加载寄存器时使用的移位处理,以及为了查找流中不同位置上的匹配而由组合器30执行的逻辑操作,正在执行的模式匹配操作可被认识(或辨别)为非锚定的。通过“非锚定的”,这就意味着模式匹配器能够在流14之内的任何所选择的字节位置上查找感兴趣的表模式。这就与“锚定的”搜索相对比,在锚定的搜索中用于发现匹配模式的查找被约束在流内的特定位置(例如,在包头、在某头字段(如IP地址)、在有效载荷内的特定位置,等等)。如本发明所支持的非锚定模式匹配相比锚定搜索提供了更加灵活的解决方案。该非锚定的特征是需要进行模式匹配器操作以检测作为包头字段中不可识别模式的更高层的动作。通过在指定时钟周期内在多个移位位置上的单独检查以及在指定时钟周期内在任何被检查的位置上发现相邻流块的匹配时匹配指示32的产生,图2B解决方案中的逻辑组合器30执行的功能性进一步强调了非锚定特性的处理。
现在再一次参考图5。尽管所示的组合逻辑器对于图2的实施来说是特定的,但是也并未提供有关对图3A、图3B和图4的逻辑组合器30的详述,相信本领域的技术人员能够设计出逻辑组合返回28(和用于每个移位位置的28’,如果需要)和产生匹配结果指示32所需的逻辑电路。应当记住的是在每个可能的移位位置的块移位执行中必须进行单独匹配查找检测。在任何那些移位位置的相干的、相邻的返回28/28’的匹配表示该时钟周期的匹配,并且必须产生匹配指示32。相反地,对于任一移位位置未匹配至少一个返回28/28’表示该时钟周期没有匹配,并且必须产生未匹配指示32。优选地,这些单独的匹配查找检测并行执行。这里不再提供对任一逻辑组合器30的组合逻辑执行的进一步详述,并且相信,通过图5所示的典型设计,本领域的技术人员将能够设计出实施图2B类型解决方案的任何期望的P、N、重叠、块移位实施例所需的组合逻辑器。然而,应当注意的是,如果希望针对全部包(与单一流模式相反)进行匹配判定分析,则在产生匹配结果指示32之前,由OR门执行的逻辑OR操作可以重复多个时钟周期,直到达到包的结尾(如图5中所示的返回循环)。
图5以典型方式进一步说明了当前查找操作(也就是,当前时钟周期)的返回28是如何被保存到历史存储器38中,作为随后使用的返回28’(在下一时钟周期中)。适当的逻辑器和/或延迟电路执行以适当加载历史存储器的单元也是在本领域的技术人员的能力范围内。
下面参考6A和图6B,其中示出图2B类型解决方案的优选实施以高速处理模式匹配、网络安全、安装。在这个优选实施中,关于数据包流14的检查,支持9个单元16(N=9)移位寄存器18与P=12个字节表模式25的匹配。能够以非常高的速度,例如,以线路速率等于且超过每秒2.4G比特的速度进行该模式匹配器的操作。
如上所述,数据包流14的字节X以一次N-1=8个字节地顺序块移入寄存器18。换句话说,随着每个时钟周期,在N-1=8个旧字节的块从寄存器中移出的同时,N-1=8个新字节的块移入寄存器18。随着每个时钟周期,模式匹配器12还产生N-1=8个重叠流模式字节块20。将要记住匹配P个字节模式需要有P-1个块20。来自寄存器18的所需块不仅限于在这个时钟周期中供逻辑器30使用。然而,可以认识到寄存器考虑对以前时钟周期期间中失去的块20的匹配,而且可以认识到这些查找返回28能够被保存并被再次使用。因而,逻辑器30不但考虑当前时钟周期的对应N=8个返回28,而且考虑来自两个以前时钟周期(如果需要)的返回28。为了协助这个操作,并且考虑到需要匹配跨越N-1=8个字节移位的多个位置,模式匹配器12利用十个单元历史存储器38来临时保存来自两个以前时钟周期的所需返回28以用作当前时钟周期期间的返回28’。每个移位位置的相邻返回28/28’的选择使用允许逻辑组合器30有权使用相邻P-1块查找和跨越块移位的对应返回,这些对于在每个移位位置上独立进行匹配判定并产生匹配指示32或时钟周期很重要。
为了说明,假定图6A中某时钟周期T1,其中移位寄存器18的N=9个单元16载有字节(串):
X8,X9,X10,X11,X12,X13,X14,X15,X16
在时钟周期T1期间,模式匹配器12将串的多个字节划分(分割)成N-1=8个重叠流模式字节块20,如下:
(X8,X9),(X9,X10),(X10,X11),(X11,X12),(X12,X13),(X13,X14),(X14,X15),(X15,X16)
然后将这些重叠流模式字节块20中的每一个并行22输出到模式表24以便应用,从而与其中存储的表模式字节块26比较(查找L)。如果在模式表24中发现每个流模式字节块20,则将返回28有关每个块的第一逻辑状态。
然而,必须记住以前时钟周期T0期间中,移位寄存器18的N=9个单元16载有下面流模式:
X0,X1,X2,X3,X4,X5,X6,X7,X8
因而只有字节X8在相邻时钟周期中执行的匹配操作之间被共享。此外,在以前时钟周期T-1期间,移位寄存器18的N=9个单元16载有下面流模式(串):
X8,X7,X6,X5,X4,X3,X2,X1,X0
由于两个字节重叠、将被匹配的P=12个字节表模式、以及N-1=8个字节块移位,逻辑组合器30需要有权使用有关下面重叠流模式字节块20的来自以前时钟周期T0的返回28:
(X0,X1),(X1,X2),(X2,X3),(X3,X4),(X4,X5),(X5,X6),(X6,X7),(X7,X8)
以及有关下面重叠流模式字节块20的来自以前时钟周期T-1的返回28:
(X2,X1),(X1,X0)
因此在历史存储器38中保存了从时钟周期T-1和T0的这些返回28,然后在时钟周期T1中作为再用的28’与当前组返回28(整个P-1个块查找返回)一起被提供。然后独立地基于每个移位位置,由逻辑器30处理当前时钟周期返回28和/或来自以前时钟周期的历史返回28’中所选择的、相邻的几个,以确定是否产生匹配指示32。上面提供了这个选择使用处理的说明性讨论以及典型实施。图6A和6B中逻辑器30的执行比图5所示的执行更加复杂,尽管如此,其还是采用了相同的理论原理,使用相似的结构模式,因而也在本领域的技术人员的设计能力范围之内。
为了协助下面的处理,在历史存储器28中保存当前时钟周期T1的下面重叠流模式字节块20的返回28:
(X8,X9),(X9,X10),(X10,X11),(X11,X12),(X12,X13),(X13,X14),(X14,X15),(X15,X16)
加上前一时钟周期T0的下面重叠流模式字节块20的返回28:
(X6,X7),(X7,X8)
以在下一时钟周期中随后使用(提供所需补充返回以达到跨越块移位的所需P-1个返回)。
下面,参考图6B,假设前进一个时间到达下一个时钟周期T2。随着这个时间前进,寄存器18中N-1=8个最旧的字节移出,并且数据包流14的N-1=8个随后的字节移入。在这个时间点上,移位寄存器18的N=9个单元16载有下面的字节(串):
X16,X17,X18,X19,X20,X21,X22,X23,X24
在时钟周期T2期间,模式匹配器12将多字节的串划分成N-1=8个的重叠流模式字节块20,如下:
(X16,X17),(X17,X18),(X18,X19),(X19,X20),(X20,X21),(X21,X22),(X22,X23),(X23,X24)
然后将这些重叠流模式字节块20中的每一个并行22输出到模式表24以便应用,从而与其中存储的表模式字节块26比较(查找L)。然后,由逻辑器使用所选择的一个返回28和一个返回28’以检查每个移位位置的独立模式匹配,在任一移位位置上有匹配,便导致在该时钟周期中匹配指示32的产生。
然后,能够理解的是时钟周期(T2)和(T1)的所需返回28将被保存在历史存储器38中以协助在下一时钟周期(T3)期间中的检查。然后反复重复上述处理以继续流14的检查和筛选。
先前说明是对模式匹配器12进行的假设,如果在模式表24中发现每个可应用的流模式字节块20(当前和或许以前的)(也就是,匹配表模式字节块26),那么在检查之中的流模式19便匹配表模式25中的一个。然而这个假设并不完全准确。参考实例可能有助于更好地理解本发明执行的字节块匹配处理的限制。
首先设想一个方案,其中表模式25如下:
ABBCD
CDABD
DEABC
因此用于这三个表模式(模式表24中存储的)的两个字节重叠表模式字节块26为:
AB,BB,BC,CD
CD,DA,AB,BD
DE,EA,AB,BC
现在假设在检查之中的流模式19为:
ABECD
这个模式产生下面流模式字节块20:
AB,BE,EC,CD
以并行应用22到模式表24。然后该表查找操作将产生下面的返回28:
真,假,假,真
其中,当逻辑组合时,将正确地产生“未匹配”指示32(由于ABECD不是表模式25中ABBCD、CDABD或DEABC中的一个)。
然而,现在假设具有流模式19的相同表模式25:
ABCDE
模式产生下面的流模式字节块20:
AB,BC,CD,DE
以并行应用22到模式表24。然后表查找操作将产生下面的返回28:
真,真,真,真
其中,当逻辑组合时,将错误地产生“匹配”指示32(注意ABCDE不是表模式25中ABBCD、CDABD或DEABC中的一个)。
因此引擎10完全能够产生“错误肯定”结果。然后便出现用户是否关心的问题。在一些情况中,由于产生的报警或警报34和/或捕获或阻止操作可以触发进一步执行以更仔细地检查已经标记的包业务流,所以错误肯定的存在可能不被用户关心。例如,利用引擎10可执行多等级筛选操作,其包括:第一(或较低)等级筛选,其中匹配包业务流的标记部分;以及为了更加详细检查的第二(或较高)等级筛选,其中进行了附加的管理以区别正确肯定和错误肯定。这种可以使用引擎10的多等级筛选系统的实例描述在申请号为10/217,862的美国专利申请中,该申请为2002年8月12日申请的共同未决、共同转让的申请,在此通过参考的方式援引其公开内容。
如果希望有关引擎10的操作的更高准确性,可以将表模式25指定为多个“类”的多种模式。在上下文中,“类”是指以有助于减小错误肯定匹配情况的方式的表模式25的智能分组。通过再次参考上述“错误肯定”产生实例可以更好的理解这些概念。
再次参考下面表模式25:
ABBCD(1)
CDABD(1)
DEABC(2)
附加说明(x)表示表模式已被指定(分组)为两个单独的类。因此用于这三个表模式(如模式表24中存储的)两个字节重叠表模式字节块26为:
AB,BB,BC,CD(1)
CD,DA,AB,BD(1)
DE,EA,AB,BC(2)
这里附加说明(x)表示每个字节块已被指定的类。现在假设在检查之中的流模式19为:
ABCDE
这个模式产生下面流模式字节块20:
AB,BC,CD,DE
以并行应用22到模式表24。但是在这种情况下,查找操作被分类。借此,意味着流模式字节块20要与分离的类(1)的表模式字节块26匹配并且与分离的类(2)的表模式字节块26匹配。关于类(1)的匹配操作,表查找操作将产生下面的返回28:
真,真,真,假
其中,当逻辑组合时,将正确地产生“未匹配”指示32(注意ABCDE不是类(1)中表模式25的ABBCD或CDABD中的一个)。关于类(2)的匹配操作,表查找操作将产生下面返回28:
真,真,假,真
其中,当逻辑组合时,也将正确地产生“未匹配”指示32(注意ABCDE不是类(2)中表模式25的DEABC中的一个)。以这种方法,由于在两类中发现“未匹配”,所以引擎正确地发现全部的“未匹配”并处理“错误肯定”问题。
通过在模式表24内包括多个存储器100可以在引擎10中执行模式的分类,从而每个存储器与不同的类相关联,且每个存储器只包括指定给它自己关联的类的表模式的表模式字节块26。图1中示出模式表的分类,其中包括用于两个相应类的两个存储器100(指定“(1)”和“(2)”)。然而,应当理解可以将类的任何选择数目指定到引擎10中。本发明的优选实施例利用至少四个不同的类。尽管其他附图中并未特别地说明,但是应当进一步理解,为了处理类问题并且协助错误肯定指示32的决定,每个模式表24可以类似地包括一个或多个存储器100。
然而,模式存储器24中多个类的提供会对逻辑组合器30执行的操作添加附加等级的复杂性。在这种关系中注意,每个流模式字节块20查找操作(参见,图中“L”指定)现在将产生与类的数目对应的数个返回28(也就是,每个存储器100有一个返回)。从而,作为一个实例,如果在模式表24中提供两个类(如上所述),则每个流模式字节块20查找将产生两个单独的返回28(用与每个返回28关联的“/2”标记来指定)。逻辑组合器30的操作将优选保存这种分离并因此产生单独的匹配指示32(也就是,每个类有一个指示)。这种方式中,逻辑组合器30中使用的逻辑电路(例如,参见图5)将需要被(并行)复制与可能类的预期数目相等的次数。
为了进一步减小错误肯定指示的可能性,应当知道表模式越大便产生越少的错误肯定。例如,由于为使逻辑组合器30发现全部的匹配而必须匹配数目显著增加的块的实事,8个字节表模式比5个字节表模式产生错误肯定指示的可能性更小。通过支持在模式表24中存储的具有多个表模式长度的表模式字节块26,本发明的引擎10利用这个概念(每个模式长度也可被认为“类”)。
通过检查图6C可以更好的理解,图6C示出关于具有线路速率等于且超过每秒2.4G比特的数据包流14,使用九个单元16(N=9)移位寄存器18来匹配P=12个字节、P=8个字节和P=5个字节表模式的引擎的优选实施(与图6A和图6B以及图3和图4比较)。
数据包流14的字节X一次N-1=8个字节地顺序块移入寄存器18。换句话说,随着每个时钟周期,N-1=8个旧字节的块从寄存器中移出,同时N-1=8个新字节的块移入寄存器18。随着每个时钟周期,模式匹配器12进一步产生N-1=8个重叠流模式字节块20。然后将这些重叠流模式字节块20中的每一个并行22输出到模式表24以便应用,从而与其中存储的表模式字节块26比较(查找L)。
在图6C的优选实施例中,每个查找操作包括5个字节表、8个字节表和12个字节表中的单独并行查找。特别地,5个字节表包括与任何5个字节表模式25相关联的表模式字节块26,8个字节表包括与任何8个字节表模式25相关联的表模式字节块26,12个字节表包括与任何12个字节表模式25相关联的表模式字节块26。从而,作为对流模式字节块20执行的查找操作的结果,提供了有关每一个字节表的单独返回28被(也就是,来自5个字节表的返回28(5),来自8个字节表的返回28(8)和来自12个字节表的返回28(12))。
更具体地,如图1和图7所示,5个、8个和12个字节表的每一个包括多个存储器100(优选为4个)以支持模式表类的使用。从而,对于模式表中包括的存储器100的每一个,来自字节表的每个单独返回28(也就是,返回28(5)、28(8)和28(12))将包括一个位,以指定是否发现有关每个所包括的模式表类的匹配。在图6C中用与返回28(5)、28(8)和28(12)相关联的“/4”标记来表示。
引擎10还包括10个单元历史存储器38,其中如果需要,每个单元可以存储有关单一过去查找操作的多个返回28。例如,历史存储器38的单元38(1)存储有关在以前一个时钟周期中查找(L)150(1)的返回28(5)、28(8)和28(12)。历史存储器38的单元38(6)存储有关在以前一个周期中查找(L)150(6)的28(8)和返回28(12)。此外,历史存储器38的单元38(11)存储有关在以前两个周期中查找(L)150(1)的28(12)(也就是,来自以前一个周期中单元38(1)的返回28(12))。图2A、3A、3B、6A和6B中的说明,以及这里他们相关的描述解释了为什么需要这个历史返回信息以及如何存储和处理。为了简单化图6C的说明,省略了关于如何加载和从哪里加载历史存储器38中单元的特别说明。然而,应当知道,为了增加发生模式匹配的速度而减小寄存器的大小并且执行块移位,在这种情况下,提供历史返回以使逻辑组合器30能够有权使用所需的P-1个返回以进行匹配判定。
用于进行匹配判定的逻辑组合器30的通常操作重申如下:与当前时钟周期中从查找(L)产生的返回28一起,提供历史存储器38中保存的来自先前时钟周期的返回28,作为当前时钟周期中的再用返回28’。有关发出的每个流模式字节块20的、用于适当当前时钟周期返回28和/或适当以前时钟周期历史返回28’的第一逻辑状态组将使逻辑器30产生肯定匹配的指示32。再次,必须记住由这些返回28/28’构成了选择使用,因此能够在每个单独的移位位置上独立地进行匹配判定。然而,由于图6C的实施执行了5个字节、8个字节和12个字节模式匹配,因此逻辑器30必须被分成三个对应的单独逻辑功能(30(5),30(8)和30(12))以执行适当的匹配检测。从而,用于进行5个字节匹配判定的逻辑器30(5)根据来自历史存储器38的单元38(1)-38(3)的当前时钟周期返回28和以前时钟周期历史返回28’中所需的(也就是,基于移位位置选择的)几个返回作为它的匹配指示32判定。在另一方面,用于进行8个字节匹配判定的逻辑器30(8)根据来自历史存储器38的单元38(1)-38(6)的当前时钟周期返回28和以前时钟周期历史返回28’中所需的(也就是,基于移位位置选择的)几个返回作为它的匹配指示32判定。最后,用于进行12个字节匹配判定的逻辑器30(12)根据来自历史存储器38的单元38(1)-38(12)的当前时钟周期返回28和以前时钟周期历史返回28’中所需的(也就是,基于移位位置选择的)几个返回作为它的匹配指示32判定。
与这里所述的其它实施例类似,图6C的系统是可方便编程的,其中只要利用适当的表块简单地再编程模式表24,就能够对感兴趣的表模式进行修改、删除、更新等。通过执行多个存储器100以支持多类表模式,进一步支持了模式匹配操作的适应性和可塑性。此外,利用表模式的数目和表模式的不同长度,系统是可简单升级的。对模式表大小的调节以及逻辑器30的特性和复杂性有助于这种改变而不会明显影响操作速度。
应当知道,如果需要大量表模式,那么总的来说用于模式表24的存储器需求(也就是,存储器大小)特别是其中的每个存储器100便会非常大。下面参考图7,其中示出一种减少模式表24之内的存储器需求的机构。为了简化说明和解释,说明有关单一流模式字节块20的模式表中的查找。假定两个字节重叠和且每个字节8个位,每个流模式字节块20将包括16个位(图7中所示的“/16”标记)。为了减少与16位地址查找相关的存储器需求,引擎10使用杂凑表110(在模式匹配器12或模式表24之内)来将16位地址查找转换成更小的地址查找,例如14位(图7中所示的“/14”标记)地址查找。杂凑表的执行和操作对于本领域的技术人员是公知的,因而将不提供进一步详细的解释。杂凑表110可以进一步被用作上述图6C的优选实施中所示的那样。
可以知道,使用较小的查找地址可以产生附加的错误肯定结果(即使结合上述的类和串长度解决方案使用时)。为了处理这个问题,引擎10可以选择以代替执行有关每个流模式字节块20处理的多个杂凑表110。特别地,由多个杂凑表110将16位地址查找转换成相应较小数目,例如14位地址查找。多个杂凑表110中的每一个将预期执行的不同的转换,即由多个杂凑表所利用的组合转换仅使用一个杂凑表处理错误肯定问题。有关每个较小地址查找的由模式表24执行的比较产生有关相同流模式字节块20的单独返回28(参见,图7中与正在使用的两个杂凑表110对应的“/2”标记),然后逻辑组合器30逻辑组合有关每个单一流模式字节块20的多个返回28以产生组合返回。通常来说,为了发现有关单一流模式字节块20的真返回28,逻辑组合器30必须发现有关每个杂凑地址的查找的匹配。
还可以通过对具有不敏感状态数据的模式表编程减小查找地址的大小(也就是,该特征表示在模式表24的存储器中,而不考虑其状态),然后忽略在查找期间应用的字节块20之内该状态位。如果需要可结合使用上述一个或多个杂凑表而使用这个特征,以提供大大减小的地址位。
图7进一步示出模式表24之内多个存储器100的使用。如上所述,这些多个存储器可以与多类的实施结合作为一个机构有利地使用以减小错误肯定的可能性。在所示的实施中,提供m个存储器100以支持将表模式划分成m个对应的类。利用这种结构,每个流模式字节块20查找将产生m个单独的返回28(由与每个返回28相关的“/m”标记表示)。当然应当认识到,如果使用多个杂凑表110例如k个不同的杂凑表,则每个流模式字节块20查找将产生(m×k个)单独返回28(由与每个返回28相关的“/mk”标记表示)。
现在参考图8,其中示出说明根据本发明另一个实施例的用于包业务流筛选的引擎的方框图。与图1所示的实施例类似,这个实施例利用如上所述的模式匹配器12和模式表24。因而,除为需要而解释有关两个实施例之间的不同和区别之外,也省略了模式匹配器12和模式表24的详细解释。图8的引擎10还包括类标识符(CID)功能组件120,其在包匹配之前执行有关接收的数据包流14的处理。该类标识符功能组件120通常检查每个包的头,并且进一步查看通过的流14之内的包序列的特性。从这个分析中,类标识符功能组件120分类包和/或包流,并产生表示该类的CID编码122。然后使用该CID编码122,以下面将详细描述的方式,协助模式匹配器12执行更有效和高效的流筛选。
一般而言,通过类标识符功能组件120快速地且以不检查有效载荷的方式检查流。例如,可以检查每个包的头的感兴趣的信息,例如感兴趣的某个头字段的内容(源地址,目的地址等)。作为另一个实例,为了识别什么类型的业务流正在通过(例如,http,ftp等)而检查流。也可以通过类标识符功能组件120提取有关数据速度的信息。从一个或多个收集的感兴趣信息中,类标识符功能组件120判定并输出归类或者分类流的适当CID编码122。
应当认识到,模式匹配器12有利地利用CID编码提供的包/流的类,以执行更有效和高效的流14筛选。当用户识别出将被筛选的表模式,且/或分类这些表模式(在某个存储器100中存储的)时,还可以知道这些表模式为只是对由类标识符功能组件所识别并且由CID编码122所表示的包/流的某个类/类别感兴趣。以这种方法,通过直接或集中有关模式表类的查找,能够使用CID编码以改进模式匹配器12执行的筛选操作。仅在查找指示某个模式表类中的匹配,并且只有当CID编码122还指出该模式表类中的匹配与分类或归类包/流的类标识符功能组件120相关,才将产生匹配指示32。
通过一些特殊实例的分析可以更好的理解前述内容。假设模式表24包括多个存储器100,每个存储器100都与上述减小错误肯定可能性的不同模式表类相关。这些存储器的第一个存储与http业务流筛选有关的表模式的表模式字节块26。这些存储器的第二个存储与ftp业务流筛选有关的表模式的表模式字节块26。这些存储器的第三个存储与来自某个源IP地址的业务流筛选有关的表模式的表模式字节块26。
在第一实例中,假设由类标识符功能组件120检查流14,并且判定包/流为http业务流。然后将产生(表示http业务流的)适当的CID编码122并将其提供给模式匹配器12。然后由模式匹配器产生流模式字节块20并将其提供到应用每个存储器100的模式表24。如果来自这些存储器的第一个(也就是,存储与http业务流筛选相关的表模式的表模式字节块26的一个存储器)中的返回28指示匹配,则逻辑器30将进一步比较表示http的匹配与CID编码122(其表示该包/流是http业务流),并发出匹配指示32。相反地,如果第一存储器指示匹配,但是CID编码122末指示包/流是http业务流,则逻辑器30将忽略http存储器100匹配且不发出匹配指示。
在第二实例中,假设由类标识符功能组件120检查流14,并且判定包/流是ftp业务流。然后将产生(表示ftp业务流的)适当的CID编码122并将其提供给模式匹配器12。然后由模式匹配器产生流模式字节块20并将其提供到应用每个存储器100的模式表24。如果来自这些存储器的第二个(也就是,存储与ftp业务流筛选相关的表模式的表模式字节块26的一个存储器)中的返回28指示匹配,则逻辑器30将进一步比较表示ftp的匹配与CID编码122(其表示该包/流是ftp业务流),并发出匹配指示32。相反地,如果第二存储器指示匹配,但是CID编码122未指示包/流是ftp业务流,则逻辑器30将忽略ftp存储器100匹配且不发出匹配指示。
在第三实例中,假设由类标识符功能组件120检查流14,并且判定包/流是来自某个源IP地址的ftp业务流。然后将产生(表示ftp业务流和源地址的)适当的CID编码122并将其提供给模式匹配器12。然后由模式匹配器产生流模式字节块20并将其提供到应用每个存储器100的模式表24。如果来自这些存储器的第二个(也就是,存储与ftp业务流筛选相关的表模式的表模式字节块26的一个存储器)中的返回28指示匹配,则逻辑器30将进一步比较表示ftp的匹配与CID编码122(其指示该包/流是ftp业务流),并发出第一匹配指示32。如果来自这些存储器的第三个(也就是,存储与来自某个源IP地址的业务流筛选相关的表模式的表模式字节块26的一个存储器)中的返回28指示匹配,则逻辑器30将进一步比较表示源地址的匹配与CID编码122(其表示该包/流是来自源IP地址的),并发出第二匹配信息32。在某种情况中,任一匹配指示32可能足以触发并报警或过滤例如流14。在其它情况中,在发出警告或者过滤流14之前,逻辑器30可能还需要匹配将要出现的指示32。
从而,以前的描述和实例示出只有当发现有关与包/流的类标识符功能组件120对应的模式表类的匹配时才发生图8实施例中的匹配指示32。以这个方式就会清楚,如上所述为什么引擎10必须保存逻辑器30操作过程中分类的返回28。没有这种保存,将不可能使用CID编码122以进一步改进匹配判定。图5示出OR的输出如何可以进一步应用到接收CID编码122的附加逻辑器中。如果与某个包/流类相关的CID编码122和用于某个模式表类的逻辑组合的返回28都是真时,则输出匹配指示32。
CID编码122与模式表类结合的类标识符功能组件120的使用提供了对发出错误肯定的附加等级的保护。例如,不包括并且也不使用CID编码122时,应用到fttp类存储器100的流模式字节块20可以返回有关ftp业务流的匹配。然而,这种错误肯定匹配对于正被筛选的业务流类型是不重要的或者毫无意义。使用CID1编码122处理这个问题,并且提高引擎10提供的错误肯定保护的等级。
现在参考图9,其中示出根据本发明另一实施例用于包业务流筛选的引擎的方框图。与图1所示实施例类似,本实施例利用上述的模式匹配器12和模式表24。因而,除为需要而解释有关两个实施例之间的不同和区别之外,也省略了模式匹配器12和模式表24的详细解释。图9的引擎10还包括重新组装缓冲器130,其在模式匹配之前对接收的数据包流14进行操作。本领域的技术人员应当知道,流14中的包可以无次序地到达,并且还应知道可能出现边界条件问题。重新组装缓冲器130用于确保在执行筛选之前适当组合流的多个包。特别地,缓冲器130使包的次序正确并进一步处理有关流的边界问题,从而当模式匹配器12处理流14时,流14以正确次序被检查并检查跨越边界的匹配。
现在参考图10,其中示出根据本发明另一实施例用于包业务流筛选的引擎的方框图。与图1所示实施例类似,本实施例利用上述的模式匹配器12和模式表24。因而,除为需要而解释有关两个实施例之间的不同和区别之外,也省略了模式匹配器12和模式表24的详细解释。图10的引擎10还包括至少一个,优选为多个解码器140。当需要或希望在模式匹配之前将流14翻译成普通格式(语言)时,使用该解码器140。在这种方式中,不需配置模式表24以处理不同格式的模式。例如,可以用HEX或UNICODE编码流14或其中一部分。在模式匹配之前,希望通过使用解码器140来对已编码的字节解码。翻译决定功能142检查流14之内的字节并且识别需要解码的字节。这些字节被传递到适当的解码器140以进行处理。解码之后,字节被传输到模式匹配器12以进行筛选,如上面详细讨论。非常重要需要记住的是,解码器140为优先方案,将正被筛选的全部业务流转换成标准化/基本格式,从而在模式表24中能够存储单一版本的表模式。
在进行有关翻译问题的可选择处理时,应当理解的是模式表24可以载有已编码和已解码的表模式(或许在单独模式表类中),因而可能应避免使用解码器140。此外,在进行另一可选择处理时,字节可以它们已编码和已解码状态传递到模式匹配器12以进行筛选。
现在参考图11,其中示出根据本发明另一实施例用于包业务流筛选的引擎的方框图。与图1所示实施例类似,本实施例利用上述的模式匹配器12和模式表24。因而,除为需要而解释有关两个实施例之间的不同和区别之外,也省略了模式匹配器12和模式表24的详细解释。图11的引擎10使用上文详细说明的图8-图10中所述实施例的组合。尽管图11示出图8-图10全部三个实施例的组合使用,将可以理解也可以使用三个实施例中任何选择的两个。
有利且优选完全用硬件执行本发明的引擎10。这种执行有助于高速操作。在过去,并不赞成单独硬件的模式匹配器执行,这是由于它们不能随时修改或修整。本发明通过利用模式表存储器存储与希望的5个字节、8个字节和12个字节模式匹配的表模式相关的表模式字节块26,仍旧提出硬件设计,同时处理了这个问题。当需要时,能够容易地修改存储器以添加或删除某个表模式字节块26。此外,模式表不但在支持多种大小表模式匹配方面,而且在支持多个类方面都支持多存储器的使用。再有,能够容易地修改模式表之中的存储器以改变表模式大小中和/或类中的块,从而允许硬件设计支持如软件设计一样的灵活性。
下面参考图12,其中示出用于本发明模式匹配引擎的优选执行的硬件功能方框图。网络处理器(NP)200通过PL3总线接收32位宽格式的数据流14。处理器200通过快速检查数据流而不检查有效载荷来执行类标识符功能(图8,附图标记120和相关的描述)。检查包括每个包的头以及通过的流14中包次序的特性。通过这个分析,处理器200分类包和/或包流,并产生指示判定的类的CID编码122。该CID编码122是12位值,其中所包含的每个位特别指出模式匹配是否是与多个不同模式匹配的每一个中某几个类相关的感兴趣的问题(例如,一个位用于5字节、8字节和12字节表中四个单独类的每一个)。特别地,由处理器200执行的流14的检查协助发出:筛选(例如,模式匹配)操作是与指定的包/流/会话相关的。这个评估处理实例,并且结合上述图8的说明已提供了它对匹配判定的影响。优选在每个包分类之后,将CID编码122附加到每个包中。
接收器(RX)202通过单向PL3接收来自处理器200的数据流14。接收器202用作PL3链路层接收标准接口。总线204的数据宽度为32位。通过调节被检测到的PL3总线的速度,能够配置引擎10以将线路速率处理在等于且超过每秒4.2G比特(例如,具有133MHz时钟)。在接收器202中提供网络FIFO存储器以临时存储收到的数据。FIFO用于附加提供PL3接口与引擎10的内部逻辑器之间的速度调整和时钟同步。在优选实施例中,该数据在写入FIFO之前被转换成64位(该数据可以具有分成多个32字节块的4千位长度)。一旦块满,就输出被缓冲的数据。
数据过滤器204接收从接收器202发送的输出块并且以一次8个字节地输出所接收的数据(也就是,以给定的时钟周期,如结合图2A执行的上述讨论)。
包剖析器206用于分析有关流14的包头信息,以识别在何处可以发现每个包的有效载荷。为了完成此处理,从剖析器208以及启动指示器中输出接收的数据,该启动指示器识别该数据应当(也就是,其为有效载荷)还是不应当(也就是,其为头)被模式匹配。剖析器206进一步确保流中的包次序是正确的(也参见图9)。通过跟踪次序号来完成处理。
引擎10还包括模式匹配器208(也参见图9,如上述附图标记12)。模式匹配器208搜索在有效载荷部分(由剖析器206所识别的,也参见图6C及其相关描述)中所希望的5字节、8字节和12字节模式的包或跨越TCP包的有效载荷边界的包。每个包有效载荷的每两个相邻字节(流模式字节块20)被用作进入模式表中的地址(参见上述附图标记24)。从模式表返回的数据为12位值,其中每位表示与3个不同(5字节、8字节、12字节)模式匹配(例如,为每个模式匹配提供4个类)的每一个中多个不同类相关的匹配/未匹配的存在。理论上能够在任何一个、大于一个或全部的值中表示匹配。对于发生5字节匹配,5字节串中的每个2字节对(块20)必须产生与5字节模式表的至少一个类中的所存储库2字节对(表模式字节块26)的匹配。相似地,对于发生8字节匹配,8字节串中的每个2字节对(块20)必须产生与8字节模式表的至少一个类中的所存储库2字节对(块26)的匹配。最后,对于发生12字节匹配,12字节串中的每个2字节对(块20)必须产生与12字节模式表的至少一个类中的所存储库2字节对(块26)的匹配。
然后将输出的12位值与由快速模式处理器200早先产生的12位CID编码122进行逻辑AND。如果AND结果的至少一位为真(例如,逻辑1),则认为已经发现模式匹配并且对该包作标记以进行不同的处理(例如,改道发送)和/或产生警报。如果跨越TCP边界发生匹配,可以设置改道发送标记指示引擎10,应当区别对待在同一TCP会话中的全部将来的包。或者,还可以设置标记指示引擎,应当区别对待在相同TCP会话内的将来的包。
如果模式匹配器208检测到包是无次序地到达的,发送无次序的包以区别对待(不需要发生模式匹配),并且同样地处理在同一TCP会话中的全部将来的包。
然后通过PL3总线将模式匹配的流14转交到发射器(TX)210。与接收器202输入总线类似,优选测得该总线的速度支持等于且超过每秒4.2G比特的线路速率。
优选物理上使用包括多个互连集成电路芯片的电路板实现图12所示的引擎10。这些芯片优选包括:为执行所希望功能而配置的商业上现成的芯片的组合(例如,NP 200),以及为执行所希望功能而设计的定制处理芯片(FPGA结构包括一个适当的实施方案;定制芯片包括另一个选择方案)。用于引擎10的必需的存储器和其它功能组件可被嵌进所包括的集成电路芯片中或作为分离元件而提供。
尽管公开了优选仅用硬件实施,但是本领域的技术人员能够理解也可在基于软件的解决方案中实施所公开的功能性,以应用于不需要非常高的线路速率处理的情况。
尽管本发明方法和装置的优选实施例已在附图中示出并在前述的详细描述中描述,应当理解本发明并不限于公开的实施例,而是如同在后面的权利要求书中提出和定义的,在不偏离本发明的精神下能够进行多种调整、修改和替换。
Claims (63)
1.一种模式匹配装置,其以硬件的方式实现并且能够以非锚定方式匹配多字节数据流模式与多字节库模式。
2.根据权利要求1的装置,其中该模式匹配装置运行以匹配线路速率大于或等于每秒1G比特的数据流。
3.根据权利要求2的装置,其中该模式匹配装置运行以匹配线路速率大于或等于每秒2G比特的数据流。
4.根据权利要求3的装置,其中该模式匹配装置运行以匹配线路速率大于或等于每秒2.4G比特的数据流。
5.根据权利要求1的装置,其中该模式匹配装置接收包括数据包有效载荷的数据流,其中执行与数据包有效载荷有关的非锚定匹配。
6.根据权利要求1的装置,其中该模式匹配装置接收包括具有头和有效载荷的数据包的数据流,其中执行与数据包头和有效载荷有关的非锚定匹配。
7.根据权利要求1的装置,还包括:
移位寄存器,存储数据流的串部分并且能够将串部分分成多个重叠相邻流字节块;
查找表,存储库模式的重叠相邻表字节块,该查找表并行接收用于串部分的流字节块,同时查找所存储的表字节块;以及
逻辑电路,能够收集并行查找的结果并且处理这些结果以进行匹配判定。
8.根据权利要求7装置,其中该数据流包括多种数据字节,该移位寄存器还能够在每个时钟周期将包括多个数据字节的块移入寄存器。
9.根据权利要求8的装置,其中在该寄存器内每个块移位保留至少一个相邻的串之间共有的字节。
10.根据权利要求7的装置,其中查找表包括多个查找表,每个查找表存储用于待寻找的不同类库模式的重叠相邻表字节块。
11.根据权利要求10的装置,其中不同类库模式包括用于每个查找表的不同长度的模式。
12.根据权利要求10的装置,其中不同类库模式包括用于每个查找表的不同业务流类别的模式。
13.根据权利要求12的装置,还包括业务流处理器,其能够在模式匹配之前检查和分类该数据流;该逻辑电路还包括逻辑处理,其在匹配判定中强调从查找表收集的那些结果,该查找表的业务流类别模式与数据流分类有关。
14.根据权利要求10的装置,其中将用于该串部分的流字节块同时并行应用到多个查找表。
15.根据权利要求10的装置,其中逻辑电路包括用于处理从每个查找表收集的结果的单独逻辑处理。
16.根据权利要求7的装置,其中移位寄存器具有N个单元并且库模式具有P个字节,其中N=P。
17.根据权利要求7的装置,其中移位寄存器具有N个单元并且库模式具有P个字节,其中N<P。
18.根据权利要求7的装置,其中移位寄存器具有N个单元并且库模式具有P个字节,其中N>P。
19.根据权利要求7的装置,还包括杂凑表,在应用查找表之前,该杂凑表处理流字节块。
20.根据权利要求7的装置,其中串部分是将与库模式进行匹配的流模式。
21.根据权利要求7的装置,其中串部分是将与库模式进行匹配的流模式的一部分。
22.根据权利要求7的装置,其中串部分包括将与库模式进行匹配的流模式。
23.根据权利要求7的装置,其中数据流包括多种数据字节,该移位寄存器还能够在每个时钟周期将包括多个数据字节的块移入寄存器,该装置还包括历史存储器,用于存储与以前块的数据字节的流字节块有关的以前时钟周期中从查找表收集的查找结果,该逻辑电路能够处理来自当前时钟周期的收集结果以及来自以前时钟周期的存储结果以进行匹配判定。
24.根据权利要求23的装置,其中历史存储器存储与多个以前时钟周期有关的从查找表收集的查找结果。
25.根据权利要求23的装置,其中数据流包括多个不同流的交错数据包,历史存储器存储与每个流有关的从先前时钟周期收集的查找结果,并且逻辑电路能够处理与当前正在寄存器中的流的数据字节有关的、来自历史存储器的存储结果。
26.根据权利要求7的装置,还包括解码器,其能够在模式匹配之前解码数据流的编码部分。
27.根据权利要求26的装置,其中库模式的重叠相邻表字节块存储在按编码格式和解码格式的查找表中,并且进行与数据流的编码部分和解码部分有关的匹配判定。
28.根据权利要求7的装置,还包括重新组装缓冲器,其能够在模式匹配之前重新组合数据流中无次序的数据包。
29.根据权利要求1的装置,其中模式匹配装置接收包括多个不同流的交错数据包的数据流,其中执行与每个流的数据包有关的非锚定匹配。
30.一种匹配多个字节流模式与多个字节库模式的方法,将多个字节库模式分成重叠相邻表字节块,包括如下步骤:
接收数据流的串部分;
将串部分分成多个重叠相邻流字节块;
判定每个流字节块是否与重叠相邻表字节块匹配;
逻辑组合判定步骤的结果以进行匹配判定。
31.根据权利要求30的方法,其中数据流包括多个不同流的交错数据包,并且逻辑组合步骤包括进行与每个流有关的匹配判定的步骤。
32.根据权利要求30的方法,其中数据流包括多个不同流的交错数据包,该方法还包括确定某个包属于的哪个流的步骤,逻辑组合步骤包括在匹配判定中考虑与某个包所属的那个流相关的结果的步骤。
33.根据权利要求30的方法,其中判定步骤包括并行匹配多个重叠相邻流字节块与重叠相邻表字节块的步骤。
34.根据权利要求30的方法,还包括在查找表中存储重叠相邻表字节块的步骤。
35.根据权利要求30的方法,还包括在多个查找表中存储重叠相邻表字节块的步骤,每个查找表存储用于待寻找的不同类库模式的重叠相邻表字节块。
36.根据权利要求35的方法,其中不同类库模式包括用于每个查找表的不同长度的模式。
37.根据权利要求35的方法,其中不同类库模式包括用于每个查找表的不同业务流类别的模式。
38.根据权利要求37的方法,还包括步骤:
在模式匹配之前对数据流分类;
其中逻辑组合步骤包括在匹配判定中强调从查找表收集的那些结果,该查找表的业务流类别模式与数据流分类有关。
39.根据权利要求35的方法,其中将用于串部分的流字节块同时并行应用到多个查找表。
40.根据权利要求35的方法,其中逻辑组合步骤包括在匹配判定中单独处理从每个查找表收集的结果的步骤。
41.根据权利要求30的方法,其中以非锚定方式执行匹配。
42.根据权利要求41的方法,其中数据流包括数据包有效载荷,其中执行与数据包有效载荷有关的非锚定匹配。
43.根据权利要求41的方法,其中数据流包括具有头和有效载荷的数据包,其中执行与数据包头和有效载荷有关的非锚定匹配。
44.根据权利要求30的方法,其中在线路速率大于或等于每秒1G比特的数据流上发生匹配。
45.根据权利要求44的方法,其中在线路速率大于或等于每秒2G比特的数据流上发生匹配。
46.根据权利要求45的方法,其中在线路速率大于或等于每秒2.4G比特的数据流上发生匹配。
47.一种模式匹配器,包括:
移位寄存器,连接该移位寄存器以接收包括多个字节数据流模式的数据流,移位寄存器将接收的数据流的存储串部分分成重叠相邻子串;
查找表,通过移位寄存器访问该查找表以同步并行搜索每个重叠相邻子串,查找表产生指示重叠相邻子串是否存在的每个搜索的返回;以及
累加器,收集来自查找表的返回并确定多个字节数据流模式是否匹配多个字节库模式。
48.根据权利要求47的模式匹配器,其中数据流包括多个不同流的交错包,并且累加器运行以进行与每个流有关的匹配判定。
49.根据权利要求47的模式匹配器,其中数据流包括多个不同流的交错包,每个包具有使该包和不同流中的某一个相关联的状态,模式匹配器判定包状态,并且累加器在匹配判定中收集与该包所属的、由判定的状态所指示的某个流相关联的返回。
50.根据权利要求47的模式匹配器,其中以非锚定方式执行与数据流有关的、多个字节数据流模式与多个字节库模式的匹配。
51.根据权利要求50的模式匹配器,其中在线路速率超过每秒1G比特的数据流上执行多个字节数据流模式与多个字节库模式的匹配。
52.根据权利要求50的模式匹配器,其中在线路速率超过每秒2G比特的数据流上执行多个字节数据流模式与多个字节库模式的匹配。
53.根据权利要求47的模式匹配器,其中数据流包括多种数据字节,移位寄存器还能够在每个时钟周期中将包括多个数据字节的块移入寄存器。
54.根据权利要求47的模式匹配器,其中将每个多字节库模式分成存储在查找表中的重叠相邻表字节块,当重叠相邻子串与重叠相邻表字节块中的一个匹配时,查找表产生指示该重叠相邻子串存在的返回。
55.根据权利要求54的模式匹配器,其中查找表包括多个查找表,每个查找表存储用于不同类库模式的重叠相邻表字节块。
56.根据权利要求55的模式匹配器,其中不同类库模式包括用于每个查找表的不同长度的模式。
57.根据权利要求55的匹配模式器,其中不同类库模式包括用于每个查找表的不同业务流特征的模式。
58.根据权利要求57的匹配模式器,还包括数据流处理器,其能够在模式匹配之前辨别数据流的特征,累加器还包括逻辑处理,该逻辑处理在模式决定中强调从查找表收集的那些返回,该查找表的业务流特征模式与数据流特征有关。
59.根据权利要求55的匹配模式器,其中累加器包括用于组合从不同查找表收集的返回的单独逻辑处理。
60.根据权利要求47的模式匹配器,还包括杂凑表,在应用查找表之前,该杂凑表将每个流字节块的位地址转换成减小的位地址。
61.根据权利要求47的模式匹配器,还包括历史存储器,用于存储以前时钟周期中从查找表收集的查找返回,累加器包括逻辑处理,用于将来自当前时钟周期的收集返回和来自以前时钟周期的存储返回组合,以进行匹配判定。
62.根据权利要求47的模式匹配器,还包括解码器,其能够在模式匹配之前解码数据流的编码部分。
63.根据权利要求47的模式匹配器,还包括重新组装缓冲器,其能够在模式匹配之前重新组合数据流中无次序的数据包。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/358,409 | 2003-02-04 | ||
US10/358,409 US7134143B2 (en) | 2003-02-04 | 2003-02-04 | Method and apparatus for data packet pattern matching |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1748205A true CN1748205A (zh) | 2006-03-15 |
CN100472479C CN100472479C (zh) | 2009-03-25 |
Family
ID=32771185
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2004800034816A Expired - Fee Related CN100472479C (zh) | 2003-02-04 | 2004-02-04 | 数据包模式匹配的方法和装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US7134143B2 (zh) |
EP (1) | EP1590740A4 (zh) |
CN (1) | CN100472479C (zh) |
WO (1) | WO2004070575A2 (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101009660B (zh) * | 2007-01-19 | 2010-06-30 | 杭州华三通信技术有限公司 | 处理分段报文模式匹配的通用方法及装置 |
CN101854341A (zh) * | 2009-03-31 | 2010-10-06 | 国际商业机器公司 | 用于数据流的模式匹配方法和装置 |
CN101296114B (zh) * | 2007-04-29 | 2011-04-20 | 国际商业机器公司 | 基于流的并行模式匹配方法和系统 |
CN101026576B (zh) * | 2007-01-19 | 2012-09-19 | 杭州华三通信技术有限公司 | 兼顾匹配策略的处理分段报文串模式匹配的方法及装置 |
CN104834689A (zh) * | 2015-04-22 | 2015-08-12 | 上海微小卫星工程中心 | 一种码流类型快速识别方法 |
CN106663060A (zh) * | 2014-10-07 | 2017-05-10 | 谷歌公司 | 用于缓存线路去重的方法和系统 |
Families Citing this family (107)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7398389B2 (en) * | 2001-12-20 | 2008-07-08 | Coretrace Corporation | Kernel-based network security infrastructure |
US8209756B1 (en) | 2002-02-08 | 2012-06-26 | Juniper Networks, Inc. | Compound attack detection in a computer network |
US20040196849A1 (en) * | 2003-02-13 | 2004-10-07 | Nokia Corporation | Method for signaling streaming quality adaptation and control mechanisms in multimedia streaming |
KR100490729B1 (ko) * | 2003-05-20 | 2005-05-24 | 한국전자통신연구원 | 보안 게이트웨이 시스템과 이를 이용한 침입 탐지 방법 |
US7840696B2 (en) * | 2003-07-25 | 2010-11-23 | Broadcom Corporation | Apparatus and method for classifier identification |
US7620988B1 (en) * | 2003-07-25 | 2009-11-17 | Symantec Corporation | Protocol identification by heuristic content analysis |
US8364833B2 (en) * | 2003-09-11 | 2013-01-29 | Bae Systems Plc | Real-time network monitoring and security |
US7483384B2 (en) * | 2003-09-22 | 2009-01-27 | Hewlett-Packard Development Company, L.P. | System and method for monitoring network traffic |
US7516492B1 (en) * | 2003-10-28 | 2009-04-07 | Rsa Security Inc. | Inferring document and content sensitivity from public account accessibility |
US7634500B1 (en) * | 2003-11-03 | 2009-12-15 | Netlogic Microsystems, Inc. | Multiple string searching using content addressable memory |
US7870161B2 (en) | 2003-11-07 | 2011-01-11 | Qiang Wang | Fast signature scan |
US20050114224A1 (en) * | 2003-11-24 | 2005-05-26 | Hodges Donna K. | Methods for providing communications services |
US7509373B2 (en) | 2003-11-24 | 2009-03-24 | At&T Intellectual Property I, L.P. | Methods for providing communications services |
US7467219B2 (en) * | 2003-11-24 | 2008-12-16 | At&T Intellectual Property I, L.P. | Methods for providing communications services |
US7526804B2 (en) * | 2004-02-02 | 2009-04-28 | Microsoft Corporation | Hardware assist for pattern matches |
US7895448B1 (en) * | 2004-02-18 | 2011-02-22 | Symantec Corporation | Risk profiling |
CN101401090B (zh) * | 2004-04-19 | 2010-08-25 | 加利福尼亚大学董事会 | 深度包过滤器及深度包过滤方法 |
US7835361B1 (en) | 2004-10-13 | 2010-11-16 | Sonicwall, Inc. | Method and apparatus for identifying data patterns in a file |
US7600257B2 (en) * | 2004-10-13 | 2009-10-06 | Sonicwall, Inc. | Method and an apparatus to perform multiple packet payloads analysis |
KR100622670B1 (ko) * | 2004-12-07 | 2006-09-19 | 한국전자통신연구원 | 알려지지 않은 네트워크 공격에 대한 실시간 공격 패턴 검출 시스템 및 그 방법 |
US7809826B1 (en) | 2005-01-27 | 2010-10-05 | Juniper Networks, Inc. | Remote aggregation of network traffic profiling data |
US7769851B1 (en) | 2005-01-27 | 2010-08-03 | Juniper Networks, Inc. | Application-layer monitoring and profiling network traffic |
US7937755B1 (en) * | 2005-01-27 | 2011-05-03 | Juniper Networks, Inc. | Identification of network policy violations |
US7810151B1 (en) | 2005-01-27 | 2010-10-05 | Juniper Networks, Inc. | Automated change detection within a network environment |
US7797411B1 (en) | 2005-02-02 | 2010-09-14 | Juniper Networks, Inc. | Detection and prevention of encapsulated network attacks using an intermediate device |
US7765183B2 (en) * | 2005-04-23 | 2010-07-27 | Cisco Technology, Inc | Hierarchical tree of deterministic finite automata |
FR2888695A1 (fr) * | 2005-07-13 | 2007-01-19 | France Telecom | Detection d'une intrusion par detournement de paquets de donnees dans un reseau de telecommunication |
US7716739B1 (en) * | 2005-07-20 | 2010-05-11 | Symantec Corporation | Subjective and statistical event tracking incident management system |
JP2009507292A (ja) * | 2005-09-05 | 2009-02-19 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | 分離したシリアルモジュールを備えるプロセッサアレイ |
US8166547B2 (en) | 2005-09-06 | 2012-04-24 | Fortinet, Inc. | Method, apparatus, signals, and medium for managing a transfer of data in a data network |
US7353332B2 (en) * | 2005-10-11 | 2008-04-01 | Integrated Device Technology, Inc. | Switching circuit implementing variable string matching |
US7900255B1 (en) * | 2005-10-18 | 2011-03-01 | Mcafee, Inc. | Pattern matching system, method and computer program product |
US20070115833A1 (en) * | 2005-11-21 | 2007-05-24 | Gerald Pepper | Varying the position of test information in data units |
US7853578B1 (en) * | 2005-12-09 | 2010-12-14 | Marvell International Ltd. | High-performance pattern matching |
US8397284B2 (en) * | 2006-01-17 | 2013-03-12 | University Of Maryland | Detection of distributed denial of service attacks in autonomous system domains |
GB2434945B (en) * | 2006-01-31 | 2008-04-09 | Roke Manor Research | A method of filtering high data rate traffic |
US20070204344A1 (en) * | 2006-02-26 | 2007-08-30 | Chun Xue | Parallel Variable Length Pattern Matching Using Hash Table |
US20100306209A1 (en) * | 2006-07-22 | 2010-12-02 | Tien-Fu Chen | Pattern matcher and its matching method |
US7644080B2 (en) * | 2006-09-19 | 2010-01-05 | Netlogic Microsystems, Inc. | Method and apparatus for managing multiple data flows in a content search system |
US7539031B2 (en) * | 2006-09-19 | 2009-05-26 | Netlogic Microsystems, Inc. | Inexact pattern searching using bitmap contained in a bitcheck command |
US7624105B2 (en) * | 2006-09-19 | 2009-11-24 | Netlogic Microsystems, Inc. | Search engine having multiple co-processors for performing inexact pattern search operations |
US7529746B2 (en) * | 2006-09-19 | 2009-05-05 | Netlogic Microsystems, Inc. | Search circuit having individually selectable search engines |
US7783654B1 (en) | 2006-09-19 | 2010-08-24 | Netlogic Microsystems, Inc. | Multiple string searching using content addressable memory |
US7539032B2 (en) * | 2006-09-19 | 2009-05-26 | Netlogic Microsystems, Inc. | Regular expression searching of packet contents using dedicated search circuits |
US7636717B1 (en) | 2007-01-18 | 2009-12-22 | Netlogic Microsystems, Inc. | Method and apparatus for optimizing string search operations |
US20080196104A1 (en) * | 2007-02-09 | 2008-08-14 | George Tuvell | Off-line mms malware scanning system and method |
US7630982B2 (en) | 2007-02-24 | 2009-12-08 | Trend Micro Incorporated | Fast identification of complex strings in a data stream |
US8863286B1 (en) | 2007-06-05 | 2014-10-14 | Sonicwall, Inc. | Notification for reassembly-free file scanning |
US7991723B1 (en) | 2007-07-16 | 2011-08-02 | Sonicwall, Inc. | Data pattern analysis using optimized deterministic finite automaton |
US8024802B1 (en) | 2007-07-31 | 2011-09-20 | Hewlett-Packard Development Company, L.P. | Methods and systems for using state ranges for processing regular expressions in intrusion-prevention systems |
US8448249B1 (en) | 2007-07-31 | 2013-05-21 | Hewlett-Packard Development Company, L.P. | Methods and systems for using lambda transitions for processing regular expressions in intrusion-prevention systems |
US9270641B1 (en) | 2007-07-31 | 2016-02-23 | Hewlett Packard Enterprise Development Lp | Methods and systems for using keywords preprocessing, Boyer-Moore analysis, and hybrids thereof, for processing regular expressions in intrusion-prevention systems |
US7643353B1 (en) | 2007-10-25 | 2010-01-05 | Netlogic Microsystems, Inc. | Content addressable memory having programmable interconnect structure |
US20090171936A1 (en) * | 2007-12-28 | 2009-07-02 | Sybase, Inc. | System, Method, and Computer Program Product for Accelerating Like Conditions |
US7962490B1 (en) * | 2008-01-07 | 2011-06-14 | Amdocs Software Systems Limited | System, method, and computer program product for analyzing and decomposing a plurality of rules into a plurality of contexts |
US8862619B1 (en) | 2008-01-07 | 2014-10-14 | Amdocs Software Systems Limited | System, method, and computer program product for filtering a data stream utilizing a plurality of contexts |
US8959199B2 (en) * | 2008-03-18 | 2015-02-17 | Reduxio Systems Ltd. | Network storage system for a download intensive environment |
WO2009126231A1 (en) * | 2008-04-07 | 2009-10-15 | Telecommunication Systems, Inc | Proximity search for point-of-interest names combining inexact string match with an expanding radius search |
US9032503B2 (en) * | 2008-05-20 | 2015-05-12 | Shakeel Mustafa | Diversity string based pattern matching |
US20090297043A1 (en) * | 2008-05-28 | 2009-12-03 | International Business Machines Corporation | Pattern scanner and editor for security audit systems |
US7924589B1 (en) | 2008-06-03 | 2011-04-12 | Netlogic Microsystems, Inc. | Row redundancy for content addressable memory having programmable interconnect structure |
US8856926B2 (en) * | 2008-06-27 | 2014-10-07 | Juniper Networks, Inc. | Dynamic policy provisioning within network security devices |
US8589436B2 (en) * | 2008-08-29 | 2013-11-19 | Oracle International Corporation | Techniques for performing regular expression-based pattern matching in data streams |
US8813221B1 (en) | 2008-09-25 | 2014-08-19 | Sonicwall, Inc. | Reassembly-free deep packet inspection on multi-core hardware |
US8103764B2 (en) * | 2008-10-14 | 2012-01-24 | CacheIQ, Inc. | Method and apparatus for matching trigger pattern |
US8935293B2 (en) | 2009-03-02 | 2015-01-13 | Oracle International Corporation | Framework for dynamically generating tuple and page classes |
US8291497B1 (en) * | 2009-03-20 | 2012-10-16 | Symantec Corporation | Systems and methods for byte-level context diversity-based automatic malware signature generation |
US9769149B1 (en) | 2009-07-02 | 2017-09-19 | Sonicwall Inc. | Proxy-less secure sockets layer (SSL) data inspection |
US7924590B1 (en) | 2009-08-10 | 2011-04-12 | Netlogic Microsystems, Inc. | Compiling regular expressions for programmable content addressable memory devices |
US7916510B1 (en) | 2009-08-10 | 2011-03-29 | Netlogic Microsystems, Inc. | Reformulating regular expressions into architecture-dependent bit groups |
US8614955B2 (en) * | 2009-09-22 | 2013-12-24 | Ixia | Misdirected packet detection apparatus and method |
US8782787B2 (en) | 2009-10-28 | 2014-07-15 | Hewlett-Packard Development Company, L.P. | Distributed packet flow inspection and processing |
WO2011053324A1 (en) * | 2009-10-31 | 2011-05-05 | Hewlett-Packard Development Company, L.P. | Malicious code detection |
US8959106B2 (en) | 2009-12-28 | 2015-02-17 | Oracle International Corporation | Class loading using java data cartridges |
US9305057B2 (en) | 2009-12-28 | 2016-04-05 | Oracle International Corporation | Extensible indexing framework using data cartridges |
US9430494B2 (en) | 2009-12-28 | 2016-08-30 | Oracle International Corporation | Spatial data cartridge for event processing systems |
US8527488B1 (en) | 2010-07-08 | 2013-09-03 | Netlogic Microsystems, Inc. | Negative regular expression search operations |
US8713049B2 (en) | 2010-09-17 | 2014-04-29 | Oracle International Corporation | Support for a parameterized query/view in complex event processing |
US8862603B1 (en) | 2010-11-03 | 2014-10-14 | Netlogic Microsystems, Inc. | Minimizing state lists for non-deterministic finite state automatons |
US9189280B2 (en) | 2010-11-18 | 2015-11-17 | Oracle International Corporation | Tracking large numbers of moving objects in an event processing system |
US8990416B2 (en) | 2011-05-06 | 2015-03-24 | Oracle International Corporation | Support for a new insert stream (ISTREAM) operation in complex event processing (CEP) |
US9329975B2 (en) | 2011-07-07 | 2016-05-03 | Oracle International Corporation | Continuous query language (CQL) debugger in complex event processing (CEP) |
CN103188042B (zh) * | 2011-12-31 | 2016-03-30 | 重庆重邮信科通信技术有限公司 | 一种ip数据包的匹配方法和匹配加速器 |
US10432587B2 (en) | 2012-02-21 | 2019-10-01 | Aventail Llc | VPN deep packet inspection |
US20140019486A1 (en) * | 2012-07-13 | 2014-01-16 | Amitava Majumdar | Logic Content Processing for Hardware Acceleration of Multi-Pattern Search |
JP2015528263A (ja) | 2012-07-31 | 2015-09-24 | ヒューレット−パッカード デベロップメント カンパニー エル.ピー.Hewlett‐Packard Development Company, L.P. | ネットワークトラフィック処理システム |
US9563663B2 (en) | 2012-09-28 | 2017-02-07 | Oracle International Corporation | Fast path evaluation of Boolean predicates |
US11288277B2 (en) | 2012-09-28 | 2022-03-29 | Oracle International Corporation | Operator sharing for continuous queries over archived relations |
US10956422B2 (en) | 2012-12-05 | 2021-03-23 | Oracle International Corporation | Integrating event processing with map-reduce |
US10298444B2 (en) | 2013-01-15 | 2019-05-21 | Oracle International Corporation | Variable duration windows on continuous data streams |
US9098587B2 (en) | 2013-01-15 | 2015-08-04 | Oracle International Corporation | Variable duration non-event pattern matching |
US9047249B2 (en) | 2013-02-19 | 2015-06-02 | Oracle International Corporation | Handling faults in a continuous event processing (CEP) system |
US9390135B2 (en) | 2013-02-19 | 2016-07-12 | Oracle International Corporation | Executing continuous event processing (CEP) queries in parallel |
US9418113B2 (en) | 2013-05-30 | 2016-08-16 | Oracle International Corporation | Value based windows on relations in continuous data streams |
US9934279B2 (en) | 2013-12-05 | 2018-04-03 | Oracle International Corporation | Pattern matching across multiple input data streams |
US9244978B2 (en) | 2014-06-11 | 2016-01-26 | Oracle International Corporation | Custom partitioning of a data stream |
US9712645B2 (en) | 2014-06-26 | 2017-07-18 | Oracle International Corporation | Embedded event processing |
US9886486B2 (en) | 2014-09-24 | 2018-02-06 | Oracle International Corporation | Enriching events with dynamically typed big data for event processing |
US10120907B2 (en) | 2014-09-24 | 2018-11-06 | Oracle International Corporation | Scaling event processing using distributed flows and map-reduce operations |
WO2017018901A1 (en) | 2015-07-24 | 2017-02-02 | Oracle International Corporation | Visually exploring and analyzing event streams |
WO2017135838A1 (en) | 2016-02-01 | 2017-08-10 | Oracle International Corporation | Level of detail control for geostreaming |
WO2017135837A1 (en) | 2016-02-01 | 2017-08-10 | Oracle International Corporation | Pattern based automated test data generation |
CN106790170B (zh) * | 2016-12-29 | 2020-05-12 | 杭州迪普科技股份有限公司 | 一种数据包过滤方法及装置 |
US10673816B1 (en) * | 2017-04-07 | 2020-06-02 | Perspecta Labs Inc. | Low delay network intrusion prevention |
US9967272B1 (en) | 2017-12-05 | 2018-05-08 | Redberry Systems, Inc. | Real-time regular expression search engine |
US11057769B2 (en) | 2018-03-12 | 2021-07-06 | At&T Digital Life, Inc. | Detecting unauthorized access to a wireless network |
US11676052B2 (en) * | 2020-04-15 | 2023-06-13 | Micron Technology, Inc. | Apparatuses and methods for inference processing on edge devices |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5051947A (en) * | 1985-12-10 | 1991-09-24 | Trw Inc. | High-speed single-pass textual search processor for locating exact and inexact matches of a search pattern in a textual stream |
AU624205B2 (en) * | 1989-01-23 | 1992-06-04 | General Electric Capital Corporation | Variable length string matcher |
JP2501771B2 (ja) * | 1993-01-19 | 1996-05-29 | インターナショナル・ビジネス・マシーンズ・コーポレイション | 不所望のソフトウェア・エンティティの複数の有効なシグネチャを得る方法及び装置 |
US6097724A (en) * | 1997-08-15 | 2000-08-01 | Lucent Technologies Inc. | Ram-based associative content-addressable memory device, method of operation thereof and ATM communication switching system employing the same |
US6430184B1 (en) * | 1998-04-10 | 2002-08-06 | Top Layer Networks, Inc. | System and process for GHIH-speed pattern matching for application-level switching of data packets |
US6954775B1 (en) * | 1999-01-15 | 2005-10-11 | Cisco Technology, Inc. | Parallel intrusion detection sensors with load balancing for high speed networks |
US6578147B1 (en) * | 1999-01-15 | 2003-06-10 | Cisco Technology, Inc. | Parallel intrusion detection sensors with load balancing for high speed networks |
US20020116521A1 (en) * | 2001-02-22 | 2002-08-22 | Denis Paul | Soft multi-contract rate policing |
EP1436936A4 (en) * | 2001-09-12 | 2006-08-02 | Safenet Inc | RECOGNITION OF FORMS OF HIGH-SPEED DATA FLOW |
US6944670B2 (en) * | 2002-03-13 | 2005-09-13 | Commatch Ltd. | Method and apparatus for multiple processing of a plurality of communication protocols on a single processing machine |
US7093023B2 (en) * | 2002-05-21 | 2006-08-15 | Washington University | Methods, systems, and devices using reprogrammable hardware for high-speed processing of streaming data to find a redefinable pattern and respond thereto |
US7017186B2 (en) * | 2002-07-30 | 2006-03-21 | Steelcloud, Inc. | Intrusion detection system using self-organizing clusters |
-
2003
- 2003-02-04 US US10/358,409 patent/US7134143B2/en not_active Expired - Fee Related
-
2004
- 2004-02-04 WO PCT/US2004/003047 patent/WO2004070575A2/en active Application Filing
- 2004-02-04 CN CNB2004800034816A patent/CN100472479C/zh not_active Expired - Fee Related
- 2004-02-04 EP EP04708139A patent/EP1590740A4/en not_active Withdrawn
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101009660B (zh) * | 2007-01-19 | 2010-06-30 | 杭州华三通信技术有限公司 | 处理分段报文模式匹配的通用方法及装置 |
CN101026576B (zh) * | 2007-01-19 | 2012-09-19 | 杭州华三通信技术有限公司 | 兼顾匹配策略的处理分段报文串模式匹配的方法及装置 |
CN101296114B (zh) * | 2007-04-29 | 2011-04-20 | 国际商业机器公司 | 基于流的并行模式匹配方法和系统 |
CN101854341A (zh) * | 2009-03-31 | 2010-10-06 | 国际商业机器公司 | 用于数据流的模式匹配方法和装置 |
CN101854341B (zh) * | 2009-03-31 | 2014-03-12 | 国际商业机器公司 | 用于数据流的模式匹配方法和装置 |
CN106663060A (zh) * | 2014-10-07 | 2017-05-10 | 谷歌公司 | 用于缓存线路去重的方法和系统 |
CN106663060B (zh) * | 2014-10-07 | 2019-11-19 | 谷歌有限责任公司 | 用于缓存线路去重的方法和系统 |
CN104834689A (zh) * | 2015-04-22 | 2015-08-12 | 上海微小卫星工程中心 | 一种码流类型快速识别方法 |
CN104834689B (zh) * | 2015-04-22 | 2019-02-01 | 上海微小卫星工程中心 | 一种码流类型快速识别方法 |
Also Published As
Publication number | Publication date |
---|---|
EP1590740A2 (en) | 2005-11-02 |
US20040151382A1 (en) | 2004-08-05 |
CN100472479C (zh) | 2009-03-25 |
US7134143B2 (en) | 2006-11-07 |
WO2004070575A2 (en) | 2004-08-19 |
EP1590740A4 (en) | 2008-12-10 |
WO2004070575A3 (en) | 2005-06-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1748205A (zh) | 数据包模式匹配的方法和装置 | |
JP4554675B2 (ja) | 通信制御装置及び通信制御システム | |
CN101052934A (zh) | 用于检测网络上未经授权的扫描的方法、系统和计算机程序 | |
CN1836245A (zh) | 用于高吞吐量基于签名的网络应用的集成电路设备和方法 | |
CN1146178C (zh) | 用于数据处理的方法和装置 | |
JP4598127B2 (ja) | ステートフルなパケット内容マッチング機構 | |
CN1309214C (zh) | 基于协同入侵检测的大规模网络安全防御系统 | |
CN101075256A (zh) | 数据库实时审计分析系统及方法 | |
US20070022468A1 (en) | Packet transmission equipment and packet transmission system | |
CN1679295A (zh) | 基于硬件的分组过滤加速器 | |
CN1838670A (zh) | 使用多处理单元架构的系统安全防护方法与相关装置 | |
KR20070103502A (ko) | 통신 제어 장치 | |
US20140254379A1 (en) | Traffic classification and control on a network node | |
CN101827084A (zh) | 网络设备的高效的应用程序识别 | |
CN103841096A (zh) | 自动调整匹配算法的入侵检测方法 | |
CN101039326A (zh) | 业务流识别方法、装置及分布式拒绝服务攻击防御方法、系统 | |
CN1879354A (zh) | 使用反模式匹配的网络消息处理 | |
CN104022924A (zh) | 一种http通信内容检测的方法 | |
EP1698987B1 (en) | System and method for secure full-text indexing | |
US10291632B2 (en) | Filtering of metadata signatures | |
CN100338548C (zh) | 非接触式通信方法和系统 | |
US9973471B2 (en) | Protection method and computer system thereof for firewall apparatus disposed to application layer | |
CN102217248B (zh) | 分布式分组流检查和处理 | |
CN1855086A (zh) | 一种分析和提取数字证据的取证分析系统和方法 | |
CN110245195A (zh) | 基于蜜罐系统的结构化查询语言注入检测方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20090325 Termination date: 20140204 |