一种基于网络流量的协议识别方法和系统的制作方法

文档序号:7779996阅读:219来源:国知局
一种基于网络流量的协议识别方法和系统的制作方法
【专利摘要】本发明提供了一种基于网络流量的协议识别方法,方法包括预先设置分类器,执行如下步骤:S1.从待识别的网络流中提取并存储其前3个网包的包长值;S2.将待识别网络流的前3个网包的包长值输入至分类器,得出待识别网络流的对象类型;S3.若待识别网络流的对象类型为大流量对象,则执行步骤S4,若待识别网络流的对象类型为小流量对象,则执行步骤S5;S4.对大流量对象的网络流,基于网包载荷进行细粒度的网络流量协议识别;S5.对小流量对象的网络流,基于端口进行粗粒度的网络流量协议识别。该方法提升了网络流量协议识别的吞吐率。
【专利说明】一种基于网络流量的协议识别方法和系统
【技术领域】
[0001]本发明涉及计算机网络【技术领域】,具体涉及一种基于网络流量的协议识别方法和系统。
【背景技术】
[0002]伴随着互联网的飞速发展,各种网络业务不断涌现,互联网在生产、生活中作用日益增强,我们所面临的信息安全问题也日益突出。网络流量协议的识别,一方面有助于网络服务提供商提供更好的数据传输服务,从而有效地保证主流互联网应用;另一方面,有利于更好的管理网络,保障网络的可靠和安全,解决与各种网络应用密切相关的问题。网络流量协议识别,亦称作应用层协议识别或网络流量分类,目的是标识出网络链路上传输的流量所使用的应用层协议类型。随着互联网带宽和业务需求的日益增长,对网络流量协议识别速率和识别准确率提出了更高的要求。
[0003]目前,网络流量协议的识别方法大都为基于网包载荷的细粒度识别方法,该方法深入网包载荷进行检查识别,因此可以有效的提供网络流量所属的协议信息。
[0004]然而由于其深入网包载荷进行检查,所需时间较长,在高速网络条件下,难以满足网络带宽的需求。

【发明内容】

[0005]针对现有技术的不足,本发明提供一种网络流量协议识别方法和系统,能够实现高吞吐率的网络流量协议识别。
[0006]为实现上述目的,本发明通过以下技术方案予以实现:
[0007]—种基于网络流量的协议识别方法,该方法包括预先设置分类器,执行如下步骤:
[0008]S1.从待识别的网络流中提取并存储其前3个网包的包长值;
[0009]S2.将待识别网络流的前3个网包的包长值输入至分类器,得出待识别网络流的对象类型;
[0010]S3.若待识别网络流的对象类型为大流量对象,则执行步骤S4,若待识别网络流的对象类型为小流量对象,则执行步骤S5 ;
[0011]S4.对大流量对象的网络流,基于网包载荷进行细粒度的网络流量协议识别;
[0012]S5.对小流量对象的网络流,基于端口进行粗粒度的网络流量协议识别。
[0013]其中,所述预先设置分类器包括:
[0014]选取预设条数的网络流,记录每条网络流的前3个网包的包长值和网络流字节长度;
[0015]根据每条网络流字节长度,绘制网络流的总字节长度相对于网络流数目的累积分布图,计算累积分布图中拐点附近的网络流长度的平均值,将该平均值设定为阈值;
[0016]根据阈值将网络流划分为大流量对象和小流量对象两种对象类型;[0017]将每条网络流的前3个网包的包长值和网络流的对象类型作为训练样本,利用训练样本训练支持向量机模型,得到分类器。
[0018]其中,所述支持向量机模型基于开源的LibSVM实现。
[0019]其中,所述步骤S4中基于网包载荷进行细粒度的网络流量协议识别为根据开源的OpenDPI网络协议库进行网络流量的协议识别。
[0020]其中,所述步骤S5中基于端口进行粗粒度的网络流量协议识别为根据InternetAssigned Numbers Authority规定的标准端口号进行网络流量的协议识别。
[0021]一种基于网络流量的协议识别系统,该系统包括:
[0022]分类器设置模块,用于预先设置分类器;
[0023]特征提取模块,用于从待识别的网络流中提取并存储其前3个网包的包长值;
[0024]分类模块,用于将待识别网络流的前3个网包的包长值输入至分类器,得出待识别网络流的对象类型;
[0025]调度模块,用于根据待识别网络流的对象类型,将待识别的网络流调度至相应的模块,具体为:若待识别网络流的对象类型为大流量对象,则将待识别的网络流调度至细粒度识别模块,若待识别网络流的对象类型为小流量对象,则将待识别的网络流调度至粗粒度识别模块;
[0026]细粒度识别模块,用于对大流量对象的网络流,基于网包载荷进行细粒度的网络流量协议识别;
[0027]粗粒度识别模块,用于对小流量对象的网络流,基于端口进行粗粒度的网络流量协议识别。
[0028]其中,所述分类器设置模块包括:
[0029]选取网络流子单元,用于选取预设条数的网络流,记录每条网络流的前3个网包的包长值和网络流字节长度;
[0030]绘制累积分布图子单元,用于根据每条网络流字节长度,绘制网络流的总字节长度相对于网络流数目的累积分布图;
[0031]阈值设定子单元,用于计算累积分布图中拐点附近的网络流长度的平均值,将该平均值设定为阈值;
[0032]网络流对象类型判断子单元,用于根据阈值将网络流划分为大流量对象和小流量对象两种对象类型;
[0033]设置训练样本子单元,用于将每条网络流的前3个网包的包长值和网络流的对象类型设置为训练样本;
[0034]训练子单元,用于利用训练样本训练支持向量机模型,得到分类器。
[0035]其中,所述分类器设置模块的训练子单元中所述的支持向量机模型基于开源的LibSVM 实现。
[0036]其中,所述细粒度识别模块中所述的基于网包载荷进行细粒度的网络流量协议识别为根据开源的OpenDPI网络协议库进行网络流量的协议识别。
[0037]其中,所述粗粒度识别模块中所述的基于端口进行粗粒度的网络流量协议识别为根据Internet Assigned Numbers Authority规定的标准端口号进行网络流量的协议识别。[0038]本发明具有如下的有益效果:
[0039]由于网络中小流量对象的网络流占整个网络流的很大一部分,而对于小流量对象的网络流利用基于网包载荷的协议识别比较浪费时间,因此本发明利用分类器对不同的网络流进行了分类,根据分类结果对大流量对象的网络流利用基于网包载荷进行细粒度的网络流量协议识别,对小流量对象的网络流利用基于端口进行粗粒度的网络流量协议识别,由于基于端口进行粗粒度的网络流量协议识别耗时较短,从而在保证识别精度基本不变的情况下,相比于对全部网络流利用基于网包载荷进行细粒度的网络流量协议识别,大幅度提升了识别的吞吐率,有效的应对了高网络带宽的需求。
【专利附图】

【附图说明】
[0040]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0041]图1是本发明实施例1中网络流量协议识别方法的流程图;
[0042]图2是本发明实施例2中网络流量协议识别方法的流程图;
[0043]图3是本发明实施例3中网络流量协议识别系统的结构示意图。
【具体实施方式】
[0044]为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0045]实施例1
[0046]本发明实施例提出了一种基于网络流量的协议识别方法,参见图1,该方法包括预先设置分类器,然后执行如下步骤:
[0047]步骤101:从待识别的网络流中提取并存储其前3个网包的包长值。
[0048]步骤102:将待识别网络流的前3个网包的包长值输入至分类器,得出待识别网络流的对象类型。
[0049]步骤103:判断待识别网络流的对象类型是否为大流量对象,若是则执行步骤104,否则,执行步骤105。
[0050]步骤104:对大流量对象的网络流,基于网包载荷进行细粒度的网络流量协议识别。
[0051]步骤105:对小流量对象的网络流,基于端口进行粗粒度的网络流量协议识别。
[0052]可见,在本发明实施例中,利用分类器对不同的网络流进行了分类,根据分类结果对大流量对象的网络流采用基于网包载荷进行细粒度的网络流量协议识别,对小流量对象的网络流采用识别速率较高的基于端口进行粗粒度的网络流量协议识别,从而在保证识别精度基本不变的情况下,相比于对全部网络流都基于网包载荷进行细粒度的网络流量协议识别,大幅度提升了识别的吞吐率,有效的应对了高网络带宽的需求。[0053]实施例2:
[0054]下面通过一个具体的例子,来更为详细的说明本发明的一个较佳实施例的实现过程。参见图2,该过程包括如下步骤:
[0055]步骤201:选取预设条数的网络流,记录每条网络流的前3个网包的包长值和网络流字节长度。
[0056]在本步骤中,随机选取预设条数的网络流,比如预设条数为1000条,其中这1000条网络流为不同网络类型和/或不同网络时段的网络流。
[0057]步骤202:根据每条网络流字节长度,绘制网络流的总字节长度相对于网络流数目的累积分布图。
[0058]在本步骤中,绘制网络流的总字节长度相对于网络流数目的累积分布图,比如预设条数为1000条,首先对这1000条网络流的字节长度按升序排列,绘制累积分布图时,横坐标表示按字节长度升序排序的全部预设网络流,纵坐标表示依次累加每条网络流字节长度的总字节长度值。
[0059]步骤203:计算累积分布图中拐点附近的网络流长度的平均值,将该平均值设定为阈值。
[0060]在本步骤中,拐点是指累积分布曲线上梯度变化率最大的点。计算阈值时,首先在网络流的升序排列中取拐点所对应网络流前后相邻的一部分网络流,对其字节长度值进行加权平均,然后将该平均值设定为阈值。
[0061]步骤204:根据设定的阈值判定每条网络流的对象类型。
[0062]在本步骤中,如果网络流的字节长度大于阈值,则网络流的对象类型为大流量对象;否则,网络流的对象类型为小流量对象。
[0063]步骤205:将每条网络流的前3个网包的包长值和网络流的对象类型设置为训练样本。
[0064]在本步骤中,将每条网络流的前3个网包的包长值设定为训练样本的特征,将网络流的对象类型设定为训练样本的标签,全部的训练样本用于步骤206中的分类器训练。
[0065]步骤206:利用训练样本训练支持向量机模型,得到分类器。
[0066]在本步骤中,所述支持向量机模型基于开源的LibSVM实现,根据步骤205得到的训练样本,训练支持向量机模型,采用LibSVM的参数寻优功能,得到具有较高识别准确率的分类器。
[0067]步骤207:从待识别的网络流中提取并存储其前3个网包的包长值。
[0068]在本步骤中,对于待识别的网络流,从其中提取它的前3个网包的包长值,并将之存储。
[0069]步骤208:将待识别网络流的前3个网包的包长值输入至分类器,得出待识别网络流的对象类型。
[0070]在本步骤中,将步骤207中存储的待识别网络流的前3个网包的包长值输入到步骤206得到的分类器中,分类器将输出待识别网络流的对象类型:大流量对象或小流量对象。
[0071]步骤209:判断待识别网络流的对象类型是否为大流量对象,若是则执行步骤210,否则,执行步骤211。[0072]步骤210:对大流量对象的网络流,基于网包载荷进行细粒度的网络流量协议识别。
[0073]在本步骤中,所述基于网包载荷进行细粒度的网络流量协议识别为根据开源的OpenDPI网络协议库进行网络流量的协议识别
[0074]步骤211:对小流量对象的网络流,基于端口进行粗粒度的网络流量协议识别。
[0075]在本步骤中,所述基于端口进行粗粒度的网络流量协议识别为根据IANA(Internet Assigned Numbers Authority)规定的标准端口号进行网络流量的协议识别,例如IANA规定目的端口号为80的网络流属于HTTP协议流量。
[0076]可见,在本发明实施例中,首先利用随机选取一定数量的网络流,利用这些随机选取的网络流字节长度绘制累积分布图,从累积分布图中确定网络流字节长度的阈值,然后利用阈值对随机选取的网络流进行对象类型划分,将不同的网络流划分为大流量对象和小流量对象。将每条网络流的前3个网包的包长值和每条网络流的对象类型作为训练样本,利用训练样本训练支持向量机模型,然后得到分类器。
[0077]本发明中利用得到的分类器对不同的网络流进行了分类,根据分类结果对大流量对象的网络流利用基于网包载荷进行细粒度的网络流量协议识别,对小流量对象的网络流利用基于端口进行粗粒度的网络流量协议识别,从而在保证识别精度基本不变的情况下,相比于对全部网络流都利用基于网包载荷进行细粒度的网络流量协议识别,大幅度提升了识别的吞吐率,有效的应对了高网络带宽的需求。
[0078]实施例3
[0079]本发明实施例提出了一种基于网络流量的协议识别系统,参见图3,该系统包括:
[0080]分类器设置模块301,用于预先设置分类器;
[0081]特征提取模块302,用于从待识别的网络流中提取并存储其前3个网包的包长值;
[0082]分类模块303,用于将待识别网络流的前3个网包的包长值输入至分类器,得出待识别网络流的对象类型;
[0083]调度模块304,用于根据待识别网络流的对象类型,将待识别的网络流调度至相应的模块,具体为:若待识别网络流的对象类型为大流量对象,则将待识别的网络流调度至细粒度识别模块,若待识别网络流的对象类型为小流量对象,则将待识别的网络流调度至粗粒度识别模块;
[0084]细粒度识别模块305,用于对大流量对象的网络流,基于网包载荷进行细粒度的网络流量协议识别;
[0085]粗粒度识别模块306,用于对小流量对象的网络流,基于端口进行粗粒度的网络流量协议识别。
[0086]所述分类器设置模块301包括:
[0087]选取网络流子单元3010,用于选取预设条数的网络流,记录每条网络流的前3个网包的包长值和网络流字节长度;
[0088]绘制累积分布图子单元3011,用于根据每条网络流字节长度,绘制网络流的总字节长度相对于网络流数目的累积分布图;
[0089]阈值设定子单元3012,用于计算累积分布图中拐点附近的网络流长度的平均值,将该平均值设定为阈值;[0090]网络流对象类型判断子单元3013,用于根据阈值将网络流划分为大流量对象和小流量对象两种对象类型;
[0091]设置训练样本子单元3014,用于将每条网络流的前3个网包的包长值和网络流的对象类型设置为训练样本;
[0092]训练子单元3015,用于利用训练样本训练支持向量机模型,得到分类器。
[0093]其中,所述分类器设置模块的训练子单元中所述的支持向量机模型基于开源的LibSVM 实现。
[0094]其中,所述细粒度识别模块中所述的基于网包载荷进行细粒度的网络流量协议识别为根据开源的OpenDPI网络协议库进行网络流量的协议识别。
[0095]其中,所述粗粒度识别模块中所述的基于端口进行粗粒度的网络流量协议识别为根据Internet Assigned Numbers Authority规定的标准端口号进行网络流量的协议识别。
[0096]由于网络中小流量对象的网络流占整个网络流的很大一部分,而对于小流量对象的网络流利用基于网包载荷的协议识别方法比较浪费时间且效果一般,因此本发明中利用分类器对不同的网络流进行了分类,根据分类结果对大流量对象的网络流利用基于网包载荷进行细粒度的网络流量协议识别,对小流量对象的网络流利用基于端口进行粗粒度的网络流量协议识别,从而在保证识别精度基本不变的情况下,相比于对全部网络流都基于网包载荷进行细粒度的网络流量协议识别,大幅度提升了识别的吞吐率,有效的应对了高网络带宽的需求
[0097]以上实施例仅用于说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
【权利要求】
1.一种基于网络流量的协议识别方法,其特征在于,该方法包括预先设置分类器,执行如下步骤: 51.从待识别的网络流中提取并存储其前3个网包的包长值; 52.将待识别网络流的前3个网包的包长值输入至分类器,得出待识别网络流的对象类型; 53.若待识别网络流的对象类型为大流量对象,则执行步骤S4,若待识别网络流的对象类型为小流量对象,则执行步骤S5 ; 54.对大流量对象的网络流,基于网包载荷进行细粒度的网络流量协议识别; 55.对小流量对象的网络流,基于端口进行粗粒度的网络流量协议识别。
2.根据权利要求1所述的方法,其特征在于,所述预先设置分类器包括: 选取预设条数的网络流,记录每条网络流的前3个网包的包长值和网络流字节长度; 根据每条网络流字节长度,绘制网络流的总字节长度相对于网络流数目的累积分布图,计算累积分布图中拐点附近的网络流长度的平均值,将该平均值设定为阈值; 根据阈值将网络流划分为大流量对象和小流量对象两种对象类型; 将每条网络流的前3个网包的包长值和网络流的对象类型作为训练样本,利用训练样本训练支持向量机模型,得到分类器。
3.根据权利要求2所述`的方法,其特征在于,所述支持向量机模型基于开源的LibSVM实现。
4.根据权利要求1所述的方法,其特征在于,所述步骤S4中基于网包载荷进行细粒度的网络流量协议识别为根据开源的OpenDPI网络协议库进行网络流量的协议识别。
5.根据权利要求1所述的方法,其特征在于,所述步骤S5中基于端口进行粗粒度的网络流量协议识别为根据Internet Assigned Numbers Authority规定的标准端口号进行网络流量的协议识别。
6.一种基于网络流量的协议识别系统,其特征在于,该系统包括: 分类器设置模块,用于预先设置分类器; 特征提取模块,用于从待识别的网络流中提取并存储其前3个网包的包长值; 分类模块,用于将待识别网络流的前3个网包的包长值输入至分类器,得出待识别网络流的对象类型; 调度模块,用于根据待识别网络流的对象类型,将待识别的网络流调度至相应的模块,具体为:若待识别网络流的对象类型为大流量对象,则将待识别的网络流调度至细粒度识别模块,若待识别网络流的对象类型为小流量对象,则将待识别的网络流调度至粗粒度识别丰旲块; 细粒度识别模块,用于对大流量对象的网络流,基于网包载荷进行细粒度的网络流量协议识别; 粗粒度识别模块,用于对小流量对象的网络流,基于端口进行粗粒度的网络流量协议识别。
7.根据权利要求6所述的系统,其特征在于,所述分类器设置模块包括: 选取网络流子单元,用于选取预设条数的网络流,记录每条网络流的前3个网包的包长值和网络流字节长度;绘制累积分布图子单元,用于根据每条网络流字节长度,绘制网络流的总字节长度相对于网络流数目的累积分布图; 阈值设定子单元,用于计算累积分布图中拐点附近的网络流长度的平均值,将该平均值设定为阈值; 网络流对象类型判断子单元,用于根据阈值将网络流划分为大流量对象和小流量对象两种对象类型; 设置训练样本子单元,用于将每条网络流的前3个网包的包长值和网络流的对象类型设置为训练样本; 训练子单元,用于利用训练样本训练支持向量机模型,得到分类器。
8.根据权利要求7所述的系统,其特征在于,所述分类器设置模块的训练子单元中所述的支持向量机模型基于开源的LibSVM实现。
9.根据权利要求6所述的系统,其特征在于,所述细粒度识别模块中所述的基于网包载荷进行细粒度的网络流量协议识别为根据开源的OpenDPI网络协议库进行网络流量的协议识别。
10.根据权利要求6所述的系统,其特征在于,所述粗粒度识别模块中所述的基于端口进行粗粒度的网络流量协议识别为根据Internet Assigned Numbers Authority规定的标准端口号进行网络流量的协议 识别。
【文档编号】H04L29/06GK103731416SQ201310676369
【公开日】2014年4月16日 申请日期:2013年12月11日 优先权日:2013年12月11日
【发明者】薛一波, 邵熠阳 申请人:清华大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1