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

文档序号:9263437阅读:来源:国知局
编译成二进制图像112。由此,二进制图像112可以包括至少两个区段,其中,一个第一区段用于DFA处理并且一个第二区段用于NFA处理,如统一的DFA 312和该至少一个NFA 314,如以上关于图3A披露的。根据在此披露的实施例,HNA 108可以操作地耦合到可以包括图形存储器456的多个存储器,如以上关于图4披露的。根据在此披露的实施例,编译器306可以被配置成用于确定该统一的DFA312和该至少一个NFA 314的节点在图形存储器456中的放置。
[0136]根据在此披露的实施例,该统一的DFA 312可以被静态地存储在图形存储器456的一个给定存储器中,而至少一个NFA 314可以具有跨图形存储器456分布并静态地存储的节点,因为编译器306可以将分布特定NFA节点用于存储在特定存储器中以便优化行走器匹配性能作为目标。根据在此披露的实施例,图形存储器456可以是在一个可以包括多个层级708a-c的存储器层次743中。该多个层级708a_c可以被映射到可以包括存储器756a-c的该多个图形存储器456。
[0137]编译器306可以将层级708a_c以任何合适的方式进行映射,并且层级708a_c可以用降序712排序,使得层级708a可以是排序最闻的等级708a而等级708c可以是排序最低的等级。图形存储器756a-c可以包括一个随机存取存储器(RAM),该存储器可以为与一个网络服务处理器100上的片上搜索存储器(OSM)共同定位的最高性能存储器。图形存储器756a-c可以包括一个可以是在外部并操作性耦合到网络服务处理器100的系统存储器。
[0138]基于根据存储器性能(即,读和写访问时间)的映射,该RAM存储器可以被映射到排序最闻的层级708a,该OSM可以被映射到排序次闻的层级708b,而系统存储器可以被映射到排序最低的层级708c。然而,应当理解的是,在该多个层级708a-c与图形存储器756a-c之间的映射可以是以任何合适的方式形成的。例如,该映射可以是基于如下的理解:可以生成一个与规则集310(这些节点从其中被分布到存储器756a-c)相关联的应用,因此最高性能的存储器可能不配映射到排序最高的层级。另外,应当理解的是,所示出的存储器层次743中的层级数目和图形存储器756a-c的数目是为了说明的目的并且可以是任何合适的层级和存储器数目。
[0139]如以上所披露的,一个每图样NFA的节点的局域性可以由智能编译器306利用,这是通过存储从在更快的存储器中的一个给定图样的多个更早的部分生成的NFA节点。另夕卜,因为,由于给定图样的部分匹配是通过HFA 110的DFA处理来确定的,给定图样的匹配的概率已经更高,所以组合此类实施例以优化匹配性能。
[0140]例如,如以上所披露的,DFA处理可以用于减少由NFA处理找到的误报数目。由于每个NFA可以是每图样NFA,每个每图样NFA的节点可以是有利地基于该多个存储器到存储器层次743的层级的映射而跨该多个存储器分布的。例如,从相对更短长度的图样生成的更小的NFA可以使所有节点分布到一个第一层级并且存储在一个被映射到该第一层级的第一存储器中,而从相对更长长度的图样生成的更大的NFA可以使一个第一节点部分分布到该第一层级并且剩余的部分分布在剩余的层级中。该第一层级可以是一个映射到最高性能存储器的排序最闻的层级。
[0141]于是,这些每图样NFA的更早的节点可以被存储在该最高性能的存储器中。因为由于误报更早的节点可以具有更高的被遍历的可能性,在此披露的实施例可以使得大多数误报能够经由访问映射到在存储器层次743中的更高层级的存储器来处理。根据在此披露的实施例,可以通过使得对映射到排序最高的层级(如在存储器层次743中的层级708a)的存储器756a的访问数目能够比对可以被映射到排序最低的层级708c的存储器756c的访问数目相对更高来优化匹配性能。
[0142]存储器756a可以是允许例如每秒1300百万次事务处理的最高性能的存储器,而存储器756b可以具有允许每秒150百万次事务处理的较差的性能,并且存储器756c可以是允许每秒12百万次事务处理的最差性能的存储器。另外,根据在此披露的实施例,映射到排序更高的层级的此类更高性能的存储器的量可以是在大小上相对小于映射到排序最低的层级708c的更低性能的存储器,如存储器756c (相比之下可以是相对大的存储器)。例如,存储器756c可以是外部的且提供受物理上所附接的存储器的量限制的相对大量的存储容量的一种系统存储器。
[0143]根据在此披露的实施例,每图样NFA存储分配设定710a_c可以被配置成用于层级708a_c。每图样NFA存储分配设定710a_c可以表不用于从每个每图样NFA分布到这些层级708a-c中的一个对应的层级以存储在一个映射到该对应的层级的给定存储器的该目标数量的唯一节点。编译器306可以被配置成用于确定每图样NFA分布设定710a-c,其方式为使得映射到层级708a-c的存储器756a-c在对于规则集310中的该一个或多个图样中的每个生成一个每图样NFA的事件中能够提供足够的存储容量。
[0144]每图样NFA存储分配设定710a_c可以表示每个每图样NFA的该组对应的节点中用于在一个对应的层级分布以存储到映射到该对应的层级的一个给定存储器的该目标数量的唯一节点。例如,基于被配置成用于层级708a的每图样NFA存储分配设定710a,编译器306可以分布每图样NFA 714a的该组对应的节点702a的一个第一部分704a和每图样NFA 714b的该组对应的节点702b的一个第二部分704b用于存储在映射到层级708a的存储器756a中。
[0145]基于被配置成用于层级708b的每图样NFA存储分配设定710b,编译器306可以分布每图样NFA 714a的该组对应的节点702a的一个第三部分706a和每图样NFA 714b的该组对应的节点702b的一个第四部分706b用于存储在映射到层级708b的存储器756b中。这种分布是目标分布,因为一组给定的对应的节点的节点数目可能不包括该目标数目,因为在用于分布的对应组中可能之前产生了少于目标数目或者剩余少于目标数目。
[0146]在该示例实施例中,每图样NFA存储分配设定710c可以被配置成用于存储器层次743的排序最低的层级708c并且可以表示无限数目的方式来指定。在该示例实施例中映射到排序最低的层级708c的存储器756c可以是具有相对大存储量的一种系统存储器。于是,编译器306可以将节点分布到系统存储器,包括将为这些每图样NFA 714a-b中每个所生成的每组对应的节点的任何剩余的未分布节点进行分布以存储在系统存储器756c中。
[0147]应当理解的是,对于存储器映射的层级可以固有地由该编译器理解,并且于是可以免除特定的层级708a-c。例如,编译器306可以配置这些每图样NFA存储分配设定710a-c并且基于对存储器756a-c中的每个在存储器层次743中的层级映射的固有理解将这些设定直接映射到存储器756a-c。还应当理解的是,在图7中所示的每图样NFA、这些每图样NFA的节点、和分布的数目是用于说明的目的并且可以是任何合适的每图样NFA、节点或分布数目。
[0148]图8是对于多个每图样NFA的节点分布的示例实施例的框图800。在该示例实施例中,对于一个或多个图样804中的一个图样816a生成一个第一 NFA 814a,对于该一个或多个图样804中的一个第二图样816b生成一个第二NFA 814b,并且对于该一个或多个图样804中的一个第三图样816c生成一个第三NFA 814c。
[0149]第一每图样NFA 814a的一个第一节点部分804a被分布到映射到在存储器层次812中的一个第一存储器856a的层级808a,并且一个第二节点部分806a被分布到映射到一个第二存储器856b的第二层级808b。在该示例实施例中,层级808a是排序最高的层级,而层级808b是排序最低的层级。第二每图样NFA 814b的一个第三节点部分804b被分布到映射到在存储器层次812中的第一存储器856a的层级808a,并且一个第四节点部分806b被分布到映射到第二存储器856b的第二层级808b。第三每图样NFA 814c的一个第五节点部分804c被分布到映射到在存储器层次812中的第一存储器856a的层级808a,并且一个第六节点部分806c被分布到映射到第二存储器856b的第二层级808b。
[0150]如在图8中所示,分布用于存储在映射到层级808a的存储器856a中的第二 NFA814b的第二节点部分804b可以是分别小于第一 NFA 814a和第三NFA 814c的第一节点部分804a和第五节点部分804c。如果每图样NFA 814b的节点数目小于由用于层级808a的一个每图样NFA存储分配设定(未展示)所表示的唯一目标节点数目,于是例如可以是这种情况。另外,由于层级808b是在存储器层次812中的排序最低的层级,用于层级808b的下一每图样NFA存储分配设定(未展示)可以是非常大的,从而使得所有未分布的节点能够在已经进行了到高于层级808b的每个层级的分布之后被分布以存储在被映射到层级808b的存储器856a中。于是,在该示例实施例中,第二节点部分806a可以包括比第六节点部分806c更多的节点,因为图样816a可以是比图样816c更长的规则。另外,第四节点部分806b可以为空,因为图样816b可以是相对较短的,其中,对于每图样NFA 814b生成的少数节点造成每图样NFA 814b的所有节点被分布到层级808a以存储在存储器856a中。
[0151]编译器306可以作为生成每个每图样NFA的一部分来分布每个每图样NFA的节点。如以上所披露的,在NFA中从一个第一节点到一个第二节点的转换可以经由通过一个下一节点地址标识该第二节点的第一节点元数据来指定。根据在此披露的实施例,该下一节点地址可以被编译器306配置为包括一个部分,该部分指示该多个存储器中的已经将该第二节点分布到其中用于存储的一个给定存储器。
[0152]图9是一种方法900的示例实施例的一个流程图,该方法可以在至少一个处理器中执行,该至少一个处理器与多个存储器操作地耦合,该多个存储器映射到操作地耦合到网络的一个安全装置中的存储器层次中的多个层级。该方法可以开始(902)并且生成至少一个每图样非确定型有限自动机(NFA) (904)。每个每图样NFA可以对于单个正则表达式图样而生成并且可以包括一组对应的节点。该方法可以分布每个每图样NFA的该组对应的节点的节点以基于所映射的层级和为这些层级配置的每图样NFA存储分配设定来将其存储在该多个存储器中(906)并且在该示例实施例中该方法然后结束(908)。
[0153]图10是对于多个每图样NFA的节点的另一个节点分布的示例实施例的框图1000。在该示例实施例中,节点分布1004和1006被示出为用于存储在一个第一存储器1056a和
Iv第二存储器1056b中。每个每图样NFA 1014a~c的分布1004可以是基于每图样NFA存储分配设定1lOa和1010b,这些设定被配置成用于分别用于层级1008a和1008b。在该示例实施例中,层级1008a和1008b分别被映射到第一存储器1056a和第二存储器1056b。
[0154]图11是一种用于分布至少一个每图样NFA的节点的方法的示例实施例的一个流程图1100。根据在此披露的实施例,分布所生成的每个每图样NFA的该组对应的节点的这些节点可以包括以一种连续方式分布该组对应的节点中的这些节点,该分布包括该组对应的节点的这些节点的一个第一分布,用于存储在该多个存储器中的一个第一存储器中。该第一存储器可以被映射到这些层级中排序最高的层级。该分布可以包括在上一次分布之后该组对应的节点中的这些节点的一个第二分布,基于在该组对应的节点中剩余的至少一个未分布的节点。每个至少一个第二分布可以是用于在该多个存储器中的一个给定存储器中进行存储。该给定存储器可以被映射到这些层级中的一个给定的层级,对于每一次分布,该给定的层级连续地低于该排序最高的层级。
[0155]该方法可以开始(1102)并且将一个给定的层级设定到一个存储器层次中的排序最高的层级(1104)。该方法可以将一个给定的每图样NFA设定到从一组一个或多个正则表达式图样生成的至少一个NFA中的一个第一每图样NFA(1106)。该方法可以检查该给定的每图样NFA的未分布节点数目(1108)。如果该给定的每图样NFA的未分布节点数目是零,则该方法可以检查该给定的每图样NFA是否是从该组一个或多个正则表达式图样生成的最后一个NFA (1116)。
[0156]如果该给定的每图样NFA是所生成的最后一个每图样NFA,则该方法可以检查该给定的层级是否是排序最低的层级(1120),并且如果该给定的层级是排序最低的层级,则在该示例实施例中,该方法然后结束(1126)。然而,如果检查该给定的层级是否是排序最低的层级(1120)结果为否,则该方法可以将该给定的层级设定到下一连续更低的层级(1124)并且再次将该给定的每图样NFA设定到由该组一个或多个正则表达式图样生成的至少一个NFA中的该第一每图样NFA (1106)并且继续检查该给定的每图样NFA的未分布节点数目(1108)。如果该给定的每图样NFA的未分布节点数目为零,则该方法可以如以上所披露的那样继续进行。
[0157]如果检查该给定的每图样NFA的未分布节点数目(1108)的结果是非零,则该方法可以检查该给定的层级是否是排序最低的层级(1110)。如果结果为是,则该方法可以将未分布节点数目分布到映射到该给定层级的一个给定存储器(1114)并且该方法可以检查该给定的每图样NFA是否是从该组一个或多个正则表达式图样生成的最后一个NFA(1116)。如果是,则该方法可以如以上所披露的那样继续进行。如果否,则该方法可以将该给定的每图样NFA设定到所生成的下一每图样NFA(IllS),并且该方法可以迭代以再次检查已经更新到所生成的该下一每图样NFA的该给定的每图样NFA的未分布节点数目(1108)。
[0158]如果检查该给定的层级是否是排序最低的层级(1110)的结果是否,则该方法可以检查该给定的每图样NFA的未分布节点数目是否超过由对于该给定的层级(1112)配置的一个每图样NFA存储分配设定表示的节点数目。如果是,则该方法可以将由对于该给定的层级配置的该每图样NFA存储分配设定表示的节点数目分布以存储在映射到该给定层级的该给定存储器中(1122)并且检查该给定的每图样NFA是否是从该组一个或多个正则表达式图样生成的最后一个NFA(1116)。如果是,则该方法可以如以上所披露的那样继续进行。
[0159]如果检查该给定的每图样NFA是否是最后一个每图样NFA(1116)的结果为否,则该方法可以将该给定的每图样NFA设定到所生成的下一每图样NFA(IllS),并且该方法可以迭代以再次检查已经更新到所生成的该下一每图样NFA的该给定的每图样NFA的未分布节点数目(1108)。
[0160]然而,如果检查该给定的每图样NFA的未分布节点数目是否超过由对于该给定的层级配置的一个每图样NFA存储分配设定表示的节点数目(1112)的结果为否,则该方法可以将该未分布节点数目分布到映射到该给定的层级的该给定存储器(1114)并且如以上所披露的那样继续进行。
[0161]根据在此披露的实施例,该每图样NFA存储分配设定可以经由一个绝对值来表示该目标数量的唯一节点。该绝对值可以是对于每组对应的节点的一个共用值,从而使得每组对应的节点能够具有对于该目标数量的唯一节点的一个相同的值,以便存储在被映射到该对应的层级的给定存储器中。例如,如图10中所示,这些每图样NFA中的每个1014a-c具有一个所选的第一部分1004,该第一部分表示来自这些每图样NFA 1014a-c的有待分布到映射到层级1008a (配置每图样存储分配设定1lOa用于该层级)的存储器1056a的同一个节点数目。
[0162]替代性地,该目标数量的唯一节点可以经由一个百分比值表示,该百分比值用于应用到每组对应的节点的对应的节点总数,从而使得每组对应的节点能够具有对于该目标数量的唯一节点的一个单独的值,以便存储在被映射到该对应的层级的该给定存储器中。例如,如果一个如25%的数被配置成用于每图样NFA存储分配设定1010a,该设定被配置成用于层级1008a,那么第一部分1004将会包括这些每图样NFA1014a-c
当前第5页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1