1.本发明涉及通信网络技术领域,主要设计一种基于机器学习的多粒度业务流量识别方法。
背景技术:2.随着信息技术的不断发展,网络应用类型不断增多,互联网流量规模也在逐年增大,虽 然这大大促进了我们社会的进步和发展,但是也给我们带来了新的问题和挑战:用户对于应 用的服务质量得不到保障,不断扩大的数据规模导致网络资源利用率下降。不同类型的应用 在对网络资源的需求和使用方面呈现出较大的差异,如何针对多样化的用户需求进对网络进 行灵活管控,满足用户的资源需求是当前一个关键的研究方向。
3.现有的业务分类研究中,基于协议特征识别方法根据应用的协议特征(端口号、ip地址 和协议类型)进行分类识别。该方法仅能识别一些具有固定端口号的传统应用类型,无法识 别采用动态端口号进行通信的新型应用。此外,由于新型应用的网络资源需求未知,即便能 够识别出该应用,也无法获知应用具体的网络资源需求。基于机器学习的应用识别方法,是 提取出网络流量的代表性数据,将其输入到相应的算法模型中进行训练得到相应的模型,这 一方法已经成为网络应用识别领域的研究热点。选择合适的应用流量特征,可在一定程度上 放映应用的资源需求。因此粗粒度分类阶段,选用基于机器学习的方法,选用随机森林和 xgboost算法。
4.为了完成更加精细化的网络管理,需要将应用的具体类型进行识别,即应用识别。目前 常用的方法有基于dpi的应用流量识别,此方法本质上是一种报文过滤技术,且无法识别加 密的应用流量。基于机器学习需要人工提取数据的特征,特征提取的好坏对模型的准确性至 关重要,而且此方法需要大量的数据。基于机器学习的方法,此方法不再需要人工提取特征, 而是通过网络的一系列运算自动提取特征,但是此方法需要大量的数据作为支撑,模型的训 练时间长,更新难度大。迁移学习是为了解决小数据量样本集在神经网络学习训练过程中, 容易出现过拟合问题而提出的一种非常高效的学习方法。通过将在大型网络(如imagenet) 中预训练好的特征参数保存后,应用到全新的任务中,通过特征模型权重在不同分类数据之 间的可移植性,提高了小数据分类问题的效率与准确性。
技术实现要素:5.发明目的:为解决传统业务识别系统难以识别应用的实际资源需求以及在模型训练所需 数据量大,模型更新困难问题的实际性问题。本发明提供了一种基于机器学习的多粒度业务 流量识别方法,将深度学习和迁移学习结合,克服深度学习对数据的依赖和模型更新困难的 问题。本发明不仅可以满足对业务的资源需求的识别分类,还可以更进一步的完成对具体应 用的识别,同时减少所需的数据量,提高模型的可移植性。
6.技术方案:为实现上述目的,本发明采用的技术方案为:
7.一种基于机器学习的多粒度业务流量识别方法,该方法包括粗粒度业务流量识别
和细粒 度业务流量识别两个部分。
8.粗粒度业务流量识别的具体步骤如下:
9.步骤s1、采集带有标签的业务流量数据集,其中所述标签包括高带宽低时延,高带宽时 延不敏感,低带宽时延不敏感,低带宽低时延四大类别;
10.步骤s2、对步骤s1中的数据集进行数据清洗并提取特征,去除重复样本和无效样本;
11.步骤s3、利随机森林特征降维的方法将对步骤s2中提取的特征进行降维处理;
12.步骤s4、以步骤s3降维处理后的特征作为新的标签,更新步骤s1中的数据集,并分为 训练集和测试集,输入到xgboost模型中进行训练,得到业务流量粗粒度识别模型;
13.步骤s5、采集不带有标签的业务流量数据,按照步骤s2和s3的方法处理后,利用步骤 s4中的业务流量粗粒度识别模型,进行业务流量的粗粒度识别;
14.细粒度业务流量识别的具体步骤如下:
15.步骤1、采集带有标签的业务流量数据集,其中所述标签包括高带宽低时延,高带宽时 延不敏感,低带宽时延不敏感,低带宽低时延四大类别;
16.步骤2、对步骤1中的数据集进行预处理,转化成resnet网络模型所需的输入格式;
17.步骤3、将步骤2中预处理后的数据集输入到预训练的resnet网络模型进行重训练,得 到业务流量细粒度识别模型;
18.步骤4、采集不带有标签的业务流量数据,按照步骤2的方法预处理后,利用步骤3中 的业务流量细粒度识别模型,进行业务流量的细粒度识别。
19.进一步地,所述步骤1中的预处理包括:流量切分、流量清洗、长度统一以及可视化处 理。
20.进一步地,单条数据流表示为:
21.f={p1=(q1,l1,t1),p2=(q2,l2,t2)
…
pn=(qn,ln,tn)}
22.其中,qi为流中第i个数据包的五元组,q1=q2=
…
=qn;li为流中第i个数据包的长度;ti为 流中第i个数据包的起始时间,t1《t2《
…
《tn表示流中n个数据包按起始时间排序。
23.进一步地,五元组为{源ip,源端口,目的ip,目的端口,传输层协议}。
24.进一步地,所述步骤3中预训练的resnet网络模型选用谷歌团队在imagenet数据集上 预训练的34层resnet网络模型;其中对resnet网络模型做以下调整:
25.将resnet网络模型最后的平均池化层和分类层替换为全局平均池化层、全连接层以及softmax层。
26.有益效果:
27.本发明提出的基于机器学习的多粒度业务流量识别方法,该方法解决了传统业务识别方 法难以识别业务的资源需求问题且细粒度分类时所需数据量大,模型更新困难的问题,通过 网络抓包工具已经抓取的原始数据包经过预处理后,粗粒度分类时采用随机森林和xgboost 算法对测试集的准确性和算法的复杂度进行平衡;细粒度分类时,采用基于迁移学习的resnet 神经网络模型,在保证准确性的同时,大大减少了模型训练所需的数据量,当有新的业务类 型出现时,此方法可以满足快速更新模型的需求。
附图说明
28.图1是基于机器学习的多粒度业务流量识别方法的系统流程图;
29.图2是业务识别系统;
30.图3是细粒度分类方法框架图;图4是细粒度业务流量识别流程图。
具体实施方式
31.为了使本发明的目的、技术方案及优点更加的清楚,以下结合附图及实例,对本发明进 行进一步详细说明。应当理解这些实例仅用于说明本发明而不用于限制本发明的范围。在阅 读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本技术所附权利要 求所限定的范围。
32.本发明提出了一种基于机器学习的多粒度业务流量识别方法,所述方法包括粗粒度业务 流量识别和细粒度业务流量识别两个部分。
33.如图1所示的粗粒度业务流量识别,具体步骤如下:
34.步骤s1、通过如图3所示的业务识别系统采集带有标签的业务流量数据集,包括高带宽 低时延(在线多媒体播放业务等),高带宽时延不敏感(p2p下载业务等),低带宽时延不敏感(web 浏览),低带宽低时延(聊天业务等);
35.步骤s2、对步骤s1中的数据集进行数据清洗并提取特征,去除重复样本和无效样本。 数据集特征的具体表示方式如下:
36.f=[f1,f2,f3…
fd]
[0037]
其中f是含有d个特征的向量,fi表示第i个关键特征指标。
[0038]
提取的特征包括流级特征:源目的端口、流发送速率、流持续时间,报文特征,这里主 要指报文的统计特征:最长报文长度、最小报文长度、平均报文长度、报文间隔时间、报文 数、发包率等等。
[0039]
基于每个关键特征的最大值分别进行归一化处理。具体处理方式如下:
[0040][0041]
其中指经过了归一化后的第i个关键特征指标。max(fi)指第i个关键特征指标出现的 最大值。
[0042]
步骤s3、利用随机森林特征降维的方法将上一步中复杂的多维特征简化为低维特征,对 特征的重要性进行排序,选取占比重大的特征,减少特征的冗余性,并保留数据样本数据的 重要特征;特征的重要与否表现在特征在随机森林的每棵树上做了多大的贡献,并取均值。 在衡量贡献时选用基尼指数。
[0043]
步骤s4、将上一步中的带标签数据分为训练集和测试集,输入到xgboost模型中进行训 练,并对分类器模型进行参数调优,得到最优的模型参数;
[0044]
步骤s5、通过业务识别系统抓取不带标签的真实数据集,进行数据处理步骤后,输入到 步骤s4的xgboost模型中,得到业务流量的粗粒度分类结果。
[0045]
上述粗粒度分类结果仅能够满足应用的qos需求,为了达到进一步的管理需求,需
要进 行如图2和4所示的细粒度业务流量识别,以得到应用的具体类型。细粒度业务流量识别的 具体步骤如下:
[0046]
步骤1、将步骤s1中抓取的数据进行数据预处理,转化成模型所需的输入格式。
[0047]
流被定义为拥有相同五元组且按照时间顺序排列的数据包的集合。定义单个数据包为 (q,l,t),其中q代表该数据包的五元组,即《src_ip,src_port,dst_ip,dst_port,protocol》,l代表该数 据包的长度,t代表该数据包的起始时间。则单条数据流可定义为
[0048]
p=(q,l,t)
[0049]
f={p1=(q1,l1,t1),p2=(q2,l2,t2)
…
pn=(qn,ln,tn)}
[0050]
其中q1=q2=
…
=qn;t1《t2《=《tn表示流中数据包按起始时间排序。
[0051]
(1)流量切分
[0052]
根据五元组将原始流量划分为流,一个数据流是指五元组{源ip src_ip,目的ip dst_ip, 源端口src_port,目的端口dst_port,传输层协议protocol}相同的数据包集合,会话是双向流 组成的一组数据包,选取全部层信息进行流量切分处理。
[0053]
(2)流量清洗
[0054]
该步骤将经切分后的数据流量进行流量清理。为了防止流量中的敏感信息泄露,并且为 了防止模型在某些特征上产生过拟合现象,首先进行流量匿名处理,分别在数据链路层和ip 层的数据中随机分配mac地址和ip地址。另外,内容相同的流量切分信息包经流量清理 后会生成相同的文件,而重复的数据在训练模型网络时会产生偏差,因此需要删除空的和重 复的文件。
[0055]
(3)长度统一
[0056]
将每条流(会话)的长度固定为某一字节,大于这个长度就截断,小于则在末尾补0。
[0057]
(4)格式转化,图片生成
[0058]
将流量数据进行可视化处理。比如说,将清理过的流量数据文件按照28
×
28=784bytes 进行统一长度处理。如果文件长度大于784bytes,则截取其前784bytes数据,小于784 bytes的文件在后面补充0x00。统一长度后的文件转换为bmp图像,即一个字节对应一个 像素,如0x00表示黑色,0xff为白色,输出位图为png格式。
[0059]
步骤2、预处理后的数据输入到resnet网络模型中,resnet网络模型对输入的数据进行 自动化特征提取,完成模型的重训练;
[0060]
resnet网络模型设计如下:
[0061]
选用谷歌团队在imagenet数据集上预训练的34层resnet网络模型,并对其进行微调, 在迁移过程中具体步骤为:
[0062]
首先对迁移模型进行微调,删除最后的平均池化层和分类层,冻结其前的所有层。
[0063]
设置全局平均池化层,实现特征图的向量化,为了避免全连接层参数过多,造成过拟合, 选用全局平均池技术。
[0064]
设置全连接层,为了进一步整合特征,增加一层选用relu函数作为激活函数的全连接 层。relu函数具有更强的表达能力;而与其他非线性函数相比,其非负区间的梯度为常数, 因此能够避免神经网络训练过程中经常出现的梯度消失问题。
[0065]
设置softmax层,在网络的最后一层,本质上仍然是全连接层,只是其激活函数采
用的 是softmax函数。该层将全连接层输出的一维特征向量,映射为(-∞,+∞)内的实数,softmax 函数将这些实数进一步转化为(0,1)范围内的实数,即代表分类为各类别的概率。
[0066]
步骤3,通过业务识别系统抓取真实数据集,进行数据预处理步骤后,输入到步骤s7的 resnet模型中,得到具体的应用分类结果。
[0067]
以上所述仅是本发明的优选实施方式,应当指出:对于本技术领域的普通技术人员来说, 在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发 明的保护范围。
技术特征:1.一种基于机器学习的多粒度业务流量识别方法,其特征在于,该方法包括粗粒度业务流量识别和细粒度业务流量识别两个部分;粗粒度业务流量识别的具体步骤如下:步骤s1、采集带有标签的业务流量数据集,其中所述标签包括高带宽低时延,高带宽时延不敏感,低带宽时延不敏感,低带宽低时延四大类别;步骤s2、对步骤s1中的数据集进行数据清洗并提取特征,去除重复样本和无效样本;步骤s3、利随机森林特征降维的方法将对步骤s2中提取的特征进行降维处理;步骤s4、以步骤s3降维处理后的特征作为新的标签,更新步骤s1中的数据集,并分为训练集和测试集,输入到xgboost模型中进行训练,得到业务流量粗粒度识别模型;步骤s5、采集不带有标签的业务流量数据,按照步骤s2和s3的方法处理后,利用步骤s4中的业务流量粗粒度识别模型,进行业务流量的粗粒度识别;细粒度业务流量识别的具体步骤如下:步骤1、采集带有标签的业务流量数据集,其中所述标签包括高带宽低时延,高带宽时延不敏感,低带宽时延不敏感,低带宽低时延四大类别;步骤2、对步骤1中的数据集进行预处理,转化成resnet网络模型所需的输入格式;步骤3、将步骤2中预处理后的数据集输入到预训练的resnet网络模型进行重训练,得到业务流量细粒度识别模型;步骤4、采集不带有标签的业务流量数据,按照步骤2的方法预处理后,利用步骤3中的业务流量细粒度识别模型,进行业务流量的细粒度识别。2.根据权利要求1所述的一种基于机器学习的多粒度业务流量识别方法,其特征在于,所述步骤1中的预处理包括:流量切分、流量清洗、长度统一以及可视化处理。3.根据权利要求1所述的一种基于机器学习的多粒度业务流量识别方法,其特征在于,单条数据流表示为:f={p1=(q1,l1,t1),p2=(q2,l2,t2)
…
p
n
=(q
n
,l
n
,t
n
)}其中,q
i
为流中第i个数据包的五元组,q1=q2=
…
=q
n
;l
i
为流中第i个数据包的长度;t
i
为流中第i个数据包的起始时间,t1<t2<
…
<t
n
表示流中n个数据包按起始时间排序。4.根据权利要求3所述的一种基于机器学习的多粒度业务流量识别方法,其特征在于,五元组为{源ip,源端口,目的ip,目的端口,传输层协议}。5.根据权利要求1所述的一种基于机器学习的多粒度业务流量识别方法,其特征在于,所述步骤3中预训练的resnet网络模型选用谷歌团队在imagenet数据集上预训练的34层resnet网络模型;其中对resnet网络模型做以下调整:将resnet网络模型最后的平均池化层和分类层替换为全局平均池化层、全连接层以及softmax层。
技术总结本发明公开了一种基于机器学习的多粒度业务流量识别方法,粗粒度分类时,首先通过业务识别系统采集原始的数据包,然后对数据进行特征提取,接着按照特征降维的思想采用随机森林的方法对特征进行重要性排序,将多维特征简化为低维特征,最后基于XGboost机器学习算法训练得到模型,对实际获取的流量进行类型识别;细粒度分类阶段,由于分类的目标不同,上一阶段提取的流量特征已经不满足于更进一步的识别需求,因此在细粒度分类阶段,为了克服人工提取特征的局限性,同时为了使模型降低对数据的依赖性,引入迁移学习的方法,选用ResNet网络模型,采用微调的方法对网络进行重训练,构建分类网络,预测出具体的应用类别。预测出具体的应用类别。预测出具体的应用类别。
技术研发人员:朱晓荣 关其峰 赵夙 朱洪波
受保护的技术使用者:南京邮电大学
技术研发日:2022.07.08
技术公布日:2022/11/1