结构化数据的方法、预编译的异常列表引擎和网络设备的制作方法

文档序号:7550219阅读:190来源:国知局
专利名称:结构化数据的方法、预编译的异常列表引擎和网络设备的制作方法
技术领域
本公开涉及网络安全、结构化用于高速搜索的数据的方法、包含该结构化数据的预编译的异常列表引擎(pre-compiled exception list engine)和包括这种引擎的网络设备(network appliance)。
背景技术
本部分提供了与本公开有关的背景信息,其并非必须是现有技术。有各种已知的方法,用于结构化(structure)数据元素集和搜索数据元素集以定位想要的元素。数据元素可以仍然是非结构化的,或者可根据一些原则被结构化,例如按照数字、字母等。例如,可以通过按顺序查看数据集中的每个项目而线性搜索数据集,或通过使用对分搜索而搜索数据集,该对分搜索反复地将该集一分为二并确定想要的元素是否高于、低于或等于数据集的划分点。随着数据集中的元素数量增加,许多已知的结构化和/或搜索数据集的方法变得很麻烦。这样的方法可能变得更慢,需要更多的处理器功率和/或存储器。

发明内容
本部分提供了本公开的概述,且不是其完全范围或其所有特点的全面披露。根据本公开的一个方面,公开了一种用于排序(sort)多个网际协议(IP)地址的计算机执行的方法,每个IP地址具有数值范围内的一个数值。该方法包括将该范围分为代表多个邻接的子范围的多个簇(cluster)。每个子范围基本上包含该范围的相同数量的数值,且每个子范围与不同的簇关联。该方法还包括将每个IP地址分配给与包括该IP地址的数值的子范围关联的簇。每个簇具有由分配给该簇的IP地址的数量所定义的簇尺寸。每个簇中的IP地址被分配给多个页中的一页。每页具有页尺寸限制,其定义了可被分配给该页的IP地址的最大数量。每页具有页尺寸,其由分配给该页的IP地址的数量定义。如果一页具有小于其页尺寸限制的页尺寸,该方法包括在该页上复制分配给该页的至少一个IP地址,以增加该页的页尺寸。对于每一页,分配给该页的IP地址按照数值被排序。 根据本发明的另一个方面,公开了一种计算机执行的用于排序多个网际协议(IP)地址的方法,每个IP地址具有在数值范围内的一个数值。该方法包括将该范围分为代表多个邻接的子范围的多个簇。每个子范围包含了该范围的基本上相同数量的数值,且每个子范围与不同的簇关联。该方法还包括将每个IP地址分配给与包括该IP地址的数值的子范围关联的簇。每个簇具有由分配给该簇的IP地址的数量定义的簇尺寸。该方法包括根据簇尺寸来排序簇。每个簇中的IP地址被分配给多个页中的一页。每页具有相同的页尺寸限制,其定义了可被分配给该页的IP地址的最大数量。每页具有由分配给该页的IP地址的数量定义的页尺寸。如果所述页中的一页或多个页具有小于其页尺寸限制的页尺寸,该方法包括在该页上复制分配给该页的一个或多个IP地址以将所述页的页尺寸增加到其页尺寸限制。对于每一页,分配给该页的IP地址按数值被排序。根据本公开的再一个方面,公开了一种用于在第一网络和第二网络之间连接的网络设备。该设备包括至少一个输入,其耦合到第一网络,用于从第一网络接收包。该包包括网际协议(IP)地址。该设备还包括至少一个处理器,用于确定是否允许来自第一网络的包进入第二网路,以及至少一个存储设备,用于存储指令和数据。所述数据包括多个页,其存储多个异常的(exc印ted)IP地址。每个异常的IP地址具有在一个范围内的数值。该范围被分为多个邻接的子范围,且每页包括一个或多个异常的IP地址,所述IP地址具有在与该页关联的一个或多个子范围内的数值。每页具有由分配给该页的IP地址的数量定义的页尺寸。异常的IP地址被分配给每页并按数值排序。所述至少一个处理器被配置为经由指令识别来自第一网络的包的IP地址,如果该IP地址是所述多个异常的IP地址中的一个则识别包括该IP地址的目标页,搜索目标页以确定该IP地址是否是目标页中异常的IP地址中的一个,并根据IP地址是否是目标页中的异常的IP地址处理来自第一网络的包。该设备还包括耦合到第二网络的至少一个输出,其用于,如果处理器确定允许来自第一网络的包进入第二网络,将来自第一网络的包传输到第二网络。 根据本申请的另一方面,用于在第一网络和第二网络之间连接的网络设备包括耦合到第一网络的至少一个输入,用于接收来自第一网络的包。该包包括网际协议(IP)地址。该设备包括至少一个处理器,用于确定是否允许来自第一网络的包进入第二网络,以及至少一个存储设备。该设备还包括存储在存储设备中的第一引擎。第一引擎包括多个页,其存储多个异常的IP地址。每个异常的IP地址具有在一个数值范围内的数值,且该范围被分为多个邻接的子范围。每页包括具有在与该页关联的一个或多个子范围内的数值的一个或多个异常的IP地址。每页具有由分配给该页的异常的IP地址定义的页尺寸。异常的IP地址被分配给每页并按数值排序。第一引擎还包括第一有限状态机(FSM)。第一 FSM包括可被处理器执行的指令以确定与包含该IP地址的子范围关联的页,搜索与该包含该IP地址的子范围关联的页以确定该IP地址是否是异常的IP地址,并输出表明IP地址是否是异常的IP地址的指示。处理器还配置为通过存储在存储设备中的指令根据来自第一 FSM的指示处理来自第一网络的包。该设备还包括耦合到第二网络的至少一个输出,用于,如果处理器通过根据来自第一 FSM的指示处理包而确定允许来自第一网络的包进入第二网络,将来自第一网络的包传输到第二网络。可应用性的其他方面将从此处提供的描述而变得明显。在本发明内容中的描述和特定例子仅是为了说明的目的,而不是旨在限制本公开的范围。


此处描述的附图仅是为了说明选定的实施例而不是所有可能的实施方式,且不旨在限制本公开的范围。图1是示出了根据本公开的一个方面用于排序多个IP地址的计算机执行的方法的流程图。
图2是将一个范围的IP地址分为多个簇的框图,每个簇具有该范围的一子范围。图3是示出了将多个IP地址分配到多个簇的一个实施例的流程图。图4是示出了根据首次适应算法(first fit algorithm)将来自簇的IP地址分配到页的一个实施例的流程图。图5是示出了根据最佳适应算法(best fit algorithm)将来自簇的IP地址分配到页的一个实施例的流程图。图6是示出了根据本公开搜索以确定IP地址是否是被分配到页的多个IP地址中的一个的实施例的流程图。图7是用于排序多个IP地址的方法的示例性应用的图形表示。图8是用于在两个网络之间连接并包含此处公开的方法的方面的网络设备。
具体实施例方式
现在将参考附图详细描述示例性实施例。提供了示例性实施例,以便本公开是完全的,且将把其范围完全传达给本领域技术人员。阐述了大量具体细 节,例如特定组件、设备和方法的例子以提供关于本公开的实施例的彻底理解。对本领域技术人员来说明显的是,不需要使用具体细节,示例性实施例可以许多不同的形式体现,且也不应被解释为限制本发明的范围。在一些示例性实施例中,没有详细描述公知的过程、公知的设备结构和公知的技术。此处使用的术语仅是为了描述特定的示例性实施例,且不是限制性的。如在此使用的,单数形式“一”、“一个”和“该”可被理解为也包括复数形式,除非上下文另有清楚的说明。术语“包括”、“包含”和“具有”是包容性的,且由此指示存在所阐明的特点、整体、步骤、操作、元件和/或组件,但不排除存在或附加一个或多个其他特点、整体、步骤、操作、元件、组件和/或其组合。如在此使用的,术语“和/或”包括一个或多个列出的有关项目的任何和所有组合。此处描述的方法步骤、过程和操作不应被解释为必须要求以所讨论或描述的特定顺序而被执行,除非被特别指定一执行顺序。也可理解,可使用其他的或可替代的步骤。根据本公开的一个方面,公开了一般由图1中的标号100指不的一种用于排序多个网际协议(IP)地址的方法,每个IP地址具有在一个数值范围内的数值。本方法包括在102将该范围分为代表多个邻接的子范围的多个簇。每个子范围基本上包含该范围的相同数量的数值,且每个子范围与不同的簇关联。本方法还包括,在104将每个IP地址分配给与包括该IP地址的数值的子范围关联的簇。每个簇具有由分配给该簇的IP地址的数量定义的簇尺寸。在106,每个簇中的IP地址被分配给多个页中的一页。每页具有页尺寸限制,其定义了可被分配给该页的IP地址的最大数量。每页具有由分配给该页的IP地址的数量定义的页尺寸。在108,如果多个页中的一页具有小于其页尺寸限制的页尺寸,该方法包括在该页上复制分配给该页的至少一个IP地址,以增加该页的页尺寸。对于每页来说,在110分配给该页的IP地址按数值被排序。IP地址是网络中的设备的数字标识符。每个IP地址典型地具有一数值并被存储为二进制数。有多种IP地址版本,诸如IPv4和IPv6。IPv4地址是32位的数字,而IPv6地址是128位数字。IPv4地址经常表示为人类易读的十进制符号,作为4个由小数点隔开的三位数字(例如,000.000.000.000)。有时候额外的前导零从十进制符号中被移除,但以上出于解释的目的被包含。每个数字实际上由8个比特代表。一个8比特的数字可代表O到255之间的十进制数。因此,IP地址的4个数字中的每一个可以位于O到255之间。在此公开的方法不是特定于版本的,也可被用于IP地址的任何版本。包含一组所有IP地址的范围的尺寸是由该版本的IP地址的比特尺寸决定的。例如,IPv4地址是32比特长,导致了 2λ32个可能的IP地址的范围。类似地,IPv6地址的范围是2λ28个可能的IP地址。根据在此公开的方法的IP地址的范围可以是所有可能的IP地址(例如,对于IPv4来说,是O到2Λ32-1),或者所有可能的IP地址的任何恰当子集。不管范围是什么,该方法包括将范围分为代表多个邻接的子范围的多个簇,其例子在图2中示出,且将每个IP地址分配给与包括该IP地址的数值的子范围关联的簇。每个簇具有由分配给该簇的IP地址的数量定义的簇尺寸。子范围的尺寸是可被放置在簇中的IP地址的数量。在图2中,例如,具有在O到31之间(包括两端值)的范围的多个IP地址200被分为4个簇202,204,206和208。每个簇202,204,206和208具有8个可能的IP地址的子范围尺寸。簇202、204、206或208的尺寸取决于该簇202、204、206或208的子范围包含来自多个IP地址200的多少个IP地址。簇仅仅是一个集合。簇的许多可能的实施方式是可能的。根据一些实施例,簇由图(map)、数组或列表实施。根据至少一个实施例,使用标准模板库(STL)列表来实施簇。多个邻接的子范围可以以很多不同的方式被确定。如以下将更详细地描述的,在来自多个IP地址的IP地址被填充在簇中后,IP地址将通过簇被分配给页。每页具有也称为最大尺寸的页尺寸限制,其可以IP地址的数量或比特尺寸来表示。尽管在此处页尺寸、簇尺寸和页尺寸限制将按照 IP地址的数量来讨论,将理解比特尺寸可互换地使用。例如,一个IP地址的页尺寸限制与用于IPv4地址的32比特或用于IPv6的128比特的页尺寸限制相同。由于页尺寸限制,每个簇具可具有不超过页尺寸限制的分配给其的IP地址。一种用于确定多个子范围的技术是为每个子范围分配相同数量的数值,其中数值的数量等于页尺寸限制。根据这样的划分,没有簇可包括多于页尺寸限制的IP地址。这种划分范围的方法将对任何数量的IP地址、IP地址的任何范围和IP地址的任何分配起作用。但是这样的划分会导致大量的簇。而且,多个IP地址可能被广泛地遍布在范围中且可能不会在范围内线性分布。因此,可能有很多簇,在这些簇的子范围中没有IP地址。因此,在一些实施例中,范围可被分为尽可能少的簇,且同时避免任何簇具有大于页尺寸限制的子范围。有各种技术,包括各种试探技术,可用于确定簇的数量和子范围的尺寸以最小化簇的数量和最大化簇的子范围的尺寸。一种用于最小化簇的数量的技术是从一个簇开始。当IP地址被分配给该簇时,一旦(或者如果)分配给该簇的IP地址的数量超过页尺寸限制时,分配就停止,簇的数量翻倍(为2)且分配再次开始。一旦分配给任何簇的IP地址的数量超过页尺寸限制,过程停止,簇的尺寸再次被翻倍。重复这个过程,直到分配给每个簇的IP地址的数量少于或等于页尺寸限制。对于大量的IP地址,这样的技术可需要大量的迭代和相对长的时间。另一种技术假设IP地址被相对线性地分配,并根据页尺寸限制划分多个地址中的IP地址的数量。因此,例如,如果页尺寸限制是2~ 10,且IP地址的数量是2~ 16,则簇的数量是2~6。如果范围是所有的IPv4地址,则范围是2~32。以簇的数量(2~16)来划分范围(2~32)指示了每个簇具有2~26个IP地址的子范围。根据一些实施例,该子范围然后被递增到下一个二次幂(即,在该例子中被递增到2~27),且簇的数量相应地被降低二次幂(SP,在该例子中被降低到2~25)。不管如何确定簇的初始数量,以上讨论的迭代技术可被应用以确保没有簇具有大于页尺寸限制的簇尺寸。图3中示出了该过程的流程图。在前面段落中讨论的技术中,假设了线性分配。如果该假设是正确的话,通过以页尺寸限制来划分IP地址的数量而确定的簇数量将导致没有簇具有大于该页尺寸限制的簇尺寸。但是如果IP地址不是线性分配的,或者如果如上讨论的可能簇的数量被降低到二次幂,一些簇可能具有大于页限制尺寸的簇尺寸。因此根据一些实施例,当任何簇的簇尺寸超过页尺寸限制时,簇的数量被翻倍(增加了二次幂)且重新开始分配IP地址到簇。当IP地址被分配给簇时,或当所有的IP地址已被分配给簇时,可进行比较。再次参考图3,在300,过程以簇的初始数量开始。每个簇具有一个范围的IP地址的子范围。通过确定是否有任何IP地址没有被分配给簇,过程在302继续。如果没有,过程在304结束,且所有的IP地址已被分配给簇。但是,如果有未分配的IP地址,过程在306继续,且未分配的IP地址被分配给其子范围包围未分配的IP地址的簇。在308,将被分配了未被分配的IP地址的簇的簇尺寸与页尺寸限制进行比较。如果簇尺寸不大于页尺寸限制,过程返回到302。如果簇的簇尺寸超过页尺寸限制,在310簇的数量翻倍,子范围的尺寸被减少一半,且过程返回到302。停止、将簇数量翻倍(并降低子范围的尺寸)、且重新开始将IP地址分配到簇的过程可以被重复,直到簇尺寸都小于或等于页尺寸限制。通过使用这样的技术,并有意地从会导致簇尺寸大于页尺寸限制的簇数量开始,簇的数量可被最小化。在IP地址被分配给合适的簇后,簇可被排序。簇根据簇尺寸被排序。排序可以以簇尺寸的升序或降序来进行。另外,或者可替代地,可创建簇列表。簇列表包含所有的簇及其关联数据。簇可按照簇列表 里的簇尺寸被排序。每个簇中的IP地址被分配给多个页中的一页。页是存储字节的数组。每页具有页尺寸限制,其定义了可被分配给该页的IP地址的最大数量,以及由分配给该页的IP地址的数量定义的页尺寸。页可以多种方式被实施。通常,页尺寸限制可以是任何合适的尺寸。但是,根据一些实施例,优选地,页尺寸限制是这样的尺寸,其将导致页具有足够小的尺寸以被存储在将使用页的处理器的高速缓冲存储器中。这样优选的页尺寸增加了缓存局部性。存储在处理器的高速缓冲存储器中的数据可比远离处理器而存储的数据更快得多地被访问、操作等。因此,足够小以至于页可被整个地载入高速缓冲存储器的页尺寸限制,可增加页可被搜索的速度。不同的页可具有不同的页尺寸限制。但是,在一些实施例中,每页的页尺寸限制是相同的。根据各种技术,簇中的IP地址可被分配给页。初始地,创建了至少一个页。尽管簇可被简单地一簇分配给一页地分配,其它的技术可以是优选的。因此,根据一些实施例,根据首次适应算法或最佳适应算法中的任一个,簇被分配给页。首次适应算法的各种实施方式是合适的,且可被用作在此公开的方法的一部分。一种示例性实施方式由图4的流程图400示出。当根据首次适应算法分配时,对于每个簇来说,现有的页从第一页开始被顺序地搜索,以找到具有足够空间以保持簇中IP地址而不会超出页尺寸限制的第一页。在402,开始进行将来自每个簇的IP地址分配给页的过程。在404,过程确定是否有其IP地址没有被分配给页的任何簇。如果没有这样的簇,在406,过程结束。如果有这样的其IP地址没有被分配给页的簇,在408选择具有未分配的IP地址的第一簇,且从第一页开始检查现有的页。过程也可从最后一个簇或任何其他合适的簇开始。在这个过程的上下文中,第一页可以是按照顺序的第一页、具有在页上最多的IP地址的页、具有在页上最少的IP地址的页、按照顺序的最后的页等。在410,确定簇的IP地址在获取的页上是否适应。如果其适应,簇在412被分配给该页,且过程返回到404。如果簇的IP地址在该页上不适应,过程继续到414以确定是否有更多现有的页。如果没有更多的页可供检查,创建新页且在416簇的IP地址被分配该页,且过程回到404。如果有可用的额外的页,在418将要检查的页的编号增加1,且过程返回到410以确定簇的IP地址在该页上是否适应。最佳适应算法的各种实施方式是合适的,且可被用作在此公开的方法的一部分。一个示例性实施方式在图5中示出。当根据最佳适应算法被分配时,对于每个簇来说,搜索现有的页,以确定是否存在有足够的空间来持有簇中的IP地址而不会超出页尺寸限制的页。过程在502开始。在504,过程确定是否有其IP地址没有被分配给页的任何簇。如果没有这样的簇,过程在506结束。如果有这样的其IP地址没有被分配给页的簇,在508选择具有未分配的IP地址的第一簇,并确定分配给该簇的IP地址的数量(其簇尺寸)(在图5中被称为X个IP地址)。在510,过程确定是否有具有X个空槽的现有页。空槽(有时候在此也被称为是自由条目)的数量,是页尺寸限制减去页尺寸(两者都用IP地址的数量表示),并指示还有多少个IP地址可被分配给该页而不超过页尺寸限制。如果存在具有X个空槽的页,簇的IP地址在512被分配给该页,且过程返回到504。如果没有这样的页,过程在514确定是否有具有多于X个空槽的页。如果没有,在516创建新页,簇的IP地址被分配给新页,且过程返回到504。如果有具有多于X个空槽的页,X在518被增加1,且过程返回到510。将簇分配到页,不管是通过最佳适应算法、首次适应算法或任何其他合适的算法,会继续直到每个簇被分配到页。 根据一个实施例,将簇的IP地址分配到页利用了簇列表和页列表。如上所述,簇列表包含了所有的簇及其关联的数据项目。簇列表根据每个簇中的条目的数量(即,簇尺寸)被降序排列。创建将包含页的页列表,所述页包含一个或多个簇。页列表根据可用于每个页的自由条目的数量(页尺寸限制减去页尺寸)排序。尤其地,如果使用第一最佳算法,页列表可以根据自由条目(或空槽)的数量以降序排序。对于每个簇来说,该簇被获取,且页列表被搜索,以找到具有足够的自由条目以保持该簇中的所有IP地址的页。该搜索可根据首次适应算法、最佳适应算法或任何其他合适的算法。如果发现页具有足够的自由条目,簇的IP地址被分配给该页,且页列表被更新以反映现在保留在页上的自由条目。如果页列表根据自由条目的数量被排序,在每个簇被分配后重新排序页列表。但是,如果没有具有足够自由条目的页,分配新的页,且将第一簇的IP地址分配给页。页列表被更新以指示新页以及在该新页上的自由条目的数量。过程对于随后的簇重复,直到所有的簇已被分配。根据一些实施例,不包括任何IP地址的所有簇包含可被分配给同样的页。该页可以是页O、空页(null page),或其他任何合适的页。这种给空页的分配可加速搜索IP地址。一旦确定被搜索的IP地址位于与分配给空页的簇关联的子范围内,搜索可停止,因为空页不包括IP地址,且因此被搜索的IP地址不是已被分配给页的多个IP地址的一部分。根据一些实施例,在所有的簇被分配给页后,确定负载因子。负载因子是多个页的页尺寸限制的总和对多个IP地址中的IP地址的数量的比率。负载因子可被认为是所使用的资源对所存储的数据的比率。它代表被填充了 IP地址的页的紧致性或效率。负载因子越低,被填充的页就越紧致。越多的页被用于给定数量的IP地址,负载因子就越高。类似地,更有效填充的页,即,当填充以IP地址时具有接近或等于页尺寸限制的页尺寸的页,更有可能导致需要的更少的页,且负载因子可被降低。如果利用此处公开的方法,负载因子可能会非常低。根据一些实施例,负载因子与负载因子阈值进行比较。基于各种因素,包括想要的处理速度、使用页时系统中可用的存储量、使用页时系统中可用的处理能力的量等,负载因子阈值可以不同。如果负载因子超过负载因子阈值,页不会如想要的那样紧致。根据一些实施例,当负载因子超过负载因子阈值时,簇的数量翻倍,由此每个子范围的尺寸被降低一半。根据以上公开的方法,IP地址被分配给新的簇,且新簇中的IP地址被分配给页。因为每个新的簇的子范围是其之前的一半,最新的簇将具有更小的簇尺寸。在许多情况下,这将允许簇更有效地适应于页,降低页中未填充的空间,并降低负载因子。如果负载因子保持高于负载因子阈值,簇的数量可再次被翻倍,且该迭代过程可继续,直到负载因子降低至IJ,或低于负因子阈值。可替代地,或者额外地,该过程可在停止前重复设定的最大迭代数量。这种最大迭代数量可能对于阻止过程重复太多次并创建多于所想要的簇是有用的。在这些页中已填充来自簇的IP地址后,一些页也可能仍然具有剩余的自由条目。因此,如果这些页中的一页具有小于其页尺寸限制的页尺寸,该方法包括在该页上复制分配给该页的至少一个IP地址以增加该页的页尺寸。在一些实施例中,所述至少一个IP地址可在该页上被复制,直到页尺寸被增加到大约页尺寸限制。这种复制IP地址以增加页尺寸到大约页尺寸限制有时候被称为垫充(pad)页。所述至少一个IP地址可以是一个IP地址,可能被重复复制,或者它可以是多个IP地址。复制的一个或多个IP地址可以是随机选择的或特定选择的。例如,仅页面中的第一个IP地址可在页上被复制,仅中间的IP地址可被复制,IP地址可以按顺 序被复制、单个随机选择的IP地址可被复制,多个IP地址可被随机选择和复制等。在至少一个实施例中,所述至少一个IP地址是多个随机选择被复制的IP地址,直到页尺寸是大约页尺寸限制。该方法还包括,对于每页,按照数值排序分配给该页的IP地址。这种排序可使得搜索页更容易。另外,其IP地址随后按数值被排序的页的垫充,可在页被搜索时提供一些帮助。例如,如果页具有等于页尺寸限制的页尺寸,页上的数据元素(即,IP地址)的数量是已知的。该IP地址数量是页尺寸限制。因此,在搜索中可使用查表法。页的中点是页中的已知点。如果页具有1024个IP地址,不管页上的值是什么,且不管有多少个不同的IP地址被分配给该页,垫充页的中点是第512个IP地址。另外,当所有的页如此被垫充且每页的页尺寸限制是一样的时,每页的中点是一样的。因此,每页的中点,以及相应地,高于或低于中点的部分的每个随后的中点是页中的已知点或元素。特别地,使用有时候被称为分而治之搜索(divide and conquer search)的对分搜索,能够没有计算而识别作为中点的IP地址,可提高搜索速度。根据一些实施例,生成页记录。页记录包括所有的簇子范围,以及该子范围中的IP地址被分配的页。这些数据可被安排包括在子范围中的第一数值、子范围中的最后一个数值和与子范围关联的页的编号的元组中。但是,页记录不是这么受限的,且可利用指示哪个子范围或哪几个子范围与每页关联的任何合适的方法来实施。在一些实施例中,也可创建一个或多个布隆过滤器(bloom filter)。布隆过滤器是捷径。布隆过滤器可被用来在没有实际搜索页的情况下识别没有位于分配给页的多个IP地址中的IP地址。典型地为每页创建单独的布隆过滤器。布隆过滤器是具有一定数量的比特的位图,每个比特代表特定数字。例如,布隆过滤器的第一比特代表数字O,而第256个比特代表数字255。布隆过滤器被映射到与页关联的IP地址的一部分,诸如代表第一^H 制数、最后十进制数等的比特,这样布隆过滤器中的每个比特与IP地址的一个数字关联。每个比特可以被设为I或O。如果一比特被设为1,与页关联的IP地址包括该比特的数字。相反地,位图中被设为O的比特指示在该页上没有IP地址包括该比特的数字。例如,如果IP地址208.77.188.66是包含在一页中的仅有的数字,用于该页上的IP地址的第一数字的布隆过滤器的所有比特将是0,除了第209个比特(代表数字208)将被设为I。在使用时布隆过滤器可给出误肯定(即,指示数字可能位于页上,而实际上却没有),但不会是误否定(指示数字没有位于页上,而实际上却位于页上)。继续以上的例子,如果将被搜索的IP地址是208.70.XXX.XXX,布隆过滤器指示该IP地址可能是与该页关联的一个IP地址(即使这个例子中它不是)。因此,页仍然需要被搜索以确定地址208.70.XXX.XXX不是分配给该页的IP地址。相反地,如果将被搜索的IP地址是192.XXX.XXX.XXX,仅通过观察布隆过滤器的193个比特,布隆过滤器正确地指示了 IP地址不是与该页关联的IP地址中的一个。因为比特193是零,没有用192开头的IP地址。因此,页不需要被搜索。如可见的,根据公开的方法,使用布隆过滤器可降低确定IP地址是否存在于多个IP地址中的时间。当大量的将被搜索的IP地址将不是以及/或者不是页上的多个IP地址的一部分时,这种提高了的性能尤其显著。在执行此处公开的一个或多个方法后,包含IP地址的页准备好被搜索。可使用直接搜索页、搜索页记录以确 定在哪页纸上搜索和/或使用布隆过滤器来确定搜索页和/或页记录是否是必要的任何组合。根据一些实施例,首先搜索布隆过滤器以确定IP地址是否不是与一页关联的IP地址。如果布隆过滤器指示IP地址不是与一页关联的IP地址,不需要进行进一步的搜索。如果布隆过滤器指示IP地址可能是与一页关联的IP地址,可搜索表记录以确定包含IP地址的子范围与哪页关联。在确定这样的页后,页本身被搜索以确定IP地址是否是被分配这样的页的IP地址中的一个。图6示出了用于搜索以确定一 IP地址是否是多个IP地址中的一个的示例性过程600。在该例子中,使用页记录和空页,但不使用布隆过滤器。在602,确定包含该IP地址的子范围。在604搜索页记录以确定哪页含有包含IP地址的子范围。在606,确定在604被返回的页是否是空页。如果返回的页是空页,搜索在608结束,且该IP地址不是多个IP地址中的一个。如果返回的页不是空页,过程继续到610,并获取返回的页。在612页然后被搜索以寻找该IP地址。如果在614,该IP地址不是位于该页上,过程在608结束,且该IP地址不是多个IP地址中的一个。如果该IP地址位于该页上,搜索在616结束,且该IP地址是多个IP地址中的一个。根据在此讨论的实施例的搜索可以是任何用于搜索数据项目的合适的方法。例如,搜索可以是对分搜索(有时候被称为对分分而治之搜索)、线性搜索、内插搜索,如在共同拥有和共同未决的美国专利申请11/591,802中描述的搜索等。另外,或者可替代地,由在此描述的方法创建的页和/或页记录可与合适的指令结合以创建一种引擎,其用于确定输入的IP地址是否包含在根据上述方法处理的多个IP地址中。该引擎包括具有分配的IP地址的页和有限状态机(FSM)。该引擎有时候被称为预编译的异常列表引擎。FSM包括页记录和指令,所述指令可操作以使得处理器以任何合适的方式搜索页记录和页。当IP地址被输入到该引擎中,FSM搜索页记录以识别包含输入的IP地址的子范围位于哪页上。合适的页然后被搜索以确定该IP地址是否位于该页上。该引擎然后输出是或否答案,例如I或者0,指示输入的IP地址分别是或不是多个IP地址中第一个。以上讨论的一些或所有项目,例如布隆过滤器,也可以或可替代地包含在该引擎中。现在将参考图7描述在此描述的方法的使用的简单化的例子。为简单起见,一些中间的步骤没有被示出,且仅会被描述。对于该例子,多个IP地址700将由一范围内的一组30个数字表示,该范围是8比特整数的组(即,所有的数字都位于O到255之间(包含两端值))。每个数字因此将具有8个比特的尺寸。用于该例子的页尺寸限制是8个IP地址(或64比特)。因此,每个簇可具有不多于8个IP地址分配给它。在该例子中将使用1.5的负载因子阈值。出于举例的目的,该范围被初始地划分为仅有二个簇。每个簇具有该范围的一半的子范围。如上讨论的,IP地址被分配给簇。但是很明显,没有办法将三十个IP地址分配给两个簇且没有至少一个簇包括多于8个IP地址。因此,簇的数量被翻倍,且子范围的尺寸被降低一半。此时有4个簇。如上讨论的,将IP地址分配给它们。结果是具有子范围(0-63)的第一簇被分配了 12 个 IP 地址(2,3,5,11,13,33,34,41,45,50,51,60)。第二簇具有子范围(64-127),其被分配了 6个IP地址(65,66,82,83,84,85)。第三簇具有子范围(128-191),其被分配了 5个IP地址(150,151,170,175,180)。最后,第三簇具有子范围(192-255),其被分配 了 7 个 IP 地址(200,205,210,225,230,235,240)。第一簇仍然包含多于8个IP地址的页尺寸限制,且在一页上不适应。因此,簇的数量再次被翻倍,且子范围的尺寸再次被降低一半。IP地址被重新分配给新的簇。结果是8个簇702-716。每个簇702-716具有32个可能的IP地址的子范围尺寸。每个簇702-716的子范围在图7中由SR表示。被分配给每个簇702-716的IP地址的值也在簇中被指示。最后,对于每个簇的簇尺寸(在每个簇702-716中标为“尺寸”)被指示。例如,第一簇702具有O到31的子范围。分配给簇702的IP地址是(2、3、5、11和13)。因此,第一簇具有为5的簇尺寸。因为每个簇702-716现在具有小于或等于页尺寸限制的簇尺寸,每个簇中的IP地址可被分配给页718-724。根据簇尺寸,降序排列簇。因此,第一簇是簇704,具有为7的簇尺寸,且最后的簇是簇708,具有为O的簇尺寸。在该例子中,根据首次适应算法来分配簇。从最大的簇(簇704)开始,搜索具有足够空间来保持簇704的所有IP地址的页。开始没有页,且因此,没有具有用于至少7个IP地址的页。因此,创建页718,且将来自簇704的IP地址分配给它。下一个最大的簇706具有为6的簇尺寸。由于页尺寸限制是8,且已有7个IP地址被分配给第一页(且在此时为仅有的页)页718,在任何现有的页上没有足够的空间用于簇706的IP地址。因此,创建第二页720,且将来自簇706的IP地址分配给页720。类似地,第一页718或是第二页720都没有足够的自由条目来保持下一个最大簇702的IP地址。因此,创建第三页722,且将簇702的IP地址分配给它。再次地,页718、720或722都不具有足够的自由条目来保持簇716的4个IP地址。创建第四页724,将簇716的IP地址分配给它。下一个将被分配的是簇712,具有为3的簇尺寸。第一页和第二页都不具有足够的自由条目来保持簇714的IP地址。但是,第三页722仅包含在其能保持的8个IP地址中的5个IP地址。因此,簇712的IP地址可以被并且确实被分配给第三页722。当分配下一个簇714时,第四页是第一个具有足够的自由条目来保持簇714的IP地址的页。此时,第一页718具有I个自由条目,第二页具有2个自由条目,第三页具有O个自由条目,第四页具有I个自由条目。簇710是具有两个IP地址的下一个最大的簇。可保持簇710中的IP地址的页718-724中的第一个是第二页720,将IP地址分配给它。最后的簇708没有IP地址,且具有为O的簇尺寸。簇708因此被分配给空页(其可以是页零),指示其没有包括IP地址。簇702-716中的所有IP地址现在已被分配给页718-724。此时可计算负载因子。如以上讨论的,负载因子是页尺寸限制的和对多个IP地址中的IP地址(或者,可替换地但等价地,对页尺寸的和)的比率。在这个例子中,页尺寸限制是8。页尺寸限制的总和因此是32。页尺寸总和和多个IP地址700中的IP地址的数量是30。因此,负载系统是32/30,或1.067。该负载因子是可接受的(即,其低于为1.5的负载因子阈值)。如以上讨论的,如果负载因子高于负载因子阈值,簇的数量将再次被翻倍,且以上讨论的整个过程被再次重复,直到负载因子低于负载因子阈值。分配给每页718-724的IP地址然后按照数值被排序。第一页718和第四页724具有小于页尺寸限制8的页尺寸(两种情况下都是7)。对于每页718、724,从被分配给该页718,724的IP地址中选择一随机IP地址,并在该页718、724上复制该IP地址。结果是4页,726-732,每页都具有等于页尺寸限制8的页尺寸。在IP地址已被分配给页726-732后或在IP地址正被分配给页718-724时,可创建页记录。页记录指示簇702-716的每个子范围(典型地,通过开始值和结束值),以及该子范围包含的IP地址被分配的页。页记录可包括 用于每个子范围的元组,其格式为(开始值、结束值和页的编号)。因此,用于该例子的页记录将是:(0,31,3) ; (32,63,I); (64,95,2);(96,127,O); (128,159,2); (160,191,3); (192, 223,4) ; (224,255,4)。现在可使用页726-732和以上所讨论的页记录以及/或为搜索多个IP地址而生成的引擎来搜索多个IP地址700。尽管之前是按照网际协议(IP)地址来讨论的,此处讨论的方法不是如此受限的,且可被应用到其他类型的数据。例如,所述方法可被应用到诸如街道地址、社保号码、驾驶证号码、银行支票号码等数据。因为根据在此展示的方法,可以这样的速度搜索非常大的IP地址集,该方法的一种使用是与网络间装置(有时候也被称为设备)关联。这些装置,包括诸如防火墙的设备,可接收来自第一网络的数据包,并将其传递到第二网络。这些设备可包括用于是否允许特定包进入到第二网络的规则、策略等。例如,防火墙可位于网络和因特网之间。防火墙可希望阻止来自和/或发往特定IP地址的包。这些IP地址可以是已知的垃圾邮件发送者、黑客、国外政府等的IP地址。或者,另外,这些设备可希望阻止所有的包,除了那些来自某些已知IP地址的包,和/或以不同方式处理来自特定IP地址的包(诸如,例如,优先传输包等)因此,根据本公开的一个方面,且如在图8中示出的,公开了一种用于在第一网络802和第二网络804之间连接的网络设备800。设备800包括耦合到第一网络802的至少一个输入806,其用于接收来自第一网络800的包的。包包括网际协议(IP)地址。设备800还包括至少一个处理器808,其用于确定是否允许来自第一网络802的包进入第二网络804,以及至少一个存储设备810,其用于存储指令和数据。该数据包括存储多个异常的IP地址的多个页。异常的IP地址每个都具有在一范围内的数值。该范围被分为多个邻接的子范围,且每页包括一个或多个异常的IP地址,所述IP地址具有与该页关联的一个或多个子范围内的数值。每页具有由分配给该页的IP地址的数量定义的页尺寸。异常的IP地址被分配给每页且按数值排序。至少一个处理器808被配置为经由指令以识别来自第一网络802的包的IP地址,如果该IP地址是多个异常的IP地址中的一个则识别包括该IP地址的目标页,搜索该目标页以确定IP地址是否是目标页中异常的IP地址,并根据该IP地址是否是目标页中异常的IP地址,处理来自第一网络802的包。设备800还包括耦合到第二网络804的至少一个输出812,其用于,如果处理器808确定允许来自第一网络的包802进入第二网络804,将来自第一网络802的包传输到第二网络804。根据本申请的另一方面,用于在第一网络802和第二网络804之间连接的网络设备800包括至少一个耦合到第一网络802的输入806,其用于接收来自第一网络802的包。包包括网际协议(IP)地址。设备800包括至少一个处理器808,其用于确定是否允许来自第一网络802的包进入第二网络804,以及至少一个存储设备810。设备800还包括存储在存储设备810中的第一引擎。第一引擎包括多个页,所述页存储多个异常的IP地址。异常的IP地址每个都具有在一个数值范围内的数值,且范围被分为多个邻接的子范围。每页包括一个或多个异常的IP地址,所述IP地址具有与该页关联的一个或多个子范围内的数值。每页具有由分配给该页的IP地址的数量定义的页尺寸。异常的IP地址被分配给每页,且按数值排序。第一引擎还包括第一有限状态机(FSM)。第一 FSM包括可被处理器808执行的指令,以确定与包含该IP地址的子范围关联的页,搜索与包含该IP地址的子范围关联的页,以确定该IP地址是否是异常的IP地址,且输出表明该IP地址是否是异常的IP地址的指示。处理器808也经由存储在存储设备810中的指令被配置为根据来自第一 FSM的指示,处理来自第一网络802的包。设备800还包括耦合到第二网络804的至少一个输出812,其用于,如果处理器808通过根据来自第一 FSM的指示处理包确定允许来自第一网络802的包处理进入第二网络804,将来自第一网络802的包传输到第二网络804。处理器808可包括高速缓冲存储器814。如以上讨论的,高速缓冲存储器驻留在处理器808上。当数据存储在高速缓冲存储器814中时,访问、操纵、作用于数据可发生得比当其被存储在单独的存储器例如存储设备810中时更快得多。出于这个原因,优选地,选择的每页的页尺寸限制使得整页适应在高速缓冲存储器814中。 根据各种实施例,异常的IP地址可以是被允许进入第二网络、被拒绝进入第二网络和/或被特定处理的IP地址。因此,在一些实施例中,如果包的IP地址是异常的地址,包被阻止进入第二网络。在其他实施例中,如果包的IP地址是异常的地址,包被允许进入第二网络。在另外的实施例中,如果包的IP地址是异常的地址,包被特别处理,诸如被优先、重新路由到不同的目的地(不管是在第二网络内还是在第二网络外)等。如上所述,设备800可操作两组或更多组页和页记录,以及/或超过一个的引擎。例如,一个引擎可包括具有将被阻止的异常的IP地址的页,而第二个引擎包括将被允许的异常的IP地址。也可能对于一种类型的异常的IP地址(例如,阻止的、允许的、特殊的等)有超过一个的引擎。因此第一引擎可包括已知黑客的异常的IP地址,而另一个引擎包括已知垃圾邮件发送者的异常的IP地址。尽管以上仅描述了两个引擎,可以有超过两个引擎。在各个实施例中,以上讨论的方法的一些或全部元素可被并入到设备800或与设备800 —起使用。因此,例如,数据可包括页记录。处理器808可被指令配置以通过搜索页记录识别目标页。处理器808可被指令配置以通过搜索页记录确定包含IP地址的子范围中没有异常的地址。数据还可包括与没有包含异常的地址的任何子范围关联的空页。在一个不例性实施例中,设备800被用户(有时候被称为管理员)通过设置来利用。用户在不是设备800的计算机上执行以上讨论的方法。应选择页尺寸限制,使得整个页将适应于设备800的处理器808的高速缓冲存储器814。产生的页和页记录,或者产生的引擎,随后被装载到设备800,并被存储在至少一个存储设备810中。可替代地,或者另外地,如果设备800具有足够的存储、处理能力等,方法可在设备800本身中被执行。当操作时,在被允许进入第二网络前,来自第一网络的包使得其IP地址被提供到引擎。如上所讨论的,引擎将执行搜索,并输出指示以表明包的IP地址是否位于引擎的页内(即,其是否是异常的IP地址)。根据结果和设备800的配置,设备800可允许、阻止、特殊对待包等,可对包采取一些其他行动(诸如扫描包、复制包等),或者将IP地址输入到另一个引擎。可替代地,或者另外地,包的IP地址可同时被输入到两个或更多个引擎(即,并行处理)。为了说明和描述的目的,提供了实施例的以上描述。这不是穷尽性的,或限制本发明。特定实施例的单个元素或特征通常不是限制于该特定实施例,而是,当适用时,即使没有特别示出或描述,也可互换且可被用于选定的实施例。所述元素或特征也可以不同的方式改变。这样的变化 不是被认为脱离本发明,且所有这样的改变旨在包含在本发明的范围内。
权利要求
1.一种排序多个网际协议(IP)地址的方法,每个IP地址具有在一个数值范围内的数值,该方法包括: 将范围分为代表多个邻接的子范围的多个簇,每个子范围包含范围的基本上相同数量的数值,且每个子范围与不同的簇关联; 将每个IP地址分配到与子范围关联的簇,该子范围包括所述IP地址的数值,每个簇具有由分配给该IP地址的数量定义的簇尺寸; 将每个簇中的IP地址分配给多个页中的一页,每页具有页尺寸限制,该页尺寸限制定义了可被分配给该页的IP地址的最大数量,且每页具有由分配给该页的IP地址的数量定义的页尺寸; 如果所述页中的一页具有小于其页尺寸限制的页尺寸,在该页上复制分配给该页的至少一个IP地址以增加所述页的页尺寸;以及对于每一页,按照数值排序分配给该页的IP地 址。
2.如权利要求1所述的方法,其中每个子范围与一页关联,且还包括生成指示与每个子范围关联的页的页记录。
3.如权利要求1所述的方法,其中复制包括在所述页上复制分配给该页的一个或多个IP地址以将页尺寸增加到所述页的页尺寸限制。
4.如权利要求1所述的方法,其中分配包括按照簇尺寸降序的顺序将每个簇中的IP地址分配给多个页中的一页。
5.如权利要求1所述的方法,还包括在将每个IP地址分配到与包括所述IP地址的数值的子范围关联的簇之前按照数值排序IP地址。
6.如权利要求5所述的方法,其中按照数值排序IP地址包括按照数值以升序排列IP地址。
7.如权利要求1所述的方法,还包括在将每个簇中的IP地址分配到多个页中的一页之前,按照簇尺寸来排序簇。
8.如权利要求7所述的方法,其中给排序簇包括按照簇尺寸以降序来排序簇。
9.如权利要求1所述的方法,其中每页具有基本上相同的页尺寸限制。
10.如权利要求9所述的方法,还包括如果簇具有大于页尺寸限制的簇尺寸,降低每个子范围包含的数值的数量。
11.如权利要求10所述的方法,其中降低每个子范围包含的数值的数量包括将数值的数量减少一半。
12.如权利要求1所述的方法,其中根据首次适应算法和最佳适应算法中的一个,将每个簇中的IP地址分配给多个页中的一页,而不使得所述页的页尺寸超过页尺寸限制。
13.如权利要求1所述的方法,还包括在将每个簇中的IP地址分配给多个页中的一页后确定负载因子,负载因子是多个页的页尺寸限制的和对所述多个IP地址中的IP地址的数量的比率。
14.如权利要求13所述的方法,还包括,如果负载因子大于阈值,减少每个子范围包含的数值的数量。
15.如权利要求1所述的方法,还包括为至少一页生成布隆过滤器,该布隆过滤器识别没有被分配给所述页但是位于与所述页关联的子范围内的IP地址。
16.一种排序多个网际协议(IP)地址的方法,每个IP地址具有在一个数值范围内的数值,该方法包括: 将范围分为代表多个邻接的子范围的多个簇,每个子范围包含范围的基本上相同数量的数值,以及每个子范围与不同的簇关联; 将每个IP地址分配给与子范围关联的簇,该子范围包括所述IP地址的数值,每个簇具有由分配给该簇的IP地址的数量定义的簇尺寸; 按照簇尺寸来排序簇; 将每个簇中的IP地址分配给多个页中的一页,每页具有相同的页尺寸限制,该页尺寸限制定义了可被分配给该页的最大数量的IP地址,且每页具有由分配给该页的IP地址的数量定义的页尺寸; 如果所述页中的一页或多页具有小于其页尺寸限制的页尺寸,在所述页上复制分配给该页的一个或多个IP地址以将所述页的页尺寸增加至其页尺寸限制;以及 按照数值为每页排序分配给该页的IP地址。
17.如权利要求16所述的方法,还包括生成指示与每个子范围关联的页的页记录。
18.如权利要求16所述的方法,其中按照簇尺寸降序的顺序将每个簇中的IP地址分配给多个页中的一页。
19.如权利要求16所述的方法,还包括在将每个IP地址分配到与包括所述IP地址的数值的子范围关联的簇之前,按照数值排序IP地址。
20.如权利要求16所述的方法,其中根据首次适应算法和最佳适应算法中的一个,将每个簇中的IP地址分配给多个页中的一页,而不使得所述页的页尺寸超过页尺寸限制。
21.如权利要求1所述的方法,还包括,如果簇具有大于页尺寸限制的簇尺寸,降低每个子范围包含的数值的数量。
22.如权利要求11所述的方法,其中降低每个子范围包含的数值的数量包括将数值的数量减少一半。
23.如权利要求1所述的方法,还包括在将每个簇中的IP地址分配到多个页中的一页后确定负载因子,负载因子是多个页的页尺寸限制的总和对所述多个IP地址中的IP地址的数量的比率。
24.如权利要求13所述的方法,还包括,如果负载因子大于阈值,降低每个子范围包含的数值的数量。
25.如权利要求1所述的方法,还包括为至少一页生成布隆过滤器,该布隆过滤器识别未被分配给所述页但位于与所述页关联的子范围内的IP地址。
全文摘要
一种结构化数据的方法、预编译的异常列表引擎和网络设备。公开了一种用于排序多个网际协议(IP)地址的计算机执行的方法。该方法包括将一个范围内的IP地址分为代表多个邻接的子范围的多个簇,将每个IP地址分配给与包括该IP地址的子范围关联的簇,以及将每个簇中的IP地址分配给多个页中的一页。如果多个页中的一页具有小于页尺寸限制的尺寸,该方法包括在该页上复制分配给该页的至少一个IP地址。对于每一页,分配给该页的IP地址按数值被排序。还公开了一种包含该方法的方面的网络设备。
文档编号H04L29/12GK103220375SQ201310012018
公开日2013年7月24日 申请日期2010年4月19日 优先权日2009年4月21日
发明者D·梅斯塔斯 申请人:技术卫士安全有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1