基于存储器层次的有限自动机的编译的制作方法

文档序号:9263437阅读:290来源:国知局
基于存储器层次的有限自动机的编译的制作方法
【技术领域】
[0001]本发明的各实施例涉及基于存储器层次的有限自动机的编译。
【背景技术】
[0002]开放系统互连(OSI)参考模型定义了用于通过传输介质进行通信的7个网络协议层(L1-L7)。上层(L4-L7)表示端到端通信并且下层(L1-L3)表示本地通信。
[0003]联网应用感知系统需要处理、过滤和切换L3到L7网络协议层的范围,例如,L7网络协议层诸如超文本传输协议(HTTP)和简单邮件传输协议(SMTP),以及L4网络协议层诸如传输控制协议(TCP)。除了处理网络协议层以外,联网应用感知系统需要以线速通过L4-L7网络协议层来同时通过基于访问和内容的安全性来保护这些协议,这些协议层包括防火墙、虚拟专用网(VPN)、安全套接字层(SSL)、入侵检测系统(IDS)、互联网协议安全(IPSec)、防病毒(AV)和防垃圾邮件功能。
[0004]网络处理器可用于高吞吐量L2和L3网络协议处理,S卩,执行数据包处理从而以线速转发数据包。通常,通用处理器用于处理需要更多智能处理的L4-L7网络协议。虽然通用处理器可以执行此类计算密集型任务,但是没有足够用于处理数据使得其能够被以线速转发的性能。
[0005]入侵检测系统(IDS)应用可以检查流过网络的各个数据包的内容,并且可以标识可能指示试图侵入或损害系统的可疑图样。可疑图样的一个示例可以是数据包中的特定文本串,该特定文本串在100个字符以后跟随另一特定文本串。此类内容感知联网可能要求以线速检查数据包的内容。可以对内容进行分析,以确定是否存在安全漏洞或入侵。
[0006]可以应用大量的处于正则表达式形式的图样和规则(本文中也称为正则表达式图样)以确保检测到所有的安全漏洞或入侵。正则表达式是用于描述字符串中的图样的一种紧凑的方法。通过正则表达式匹配的最简单的图样是单个字符或字符串,例如/c/或/cat/。正则表达式还可以包括具有特殊含义的运算符和元字符。通过使用元字符,正则表达式可以用于更复杂的搜索,如“abc.*xyz.”。即,在“abc”和“xyz”之间的无限量字符的情况下,找到字符串“abc”,之后是字符串“xyz”。另一示例是正则表达式“abc..abc.*xyz ; ”,即,找到字符串“abc”,后面两个字符,然后是字符串“abc”并且在无限量字符后由字符串“xyz”跟随。通常使用搜索算法(如用于处理正则表达式的确定有限自动机(DFA)或非确定有限自动机(NFA))执行内容搜索。
概述
[0007]本发明的实施例提供一种用于有限自动机的编译和运行时间处理的方法、装置、计算机程序产品和相应的系统。
[0008]根据一个实施例,在操作地耦合到一个网络的一个安全装置中的至少一个处理器中,一种方法可以包括生成至少一个每图样非确定型有限自动机(NFA)。该至少一个处理器可以被操作地耦合到多个存储器,该多个存储器被映射到在一个存储器层次中的多个层级中。每个每图样NFA可以对于单个正则表达式图样而生成并且可以包括一组对应的节点。该方法可以分布每个每图样NFA的该组对应的节点的节点以基于所映射的层级和为这些层级配置的每图样NFA存储分配设定来将其存储在该多个存储器中。
[0009]该方法可以包括基于该分布在该多个存储器中静态地存储所生成的每个每图样NFA的该组对应的节点的这些节点。
[0010]生成该至少一个每图样NFA可以包括指定从一个给定节点经由一个与该给定节点相关联的下一节点地址到一个下一节点的转换并且配置该下一节点地址以标识该下一节点和分布给该下一节点用于进行存储的该多个存储器中的一个给定存储器。
[0011]该方法可以包括配置这些每图样NFA存储分配设定中的每个每图样NFA存储分配设定用于这些层级中的一个对应的层级,以表示所生成的每个每图样NFA的该组对应的节点的目标数量的唯一节点,以分布用于在该多个存储器中的一个映射到该对应的层级的给定存储器中进行存储。
[0012]该组对应的节点中的唯一节点可以是按一种连续方式安排在该至少一个每图样NFA的一个包括该组对应的节点的给定的每图样NFA内。
[0013]该方法可以包括对于该对应的层级配置每个每图样NFA存储分配设定,其方式为,在为一组正则表达式图样中的每个正则表达式图样生成一个每图样NFA的事件中,使得该给定存储器能够提供足够的存储容量用于存储从所生成的每个每图样NFA表示的该目标数量的唯一节点。
[0014]该方法可以包括经由一个绝对值来表示该目标数量的唯一节点。该绝对值可以是对于每组对应的节点的一个共用值,从而使得每组对应的节点能够具有对于该目标数量的唯一节点的一个相同的值,以便存储在被映射到该对应的层级的该给定存储器中。
[0015]该方法可以包括经由一个百分比值来表示该目标数量的唯一节点,该百分比值用于应用到每组对应的节点的对应的节点总数,从而使得每组对应的节点能够具有对于该目标数量的唯一节点的一个单独的值,以便存储在被映射到该对应的层级的该给定存储器中。
[0016]该多个存储器中的每个存储器可以基于该多个存储器的性能排序以降序连续地映射到这些层级的一个对应的层级。该多个存储器中的一个性能排序最高的存储器可以被映射到这些层级中一个排序最高的层级。
[0017]这些每图样NFA存储分配设定可以包括一个第一每图样NFA存储分配设定和一个第二每图样NFA存储分配设定。这些层级可以包括一个排序最高的层级和一个排序次高的层级。该第一每图样NFA存储分配设定可以被配置成用于该排序最高的层级。该第二每图样NFA存储分配设定可以被配置成用于该排序次高的层级。
[0018]分布所生成的每个每图样NFA的该组对应的节点的这些节点可以包括以一种连续方式分布,该分布包括该组对应的节点的这些节点的一个第一分布,用于存储在该多个存储器中的一个第一存储器中。该第一存储器可以被映射到这些层级中的一个排序最高的层级。该分布可以包括该组对应的节点中的这些的节点的一个第二分布,基于在该组对应的节点中剩余的至少一个未分布的节点。每个至少一个第二分布可以是用于在该多个存储器中的一个给定存储器中进行存储。该给定存储器可以被映射到这些层级中的一个给定的层级,对于该组对应的节点的这些节点的每一次分布,该给定的层级连续地低于该排序最高的层级。
[0019]如果该给定的层级是这些层级中排序最低的层级,则该至少一个第二分布中的一个给定的分布可以包括在该组对应的节点中的所有剩余的未分布节点。
[0020]该方法可以包括将在该第一分布中的节点数目最大化,并且该最大化后的数目可以是由这些每图样NFA存储分配设定中的一个被配置成用于该排序最高的层级的对应的每图样NFA存储分配设定来限制的。
[0021]该方法可以包括将在每个至少一个第二分布中的节点数目最大化,并且该最大化后的数目可以是对于每一次分布由这些每图样NFA存储分配设定中的一个被配置成用于该给定层级的对应的每图样NFA存储分配设定来限制的。
[0022]该方法可以包括静态地存储每个每图样NFA的该组对应的节点的这些节点,使得能够用在从网络接收的一个输入流中的多个有效载荷的多个区段来行走每组对应的节点的这些节点,以确定在该输入流中的至少一个正则表达式图样的一次匹配。
[0023]该行走可以基于该组对应的节点的匹配这些有效载荷的区段的单独节点来进行。
[0024]该方法可以进一步包括基于在一组正则表达式图样中的正则表达式图样总数和与该行走相关联的所希望的性能度量来确定这些每图样NFA存储分配设定。
[0025]该方法可以包括基于选自一组正则表达式图样中的每个图样的至少一个子图样来生成一个统一的确定型有限自动机(DFA)并且将该统一的DFA存储在该多个存储器中的一个给定存储器中。
[0026]该多个存储器可以包括一个第一存储器、一个第二存储器、和一个第三存储器,并且该第一和第二存储器可以与该至少一个处理器共同定位在一个芯片上,而该第三存储器可以是定位在该芯片之外的一个外部存储器并且被映射到这些层级中的一个排序最低的层级。
[0027]在此披露的另一个不例实施例包括一种对应于与在此披露的方法实施例相一致的操作的装置。
[0028]另外,再另一个示例实施例可以包括一种非瞬态计算机可读介质,其上存储有一个指令序列,该指令序列当被处理器加载并执行时致使处理器执行在此披露的方法。
【附图说明】
[0029]根据本发明的示例性实施例的以下更具体的说明,上述内容将是明显的,如在这些附图中展示的,其中贯穿这些不同的视图的相同的参照字符是指相同的部分。附图不一定按比例,而是着重于展示本发明的实施例。
[0030]图1是一个安全装置的实施例的框图,其中,可以实现在此披露的实施例。
[0031]图2A-G是示例NFA和DFA图形以及展示图爆(graph explos1n)概念的一个表。
[0032]图3A是一个安全装置的实施例的另一个框图,其中,可以实现在此披露的实施例。
[0033]图3B是一种方法的示例实施例的一个流程图,该方法可以被实现在至少一个处理器中,该处理器与操作地耦合到网络的一个安全装置中的至少一个存储器操作地耦合。
[0034]图4是一个超非确定型自动机(HNA)协处理器的一个环境的不例实施例的框图。
[0035]图5A是一个每图样非确定型有限自动机(NFA)图形的示例实施例的框图,该图形可以由一个行走器(walker)使用以匹配在一个输入流中的正则表达式图样。
[0036]图5B是用于以一个有效载荷行走图5A的NFA图形的处理周期的示例实施例的一个表。
[0037]图6是该行走器的一个环境的示例实施例的框图。
[0038]图7是该编译器的一个环境的示例实施例的框图。
[0039]图8是对于多个每图样NFA的节点分布的示例实施例的框图。
[0040]图9是一种方法的示例实施例的一个流程图,该方法可以在至少一个处理器中执行,该至少一个处理器与多个存储器操作地耦合,该多个存储器映射到操作地耦合到网络的一个安全装置中的存储器层次中的多个层级。
[0041]图10是对于多个每图样NFA的节点的另一个节点分布的示例实施例的框图。
[0042]图11是一种用于分布至少一个每图样NFA的节点的方法的示例实施例的一个流程图。
[0043]图12是任选地在此处披露的实施例内的一台计算机的示例内部结构的一个框图。
【具体实施方式】
[0044]在详细描述本发明的示例实施例之前,直接在以下描述了一种示例安全应用以帮助读者理解在此披露的本发明的特征,这些实施例可以实现在该安全应用中并且典型的处理使用确定型有限自动机(DFA)和非确定型有限自动机(NFA)。
[0045]图1是一个安全装置102的实施例的框图,其中,可以实现在此披露的实施例。安全装置102可以包括一个网络服务处理器100。安全装置102可以是一个单独的系统,该系统可以将在一个网络接口 103a接收的包切换到另一个网络接口 103b并且可以在转发这些包之前在所接收的数据包上执行多个安全功能。例如,安全装置102可以用于对数据包1la执行安全处理,这些数据包可以是在一个广域网(WAN) 105a或者任何其他合适的网络上接收的,然后将这些处理过的数据包1lb转发到一个局域网(LAN) 105b或者任何其他合适的网络。
[0046]网络服务处理器100可以被配置成用于处理封装在所接收的数据包中的开放系统互连(OSI)网络L2-L7层协议。如本领域技术人员公知的,OSI参考模型定义了七个网络协议层(L1-7)。物理层(LI)表示将设备连接到传输媒介的实际接口,包括电气接口和物理接口。数据链路层(L2)执行数据组帧。网络层(L3)将数据格式化为数据包。传输层(L4)处理端到端的传输。会话层(L5)管理设备之间的通信,例如,无论通信是半双工的还是全双工的。表现层(L6)管理数据格式化及表现,例如,语法、控制代码、特殊图形及字符集。应用层(L7)允许多个用户之间的通信,例如,文件传送及电子邮件。
[0047]网络服务处理器100可以为高层网络协议(例如,L4-L7)调度和排列工作(数据包处理操作),并且允许在所接收到的待执行的数据包中进行高层网络协议的处理,以便以线速转发数据包。通过处理这些协议来以线速转发这些数据包,该网络服务处理器100不会降低网络数据传送速率。网络服务处理器100可以从网络接口 103a或103b接收数据包,这些接口可以是物理硬件接口并且可以对所接收的数据包执行L2-L7网络协议处理。网络服务处理器100可以后续地将处理过的数据包1lb通过网络接口 103a或103b转发到网络中的另一跳、最终目的地、或通过另一个总线(未展示)以便由一个主机处理器(未展示)进行进一步处理。网络协议处理可以包括网络安全协议的处理,如防火墙、应用防火墙、包括IP层安全协议(IPSec)和/或安全套接层(SSL)的虚拟专用网(VPN)、入侵检测系统(IDS)、防病毒(AV)、或任何其他合适的网络协议。
[0048]网络服务处理器100可以使用多个处理器(即,内核)来提供高应用性能。每个内核(未展示)可以专用于执行数据面、控制面操作或其组合。数据面操作可以包括用于转发数据包的数据包操作。控制面操作可以包括处理复杂的高层协议部分,如IP层安全协议(IPSec)、传输控制协议(TCP)、安全套接层(SSL)、或任何其他合适的高层协议。数据面操作可以包括处理这些复杂的高层协议的其他部分。
[0049]网络服务处理器100还可以包括特定用途协处理器,该协处理器可以使内核分流,使得网络服务处理器100实现高吞吐量。例如,网络服务处理器100可以包括一个加速单元106,该加速单元可以包括一个超非确定型自动机(HNA)协处理器108用于硬件加速NFA处理、以及一个超级有限自动机(HFA)协处理器110用于硬件加速DFA处理。HNA 108和HFA 110协处理器可以被配置成用于使网络服务处理器100的通用内核(未展示)分流执行计算和内存密集型图样匹配法的沉重负担。
[0050]网络服务处理器100可以执行图样搜索、正则表达式处理、内容验证、变换、和安全性加速数据包处理。正则表达式处理和图样搜索可以用于对AV和IDS应用以及其他需要字符串匹配的应用执行字符串匹配。在网络服务处理器100中的存储器控制器(未展示)可以控制对存储器104的访问,该存储器操作地耦合到网络服务处理器100。存储器104可以是内部的(即,芯片上的)或外部的(即,芯片外的)或其组合,并且可以被配置成用于存储所接收的数据包,如用于由网络服务处理器100进行处理的数据包101a。存储器104可以被配置成用于存储用于在DFA和NFA图形表达式搜索中进行查询和图样匹配的编译规则数据。编译规则数据可以被存储为一个二进制图像112,该图像可以包括用于DFA和NFA两者的编译规则数据,或者将DFA编译规则数据与NFA编译规则数据分开的多个二进制图像。
[0051 ] 典型的内容感知应用处理可以使用或者DFA或者NFA来识别所接收的数据包的内容中的图样。DFA和NFA都是有限状态机,也就是,每个计算模型包括一组状态、一个启动状态、一个输入字母表(所有可能的符号的集合)以及一个转换函数。计算在启动状态中开始并且变化为取决于转换函数的新状态。
[0052]该图样通常是用正则表达式来表达的,该正则表达式包括基本元素,例如正常的文本字符如A-Z和0-9以及元字符如*、~和I。正则表达式的基本元素是有待匹配的符号(单个字符)。基本元素可以与允许连结、交替(I)的元字符以及克莱尼星号(*)组合。用于连结的元字符可以用于从单个字符(或多个子字符串)创造多个字符匹配图样,而用于交替(I)的元字符可以用于创造可以匹配两个或多个子字符串中任一者的正则表达式。元字符克莱尼星号(*)允许一个图样匹配任意次,包括不出现前面的字符或字符串。
[0053]将不同运算符和多个单个字符相组合允许构造复杂的表达式子图样。例如,子图样如(th (is I at) *)可以匹配多个字符串,如:th、this、that、thisis、thisat、thatis、或thatat。表达式的复杂子图样的另一个示例可以是结合了允许罗列一个要搜索的字符清单的一个字符类构造[...]的子图样。例
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1