一种数据过滤方法及系统与流程

文档序号:12478179阅读:328来源:国知局
一种数据过滤方法及系统与流程

本发明涉及计算机网络的技术领域,尤其涉及网络数据流的监控、分流或者分析中的过滤技术,属于计算机安全领域。



背景技术:

互联网技术给信息传播带来了革命性的变化,例如,网络的“无中心化”,它向所有人开放,具有无限的信息源,每个人既可以是信息的使用者也可以是其提供者。而且,网络还具有交互性,使用者可以对自己接受的信息进行自主选择和控制。这些特性突破了过往所有的传播形态,为信息的多样化和言论自由空间的扩展提供了极大便利。也因此造成网络上时刻不停的流转着海量的数据流。

但是,网络需要与外界的相对自由的联系,所以会更容易受到许多方面的威胁,例如物理威胁、系统漏洞造成的威胁、身份鉴别威胁、线缆连接威胁和有害程序等方面威胁。因此,产生了对海量数据进行监控的需求。

同时,虽然网络硬件设备的性能一直不断的提高,但网络上的信息数量也一直以指数不断提高。在网络的主干信息通路上,依靠多台网络设备并行进行信息处理的情景十分常见。因此,产生了对海量数据进行分流的需求。

此外,网络传输的海量数据催生出新兴的大数据概念,凭借大数据分析对海量数据的处理,能够高效精准地对相关业务服务作出改进。因此,对海量数据进行分析的需求也在快速增长。

例如,一种应用环境是在如图1所示的数据分析应用中。通过交换机,将上游业务与下游业务之间的数据包复制一份导流到旁路数据通道,再通过网络分流设备将数据包分配到多个分析服务器上,从而对网络应用中的数据包中的数据进行分析。(常见的主流应用都使用TCP协议,但也可以对其他协议的数据包及数据包中的数据进行分析)。

当交换机复制数据包进入旁路数据通道时,如果没有进行数据过滤,旁路数据通道进入分析设备的数据流量很多,即数据包的数量很多。但由于仅有部分数据对数据分析具有价值,因此不需要的数据包将在后端被数据分析时被丢弃,造成空耗分流设备、分析设备的资源。

上述现有技术的做法存在的问题:前端交换机复制数据包时不进行数据过滤,而由后端处理数据丢弃问题,这会给后端设备造成压力和空耗资源。

如图2所示,一种常见的改进方式是,在网络数据流的监控、分流或者分析之前,增加数据过滤技术的配合。

一般的,当采用黑名单过滤时,当待过滤的数据中与黑名单中的某一条记录相符时,执行相应的过滤操作将数据拒绝通过/或将数据丢弃,否则使数据通过。当过滤类型为白名单过滤时,当待过滤的数据中与白名单中的某一条记录相符时,执行相应的过滤操使数据通过,否则拒绝数据通过/或将数据丢弃。通常,数据过滤的过滤要素为五元组中的一项或多项组合,即源IP地址、源端口、目的IP地址、目的端口、或传输层协议中的至少一项。

从而达成,当采用白名单过滤类型时,(例如TCP协议下,数据过滤的丢弃操作可针对IP地址进行,)只有含特定IP地址的TCP数据包才能数据通过,进入后续的分流分析操作;否则将会数据丢弃,不再进行分流分析操作(或者规则相反,采用黑名单过滤类型时,一旦命中则数据丢弃,其他数据通过后进行分流分析)。

如此,通过前置的过滤操作,可以有效降低监控、分流或者分析操作面对海量数据流的巨大压力。

然而,为海量网络数据流的监控、分流或者分析进行的的前置过滤操作有别于为了身份认证、权限控制而进行的黑名单/白名单过滤。主要原因是名单长度的巨大差异,造成所需的过滤处理的资源需求与压力截然不同。特别是在由网络设备硬件直接执行的网络数据过滤匹配中,对硬件资源的需求与压力增长都另用户难以忍受。

如果每当收到一个数据包,过滤设备都需对照过滤匹配表对数据包进行逐个扫描,依次匹配,直到匹配完,一旦命中,则放行的同时进行分流分配,但这种方法显然太耗时间,使网络分流设备很有可能不能实时完成过滤分流分配处理,过滤匹配表项越大越不可行。

现有的一种改进的方案是将过滤匹配表项分块,例如,将200个表项分成4块,并行设计4个完全一样的过滤匹配模块进行并行处理,这样速度确有提升。但是对于主要由硬件进行过滤匹配处理的交换机、网络分流设备,并行设计太耗硬件处理资源,同时对于大的过滤匹配表项(例如500个,1000个),依然不可行。

另一种改进是将过滤匹配表项放到CAM芯片上,则可以确保操作实时,逻辑简单,但是CAM芯片太贵,并且随着过滤匹配表项的增加成本快速上升,在很多时候造成设备成本过高不可行。

所以需要一种改进的数据过滤方法,对明显不符合过滤匹配表的数据可以快速筛出,对符合过滤匹配表的数据也无需将待过滤的数据与过滤匹配表进行逐一比对,并能以较小的硬件资源与成本实现。



技术实现要素:

为了解决网络数据流的监控、分流或者分析中,现有的数据过滤技术存在的技术问题,本发明是通过以下技术方案实现的:

一种数据过滤方法,包括如下步骤:S20根据待过滤的数据中包含的预设过滤要素,计算所述数据中过滤要素对应的散列值;S30根据所述散列值,在预设长度的按所述散列值排序的静态匹配表中查找相应的过滤记录;S40判断对应该散列值的静态匹配表过滤记录中的过滤表项是否有效;当该散列值的静态过滤表项无效时,跳转执行步骤S83;否则,执行下一步;S50判断该条过滤记录中,记录的过滤表项与所述数据中过滤要素是否相符;当相符时,跳转执行步骤S81;否则,执行下一步;S60判断该条过滤记录中,是否包含有效的后续记录指针;当不含有效的后续记录指针时,跳转执行步骤S83;否则,执行下一步;S70根据所述有效的后续记录指针,在可变长度的按所述记录指针排序的动态匹配表中查找下一条具有所述散列值的动态匹配表过滤记录;循环执行步骤S50-S70;S81根据预设的过滤类型,执行相应的过滤操作;S83执行与预设的过滤类型相反的过滤操作。

本发明对明显不符合过滤匹配表的数据可以快速筛出,对符合过滤匹配表的数据也无需将待过滤的数据与过滤匹配表进行逐一比对,显著减少了数据过滤所需的硬件资源与成本。

进一步,所述步骤S81之后还包括步骤:S82:当查找到的本条过滤记录位于动态匹配表时,将本条过滤记录的过滤表项存入具有所述散列值的静态匹配表过滤记录的快速查找映射区域。

本发明针对待过滤数据具有的数据包连续特性进行了进一步的优化,对连续的数据只需将待过滤的数据与过滤匹配表进行一次比对。

一种数据过滤方法,包括如下步骤:S20根据待过滤的数据中包含的预设过滤要素,计算所述数据中过滤要素对应的散列值;S30根据所述散列值,在预设长度的按所述散列值排序的静态匹配表中查找相应的过滤记录;S40判断对应该散列值的静态匹配表过滤记录中的过滤表项是否有效;当该散列值的静态过滤表项无效时,跳转执行步骤S83;否则,执行下一步;S50判断该条过滤记录中,记录的过滤表项与所述数据中过滤要素是否相符;当相符时,跳转执行步骤S81;否则,执行下一步;S55判断该条过滤记录中,记录在所述快速查找映射区域的过滤表项与所述数据中过滤要素是否相符;当相符时,跳转执行步骤S81;否则,执行下一步;S60判断该条过滤记录中,是否包含有效的后续记录指针;当不含有效的后续记录指针时,跳转执行步骤S83;否则,执行下一步;S70根据所述有效的后续记录指针,在可变长度的按所述记录指针排序的动态匹配表中查找下一条具有所述散列值的动态匹配表过滤记录;循环执行步骤S50-S70;S81根据预设的过滤类型,执行相应的过滤操作;S82:当查找到的本条过滤记录位于动态匹配表时,将本条过滤记录的过滤表项存入具有所述散列值的静态匹配表过滤记录的快速查找映射区域;S83执行与预设的过滤类型相反的过滤操作。

进一步,还包括如下步骤:S01设置数据过滤的过滤类型为黑名单过滤/或白名单过滤;当步骤S01中设置所述过滤类型为黑名单过滤时,步骤S81中,所述相应的过滤操作为数据拒绝/数据丢弃,步骤S83中,所述相反的过滤操作为数据通过;当步骤S01中设置所述过滤类型为白名单过滤时,步骤S81中,相应的过滤操作为数据通过,步骤S83中,相反的过滤操作为数据拒绝/数据丢弃。

进一步,所述步骤S20之前还包括步骤:S02设置数据过滤的过滤要素为:源IP地址、源端口、目的IP地址、目的端口、或传输层协议中的至少一项。

进一步,步骤S20之前还包括步骤S03,设置采用的散列算法为CRC16、CRC32、MD4、MD5、或SHA1中的一种算法;所述步骤S20中,计算所述数据中过滤要素对应的散列值是指:使用步骤S03设置的CRC16、CRC32、MD4、MD5、或SHA1算法,计算所述数据中过滤要素对应的散列值。

进一步,所述步骤S20之前还包括步骤:S04设置静态匹配表的预设长度,使静态匹配表的长度与步骤S03中设置的散列算法的散列输出值长度相匹配;S05初始化所述静态匹配表,将每一条过滤记录的过滤表项清空,将每一条过滤记录的表项有效性标记、后续记录指针设置为“无效”。

进一步,所述步骤S20之前还包括步骤:S11根据预设的过滤名单,使用步骤S03设置的散列算法,依次计算所述过滤名单中每一条过滤记录对应的散列值;S12根据所述散列值,在按所述散列值排序的静态匹配表中查找相应的过滤记录;S13判断对应该散列值的静态匹配表过滤记录中的过滤表项是否有效;当该散列值的静态过滤表项无效时,跳转执行步骤S19;否则,执行下一步;S14判断该条过滤记录中,是否包含有效的后续记录指针;当含有效的后续记录指针时,执行下一步骤S15;否则,跳过步骤S15执行下一步骤;S15根据所述有效的后续记录指针,在按所述记录指针排序的动态匹配表中查找下一条具有所述散列值的动态匹配表过滤记录;循环执行步骤S14-S15;S17在动态匹配表中新建一条过滤记录,将该条新建过滤记录的记录指针设置为顺序加一;S18将该条过滤记录的记录指针存入前一条具有所述散列值的过滤记录的后续记录指针;S19将所述过滤名单中的该条过滤记录存入该匹配表的该条过滤记录的过滤表项,并修改该条过滤记录的表项有效性标记为“有效”。

进一步,还包括步骤:S91当删除预设的过滤名单中的部分过滤记录时,使用步骤S03设置的散列算法,依次计算所述每一条删除的过滤记录对应的散列值;S92根据所述散列值,在按所述散列值排序的静态匹配表中查找相应的过滤记录;S93判断该条过滤记录中,记录的过滤表项与所述删除的过滤记录是否相符;当相符时,跳转执行步骤S95;否则,执行下一步;S94根据所述有效的后续记录指针,在所述动态匹配表中查找下一条具有所述散列值的动态匹配表过滤记录;循环执行步骤S93-S94;S95将该匹配表的该条过滤记录的过滤表项删除,并修改该条过滤记录的表项有效性标记为“无效”;S96判断该条过滤记录中,是否包含有效的后续记录指针;当不含有效的后续记录指针时,结束本条过滤记录的删除操作;否则,执行下一步;S97当删除的本条过滤记录位于静态匹配表时,跳转执行步骤S99;否则,执行下一步;S98将该条过滤记录的后续记录指针存入前一条具有所述散列值的过滤记录的后续记录指针,并修改该条过滤记录的后续记录指针为“无效”;S99根据所述有效的后续记录指针,将动态匹配表中第一条具有所述散列值的动态匹配表过滤记录,复制到静态匹配表的该条过滤记录;而后将动态匹配表的该条过滤记录的过滤表项清空,将表项有效性标记、后续记录指针设置为“无效”。

进一步,所述步骤S17之前还包括步骤:S16在动态匹配表中查找第一条表项有效性标记为“无效”的动态匹配表过滤记录;当查找到时,跳转执行步骤S18;否则,执行下一步。

一种数据过滤系统,其特征在于,包括:过滤记录查找模块,包括索引查找子模块、过滤记录匹配子模块;索引计算模块,与所述过滤记录查找模块电连接;存储模块,与所述过滤记录查找模块电连接,包括静态存储子模块、动态存储子模块;以及,数据过滤模块,与所述过滤记录查找模块电连接;其中,所述索引计算模块根据待过滤的数据中包含的预设过滤要素,计算所述数据中过滤要素对应的散列值;所述索引查找子模块根据所述散列值,在所述静态存储子模块的静态匹配表中按所述散列值排序查找相应的过滤记录;所述过滤记录匹配子模块判断对应该散列值的静态匹配表过滤记录中的过滤表项是否有效;当该散列值的静态过滤表项有效时,判断该条过滤记录中,记录的过滤表项与所述数据中过滤要素是否相符;当不相符时,所述索引查找子模块判断该条过滤记录中,是否包含有效的后续记录指针;当包含有效的后续记录指针时,根据所述有效的后续记录指针,在所述动态存储子模块的动态匹配表中按所述记录指针排序查找下一条具有所述散列值的动态匹配表过滤记录;当所述过滤记录匹配子模块匹配到相应的过滤表项时,所述数据过滤模块根据预设的过滤类型,执行相应的过滤操作;否则,执行与预设的过滤类型相反的过滤操作。

进一步,还包括:过滤记录增删模块,与所述存储模块电连接;其中,当所述过滤记录查找模块查找到的本条过滤记录位于所述动态存储子模块的动态匹配表时,将本条过滤记录的过滤表项增加到所述静态存储子模块的具有所述散列值的静态匹配表过滤记录的快速查找映射区域。

进一步,所述过滤记录匹配子模块还判断该条过滤记录中,记录在所述静态存储子模块的具的所述快速查找映射区域的过滤表项与所述数据中过滤要素是否相符。

进一步,还包括:设置模块,与所述存储模块电连接;其中,所述设置模块设置数据过滤的过滤类型为黑名单过滤/或白名单过滤;当所述设置模块中设置所述过滤类型为黑名单过滤时,所述数据过滤模块的所述相应的过滤操作为数据拒绝/数据丢弃,所述相反的过滤操作为数据通过;当所述设置模块中设置所述过滤类型为白名单过滤时,所述数据过滤模块的相应的过滤操作为数据通过,相反的过滤操作为数据拒绝/数据丢弃。

进一步,还包括:设置模块,与所述存储模块电连接;其中,所述设置模块设置数据过滤的过滤要素为:源IP地址、源端口、目的IP地址、目的端口、或传输层协议中的至少一项。

进一步,还包括:设置模块,与所述存储模块电连接;其中,所述设置模块设置采用的散列算法为CRC16、CRC32、MD4、MD5、或SHA1中的一种算法;所述索引计算模块计算所述数据中过滤要素对应的散列值是指:使用所述设置模块设置的CRC16、CRC32、MD4、MD5、或SHA1算法,计算所述数据中过滤要素对应的散列值。

进一步,所述所述设置模块还设置静态存储子模块的预设大小,使静态匹配表的大小与所述设置模块中设置的散列算法的散列输出值长度相匹配;所述过滤记录增删模块初始化所述静态匹配表,将每一条过滤记录的过滤表项清空,将每一条过滤记录的表项有效性标记、后续记录指针设置为“无效”。

进一步,所述索引计算模块还根据预设的过滤名单,使用所述设置模块设置的散列算法,依次计算所述过滤名单中每一条过滤记录对应的散列值;所述索引查找子模块还根据所述散列值,在所述静态存储子模块中按所述散列值排序的静态匹配表中查找相应的过滤记录;所述过滤记录匹配子模块还判断所述静态存储子模块中对应该散列值的静态匹配表过滤记录中的过滤表项是否有效;当该散列值的静态过滤表项有效时,所述索引查找子模块判断该条过滤记录中,是否包含有效的后续记录指针;当含有效的后续记录指针时,根据所述有效的后续记录指针,在所述动态存储子模块中按所述记录指针排序的动态匹配表中查找下一条具有所述散列值的动态匹配表过滤记录;所述过滤记录增删模块在所述动态存储子模块中动态匹配表中新建一条过滤记录,将该条新建过滤记录的记录指针设置为顺序加一;并将该条过滤记录的记录指针存入前一条具有所述散列值的过滤记录的后续记录指针;并将所述过滤名单中的该条过滤记录存入该匹配表的该条过滤记录的过滤表项,并修改该条过滤记录的表项有效性标记为“有效”。

进一步,当删除预设的过滤名单中的部分过滤记录时,所述索引计算模块使用所述设置模块设置的散列算法,依次计算所述每一条删除的过滤记录对应的散列值;所述索引查找子模块根据所述散列值,在所述静态存储子模块中按所述散列值排序的静态匹配表中查找相应的过滤记录;所述过滤记录匹配子模块判断该条过滤记录中,记录的过滤表项与所述删除的过滤记录是否相符;当不相符时,所述索引查找子模块根据所述有效的后续记录指针,在所述动态存储子模块中的所述动态匹配表中,查找下一条具有所述散列值的动态匹配表过滤记录;所述过滤记录增删模块将该匹配表的该条过滤记录的过滤表项删除,并修改该条过滤记录的表项有效性标记为“无效”;并判断该条过滤记录中,是否包含有效的后续记录指针;当包含有效的后续记录指针时,将该条过滤记录的后续记录指针存入前一条具有所述散列值的过滤记录的后续记录指针,并修改该条过滤记录的后续记录指针为“无效”;当删除的本条过滤记录位于静态匹配表时,所述过滤记录增删模块还根据所述有效的后续记录指针,将动态匹配表中第一条具有所述散列值的动态匹配表过滤记录,复制到静态匹配表的该条过滤记录;而后将动态匹配表的该条过滤记录的过滤表项清空,将表项有效性标记、后续记录指针设置为“无效”。

进一步,所述过滤记录增删模块还在所述动态存储子模块中的动态匹配表中查找第一条表项有效性标记为“无效”的动态匹配表过滤记录;当查找到时,将该条过滤记录的记录指针存入前一条具有所述散列值的过滤记录的后续记录指针。

本发明对明显不符合过滤匹配表的数据可以快速筛出,对符合过滤匹配表的数据也无需将待过滤的数据与过滤匹配表进行逐一比对,显著减少了数据过滤所需的硬件资源与成本。本发明还针对待过滤数据具有的数据包连续特性进行了进一步的优化。

附图说明

下面结合附图和具体实施方式对本发明作进一步详细说明:

图1为本发明的一种应用环境结构示意图;

图2为本发明的一种应用环境下数据流过滤/分流方式示意图;

图3A~图3E为本发明方法的流程图;

图4为本发明构建IP地址匹配表一个实例结构示意图;

图5为本发明构建IP地址匹配表实例构造过程1示意图;

图6为本发明构建IP地址匹配表实例构造过程2示意图;

图7为本发明构建IP地址匹配表实例构造过程3示意图;

图8为本发明构建IP地址匹配表实例构造过程4示意图;

图9为本发明构建IP地址匹配表实例构造过程5示意图;

图10为一批IP数据包排队等候过滤匹配示意图;

图11为现有IP数据包查找匹配方式示意图;

图12为本发明构建IP地址匹配表另一实例结构示意图;

图13为本发明另一实例查找过程1、2示意图;

图14为本发明另一实例查找过程3、4、5示意图。

具体实施方式

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,以下说明和附图对于本发明是示例性的,并且不应被理解为限制本发明。以下说明描述了众多具体细节以方便对本发明理解。然而,在某些实例中,熟知的或常规的细节并未说明,以满足说明书简洁的要求。

在本发明一个典型的应用中,提供的数据过滤方法适用于各类客户端移动/终端、网络设备。

本发明中的客户端、移动终端或网络设备均包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。

所述的处理器,含单核处理器或多核处理器。处理器也可称为一个或多个微处理器、中央处理单元(CPU)等等。更具体地,处理器可为复杂的指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器、实现其他指令集的处理器,或实现指令集组合的处理器。处理器还可为一个或多个专用处理器,诸如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器、图形处理器、网络处理器、通信处理器、密码处理器、协处理器、嵌入式处理器、或能够处理指令的任何其他类型的逻辑部件。处理器用于执行本发明所讨论的操作和步骤的指令。

所述的存储器,可包括一个或多个易失性存储设备,如随机存取存储器(RAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、静态RAM(SRAM)或其他类型的存储设备。存储器可存储包括由处理器或任何其他设备执行的指令序列的信息。例如,多种操作系统、设备驱动程序、固件(例如,输入输出基本系统或BIOS)和/或应用程序的可执行代码和/或数据可被加载在存储器中并且由处理器执行。

所述的操作系统可为任何类型的操作系统,例如微软公司的Windows、Windows Phone,苹果公司IOS,谷歌公司的Android,以及Linux、Unix操作系统或其他实时或嵌入式操作系统诸如VxWorks等。

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,以下说明和附图对于本发明是示例性的,并且不应被理解为限制本发明。以下说明描述了众多具体细节以方便对本发明理解。然而,在某些实例中,熟知的或常规的细节并未说明,以满足说明书简洁的要求。本发明的具体流量控制设备及控制方法参见下述具体实施例:

参考图3A,根据本发明一个实施例的一种数据过滤方法,包括如下步骤:S20根据待过滤的数据中包含的预设过滤要素,计算所述数据中过滤要素对应的散列值;S30根据所述散列值,在预设长度的按所述散列值排序的静态匹配表中查找相应的过滤记录;S40判断对应该散列值的静态匹配表过滤记录中的过滤表项是否有效。

当该散列值的静态过滤表项无效时,跳转执行步骤S83;否则,执行下一步S50。

S50判断该条过滤记录中,记录的过滤表项与所述数据中过滤要素是否相符;当相符时,跳转执行步骤S81;否则,执行下一步S60。S60判断该条过滤记录中,是否包含有效的后续记录指针;当不含有效的后续记录指针时,跳转执行步骤S83;否则,执行下一步S70。S70根据所述有效的后续记录指针,在可变长度的按所述记录指针排序的动态匹配表中查找下一条具有所述散列值的动态匹配表过滤记录。循环执行步骤S50-S70。

S81根据预设的过滤类型,执行相应的过滤操作;S83执行与预设的过滤类型相反的过滤操作。

参考图3B,根据本发明另一个实施例的一种数据过滤方法,包括如下步骤:S20根据待过滤的数据中包含的预设过滤要素,计算所述数据中过滤要素对应的散列值;S30根据所述散列值,在预设长度的按所述散列值排序的静态匹配表中查找相应的过滤记录;S40判断对应该散列值的静态匹配表过滤记录中的过滤表项是否有效。

当该散列值的静态过滤表项无效时,跳转执行步骤S83;否则,执行下一步。

S50判断该条过滤记录中,记录的过滤表项与所述数据中过滤要素是否相符;当相符时,跳转执行步骤S81;否则,执行下一步。S55判断该条过滤记录中,记录在所述快速查找映射区域的过滤表项与所述数据中过滤要素是否相符;当相符时,跳转执行步骤S81;否则,执行下一步。S60判断该条过滤记录中,是否包含有效的后续记录指针;当不含有效的后续记录指针时,跳转执行步骤S83;否则,执行下一步。S70根据所述有效的后续记录指针,在可变长度的按所述记录指针排序的动态匹配表中查找下一条具有所述散列值的动态匹配表过滤记录。循环执行步骤S50-S70。

S81根据预设的过滤类型,执行相应的过滤操作。

S83执行与预设的过滤类型相反的过滤操作。

在一个变化实施例中,所述步骤S81之后还包括步骤S82:当查找到的本条过滤记录位于动态匹配表时,将本条过滤记录的过滤表项存入具有所述散列值的静态匹配表过滤记录的快速查找映射区域。

在变化实施例中,本发明还包括如下步骤:S01设置数据过滤的过滤类型为黑名单过滤/或白名单过滤。

当步骤S01中设置所述过滤类型为黑名单过滤时,步骤S81中,所述相应的过滤操作为数据拒绝/数据丢弃,步骤S83中,所述相反的过滤操作为数据通过;当步骤S01中设置所述过滤类型为白名单过滤时,步骤S81中,相应的过滤操作为数据通过,步骤S83中,相反的过滤操作为数据拒绝/数据丢弃。

在变化实施例中,本发明所述步骤S20之前还包括步骤:S02设置数据过滤的过滤要素为:源IP地址、源端口、目的IP地址、目的端口、或传输层协议中的至少一项。

在变化实施例中,本发明步骤S20之前还包括步骤S03,设置采用的散列算法为CRC16、CRC32、MD4、MD5、或SHA1中的一种算法。

所述步骤S20中,计算所述数据中过滤要素对应的散列值是指:使用步骤S03设置的CRC16、CRC32、MD4、MD5、或SHA1算法,计算所述数据中过滤要素对应的散列值。

上述实施例中的散列值又称哈希值,是根据关键码值而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。

哈希校验码的基本思想是利用线性编码理论,在发送端根据要传送的k位二进制码序列,以一定的规则产生一个校验用的监督码(既哈希码)r位,并附在信息后边,构成一个新的二进制码序列数共(k+r)位,最后发送出去。在接收端,则根据信息码和哈希码之间所遵循的规则进行检验,以确定传送中是否出错。

在数据存储和数据通讯领域,哈希函数无处不在:著名的通讯协议X.25的FCS(帧检错序列)采用的是CRC.CCITT,ARJ、LHA等压缩工具软件采用的是CRC32,磁盘驱动器的读写采用了CRC,通用的图像存储格式GIF、TIFF等也都用CRC作为检错手段。

CRC的本质是模-2除法的余数,采用的除数不同,CRC的类型也就不一样。通常,CRC的除数用生成多项式来表示。最常用的CRC码的生成多项式有CRC16,CRC32。

以CRC16为例,16位的CRC码产生的规则是先将要发送的二进制序列数左移16位(既乘以2^16)后,再除以一个多项式,最后所得到的余数既是CRC16码,如下式所示,其中K(X)表示n位的二进制序列数,G(X)为多项式,Q(X)为整数,R(X)是余数(既CRC16码)。

K(X)>>16=G(x)Q(x)+R(x)

求CRC码所采用模2加减运算法则,既是不带进位和借位的按位加减,这种加减运算实际上就是逻辑上的异或运算,加法和减法等价,乘法和除法运算与普通代数式的乘除法运算是一样,符合同样的规律。生成CRC码的多项式如下,其中CRC-16和CRC-CCITT产生16位的CRC码,而CRC-32则产生的是32位的CRC码

接收方将接收到的二进制序列数(包括信息码和CRC码)除以多项式,如果余数为0,则说明传输中无错误发生,否则说明传输有误,关于其原理这里不再多述。用软件计算CRC码时,接收方可以将接收到的信息码求CRC码,比较结果和接收到的CRC码是否相同

这样可以解决哈希值过大或者过小的问题,一定长度的哈希值配合可变长度的动态匹配表,将解决上述问题,即不会浪费空间,也不会满足不了过多IP地址需要数据流向控制。

在变化实施例中,本发明所述步骤S20之前还包括步骤:S04设置静态匹配表的预设长度,使静态匹配表的长度与步骤S03中设置的散列算法的散列输出值长度相匹配;S05初始化所述静态匹配表,将每一条过滤记录的过滤表项清空,将每一条过滤记录的表项有效性标记、后续记录指针设置为“无效”。

在本发明的另一个实施例中,所述步骤S20之前还包括过滤名单的构造步骤S11~S19。其余S01~S83步骤与之前的实施例相同,此处不再复述。

参考图3C,步骤S11根据预设的过滤名单,使用步骤S03设置的散列算法,依次计算所述过滤名单中每一条过滤记录对应的散列值。

S12根据所述散列值,在按所述散列值排序的静态匹配表中查找相应的过滤记录;S13判断对应该散列值的静态匹配表过滤记录中的过滤表项是否有效;当该散列值的静态过滤表项无效时,跳转执行步骤S19;否则,执行下一步。

S14判断该条过滤记录中,是否包含有效的后续记录指针;当含有效的后续记录指针时,执行下一步骤S15;否则,跳过步骤S15执行下一步骤。

S15根据所述有效的后续记录指针,在按所述记录指针排序的动态匹配表中查找下一条具有所述散列值的动态匹配表过滤记录;循环执行步骤S14-S15。

S17在动态匹配表中新建一条过滤记录,将该条新建过滤记录的记录指针设置为顺序加一;S18将该条过滤记录的记录指针存入前一条具有所述散列值的过滤记录的后续记录指针。

S19将所述过滤名单中的该条过滤记录存入该匹配表的该条过滤记录的过滤表项,并修改该条过滤记录的表项有效性标记为“有效”。

在本发明的另一个实施例中,还包括过滤名单的个别过滤记录的删除步骤S91~S99。其余S01~S83步骤与之前的实施例相同,此处不再复述。

参考图3D,布骤S91当删除预设的过滤名单中的部分过滤记录时,使用步骤S03设置的散列算法,依次计算所述每一条删除的过滤记录对应的散列值。

S92根据所述散列值,在按所述散列值排序的静态匹配表中查找相应的过滤记录;S93判断该条过滤记录中,记录的过滤表项与所述删除的过滤记录是否相符;当相符时,跳转执行步骤S95;否则,执行下一步。

S94根据所述有效的后续记录指针,在所述动态匹配表中查找下一条具有所述散列值的动态匹配表过滤记录;循环执行步骤S93-S94。

S95将该匹配表的该条过滤记录的过滤表项删除,并修改该条过滤记录的表项有效性标记为“无效”。

S96判断该条过滤记录中,是否包含有效的后续记录指针;当不含有效的后续记录指针时,结束本条过滤记录的删除操作。

否则,执行下一步S97,当删除的本条过滤记录位于静态匹配表时,跳转执行步骤S99;否则,执行下一步S98。

S98将该条过滤记录的后续记录指针存入前一条具有所述散列值的过滤记录的后续记录指针,并修改该条过滤记录的后续记录指针为“无效”。

S99根据所述有效的后续记录指针,将动态匹配表中第一条具有所述散列值的动态匹配表过滤记录,复制到静态匹配表的该条过滤记录;而后将动态匹配表的该条过滤记录的过滤表项清空,将表项有效性标记、后续记录指针设置为“无效”。

本发明在删除预设的过滤名单中的部分过滤记录时,如果该条记录在动态匹配表中,则将该条动态匹配表记录设为无效,并使前后两条未删除记录的记录指针链相连接。

如果该条记录在静态匹配表中,则将记录指针链的第一条动态匹配表记录设为静态匹配记录。

可以明了,在此实施例中,动态匹配表可能因为删除操作出现空白行。因此,作为对前述过滤名单的构造步骤S11~S19的补充,也可以据此提供一种过滤名单的添加部分记录的步骤S11~S19。

参考图3E,其中,在所述步骤S17之前还可以包括步骤:S16在动态匹配表中查找第一条表项有效性标记为“无效”的动态匹配表过滤记录;当查找到时,跳转执行步骤S18;否则,执行下一步。

其他与之前的实施例相同的步骤,此处不再复述。

根据本发明一个实施例的一种数据过滤系统,其特征在于,包括:过滤记录查找模块,包括索引查找子模块、过滤记录匹配子模块;索引计算模块,与所述过滤记录查找模块电连接;存储模块,与所述过滤记录查找模块电连接,包括静态存储子模块、动态存储子模块;以及,数据过滤模块,与所述过滤记录查找模块电连接。

其中,所述索引计算模块根据待过滤的数据中包含的预设过滤要素,计算所述数据中过滤要素对应的散列值;所述索引查找子模块根据所述散列值,在所述静态存储子模块的静态匹配表中按所述散列值排序查找相应的过滤记录。

所述过滤记录匹配子模块判断对应该散列值的静态匹配表过滤记录中的过滤表项是否有效;当该散列值的静态过滤表项有效时,判断该条过滤记录中,记录的过滤表项与所述数据中过滤要素是否相符。

当不相符时,所述索引查找子模块判断该条过滤记录中,是否包含有效的后续记录指针;当包含有效的后续记录指针时,根据所述有效的后续记录指针,在所述动态存储子模块的动态匹配表中按所述记录指针排序查找下一条具有所述散列值的动态匹配表过滤记录。

当所述过滤记录匹配子模块匹配到相应的过滤表项时,所述数据过滤模块根据预设的过滤类型,执行相应的过滤操作;否则,执行与预设的过滤类型相反的过滤操作。

在本发明的一个变化实施例中,还包括:设置模块,与所述存储模块电连接;其中,所述设置模块设置数据过滤的过滤类型为黑名单过滤/或白名单过滤;当所述设置模块中设置所述过滤类型为黑名单过滤时,所述数据过滤模块的所述相应的过滤操作为数据拒绝/数据丢弃,所述相反的过滤操作为数据通过;当所述设置模块中设置所述过滤类型为白名单过滤时,所述数据过滤模块的相应的过滤操作为数据通过,相反的过滤操作为数据拒绝/数据丢弃。

在本发明的另一个变化实施例中,还包括:设置模块,与所述存储模块电连接;其中,所述设置模块设置数据过滤的过滤要素为:源IP地址、源端口、目的IP地址、目的端口、或传输层协议中的至少一项。

在本发明的另一个变化实施例中,还包括:设置模块,与所述存储模块电连接;其中,所述设置模块设置采用的散列算法为CRC16、CRC32、MD4、MD5、或SHA1中的一种算法;所述索引计算模块计算所述数据中过滤要素对应的散列值是指:使用所述设置模块设置的CRC16、CRC32、MD4、MD5、或SHA1算法,计算所述数据中过滤要素对应的散列值。

在本发明的另一个变化实施例中,还包括:过滤记录增删模块,与所述存储模块电连接;其中,当所述过滤记录查找模块查找到的本条过滤记录位于所述动态存储子模块的动态匹配表时,将本条过滤记录的过滤表项增加到所述静态存储子模块的具有所述散列值的静态匹配表过滤记录的快速查找映射区域。

在本发明的另一个变化实施例中,所述过滤记录匹配子模块还判断该条过滤记录中,记录在所述静态存储子模块的具的所述快速查找映射区域的过滤表项与所述数据中过滤要素是否相符。

在本发明的另一个变化实施例中,所述所述设置模块还设置静态存储子模块的预设大小,使静态匹配表的大小与所述设置模块中设置的散列算法的散列输出值长度相匹配;所述过滤记录增删模块初始化所述静态匹配表,将每一条过滤记录的过滤表项清空,将每一条过滤记录的表项有效性标记、后续记录指针设置为“无效”。

在本发明的另一个变化实施例中,所述索引计算模块还根据预设的过滤名单,使用所述设置模块设置的散列算法,依次计算所述过滤名单中每一条过滤记录对应的散列值;所述索引查找子模块还根据所述散列值,在所述静态存储子模块中按所述散列值排序的静态匹配表中查找相应的过滤记录;所述过滤记录匹配子模块还判断所述静态存储子模块中对应该散列值的静态匹配表过滤记录中的过滤表项是否有效;当该散列值的静态过滤表项有效时,所述索引查找子模块判断该条过滤记录中,是否包含有效的后续记录指针;当含有效的后续记录指针时,根据所述有效的后续记录指针,在所述动态存储子模块中按所述记录指针排序的动态匹配表中查找下一条具有所述散列值的动态匹配表过滤记录;所述过滤记录增删模块在所述动态存储子模块中动态匹配表中新建一条过滤记录,将该条新建过滤记录的记录指针设置为顺序加一;并将该条过滤记录的记录指针存入前一条具有所述散列值的过滤记录的后续记录指针;并将所述过滤名单中的该条过滤记录存入该匹配表的该条过滤记录的过滤表项,并修改该条过滤记录的表项有效性标记为“有效”。

在本发明的另一个变化实施例中,当删除预设的过滤名单中的部分过滤记录时,所述索引计算模块使用所述设置模块设置的散列算法,依次计算所述每一条删除的过滤记录对应的散列值;所述索引查找子模块根据所述散列值,在所述静态存储子模块中按所述散列值排序的静态匹配表中查找相应的过滤记录;所述过滤记录匹配子模块判断该条过滤记录中,记录的过滤表项与所述删除的过滤记录是否相符;当不相符时,所述索引查找子模块根据所述有效的后续记录指针,在所述动态存储子模块中的所述动态匹配表中,查找下一条具有所述散列值的动态匹配表过滤记录;所述过滤记录增删模块将该匹配表的该条过滤记录的过滤表项删除,并修改该条过滤记录的表项有效性标记为“无效”;并判断该条过滤记录中,是否包含有效的后续记录指针;当包含有效的后续记录指针时,将该条过滤记录的后续记录指针存入前一条具有所述散列值的过滤记录的后续记录指针,并修改该条过滤记录的后续记录指针为“无效”;当删除的本条过滤记录位于静态匹配表时,所述过滤记录增删模块还根据所述有效的后续记录指针,将动态匹配表中第一条具有所述散列值的动态匹配表过滤记录,复制到静态匹配表的该条过滤记录;而后将动态匹配表的该条过滤记录的过滤表项清空,将表项有效性标记、后续记录指针设置为“无效”。

在本发明的另一个变化实施例中,所述过滤记录增删模块还在所述动态存储子模块中的动态匹配表中查找第一条表项有效性标记为“无效”的动态匹配表过滤记录;当查找到时,将该条过滤记录的记录指针存入前一条具有所述散列值的过滤记录的后续记录指针。

下面通过实例说明本发明的具体应用。

实例一

实例中的应用环境如图1、图2所示。

如图1所示的一种应用环境,通过交换机,将上游业务与下游业务之间的数据包复制一份导流到旁路数据通道,再通过网络分流设备将数据包分配到多个分析服务器上,从而对网络应用中的数据包中的数据进行分析。(常见的主流应用都使用TCP协议,但也可以对其他协议的数据包及数据包中的数据进行分析)。

如图2所示,由于交换机复制数据包进入旁路数据通道时没有进行数据过滤,因此旁路数据通道进入网络分流设备的数据流量很多,即数据包的数量很多。为了降低网络分流设备将数据包分配到分析服务器时的工作量,所以需要一种独立于数据分流分配的数据过滤方法,将部分与分析无关的数据进行数据过滤后丢弃,并能以较小的硬件资源与成本实现。

在数据分流分配、数据分析之前,网络分流设备采用本发明的数据过滤方法。

如图4所示。一种针对TCP协议的数据过滤实例,其中预设的过滤要素为根据IP地址过滤(源IP地址过滤/或目的IP地址过滤皆可),过滤类型采用白名单过滤。需要根据白名单建立数据过滤使用的过滤匹配表,采用的散列算法为CRC16。所述的过滤匹配表分为具有预设的过滤记录条数的静态匹配表以及过滤记录条数可变的动态匹配表。每条过滤记录包含了过滤表项(记录了过滤要素,本实例中为IP地址)、表项有效性标记、和后续记录指针。只有与白名单相符,即与过滤匹配表的过滤表项相符的数据才能获得数据通过操作(进入后续的数据分流分配、数据分析),否则对相应的数据进行数据丢弃操作(也可以在路由器应用中采用本发明的数据过滤方法,对与白名单不符的数据进行数据拒绝操作)。

我们将需要进行数据过滤的白名单IP地址列表在系统启动时由控制软件构造好写入硬件存储单元形成过滤匹配表,硬件根据过滤匹配表进行实时匹配而后过滤。过滤匹配表分为两部分,静态匹配表与动态匹配表。因为采用的散列算法为CRC16,则散列值有64K可能,则静态匹配表的过滤记录条数为64K。如图4所示。

例如,构造过滤匹配表,其中白名单的IP地址为:IP1、IP2、IP3、IP4和IP5,其构造过程如下:计算CRC16(IP1)=2,静态匹配表的第2条过滤记录的有效性标记为0(无效),则将IP1存入静态匹配表的第2条过滤记录的过滤表项,并修改该条过滤记录的表项有效性标记为1(有效)。

如图5所示,如果有N条过滤记录,则动态匹配表最多N-1项(即最坏情况下白名单的IP地址都有同一个散列值,所有过滤表项都冲突)。

后续记录指针计算CRC16(IP2)=64K-2,静态匹配表第64K-2条过滤记录的有效性标记为0(无效),则将IP2存入静态匹配表的该条过滤记录的过滤表项,并修改该条过滤记录的表项有效性标记为1(有效)。如图6所示。

计算CRC16(IP3)=2,发现静态匹配表第2条过滤记录的有效性标记为1(有效),,且后续记录指针为0(无后续记录),则搜索动态匹配表,在动态匹配表中查找第一条表项有效性标记为0(无效)的动态匹配表过滤记录,为动态匹配表第1条过滤记录,则将IP3存入该条过滤记录的过滤表项,并将静态匹配表第2条过滤记录的的后续记录指针填为1(动态匹配表第1条过滤记录)。如图7所示。

将动态匹配表(后续记录指针搜索链)的地址从1开始编号。因为0在静态匹配表的后续记录指针里代表无后续记录。

计算CRC16(IP4)=64K-2,发现静态匹配表第64K-2条过滤记录的有效性标记为1(有效),且后续记录指针为0(无后续记录),则搜索动态匹配表,在动态匹配表中查找当前第一条表项有效性标记为0(无效)的动态匹配表过滤记录,为动态匹配表第2条过滤记录,则将IP4存入该条过滤记录的过滤表项,并将静态匹配表第64K-2条过滤记录的的后续记录指针填为2(动态匹配表第2条过滤记录)。如图8所示。

计算CRC16(IP5)=2,发现静态匹配表第2条过滤记录的有效性标记为1(有效),且后续记录指针为1(有后续记录,后续记录为动态匹配表第1条过滤记录),则搜索动态匹配表(后续记录指针搜索链)中的第1条过滤记录,发现该条过滤记录的有效性标记为1(有效),但后续记录指针为0(无后续记录),则开始搜索动态匹配表(后续记录指针搜索链),在动态匹配表中查找当前第一条表项有效性标记为0(无效)的动态匹配表过滤记录,为动态匹配表第3条过滤记录,则将IP5存入该条过滤记录的过滤表项,并将动态匹配表第1条过滤记录的后续记录指针填为3(动态匹配表第3条过滤记录)。如图9所示。

上述IP地址可以为IPv4或者IPv6地址。

上述将需要控制数据流向的白名单IP地址列表填写到静态匹配表或者动态匹配表的对应过滤记录中,即将“IP地址”存入该条过滤记录的“过滤表项”字段;并将“表项有效性标记”填入“1”,“1”代表有效,而“0”代表无效。

如果CRC16计算方式得到第二个同样的散列值,即静态匹配表该散列值对应的过滤记录出现过滤表项冲突,则搜索动态匹配表中的当前第一个空闲(表项有效性标记为0)的过滤记录位置,将“IP地址”填入动态匹配表中该空闲过滤记录的“过滤表项”字段;并将动态匹配表中该过滤记录的“表项有效性标记”填入“1”,“1”代表有效,而“0”代表无效。

同时也将之前静态匹配表同样散列值的过滤记录位置的“后续记录指针”字段填入“之前搜索动态匹配表中的对应当前第一个空闲的过滤记录位置”。如果该字段中为“0”,表示没有后续的过滤记录位置;

如果CRC16计算方式得到第三个同样的散列值,即静态匹配表该散列值对应的过滤记录出现过滤表项冲突,则根据该条过滤记录的“后续记录指针”字段找到对应的动态匹配表中的同样散列值的过滤记录位置,而后不断根据当前本条过滤记录的“后续记录指针”字段找到对应的动态匹配表中的同样散列值过滤的记录位置,直到最后一条同样散列值的过滤记录位置。并搜索动态匹配表中的当前的第一个空闲的过滤记录位置,将“IP地址”填入动态匹配表中该空闲过滤记录的“过滤表项”字段;并将动态匹配表中该过滤记录的“表项有效性标记”填入“1”,“1”代表有效,而“0”代表无效。同时也将之前最后一条同样散列值的过滤记录的“后续记录指针”字段填入“最新搜索动态匹配表中的对应当前第一个空闲的过滤记录位置”,该字段中为“0”,表示没有后续的过滤记录位置;该字段中为非“0”数字N,表示后续的记录位置在动态匹配表中的第N条过滤记录。

上述CRC计算方式可以为CRC16计算方式,或者也可以采用CRC32计算方式。

这样可以解决过滤匹配表过大或者过小的问题,一定长度的静态匹配表配合可变长度的动态匹配表,将解决上述问题,即不会浪费空间,也不会满足不了过多IP地址需要数据流向控制。

数据过滤的过滤类型可以为白名单过滤,也可以为黑名单过滤,其过滤匹配表的构造操作相同。

匹配过滤操作与构造操作类似,其中:

匹配过滤操作一旦搜索到与待过滤数据中的IP地址相符的过滤表项的过滤记录,则不再继续搜索,立即将数据包进入后续的环节。

当设置成白名单过滤时,与过滤匹配表的过滤表项相符的数据获得数据通过操作,进入后续的数据分流分配、数据分析。当在静态匹配表与动态匹配表中均未搜索到与待过滤数据中的IP地址相符的过滤表项的过滤记录时,则对相应的数据进行数据丢弃操作。

当设置成黑名单过滤时,后续操作为,一旦搜索到与待过滤数据中的IP地址相符的过滤表项的过滤记录,则不再继续搜索,立即将数据包进行数据丢弃操作。当在静态匹配表与动态匹配表中均未搜索到与待过滤数据中的IP地址相符的过滤表项的过滤记录时,则对相应的数据进行数据通过操作,进入后续的数据分流分配、数据分析。

匹配过滤操作中的搜索是指:将待过滤数据的每个数据包的IP地址(源IP地址或目的IP地址中的一个)与过滤匹配表的过滤表项中的IP地址进行比较,搜索一条过滤表项中的IP地址与所述数据包的IP地址一致的过滤记录。具体匹配过滤操作为:

对待过滤数据的每个数据包,解析出其中的IP地址。对解析出的IP地址计算对应CRC16散列值。根据所述散列值,在静态匹配表中查找相应的过滤记录。

判断对应散列值的静态匹配表过滤记录中的过滤表项是否有效。如果对应散列值的静态匹配表过滤记录中的过滤表项无效,则搜索不成功,直接将数据包进行数据丢弃操作。

如果对应散列值的静态匹配表过滤记录中的过滤表项有效,则继续搜索。判断该条过滤记录中,记录的IP地址与所述数据包解析出的IP地址是否相符。如果记录的IP地址与所述数据包解析出的IP地址相符,则搜索成功,对数据包执行数据通过操作,进入后续的数据分流分配、数据分析。

如果记录的IP地址与所述数据包解析出的IP地址不相符,则判断该条过滤记录中的后续记录指针是否有效。当不含有效的后续记录指针时,则搜索不成功,直接将数据包进行数据丢弃操作。

如果包括有效的后续记录指针,则根据所述有效的后续记录指针,在动态匹配表中查找下一条具有所述散列值的动态匹配表过滤记录。继续搜索,判断该条过滤记录中,记录的IP地址与所述数据包解析出的IP地址是否相符。

从对应散列值的静态匹配表过滤记录开始,沿着效的后续记录指针不断搜索下一条具有所述散列值的动态匹配表过滤记录,并判断过滤记录中的IP地址与所述数据包解析出的IP地址是否相符。一旦搜索成功,对数据包执行数据通过操作,进入后续的数据分流分配、数据分析。如果始终都搜索不成功,则当不含有效的后续记录指针时,将数据包进行数据丢弃操作。

静态匹配表确保能够快速进行匹配过滤操作,快速搜索到一条过滤表项中的IP地址与所述数据包的IP地址一致的过滤记录,进行匹配过滤操作。

动态匹配表能够确保完备性,确保所有的白名单/黑名单中IP地址列表能够匹配过滤搜索到。

两种匹配表的配合,可以保证硬件能在足够快的时间内对大量的过滤条件进行实时性的匹配操作,并且实现代价很小,效果很好。

实例二

在上述实例一的过滤处理方法的良好效果基础上,做了进一步的改善。

如图10所示,IP数据的报文在进行匹配过滤搜索之前,必须在硬件中进行缓存,进行匹配过滤搜索的速度决定了缓存的大小。

如图11所示,如果在某个时间段内,进来的一批数据包的报文都是需要在动态匹配表(后续记录指针搜索链)进行多次后续记录指针查找(例如,进来一批相同IP7地址的数据包,而此IP7地址又处在IP1地址的后续记录指针搜索链的后端,需要通过多次后续记录指针搜索才能匹配到),这时可能会造成入口处缓存紧张,还有可能会造成入口处数据包无法缓存而丢失

特别针对匹配后操作这一问题,本实例提供了一种解决方案。

针对这种情况,结合数据包的局簇性,我们在原来的数据过滤方法的基础上又增加了结合静态匹配表快速查找映射区域的构造与搜索的方法,如下阐述:

例如,依次进入的5个待过滤的数据包中,要匹配的IP地址分别为:IP6、IP6、IP7、IP7和IP7,如图11所示最长的后续记录指针搜索链为IP1->IP3->IP5->IP6->IP7。用实例一的方法,分别需要搜索后续记录指针链(含第一次静态匹配表搜索操作):4次,4次,5次,5次,5次。

现在用含“快速查找映射区域”字段的静态匹配表过滤记录(如图12所示)的构造与搜索方式来匹配过滤,其匹配过滤过程如下:

对第1个数据包匹配过滤IP6,搜索4次,在动态匹配表第N条过滤记录匹配过滤搜索到后,将IP6存入具有所述静态匹配表第2条过滤记录的快速查找映射区域。如图13所示。

对第2个数据包再次匹配过滤IP6,搜索1次,在静态匹配表第2条过滤记录的快速查找映射区域搜索到。如图13所示。

对第3个数据包匹配I过滤P7,搜索5次,在动态匹配表第N-3条过滤记录匹配过滤搜索到后,将IP7存入具有所述静态匹配表第2条过滤记录的快速查找映射区域。如图14所示。

对第4个数据包再次匹配IP7,搜索1次,在静态匹配表第2条过滤记录的快速查找映射区域搜索到。如图14所示。

对第4个数据包再次匹配IP7,搜索查找1次,在静态匹配表第2条过滤记录的快速查找映射区域搜到。如图14所示。

用此实例二的方法,分别需要搜索后续记录指针链(含第一次静态匹配表搜索操作):4次,1次,5次,1次,1次。

同时,实现简单,需要的硬件资源也小,通过内嵌的SRAM或外接的非常小的SRAM芯片都能实现。

在实际使用中,数据包的局簇性非常普遍,使实例二的方法效果很好,在原来的实例一的数据过滤方法上进一步提升匹配过滤速度。尤其当白名单/黑名单中IP地址列表很多,后续记录指针链链较长的情况下效果提升明显。

虽然我们的应用针对IP地址,其实针对IP地址与TCP端口,或针对IP地址与UDP端口也行。源IP地址、源端口、目的IP地址、目的端口、或传输层协议的字段任一或任意组合都可适用。

本发明至少具有以下有益效果之一:本发明提供了数据过滤的方法;本发明提供数据过滤系统,具有自主进行干预处理的能力;本发明数据过滤系统及时处理干预,避免因用户未及时响应造成的延误和损失;本发明能够做到备安全、高效、便捷地处理数据过滤;本发明数据过滤系统,可采用白名单或者黑名单的数据过滤方法,大大提高安全性、可靠性高,同时执行效率高、应用范围广。

对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。

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