确定有限自动机的混合表示的制作方法

文档序号:7705910阅读:204来源:国知局

专利名称::确定有限自动机的混合表示的制作方法确定有限自动机的混合表示
背景技术
:诸如入侵检测和防御(IDP)设备的安全设备已在服务提供和企业网络中变为一个关键部件。由IDP设备利用来识别攻击、威胁和/或恶毒流量的传统技术是基于签名的。这些签名典型地为正则表达(如串)或子串的形式,这些正则表达或子串转换为不确定有限自动机(NFA)或确定有限自动机(DFA),并被用作通过匹配引擎来比较网络流量中的一串字节或包序列的图案。虽然存在多种方式来表示DFA,但是由于正则表达中通配符数量的增加、DFA状态数量的增加(这些增加有时以指数形式),DFA易于状态爆炸(stateexplosion)。因此,对于任意DFA表示,通常在存储器消耗和匹配速度之间存在一个权衡。
发明内容根据一个实现,由设备执行的方法可以包括通过该设备接收数据单元;通过该设备确定当前状态是否为位图状态,当前状态与确定有限自动机(DFA)相关联,确定有限自动机包括位图形式的一部分状态和DFA表形式的其余部分的状态;当确定当前状态不是位图状态时,通过该设备确定对应于数据单元的值是否大于阈值;当确定对应于数据单元的值大于阈值时,通过该设备确定当前状态是否不敏感,其中不敏感表示对当前状态每一个下一个状态都是相同的状态;以及当确定当前状态不敏感时,通过该设备选择一个缺省状态作为对当前状态的下一个状态。根据另一个实现,网络设备包括处理器、存储器以及通信接口,来接收数据单元;确定当前状态是否为位图状态,该当前状态与确定有限自动机(DFA)相关联,确定有限自动机包括位图形式的一部分状态和DFA表形式的其余部分的状态;当确定当前状态不是位图状态时,确定对应于数据单元的数据值是否大于阈值美国信息交换标准编码(ASCII)值;当确定对应于数据单元的数据值大于阈值ASCII值时,确定当前状态是否不敏感,其中不敏感表示对当前状态每一个下一个状态都是相同的状态;当确定当前状态不敏感时,选择缺省值作为对当前状态的下一个状态;并且确定下一个状态是否对应于表示威胁、攻击或恶意流量的最终状态。根据又一个实现,其上存储有由至少一个处理器执行的指令的计算机可读介质可以包括用于接收数据单元的一个或多个指令;用于确定当前状态是否为位图状态的一个或多个指令,其中当前状态与确定有限自动机(DFA)相关联,确定有限自动机包括位图形式的一部分状态和DFA表形式的其余部分的状态;用于当确定当前状态不是位图状态时确定对应于数据单元的美国信息交换标准编码(ASCII)值是否大于阈值ASCII值的一个或多个指令;用于当确定对应于数据单元的ASCII值大于阈值ASCII值时确定当前状态是否不敏感的一个或多个指令,其中不敏感表示对当前状态每一个下一个状态都是相同的状态;以及当确定当前状态不敏感时,用于选择缺省状态作为对该当前状态的下一个状态的一个或多个指令。根据另一个实现,网络设备可以包括用于存储确定有限自动机(DFA)的装置,确定有限自动机包括位图形式的一部分状态和DFA表形式的其余部分的状态;用于接收数据单元的装置;用于确定与DFA相关联的当前状态是否为位图状态的装置;用于确定对应于数据单元的值是否大于阈值的装置;用于确定当前状态是否不敏感的装置,其中不敏感表示对当前状态每一个下一个状态都是相同的状态;以及当确定该值大于阈值并且当前状态不敏感时,选择缺省状态作为对当前状态的下一个状态的装置。结合于此并构成说明书一部分的附图示出了本文描述的一个或多个实施例,并结合说明书一起对这些实施例加以阐述。在附图中图1是示出了可以实现这里描述的方法、设备和系统的示例性环境的示图;图2是示出了图1中描述的网络设备的示例性部件的示图;图3是图1中描述的网络设备的示例性功能部件的示图;图4A和图4B是图3中描述的DFA表的示例性实现的示图;图5是图3中描述的位图的示例性实现的示图;图6A和6B是示出了对于图案匹配的示例性过程的流程图;图7是DFA状态的示例性表示的示图;以及图8是确定下一个状态的示例性实现的示图。具体实施例方式以下详细描述参照了附图。不同附图中的相同参考标号可以标识相同或类似的元件。此外,以下描述不对本发明构成限制。而是,本发明的范围由所附权利要求及其等价物限定。使用正则表达的字符串的图案(pattern)识别是网络安全设备使用的一种方法。正则表达典型地包括字母、数字、符号等。在这种方法中,DFA引擎可以被用于执行关于网络流量的图案匹配。DFA引擎可以利用DFA表或位图。然而,对于DFA表和位图是存在缺陷的。DFA表的一个缺陷是其易于状态爆炸,其中,由于每个DFA项都需要单独的存储器位置,状态爆炸转换为存储器消耗。另外,可以存在相同的DFA项的巨大数量。S卩,DFA项的巨大数量可以对应于相同的下一个状态。在可选的方法中,DFA项可以利用位图。虽然位图比起DFA表可以显著地减小存储器消耗的大小,但位图也存在缺陷。位图的一个缺陷是其要求通过DFA引擎以将输入字符与位图的项相匹配的两个存储器访问。这与仅要求一个存储器访问的DFA表不同。位图的另一个缺陷是可能需要计算距缺省状态的偏移量以确定下一个状态。这里描述的实施例提供了可以利用DFA表和位图两者来确定下一个状态的方法、设备和系统。在一个实现中,由于输入字符被接收,因此可以确定该输入字符是否具有大于阈值的值(例如,美国信息交换标准编码(ASCII)值)。另外,可以确定当前状态是否不敏感。当输入字符具有大于阈值的值时,每一个下一个状态都是相同的状态时当前状态可以被视为不敏感。如所描述的,可以依靠这些确定来利用DFA表、位图或缺省状态。根据规定的不同,DFA的状态可以在DFA表和位图之间分配。在一个实现中,该分配可以基于在DFA表中表示的频繁访问的状态和在位图中表示的很少访问的状态。由于广泛地描述了的这些实施例,因此这些实施方式存在变化。因此,下面提供了这些实施例的详细描述。示例性环境图1是示出了可以实现这里描述的方法、设备和系统的示例性环境100的示图。如图1所示,环境100可以包括可通信地连接至网络110的终端105。网络110可以包括网络设备115-1和115-2(总称为“网络设备115”)以及资源设备120-1和120_2(总称为“资源设备120”)。设备的数量和环境100中的构造是示例性的并且是简单提供的。在实践中,相比于图1中所示的设备,环境100可以包括更多、更少、不同的、和/或不同排列的设备。同样,描述为由一个设备执行的一些功能可以由不同的设备或多个设备的组合来执行。环境100可以包括这些设备之间有线和/或无线的连接。终端105可以包括具有与其他设备、系统、网络、和/或其他等进行通信的能力的设备。例如,终端105可以对应于计算机(例如,膝上电脑、台式机、手持计算机)、个人数字助理、无线电话、或其他类型的通信设备。网络110可以包括一个或多个任意类型的网络。例如,网络110可以包括有线网络、无线网络、私有网络、公共网络、局域网络(LAN)、城域网络(MAN)、广域网络(WAN)、因特网、企业内部互联网、电话网络(例如,公共交换电话网络(PSTN)或蜂窝网络)、卫星网络、计算机网络、和/或网络的组合。网络设备115可以包括具有与其他设备、系统、网络、和/或其他等进行通信的能力的设备。例如,网络设备115可以对应于安全设备(例如,IDP设备、防火墙)、路由器、交换机、网关、桥路、访问点设备、或可以处理和/或转发网络流量的一些其他类型的设备。虽然网络设备115可以实现为不同类型的设备,在下文中,网络设备115将以IDP设备描述。资源设备120可以包括提供服务、数据或其他类型有用资源的设备。示例性网络设备体系图2是示出了网络设备115的示例性部件的示图。如所示出的,网络设备115可以包括例如总线210、处理器220、存储器230、存储设备240、输入/输出设备250、以及通信接口260。总线210可以允许网络设备115的其他部件之间的通信。例如,总线210可以包括系统总线、地址总线、数据总线、和/或控制总线。总线210还可以包括总线驱动器、总线仲裁器、总线接口、和/或时钟。处理器220可以解释和/或执行指令和/或数据。例如,处理器220可以包括处理器、微处理器、数据处理器、协同处理器、网络处理器、专用集成电路(ASIC)、控制器、可编程逻辑设备、现场可编程门阵列(FPGA)、或可以解释和/或执行指令的一些其他处理逻辑。存储器230可以存储数据和/或指令。例如,存储器230可以包括随机访问存储器(RAM)、动态随机访问存储器(DRAM)、静态随机访问存储器(SRAM)、同步动态随机访问存储器(SDRAM)、只读存储器(ROM)、可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、其他类型的动态或静态存储器、高速缓冲存储器、和/或闪存器。存储设备240可以存储数据、指令、和/或应用程序。例如,存储设备240可以包括与对应的驱动器一起的硬盘(例如,磁盘、光盘、光磁盘等)、光盘(CD)、数字通用光盘(DVD)、软盘、盒式磁带、磁带、闪存盘、或其他类型的计算机可读介质。术语“计算机可读介质”被广泛地解释为包括例如存储器、存储设备或其他类型的介质。计算机可读介质可以在单独的设备中或者在多个设备中以集中的方式或者以分散的方式被实现。输入/输出设备250可以允许输入到网络设备115和从网络设备中输出。例如,输入/输出设备250可以包括键盘、键区、鼠标、按钮、开关、话筒、声音识别逻辑电路、笔、显示器、端口、或允许输入的类似物。另外,或可选地,输入/输出设备250可以包括显示器、扬声器、一个或多个发光二极管(LED)、端口、或允许输出的类似物。通信接口260可以允许网络设备115与其他设备、网络、另一系统、和/或其他等进行通信。例如,通信接口260可以包括无线接口和/或有线接口,诸如以太网接口、光接口等。通信接口260可以包括收发器。网络设备115可以执行与基于DFA的图案匹配有关的操作和/或过程。根据一个示例性实现,网络设备115可以响应于处理器220执行包含在计算机可读介质中的指令序列来执行这些操作和/或过程。例如,软件指令可以从诸如存储设备240的另一个计算机可读介质(或通过通信接口260从其他设备)被读入到存储器230。包含在存储器230中的软件指令可以使处理器220执行将在下面描述的过程。可选地,硬线电路可以被用来代替软件指令或与软件指令结合来实现这里描述的过程。因此,这里描述的实现不限于硬件电路和软件的任何特定的组合。然而,图2示出了网络设备115的示例性部件,在其他实现中,网络设备115相比于这里描述的和图2中所示的部件可以包括更多的、更少的、不同的、或不同排列的部件。附加地,或可选地,所描述的作为由网络设备115的一个特定部件执行的一个或多个操作可以由一个或多个附加的或代替特定部件的其他部件执行。另外,可以理解,环境100中的其他设备(例如终端105和/或资源设备120)可以包括图2所示的示例性部件。图3是网络设备115的示例性功能部件的示图。如图3所示,网络设备115可以包括DFA引擎305、DFA表310、以及位图315。图3所示的功能部件可以由硬件(例如,处理器220、存储器230、存储设备240等)或硬件和软件的组合来实现。部件的具体数量和排列如图3所示,在其他实现方式中,网络设备115相比于图3中所示的部件可以包括更少、更多、不同、或不同排列的部件。另外,可以理解,这些功能部件可以在环境100中的其他设备(例如,终端105和/或资源设备120)中实现。DFA引擎305可以以包的形式接收网络流量。虽然在这里的描述中使用包,但是这里描述的实现可以以包、非包、单元、数据报、位、字节等的形式应用于任意形式的数据单元。DFA引擎305可以执行识别攻击、威胁、恶意流量、和/或内容处理的其他形式所需的图案和签名匹配。通过实例的方式,DFA引擎305可以通过比较数据单元和DFA状态来识别数据单元是否对应于攻击、威胁或恶意流量。例如,代表状态机的DFA可以包括多种DFA状态。DFA状态可以从初始状态转变到一个或多个中间状态,再到表示威胁、攻击或恶意流量的最终状态。然而,与所有DFA状态都在DFA表或位图中表示的现有技术不同。在这里描述的混合DFA中,DFA状态的一部分可以表示在DFA表310中,而DFA状态的剩余部分可以表示在位图315中。在一个实现中,DFA表310可以包括被认为是频繁访问状态的DFA状态,这将在下面更详细描述。附加地,或可选地,位图315可以包括被认为是很少访问的DFA状态,这将在下面更详细描述。DFA表310可以对应于表示DFA状态的数据排列。如上面描述的,DFA表310可以基于从正则表达的变换来生成。位图315可以对应于表示DFA状态的数据排列。位图315可以基于从正则表达的变换来生成。DFA表310和位图315的实例将在下面提供。图4A和图4B是示出了DFA表310的示例性实现的示图。如图4A中所示,DFA表310可以包括下一个状态405。在这个实现中,DFA表310可以对应于下一个状态的256阵列。DFA引擎305可以基于与输入字符相关联的对应的256位ASCII值索引下一个状态405。然而在另一个实现中,DFA表310可以包括下一个状态410。在这个实现中,DFA表310可以对应于下一个状态的128阵列和缺省状态415。在这种情况下,DFA引擎305可以基于对应的128位ASCII值索引下一个状态410,并且剩余的128位ASCII值可以用作缺省状态415的索引。另外,在另一个实现中,DFA表310可以包括更少、更多、或不同的字段和/或字段数量。如前所述,可以利用DFA表310基于接收到的输入确定下一个状态。图5是位图315的示例性实现的示图。如图5中所示,位图315可以包括在其中确定下一个状态的位图字段510。在这个实现中,存在256位字段510,其可以基于256位ASCII值索引。然而,在其他实现中,可以存在128位字段510,其可以基于128位ASCII值索引。另外,在另一个实现中,位图315可以包括更少、更多、或不同的字段,和/或字段数量。每一个位字段510可以具有“0”或“1”的值,如图5所示。如前所述,可以利用位图315基于接收到的输入确定下一个状态。例如,如图5中所示,位图315可以包括缺省状态515、偏移量计算器520以及下一个状态525。在一个示例性实现中,输入字符值可以与位字段510之一匹配。在位字段510对应于值“0”的实例中,下一个状态对应于缺省状态515。然而,在位字段510对应于值“1”的实例中,可以通过偏移计量算器520计算距缺省状态515的偏移量,以从下一个状态525中选择下一个状态。在一个实现中,偏移量计算器520可以基于在这个状态之前值为“1”的位的数量计算偏移量。通过实例的方式,如果当前状态505之前值为“1”的位的数量是2,则偏移量计算器520可以确定偏移量为2,并选择“下一个状态2”作为下一个状态。在下一个状态525中存储的下一个状态可以对应于很少访问的状态。一个状态可以基于N的值被视为是很少访问的,如下面所述。另外,如下面将更详细描述的,当位字段510被表示为128个位字段时,当前状态对输入的128个或更高的ASCII值不敏感时,可以利用缺省状态515作为下一个状态。示例性处理这里描述的实施例提供可以利用DFA表和位图两者来确定下一个状态的方法、设备、和系统。基于下面描述在利用DFA表或利用位图之间进行选择。基于我们对DFA行为的研究,统计分析显示在DFA表中最频繁访问的状态具有小于距初始状态为N的距离。值N可以由整数值表示。值N可以是静态值(例如,用户配置的值)。通过实例的方式,可以假设距初始状态的特定距离(或跳(hop)数)表示最频繁访问的状态。可选地,值N可以是动态值。例如,值N可以通过确定DFA中最频繁访问状态的计数器确定。表1列出了对于研究的所有DFA,具有距初始状态不同距离(即,跳)的状态的百分比。表1<table>tableseeoriginaldocumentpage10</column></row><table>在表1中,跳表示跳的数量或距初始状态的距离。关于每一跳,提供了状态的数量和比率(根据状态的总数量的百分比)。例如,可以假设最频繁访问的状态具有小于4(即,N=4)的距离或跳数。基于表1,如果距当前状态的距离超过用户配置的值(例如,4或选择的一些其他跳数),则由于该状态可以被视为很少访问的状态,该状态可以由位图状态来表示。另一方面,如果距当前状态的距离等于或小于用户配置的值,则该状态可以由DFA表来表示。当N值是动态值时可以执行相似的配置,如前面所描述的。根据存储器消耗,用N表示跳的数量,表示小于N跳的状态的百分比,并且用T表示DFA中状态的总数量。基于这个表示,总的存储器消耗可以对应于下面的示例性表达(X%*(99·92%*50%+0.08%*8.2%)+(100-X)%*8.2%)*512*T=X%*49.97%+(100-X)%2%表达1存储器的百分比是N的函数。表2示出了对于值为从1到10的N的存储器消耗表2<table>tableseeoriginaldocumentpage11</column></row><table>基于表2,用于DFA的存储器容量当N=4时可以降低大约90%,当N=6时可以降低大约88%。另外,存储器消耗的降低不会影响图案匹配的性能。另外,基于我们对DFA行为的研究,已经确定对生成的所有DFA,状态的99.92%对ASCII值超过127的输入字符是不敏感的。换言之,对于ASCII值超过127(例如,128-255)的任意输入字符,这些状态的下一个状态是相同的。基于这些发现,在这里描述混合DFA表达,其可以利用类似于位图的存储器容量,而保持DFA表的匹配速度。图6A和图6B是示出了对于基于DFA识别攻击、威胁、和/或恶意流量的图案匹配的示例性过程600的流程图。过程600可以通过网络设备115中的硬件或硬件与软件的组合来执行。在另一个实现中,与过程600相关联的一个或多个操作可以由与网络设备115结合的另一个设备来执行。将结合其他附图来描述过程600。过程600可以以确定当前状态是否为位图状态开始(块605)。例如,DFA状态可以表示为两个字节。图7是示出了DFA状态的示例性表示的示图。如所示出的,两个字节可以包括分配给表示状态(例如,12位)的位,以及表示状态是否为位图状态的位705,以及表示对超过127的ASCII值的输入字符状态是否不敏感的位710。位705和710的值可以在混合DFA的编译段时期生成。DFA引擎305可以基于位705确定当前状态是否为位图状态。可以理解,当前状态是否为位图状态可以基于N的值。N的值可以是用户配置的和/或静态值。可选地,N的值可以是动态值。例如,网络设备115可以对在一个时间段内状态被访问的次数计数,并相应地改变N的值。以这种方式,网络设备115可以根据其接收到的网络流量来调整其图案匹配,并区分被认为是频繁访问的状态以及被认为是很少访问的状态。当确定当前状态对应于位图状态(块605-是)时,可以使用位图匹配来寻找下一个状态(块610)。图6B是示出了图6A的块610的示例性细节的示图,其中基于位图匹配确定下一个状态。如图6B中所示,输入字符的位置可以在位图中找到(块640)。例如,参照图5,DFA引擎305可以确定输入字符相对于位字段510的位置。通过实例的方式,如果输入字符低于“a”的情况,则位图字段510的第三字段(图5中数字“2”指出的)可以对应于低于“a”的情况的映射。因此,DFA引擎305可以确定输入字符相对于位字段510的位置。参照图6B,可以确定位图的位是否为1(块645)。例如,如图5所示,位字段510可以包括值1或值0。DFA引擎305可以确定与位字段510的适当字段(例如,对应于低于“a”的情况的字段)相关联的值是1还是0。参照图6B,当确定位不具有值1(块645-否)时,缺省状态可以对应于下一个状态(块650)。例如,如图5所示,DFA引擎305可以确定位字段510的适当字段具有值0,诸如标号为0和254的字段。在这种情况下,DFA引擎305可以选择对应于缺省状态515的下一个状态。参照图6B,当确定位具有值1(块645-是)时,在这个位置之前,可以计算具有值1的位的总和(块655)。例如,如图5所示,DFA引擎305可以确定位字段510的适当字段具有值1,诸如编号为1、2和255的字段。在这种情况下,偏移量计算器520可以计算偏移量,如之前所描述的。DFA引擎305可以基于计算出的偏移量从下一个状态525中选择下一个状态。参照图6A,当确定当前状态不对应于位图状态(块605-否)时,可以确定输入字符是否大于127(块615)。例如,基于具有从0到255范围的ASCII值,一些字符被表示为具有大于127的值,而其他字符被表示为具有等于或小于127的值。DFA引擎305确定与输入字符相关联的值是否大于127。当确定与输入字符相关联的值不大于127(块615-否)时,DFA引擎305可以使用DFA表310来寻找下一个状态(块620)。DFA引擎305可以基于当前状态和输入字符值在DFA表310中寻找下一个状态。例如,如图8所示,DFA引擎305可以利用输入字符值805作为对下一个状态405中的适当字段的索引。参照图6A,当确定与输入字符相关联的值大于127(块615-是)时,可以确定当前状态是否不敏感(块625)。如之前描述的,当下一个状态对于ASCII值大于127的任何输入字符都是相同的时,该状态被认为是不敏感的。换言之,当输入ASCII值在128到256之间时,状态可以转换到相同的下一个状态。参照图7,DFA引擎305可以基于位710确定当前状态是否不敏感。参照图6A,当确定当前状态不敏感(块625-是)时,缺省状态可以用作下一个状态(块635)。例如,在一个实现中,当DFA表310对应于下一个状态410的128阵列时(如图4B中所示的),DFA引擎305可以确定下一个状态为缺省状态415。在另一个实现中,当DFA表310对应于下一个状态的256排列时,DFA引擎305可以将输入字符值和对应的下一个状态405相匹配。参照图6A,当确定当前状态敏感(块625-否)时,DFA匹配可以用来寻找下一个状态(块630)。例如,如之前在块620中描述的,DFA引擎305可以确定下一个状态。虽然图6A和图6B示出了示例性过程600,但是在其他实现中,可以执行更少、更多或不同的操作。例如,当状态(例如,当前状态或下一个状态)对应于最终状态时,网络状态115可以识别攻击、威胁、和/或恶意流量,其中最终状态表示攻击、威胁等。在这种情况下,网络装置115可以放弃数据单元(例如,包、非包、字节、位等)和/或执行某种其他类型的处理或动作。结论在前实现方式的描述提供了实例,但是其不是穷尽性的并且不限于上面描述的实现方式。根据上述教导或从教导实践中获得的,可能进行多种修改和变化。例如,虽然DFA表和位图被描述为包含DFA状态的数据结构,但是在其他实现中,除DFA表和/或位图以外的数据结构也可以被利用。在这点上,DFA的状态可以在两种或多种类型的数据结构之间被分配。另外,虽然已经描述了DFA表具有存储器消耗的缺陷但是具有匹配速度的优势(例如基于一个存储器访问),虽然位图具有匹配速度的缺陷(例如基于两个存储器访问)但是具有存储器消耗的优势,具有其他互补优势和缺陷的其他类型的数据结构也可以被利用。因此,在这种实例中,其他数据结构之间的状态的分配可以基于或不基于频繁访问的状态和不频繁访问的状态,如这里描述的。另外,尽管关于在图6A和6B中示出的过程描述了一系列块,但是在其他实现中块的顺序可以改变。另外,可以并行执行非依赖性块。另外,已经描述了某些方面作为执行一个或多个功能的“逻辑”或“元件”来实现。该逻辑或元件可以包括硬件或硬件与软件的组合,硬件诸如处理器、微处理器、ASIC、或FPGA,硬件与软件的组合诸如执行存储在计算机可读介质中的指令的处理器/微处理器。显而易见的是,可以按照附图所示的那些实现方式中的软件、固件、及硬件的许多不同形式实现本文所描述的多个方面。用于实现这些方面的实际的软件代码或特定控制硬件不对本发明构成限制。因此,不是参照特定软件代码来描述这些方面的操作和行为,可以理解,可以将软件和控制硬件设计为基于本文中的描述来实现这些方面。术语“可以”在本申请全文中使用并解释为,例如,“具有的可能性”、“配置为”、或“能够”,而不是一个强制性的理解(例如,“必须”)。术语“一个“a、an””和“该“the””解释为包括一个或多个项。例如,处理器302可以包括一个或多个处理器。仅有一个术语“一个“one””或相似用语被用来表示一个。另外,短语“基于”解释为“至少部分基于”,除非另有清楚的陈述。术语“和/或”解释为包括所列出的关联项目中的一个或多个中的任意个或全部。尽管在权利要求中书面陈述了和/或在本说明书中公开了多个特征的特定组合,但是这些组合不旨在限制本发明的公开。实际上,可以按照多种未在权利要求书中具体书面陈述和/或在说明书中公开的方式对这些特征中的许多特征进行组合。本申请中使用的元件、动作、或指令均不可解释为对于本发明来说是关键的或实质的,除非明确地这样描述。权利要求一种由设备执行的方法,包括由所述设备接收数据单元;由所述设备确定当前状态是否为位图状态,所述当前状态与确定有限自动机(DFA)相关联,所述确定有限自动机包括位图形式的一部分状态和DFA表形式的其余部分的状态;当确定所述当前状态不是位图状态时,由所述设备确定对应于所述数据单元的值是否大于阈值;当确定对应于所述数据单元的所述值大于所述阈值时,由所述设备确定所述当前状态是否不敏感,其中不敏感表示所述当前状态每一个下一个状态都是相同的状态;以及当确定所述当前状态不敏感时,由所述装置选择缺省状态作为所述当前状态的下一个状态。2.根据权利要求1所述的方法,还包括当确定所述当前状态并非不敏感时,由所述装置基于位图匹配选择所述当前状态的下一个状态。3.根据权利要求1所述的方法,还包括当确定对应于所述数据单元的所述值小于所述阈值时,由所述设备基于DFA表匹配选择所述当前状态的下一个状态。4.根据权利要求1所述的方法,还包括当确定所述当前状态是所述位图状态时,由所述设备基于位图匹配选择下一个状态。5.根据权利要求1所述的方法,还包括由所述设备利用多个位来表示所述当前状态;以及由所述设备分配所述多个位之一来指示所述当前状态是否是所述位图状态。6.根据权利要求1所述的1方法,还包括由所述设备利用多个位来表示所述当前状态;以及由所述设备分配所述多个位之一来指示所述当前状态是否不敏感。7.根据权利要求1所述的方法,还包括由所述设备选择一个值,该值区分被认为是频繁访问的状态以及被认为是很少访问的状态;以及由所述设备基于所选择的值生成所述DFA表和所述位图,所述DFA表包括被认为是频繁访问的状态,所述位图包括被认为是很少访问的状态。8.根据权利要求7所述的方法,其中所述值是静态值或动态值。9.根据权利要求1所述的方法,其中所述阈值对应于美国信息交换标准编码(ASCII)值127。10.根据权利要求1所述的方法,其中所述设备对应于网络安全设备或路由器中的至少一个。11.根据权利要求1所述的方法,还包括由所述设备识别所述下一个状态是否对应于表示威胁、攻击、或恶意流量的最终状态。12.—种网络设备,包括处理器、存储器、以及通信接口,来接收数据单元;确定当前状态是否为位图状态,所述当前状态与确定有限自动机(DFA)相关联,所述确定有限自动机包括位图形式的一部分状态和DFA表形式的其余部分的状态;当确定所述当前状态不是位图状态时,确定对应于所述数据单元的数据值是否大于阈值美国信息交换标准编码(ASCII)值;当确定对应于所述数据单元的所述数据值大于所述阈值ASCII值时,确定所述当前状态是否不敏感,其中不敏感表示所述当前状态的每一个下一个状态都是相同的状态;当确定所述当前状态不敏感时,选择缺省状态作为所述当前状态的下一个状态;以及确定所述下一个状态是否对应于表示威胁、攻击、或恶意流量的最终状态。13.根据权利要求12所述的网络设备,其中在所述位图中的所述状态的所述部分对应于不频繁访问的状态,并且在所述DFA表中的所述状态的所述剩余部分对应于频繁访问的状态。14.根据权利要求13所述的网络设备,其中所述网络设备还配置为当确定所述当前状态为位图状态时,利用所述位图选择下一个状态。15.根据权利要求13所述的网络设备,其中所述网络设备还配置为基于区分频繁访问的状态和不频繁访问的状态的值,生成所述DFA表和所述位图。16.根据权利要求15所述的网络设备,其中所述值与距初始状态的状态的距离有关。17.根据权利要求15所述的网络设备,其中所述值得自于对访问状态频率的计数。18.根据权利要求13所述的网络设备,其中所述网络设备还配置为当确定所述当前状态敏感时,利用所述DFA表来寻找所述下一个状态。19.根据权利要求13所述的网络设备,其中所述网络设备还配置为当确定对应于所述数据单元的所述数据值不大于所述阈值ASCII值时,利用所述DFA表来查找所述下一个状态,其中所述阈值ASCII值为127。20.根据权利要求12所述的网络设备,其中,当选择所述缺省状态作为对所述当前状态的下一个状态时,所述选择基于DFA表匹配。21.一种其上存储有指令的计算机可读介质,可由至少一个处理器执行所述指令,所述计算机可读介质包括一个或多个指令,用于接收数据单元;一个或多个指令,用于确定当前状态是否为位图状态,所述当前状态与确定有限自动机(DFA)相关联,所述确定有限自动机包括位图形式的一部分状态和DFA表形式的其余部分的状态;一个或多个指令,用于当确定所述当前状态不是位图状态时,确定对应于所述数据单元的美国信息交换标准编码(ASCII)值是否大于阈值ASCII值;一个或多个指令,用于当确定对应于所述数据单元的所述ASCII值大于所述阈值ASCII值时,确定所述当前状态是否不敏感,其中不敏感表示所述当前状态的每一个下一个状态都是相同的状态;以及一个或多个指令,用于当确定所述当前状态不敏感时,选择缺省状态作为所述当前状态的下一个状态。22.根据权利要求21所述的计算机可读介质,还包括一个或多个指令,用于当确定所述当前状态是所述位图状态时,基于位图匹配选择对所述当前状态的下一个状态。23.根据权利要求21所述的计算机可读介质,还包括一个或多个指令,用于当确定对应于所述数据单元的所述ASCII值小于所述阈值ASCII值时,基于DFA表匹配选择对所述当前状态的下一个状态。24.—种网络设备,包括用于存储确定有限自动机(DFA)的装置,所述确定有限自动机包括位图形式的一部分状态和DFA表形式的其余部分的状态;用于接收数据单元的装置;用于确定与所述DFA相关联的当前状态是否为位图状态的装置;用于确定对应于所述数据单元的值是否大于阈值的装置;用于确定所述当前状态是否不敏感的装置,其中不敏感表示所述当前状态的每一个下一个状态都是相同的状态;以及用于当确定所述值大于所述阈值且所述当前状态不敏感时,选择缺省状态作为所述当前状态的下一个状态的装置。25.根据权利要求24所述的网络设备,还包括用于当确定所述当前状态不是位图状态时,选择对所述当前状态的下一个状态的装置;以及用于当确定所述值不大于所述阈值时,选择对所述当前状态的下一个状态的装置。全文摘要一种方法,包括接收数据单元,确定当前状态是否为位图状态,该当前状态与确定有限自动机(DFA)相关联,该确定有限自动机包括位图形式的一部分状态和DFA表形式的其余部分的状态,并且当确定当前状态不是位图状态时,确定对应于数据单元的值是否大于阈值。该方法还包括当确定对应于数据单元的值大于阈值时,确定当前状态是否不敏感,其中不敏感表示对当前状态每一个下一个状态都是相同的状态,以及当确定当前状态不敏感时,选择缺省状态作为对当前状态的下一个状态。文档编号H04L9/00GK101834716SQ20091012608公开日2010年9月15日申请日期2009年3月9日优先权日2009年3月9日发明者于珊,刘娜,吴雪君,布赖恩·伯恩斯,李升,郑丽,马青明申请人:丛林网络公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1