使用经适配的布隆过滤器对数据包/帧的内容进行处理的方法和系统与流程

文档序号:26146261发布日期:2021-08-03 14:32阅读:92来源:国知局
使用经适配的布隆过滤器对数据包/帧的内容进行处理的方法和系统与流程

本技术涉及布隆过滤器(bloomfilter),更具体地涉及用于对数据/包帧的某些内容进行处理的经适配的(adapted)布隆过滤器。



背景技术:

在网络环境中,在实际通信可能开始之前,通常需要两方之间通过交换信息来建立通信链路协议的初始协商过程。所谓的“握手”是经常在网络协议环境中使用的这种信息交换的示例,诸如传输控制协议(tcp)三方握手。这种协商的初始过程基本上是通过在发送方与接收方之间交换的数据包/帧内容的要求而标准化的。在上述tcp示例中,建立连接需要三个单独的步骤,其中发送方和接收方分别验证适当性,从而验证从另一方接收的数据包/帧的合法性:

-发送方发送带有发送方自己的序列号x的特定数据包/帧(syn);

-接收方用带有接收方自己的序列号y和确认号x+1的特定数据包/帧(syn-ack)进行应答;以及

-发送方用带有确认号y+1的特定数据包/帧(ack)进行答复。

当接收的数据包/帧的内容与预期不符时(例如:没有序列编号,或没有在给定时间段内接收到答复),尝试重试以重新发送应当用另一特定数据包/帧进行答复的特定数据包/帧。

其他网络协议,诸如但不限于用户数据报协议(udp),本身不提供“握手”,然而,当发送方(诸如客户端)向接收方(诸如服务器)发送udp数据包/帧时,它可能会根据数据包/帧内容来预期来自接收方的给定答复。在这种情况下,如果没有收到答复,则发送方通常可以重试发送初始数据包/帧。

在这两种环境中(握手或未握手),通信方都有一个共同的要求,即记录在滑动的时间窗口内的多次尝试和重试。就存储和处理速度而言,要求更加严格,即一方同时(或尝试同时)与大量其他方进行通信(诸如,一个客户端同时(或尝试同时)与许多服务器通信进行通信,一个服务器与许多客户端反之亦然)。

在集成有许多服务器并向大量客户端提供相互托管服务的数据中心和云基础架构的上下文中,上述两个通信方可以是作为服务多个客户端的资源的托管在数据中心中的服务器,以及远程客户端。在这种情况下,已经开发出了拒绝服务(dos)类型的网络攻击,其目的是通过利用网络协议的弱点(无论是否涉及握手)来破坏此类服务器的正常运行,并且旨在消耗服务器的计算资源,从而使服务器不再能够正确地为合法的客户端服务。在上面的tcp示例中,攻击可以例如包括流氓客户端发送不完全合法的syn数据包/帧(或许多),并且服务器在分析和决定如何处理时消耗资源,或者不及时答复ack数据包/帧,使得服务器在等待时消耗资源,或者重新发送一个或若干syn-ack数据包/帧,等。

在上述网络协议的上下文中,通过拥有大量具有相同行为的远程客户端,并向服务器注入恶意数据包/帧,可以大大增加对服务器的网络攻击的严重性,使得服务器在处理此类恶意数据包/帧时可能消耗资源,并且变得无法与其他合法的远程客户端合作。因此,数据中心和云基础架构已经配备了联网设备件,这些联网设备件安装在位于这些数据中心和云基础架构的服务器与远程客户端之间,并且具有针对数据流量的风险缓解功能。这种联网设备件的示例包括防火墙、交换机、路由器和其他专用的安全风险缓解联网设备件。

这种缓解功能的一个方面涉及对所接收的或所拦截的数据流量进行监视,以检测作为网络协议一部分的数据包/帧的内容的可疑模式、排序和/或及时性。此监视要求缓解联网设备件的部分具有以下能力:判定接收的或拦截的数据包/帧中的特定地址是否属于一组地址(例如,称为欺诈性或非法性),并且根据网络协议存储在一段时间内的数据包/帧。

在通过网络协议进行通信的一方的环境中或在缓解联网设备件的环境中,就存储和处理速度而言,用于对交换的数据包/帧进行监视的要求非常高,特别是考虑到要监视的通信数量,和/或此必须发生的监视的速度。然而,由于在设备中实施的处理器和存储器的物理特性,所涉及的设备通常还具有硬件限制。因此,基于所谓的“布隆过滤器”,已经开发了用于减少存储需求和处理时间的计算技术。如本领域技术人员所知,布隆过滤器是空间有效的概率数据结构,其可用于测试诸如数据包/帧中的地址之类的元素是否是集合的成员。这种技术允许确切地知道元素不是集合的部分,或者以一定的概率知道元素可能存在于集合中。已开发了布隆过滤器的变体,所述变体中包括时间衰减和计数布隆过滤器。

然而,对于处理数据包/帧的内容的方法或系统的处理有效的实现方式,特别是记录在滑动的时间窗口内进行发送或接收此类数据包/帧的多次尝试和重试,仍然需要组合的时间衰减和计数布隆过滤器。

在背景技术部分中讨论的主题不应仅仅因为其在背景部分中提到而被认为是现有技术。类似地,在背景技术部分中提及的或与背景技术部分的主题相关联的问题不应被认为是现有技术中先前已经认识到的。背景部分中的主题仅仅代表了不同的方法。



技术实现要素:

在一个实施方式中,本技术的各种实现方式提供了一种用于在系统中处理内容字的方法,所述系统包括2n个存储字的i(i≥1)个存储器,每个所述存储字为r位,并且其中:

-每个存储字包括至少2s个布隆过滤器(bf)结构;

-每个bf结构包括floor(r/2s)(对(r/2s)向下取整)位,其中p位定义标志字段,m位定义时间戳字段,q位定义计数器字段,使得p+m+q=floor(r/2s),并且p是2的幂;并且

-绝对时间值具有时间单位的增量,且当前时间值是所述绝对时间值对2m取模;

该方法包括:

a)接收内容字;

b)将内容字散列成i个固定大小的字,每个固定大小的字包括分别为n位、s位和p的平方根位的3个字段ai、bi、ci;

c)指向分别与ai对应的i个存储字;

d)指向并读取i个所指向的存储字中分别与bi对应的各自的i个bf结构;

e)检查所有i个所指向的并读取的bf结构是否具有有效时间戳字段,如果否:

-对于i个所指向的并读取的bf结构中的具有无效时间戳字段的bf结构:将“1”写入标志字段的与ci对应的位中,将“0”写入标志字段的所有其他位中,并将计数器字段重置为“0”;并且对于i个所指向的并读取的bf结构中的具有有效时间戳字段的bf结构:将“1”写入标志字段的与ci对应的位中;以及

-对于i个所指向的并读取的bf结构中的所有bf结构:用当前时间值来更新时间戳字段,并转到步骤a);

f)检查所有i个所指向的并读取的bf结构中标志字段的所有位是否处于“1”,如果否:

-将“1”写入标志字段的与ci对应的位中;并且

-对于i个所指向的并读取的bf结构中的所有bf结构:用当前时间值来更新时间戳字段,并转到步骤a);

g)检查所有i个所指向的并读取的bf结构中计数器字段中的所有位是否处于“1”,如果否:

-对于i个所指向的并读取的bf结构中的计数器字段等于i个所指向的并读取的bf结构中的计数器字段的最小值的bf结构:将计数器字段的值增加1;并且

-对于i个所指向的并读取的bf结构中的所有bf结构:用当前时间值来更新时间戳字段,并转到步骤a);并且

h)对于i个所指向的并读取的bf结构中的所有bf结构:用当前时间值来更新时间戳字段,并转到步骤a)。

在另一实施方式中,该方法还包括:重新初始化i个存储器中的至少一个存储器的所有存储字中的所有bf结构,包括读取i个存储器中的至少一个存储器的所有存储字中的所有bf结构,并且对于每个这样读取的bf结构,检查时间戳字段的内容是否有效,如果否:将“0”写入标志字段的所有位中;将计数器字段重置为“0”;并且用当前时间值来更新时间戳字段。

在该方法的另一实施方式中,内容字是包括因特网协议源和目的地地址的地址的级联。

在该方法的又一实施方式中,每个bf结构包括:用于标志字段的4位,用于时间戳字段的4位,以及用于计数器字段的1位。

在该方法的又一实施方式中,当时间戳字段的值与当前时间值之间的差的绝对值小于预定值时,时间戳字段是有效的。

在该方法的又一实施方式中,预定值为2(m-1)

在该方法的又一实施方式中,在等于或小于2(m-1)个时间单位的时间段内执行:重新初始化在i个存储器中的至少一个存储器中的所有存储字中的所有bf结构。

在该方法的又一实施方式中,i≥3,并且i个固定大小的字中的至少两个字是相同的。

在另一实施方式中,本技术的各种实现方式提供了一种用于处理内容字的系统,所述系统包括2n个存储字的i(i≥1)个存储器,每个所述存储字为r位,其中:

-每个存储字包括至少2s个bf结构;

-每个bf结构包括floor(r/2s)位,其中p位定义标志字段,m位定义时间戳字段,q位定义计数器字段,使得p+m+q=floor(r/2s),并且p是2的幂;并且

-绝对时间值具有时间单位的增量,且当前时间值是所述绝对时间值对2m取模;

该系统被配置为:

-接收内容字;

-将内容字散列成i个固定大小的字(104,704,714),每个固定大小的字包括分别为n位、s位和p的平方根位的3个字段ai、bi、ci;

-指向分别与ai对应的i个存储字;

-指向并读取i个所指向的存储字中分别与bi对应的各自的i个bf结构;

-检查所有i个所指向的并读取的bf结构是否具有有效时间戳字段,如果否:

-对于i个所指向的并读取的bf结构中的具有无效时间戳字段的bf结构:将“1”写入标志字段的与ci对应的位中,将“0”写入标志字段的所有其他位中,并将计数器字段重置为“0”;并且对于i个所指向的并读取的bf结构中的具有有效时间戳字段的bf结构:将“1”写入标志字段的与ci对应的位中;以及

-对于i个所指向的并读取的bf结构中的所有bf结构:用当前时间值来更新时间戳字段;

-检查所有i个所指向的并读取的bf结构中的标志字段的所有位是否处于“1”,如果否:

-将“1”写入标志字段的与ci对应的位中;并且

-对于i个所指向的并读取的bf结构中的所有bf结构:用当前时间值来更新时间戳字段;

-检查所有i个所指向的并读取的bf结构中的计数器字段中的所有位是否处于“1”,如果否:

-对于i个所指向的并读取的bf结构中的具有的计数器字段等于i个所指向的并读取的bf结构中的计数器字段的最小值的bf结构:将计数器字段的值增加1;并且

-对于i个所指向的并读取的bf结构中的所有bf结构:用当前时间值来更新时间戳字段。

在另一实施方式中,该系统还被配置为读取i个存储器中的至少一个存储器的所有存储字中的所有bf结构,并且对于每个这样的读取的bf结构,检查时间戳字段的内容是否有效,如果否:将“0”写入标志字段的所有位中;将计数器字段重置为“0”;并且用当前时间值来更新时间戳字段。

在该系统的又一实施方式中,内容字是在两个通信设备之间交换的数据包/帧的一部分,并且被拦截以便确定是否在滑动的绝对时间窗口内于两个通信设备之间交换了相同的内容字。

在该系统的又一实施方式中,i个存储器是四倍数据速率sram。

在本说明书的上下文中,除非另有明确规定,否则计算系统可以指代但不限于“电子设备”、“操作系统”、“系统”、“基于计算机的系统”、“控制器单元”、“监控设备”,“控制设备”和/或其适合于当前相关任务的任何组合。

在本说明书的上下文中,表述“fpga”旨在包括现场可编程门阵列计算系统,其在提交本专利申请时就可在市场上购得,诸如参考的xilinxvu9p,或intelstratixv,以及任何随后成为可用的等效技术,无论其名称如何,均包括可用软件编程的计算系统硬件。

在本说明书的上下文中,表述“处理器”旨在包括单个专用处理器、单个共享处理器或多个单独的处理器,其中一些可以是共享的。在本技术的一些方面,处理器可以是例如通用处理器(诸如中央处理单元(cpu))、致力于专门目的的处理器或在fpga中实施的处理器。也可包括其他常规的和/或定制的硬件。

在本说明书的上下文中,除非另有明确规定,否则表述“存储器”旨在包括随机存取存储系统,其在提交本专利申请时就可在市场上购得,以及任何随后成为可用的等效技术,无论其名称如何,均包括用于存储数字信息的计算机系统介质。这种存储器的示例可以是四倍数据速率(qdr)静态随机存取存储器(sram)。

在本说明书的上下文中,可以通过使用专用硬件以及能够与适当的软件相关联地执行软件的硬件来提供附图中所示的功能步骤。

仍在本说明书的上下文中,“一种”计算机可读介质和“该”计算机可读介质不应被解释为是相同的计算机可读介质。相反,并且在适当的时候,“一种”计算机可读介质和“该”计算机可读介质也可以被解释为第一计算机可读介质和第二计算机可读介质。

在本说明书的上下文中,除非另有明确规定,否则“第一”、“第二”、“第三”等字被用作形容词只是为了允许区分它们彼此修饰的名词,而不是为了描述这些名词之间的任何特定关系。

本技术的实现方式均具有上述目的和/或方面中的至少一者,但不一定具有所有这些目的和/或方面。应当理解,通过尝试实现上面提及的目的而导致的本技术的某些方面可能不满足该目的和/或可以满足本文未具体叙述的其他目的。

根据以下描述、随附附图和所附权利要求,本技术的实现方式的附加和/或替代特征、方面和优点将变得显而易见。

附图说明

为了更好地理解本技术以及本技术的其他方面和另外的特征,参考结合随附附图进行使用的以下描述,在附图中:

图1描绘了根据本技术的经适配的布隆过滤器的实现方式的示例

图2描绘了根据本技术的经适配的布隆过滤器结构的示例;

图3描绘了根据本技术的经适配的布隆过滤器结构的对于分析接收的或拦截的数据包/帧的某些内容的应用;

图4描绘了根据本技术的对包含布隆过滤器结构的存储器的内容进行完全重新初始化的可选并行过程;

图5描绘了可以用于实施根据本技术的方法和过程的计算系统;

图6示出了本技术的对于接收的或拦截的数据包/帧的示例性集合的应用;

图7描绘了本技术的实施方式,其中实现了多个经适配的布隆过滤器结构;

以及

图8描绘了根据本技术的多个经适配的布隆过滤器结构的用于分析接收的或拦截的数据包/帧的某些内容的应用。

应注意的是,除非本文另有明确规定,否则附图未按比例绘制。此外,从一个图到下一个图的相同的元件共享相同的附图标记。

具体实施方式

本文中列举的示例和条件语言主要是旨在帮助读者理解本技术的原理,而不是将其范围局限于这些具体列举的示例和条件。应当理解,本领域技术人员可以设计各种布置,尽管这些布置没有在本文中明确描述或示出,但是体现了本技术的原理,并且包含在本技术的精神和范围内。

此外,为了帮助理解,以下描述可以描述本技术的相对简化的实现方式。如本领域技术人员所理解的,本技术的各种实现方式可以具有更大的复杂性。

在某些情况下,也可以阐述被认为是对本技术进行修改的有益示例。这样做仅是为了帮助理解,并且也不是为了限定本技术的范围或阐述本技术的界限。这些修改不是详尽的列表,并且本领域技术人员可以进行其他修改,而仍然保持在本技术的范围内。此外,在未提出修改示例的情况下,不应解释为不可能进行修改和/或所描述的是实施本技术的该元素的唯一方式。

此外,本文中叙述本技术的原理、方面和实现方式以及其具体示例的所有陈述旨在包括其结构和功能等效物,无论它们是当前已知的还是将来开发的。因此,例如,本领域技术人员将理解,本文中的任何框图代表体现本技术原理的说明性电路的概念视图。类似地,将认识到,任何流程图、流程示意图、状态转换图、伪代码等代表可在非易失性计算机可读介质中基本上代表的并因此由计算机或处理器执行的各种过程,而无论是否明确地示出了这样的计算机或处理器。

软件模块,或者简单地暗示为软件的模块,在本文中可以表示为流程图元素或指示过程步骤和/或文本描述的执行的其他元素的任何组合。这样的模块可以由明确或隐式示出的硬件执行。此外,应当理解,模块可以包括例如但不限于计算机程序逻辑、计算机程序指令、软件、堆栈、固件、硬件电路或其提供所需功能的组合。

图1描绘了根据本技术的经适配的布隆过滤器的实现方案的示例。内容字108将被处理,特别是没有限制地在这样的内容字108代表接收的或拦截的数据包/帧的某些内容的情况下,以便确定最近时间段内是否处理了相同的内容。例如,内容字108可以是通过网络协议在发送方与接收方之间交换并由接收方分析的数据包/帧的内容部分,或者是通过网络协议在两个通信方之间交换的并由缓解联网设备件拦截的内容部分。例如,内容字108也可以是这样的通信方/发送方的ip源和目的地地址以及tcp目的地端口的级联。例如,内容字108可以包括32+32+16=80位。如本领域技术人员所知,可以使用散列函数(杂凑函数/哈希函数,hashfunction)109将内容字108映射到可以用于索引目的的固定大小的字104中。

利用存储器101,该存储器包括例如217个字,每个字为72位,可以从硬件限制的角度优化固定大小的字104,以包括:

-17位,其指向(105)存储器101的217个字中的一个字;

-3位,其指向(106)存储器101的存储字102中的8个布隆过滤器结构中的一个布隆过滤器结构(示例如图1所示:bf2);以及

-2位,其指向(107)布隆过滤器结构103中的标志字段(如下所述)的4位f1至f4中的一位(示例如图1所示:f3)。例如,该2位的值可以指向位f1至f4,如下所示:

对于本领域技术人员而言显而易见的是,特别是取决于存储器101的大小(宽度和长度),可以在不影响本文教导的普遍性的情况下对固定大小的字104的其他大小和组成进行适配和优化。

图2描绘了根据本技术的经适配的布隆过滤器结构的示例;布隆过滤器结构103可以包括:

-4位标志201,例如分别标记为f1至f4;

-4位时间戳202,例如分别标记为t1到t4;以及

-1位计数器203,例如标记为c。

当要处理接收的或拦截的内容字108时,此结构与下面说明的读取/写入序列一起使用,构成了将时间衰减与计数功能相结合的经适配的布隆过滤器,该计数功能例如对于通过记录在滑动的时间窗口内发送或接收这样的数据包/帧的多次尝试和重试来对数据包/帧进行处理的方法或系统的有效处理的实现方式来说是期望的。对于本领域技术人员而言显而易见的是,在不影响本文教导的普遍性的情况下,可以根据若干因素来对布隆过滤器结构103的大小和组成进行适配和优化,这些因素特别地包括而不限于:存储器101的大小(宽度和长度)、内容字108的大小、最大可接受的误报率、相同的内容字108在滑动的时间窗口内的最大出现次数(例如,作为在特定网络协议下的重试次数)和/或要同时监视的不同内容字108的最大数量。

例如:

-计数器203可以包括取决于在滑动的时间窗口内的待监视的内容字108的重试次数的一个以上的位:例如,在可以进行5次重试的网络协议的环境中为2位;

-时间戳202的位数可以被适配为例如适应基本上受硬件限制的进行如下行为所需的时间:根据下面关于图4描述的过程来重新初始化存储器101,或者选择由一个时间戳单位提供的“绝对”时间的特定粒度;和/或

-标志201的位数可以被适配为通过如下方式在待同时监视的不同内容字108的最大数量与存储器101的最大占用率之间进行优化:采用位数为存储器101中的字宽的除法器(divider)的bf结构(例如如图1所示:存储器101中的72位字宽为9位bf结构)。

图3描绘了根据本技术的经适配的布隆过滤器的应用,以分析接收的或拦截的数据包/帧的某些内容。该应用可以采取具有步骤300至步骤310的方法的形式。在步骤300处,可以接收或拦截数据包/帧。在步骤301处,可以将数据包/帧的内容字散列成固定大小的字,诸如例如,上面描述的22位固定大小的字104。在步骤302处,所述固定大小的字可以用于指向并读取/写入诸如例如前述存储器101之类的存储器中的上述bf结构103之类的bf结构。

一旦从存储器中恢复了bf结构,就可以在该bf结构上进行如下多次读取/写入操作。编号是指图2所描绘的bf结构中的编号字段的示例:

-在步骤303处,可以检查时间戳字段202的内容:

-如果其内容是“无效”的,其中下文更精确地定义了该概念,则在步骤304处可以将“1”写入标志字段201中所指向的位,诸如上面描述的位f3,并且可以将“0”写入标志字段201的所有其他位中(使得,由于时间戳字段202的内容是无效的,因此没有机会将标志字段201的除最后所指向的位以外的任何部分认为有效),在步骤305处,可以将“0”写入计数器字段203的所有位中(即:计数器字段203可以重置为0),在步骤310处,可以将当前时间值写入时间戳202中(对于本领域的人员来说显而易见的是,该当前时间值将为:“绝对”时间值对2的时间戳字段202的位数的幂取模),并且在步骤300处,可以等待下一数据包/帧。这种情况与无效的bf结构的内容对应,因此在步骤301处获得固定大小的字的第一次出现;

-如果在步骤303处,时间戳内容是“有效”的,则可以在步骤306处检查标志字段201中所指向的位:

-如果标志字段201中所指向的位的值为“0”,则在步骤307处,可以将“1”写入标志字段201中所指向的位中,在步骤310处可以将当前时间值(“绝对”时间值对2的时间戳字段202的位数的幂取模)写入时间戳202中,并且可以在步骤300处等待下一数据包/帧。这种情况与有效的bf结构的内容对应,因此在步骤301处获得固定大小的字的第一次出现;

-如果在步骤306处,标志字段201中所指向的位的值为“1”,则在步骤308处,可以检查计数器203的内容:

-如果计数器203的值为“0”,则在步骤309处,计数器的值可以被设置为“1”,在步骤310处可以将当前时间值(“绝对”时间值对2的时间戳字段202的位数的幂取模)写入时间戳202中,并且可以在步骤300处等待下一数据包/帧。这种情况与有效的bf结构的内容对应,并且在步骤301处获得固定大小的字的第二次出现;

-如果在步骤308处,计数器203的值为“1”,则可以在步骤310处将当前时间值(“绝对”时间值对2的时间戳字段202的位数的幂取模)写入时间戳202中,并且可以在步骤300处等待下一数据包/帧。这种情况与有效的bf结构的内容对应,并且在步骤301处获得固定大小的字的第三次或后续出现;

对于本领域技术人员而言显而易见的是,如果计数器203包括一个以上的位,则步骤308和309可以适于检查超过两个相同的内容字108的出现次数。例如,步骤309可以包括计数器203的增量,而不是如图3所示写入“1”。

对于本领域技术人员而言同样显而易见的是,仅为了便于描述,在图3中将检查步骤303、306、308表示为连续的,然而可以并行执行这种检查步骤。

因此,根据本技术的经适配的bf结构103在如本文所述的其中一个可能的应用中,可以允许记录发送或接收具有特定内容的数据包/帧的多次尝试和重试。为了可以在滑动的时间窗口内执行这种记录,可以定义相对于当前时间值的时间段,在该时间段期间,时间戳202中的内容被认为是有效的,而超过该实际时间段,该内容被认为是无效的。该时间段可以由时间戳202的位数来定义。在作为时间计数器的时间戳202围绕自身循环之前,时间戳202的m位允许计数达2m个时间单位。例如,时间戳202可以包括4位,如图2所描绘的,以允许计数达16个时间单位。时间戳202的内容可以例如被认为对于2(m-1)个时间单位是有效的。在这种情况下,如果时间戳202的值与当前时间值(“绝对”时间值对2m取模)之间的差的绝对值超过2(m-1),则时间戳202的内容可以被认为是无效的。例如,如果“绝对”时间值为3498,当前时间值为3498对16取模=10,则:

-如果在如图3的步骤303处所检查的时间戳202的值为5,则时间戳202的内容可以被认为是有效的;

-如果时间戳202的值为1,则时间戳202的内容可以被认为是无效的。

对于本领域技术人员而言显而易见的是,在不脱离本技术的范围的情况下,相对于当前时间值的、并且表征时间戳202的内容的有效性的时间段,可以被定义为2(m-1)个时间单位以外的时间单位。

如本领域技术人员还将理解的,时间单位的持续时间的判定将取决于多个因素,包括本技术的应用细节,或由可以实施经适配的bf结构的计算系统的时钟周期所提供。例如,时间单位可以是一秒。

在一般情况下,可以为根据本技术的经适配的bf结构及其用法定义若干参数及参数的相互关系。存储器(101)可以包括2n个(在图1的示例中,n=17)存储字(102),每个存储字为r位(在示例中,r=72),并且每个存储字(102)可以包括2s个bf结构(103)(在示例中,s=3)。每个bf结构(103)可以包括若干位,这些位可以是:floor(r/2s)(在示例中=9),其中p位定义标志字段(201),m位定义时间戳字段(202),且q位定义计数器字段(203)。参数的约束条件是p+m+q=floor(r/2s),并且p是2的幂;(在示例中,p=4、m=4、q=1)。固定大小的字(104)包括分别为n(在示例中=17)、s(=3)和平方根(p)(=2)位的3个字段。

由于在图3的步骤303处,检查时间戳202内容的有效性仅在接收或拦截数据包/帧时发生(图3中的步骤300),可以根据本技术实施可选的并行过程,该过程定期检查时间戳202内容的有效性,而与数据包/帧的接收或拦截无关。该可选过程可以涉及将图1中的存储器101的内容以图4所描绘的定期间隔完全重新初始化。该重新初始化过程可以在2(m-1)-1个时间单位的时间段进行,例如,当时间戳202的内容可被认为对2(m-1)个时间单位有效时。然而,对于本领域技术人员而言显而易见的是,可以采用其他时间段,特别是取决于由可以实施经适配的布隆过滤器结构的处理环境所提供的存储器101的访问和更新速度。对于本领域技术人员而言显而易见的是,实施或不实施可选的并行重新初始化过程的决定可以由时间戳字段202的位数针对根据图3的方法和系统的特定应用的可接受性驱策,其风险是在步骤303处时间戳202被判定为有效,尽管自步骤303的前一次检查以来,它所提供的时间计数已经围绕自身循环了一次或若干次。

转到图4,在步骤400处,可以在存储器101中读取bf结构103。在步骤401处,可以检查时间戳字段202:

-如果其内容是无效的,如上文定义的概念,在步骤402处,可以将“0”写入标志字段201的所有位中,在步骤403处,可以将“0”写入计数器字段203的所有位中(即:计数器字段203可以重置为0),并且在步骤404处,可以将当前时间值(“绝对”时间值对2m取模)写入时间戳202中;然后分支返回到步骤400,并且读取存储器101中的下一bf结构103;

-如果在步骤401处,时间戳202的内容是有效的,则在读取存储器101中的下一bf结构103时,分支返回到步骤400。

重复该处理,直到存储器101中的所有bf结构103的时间戳202的内容都被读取和检查。对于本领域技术人员而言显而易见的是,对于存储器101中的所有bf结构103,本文所述的重新初始化过程在完成之前可能需要花费若干时间单位,但是,图3中的步骤303将确保在bf结构中的时间戳202的内容无效时(以及当可选的重新初始化过程没有实施时),不可以使用读取的bf结构。

上述方法和过程步骤可在计算系统中实施,该计算系统的示例(不受限制)可以在图5中相应地找到。如本领域技术人员将理解的,这种计算系统可以以任何其他合适的硬件、软件和/或固件或其组合实施,并且可以是单个物理实体,或者是具有分布式功能的若干单独的物理实体。

在本技术的一些方面中,计算系统500可以包括各种硬件组件,该硬件组件包括由处理器501、固态驱动器502、存储器503和输入/输出接口504共同表示的一个或更多个单核或多核处理器。在这种情况下,处理器501可以包括在fpga中或不包括在fpga中。在一些其他方面,计算系统500可以是“现成的”通用计算系统。在一些方面,计算系统500也可以分布在多个系统中。计算系统500也可以专用于本技术的实施。如本技术领域的技术人员可以理解的,可以在不脱离本技术的范围的情况下设想关于如何实施计算系统500的多种变型。

计算系统500的各种组件之间的通信可以通过一个或更多个内部和/或外部总线505(例如,pci总线、通用串行总线、ieee1394“fireware”总线、scsi总线、串行ata总线、arinc总线等)来实施,各种硬件组件被电耦合到这些总线上。

输入/输出接口504可以允许实现诸如有线或无线接入之类的联网能力。作为示例,输入/输出接口504可以包括联网接口,诸如但不限于网络端口、网络插座、网络接口控制器等。可如何实施联网接口的多个示例对于本技术领域的技术人员将变得显而易见。根据本技术的实现方式,固态驱动器502可以存储程序指令,诸如例如,库、应用程序等的适于被加载到存储器503中并且由用于根据本技术的方法和过程步骤的处理器501执行的那些部分。

图6以具有行600至610和列620至623的表的形式示出了本技术的针对所接收的或所拦截的数据包/帧的简化的示例性集合的应用。列620中的值是假设的“绝对”时间值。列621中的值是所接收的或所拦截的假设固定大小的字104,全部指向一个bf结构103。在列622,分别针对bf结构103的字段标志201、时间戳202和计数器203描绘了bf结构103随着时间推移的相应的演变。列623中的值是关于由使用本技术所收集的出现信息的注释。为了简化描述的目的,给出了与图3的步骤的应用相关的示例,但不是图4的完全重新初始化的可选并行过程。

在行600处,“绝对”时间值为0:bf结构103中的所有位被设置为0。在行601处,“绝对”时间值为1:时间戳201的值变为“0011”,并且接收或拦截固定大小的字104值n2:标志201的值变为“0100”(位f2被设置为“1”),计数器203的值保持处于“0”。这是值n2的第一次出现。在行602处,“绝对”时间值为3:时间戳202的值变为“0011”,并且接收或拦截固定大小的字104的值n4:标志201的值变为“0101”(位f4被设置为“1”),计数器203的值保持处于“0”。在行603处,“绝对”时间值为7:时间戳202的值变为“0111”,并且接收或拦截固定大小的字104的值n1:标志201的值变为“1101”(位f1被设置为“1”),计数器203的值保持处于“0”。这是值n1的第一次出现。在行604处,“绝对”时间值为9:时间戳202的值变为“1001”,并且再次接收或拦截固定大小的字104的值n1:标志201的值保持“1101”,计数器203的值被设置处于“1”。这是值n1的第二次出现。在行605处,“绝对”时间值为15:时间戳202的值变为“1111”,并且再次接收或拦截固定大小的字104的值n1:标志201的值保持“1101”,计数器203的值保持处于“1”。这是值n1的第三次出现。

在行606处,“绝对”时间值为24,并且再次接收或拦截固定大小的字104的值n2:已围绕自身循环的时间戳202的值变为“1000”,并且由于这不再是有效时间戳202(假设例如,如上所释,时间戳202仅在时间戳202的值与“绝对”时间值之间的差的绝对值小于8(2(m-1))时有效),标志201的值变为“0100”(位f2被设置为“1”,并且所有位f1、f3和f4被设置为“0”),并且计数器203的值被设置处于“0”。这是值n2的第一次出现,而不是第二次出现(尽管已经在“绝对”时间值1接收到n2),因为时间戳202是无效的。在行607处,“绝对”时间值为26:时间戳202的值变为“1010”,并且接收或拦截固定大小的字104的值n4:标志201的值变为“0101”(位f4被设置为“1”),计数器203的值保持处于“0”。这是值n4的第一次出现,而不是第二次出现(尽管已经在“绝对”时间值3接收到n4),因为时间戳202在行606处是无效的。在行608处,“绝对”时间值为27:时间戳202的值变为“1011”,并且再次接收或拦截固定大小的字104的值n2:标志201的值保持处于“0101”,计数器203的值被设置为“1”。这是值n2的第二次出现。在行609处,“绝对”时间值为28:时间戳202的值变为“1100”,并且接收或拦截固定大小的字104的值n3:标志201的值变为“0111”(位f3被设置为“1”),计数器203的值保持处于“1”。这是值n3的第一次出现。在行610处,“绝对”时间值为29:时间戳202的值变为“1101”,并且再次接收或拦截固定大小的字104值n3:标志201的值保持为“0111”,并且由于计数器203处于“1”,这看起来像是值n3的第三次出现,由于n3仅出现两次,因此为误报。

误报是根据本技术进行适配、或不进行适配的布隆过滤器技术固有的,其可接受率取决于该技术的应用。在本技术的实施方式中,可以实施多个经适配的布隆滤波器结构,以降低误报率。

图7描述了实施了多个经适配的布隆过滤器结构的本技术的实施方式。其中表示了三个结构,但是对于本发明领域技术人员而言将显而易见的是,仍然可以基于本说明书的教导来实施更多或更少的这种结构。内容字108将被处理,如关于图1所提及的。如本领域技术人员所知,可以使用散列函数109、709、719将内容字108映射到可以用于索引目的的固定大小的字104、704、714中。这些散列函数可以不同,或者其中的两个或若干个散列函数可以相同。

利用三个存储器101、705、715,每个存储器包括例如217个字,每个字为72位,固定大小的字104、704、714可以优化为分别包括:

-17位,其指向存储器101、705、715中的每个存储器的各自的217个字中的一个字;

-3位,其指向存储器101、705、715中的每个存储器的各自的存储字中的8个布隆过滤器结构中的一个布隆过滤器;以及

-2位,其指向布隆过滤器结构103、706、716中的每个布隆过滤器结构中的各自的标志字段的4位f1至f4中的一个。

对于本领域技术人员而言显而易见的是,特别是取决于在接收通信方或缓解联网设备件中可用的存储器101、705、715的大小(宽度和长度),可以在不影响本文教导的普遍性的情况下适配和优化固定大小的字104、704、714的其它大小和组成。

对于本领域技术人员而言同样显而易见的是,在任何给定时间点,布隆过滤器结构103、706、716可以不一定具有相同的内容。通过散列函数109、709、719获得的这种布隆过滤器结构的多样性产生具有相同结构的固定大小的字104,704,714并指向也具有相同结构的存储器101,705,715,允许赋予本技术更多的鲁棒性(即:更少的误报),例如,在如本文所述的用于记录发送或接收具有特定内容的数据包/帧的多次尝试和重试的其可能的应用之一中。

图8描绘了根据本技术的多个经适配的布隆过滤器结构的、用于分析接收的或拦截的数据包/帧的某些内容的应用。散列函数、固定大小的字和存储器的数量通常被概括为“i”。该应用可以采取具有步骤800至810的方法的形式。在步骤800处,可以接收或拦截数据包/帧。在步骤801处,通过i个散列函数将数据包/帧的内容字散列成i个固定大小的字,诸如例如,上文描述的22位固定大小的字104。在步骤802处,固定大小的字可以用于指向并读取/写入i个bf结构,诸如例如在前面提及的存储器101、705、715之类的i个存储器中各自的上述bf结构103、706、716。

一旦从存储器中恢复了bf结构,就可以在这些bf结构上进行如下多次读取/写入操作:

-在步骤803处,可以检查i个bf结构中的i个时间戳字段的内容:

-如上文所定义的,如果i个内容中的至少一个内容是“无效的”,则在步骤804处,对于具有无效时间戳内容的所有bf结构,可以将“1”写入此类bf结构的标志字段中所指定的位,并将“0”写入所有其他位中,并且可以将“0”写入此类bf结构的计数器字段的所有位中,而在步骤805处,对于具有有效时间戳内容的所有bf结构,可以将“1”写入此类bf结构的标志字段中所指向的位(保持此类结构的所有其他位不变)。对于具有有效或无效时间戳的i个bf结构:在步骤810处,可以将当前时间值写入i个bf结构的时间戳中,并且可以在步骤800处等待下一数据包/帧。这种情况与无效的bf结构中的至少一个无效的bf结构的内容对应,因此在步骤801处获得固定大小的字的第一次出现;

-如果在步骤803处,所有i个时间戳内容都是“有效”的,则可以在步骤806处检查i个bf结构的i个标志字段中的i个所指向的位:

-如果i个标志字段中的i个所指向的位中的任一位的值为“0”(即:所有i个所指向的位的最小值不处于“1”),则在步骤807处,可以将“1”写入i个标志字段中的任何此类指向的位中,可以将当前时间值写入i个bf结构的时间戳中,并且可以在步骤800处等待下一数据包/帧。这种情况与有效的bf结构的内容对应,并且在步骤801处获得散列成i个固定大小的字的数据包/帧内容字的第一次出现;

-如果在步骤806处,i个标志字段中的所有i个所指向的位的值都为“1”(即:所有i个所指向的位的最小值都处于“1”),则在步骤808处,可以检查i个bf结构的i计数器的内容:

-如果所有i个计数器中的任一位的值为“0”(即:所有i个计数器中的所有位的最小值都不处于“1”),则在步骤809处,对于具有等于所有i个计数器中的最小值的所有bf结构:任何此类计数器的值都可以增加“1”,在步骤810处,可以将当前时间值写入i个bf结构时间戳中,并且可以在步骤800处等待下一数据包/帧。这种情况与有效的bf结构的内容对应,并且在步骤801处获得散列成i个固定大小的字的数据包/帧内容字的后续出现;

-如果在步骤808处,所有i个计数器中的所有位的值都为“1”(即:所有i个计数器的所有位的最小值处于“1”),则在步骤810处,可以将当前时间值写入i个bf结构时间戳中,并且可以在步骤800处等待下一数据包/帧。这种情况与有效的bf结构的内容对应,并且在步骤801处获得散列成i个固定大小的字的数据包/帧内容字的后续出现(例如,对于1位计数器至少是第3次,或对于2位计数器至少是第5次)。

对于本领域技术人员而言显而易见的是,如果i个计数器包括一个以上的位,则步骤808和809可以适于检查在步骤801处获得的散列成i个固定大小的字的数据包/帧内容字中的、超过两次的出现次数。

对于本领域技术人员而言还显而易见的是,仅为了便于描述,在图8中将检查步骤803、806、808表示为连续的,然而可以并行执行这种检查步骤。

关于图4所述的,包含布隆过滤器结构的存储器的内容的完全重新初始化的可选并行过程,也可以可选地用于如图7和图8所描绘的多个经适配的布隆过滤器结构的应用中。如果使用的话,也可以仅在存储器101、705、715中的某些存储器中使用它。

尽管已经参考以特定顺序执行的特定步骤描述和示出了上述实现方式,但是应当理解,在不偏离本说明书的教导的情况下,这些步骤可以组合、细分或重新排序。这些步骤中的至少一些步骤可以并行或串行地执行。因此,步骤的排序和分组不受本技术的限制。

应当明确理解,在本技术的每个及各个实施方式中,并非需要享有本文所提及的所有技术效果。

本技术的上述实现方式的修改和改进对于本领域技术人员而言将变得显而易见。上述描述旨在示例性的而非限制性的。因此,本技术的范围旨在仅由所附权利要求的范围来限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1