基于轻量级神经网络的实时加密流量分类
0、摘要
提出一种轻量级模型,设计原则“maximize the reuse of thin modules”,thin modules采用多头注意和一维卷积网络。由于所有数据包的一步交互和多头注意力机制的并行计算,所提出的模型的优势是参数的数量和运行时间显著减少。因为一个流只需要连续的三个数据包,所以该模型可以很好地实时工作。
关键词:加密流量分类,多头注意机制,一维卷积网络
1、介绍
·提出一种新的轻量级实时流量分类模型。多头注意允许每个数据包在一步中与所有其他数据包交互,并且并行学习不同子空间中的不同交互,大大较少了参数的数量,缩短运行时间
·模型自动提取高阶流级和包级特征。通过叠加多头注意块来探索全局水平上的高阶相互作用。此外,将1D-CNN应用于当数据包的特征提取。
2、相关工作
A.加密流量分类方法
1)基于流特征:分类器必须观察整个流或流中的大部分数据包才能获得这些特征,这些特征更适合离线分类。在本文中,仅以前几个数据包作为输入,所提出的模型可以满足实时性要求。
2)基于包特征的方法:基于包特征的方法直接使用包字节,包括包头和有效载荷字段。在本文中,模型有效地收集了编码器的流级和包级特征
B.CNN深度学习方法
纯CNN在表达交互信息方面的不足导致其与RNN的普遍应用,而RNN中各单元之间的依赖关系使得其耗时。在本文中,所有数据包的交互都是直接实现的。
C.高阶互动学习
Shi et al. 证明了多头注意模块可以用于CTR预测中的轻量级交互学习。本文提出的模型将multi-head attention modules 和transformer创新性的结合在一起
3、准备
模型将加密流量分类到特定的应用程序中
通常使用两种粒度类型:包和流
在这里使用流粒度–流指具有五元组(即传输层协议、源IP、源端口、目的IP、目的端口)相同值的所有数据包
数据包交互:通过数据包之间的高阶交互可以更有效地提取全局信息
4、轻量级模型
模型的输入是在路由器上捕获的在线或离线流量轨迹
预处理后,捕获流中国的前N个数据包;然后,提取每个数据包的初始特征并将其映射到连接以表示流的几个向量。使用编码器提取局部和全局特征,然后使用softmax函数输出每一类应用的概率。
a. 预处理
我们根据流的五元组将流量分成流,跳过TCP连接中的三次握手,因为其对流分类有用的信息较少。提取流中的前N个原始数据包作为模型的输入
b.体系结构
1)嵌入
2)注意力编码器attention Encoder
the attention encoder is designed to extract local and global information at a deeper level.
(a)Multi-head attention多头注意力
通过multi-head attention,每个数据包可以与所有其他数据包在一步中交互,大大减少参数数量,缩短运行时间;
一个数据包被投射到多个子空间中,因此multi-head attention可以捕获不同子空间中的不同特征交互
通过用multi-head attention堆叠模块,我们能够对不同顺序的特征交互进行建模。
(b)Add&Norm
该层能够防止网络退化和加速模型的训练。add&norm层包括ResNet和归一化层。其中ResNet块可以用很少的参数来防止网络退化,在multi-head attention以及feed forward模块后加入ResNet层可以保存从模型中获得原始和先前学习的信息。
此外,层归一化是一种对中间层分布进行归一化的技术,可以实现smoother gradients,faster training, and better generalization accuracy.
©Feed Forward Layer
在feed forward层中,因为1D-CNN侧重于单个数据包,所以其能够有助于提取包级特征。
因此,使用kernel size为1的1D-CNN能够提取包级特征,对于每个包,每个内核的内积构成了包的更深层次表示。
(d)Flatten and Dense Layer
C 空间与空间复杂性分析
(1)空间复杂度
(2)时间复杂度
5、评估
数据集:
ISCX VPN-non VPN (http://www.unb.ca/cic/datasets/vpn.html)
HTTPS(http://betternet.lhs.loria.fr/datasets/https)
6、总结
本文提出一种轻量级模型,主要通过thin module来提取flow level and packet level特征
数据集仅包括HTTPS和VPN流量,但不涉及其他加密协议
缺点:没有进行消融实验,在与1D-CNN以及CNNwithLSTM进行对比时,不知道前面的嵌入层是否一样