因为最近在做流量分类有关的工作,所以将整个工作思路整理下来,希望对以后进一步的学习和论文写作有所帮助。
这一篇主要整理一下最近有关流量分类的论文,介绍他们的设计方法,以及创新点。
这一篇是把机器学习方法应用到流量分类的鼻祖,后面的很多文章提出的方法都是受到了这篇的启发。但是本文没有就细节问题进行说明,只是提出要将深度学习应用到流量识别,并直接给出优于经典方法的实验结果。
文章认为流的byte可以看做是图片中的像素,因此可以使用在图像识别表现非常好的深度学习方法进行流量分类。这是整篇文章的基础。
将流量分类任务分为两个工作部分:第一是特征的选取,第二是基于特征标签的分类
我们可以看到相比于传统的机器学习流量分类任务,文章的方法不需要进行人工进行特征的选择,大大节省了工作量。
文章没有对实验的细节进行介绍。实际上我感觉只要从这篇文章中了解他的基本思想就可以了,后面一些文章借鉴此文的思想启发也做了很多工作,我们可以从后面的实验中体会。
这边文章与**是同样的作者写的两篇文章,内容方向也一致,具有连续性,读者可以联系起来看。
文章在创新点、数据集、数据处理工具、模型选取方面都有值得借鉴参考的地方,下面会介绍。
首先,对流量分类的处理不同于先前的方法,使用端到端的方法,就是只关注输入和输出,将中间处理环节交给模型自动处理,免去了特征抽取等工作。具体可以看下图:
参考文献【10】中给出了数据集(ISCX VPN-nonVPN traffic dataset)数据集网址
这是其中的分类:
为了处理从数据集中拿到的流量数据,作者还开发了专门的数据处理工具USTC-TL2016,在实验预处理环节对数据进行处理,包括:traffic split, traffic clean, image generation, IDX conversion. 需要注意的是,预处理环节最终形成的IDX3文件是由raw traffic的byte的组成的,并不只是流的特征或是包的特征,这也是这篇文章的方法不同于传统方法的地方:输入模型的数据是流量原始数据,而不是人工抽取的特征,可以节省人工工足量。
具体的数据处理过程,首先是如何表示一条流量,从协议角度来说,可以选取部分某几层的数据,一般有两种分法:只选取应用层的数据(TCP/IP的第四层,OSI的第七层),选取全部数据。这样选的依据是应用层会包含大部分流量的信息,另外底层的信息也会对流量的分类起到一定作用。再者一般会将流量依据方向分为两种session和flow,具体来说,session是基于五元组(一般包括源IP,目的IP,源端口,目的端口,传输层协议)进行分类,而flow与session非常相似,唯一不同是只能是一个流向。
所以根据上面两类分类方法,组合会产生4中流的表示方式,会在下面的图表展示。
另外还有一点,因为每条流流的长度不一致,而CNN模型的输入要求必须大小一致,因此需要对数据长度做统一化,文章使用了每条数据流的前784个byte。但没有解释原因。
在预处理环节的image conversion , 对数据进行了可视化,结果如下图,可以看同一种数据流有相似的图片表示,所以才想使用CNN会用良好的表现。但是具体的可视化技术没有介绍。
文章使用的是1D-CNN,因为参考先前的文章说1D适用于文本语言处理,2D适用于图片,3D则是语音视频。实验对比了1D和2D的效果,显示1D会好一点。下面是1d-CNN的具体参数设计:
实验进行了4中对比实验,包括VPN和NonVPN的二分类,VPN和NonVPN各自的6分类,总体的12分类
①session表现优于flow
②all layer 优于 只有应用层
③1D-CNN 优于 2D-CNN
所以对于这篇文章,我们可以学习他的数据处理的方法,包括对数据进行清洗。可视化甚至是借用自己开发的处理工具,还有流 的表示方法,选用session+all layer的形式,因为毕竟在做人工的特征抽取逐渐成为过去式了,所以如何表示流也是流量分类也是一个很重要的环节。再就是对于模型,我们可以借鉴1D-CNN的形式,基于上面表格给出的具体参数。
这篇文章与上一篇是同作者写的,基本上是面对相同的问题采用了差别不大的方法。主要差别在这篇文章使用了新的数据集,将流量视为图片输入神经网络进行学习,也就是paper2里提到的2D-CNN。在数据处理、数据表示方面与上一篇文章没有区别,也就不做赘述。
在数据表示方面,这篇文章较为详细的描述了数据包数据流的拆分组装,上一篇文章中没有做介绍,所以在这里写一下:
可以看到,一个session或者flow是这样被组装的:首先将包根据五元组进行分类,相同类别的包按照时间顺序排列,这样就形成了一条由x,b,d,t确定的flow或者session,整个的traffic就是由很多这样的flow或者session组成的。
另外,在模型参数方面,文章也给出了较为详细的描述:
paper2和paper3两篇文章要结合着看,细节上能相互补充。