一种基于深度学习的流量识别与特征提取方法技术

技术编号:26172879 阅读:27 留言:0更新日期:2020-10-31 13:52
本发明专利技术公开了一种基于深度学习的流量识别与特征提取方法,包括:数据包抓取,数据集建立,卷积神经网络建立,模型训练,模型自习及优化,网络数据包特征提取。本发明专利技术充分利用卷积神经网络在数据处理应用上的良好性能,设计一种兼具快速和准确的适合网络报文处理的卷积神经网络。并利用训练好的模型进行流量分类预测,把结果中预测错误和分类在正确类型下概率不足的数据包挑出来重新融入训练集训练模型,实现模型的自主优化。利用类激活映射(Class Activation Mapping)的方法,对流量进行特征提取,提取的特征字段可以使我们了解特定类型的数据包的特点,特征字段不仅可用于传统的DPI技术,亦适用于已经部署了DPI流量分类的应用场景。

【技术实现步骤摘要】
一种基于深度学习的流量识别与特征提取方法
本专利技术涉及数据的深度学习算法
,尤其涉及一种基于深度学习的流量识别与特征提取方法。
技术介绍
网络流量分类是现代通讯网络中的一个重要任务,它为网络资源调配、网络入侵检测、恶意软件检测、运营商监管调控与定价等应用领域提供了判断依据与底层技术支持。同时随着SD-WAN和SRv6等技术的发展,提供个性化的网络服务以及流量工程都对流量分类技术提出了更高的要求。当今移动互联网的蓬勃发展,大量新型网络应用的出现,致使当今的网络流量呈现出了网络流量数据规模庞大、网络应用类型繁多、网络协议多样等特点。针对新型的网络特点,如何精准高效的对网络流量进行分类一直是产业界、学术界和网络监管部门广泛关注的热点问题。目前网络流量分类主要有三种方法:基于端口的分类、基于负载的分类、基于流统计特征分类,其中最后一类方法往往与机器学习相关。基于端口分类的方法出现最早,其只需检测TCP或UDP报文头的源端口号、目的端口号,并与不同应用对应的标准端口进行比对即可知道报文所属的应用类型。标准端口号是互联网数字分配机构IANA对常见应用分配的固定端口号,例如:21端口对应FTP,22端口对应SSH,80端口对应HTTP,443端口对应HTTPS等。由于当时互联网应用较少,分配的端口号和应用一一对应,根据端口号就能方便而准确地知道流量对应的应用。但是随着互联网应用的发展,一些新的特点出现了,比如许多P2P应用会使用动态端口号,部分服务器允许手动指定端口号,恶意流量有意使用其他应用的默认端口号,或采用动态端口号,这都导致了基于端口号的分类方法准确率非常低,单纯使用基于端口的分类方法已不再适合现代网络的流量检测。基于负载分类的方法是对网络流量数据的数据包载荷进行深度包检测(DeepPacketInspection,DPI),在应用层内容搜索协议特征串,例如‘BittorrentProtocol’对应Bittorrent协议,Get、Post、Delete、Put、Head对应HTTP协议,220对应FTP协议等。此方法与基于端口号分类的方法类似,都是检测数据内容,与已知规律匹配。深度包检测对未被封装到其他应用层协议和未加密的流量非常可靠,往往被用于判断流量数据的真实类别。但是,目前的趋势表明,互联网上的加密流量部分正在不断增加,许多应用程序使用协议封装或混淆来规避通过过滤强制实施的网络策略。另外,由于由于隐私或性能问题,访问全部有效载荷通常是不方便的。由于新应用大量产生,面对识别特征库中不存在的未知流量,深度包检测也无从判断。因此,基于负载分类的DPI技术也日渐不能满足现今网络流量分类的要求。基于流统计特征分类的方法通常用到机器学习算法,是近年来的研宄热点。流指网络流,其定义是具有相同五元组的连续数据包。统计特征从包头提取,可用于负载加密的流量分类,能保护用户隐私、分类未知协议。常见的流统计特征有数据包数量、传输方向、数据包长度、数据包到达时间间隔等。流统计特征数量很大,如Moore数据集由248个流统计特征组成,无法事先确定能根据某个或某几个特征准确判断网络流类别,不能像前两种分类方法一样进行简单的查找与对比。利用机器学习算法的分类方法还面临难以获得同时适用于多个应用的流特征集、时空跨越性较差、结果精度过于依赖特征选取环节等挑战。自2012年Hinton课题组通过构卷积神经网络AlexNet从而证明了深度学习的巨大潜力后,对于深度学习的研究呈爆发式增长。随着近几年计算机性能的大幅增长,数据获取效率的迅速提高,深度学习的实现变得更加简单,在图像处理、语音识别、数据挖掘、自然语言处理等领域都得到了大量应用。深度学习具有更多的网络层和更强大的复杂函数拟合函数。当数据集比较大时,深度学习算法较机器学习算法有明显的优势。面对大数据集时,深度学习算法可以更容易的进行数据扩展,对数据进行充分利用,以达到更高的分类精度;相对的,机器学习属于浅层模型,计算能力有限,想要提高模型分类精度往往需要更加复杂的方法,简单的增加数据量很难达到效果。深度学习算法不需要人工进行特征选择、提取;同时深度学习适应性强,易于迁移。深度学习技术也被初步运用于网络流量分类的场合,把网络数据包预处理后建立数据集,使用CNN、LSTM等神经网络进行训练后可以得到能够进行流量分类的模型,从而实现流量分类。但是目前还有一些问题没有得到解决:1、在分类数比较多的数据集上的分类精度有待提高;2、模型是用事先准备好的数据集训练的,在实际应用中难以根据新产生的数据包优化模型;3、深度学习应用在流量分类问题上的可解释性比较差,训练好的神经网络模型仅可以进行流量分类,浪费了模型内部丰富的信息。
技术实现思路
本专利技术提供的一种技术方案是一种基于深度学习的流量识别与特征提取方法,针对现有各类流量分类技术存在的局限,提出一种改进的、可以自主学习优化、基于深度学习技术的流量分类方法。本专利技术的技术的具体步骤包括:步骤1:数据包的抓取:使用进程抓包工具openQPA进行抓包,每个进程产生的数据包都保存在单独的pcap文件中,也针对一些应用的特点,把单个应用的数据包进一步分开。比如把微信数据包,分成微信聊天数据包、微信图片数据包、微信视频通话数据包等,提供颗粒度更细的分类。适当预处理网络数据包,建立网络数据包分类的数据集。由于卷积神经网络具有的局部感受野、权值共享、次采样使得它在具有自动高层次特提取能力的同时尽量减小了计算开销。步骤2:数据集的建立Scapy库是开源的网络流量包解析库,使用Scapy库对pcap文件进行处理,移除头部的MAC地址和IP地址等信息。这些信息与数据包的应用类型无关,属于干扰信息,故要一般要去除。但是如果有基于IP地址过滤数据包的需求,则无需去除这部分。为了节省计算资源,把剩下的数据包以字节为单位转换成16*16的矩阵的形式,多余的数据丢弃不用,如果数据不够用0x00补齐。虽然这样会丢失部分信息,但这是一种折中的策略,事实证明这样的处理方式几乎不影响分类的准确性,同时可以显著地提高训练和预测时候的速度。最后用uint8的格式把数据包组成的矩阵存在numpy数组中并打乱顺序,保存为numpy数据文件,供后面模型训练读取,同时建立对应的标签数据集,这里总供使用了18类数据包,故标签值为0~17。数据集分为训练集和测试集,比例为9:1。步骤3:卷积神经网络的建立使用三次卷积层,对于前两个卷积层,卷积核的尺寸均为3*3,非线性激活函数均使用RELU;第一层卷积层设置12个卷积核,第二层卷积层设置24个卷积核,在第一层卷积层后面设置一个2*2的最大池化层。第三层卷积层设计为384个1*1卷积核,使用sigmoid激活函数,选择较小的卷积核可以防止后面层的输入尺寸过小,以免影响特征提取的精度。然后使用一个全局平均池化层和一个含有18个神经元的全连接层作为输出层,对应于18个分类。该模型结构轻量化,经测试适合网络数据包处理之用,计算速度快。步骤4:模型的训练使用GPU硬件进行训练本文档来自技高网
...

【技术保护点】
1.一种基于深度学习的流量识别与特征提取方法,其特征在于:包括;/n数据包抓取,利用进程抓包工具将每个进程产生的数据包保存在单独且对应的pcap文件中;/n数据集建立,利用网络流量包解析库对所述pcap文件处理并移除pcap文件头部的MAC地址和IP地址,把pcap文件中多个类别的数据包以字节为单位转换成矩阵的形式,并将该矩阵存于numpy数组中打乱顺序后保存为numpy数据文件;对该numpy数据文件建立对应的标签数据集;/n卷积神经网络建立,使用三次卷积层,第一卷积层设置2*2的最大池化层;第二卷积层后使用一个全局平均池化层,第三卷积层使用一个含有多类神经元的全连接层作为输出层;第一及第二卷积层的非线性激活函数使用RELU函数;第三卷积层采用sigmoid激活函数;/n模型训练,使用硬件进行训练,每隔5个epoch下调一次学习率,使用NAG算法在训练集上进行训练,训练时不使用测试集,训练准确率达到预设标准时终止训练;/n模型自习及优化,在测试集中挑选数据包给模型输入,经过正向传播,在输出层可以得到一个向量,经过Softmax函数归一化之后就得到了该数据包分别归属于每个类别的预测概率,其中最大概率对应的类别就是对应数据包的预测结果;若数据包未能在其对应的类别中去的最大概率,则将该数据包加入训练集中重新训练模型,得到的新模型再次自习及优化;/n网络数据包特征提取,利用卷积神经网络中的全局平均池化层的权重对最后一个卷积层的特征图进行加权求和得到类激活图,将该类激活图中加权求和值较大的区域数据作为该类数据包的特征字段取出。/n...

【技术特征摘要】
1.一种基于深度学习的流量识别与特征提取方法,其特征在于:包括;
数据包抓取,利用进程抓包工具将每个进程产生的数据包保存在单独且对应的pcap文件中;
数据集建立,利用网络流量包解析库对所述pcap文件处理并移除pcap文件头部的MAC地址和IP地址,把pcap文件中多个类别的数据包以字节为单位转换成矩阵的形式,并将该矩阵存于numpy数组中打乱顺序后保存为numpy数据文件;对该numpy数据文件建立对应的标签数据集;
卷积神经网络建立,使用三次卷积层,第一卷积层设置2*2的最大池化层;第二卷积层后使用一个全局平均池化层,第三卷积层使用一个含有多类神经元的全连接层作为输出层;第一及第二卷积层的非线性激活函数使用RELU函数;第三卷积层采用sigmoid激活函数;
模型训练,使用硬件进行训练,每隔5个epoch下调一次学习率,使用NAG算法在训练集上进行训练,训练时不使用测试集,训练准确率达到预设标准时终止训练;
模型自习及优化,在测试集中挑选数据包给模型输入,经过正向传播,在输出层可以得到一个向量,经过Softmax函数归一化之后就得到了该数据包分别归属于每个类别的预测概率,其中最大概率对应的类别就是对应数据包的预测结果;若数据包未能在其对应的类别中去的最大概率,则将该数据包加入训练集中重新训练模型,得到的新模型再次自习及优化;
网络数据包特征提取,利用卷积神经网络中的全局平均池化层的权重对最后一个卷积层的特征图进行加权求和得到类激活图,将该类激活图中加权求和值较大的区域数据作为该类数据包的特征字段取出。


2.根据权利要求1所述的一种基于深度学习的流量识...

【专利技术属性】
技术研发人员:刘畅
申请(专利权)人:上海乘安科技集团有限公司
类型:发明
国别省市:上海;31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1