一种基于机器学习加速的网络流量分类方法与流程

文档序号:18822631发布日期:2019-10-09 01:02阅读:285来源:国知局
一种基于机器学习加速的网络流量分类方法与流程

本发明属于网络安全技术领域,尤其涉及一种基于机器学习加速的网络流量分类方法。



背景技术:

目前,最接近的现有技术:随着网络规模和密度的增加,协议变得更加多样化,相关的流量分类分析的工作愈加重要。识别通信流量是互联网中非常重要的问题。主流方法主要基于端口,主机行为连接,深度包检测和机器学习。但前两种方法无法适应当前的网络环境,因为许多应用程序越来越多地使用不可预测或随机的端口号,而主机之间的网络连接行为受复杂网络环境的影响非常大。因此,常用的流量分析和分类方法是深度包检测技术和机器学习方法。

现有技术一基于机器学习的网络流量协议识别方法:近年来,对机器学习的研究非常热门,许多研究人员将其引入流量分类问题并取得了很大的研究进展。基于机器学习的分类方法一般是使用监督机器学习算法,如贝叶斯网络,决策树或其他算法。这些算法首先使用已知为训练数据的网络流量来查找流的特征。当模型经过良好的训练以测试新流程时,算法将获得流程的特征,并将其与在训练阶段学习的特征进行比较,以确定它属于哪个协议。同时,无监督学习的兴起也促进了聚类算法在分类中的应用,如k-means,dbscan等方法。与分类技术相反的是使用预定义的训练实例聚类,聚类方法通过自我学习发现在没有指导的情况下发现数据集中的自然分组。一般来说,机器学习方法运行得足够快,但它需要通过对数据的训练来学习和生成分类方法。为使分类方法尽可能准确,使用者需要源源不断地提供大量、准确的数据来给机器学习算法使用,而不同参数的设置也对算法最终的识别结果产生巨大的影响,每次调整参数都将重新学习,这花费了大量的时间。因此,机器学习方法过分依赖于数据集和训练时间。除非有经验丰富的专家来调整模型,否则准确性相对较低。

现有技术二基于深度包检测的网络流量协议识别方法:深度包检测技术是目前有效地检查数据包有效载荷的基本工具。相比较与机器学习方法,深度包检测技术在实际使用中实现了高准确率。但由于其特征匹配过程大部分是由正则表达式完成,对于数据包的载荷进行字符级别的匹配,传统的字符串匹配算法根本无法降低运算复杂度,使得算法进行了大量的比较操作,因此它消耗了极多的计算资源,同时运行速度相对较慢。在网络速度较高的现实场景下,无法满足快速的识别要求。针对这一问题,研究人员提出了许多改进方法,其中大部分都侧重于改进深度包检测的匹配算法。

现有技术三是结合机器学习和深度包检测的网络流量协议识别方法:首先选择机器学习方法进行分类,然后使用深度包检测方法来评估效果。最终结果由两个方法分类器共同决定。因此,该种分类方法结合了两种主流方案,准确性有所提高,但重复分类会给控制器带来更多的计算负担(双重分类和结果比较),严重降低了系统的性能,不适合在实际中使用。

综上所述,现有技术存在的问题是:现有的深度包检测方法存在速度慢、匹配繁琐;机器学习方法的模型存在要求高、准确度不稳定;机器学习和深度包检测的方法带来的性能开销较大,使用场景匮乏。

解决上述技术问题的难度:在保证识别精度的前提下,减少识别时间,实现在高速网络环境下的协议识别非常困难。同时对于计算消耗和时间消耗的降低也是亟待解决的问题。特别是在网络通讯进入大数据时代的今天,实时地监控各类通讯数据在大数据流量中的传输以及对恶意流量的检测都是确保网络安全的重要难题。深度包检测技术识别精确解析力强,但是自我更新和进步能力有限;机器学习技术识别网络协议速度快,可以一定程度的自我进步,但是算法要求高、精度无法保证;二者结合的共同识别方法兼顾时间与精度却浪费大量计算资源且效果和应用场景有限。现如今主流的方法都存在这些问题,亟待解决。

解决上述技术问题的意义:降低识别网络流量协议的时间与消耗,同时保证较高准确度。具体来说,采用机器学习的方法来帮助深度包检测进行快速识别,可以有效降低时间消耗,而对于机器学习方法解决不了的协议,可以采取深度包检测技术进行补充;这样既可以保留机器学习方法的优秀的时间表现,又可以用深度包检测技术弥补精度,同时可以避免采用两种方法结合的识别方法的冗余比较。本发明方法在三种主流的方案之外,给出了一个可以在高速网络环境下进行较准确协议识别的方法。



技术实现要素:

针对现有技术存在的问题,本发明提供了一种基于机器学习加速的网络流量分类方法。

本发明是这样实现的,一种基于机器学习加速的网络流量分类方法,所述基于机器学习加速的网络流量分类方法利用网络流数据的特征向量,将待识别网络流数据的特征作为监督学习的输入;训练网络流量协议识别模型,从中提取的协议匹配规则实现网络流量协议识别功能;同时深度包检测方法作为识别的补充,兼顾识别的速度与准确度。

进一步,所述基于机器学习加速的网络流量分类方法具体包括:

第一步,收集网络流量,定义网络流。流的定义方法为:首先找到五元组(源ip、源端口、目的ip、目的端口和协议)相同的数据包,然后按时间顺序遍历数据包,找到其中的[syn]包、[syn,ack]包和[ack]包,进行tcp三次握手的匹配,匹配成功即为找到一个流的开端。找到下一次三次握手或者找到四次握手标志包[fin,ack]包即为一个流的结束;

第二步,提取网络流特征;流特征即为从流中提取的统计数值;对于每个流,对流中的数据包大小、数据包载荷大小和数据包到达时间的时间间隔进行统计数值的提取。分别提取流中数据包大小、载荷大小和数据包到达时间间隔的流特征。这些特征又被分为传入和传出方向的两个向量;并且对于每个向量计算以下值:最小值,最大值,平均值,方差和元素数量;

第三步,构建待识别网络流量协议样本;给每一种待识别网络流量协议分配一个标签,在提取到的流量进行流划分之后,给划分的流也分配其所属协议的标签,这构成了协议样本;之后构建训练集;将构建完成的网络流量协议样本和提取到的网络流特征结合,每一个流形成流+流特征+标签的形式,将标签和流特征的特征向量一一对应,构成训练集;

第四步,确定当前环境最优的监督学习算法,将训练集输入几种常见的监督学习模型中进行训练;根据各种监督学习模型在当前实际环境中的分类效果和所用时间进行横向比较,确定出最优的监督学习算法;

第五步,根据模型测试结果确定模型参数;确定一个监督学习算法之后,对该算法的内部参数进行确定,具体方法如下:每次使用算法训练使用一个目标参数的值,进行多次实验,接着遍历一个区间内这个参数所有可能取到的值,然后记录每次的训练结果。对结果进行分析,找到保证高精确度情况下用时最少的一次训练,即确定该次实验使用的参数为模型参数;

第六步,利用确定好参数的算法对训练集进行训练,训练完成的分类模型生成分类器;

第七步,从分类器中提取匹配规则;训练完成的分类器中内含了一套完整的分类规则,符合匹配的功能需求,将其作为完整的匹配规则提取出来加载进入系统;

第八步,在实用环境中加载匹配规则,并设置时间阈值;在实用环境中加载匹配规则,为保证整体的识别时间最少,若某条匹配规则匹配时间超过之前设置阈值,系统则使用原生方法进行替换;

第九步,系统对待识别网络流量进行匹配分类;对于待识别的网络流量进行采集和特征向量的提取;将特征向量输入到匹配规则中,根据其特征向量在规则中的表现来确定协议所属类别,输出分类结果;

第十步,根据输出的分类结果,将待检测的样本流指引到相应的协议解析器,完成快速解析;

第十一步,分类过程中超过时间阈值或者分类错误的样本输入到深度包模块进行检测。

进一步,所述第一步中网络流由一个完整tcp会话中包含的数据包组成;在一个流中,所有数据包将来自或前往相同的目标ip地址和端口。

进一步,所述第二步中流特征为持续时间,数据包数量,数据包大小、载荷大小及数据包的时间间隔;任意长度的流被转换为长度为56的特征向量组。

本发明的另一目的在于提供一种应用所述基于机器学习加速的网络流量分类方法的信息数据处理终端。

综上所述,本发明的优点及积极效果为:本发明利用机器学习自动生成快速特征匹配规则,同时特定的分析过程采用了深度包检测技术来完成。本发明通过减少传统深度包检测方案中多次盲目匹配,解决了其造成的性能损失问题,提高了网络流量分类系统在实际使用中的检测效率和系统的吞吐量。同时本发明提出的改进方案具有非常高的兼容性,支持目前所有新型的深度包检测匹配改进算法及硬件实现方案,具有很强的实践价值和意义。

本发明只需要一定数量的网络流量协议数据,可以通过机器学习算法进行监督训练生成分类模型,得到快速特征匹配规则,无需手动选取特征与生成规则。本发明的方法兼顾了效率与准确性,保证了极高的准确度的同时,大大减少了原生深度包检测中存在的盲目无用匹配次数,显著降低了使用深度包检测方法的匹配时间。而深度包检测的方法也提高了方案的鲁棒性,解决了匹配规则不适用的特殊情况。该方法还具备学习和扩展能力,随着硬件条件的提升,快速特征匹配规则可以更加准确和具体;也可以应用于识别新出现的未知协议,和其他新型网络的通信协议。其余深度包检测匹配改进算法和硬件实现方案也都可以兼容到本发明的方法中。最后本发明极大地提高了网络流量分类方法的速度和匹配效率,增加了网络流量分类系统的吞吐量。

附图说明

图1是本发明实施例提供的基于机器学习加速的网络流量分类方法流程图。

图2是本发明实施例提供的基于机器学习加速的网络流量分类方法的架构图。

图3是本发明实施例提供的smtp协议快速匹配的示意图。

图4是本发明实施例提供的本发明方法与传统深度包检测方法的流程对比图。

图5是本发明实施例提供的与目前原生深度包检测的解析器调用次数对比图。

图6是本发明实施例提供的与目前原生深度包检测的检测总时间对比图。

图7是本发明实施例提供的与目前原生深度包检测的系统吞吐量对比图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

针对现有的深度包检测方法存在速度慢、匹配繁琐;机器学习方法的模型存在要求高、准确度不稳定;机器学习和深度包检测二者结合的方法性能开销较大,使用场景匮乏的问题,本发明在调研了现有的解决方案后,提出了一种新的网络流量分类方法。与完全依靠机器学习或深度包检测等方法进行流量分类相比,本发明在保持与原生深度包检测方法相同的精度的同时,利用机器学习的方法降低了深度包检测的无用匹配次数,即在调用解析器进行相同匹配次数的时候可以对更多的流量进行分类和解析,大幅度提高了深度包检测的识别速度和吞吐量,同时避免了机器学习方案中存在的上述多种问题。

下面结合附图对本发明的应用原理作详细的描述。

如图1所示,本发明实施例提供的基于机器学习加速的网络流量分类方法包括以下步骤:

s101:收集网络流量,定义网络流;流由一个完整tcp会话中包含的数据包组成;在一个流中,所有数据包将来自或前往相同的目标ip地址和端口;

s102:提取网络流特征;流特征即为从流中提取的统计数值,如持续时间,数据包数量,数据包大小、载荷大小及数据包的时间间隔等;对于每个流,这些特征被分为传入和传出方向的向量;并且对于每个向量计算以下值:最小值,最大值,平均值,方差和元素数量。任意长度的流被转换为长度为56的特征向量组;

s103:根据待识别网络流量协议样本构建训练集;给每一种待识别网络流量协议分配一个标签,并给予该协议中每一个流相同的标签,同时提取流的特征向量,将标签和特征向量一一对应,存入训练集中;

s104:确定当前环境最优的监督学习算法,将训练集输入几种常见的监督学习模型中进行训练。根据各种监督学习模型在当前实际环境中的分类效果和所用时间进行横向比较,确定出最优的监督学习算法;

s105:根据模型测试结果确定模型参数;

s106:利用训练完成的分类模型生成分类器;

s107:从分类器中提取匹配规则;

s108:加载匹配规则,设置时间阈值;超过设置阈值的匹配规则将会被原生方案所替换,保证了整体识别耗时的最短;

s109:系统对待识别网络流量协议进行匹配分类,根据协议在规则中的表现来确定协议所属类别,输出分类结果;

s110:根据输出的分类结果,将带检测的样本流指引到相应的协议解析器,完成快速解析;

s111:分类超时或者分类错误的样本输入到深度包模块进行检测。

在本发明的优选实施例中,步骤s105中随机森林的分类精度在模型参数的选择中并不是最重要的。精度要求越高,最终分类越准确,匹配错误或不匹配的尝试越少。但它也带来了计算复杂性和时间开销同时更大的问题。本发明的目标是从分类器中完善规则以满足的需求,最大限度地减少时间消耗,实现准确性和性能之间的平衡。

下面结合实验对本发明的应用效果作详细的描述。

1、实验准备

使用apachespark,用于大规模数据的开源计算平台;使用spark的开源分布式机器学习库mllib来提供有效的功能,包括统计特性,模型优化和随机森林算法。相应地,apachehbase做为最流行的云存储方案实现了对大数据的随机和实时读写访问。还在应用中选择ndpi作为深度包检测的解析器。选取一个待识别的网络流量数据集,其中包含462677729个流,以及111种不同的协议。

2、实验过程

依照本发明的方案步骤,实验实施过程如下:

系统准备阶段;

1、准备流量训练样本,生成流。

2、提取每一个流的特征向量,并对每一个流打标,生成训练集。

3、将训练集作为输入,导入随机森林模型中,对构建的训练集分类。

随机森林是一种使用多个决策树来区分和分类数据的监督学习算法。具体而言,随机森林是由许多决策树以随机方式组成的森林。在分类过程中,当新输入样本进入时,森林中的每个决策树被单独地要求判断并选择样本应属于哪个类别,然后最多选择的类别是最终分类结果。这种方式依次减少偏差并且能够更好地处理噪声,因此它是一种集成学习方法。在森林中,每个决策树实际上是一种用超平面划分空间的方法。每次将当前空间分成两部分。并且每个决策树之间没有相关性。此外,随机森林还可以为每个变量赋予重要性分数(在此模型中使用基尼系数)并评估每个变量在分类中的作用,同时对数据进行分类。

4、进行参数的确定。

在该实例中,选择随机森林中树的数目为300和树最大深度为9作为该实例中的最佳值,这确保花费的时间是最小的。

5、提取快速特征匹配规则。

随机森林生成的规则可以通过序列化永久保存,即使更改了使用方案,也可以在下次使用时直接加载它们而无需重新训练,这具有很高的可移植性。

识别解析阶段:

6、加载快速特征匹配规则。

7、系统准备就绪后,本方法从流量缓存或者消息队列中等待足够的待识别的网络数据流量,将之建立为输入流。

8、输入的流进行特征提取,转化为设定长度的特征向量组,来进行后续的操作。

9、本发明的方法使用快速特征匹配规则来对输入流进行匹配,根据不同的匹配结果,框架按照规则的指令不同地处理分组。

10、当输入流与任何规则都不匹配或规则处理时间超过所设置的阈值时,将使用ndpi的深度包检测方法直接处理此类流量。

ndpi是最常用的开源深度包检测系统。用于会话内容的分析,并且引入了对许多加密的支持。ndpi适用于流量监控,并且也实现了非常高的准确性。

下面结合对比对本发明的应用效果作详细的描述。

1、实例对比:

本发明以smtp协议为例,给出了网络流量分类系统对smtp协议进行分类的过程。本发明识别smtp协议的过程如图3所示。

同时本发明方法与传统深度包检测方法的对比图示,如图4。该过程对比中,采取深度包检测方法识别smtp协议常会产生100多次匹配过程。使用本发明的方法经过5次判断后即可准确识别smtp协议。

2、整体对比:

本发明的方法在spark和hbase搭建的分布式平台上进行了对于网络流量分类的整体测试,测试的网络流量数据集共包含462677729个流。

结果显示相比较与深度包检测的方法,该方法调用解析器次数为原ndpi方法调用解析器次数的6.43%,系统的单位吞度量增加了21.31%,总耗时仅为ndpi方法的40.77%。这证明本发明中提出的方法大大减少了协议识别的时间,提高了吞吐量,对于实时流量分析有较好的实用性。

对于上述优点和提升,可以结合对比图来证明。如图5所示,本实例识别网络协议所调用的解析器次数相较于深度包检测的方法大幅下降,而且随着协议种类的增多,这个优势更加明显,在本实例中,识别111种协议的调用解析器次数仅为原深度包检测方案的6.43%。如图6所示,本实例识别网络协议需要的时间与源深度包检测相比也有很大的优势,同样的,随着本方法支持的识别协议的种类增多,方案总共需要的时间也越少。在本实例中,识别111中网络协议用时为深度包检测方法的40.77%。如图7所示,本实例中,本方案在实用环境的系统吞吐量方面相较于原深得宝检测方法也有较大提高。在支持识别111中网络协议的情况下,系统的单位吞吐量增加了21.31%。随着后续系统支持的协议种类数目的增加,本发明提出方案的优势也会进一步增加。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1