基于IP地址集合和端口集合的数据包匹配处理方法转让专利

申请号 : CN200910080660.4

文献号 : CN101848190B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 张洁

申请人 : 北京鼎信高科信息技术有限公司

摘要 :

本发明公开了网络安全技术领域中的一种基于IP地址集合和端口集合的数据包规则匹配处理方法。技术方案是,在系统内核空间建立IP地址集合和端口集合;在系统内核空间构建两个双向链表,分别存储IP地址集合和端口集合,每个集合是双向链表中的一个结点,并且以每个集合的名称作为结点标识;对每个结点分别构建红黑区间树,用于存储与该结点对应的IP地址集合或者端口集合中的元素;在内核空间中,在系统内核空间建立的IP地址集合和端口集合中查找与数据包的IP地址和端口相匹配的元素。本发明可以产生数量更少的规则来满足用户的同一需求,大大降低防火墙中的规则总量以及数据包匹配次数,从而提高系统处理性能。

权利要求 :

1.一种基于IP地址集合和端口集合的数据包匹配处理方法,其特征是所述方法为:在系统内核空间建立IP地址集合和端口集合;

在系统内核空间构建两个双向链表,分别存储IP地址集合和端口集合,每个集合是双向链表中的一个结点,并且以每个集合的名称作为结点标识;

对每个结点分别构建红黑区间树,用于存储与该结点对应的IP地址集合或者端口集合中的元素;

根据用户设置的数据包处理规则,在系统内核空间建立的IP地址集合和端口集合中查找与数据包的IP地址和端口相匹配的元素;其过程是:步骤1:获取数据包源IP地址、目的IP地址、源端口、目标端口以及IP地址集合和端口集合的名称;

步骤2:分别遍历内核空间中的两个双向链表,通过结点标识查找到与数据包IP地址集合和端口集合的名称相同的结点;

步骤3:在该结点的红黑区间树中查找与数据包的IP地址或端口相同的元素;

步骤4:如果在该结点的红黑区间树中,查找到与数据包的IP地址或端口相同的元素,则处理该数据包。

2.根据权利要求1所述的一种基于IP地址集合和端口集合的数据包规则匹配处理方法,其特征是所述IP地址集合中的元素包括:独立的IP地址及掩码、连续的IP地址段或者IP地址子集合。

3.根据权利要求1所述的一种基于IP地址集合和端口集合的数据包规则匹配处理方法,其特征是所述端口集合中的元素包括:独立的端口、连续的端口段或者端口子集合。

说明书 :

基于IP地址集合和端口集合的数据包匹配处理方法

技术领域

[0001] 本发明属于网络安全技术领域,尤其涉及一种基于IP地址集合和端口集合的数据包匹配处理方法。

背景技术

[0002] 当前,很多网络安全系统提供专门的客户端工具,来处理数据包匹配问题。用户可以通过设置特定的数据包规则集,来满足不同级别的安全性要求。通常系统提供不同规则选项,用于指定数据包与规则匹配所应具有的特征。其中,有用于匹配数据包源IP地址的规则选项,但只能匹配单独的IP地址或地址段;有用于匹配数据包目标地址的规则选项,也只能匹配单独的IP地址或地址段;有用于匹配数据包的源端口和目标端口的规则选项,但只能匹配单独的端口或端口范围。虽然也有功能更强大的规则选项,提供了对IP地址范围和端口范围的匹配,但如果用户需要同时指定多个分散的IP地址、地址段、端口、端口范围时,是无法运用上述的匹配项通过制定一条规则来满足要求的,需要用户制定多条规则来实现。并且,当用户需要匹配的地址或端口范围大且分散时,规则的数量也相应地增加,每个数据包的处理速度也会相应下降。此外,每条规则中的IP地址或端口数据,用户是无法重复使用的。

发明内容

[0003] 本发明的目的在于,针对上述用户需要匹配的地址或端口范围大且分散,没有单一的匹配规则并且当前匹配规则的数量众多,数据包的处理速度太慢的问题,提出一种基于IP地址集合和端口集合的数据包匹配处理方法。
[0004] 本发明的技术方案是,一种基于IP地址集合和端口集合的数据包匹配处理方法,其特征是所述方法为:
[0005] 在系统内核空间建立IP地址集合和端口集合;
[0006] 在系统内核空间构建两个双向链表,分别存储IP地址集合和端口集合,每个集合是双向链表中的一个结点,并且以每个集合的名称作为结点标识;
[0007] 对每个结点分别构建红黑区间树,用于存储与该结点对应的IP地址集合或者端口集合中的元素;
[0008] 根据用户设置的数据包处理规则,在系统内核空间建立的IP地址集合和端口集合中查找与数据包的IP地址和端口相匹配的元素。
[0009] 所述IP地址集合中的元素包括:独立的IP地址及掩码、连续的IP地址段或者IP地址子集合。
[0010] 所述端口集合中的元素包括:独立的端口、连续的端口段或者端口子集合。
[0011] 所述在系统内核空间建立的IP地址集合和端口集合中查找与数据包的IP地址和端口相匹配的元素,其过程是:
[0012] 步骤1:获取数据包源IP地址、目的IP地址、源端口、目标端口,以及IP地址集合和端口集合的名称;
[0013] 步骤2:分别遍历内核空间中的两个双向链表,通过结点标识查找到与数据包IP地址集合和端口集合的名称相同的结点;
[0014] 步骤3:在该结点的红黑区间树中查找与数据包的IP地址或端口相同的元素;
[0015] 步骤4:如果在该结点的红黑区间树中,查找到与数据包的IP地址或端口相同的元素,则处理该数据包。
[0016] 本发明的效果在于,使用本发明提供的方法,可以产生数量更少的规则来满足用户的同一需求,大大降低防火墙中的规则总量以及数据包匹配次数,从而提高系统处理性能。并且,用户可以在数据包规则的制定中,通过使用IP地址集合和端口集合名称,达到重复使用IP地址集合和端口集合的目的。

附图说明

[0017] 图1是通过软件实现本发明的各个模块的关系示意图。
[0018] 图2是匹配数据包的IP地址和端口的处理流程图。
[0019] 图3是本发明提供的实施例的链表及其对象结点中的红黑区间树的示意图。

具体实施方式

[0020] 下面结合附图,对优选实施例作详细说明。应该强调的是,下述说明仅仅是示例性的,而不是为了限制本发明的范围及其应用。
[0021] 图1是通过软件实现本发明的各个模块的关系示意图。图1中,资源对象生成模块根据用户预定义的IP地址集合、端口集合,负责在用户空间生成IP地址集合、端口集合等资源对象。
[0022] 数据结构生成模块通过动态连接库,负责用户空间和内核空间交互所需的数据结构。
[0023] 数据包解析模块负责解析数据包规则,且依赖于数据结构生成模块中的动态连接库。
[0024] 查找匹配模块负责利用红黑区间树查找是否存在与数据包的IP地址和端口相匹配的元素。
[0025] 数据处理模块负责维护内核空间的IP地址集合和端口集合,即负责生成和维护链表和链表结点中红黑区间树的数据结构,即构建和维护两个双向链表,分别存储IP地址集合和端口集合,每个集合是双向链表中的一个结点,并且以每个集合的名称作为结点标识。对每个结点分别构建红黑区间树,用于存储与该结点对应的IP地址集合或者端口集合中的元素。
[0026] 图2是匹配数据包的IP地址和端口的处理流程图。图2中,系统内核空间建立的IP地址集合和端口集合中查找与数据包的IP地址和端口相匹配的元素,其过程是:
[0027] 步骤1:数据匹配开始。
[0028] 步骤2:获取数据包源IP地址、目的IP地址、源端口、目标端口,以及IP地址集合和端口集合的名称。
[0029] 步骤3:分别遍历内核空间中的两个双向链表,通过结点标识查找与数据包IP地址集合和端口集合的名称相同的结点。
[0030] 步骤4:如果查找到相同结点,则执行步骤5;否则,返回步骤2,继续下一个数据包的遍历。
[0031] 步骤5:在该结点的红黑区间树中查找与数据包的IP地址或端口相同的元素。如果没有查找到与数据包的IP地址或端口相同的元素,则返回步骤2,继续下一个数据包的遍历。
[0032] 步骤6:如果在该结点的红黑区间树中,查找到与数据包的IP地址或端口相同的元素,则处理该数据包。
[0033] 以下在结合实施例对本发明进行进一步的说明。
[0034] 首先建立资源对象,即IP地址集合和端口集合。本发明中IP地址集合中的元素包括:独立的IP地址及掩码、连续的IP地址段或者IP地址子集合。而本发明中的端口集合中的元素包括:独立的端口、连续的端口段或者端口子集合。因此IP地址集合和端口集合可以分别表示成如下形式:
[0035] A={192.168.1.1,192.168.1.1-192.168.1.100,192.168.1.22/24,...}[0036] B={1.1.1.1-2.2.2.2,...}
[0037] C={A,B,...}
[0038] D={22,8080,23,30-400,...}
[0039] E={23,22,1024-65535,...}
[0040] F={D,F,...}
[0041] A、B、C即代表IP地址集合的资源对象,D、E、F即端口集合的资源对象。
[0042] 在本实施例中,用户需求是:当数据包中的源地址是1.1.1.1、2.2.2.2、3.3.3.3中的一个,且目标地址是4.4.4.4、5.5.5.5中的一个时,对数据包进行处理。这时源地址个数M=3,目的地址个数N=2。在本实施例中忽略对端口集合资源对象匹配的说明,其过程和复杂度计算与IP地址集合资源对象匹配是一样的。
[0043] 传统匹配方式:用户需要设置(M x N)=6条规则,才能满足要求,因此数据包需要进行6次匹配操作,如下:
[0044] 规则1:源地址1.1.1.1,目标地址4.4.4.4
[0045] 规则2:源地址2.2.2.2,目标地址4.4.4.4
[0046] 规则3:源地址1.1.1.1,目标地址5.5.5.5
[0047] 规则4:源地址2.2.2.2,目标地址5.5.5.5
[0048] 规则5:源地址3.3.3.3,目标地址4.4.4.4
[0049] 规则6:源地址3.3.3.3,目标地址5.5.5.5
[0050] 使用本发明提供的方法解决上述问题,其匹配方式为:
[0051] 用户定义2个资源对象,名称分别是AA和BB,其中:
[0052] AA={1.1.1.1、2.2.2.2、3.3.3.3}
[0053] BB={4.4.4.4、5.5.5.5}
[0054] 其匹配规则如图3所示。图3是本发明提供的实施例的链表及其对象结点中的红黑区间树的示意图,图3中,内核空间中存在1条双向链表(因为本实施例只考虑对IP地址设置了规则,没有考虑端口),存放IP地址集合,该链表中含2个结点,结点标识分别为AA和BB。结点AA的红黑区间树以元素2.2.2.2为根节点,而元素1.1.1.1和元素3.3.3.3分别为根节点的叶子节点,其中元素1.1.1.1为左叶子节点,元素3.3.3.3为右叶子节点。结点BB的红黑区间树以元素4.4.4.4为根节点,而元素5.5.5.5为根节点的叶子节点,且为右叶子节点。
[0055] 第一次匹配操作是在AA结点的红黑区间树中查找是否有与数据包源地址相同的地址元素,第二次匹配操作是在BB结点的红黑区间树中查找是否有与数据包目标地址相同的地址元素。如果在数据包中查找到相同的地址元素,则处理数据包。由实施例的匹配处理可知,本发明最多需要进行(M+N)=5次规则匹配。
[0056] 用户可以分别设置,是否需要数据包中的源地址和目标地址以及源端口和目标端口与规则中的IP地址集合、端口集合相匹配。如果用户在规则中设置了需要同时匹配数据包中的IP地址及其端口,那么,除了要向本实施例一样,在存储IP地址集合的链表中进行数据包的IP地址的匹配,还要在存储端口集合的链表中进行数据包端口匹配。
[0057] 本发明通过建立存储IP地址集合和端口集合的双向链表,以及在链表结点中构建存储IP地址集合或者端口集合中的元素的红黑树,可以产生数量更少的规则,来满足用户的同一需求。利用双向链表和红黑树遍历复杂度可预测的特性,大大降低防火墙中的规则总量以及数据包匹配次数,从而提高系统处理性能。
[0058] 以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。