流量分类方法设计(一)——参考论文整理

流量分类方法设计(一)——参考论文整理

因为最近在做流量分类有关的工作,所以将整个工作思路整理下来,希望对以后进一步的学习和论文写作有所帮助。
这一篇主要整理一下最近有关流量分类的论文,介绍他们的设计方法,以及创新点。

传统流量分类方法
  1. 早期的分类方法其一是基于端口,比如HTTP协议使用80端口,SSL使用443端口,这样基于数据包中端口号就能对协议进行区分。但是随着网络中数据复杂度增加,很多协议不在遵守这种规则,还有的数据会故意进行伪装,比如伪装成80端口的HTTP协议,这些原因导致基于端口的分类方法不再可靠。
  2. 应用中的某些signature(标识)是唯一对应应用的,因此可以利用这些进行区分,理论上的错误率低于10%。这种方法并不复杂效率也很高。但是一旦有写的协议产生或者已有协议发生变化,这种方法就需要重新调整signature,这是很消耗人力和时间的。
  3. 还有比较新的使用机器学习的方法。这些方法可以自动对流量进行分类,但是需要人工进行特征的提取,就是监督学习,需要人力打标签,这些标签比如数据包的时间间隔、大小等等,用决策树、神经网络等进行分类。显而易见,特征的提取也是无法绕过的人工工作量。
Paper.1
The Application of Deep Learning on Traffic Identification

这一篇是把机器学习方法应用到流量分类的鼻祖,后面的很多文章提出的方法都是受到了这篇的启发。但是本文没有就细节问题进行说明,只是提出要将深度学习应用到流量识别,并直接给出优于经典方法的实验结果。

文章认为流的byte可以看做是图片中的像素,因此可以使用在图像识别表现非常好的深度学习方法进行流量分类。这是整篇文章的基础。

将流量分类任务分为两个工作部分:第一是特征的选取,第二是基于特征标签的分类

我们可以看到相比于传统的机器学习流量分类任务,文章的方法不需要进行人工进行特征的选择,大大节省了工作量。

文章没有对实验的细节进行介绍。实际上我感觉只要从这篇文章中了解他的基本思想就可以了,后面一些文章借鉴此文的思想启发也做了很多工作,我们可以从后面的实验中体会。

Paper.2
End-to-end Encrypted Traffic Classification with One-dimensional Convolutional Neural Networks

这边文章与**是同样的作者写的两篇文章,内容方向也一致,具有连续性,读者可以联系起来看。
文章在创新点、数据集、数据处理工具、模型选取方面都有值得借鉴参考的地方,下面会介绍。
首先,对流量分类的处理不同于先前的方法,使用端到端的方法,就是只关注输入和输出,将中间处理环节交给模型自动处理,免去了特征抽取等工作。具体可以看下图:
这里写图片描述

1.数据集

参考文献【10】中给出了数据集(ISCX VPN-nonVPN traffic dataset)数据集网址
这是其中的分类:
这里写图片描述

2.框架

为了处理从数据集中拿到的流量数据,作者还开发了专门的数据处理工具USTC-TL2016,在实验预处理环节对数据进行处理,包括:traffic split, traffic clean, image generation, IDX conversion. 需要注意的是,预处理环节最终形成的IDX3文件是由raw traffic的byte的组成的,并不只是流的特征或是包的特征,这也是这篇文章的方法不同于传统方法的地方:输入模型的数据是流量原始数据,而不是人工抽取的特征,可以节省人工工足量。
这里写图片描述

3.数据处理

具体的数据处理过程,首先是如何表示一条流量,从协议角度来说,可以选取部分某几层的数据,一般有两种分法:只选取应用层的数据(TCP/IP的第四层,OSI的第七层),选取全部数据。这样选的依据是应用层会包含大部分流量的信息,另外底层的信息也会对流量的分类起到一定作用。再者一般会将流量依据方向分为两种session和flow,具体来说,session是基于五元组(一般包括源IP,目的IP,源端口,目的端口,传输层协议)进行分类,而flow与session非常相似,唯一不同是只能是一个流向。
所以根据上面两类分类方法,组合会产生4中流的表示方式,会在下面的图表展示。
另外还有一点,因为每条流流的长度不一致,而CNN模型的输入要求必须大小一致,因此需要对数据长度做统一化,文章使用了每条数据流的前784个byte。但没有解释原因。
这里写图片描述
在预处理环节的image conversion , 对数据进行了可视化,结果如下图,可以看同一种数据流有相似的图片表示,所以才想使用CNN会用良好的表现。但是具体的可视化技术没有介绍。
这里写图片描述

4.模型

文章使用的是1D-CNN,因为参考先前的文章说1D适用于文本语言处理,2D适用于图片,3D则是语音视频。实验对比了1D和2D的效果,显示1D会好一点。下面是1d-CNN的具体参数设计:
这里写图片描述

5.对比

实验进行了4中对比实验,包括VPN和NonVPN的二分类,VPN和NonVPN各自的6分类,总体的12分类
这里写图片描述

6.实验结果及结论

这里写图片描述
①session表现优于flow
②all layer 优于 只有应用层
③1D-CNN 优于 2D-CNN

7.启发

所以对于这篇文章,我们可以学习他的数据处理的方法,包括对数据进行清洗。可视化甚至是借用自己开发的处理工具,还有流 的表示方法,选用session+all layer的形式,因为毕竟在做人工的特征抽取逐渐成为过去式了,所以如何表示流也是流量分类也是一个很重要的环节。再就是对于模型,我们可以借鉴1D-CNN的形式,基于上面表格给出的具体参数。

Paper 3
Malware Traffic Classification Using Convolutional Neural Network for Representation Learning

这篇文章与上一篇是同作者写的,基本上是面对相同的问题采用了差别不大的方法。主要差别在这篇文章使用了新的数据集,将流量视为图片输入神经网络进行学习,也就是paper2里提到的2D-CNN。在数据处理、数据表示方面与上一篇文章没有区别,也就不做赘述。
在数据表示方面,这篇文章较为详细的描述了数据包数据流的拆分组装,上一篇文章中没有做介绍,所以在这里写一下:
这里写图片描述
可以看到,一个session或者flow是这样被组装的:首先将包根据五元组进行分类,相同类别的包按照时间顺序排列,这样就形成了一条由x,b,d,t确定的flow或者session,整个的traffic就是由很多这样的flow或者session组成的。
另外,在模型参数方面,文章也给出了较为详细的描述:
这里写图片描述
这里写图片描述

paper2和paper3两篇文章要结合着看,细节上能相互补充。

  • 20
    点赞
  • 118
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值