基于网络流量的多域网包分类方法

文档序号:7629019阅读:218来源:国知局
专利名称:基于网络流量的多域网包分类方法
技术领域
本发明涉及网络过滤和监控技术领域。
背景技术
在第四层交换机,状态检测防火墙,QoS路由器以及负载均衡等多项基于策略的网络过滤和监控应用中,多域网包分类方法是系统性能的关键组成部分和核心技术所在。这里的与传统的第二层交换和第三层路由相比,多域网包分类不但检查和处理以太网和IP包头,而且检查和处理TCP和UDP等更高层网络协议的包头。多域网包分类问题是最佳匹配过滤规则问题的一个实例。对于常见的四层以下的网包分类,共有7个域可被选择成为过滤规则的域源/目的网络层地址(各32位),源/目的传输层端口(各16位),服务类型(8位),协议域(8位)和传输层协议标志(8位),共计120位(比特)。实际上,过滤规则并不涉及所有这7个域,绝大多数的网络应用限制在五个域上(源/目的网络层地址,源/目的传输层端口和协议域)。本发明提出的方法适用于任何维度的多域网包分类问题。
多域网包分类方法近年来一直国际上学术界和工业界倍受关注。目前千兆级以上的高端策略路由器设备均采用ASIC/FPGA等专用芯片解决方案。由于基于专用芯片的设备开发周期长,体积功耗大,更新难度高,所以此类产品的效费比很低,限制了高性能网包分类设备的广泛使用。因此,研究和开发新型高性能网包分类方法,并结合当前最新的软硬件平台,成为推广高性能网包分类设备的必由之路。美国斯坦福大学、加州大学圣地亚哥分校、思科、朗讯以及ServGate等公司的研究人员都在这方面进行了许多研究和实验,提出了一系列解决网包分类问题的方案,主要包括两类方法基于决策树结构的查找方法HiCutsP.Gupta and N. McKeown,“Packet classification using hierarchical intelligent cuttings,”Proc.Hot Interconnects,1999和HyperCutsF.Baboescu,and G. Varghese,”Packet classification Using Multidimensional Cutting,”Proc.ACM SIGCOMM,2003,以及基于查询多域表的RFCP. Gupta and N.McKeown,“Packet classification on multiple fields,”Proc.ACM SIGCOMM 99,1999和HSMBo Xu,Dongyi Jiang,Jun Li, “HSMA Fast Packet Classification Algorithm”,The IEEE 19th International Conference on Advanced Information Networking and Applications (AINA),Taiwan,2005方法。这两类方法从不同角度利用分类规则集合的结构特性,通过多种启发式算法来消除搜索空间的冗余,提高网包分类速度。
然而,现有的解决方案在设计中仅利用了分类规则本身的特性,并没有考虑到网络流量的统计特性。在网包分类的实际应用中,通常会出现如下问题绝大多数的网包仅与规则集合的某个子集中的规则匹配,并且有相当多的规则仅有极少量的网包与之匹配。导致出现这个问题的原因是网包分类规则的严密性,必须为每一个商业需求的或者安全要求设置相应的分类策略。比如为了防范外网的某个类型的蠕虫病毒侵入内网,防火墙策略中将出现针对该蠕虫端口的策略,过滤并阻止外网中带有该蠕虫特性的网包侵入内网。但蠕虫的活动很可能仅仅是某个特定时期的个别现象,因此在网络正常运行的绝大多数时候,仅会有极少的网包与该规则匹配。由于规则的制定往往并未针对特定的网络进行优化,同时难以得到及时的更新,因此通常存在于网包分类设备中的规则库都有相当大的一部分规则极少能被匹配到,亦即此部分规则在网络正常运行的情况时很少参与实际的网包分类过程,但这些规则本身的存在却大大增加了网包分类问题的复杂性。现有的几类网包分类方法由于没能考虑到这种与网络流量统计特性相关的现实情况,所以无法解决网络在特定流量下无用规则(极少匹配到的规则)给网包分类本身带来的复杂性,从而无法进一步提高网络的平均传输速率。

发明内容
本发明的目的在于提供一种平均分类速率高且内存占用少的基于网络流量统计特性的多域网包分类方法。
本发明的特征在于该方法是基于微处理通用平台或网络处理器专用平台实现的,依次具有以下步骤步骤1.网包接受单元接受输入网包该单元的网卡接受到达的网包并解析网包包头信息后,再向该单元的动态缓冲存储器的缓存队列内输出网包包头信息的内容;步骤2.采样单元依据是定的采样间隔对网包接包单元输出的网络包头信息做网络流量特性统计,并按照更新时刻对所统计的信息做归一化处理后得到流量的先验分布,步骤2所述的方法依次含有以下步骤步骤2.1.采样所述采样单元内的处理器按照设定的采样间隔Ns从输入的网络包头信息队列中的每N个连续到达的网包中抽取一个五元组包头信息作为一个采样样本,每个采样样被是一个由下述五个域组成的数据组32位源IP地址,用int32 sIP表示,int表示整数类型,下同;32位目标IP地址,用int32 dIP表示;16位源端口,用int16 sPort表示;16位目标端口,用int16 dPort表示;8位协议,用int8 protocol表示;步骤2.2.记录统计量所述统计量包括每一个B类网段源IP地址在所述采样样本中出现的次数,用int32 sIP[65536]表示,所述B类网段是指32位IP地址的前16位,下同;每一个B类网段目标IP地址在所述采样样本中出现的次数,用int32 dIP[65536]表示;每一个源端口在所述采样样本中出现的次数,用int32 sPort[65536]表示;
每一个目标端口在所述采样样本中出现的次数,用int32 dPort[65536]表示;每一个协议在所述采样样本中出现的次数,用int32 protocol[256]表示;步骤2.3.归一化在分类器数据结构更新时,对统计量数据结构进行归一化得到先验分布,该先验分布的数据结构为下述二维数组float Prior[i][j],所述Prior[i][j]为每个域归一化统计量,其中,i=0,1,2,3,4,一次分别对应源IP地址,目标IP地址,源端口,目标端口和协议域;j=0,…,65535;对于源IP地址Prior
[j]=Stats.sIP[j]Σk=065535Stats.sIP[k],]]>Stats表示统计量,下同;对于目标IP地址Prior[1][j]=Stats.dIP[j]Σk=065535Stats.dIP[k],]]>对于源端口Prior[2][j]=Stats.sPort[j]Σk=065535Stats.sPort[k],]]>对于目标端口Prior[3][j]=Stats.dPort[j]Σk=065535Stats.dPort[k],]]>对于协议域Prior[4][j]=Stats.protocol[j]Σk=065535Stats.protocol[k],]]>当256≤j≤65535时,Prior[4][j]=0;步骤3.在计算单元中设置分类规则,再通过统计单元输出更新后的分类器数据结构及规范化的规则集合,所述规范化是指把代友掩码或通配符的规则用所述五元组所在区间描述所述计算单元内含一个处理器和一个高速存储设备,该处理器的有关网络流量统计的先验分布信息是输入端与所述采样单元的相应输出端相连,该处理器还设有一个规则集合输入端;所述分类器的数据结构为一个决策树结构并在该决策树的叶节点上由一个线性表来存储规则子集;所述计算单元在更新分类数据结构时对搜索空间进行逐级划分,不断缩小搜索范围和规则数目,把对整个规则集合的搜索编程对该规则集合子集的搜索,当被搜索子集中的规则个数小于设定阈值时,通过对所述线性表采用线性查找方法对当前子集进行搜索以得到最终分类结果,该阈值用Thresh表示,设为1~10;所述分类器数据结构更新方法依次含有一下步骤步骤3.1.初始化设定搜索空间为U,即多域网包包头信息的梭鱼可能的取值空间,所述五元组的初始搜索空间依次为




;设定空间的划分,即在制定的一个或者多个域上把取值范围划分为多个子范围的集合,则得到对当前搜索空间的一个划分;步骤3.2.通过计算机外围设备向所述计算单元输入规则集合和系统参数,所述系统参数包括更新周期,采样间隔以及所述分类器数据结构中的Thresh,spfacmin及spfacmax等可调参数;所述规则集合中的一条规则用R表示,含有用两个32位整数描述的源IP地址,表示为int32 sIP[2];用两个32位整数描述的目标IP地址,表示为int32 dIP[2];用两个16位整数描述的源端口,表示为int16 sPort[2];用两个16位整数描述的目标端口,表示为int16 dPort[2];用两个8位整数描述的协议区间,表示为int8 protocol[2];用int32 priority表示的规则优先级;用int8 action表示的分类结果;步骤3.3.在所述计算单元中设定如下所述的决策树节点数据结构,即分类器的数据结构,每一个节点包括划分维度,划分次数,节点信息,内部节点的节点信息值为0,叶节点的节点信息值为规则个数,用1~Thresh表示,Thresh为叶节点规则数的阈值;跳转指针对于内部节点,该指针指向下层节点的头节点;对于叶节点,该指针指向存放对应规则子集的规则ID的线性表;步骤3.4.创建根节点,并把所有规则都分配到根节点,根节点用vroot表示;
步骤3.5.把所述根节点送入当前队列Q1;步骤3.6.从当前队列中送出节点vc;步骤3.7.判断该节点vc中的规则数是否大于阈值T(即Thresh);步骤3.8.
若节点vc中的规则数大于(或等于)阈值T,则把该节点vc设置为叶节点;若节点vc中的规则数小于阈值T,则执行下一步骤;步骤3.9.根据当前节点vc的先验概率和该节点所对应的规则子集中规则个数N采用下述两种空间分配函数中的任何一种给节点vc的子节点分配内存空间第一种SpaceAlloc(vc)=N*spfac(vc)=N*(spfacmin+(Pvcl-min(Pl)*K)]]>其中,Pvcl=1FΣi=0FΣj=alblPrior[i][j]]]>为节点vc的流量的先验分布概率;当max(Pl)-min(Pl)>0时K=(spfacmax-spfacmin)/(max(Pl)-min(Pl))当max(Pl)-min(Pl)=0时K=0,其中,N是当前节点的规则个数;l表示决策树的节点的深度;[ai,bi]是节点vc对应的搜索空间在i域中所代表的区间;max(Pl)和min(Pl)是决策树第l层所有节点的最大和最小先验概率;spfacmin和spfacmax用来限制spfac(vc)的取值范围,一般设为spfacmin=1,spfacmax=4;F=5,表示5个域;第二种SpaceAlloc(vc)=N*spfac(vc)=N*BOUND(Pvcl*Dl*spfacavg,spfacmin,spfacmax),]]>BOUND(a,b,c)=ab≤a≤cba<bca>c]]>
spfacavg=12(spfacmin+spfacmax)]]>其中,Dl表示决策树在l层所有节点的个数;步骤3.10.切分维度和划分次数的确定首先用下式计算节点v的内存使用,sm(v,f)=Σi=1numCuts(v,f)numRules(vi)+numCuts(v,f)]]>其中f是被切分的维度;vi是v的一个子节点;numRules(v)是属于该节点的规则数。通过在sm(v,f)≤SpaceAlloc(v)的约束下最大化内存估算函数sm(v,f)即可选择在f域上的最优划分次数numCuts(v,f);确定了每个域上的最优划分次数后,便可将f域的搜索空间均匀划分为numCuts(v,f)份,f=1,…,F,假设每个子空间落入Ni个规则,i=1,…,numCuts(v,f),那么我们选择使1numCuts(v,f)Σi=1numCuts(v,f)Ni]]>最小化的f作为节点v的划分维度;步骤4.网包分类及分类器数据结构更新步骤4.1.作为网包分类用的处理器从所述DRAM中获取网包包头信息,即网包包头的五元组信息;步骤4.2.读取当前树节点vcurr,确定切分维度和切分次数;步骤4.3.根据步骤4.2中给出的划分域及划分次数对当前搜索空间进行划分,再根据网包包头中相应域的数值确定划分后各域的子空间;步骤4.4.根据步骤4.3中的子空间在搜索空间中的相对位置确定划分后各所属子空间序号,再顺序读取所述当前树节点的子节点,确定划分后各域所对应的子节点;步骤4.5.若步骤4.4最终得到的子节点为叶节点,则转入步骤4.6;否则,将当前搜索空间更新为所述子空间,且将当前树节点更新为所述子节点,重复步骤4.2~4.4;
步骤4.6.顺序读取步骤4.4中所述子节点中存放的规则列表,并对每个域进行范围匹配,与网包包头所有域都匹配且具有最高优先级的规则即为线性查找结果,即网包包头最终匹配的规则;步骤4.7.根据线性查找所得到的规则的处理方式,执行对该网包的操作。
基于网络流量统计的网包分类方法充分结合了网络流量的统计特性(动态特性)和规则集合的结构特性(静态特性),提出一整套适用于各种复杂网络环境的网包分类系统设计方法。该方法对不同类型、多种协议下的网络的流量进行周期性采样、归一化以及先验转化,将流量的各种统计特性以先验概率的形式引入网包分类器的数据结构中去,从而达到合理的空间(内存需求)和时间(分类速率)的配比,进一步优化网包分类方法,提高网包分类设备在不同网络环境下和多种网络应用中的性能。系统仿真的实验结果都表明本发明比当前国内外公认的最好的网包分类方法在平均分类速率指标上有80%~400%的提高,而在内存需求上却有30%~600%的降低。更为重要的一点是,基于网络流量统计特性的网包分类方法能够自行适应不同的规则集合和网络流量,在多种不同网络环境和网络应用中表现出大大优于其他分类方法的稳定性,从而使网包分类设备具有良好的灵活性和实用性。
表1比较了本方法和RFCP.Gupta and N.McKeown,“Packet classification on multiple fields,”Proc.ACM SIGCOMM 99, 1999、ABVF.Baboesccu and G.Varghese,Scalable Packet Classification.Proc.ACM SIGCOMM,2001及HiCutsP.Gupta and N. McKeown,“Packet classification using hierarchical intelligent cuttings,”Proc.Interconnects,1999方法的内存占用性能。在所有的规则集合中,本方法都表现出来了明显的优势。在搜索时间方面,本方法也和当前最好的算法在同一数量级上。
表1本方法和RFC、ABV及HiCuts方法的空间性能比较(单位KB)

注表中FW1和FW2为真实防火墙规则集合,CR1和CR2为真实核心路由器规则集合,SN1为合成规则集合。
本方法通过进一步挖掘网络控制规则集合的数据结构特征,在分类问题的不同层面和不同阶段结合使用多种启发式方法,可以在一定程度上解决单一启发式算法性能受数据结构变化影响较大带来的问题,从而使网包分类方法在最坏情况下的复杂度降低。流量统计特性的引入则是为了提高包分类方法的平均分类效率。流量统计可以看作是对特定网络结构和网络特性的学习过程。将流量统计的结果以先验概率的形式引入启发式方法中,可使该方法得出的结果具有贝叶斯分类器特性,从而能够根据特定的网络结构和网络流量特性进行自适应调节,提高平均分类效率。
目前千兆级以上的高端策略路由器设备均采用ASIC/FPGA等专用芯片解决方案。由于基于专用芯片的设备开发周期长,体积功耗大,更新难度高,所以此类产品的效费比很低,限制了高性能网包分类设备的广泛使用。而本发明提出的多域网包分类方法既可以在多种平台上实现,包括基于微处理器CPU的通用平台以及基于网络处理器NPU的专用平台,又可以保证良好的性能和对不同网络应用的适应性,因此整套软硬件系统可以作为多域网包分类方法的核心模块提供给厂商以提高基于通用处理器平台的网包分类设备的性能,大幅降低高端策略路由及防火墙产品的生产成本,从而推动和加速下一代互联网的实施和运行。


图1.本发明所述的决策树结构图示例。其中————→表示*next指针……………表示顺序存储图2.本发明所述的系统的原理框图。
图3.分类方法程序流程框图。
图4.网包分类程序流程框图。
具体实施例方式
下面结合图2,介绍本发明的硬件结构A接收单元主要任务接收网包,解析网包包头(五个域),并将网包和包头信息和网包内容缓存到处理队列中。
相关设备网卡,缓存(DRAM)输入输出从网卡输入到达网包,向缓存队列中输出包头信息网包内容。
B采样单元主要任务依据采样间隔对到达的网包包头信息进行统计,并按照更新时刻对统计信息进行归一化处理,为计算单元提供流量先验分布。(注采样间隔定义为对每N个到达网包进行一次采样,即每次采样记录N个连续到达的网包其中某一个的包头信息,N通常取1~1000,视设备吞吐量而定;更新时刻定义为规则库被修改的时刻或者更新周期到达的时刻,这里的更新周期通常设置为一天或者一周,视网络流量特性变化而定。)相关设备硬盘,处理器。
输入输出从缓存中读取网络包头信息(依据采样间隔),向计算单元输出流量先验分布(依据更新时刻)。
C计算单元主要任务设置分类规则并更新分类器数据结构。
相关设备处理器(CPU),高速存储设备(SRAM或Cache)输入输出从采样单元输入网络流量统计的先验分布,从控制单元输入规则集合;向分类单元输出分类器数据结构以及规范化的规则集合。(注分类器的数据结构为决策树结构并在叶节点上有线性表存储规则子集;规则的规范化是指将带有掩码或通配符的规则用统一的五元区间描述。)D分类单元主要任务高速网包分类。依据网包包头信息(五元组),通过分类器搜索获取分类结果。
相关设备处理器(CPU),高速存储设备(SRAM或Cache)输入输出对于网包分类过程,分类单元从输入端缓存队列获取网包包头信息,并将分类结果送至输出单元;对于数据更新过程,分类单元从计算单元读入新的分类器数据结构以及新的规则集合。
E控制单元主要任务设置分类规则和系统可调参数(如更新周期,采样间隔以及分类器数据结构中的可调参数等)。
相关设备计算机外围设备,监视器,键盘,鼠标等输入输出管理员通过外围设备向控制单元输入规则集合和系统参数;控制单元将规则集合和系统参数输出至计算单元。
F发送单元主要任务发送网包,按照分类结果发送输出队列中的网包。
相关设备网卡,缓存(DRAM)输入输出从计算单元中读取分类结果,并以此决定发送或丢弃输出缓存队列中相应的网包。
接着,详细描述本发明所采用的软件方法软件方法主要包括三部分内容网络流量特性统计方法;分类器数据结构更新方法以及网包查找方法。按照系统构建顺序,分别对这三个方法进行详细阐述A网络流量特性统计方法,在采样单元中进行,依次分三个步骤A1采样按照采样间隔Ns,从输入队列中每Ns个连续到达的网包中抽取一个包头信息(五元组)作为一个采样样本。每个采样样本的数据结构为Header{int32sIP,dIP;//32位源地址和目标地址int16 sPort,dPort;//16位源端口和目标端口int8 protocol;//8位协议};A2记录统计量包括每一个B类网段(32bitIP地址的前16bit)源/目标地址在样本中的出现次数、每一个源/目标端口的出现次数以及协议出现次数。统计量数据结构为Stats{int32sIP[65536],dIP[65536];//对每一个B类网段进行统计int32sPort[65536],dPort[65536];//对每一个端口进行统计int32protocol[256];//对每一个协议进行统计};举例若某个样本为{166.111.0.1(目标地址),162.105.0.1(源地址),80(目标端口),3000(源端口),17(协议)}则相应统计量变化为Stats.dIP[42607]++;//166*256+111=42607Stats.sIP[41577]++;//162*256+105=41577Stats.dPort[80]++;Stats.sPort ++;Stats.protocol[17]++;A3归一化在分类器数据结构更新时,对统计量Stats结构进行归一化得到先验分布Prior,其数据结构为二维数组float Prior[5][65536];其中Prior[i][j](i=0,…,4;j=0,…,65535)为每个域的归一化统计量,其中i=0,…,4分别对应源地址、目标地址、源端口、目标端口、协议等五个域。例如Prior[3][80]表示目标端口为80的先验概率,计算方法如下Prior[3][80]=Stats.dPort[80]Σk=065535Stats.dPort[k]]]>注对于协议域先验Prior[4][j],当j>=256时Prior[4][j]=0.
B分类器数据结构更新方法,在计算单元中进行分类器数据结构主体为决策树,通过决策树对搜索空间的逐级划分,不断缩小搜索范围和规则数目,将对整个规则集合的搜索变为对其子集的搜索。当搜索子集中的规则个数小于阈值Thresh的时候(Thresh=8~10),采用线性查找的方法对当前子集进行搜索,获取最终分类结果。
B1定义搜索空间U多域网包包头的所有可能的取值空间。对于五元组分类,初始搜索空间为{




};空间划分在指定的一个或者多个域上将取值范围划分为多个子范围的集合,则得到对当前搜索空间的一个划分。例如对初始搜索空间,如果在第一个域(源地址)上进行二等分,则得到两个搜索子空间U1={




}和U2={[231,232-1],



}。
输入规则集合R输入的每一条规则包括五个域的范围表述以及规则优先级(一个网包匹配多个规则时取优先级最高的规则)和分类结果。规则集合标记为R,每一条规则标记为Ri。规则数据结构定义如下Rule{int32sIP[2],dIP[2];//每个地址区间用两个32位整数描述int16sPort[2],dPort[2];//每个端口区间用两个16位整数描述int8 protocol[2];//每个协议区间用两个8位整数描述int32priority;//规则优先级int8 action;//分类结果};决策树节点数据结构决策树每一个节点的数据结构如下TREENODE{unsigned chardimToCut;//划分维度unsigned charnumCuts;//划分次数char nodeInfo;//节点信息,内部节点为0,叶节点为规则个数(1~T)void *next;//跳转指针,对于内部节点该指针指向下层节点的头节点;//对于叶节点该指针指向规则ID的线性表};决策树结构图见图1。
B2空间分配函数
首先给出HiCuts中的空间分配函数SpaceAlloc(v)=N*spfac其中,v表示当前节点,N为当前节点中包含的规则个数,而spfac为空间因子,是一个常量,通常设为1~4。spfac越大意味着可用内存空间越多,即对当前搜索空间的分解可以越细致。
本方法中可以采用两种不同形式的空间分配函数,下面分别给出这两种形式的函数形式ISpaceAlloc(v)=N*spfac(v)=N*(spfacmin+(Pvl-min(Pl)*K)]]>Pvl=1FΣf=0FΣi=afbfPrior[f][i]]]>当max(Pl)-min(Pl)>0时K=(spfacmax-spfacmin)/(max(Pl)-min(Pl))当max(Pl)-min(Pl)=0时K=0,其中,N是当前节点的规则个数;l表示决策树的节点的深度;[af,bf]是节点v(v代表一个决策树节点)对应的搜索空间在f域中所代表的区间;Pvl称为节点v的先验概率;max(Pl)和min(Pl)是决策树第l层所有节点的最大和最小先验概率;spfacmin和spfacmax用来限制spfac(v)的取值范围,一般设为1~4。
形式IISpaceAlloc(v)=N*spfac(v)]]>=N*BOUND(Pvl*Dl*spfacavg,spfacmin,spfacmax)]]>BOUND(a,b,c)=ab≤a≤cba<bca>c]]>spfacavg=12(spfacmin+spfacmax)]]>其中,Dl表示决策树在l层所有节点的个数。
从以上两种定义可以看出,本方法与HiCuts不同,空间因子spfac不再是常数,而是用函数spfac(v)来代替。两种形式的空间分配函数都和当前节点的规则个数成正比,只是通过不同的方式将spfac(v)的取值约束在区间[spfacmin,spfacmax]中。
B3切分维度和切分次数的选择一旦空间分配函数确定了可用内存空间,本方法和HiCuts采用相同的方式确定切分次数和切分维度首先为所有可能的切分维度(即五元组中的五个域)确定最大切分次数,然后根据维度判别准则首先估算可能的内存使用sm(v,f)=Σi=1numCuts(v,f)numRules(vi)+numCuts(v,f)]]>其中f是被切分的维度;vi是v的一个子节点;numRules(v)是属于该节点的规则数。通过在sm(v,f)≤SpaceAlloc(v)的约束下最大化内存估算函数sm(v,f)即可选择在f域上的最优划分次数numCuts(v,f)。
确定了每个域上的最优划分次数后,便可将f域的搜索空间均匀划分为numCuts(v,f)份(f=1,…,F),假设每个子空间落入Ni个规则(i=1,…,numCuts(v,f)),那么我们选择使1numCuts(v,f)Σi=1numCuts(v,f)Ni]]>最小化的f作为节点v的划分维度C网包查找方法,在网包分类单元中进行,具体步骤如下第一步读取网包包头H五元组数据,例如{源地址=166.111.8.28,目标地址=162.105.38.12,源端口=2000,目标端口=80,协议=17}.初始化当前搜索空间Scurr为全局搜索空间,例如Scurr={{0,232-1},{0,232-1},{0,216-1},{0,216-1},{0,28-1}}.
第二步读取当前树节点vcurr(第一个节点为根结点vroot),确定划分域DimToCut和划分次数NumToCut。
第三步根据DimToCut和NumToCut对当前搜索空间Scurr进行划分.例如选择划分目标端口域,划分次数为64次,则搜索空间在目标端口域被划分为64个子空间,其中第一个子空间为{{0,232-1},{0,232-1},{0,216-1},{0,1023},{0,28-1}},第二个为{{0,232-1},{0,232-1},{0,216-1},{1024,2047},{0,28-1}},…,第64个为{{0,232-1},{0,232-1},{0,216-1},{64512,65535},{0,28-1}}。然后根据网包包头H中相应域数值确定其所属子空间Snext。例如H中目标端口域为80,由于0<=80<=1023,则该网包属于第1个子空间{{0,232-1},{0,232-1},{0,216-1},{0,1023},{0,28-1}}。
第四步根据Snext在Scurr中的相对位置确定H所属子空间序号(80所在子空间序号为1),顺序读取当前节点的子节点,确定H对应的子节点vnext(即当前节点的第1个子节点)。
第五步如果vnext为叶节点,那么转到第六步;否则设Scrr=Snext,且vcurr=vnext,并重复第二至四步。
第六步读取vnext中存放的规则列表RuleList,并对H进行该列表中规则的线性查找(即对每个域进行范围匹配),与H所有域都匹配且具有最高优先级的规则(设为Ropt)为线性查找结果,即H最终对应的规则。
第七步根据Ropt的Action属性执行对H所属网包的操作。例如丢弃或转发等。
注线性表查找--到达叶节点之后,读取叶节点存储的规则ID列表和规则个数,并以此来逐一读取规则,与网包包头信息进行区域比对。由于规则ID代表规则优先级,并且规则ID按照优先级从高到底存储于叶节点中,因此只需要返回第一个被匹配到的规则即可,例如网包{源地址=166.111.8.28,目标地址=162.105.38.12,源端口=2000,目标端口=80,协议=17}与规则{166.111.*,162.106.*,any,80,TCP}匹配。
结论本方法通过进一步挖掘网络控制规则集合的数据结构特征,在分类问题的不同层面和不同阶段结合使用多种启发式方法,可以在一定程度上解决单一启发式算法性能受数据结构变化影响较大带来的问题,从而使网包分类方法在最坏情况下的复杂度降低。流量统计特性的引入则是为了提高包分类方法的平均分类效率。流量统计可以看作是对特定网络结构和网络特性的学习过程。将流量统计的结果以先验概率的形式引入启发式方法中,可使该方法得出的结果具有贝叶斯分类器特性,从而能够根据特定的网络结构和网络流量特性进行自适应调节,提高平均分类效率。
应用前景目前千兆级以上的高端策略路由器设备均采用ASIC/FPGA等专用芯片解决方案。由于基于专用芯片的设备开发周期长,体积功耗大,更新难度高,所以此类产品的效费比很低,限制了高性能网包分类设备的广泛使用。而本专利提出的多域网包分类方法既可以在多种平台上实现,包括基于微处理器CPU的通用平台以及基于网络处理器NPU的专用平台,有可以保证良好的性能和对不同网络应用的适应性,因此整套软硬件系统可以作为多域网包分类方法的核心模块提供给厂商以提高基于通用处理器平台的网包分类设备的性能,大幅降低高端策略路由及防火墙产品的生产成本,从而推动和加速下一代互联网的实施和运行。
权利要求
1.基于网络流量的多域网包分类方法,其特征在于该方法是基于微处理通用平台或网络处理器专用平台实现的,依次具有以下步骤步骤1.网包接受单元接受输入网包该单元的网卡接受到达的网包并解析网包包头信息后,再向该单元的动态缓冲存储器的缓存队列内输出网包包头信息的内容;步骤2.采样单元依据是定的采样间隔对网包接包单元输出的网络包头信息做网络流量特性统计,并按照更新时刻对所统计的信息做归一化处理后得到流量的先验分布,步骤2所述的方法依次含有以下步骤步骤2.1.采样所述采样单元内的处理器按照设定的采样间隔Ns从输入的网络包头信息队列中的每N个连续到达的网包中抽取一个五元组包头信息作为一个采样样本,每个采样样被是一个由下述五个域组成的数据组32位源IP地址,用int32 sIP表示,int表示整数类型,下同;32位目标IP地址,用int32 dIP表示;16位源端口,用int16 sPort表示;16位目标端口,用int16 dPort表示;8位协议,用int8 protocol表示;步骤2.2.记录统计量所述统计量包括每一个B类网段源IP地址在所述采样样本中出现的次数,用int32 sIP[65536]表示,所述B类网段是指32位IP地址的前16位,下同;每一个B类网段目标IP地址在所述采样样本中出现的次数,用int32 dIP[65536]表示;每一个源端口在所述采样样本中出现的次数,用int32 sPort[65536]表示;每一个目标端口在所述采样样本中出现的次数,用int32 dPort[65536]表示;每一个协议在所述采样样本中出现的次数,用int32 protocol[256]表示;步骤2.3.归一化在分类器数据结构更新时,对统计量数据结构进行归一化得到先验分布,该先验分布的数据结构为下述二维数组float Prior[i][j],所述Prior[i][j]为每个域归一化统计量,其中,i=0,1,2,3,4,一次分别对应源IP地址,目标IP地址,源端口,目标端口和协议域;j=0,...,65535;对于源IP地址Prior
[j]=Stats.sIP[j]Σk=065535Stats.sIP[k],]]>Stats表示统计量,下同;对于目标IP地址Prior[1][j]=Stats.dIP[j]Σk=065535Stats.dIP[k],]]>对于源端口Prior[2][j]=Stats.sPort[j]Σk=065535Stats.sPort[k],]]>对于目标端口Prior[3][j]=Stats.dPort[j]Σk=065535Stats.dPort[k],]]>对于协议域Prior[4][j]=Stats.protocol[j]Σk=065535Stats.protocol[k],]]>当256≤j≤65535时,Prior[4][j]=0;步骤3.在计算单元中设置分类规则,再通过统计单元输出更新后的分类器数据结构及规范化的规则集合,所述规范化是指把代友掩码或通配符的规则用所述五元组所在区间描述所述计算单元内含一个处理器和一个高速存储设备,该处理器的有关网络流量统计的先验分布信息是输入端与所述采样单元的相应输出端相连,该处理器还设有一个规则集合输入端;所述分类器的数据结构为一个决策树结构并在该决策树的叶节点上由一个线性表来存储规则子集;所述计算单元在更新分类数据结构时对搜索空间进行逐级划分,不断缩小搜索范围和规则数目,把对整个规则集合的搜索编程对该规则集合子集的搜索,当被搜索子集中的规则个数小于设定阈值时,通过对所述线性表采用线性查找方法对当前子集进行搜索以得到最终分类结果,该阈值用Thresh表示,设为1~10;所述分类器数据结构更新方法依次含有一下步骤步骤3.1.初始化设定搜索空间为U,即多域网包包头信息的梭鱼可能的取值空间,所述五元组的初始搜索空间依次为




;设定空间的划分,即在制定的一个或者多个域上把取值范围划分为多个子范围的集合,则得到对当前搜索空间的一个划分;步骤3.2.通过计算机外围设备向所述计算单元输入规则集合和系统参数,所述系统参数包括更新周期,采样间隔以及所述分类器数据结构中的Thresh,spfacmin及spfacmax等可调参数;所述规则集合中的一条规则用R表示,含有用两个32位整数描述的源IP地址,表示为int32 sIP[2];用两个32位整数描述的目标IP地址,表示为int32 dIP[2];用两个16位整数描述的源端口,表示为int16 sPort[2];用两个16位整数描述的目标端口,表示为int16 dPort[2];用两个8位整数描述的协议区间,表示为int8 protocol[2];用int32 priority表示的规则优先级;用int8 action表示的分类结果;步骤3.3.在所述计算单元中设定如下所述的决策树节点数据结构,即分类器的数据结构,每一个节点包括划分维度,划分次数,节点信息,内部节点的节点信息值为0,叶节点的节点信息值为规则个数,用1~Thresh表示,Thresh为叶节点规则数的阈值;跳转指针对于内部节点,该指针指向下层节点的头节点;对于叶节点,该指针指向存放对应规则子集的规则ID的线性表;步骤3.4.创建根节点,并把所有规则都分配到根节点,根节点用vroot表示;步骤3.5.把所述根节点送入当前队列Q1;步骤3.6.从当前队列中送出节点vc;步骤3.7.判断该节点vc中的规则数是否大于阈值T(即Thresh);步骤3.8.若节点vc中的规则数大于(或等于)阈值T,则把该节点vc设置为叶节点;若节点vc中的规则数小于阈值T,则执行下一步骤;步骤3.9.根据当前节点vc的先验概率和该节点所对应的规则子集中规则个数N采用下述两种空间分配函数中的任何一种给节点vc的子节点分配内存空间第一种SpaceAlloc(vc)=N*spfac(vc)=N*(spfacmin+(Pvcl-min(Pl)*K)]]>其中,Pvcl=1FΣi=0FΣj=aibiPrior[i][j]]]>为节点vc的流量的先验分布概率;当max(Pl)-min(Pl)>0时K=(spfacmax-spfacmin)/(max(Pl)-min(Pl))当max(Pl)-min(Pl)=0时K=0,其中,N是当前节点的规则个数;l表示决策树的节点的深度;[ai,bi]是节点vc对应的搜索空间在i域中所代表的区间;max(Pl)和min(Pl)是决策树第l层所有节点的最大和最小先验概率;spfacmin和spfacmax用来限制spfac(vc)的取值范围,一般设为spfacmin=1,spfacmax=4;F=5,表示5个域;第二种SpaceAlloc(vc)=N*spfac(vc)=N*BOUND(Pvcl*Dl*spfacavg,spfacmin,spfacmax),]]>BOUND(a,b,c)=ab≤a≤cba<bca>c]]>spfacavg=12(spfacmin+spfacmax)]]>其中,Dl表示决策树在l层所有节点的个数;步骤3.10.切分维度和划分次数的确定首先用下式计算节点v的内存使用,sm(v,f)=Σi=1numCuts(v,f)numRules(vi)+numCuts(v,f)]]>其中f是被切分的维度;vi是v的一个子节点;numRules(v)是属于该节点的规则数。通过在sm(v,f)≤SpaceAlloc(v)的约束下最大化内存估算函数sm(v,f)即可选择在f域上的最优划分次数numCuts(v,f);确定了每个域上的最优划分次数后,便可将f域的搜索空间均匀划分为numCuts(v,f)份,f=1,...,F,假设每个子空间落入Ni个规则,i=1,...,numCuts(v,f),那么我们选择使1numCuts(v,f)Σi=1numCuts(v,f)Ni]]>最小化的f作为节点v的划分维度;步骤4.网包分类及分类器数据结构更新步骤4.1.作为网包分类用的处理器从所述DRAM中获取网包包头信息,即网包包头的五元组信息;步骤4.2.读取当前树节点vcurr,确定切分维度和切分次数;步骤4.3.根据步骤4.2中给出的划分域及划分次数对当前搜索空间进行划分,再根据网包包头中相应域的数值确定划分后各域的子空间;步骤4.4.根据步骤4.3中的子空间在搜索空间中的相对位置确定划分后各所属子空间序号,再顺序读取所述当前树节点的子节点,确定划分后各域所对应的子节点;步骤4.5.若步骤4.4最终得到的子节点为叶节点,则转入步骤4.6;否则,将当前搜索空间更新为所述子空间,且将当前树节点更新为所述子节点,重复步骤4.2~4.4;步骤4.6.顺序读取步骤4.4中所述子节点中存放的规则列表,并对每个域进行范围匹配,与网包包头所有域都匹配且具有最高优先级的规则即为线性查找结果,即网包包头最终匹配的规则;步骤4.7.根据线性查找所得到的规则的处理方式,执行对该网包的操作。
全文摘要
本发明涉及网络过滤和监控技术领域,其特征在于它包括以下步骤接收到达的网包;采集网包包头信息;统计及归一化网络流量特性;计算单元根据设定的规则集合及网络流量统计特性得出网包分类结构;网包分类单元获取网包包头信息并以计算单元得到的分类器数据结构对网包进行分类;发送单元按照分类结果发送输出队列中的网包。本发明是基于微处理器通用平台或网络处理器专用平台实现的,结合了网络流量动态统计特性和规则集合的静态结构特性,优化了网包分类方法,比当前国内外同类方法提高了80~400%的平均分类速率,同时内存需求降低了30~600%。
文档编号H04L29/06GK1822567SQ200510130708
公开日2006年8月23日 申请日期2005年12月23日 优先权日2005年12月23日
发明者亓亚烜, 李军 申请人:清华大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1