一种多域的网包的分类方法和装置的制作方法

文档序号:7719875阅读:90来源:国知局

专利名称::一种多域的网包的分类方法和装置的制作方法
技术领域
:本发明涉及一种多域的网包的分类方法和装置。
背景技术
:多域的网包分类技术在四层交换机、状态防火墙、入侵检测系统和入侵防御系统等多种设备中都是核心技术,而且往往是系统性能的关键所在。传统的路由设备只检查IP数据包的包头中目的地址域,并以该目的地址作为路由交换。而含有多域的网包分类功能的复杂设备能在更细致的粒度上区分网流,从而实现更完善的网络安全功能。而多域的网包分类与传统的二层或者三层交换机中的包头检查不同传统的二层或者三层交换机多检查二层的以太网包头或者IP包头,而多域的网包分类技术会检查更高层网络协议的包头(例如TCP协议包头)。对于常见的四层以下的网包分类,共有下面7个域可被选择成为过滤规则的域源/目的网络层地址(各32位),源/目的传输层端口(各16位),服务类型(8位),协议域(8位)和传输层协议标志(8位),共计120位(比特)。实际上,过滤规则并不涉及所有这7个域,绝大多数的网络应用限制在五个域上(源/目的网络层地址,源/目的传输层端口和协议域)。无论是在学术界还是工业界,多域的网包的分类问题因为其意义一直备受关注。多域的网包的分类方法在网包分类的实际应用中,通常会出现如下问题绝大多数的网包仅与规则集合的某个子集中的规则匹配,并且有相当多的规则仅有极少量的网包与之匹配。导致出现这个问题的原因是网包分类规则的严密性,必须为每一个商业需求的或者安全要求设置相应的分类策略。比如为了防范外网的某个类型的蠕虫病毒侵入内网,防火墙策略中将出现针对该蠕虫端口的策略,过滤并阻止外网中带有该蠕虫特性的网包侵入内网。但蠕虫的活动很可能仅仅是某个特定时期的个别现象,因此在网络正常运行的绝大多数时候,仅会有极少的网包与该规则匹配。由于规则的制定往往并未针对特定的网络进行优化,同时难以得到及时的更新,因此通常存在于网包分类设备中的规则库都有相当大的一部分规则极少能被匹配到,亦即此部分规则在网络正常运行的情况时很少参与实际的网包分类过程。但这些规则本身的存在却大大增加了网包分类问题的复杂性。现有的几类网包分类方法由于没能考虑到这种与网络流量统计特性相关的现实情况,所以无法解决极少匹配到的规则给网包分类本身带来的复杂性,从而无法进一步提高网络的平均传输速率。
发明内容针对现有技术中存在的缺陷和不足,本发明的目的是提供一种多域的网包的分类方法和装置,能够提高从而能够适用于复杂网络环境的多域的网包分类,降低匹配的复杂度,提高规则匹配的效率。为达到上述目的,本发明提出了一种,包括步骤1、将多域的网包的过滤规则划分为两个或两个以上规则子集;步骤2、确定多域的网包对应的规则子集,然后所述网包包头与规则子集进行匹配。其中,所述步骤1具体为步骤11、设置一掩码向量,所述掩码向量与包括所述多域的网包包头的有效位相对应;步骤12、通过掩码向量有效位,将多域的网包的过滤规则划分为两个或两个以上规则子集。其中,所述步骤12具体为步骤12a、在所述掩码向量的有效位中随机抽取1位,并以该有效位对规则进行划分;步骤12b、在剩余的有效位中再随机抽取1位,并以该有效位继续对规则进行划分;步骤12c、判断划分后的规则子集大小是否符合预设值,如果是则跳转至步骤2,否则返回步骤12b。其中,所述步骤12具体为步骤12A、随机挑选出所述掩码向量的预订数量的有效位,并以该掩码向量对规则进行划分;步骤12B、判断划分的规则子集的大小是否符合预设值,或划分的次数是否达到预定的迭代次数,如果是则将所有划分中规则子集最小的作为选定的规则子集,并跳转到步骤2;否则跳转到步骤12C;步骤12C、随机挑选出没有被选中过的有效位构成新的掩码向量,并以该新的掩码向量对规则子集进行划分;跳转到步骤12B。其中,所述步骤2具体为步骤21、提取接收到的多域的网包的包头;步骤22、将所述包头与掩码向量有效位进行匹配,并根据匹配结果获得该多域的网包对应的规则子集。同时,本发明还提出了一种多域的网包的分类装置,包括分类单元,所述分类单元将多域的网包的过滤规则划分为两个或两个以上规则子集;接收单元,所述接收单元接收多域的网包,并提取所述网包的包头;控制单元,所述控制单元连接所述接收单元和分类单元;所述控制单元将接收单元接收到的网包的包头,并根据包头确定多域的网包对应的规则子集,然后所述网包包头与规则子集进行匹配。其中,所述分类单元包括掩码向量模块,所述掩码向量模块生成一掩码向量,所述掩码向量的有效位的位数与所述多域的网包的包头的有效位相对应;掩码向量分类模块,所述掩码向量分类模块通过所述掩码向量的有效位,将多域的网包的过滤规则划分为两个或两个以上规则子集。其中,所述掩码向量分类模块在所述掩码向量的有效位中随机抽取1位,并以该有效位对规则进行划分;然后在剩余的有效位中再随机抽取1位,并以该有效位继续对规则进行划分;直至划分后的规则子集大小符合预设值。其中,所述掩码向量分类模块随机挑选出所述掩码向量的预订数量的有效位,并以该掩码向量对规则进行划分;然后随机用没有被选中的位替换掩码向量中的有效位,重新计算切分后子集情况,并将所有划分中规则子集大小最小的作为选定的规则子集,直至达到迭代次数或划分后的规则子集大小符合预设值。其中,所述掩码向量分类模块提取接收到的多域的网包的包头,然后将所述包头与掩码向量有效位进行匹配,并根据匹配结果获得该多域的网包对应的规则子集。上述技术方案具有如下优点本发明通过对规则进行分类,以划分出多个规则子集。在进行分类时,建立与包头有效位相对应的掩码向量,并通过掩码对规则进行分类。当接收到网包后,采用与分类相同的方式对网包的包头进行计算,既可以获得该网包所属的规则子集。这样有目的地对多域的网包进行规则匹配,相比较现有技术中将所有规则一一进行匹配可以极大的提高过滤的效率。本发明通过过滤,使得大部分不可能匹配的规则被排除了,剩下可能匹配的规则只是一小部分了。这样就可以降低实际需要匹配的规则复杂度,从而降低了匹配的复杂度,提高了匹配的效率。图1是本发明中的查找表的结构示意图;图2是本发明提出的掩码向量生成方法的流程图;图3是本发明提出的对网包进行规则匹配的流程图。具体实施例方式下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。正如
背景技术
中提到的,对于常见的四层以下的多域的网包,共有下面7个域可被选择成为过滤规则的域源/目的网络层地址(各32位),源/目的传输层端口(各16位),服务类型(8位),协议域(8位)和传输层协议标志(8位),共计120位(比特)。实际上,过滤规则并不涉及所有这7个域,绝大多数的网络应用限制在五个域上(源/目的网络层地址,源/目的传输层端口和协议域),共计104位(比特)。这些位,也就是本文中提到的多域的网包的包头的有效位。本发明针对上述的情况,设置一个掩码向量。掩码向量的长度与上述有效位的长度一一对应。这样,就可以通过掩码向量区分不同的有效位的网包包头和过滤规则。本发明就是用掩码向量将过滤规则进行分类,然后在接收到网包时,首先通过有效位对网包包头进行计算,就可以计算出网包所属的规则子集,然后将网包包头与其对应的规则自己进行匹配。这样可以极大的降低过滤规则的复杂度,提高过滤的效果。实施例1本发明提出的一种多域的网包分类方法,包括步骤1、将多域的网包的过滤规则划分为两个或两个以上规则子集;步骤2、确定多域的网包对应的规则子集,然后所述网包包头与规则子集进行匹配。其中,步骤1中划分规则子集的方式可以为步骤11、设置一掩码向量,所述掩码向量与包括所述多域的网包的包头的有效位相对应;步骤12、通过掩码向量有效位,将多域的网包的过滤规则划分为两个或两个以上规则子集。其中,步骤12中利用掩码向量对规则进行划分的方法有两种,即方法一先挑选1位,让整个规则集切分生成两个子集尽量的小;在剩下的位中继续挑选1位,使得目前挑选出来的所有位切分生成的所有子集尽量的小。这样最终挑选足够多的位构建我们的掩码向量。方法二先随机挑选出规定数量的位来构建一个初始的向量,计算该向量切分下的子集大小,然后随机用没有被选中的位替换向量中的位,重新计算切分后子集情况,如果子集中规则数量最大值变小,则接受这种替换,否则重新随机选择,直到一定的迭代次数或切分子集满足要求为止。即所述步骤12可以具体为步骤12a、在所述掩码向量的有效位中随机抽取1位,并以该有效位对规则进行划分;步骤12b、在剩余的有效位中再随机抽取1位,并以该有效位继续对规则进行划分;步骤12c、判断划分后的规则子集大小是否符合预设值,如果是则跳转至步骤2,否则返回步骤12b。或是,所述步骤12还可以如图2所示,具体为步骤12A、随机挑选出所述掩码向量的预订数量的有效位,并以该掩码向量对规则进行划分;步骤12B、判断划分的规则子集的大小是否符合预设值,或划分的次数是否达到预定的迭代次数,如果是则将所有划分中规则子集最小的作为选定的规则子集,并跳转到步骤2;否则跳转到步骤12C;步骤12C、随机挑选出没有被选中过的有效位构成新的掩码向量,并以该新的掩码向量对规则子集进行划分;跳转到步骤12B。采用上述的方案后,可以将所述步骤2具体为步骤21、提取接收到的多域的网包的包头;步骤22、将所述包头与掩码向量有效位进行匹配,并根据匹配结果获得该多域的网包对应的规则子集。实施例2—种多域的网包分类的分类装置,包括分类单元,所述分类单元将多域的网包的过滤规则划分为两个或两个以上规则子集;接收单元,所述接收单元接收多域的网包,并提取所述网包的包头;控制单元,所述控制单元连接所述接收单元和分类单元;所述控制单元将接收单元接收到的网包的包头,并根据包头确定多域的网包对应的规则子集,然后所述网包包头与规则子集进行匹配。其中,所述分类单元包括掩码向量模块,所述掩码向量模块生成一掩码向量,所述掩码向量的有效位的位数与所述多域的网包包头的有效位相对应;掩码向量分类模块,所述掩码向量分类模块通过所述掩码向量的有效位,将多域的过滤规则划分为两个或两个以上规则子集。其中,所述掩码向量分类模块在所述掩码向量的有效位中随机抽取1位,并以该有效位对规则进行划分;然后在剩余的有效位中再随机抽取1位,并以该有效位继续对规则进行划分;直至划分后的规则子集大小符合预设值。其中,所述掩码向量分类模块随机挑选出所述掩码向量的预订数量的有效位,并以该掩码向量对规则进行划分;然后随机用没有被选中的位替换掩码向量中的有效位,重新计算切分后子集情况,并将所有划分中规则子集大小最小的作为选定的规则子集,直至达到迭代次数或划分后的规则子集大小符合预设值。其中,所述掩码向量分类模块提取接收到的多域的网包的包头,然后将所述包头与掩码向量有效位进行匹配,并根据匹配结果获得该多域的网包对应的规则子集。本发明的硬件系统可以通过以下单元实现參接收单元主要任务接收网包,解析网包包头(五个域),并将网包和包头信息和网包内容缓存到处理队列中。相关设备网卡,缓存(DRAM)输入输出从网卡输入到达网包,向缓存队列中输出包头信息网包内容。參计算单元主要任务设置分类规则并更新分类器数据结构。相关设备处理器(CPU),高速存储设备(SRAM或Cache)输入输出从采样单元输入网络流量统计的先验分布,从控制单元输入规则集合;向分类单元输出分类器数据结构以及规范化的规则集合。(注分类器的数据结构为查找表结构并在表项有指向存储规则子集内存块的指针;规则的规范化是指将带有掩码或通配符的规则用统一的五元区间描述。)參分类单元主要任务高速网包分类。依据网包包头信息(五元组),通过分类器搜索获取分类结果。相关设备处理器(CPU),高速存储设备(SRAM或Cache)输入输出对于网包分类过程,分类单元从输入端缓存队列获取网包包头信息,并将分类结果送至输出单元;对于数据更新过程,分类单元从计算单元读入新的分类器数据结构以及新的规则集合。參控制单元主要任务设置分类规则和系统可调参数(如更新周期,采样间隔以及分类器数据结构中的可调参数等)。相关设备计算机外围设备,监视器,键盘,鼠标等输入输出管理员通过外围设备向控制单元输入规则集合和系统参数;控制单元将规则集合和系统参数输出至计算单元。參发送单元主要任务发送网包,按照分类结果发送输出队列中的网包。相关设备网卡,缓存(DRAM)输入输出从计算单元中读取分类结果,并以此决定发送或丢弃输出缓存队列中相应的网包。分类器数据结构更新方法分类器数据结构主体为查找表,通过查找表对搜索空间进行切分,使得查找表下一级挂载的子空间中规则仅为少量规则组成的子集。在规则子集中采用线性查找的方法对当前子集进行搜索,获取最终分类结果。所谓线性查找,就是顺序访问数组,这样就可以在线性时间内查找出结果1定义搜索空间U:多域的网包的包头的所有可能的取值空间。对于五元组分类,初始搜索空间为{,,,,};空间划分在指定的一个或者多个域上将取值范围划分为多个子范围的集合,则得到对当前搜索空间的一个划分。例如对初始搜索空间,如果在第一个域(源地址)上进行二等分,则得到两个搜索子空间U1={,,,,}和U2={[231,232-1],,,,}。输入规则集合R:输入的每一条规则包括五个域的范围表述以及规则优先级(一个网包匹配多个规则时取优先级最高的规则)和分类结果。规则集合标记为R,每一条规则标记为Ri。规则数据结构定义如下Rule(int32sIP[2],dlP[2];〃每个地址区间用两个32位整数描述intl6sPort[2],dPort[2];〃每个端口区间用两个16位整数描述int8protocol[2];〃每个协议区间用两个8位整数描述int32priority;〃规则优先级int8action;〃分类结果};掩码向量结构掩码向量数据结构如下MASK_VECT0R{Intebit[LEN_VECT0R];〃存放有效位的bit序号,从0开始编号}其中LEN_VECT0R为掩码向量的长度。查找表数据结构查找表数据结构如下L00KUP_TABLE{void*next[LEN_TABLE];〃跳转指针,每一个指针指向一个存储有规则子集的存储块};其中LEN_TABLE为查找表的长度查找表结构图<table>tableseeoriginaldocumentpage10</column></row><table>表l2生成方法掩码向量生成方法掩码向量V包含有所有的有效位的信息,通过有效位的筛选对规则集合进行切分。因此,有效位是最能将规则集合切分开来的位。定义有效意味着规则集切分后子集中规则数最大值最小,即尽量让子集中包含的规则数目很少。我们定义目标函数F为切分后规则子集中最大一个的规则数目。我们试图让F取值最小。我们给出两种生成掩码向量的方法。方法一先挑选1位,让整个规则集切分生成两个子集尽量的小;在剩下的位中继续挑选1位,使得目前挑选出来的所有位切分生成的所有子集尽量的小。这样最终挑选足够多的位构建我们的掩码向量。方法二先随机挑选出规定数量的位来构建一个初始的向量,计算该向量切分下的子集大小,然后随机用没有被选中的位替换向量中的位,重新计算切分后子集情况,如果子集中规则数量最大值变小,则接受这种替换,否则重新随机选择,直到一定的迭代次数或切分子集满足要求为止。查找表生成方法利用掩码向量,规则集可以被切分为不同的规则子集。长度为LEN_VECT0R的掩码向量,有exp(2,LEN_VECT0R)种取值,因此查找表有exp(2,LEN_VECT0R)个表项,每一个表项存有指针,指向该取值下切分后的规则子集。查找表的结构可以如图l所示。网包查找方法如图3所示,分两步进行l查找表的搜索利用掩码向量将包头的位筛选出来,计算这些位组成的位串的二进制数值。利用这一数值在查找表中找到对应表项保存的指针。利用指针找到匹配的规则子集。2线性表查找到达规则子集之后,程序读取叶节点存储的规则ID列表和规则个数,并以此来逐一读取规则,与网包包头信息进行区域比对.由于规则ID代表规则优先级,并且规则ID按照优先级从高到底存储于叶节点中,因此只需要返回第一个被匹配到的规则即可,例如网包{源地址=166.111.8.28,目标地址=162.105.38.12,源端口=2000,目标端口=80,协议=17}与规则{166.111.*,162.106.*,any,80,TCP}匹配以上所述仅是本发明的实施方式,应当指出,对于本
技术领域
的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变型,这些改进和变型也应视为本发明的保护范围。权利要求一种多域的网包的分类方法,包括步骤1、将多域的网包的过滤规则划分为两个或两个以上规则子集;步骤2、确定多域的网包对应的规则子集,然后所述网包包头与规则子集进行匹配。2.根据权利要求1所述的多域的网包的分类方法,其特征在于,所述步骤1具体为步骤11、设置一掩码向量,所述掩码向量与包括所述多域的网包包头的有效位相对应;步骤12、通过掩码向量有效位,将多域的网包的过滤规则划分为两个或两个以上规则子集。3.根据权利要求2所述的多域的网包的分类方法,其特征在于,所述步骤12具体为步骤12a、在所述掩码向量的有效位中随机抽取1位,并以该有效位对规则进行划分;步骤12b、在剩余的有效位中再随机抽取1位,并以该有效位继续对规则进行划分;步骤12c、判断划分后的规则子集大小是否符合预设值,如果是则跳转至步骤2,否则返回步骤12b。4.根据权利要求2所述的多域的网包的分类方法,其特征在于,所述步骤12具体为步骤12A、随机挑选出所述掩码向量的预订数量的有效位,并以该掩码向量对规则进行划分;步骤12B、判断划分的规则子集的大小是否符合预设值,或划分的次数是否达到预定的迭代次数,如果是则将所有划分中规则子集最小的作为选定的规则子集,并跳转到步骤2;否则跳转到步骤12C;步骤12C、随机挑选出没有被选中过的有效位构成新的掩码向量,并以该新的掩码向量对规则子集进行划分;跳转到步骤12B。5.根据权利要求14任一项所述的多域的网包的分类方法,其特征在于,所述步骤2具体为步骤21、提取接收到的多域的网包的包头;步骤22、将所述包头与掩码向量有效位进行匹配,并根据匹配结果获得该多域的网包对应的规则子集。6.—种多域的网包的分类装置,其特征在于,包括分类单元,所述分类单元将多域的网包的过滤规则划分为两个或两个以上规则子集;接收单元,所述接收单元接收多域的网包,并提取所述网包的包头;控制单元,所述控制单元连接所述接收单元和分类单元;所述控制单元将接收单元接收到的网包的包头,并根据包头确定多域的网包对应的规则子集,然后所述网包包头与规则子集进行匹配。7.根据权利要求6所述的多域的网包的分类装置,其特征在于,所述分类单元包括掩码向量模块,所述掩码向量模块生成一掩码向量,所述掩码向量的有效位的位数与所述多域的网包包头的有效位相对应;掩码向量分类模块,所述掩码向量分类模块通过所述掩码向量的有效位,将多域的网包的过滤规则划分为两个或两个以上规则子集。8.根据权利要求7所述的多域的网包的分类装置,其特征在于,所述掩码向量分类模块在所述掩码向量的有效位中随机抽取1位,并以该有效位对规则进行划分;然后在剩余的有效位中再随机抽取1位,并以该有效位继续对规则进行划分;直至划分后的规则子集大小符合预设值。9.根据权利要求7所述的多域的网包的分类装置,其特征在于,所述掩码向量分类模块随机挑选出所述掩码向量的预订数量的有效位,并以该掩码向量对规则进行划分;然后随机用没有被选中的位替换掩码向量中的有效位,重新计算切分后子集情况,并将所有划分中规则子集大小最小的作为选定的规则子集,直至达到迭代次数或划分后的规则子集大小符合预设值。10.根据权利要求69任一项所述的多域的网包的分类装置,其特征在于,所述掩码向量分类模块提取接收到的多域的网包包头,然后将所述包头与掩码向量有效位进行匹配,并根据匹配结果获得该多域的网包对应的规则子集。全文摘要本发明提出了一种多域的网包的分类方法和装置,针对现有技术中多域的网包过滤规则繁复导致网包过滤效率低的问题而发明。本发明的方法包括将多域的网包的过滤规则划分为两个或两个以上规则子集;确定多域的网包对应的规则子集,然后所述网包包头与规则子集进行匹配。本发明的装置包括分类单元,所述分类单元将多域的网包的过滤规则划分为两个或两个以上规则子集;接收单元,所述接收单元接收多域的网包,并提取所述网包的包头;控制单元,所述控制单元连接所述接收单元和分类单元;所述控制单元将接收单元接收到的网包的包头,并根据包头确定多域的网包对应的规则子集,然后所述网包包头与规则子集进行匹配。文档编号H04L12/56GK101714948SQ20091023690公开日2010年5月26日申请日期2009年10月27日优先权日2009年10月27日发明者李军,杨保华,薛一波申请人:清华大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1