基于多级决策树的协议识别方法转让专利

申请号 : CN201210246438.9

文献号 : CN103546441B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 薛一波王大伟

申请人 : 清华大学

摘要 :

本发明提供了一种基于多级决策树的协议识别方法,其特征在于,包括步骤:S1.对网络流统计特征进行l级分类;S2.根据所提取的网络流统计特征自身的分类特点,训练l级决策树;S3.利用训练得到的l级决策树识别背景流量中的协议。本发明的方法不仅能够合理地利用统计特征中蕴含的知识,提升协议识别系统的性能,还能够有效应对日益增多的网络协议带来的挑战,特别是对日益流行的交互式协议识别具有较好的效果。本发明的方法可以为高速网络中高性能流量分类系统、内容监控系统的设计和实现提供技术支持。

权利要求 :

1.一种基于多级决策树的协议识别方法,其特征在于,包括步骤:S1.对网络流统计特征进行l级分类;

S2.根据所提取的网络流统计特征自身的分类特点,训练l级决策树;

S3.利用训练得到的l级决策树识别背景流量中的协议;

步骤S2包括:

S2.1从训练集中提取网络流统计特征构造初始训练特征集;

S2.2根据网络流统计特征的l级分类,使用初始训练特征集训练多级决策树;

步骤S2.2包括:

S2.21根据第l级分类,将初始训练特征集划分成若干个第l级训练子集;

S2.22利用划分得到的第l级训练子集训练第l级决策树集;

S2.23将第l级训练子集输入第l级决策树集,每个决策树负责处理各自的类别中的统计特征,计算得到该类别每一个统计特征向量的protocol和errate;

S2.24初始化计数变量k=1;

S2.25若l>k,则根据第l-k级分类,将第l-k+1级决策树集处理结果划分成若干个第l-k级训练子集,否则,执行步骤S3;

S2.26利用划分得到的第l-k级训练子集训练第l-k级决策树集;

S2.27若l>k+1,则将第l-k级训练子集输入第l-k级决策树集,每个决策树负责处理各自的类别中的特征向量,计算得到该类别每一个特征向量的protocol和errate,否则,执行步骤S3;

S2.28k加1,返回执行S2.25;

其中,protocol是一个第l级决策树判定该类别的一个特征向量所属的协议;errate是该决策树判定该特征向量是protocol的错误率。

2.如权利要求1所述的方法,其特征在于,步骤S1包括:S1.1将未分类的网络流特征定为类别数为ci的第i级分类;

S1.2将第i级分类中的每一个类别继续分类,分类后,对于第i级分类的第j个类别得到个分类;

S1.3i加1,若i>l,则执行步骤S2,否则,返回执行步骤S1.2;

其中,变量i表示分类的级数,变量ci表示第i级分类的类别数。

3.如权利要求2所述的方法,其特征在于:i=1,且ci=1。

4.如权利要求1所述的方法,其特征在于:训练集是一组包含需要识别协议流量的集合。

5.如权利要求1所述的方法,其特征在于:在步骤S2.21中,每个子集包含第l级分类中一个类别的统计特征,以及该特征对应网络流所属的协议。

6.如权利要求1所述的方法,其特征在于:在步骤S2.22中,每一个第l级训练子集训练一个第l级决策树,训练得到的决策树构成第l级决策树集。

7.如权利要求1所述的方法,其特征在于:在步骤S2.23中,protocol是一个第l级决策树判定该类别的一个特征向量所属的协议;errate是该决策树判定该特征向量是protocol的错误率,由下式计算得到

其中,Nprotocol是训练子集中属于protocol的特征向量,且被划分到一个叶子结点的个数, 是该叶子结点中所有种类的特征向量的个数。

8.如权利要求1所述的方法,其特征在于,步骤S3包括:S3.1提取背景流量中一个网络流的统计特征;

S3.2初始化计数变量k=1;

S3.3根据第l级分类,将该网络流的统计特征进行分类,得到第l级统计特征向量子集;

S3.4将第l级统计特征向量子集输入到第l级决策树集,若l>k,则计算每类的protocol和errate,否则,输出第l级决策树集的识别结果,并返回执行S3.1;

S3.5根据第l-k级分类,将第l-k+1级识别结果进行分类,得到第l-k级特征向量子集;

S3.6将第l-k级特征向量子集输入到第l-k级决策树集,若l>k+1,则计算每类的protocol和errate,否则,输出第l-k级决策树集的识别结果,并返回执行S3.1;

S3.7k加1,返回执行S3.5。

说明书 :

基于多级决策树的协议识别方法

技术领域

[0001] 本发明属于网络技术中协议识别技术领域,尤其涉及一种基于多级决策树的协议识别方法。

背景技术

[0002] 随着高速网络技术和多媒体技术的飞速发展,业界越来越多地提出了包括多媒体通信在内的综合服务要求。然而,急速增长的用户数量和网络流量不断降低网络性能,尤其是一些非商务应用(例如:P2P、多媒体和网络游戏)占据了大量带宽,严重影响了关键业务的正常使用。网络协议识别技术能够保障关键业务,解决网络拥塞,逐渐成为了国内外的研究热点。
[0003] 最早出现的协议识别技术是基于端口映射的协议识别技术。该技术利用端口号对协议进行识别,方法简单,所需信息少,时空复杂度低。但由于新出现的协议都不在IANA中注册其端口号,算法所能识别的协议在总协议数量中所占的比重越来越少。此外,网络中的很多协议使用动态端口,也是导致该方法失效的原因。
[0004] 针对基于端口映射的协议识别技术的问题,业界提出了利用数据包的载荷部分对协议进行识别的技术。基于数据包载荷的协议识别技术首先利用逆向工程将协议或软件分解或者解析,解明它们的结构、使用方法及目的、组成部件与要素技术的原理,并从中找出能够识别协议的数据包载荷关键字。之后,利用高效的模式匹配及正则表达式匹配算法,在背景流量中寻找关键字,以达到协议识别的目的。然而,随着网络环境的日益复杂,越来越多的应用层协议采用加密协议加密数据包载荷。在这种情况下,寻找数据包载荷关键的难度越来越大,最终导致基于数据包载荷的协议识别技术严重失效。此外,由于该技术需要第三方监听网络载荷内容,在被政府的隐私保护法规限制时,监听方法的功能和作用会被大大减弱。
[0005] 近年来,基于统计特征的协议识别技术逐渐成为业界关注的热点。不同于基于数据包载荷的协议识别技术,基于统计特征的协议识别技术着眼于网络流,从网络流中提取大量统计特征,并利用这些统计特征实现协议识别。传统上把网络流定义为具有相同五元组(<源地址,目的地址,源端口,目的端口,协议>)的数据包的集合。基于统计特征的协议识别技术的假设前提是不同协议会有其特有的网络流统计特性,并以此来识别不同的加密协议。由于该技术引入了大量的统计信息作为基本参考因素,所以它不可避免地将机器学习的方法结合到了识别中,期望取得更好的协议识别性能。机器学习方法使计算机能够模拟人类的学习活动,识别和获取已有知识,建立和不断完善学习模型,并且能够根据已有知识对新的信息进行处理。机器学习方法于2004年被引入到协议识别技术中,根据流量具有的统计特性对协议进行识别。例如,网络流持续时间的分布特性,流空闲时间,包间隔时间,包长度等信息,对于协议识别来说,是特有的信息。它们都可以作为判别式的特征被机器学习模型利用进行协议识别。
[0006] 随着网络技术的不断发展,新型应用层协议层出不穷,而不同的协议在不同的统计特征上体现不同。一方面,为了更好地识别协议,越来越多的网络流统计特征被提出来用于训练机器学习模型;另一方面,越来越多的统计特征也对机器学习模型提出了新的要求:首先,越来越多的统计特征势必会造成机器学习模型所处空间维数的增大,而多数机器学习算法都易受到空间维数的影响,在高维空间中的识别效果较差;其次,虽然统计特征均是从网络流中提取,这些特征本身也存在一定的分类。例如,对于某些交互式协议,我们可以按照协议所处的阶段对提取的统计特征进行分类。这些分类本身蕴含的知识能够进一步提升机器学习模型的性能。
[0007] 合理利用大量的网络流统计特征进行协议识别,不仅能够极大地提升基于统计特征的协议识别系统的性能,还能够应对不断增多的协议带来的挑战。然而,目前大多数基于统计特征的协议识别方法仅是简单地将大量的统计特征输入到模型中进行训练和检测,并没有合理的利用统计特征中蕴含的知识,影响了协议识别系统的性能。特别是随着网络协议越来越丰富,协议识别系统需要处理更多的统计特征,使得基于统计特征的协议识别技术面临更大的挑战。

发明内容

[0008] (一)要解决的技术问题
[0009] 本发明所要解决的技术问题是:如何提供一种基于统计特征的协议识别方法,能够更好地利用蕴含在大量统计特征中的知识,提升基于统计特征的协议识别系统的性能,以应对迅速增多的协议所带来的挑战。
[0010] (二)技术方案
[0011] 为了解决上述问题,本发明提供了一种基于多级决策树的协议识别方法,其特征在于,包括步骤:S1.对网络流统计特征进行l级分类;S2.根据所提取的网络流统计特征自身的分类特点,训练l级决策树;S3.利用训练得到的l级决策树识别背景流量中的协议。
[0012] 优选地,步骤S1包括:S1.1将未分类的网络流特征定为类别数为ci的第i级分类;S1.2将第i级分类中的每一个类别继续分类,分类后,对于第i级分类的第j个类别得到 个分类;S1.3i加1,若i>l,则执行步骤S2,否则,返回执行步骤S1.2;其中,变量i表示分类的级数,变量ci表示第i级分类的类别数。
[0013] 优选地,i=1,且ci=1。
[0014] 优选地,步骤S2包括:S2.1从训练集中提取网络流统计特征构造初始训练特征集;S2.2根据网络流统计特征的l级分类,使用初始训练特征集训练多级决策树。
[0015] 优选地,训练集是一组包含需要识别协议流量的集合。
[0016] 优选地,步骤S2.2包括:S2.21根据第l级分类,将初始训练特征集划分成若干个第l级训练子集;S2.22利用划分得到的第l级训练子集训练第l级决策树集;S2.23将第l级训练子集输入第l级决策树集,每个决策树负责处理各自的类别中的统计特征,计算得到该类别每一个统计特征向量的protocol和errate;S2.24初始化计数变量k=1;S2.25若l>k,则根据第l-k级分类,将第l-k+1级决策树集处理结果划分成若干个第l-k级训练子集,否则,执行步骤S3;S2.26利用划分得到的第l-k级训练子集训练第l-k级决策树集;S2.27若l>k+1,则将第l-k级训练子集输入第l-k级决策树集,每个决策树负责处理各自的类别中的特征向量,计算得到该类别每一个特征向量的protocol和errate,否则,执行步骤S3;S2.28k加1,返回执行S2.25。
[0017] 优选地,在步骤S2.21中,每个子集包含第l级分类中一个类别的统计特征,以及该特征对应网络流所属的协议。
[0018] 优选地,在步骤S2.22中,每一个第l级训练子集训练一个第l级决策树,训练得到的决策树构成第l级决策树集。
[0019] 优选地,在步骤S2.23中,protocol是一个第l级决策树判定该类别的一个特征向量所属的协议;errate是该决策树判定该特征向量是protocol的错误率,由下式计算得到[0020]
[0021] 其中,Nprotocol是训练子集中属于protocol的特征向量,且被划分到一个叶子结点的个数, 是该叶子结点中所有种类的特征向量的个数。
[0022] 优选地,步骤S3包括:S3.1提取背景流量中一个网络流的统计特征;S3.2初始化计数变量k=1;S3.3根据第l级分类,将该网络流的统计特征进行分类,得到第l级统计特征向量子集;S3.4将第l级统计特征向量子集输入到第l级决策树集,若l>k,则计算每类的protocol和errate,否则,输出第l级决策树集的识别结果,并返回执行S3.1;S3.5根据第l-k级分类,将第l-k+1级识别结果进行分类,得到第l-k级特征向量子集;S3.6将第l-k级特征向量子集输入到第l-k级决策树集,若l>k+1,则计算每类的protocol和errate,否则,输出第l-k级决策树集的识别结果,并返回执行S3.1;S3.7k加1,返回执行S3.5。
[0023] (三)有益效果
[0024] 本发明的方法首先根据需要识别协议的特点,对大量网络流统计特征进行分类;然后利用分类知识以及统计特征自身的知识训练多级决策树;最后,在协议识别阶段,本方法对提取的网络流特征向量根据分类进行分级处理,最终获得协议识别结果。这种多级决策树识别方法不仅能够合理地利用统计特征中蕴含的知识,提升协议识别系统的性能,还能够有效应对日益增多的网络协议带来的挑战,特别是对日益流行的交互式协议识别具有较好的效果。本发明的方法可以为高速网络中高性能流量分类系统、内容监控系统的设计和实现提供技术支持。

附图说明

[0025] 下面参照附图并结合实例来进一步描述本发明。其中:
[0026] 图1为根据本发明实施例的基于多级决策树的协议识别方法的总流程图。
[0027] 图2为根据本发明实施例的基于多级决策树的协议识别方法的具体流程图。
[0028] 图3为根据本发明实施例的2级决策树的训练过程示意图。
[0029] 图4为根据本发明实施例的2级决策树的识别过程示意图。

具体实施方式

[0030] 下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
[0031] 针对目前的基于统计特征的协议识别方法无法合理地利用统计特征中蕴含知识的问题,以及难以应对越来越多的网络协议带来的挑战,本发明提出了一种基于多级决策树的协议识别方法。该方法首先根据需要识别协议的特点,对大量网络流统计特征进行分类;然后利用分类知识以及统计特征自身的知识训练多级决策树;最后,在协议识别阶段,本方法对提取的网络流特征向量根据分类进行分级处理,最终获得协议识别结果。该方法不仅能够合理地利用统计特征中蕴含的知识,提升协议识别系统的性能,还能够有效应对日益增多的网络协议带来的挑战,特别是对日益流行的交互式协议识别具有很好的效果。
[0032] 如图1所示,依照本发明一种实施方式的基于多级决策树的协议识别方法进行如下步骤,
[0033] S1.对网络流统计特征进行2级分类,其中网络流统计特征如表1所示;
[0034] 表1网络流统计特征
[0035]
[0036]
[0037] 其中,步骤S1进一步包括:
[0038] S1.1将未分类的网络流特征定为类别数为1的第1级分类;
[0039] S1.2将第1级分类中的每一个类别继续分类,得到三个2级分类,如表2所示;
[0040] 表2 2级分类
[0041]
[0042] S2.根据所提取的网络流统计特征自身的分类特点,训练2级决策树,如图2所示;
[0043] 其中,步骤S2进一步包括:
[0044] S2.1从训练集中提取网络流统计特征构造初始训练特征集;
[0045] 其中,在步骤S2.1中,训练集是一组包含需要识别协议流量的集合;
[0046] S2.2根据网络流统计特征的2级分类训练多级决策树;
[0047] 其中,步骤S2.2进一步包括:
[0048] S2.21根据第2级分类,将初始训练特征集划分成3个第2级训练子集;
[0049] 其中,在步骤S2.21中,
[0050] 每个子集包含第2级分类中一个类别的统计特征,以及该特征对应网络流所属的协议;
[0051] S2.22利用划分得到的第2级训练子集训练第2级决策树集;
[0052] 其中,在步骤S2.22中,每一个第l级训练子集训练一个第l级决策树,训练得到的决策树构成第l级决策树集;
[0053] S2.23将第2级训练子集输入第2级决策树集,每个决策树负责处理各自的类别中的统计特征,计算得到该类别每一个统计特征向量的protocol和errate;
[0054] 其中,在步骤S2.23中,protocol是一个第l级决策树判定该类别的一个特征向量所属的协议;errate是该决策树判定该特征向量是protocol的错误率,由下式计算得到[0055]
[0056] 其中,Nprotocol是训练子集中属于protocol的特征向量,且被划分到一个叶子结点的个数, 是该叶子结点中所有种类的特征向量的个数;
[0057] S2.24则根据第1级分类,将第2级决策树集处理结果划分成1个第1级训练子集,初始化计数变量k=1;
[0058] S2.25若l>k,则根据第l-k级分类,将第l-k+1级决策树集处理结果划分成若干个第l-k级训练子集,否则,执行步骤S3;
[0059] S2.26利用划分得到的第1级训练子集训练第1级决策树集;
[0060] S2.27若l>k+1,则将第l-k级训练子集输入第l-k级决策树集,每个决策树负责处理各自的类别中的特征向量,计算得到该类别每一个特征向量的protocol和errate,否则,执行步骤S3;
[0061] S2.28k加1,返回执行S2.25;
[0062] S3利用训练得到的2级决策树识别背景流量中的协议,如图3所示;
[0063] 其中,步骤S3中进一步包括:
[0064] S3.1提取背景流量中一个网络流的统计特征;
[0065] S3.2根据第2级分类,将该网络流的统计特征进行分类,得到第2级统计特征向量子集;
[0066] S3.3将第2级统计特征向量子集输入到第2级决策树集,并计算每类的protocol和errate;
[0067] S3.4根据第1级分类,将第2级识别结果进行分类,得到第1级特征向量子集;
[0068] S3.5将第1级特征向量子集输入到第1级决策树集,输出第1级决策树集的识别结果,并返回执行S3.1;
[0069] S3.6将第l-k级特征向量子集输入到第l-k级决策树集,若l>k+1,则计算每类的protocol和errate,否则,输出第l-k级决策树集的识别结果,并返回执行S3.1;
[0070] S3.7k加1,返回执行S3.5。
[0071] 本发明的描述是为了示例和描述起见而给出的,而并不是无遗漏的或者将本发明限于所公开的形式。很多修改和变化对于本领域的普通技术人员而言是显然的。选择和描述实施例是为了更好说明本发明的原理和实际应用,并且使本领域的普通技术人员能够理解本发明从而设计适于特定用途的带有各种修改的各种实施例。