写在前面:
本文翻译供个人研究学习之用,不保证严谨与准确
github链接:https://github.com/WithHades/network_traffic_classification_paper
本文原文:Pacheco, F., Exposito, E., Gineste, M., Baudoin, C., & Aguilar, J. (2019). Towards the Deployment of Machine Learning Solutions in Network Traffic Classification: A Systematic Survey. IEEE Communications Surveys and Tutorials, 21(2), 1988–2014. https://doi.org/10.1109/COMST.2018.2883147
摘要
流量检测是一种发现网络流量中的关系、模式、异常和错误配置等的综合技术。尤其需要注意,流量分类是该领域中旨在识别应用程序名称或Internet流量类型的一个子领域。近年来,流量加密和封装等新技术的兴起降低了传统流量分类策略的性能,使得流量分类成为一项具有挑战性的任务。机器学习作为这一领域的一个新的研究方向,有成功的迹象,例如从加密流量中提取知识,以及更精确的服务质量管理。ML正迅速成为在真实的网络流量场景中构建流量分类解决方案的关键工具;从这个意义上说,本研究的目的是探索该技术在流量分类领域的要素。因此,本文在介绍利用ML技术实现流量分类的步骤的基础上,对其进行了系统的综述。主要目的是了解和确定现有工作为实现其目标所遵循的程序。因此,本文从对该领域进行的分析中发现了一些趋势;通过这种方式,作者希望概述基于ML的流量分类的未来方向。
关键词: 互联网流量,流量分类,机器学习,流量监控
流量分析是一个从截取流量数据开始,到发现网络中的关系、模式、异常和错误配置等的完整过程。其中,流量分类是该领域中的一个子领域,其目的在于将互联网流量分类为预定义的类别,例如正常或异常流量、应用程序类型(流媒体、网络浏览、VoIP等)或应用程序名称(YouTube、Netflix、Facebook等)。流量检测之所以重要,主要有以下几方面的原因:
在过去,流量分类依赖于基于端口的方法,其中每个应用程序由其注册的已知端口进行标识,该端口由互联网分配号码管理局(IANA)[1]定义。由于未注册或随机生成端口的新应用程序激增等因素,这种方法变得不可靠和不准确。另一种在这一领域得到广泛应用的方法是深度包检测(Deep Packet Inspection,DPI)。DPI通过在包负载和一组存储的签名之间执行匹配对网络流量进行分类。然而,当隐私政策和法律阻止访问包内容以及协议混淆或封装的情况下,DPI会失败。为了克服上述问题,机器学习(ML)作为一种合适的解决方案应运而生,它不仅适用于流量分类任务,而且适用于预测和新知识发现等。在这种情况下,IP流的统计特征通常是从网络轨迹中提取出来的,并存储起来生成历史数据。这样,就可以用这些历史数据训练不同的ML模型,并用这些模型分析新的传入流。
在本节中,我们将研究一些综述性论文,以找出进行流量分析(尤其是流量分类)的趋势、挑战和一般步骤。虽然2005年已经开始使用ML进行流量分析,但是由于流量的更新和扩展等原因,一些问题仍然存在。文献[2]回顾了近年来利用ML进行流量分类的研究进展。尽管大多数呈现的工作都是以离线方式部署的,但是作者也提到了在线部署,为ML模型建立了一些关键的操作要求。在最近的一篇综述[3]中,指出了其中的几个问题,并提出了该领域的未来的一些方向。一方面,本文研究了一些主要的流量分类问题,可以总结如下:
另一方面,未来的方向鼓励对ML方法进行更严格的评估和比较,鼓励开发用于定义流量真实值的工具,鼓励使用多分类系统等。此外,ML方法需要满足不同的挑战[4]、[5],例如提供的性能、对不断增加的业务量和传输速率的管理,以及重新配置能力。
文献[6]介绍了这一领域的最新进展,重点介绍了用于流量分类的有监督和无监督技术。作者研究了几种基于贝叶斯的分类器、神经网络NNs 和决策树DT的方法。此外,还研究了DBSCAN算法、基于期望最大化EM和K-均值的聚类技术等。为了概述每种方法的必要改进,给出了一些优缺点。
加密通信已成为防止网络中传输信息被入侵的一种新方法。ML非常适合分析这些类型的通信,因为它不会侵入数据包内容;例如,在某些情况下,连接的统计行为可能就足够了。在这一背景下,[7]报告了几项关于加密流量的研究的全面回顾。调查研究了一些加密协议、它们的包结构和在网络中的标准行为,以及可以提取用于流量分析的可观察特征。此外,[8]还调查了最常见的流量分类方法。
目前,网络中的异常流量检测已成为流量分析的重要课题之一。其目的是发现或描述可能影响网络基础设施、业务或个人隐私、数字经济等的恶意或无意的异常情况。流量分析对于这个特定的域是必要的。参考文献[9]提出了一项综合研究,其中ML技术代表了本综述中发现的30%以上的解决方案。这一领域的更多工作见[10]-[12]。
一般来说,流量分类可以通过多种ML技术,在不同的领域,以不同的目标来实现。然而,在所有的调查报告中,一个主要的问题是缺乏公共数据,这可以被视为应用ML方法的核心资源。此外,定义所收集数据的真实值的困难,以及ML解决方案的实现,是目前ML技术的挑战和限制。另外,另一个重要方面是网络的发展,它需要自适应或自配置的解决方案来保证可靠的通信量。相反,为了能够解决前面讨论过的缺点,研究界需要付出更多的努力。
本文试图收集如何以及何时使用ML技术进行流量分类的不同方法、策略和过程。它将研究从监控阶段到实施ML解决方案的过程。主要目的是为打算使用ML技术进行流量分类的领域从业人员提供全面的指导。从这个意义上讲,本文主要研究基于科学界的经验实现流量分类的步骤。值得一提的是,本文的研究集中在IP层的流量分类上。例如,本研究将概述可用于改善运营商网络级别的QoS的方法。简而言之,主要贡献如下:
总结这一部分,值得指出的是,本综述与其他相关工作的主要区别在于提出论文的方法。参考的论文按照将ML技术应用于Internet流量分类领域的一般步骤进行组织。
本文的其余部分安排如下。第II节简要介绍了流量分类的问题。该节首先介绍ML技术和网络流量的一些基础,最后总结一些最常用的方法。第III节介绍了作者评审论文所采用的方法,该方法基于知识抽取的ML过程。按照前一节的指导方针,第IV节报告了网络中进行数据收集的常用方法。第V节报告了从观察到的流量中提取特征的策略。第VI节介绍了一些减少或选择提取特征的方法。第VII节研究了如何选择ML算法进行流量分类。第VIII节旨在了解文献中为实现ML解决方案所做的努力。第IX节分析了文献的结果,第X节概述了调查报告的结论。
在第II-A节中,介绍了ML基础、一般步骤和经典算法的综合。接下来,在第II-B节中,对流量分类方法进行了概述。
机器学习(ML)技术是识别和分类不同类别的一种非常流行的方法。它的主要目标是赋予计算机自动学习能力,即机器能够在一定条件下从过程中提取知识。ML试图从一组特征或属性中提取知识,这些特征或属性表示过程或者观察到现象的可测量属性。这样,学习过程通过训练不同的模型来执行,即分类、预测或聚类模型;它们的使用取决于问题的特征。知识抽取由一个根据案例研究的历史经验建立的ML模型处理。
在文献中可以找到不同的ML方法。例如,[13]提出了一组迭代步骤来发现大型数据库中的知识。这项工作报告了将数据转换为知识的传统方法,称为数据库中的知识发现(KDD)。KDD的主要步骤包括数据选择、处理、转换、挖掘和解释/评价。数据挖掘组件指的是数据挖掘方法的应用,这些方法从数据中确定模式。大多数数据挖掘方法都是基于ML技术的。本文介绍了用ML技术实现知识发现的一般步骤。
此步骤旨在收集有关案例研究的信息。通过建立测量程序,从物理或数字传感器获取数据。这些数据描述了当前或历史状态,用于定义实验环境。一个测试环境由所有的软件、硬件和网络组件,以及其他感兴趣的过程所持有的组件组成。这个测试环境对于使用ML技术构建模型(学习和测试)是必要的。从测试环境中设置的多个场景中捕获和收集样本。
特征提取是最重要的步骤之一,因为它测量或计算可能提供进程状态信息的特征。简言之,FE过程计算反映所收集数据中特定属性不同的度量值。主要目的是获得更好地描述问题的描述符。FE过程的结果是由属性列构成的结构化表,其中每一行是一个样本,还有一个附加的可选列,列的当前状态为每个样本(通常称为标签或类)。如果状态未知,则样本未标记。
特征提取可以执行数据处理过程以删除不需要的缺失值和清除数据等。最后一个与异常值检测相关,它可能会破坏ML解决方案的性能。此外,可以通过对属性值进行规范化或聚合操作来转换数据。在聚合过程中,这些特征被组合成一个对问题更有意义的单一特征。
在这个阶段,我们可以从一个初步的研究开始来理解数据。例如,使用带标签的数据,可以处理表来查找类不平衡,这是一个或多个类的样本量比另一个类的样本量要高的情况。类不平衡数据可能会使一些ML模型从一个类中学习更多的内容从而产生偏差。处理类不平衡数据的一种方法是尽可能减少类中不相关样本的数量[14]。
最后,必须指出的是,FE过程可以嵌入到ML算法中;此外,历史数据集可能不可用,ML模型应该从头学习。这些特殊性将在第II-A4节中扩展。
这是一个可选步骤,允许选择或减少提取的特征数。FR是使用原始的属性创建新的属性,而FS是寻找一组较少的属性来更好地描述特征。这些步骤旨在减少诸如时间消耗和维度诅咒等问题。文献[15]和[16]对FR和FS过程的性能和理解进行了调查。FR和FS通常分为过滤器、包装器和嵌入式方法,这些方法又可以通过有监督和无监督策略进行开发。在有监督策略中,目标是找出最有助于定义分类决策的特征。在无监督策略中,主要目的是确定数据分组的特征。
在过滤器中,每个特征使用一个度量其相关性的度量来给出分数。对这些特征进行排名,最相关的是那些满足可接受的阈值的特性。相关分析是一种简单的滤波方法,通过计算相关系数找到特征对之间的关系。其他滤波器技术包括基尼指数[17]、信息增益[18]、拉普拉斯分数和稀疏度分数[19]、[20]等。滤波器算法可以使用无监督学习来寻找最佳的基本特征[21]–[24],或者通过结构化稀疏正则化模型来选择特征,从而保持了数据集中实例的聚类结构[25]–[27]。另一方面,有监督学习常用于包装器方法,其中定义了一个目标函数,以确定不同特征集对分类器精度的影响。需要选择提供最佳分类性能的特征。遗传算法和序列搜索策略被广泛用作包装器[28]、[29]。
此外,一些ML算法包括嵌入到模型设计中的FS过程,例如正则化回归模型和基于决策树的模型[30]、[31]。最后,其他技术集中于在原始特征的基础上生成更具代表性的特征[32]、[33]。这些技术可以在特征生成中找到,明显地与FR和FS过程分离。
前几个阶段的结果生成了一个包含案例研究的历史信息的数据集。历史数据集是构建ML模型的关键资源。不同的ML算法已经被开发出来并尝试用于解决分类、聚类和回归等的任务。ML算法的作者希望发现的问题或知识类型有关。
在ML中,有两种典型的学习类型:有监督学习和无监督学习。大多数有监督学习算法调整模型参数,使模型输出与输入的实际期望输出之间的误差最小。这意味着必须对历史数据进行标记。另一方面,无监督算法试图在事先不知道输出的情况下找到输入之间的关系。这些关系可以是相似性、近似性和统计关系等。作为学习过程的衍生结果,有监督的算法通常用于执行分类任务,而无监督的算法则更倾向于对输入进行聚类,以便发现它们之间的异常或相似行为。一般来说,ML模型和学习类型与要解决的问题类型相关。
[34]-[36]可以找到ML算法的不同分类。例如,一般情况下经典的有监督算法有基于统计模型、树、规则和神经网络NNs等。此外,有几种方法不一定属于上述分组,可以分为参数方法和非参数方法。例如,在参数模型中,目标是确定使成本函数最小化的参数,例如支持向量机(SVM)。一种非参数算法是K近邻(KNN),它通过测量样本的距离来收集相似的样本。在无监督方法中,一种分类方法将技术分为基于原型的聚类、层次化方法和基于密度的方法等。
目前,ML算法除了基于有监督和无监督学习外种类繁多。例如,半监督算法利用未标记的数据训练分类器,或者用标记样本训练分类器,然后评估分类器中的未标记样本,或者对未标记样本使用无监督方法。由于数据集中存在标记样本和未标记样本,因此也可以通过有监督和无监督学习之间的组合找到混合方法[37]。此外,集成技术使用各种ML模型(通常是分类器)并通过组合策略组合它们的结果。Bagging和Boosting等策略被广泛用于构建集成模型[38]。还有一些更先进的技术,例如,增量学习,旨在用新的输入在线更新ML模型[39]。最后,强化学习的重点是在线表现(通常是累积奖励),在任何时候采取行动时都是最大化的[40]。
本节概述了分类解决方案最常用的验证方法。监督学习需要样本标签的预先知识,样本标签是验证ML模型的关键信息。通常的方法是将数据集分为训练集和测试集。用训练集建立ML模型,用测试集评价模型的预测能力。给定模型预测和测试集的真实标签,可以通过几个性能度量来量化ML解决方案的分类能力。例如,[41]提出了分类性能度量的研究,将分类性能度量分为要实现的分类类型:二进制、多类、多标记和分层。当一个输入样本只能被分为两个不同的类中的一个时,就会发生二元分类。相反,多类分类意味着输入在一个类池中只能被分类为一个类。多标签分类允许将输入样本分类到类池中的多个类中。最后,层次分类类似于多类分类,但粒度更大,因为主类被划分为较低级别的子类。
为了验证ML模型,最常用的方法之一是根据分类能力来衡量其性能。在模型预测和真实标签之间可以找到一些关系,例如正确和错误分配给类的样本数等。通过计算例如准确性、精度、召回率、F-score、ROC等来衡量ML模型性能。例如,对于具有正类和负类的二进制分类,真阳性TP、假阴性FN、真阴性TN和假阳性FP可以通过敏感度和特异度来衡量分类器的性能。这些度量的组合,如F-score和ROC,提供了关于分类器性能的更精确的信息。特别地,ROC曲线是通过计算改变分类器的判别阈值的灵敏度和特异性得出的[42]。在ROC曲线中,理想值代表了许多敏感性和特异性(一种非常好的诊断方法),其结果是一个可解释的图,说明了分类器在不同操作点的性能;此外,可以计算曲线下面积(AUC)以从ROC获得紧凑的度量。通过计算二进制分类性能的微观或宏观平均值的总体性能度量,上述分析可以映射到多类问题。这些度量中的每一个评估了模型性能的不同方面[43]、[44]。
传统的模型评估方法是分别使用训练集和测试集来训练模型和计算性能度量。此外,交叉验证是将数据划分为k个子集的模型验证的另一种方法。其中一个子集用作测试集,其余用于训练模型。对k个子集执行相同的过程,并通过每个子集的评估分数的组合(平均)给出全局性能表现。交叉验证方法有不同的变体,如leave-p-out和leave-one-out。
最后,有一些更先进的方法可以在不同的测试场景下测量分类器性能,例如Friedman测试、Wilcoxon测试等。这些场景包括数据集的不同分区、分类器设置的不同初始条件,或者在训练过程中嵌入随机初始化等。这些方法主要用于比较一组分类器,并选择在不同条件下性能最高的分类器[45]。
在流量分类中,可以发现几个趋势来分类、理解、诊断或观察网络的状态。流量分类的完整分类见[46]。尽管如此,在图1中提出了对该分类法的修改,该修改又集中在感兴趣的分支机器学习上。图1主要分为五个部分:数据、技术、特征工程、算法选择和输出。每个部分的简要说明如下:
数据
:用于创建流量分类解决方案的输入数据类型。值得注意的是,流量数据可以加密或未加密。可以通过DPI工具或实时捕获标记流量。第IV节将提供有关该部分的更多细节。技术
:主要有四个主要分支,如机器学习、基于统计、基于行为的和有效载荷检查。在本节中,将简要介绍这四种方法,以便大致了解它们的工作原理。但是,ML分支将在整篇文章中扩展。特征工程
:根据第II-A2节和第II-A3节中提出的策略,本部分仅涉及ML分支,并展示了在IP流上应用的特征分析技术的潜在和现有趋势。本节将在第V节中扩展,而IP流的正式定义在第II-B1节中给出。算法选择
:该部分根据所使用的学习过程(有监督、无监督、混合等)和要完成的任务(分类、聚类等),描述构建ML解决方案的可用方法。输出
:最后,输出主要取决于要实现的目标,例如将流分类为类别或应用程序名、系统状态等。本节将介绍如下内容。第II-B1节正式定义了IP流,它是Internet网络中最常见的通信会话表示。接着,介绍了经典的流量分类技术:第II-B2中的有效载荷检测、第II-B3中的基于统计的技术、第II-B4中的行为技术和第II-B5中的ML技术。
在业务分类中,通常使用术语“流”来描述从源发送到目的地的一组分组。根据[47],IP流是网络中的一组分组或帧,在一个时间间隔内可以在网络中的某个点截获。属于同一流的数据包共享若干公共属性,例如:a)一个或多个数据包,具有传输或应用报头字段(例如,源和目标IP地址、端口号和类型等);b)数据包的特征作为MPLS标签的数量;c)附加字段,例如下一跳IP地址,因此,可以概述单播流 F i F_{i} Fi的经典定义:
定义1:一个IP流 F i F_{i} Fi可以被定义为:
F i = { H i , P i } (1) F_{i} = \{H_{i}, P_{i}\}\tag{1} Fi={Hi,Pi}(1)
其中 H i H_{i} Hi是流i的头, P i = { p i , . . . , p i n } P_{i} = \{p_{i}, ..., p_{in}\} Pi={pi,...,pin}是属于流i的一组数据包。
定义2:流量头 H i H_{i} Hi可以被如下一个元组定义:
H i = ( I P s r c , I P d e s t , p o r t s r c , p o r t d e s t , p r o t o ) (2) H_{i} = (IP_{src}, IP_{dest}, port_{src}, port_{dest}, proto)\tag{2} Hi=(IPsrc,IPdest,portsrc,portdest,proto)(2)
其中 I P s r c IP_{src} IPsrc和 I P d e s t IP_{dest} IPdest是IP源和目标地址; p o r t s r c port_{src} portsrc和 p o r t d e s t port_{dest} portdest分别是源和目标传输端口;proto是传输协议。
此外,在表达式(3)中定义了 P i P_{i} Pi。P是通过监视点的完整数据包集。 h k h_{k} hk是包 p k p_{k} pk的头, H i H_{i} Hi是流的头。
P i = { p k ∈ P ∣ h k = = H i } (3) P_{i} = \{p_{k} \in P \mid h_{k} == H_{i} \}\tag{3} Pi={pk∈P∣hk==Hi}(3)
对于单播双向流(假设a是客户端,b是服务器),上述定义的扩展是指:
定义3:一个双向流 F a b F_{ab} Fab的定义为:
F a b = F a ∪ F b (4) F_{ab} = F_{a} \cup F_{b}\tag{4} Fab=Fa∪Fb(4)
单向流的并集是通过元组中某些元素的匹配来实现的。
在定义2中,一些端口号可以保留给由IANA建立的应用程序类型,但是,在大多数应用程序在应用中随机生成端口。此外,通信会话(表示为多播会话)可以打开多个端口,这反过来可能影响上述定义。在过去,Internet流量允许使用开放端口和注册端口(使用IANA)之间的匹配来获取应用程序的名称。然而,具有随机端口的新应用程序的激增,以及Internet网络的增长,使得基于端口的方法变得不准确。它们过时了,出现了新的流量分类方法。
这种技术也称为深度包检测(Deep Packet Inspection,DPI),它分析网络数据包的内容,即IP报头和有效载荷。
DPI将从包中提取的信息与一组(预先定义的已知的)签名进行比较来区分应用协议。一些DPI工具包括nDPI、Libprotoident、PACE、L7 filter和NBAR等。
最近,由于新的应用程序和协议的不断增多,DPI工具遇到了一些缺点。特别是,当创建新协议时,DPI工具必须更新;否则,它们会获取未知或错误的签名从而导致预测失败。因此,必须不断更新工具签名列表。另一方面,当a)使用包加密来保护通信会话中的内容时;b)部署HTTP2来复用包内容时;c)因为NAT网络无法区分通信会话,采用NAT网络时;和d)部署虚拟专用网()以实现数据隐私和完整性等,DPI是不够的。
尽管DPI工具有其特殊的缺陷,但它们仍然被广泛用于流量分类。一些研究报告了它们在流量分类中的准确性和受欢迎程度[48],[49]。一些工作试图解决当DPI工具检测到新协议时手工设置签名的问题[50],[51]。[52]提出了基于固定比特偏移机制的业务签名的自动生成。该工作提出从流中随机选择包,并在同一位偏移量下对包的每一位进行比较。签名从固定长度中提取、记录并计数,以生成最终签名。在[53]中,同样的作者提出了另一种使用聚类技术来收集相似的流行为的方法。从产生的簇中,取一组流以应用基于令牌的算法Hamsa和MSA,即t-coffee算法;这两种算法都已被用于提取生物学中的正则表达式,并被用于提取二进制序列中的签名。这些新策略有助于DPI的流量分类。
基于统计的技术主要目的是找出流、通信终端系统和网络配置之间的统计差异。这种差异可能是两个或多个不同的应用程序或行为的结果,其特征是统计特性。在某些情况下,可以使用统计分布来建模网络流量模式。概率模型的构造已经被一些研究人员应用于了解网络的不同状态。[54]中的工作引入了一个具有公共和私有IP地址的监视场景,并测量每个配置文件的统计信息,例如TCP和UDP数据包的数量,以及失败流的数量。其目的是构造不同的统计分布,如负指数分布或高斯分布,以检测P2P通信中的可达性。以类似的方式,[55]中的工作提出了使用统计分布对流进行分类。另一方面,[51]在包头上引入了文本分类,结果由一个统计二元模型进行评估,该模型将确定它是否是一个新的签名。这种方法的主要缺点是静态地构建不整合学习过程的统计模型。与之前的方法一样,在互联网流量模式动态增长和演变的情况下,这种缺点会影响其性能。此外,ML技术对一些基于统计的方法进行了调整和改进。
此方法通常尝试在网络中的端到端通信中查找模式。它还研究了社区模式,其中社区由不同点的宿主整合而成。
网络中最常见的行为模式表示是通过图建模,其中图论用于查找高度连接的节点(主机)、连接数和打开的端口等[56]。例如,[57]分析流量行为以识别P2P流量。第一步是通过k-means模型将相似的流聚集在一起。接下来,集群由流量分散图TDG表示,其中节点由IP地址表示,节点之间的链路是注册流。最后,在图上应用一组规则来检测应用程序的名称。这些规则考虑了一些特性,比如节点的百分比和图的平均节点度。[58]中的工作提出了一种识别P2P社区的方法,其中网络中的交互用图形表示。节点由元组(IP、端口)构成,连接由节点之间交换的数据包的数量给出。利用已知远程节点的端口分布对P2P网络进行识别,建立多项式分类器来判断图是否代表已知网络之一。
这些技术通常研究的另一个目标是识别流量活动模式,如[59]和[60]中的工程。例如,[59]展示了流量分析图(标记),以便直观地揭示不同类型应用程序的行为。在标记中,节点是IP地址,边缘是感兴趣的流;感兴趣的流是根据研究的目的定义的,以便构建标记来捕获主机之间的相关流量活动。参考文献[60]建立了二部图并计算其相似矩阵。该矩阵将作为聚集相似节点的聚类算法(k-means)的输入。
这种方法也被报道用于检测异常。文献[61]对这一领域的研究现状进行了综述。
对于这个特定的领域,一个主要的目标是根据互联网网络的状态对流量进行分类。在这种情况下,因特网通信的最常见表示为IP流,可以提取代表性特征并用于流量分类。如图1所示,所使用的一些特征提取方法可分为统计流特征、时间序列和基于图等。FR或FS过程是可选的。它们通常与ML一起应用,并且已经在性能方面证明了添加到ML模型的好处[16]。
ML算法可以是有监督的、无监督的、半监督的或混合的,它将依赖于ML任务的执行和可用的数据。ML任务与研究目标直接相关。其中一个最流行的目标是异常检测,以防止可能在服务提供商和最终用户之间造成严重损害的网络攻击。此外,异常检测还可用于识别网络中的故障或错误配置[9]。另一方面,应用程序协议检测也吸引了这一领域的兴趣,特别是那些希望改进为客户提供的服务的服务提供商。例如,提高服务质量是网络资源管理的主要目标之一。
值得一提的是,由于添加了FE过程,ML方法能够处理加密通信。通常,从IP流中提取的特征不会侵入包内容,这允许为加密通信创建分类模型。然而,这种方法在使用HTTP2、VPNs和NAT网络时可能会遇到问题,因为通信会话的分离并不明确。
总之,在图1中值得注意的是,大多数业务分类工作集中于并应用到不同的需求,例如检测应用协议、类别或异常。为了实现流量分类,可以使用前面讨论过的技术;但是,本文只扩展了ML分支。在这一分支中,我们将研究一些尝试实现不同流量分类目标的工作。
本调查报告与所参考的调查报告在介绍工作的方式上有所不同。主要按照第II-A节中定义的顺序组织,这些程序主要解决流量分类问题。在本节中,将按照图2中提出的工作流程,详细介绍调查论文的方法。在此图中,对可以离线(绿色箭头)和在线(黄色箭头)方式执行的块进行了区分。
一般来说,离线过程处理数据采集块存储在网络中的一个或多个监测点的历史数据集。数据收集步骤允许测试Internet中的不同场景。此部分主要在一个时间窗口内收集IP流。此外,该部分还包含若干步骤,例如包管理、流重建和存储。在第IV节中,将回顾与此步骤相关的工作。在离线运行中,必须收集历史数据集;相反,在在线运行中,数据包流被连续地处理。一旦记录了表征问题的数据,就按照第V节中的方法提取相关特征。同样,在在线和离线阶段,分别从历史数据集和分组流计算特征。此时,可以通过FS或FR方法来处理生成的特征,以获得缩减的空间或一组新特征。最常见的过程和工作在第VI节中进行了报告。FR或FS过程还与算法选择和模型部署块有关,因为有些方法根据ML模型给出的性能来选择最相关的特性。
现在,从原始数据集中,基于所选特征获取新的数据集。在离线运行中,新的数据集用于构建模型,以便执行分类和回归任务等。算法选择部分是指选择最合适的ML算法的过程和方法。正如第VII节所指出的,一些研究采用了不同的比较方法来证明或验证它们的选择。最后,模型构建部分集中于参考文献中为实现这些模型所做的努力。最后两个部分也可以在线评估,主要是为了提供不断发展或升级的ML解决方案。还必须指出的是,此工作流表示一个指南,其中包含使用ML进行流量分类的一般步骤。但是,这些步骤的顺序可能会有所不同,也可以找到组合的步骤。
更简明地说,从图2中的每个块中提取特定特征。这些特性在图3中详细说明,图3为参考的论文通常遵循的用于流量分类的一些路径。在该图中,可以注意到,对于数据收集块,将研究互联网流量是否为:真实或模拟、公开可用、加密和标记(基本真实)。这些方面对于描述这个问题将变得非常重要。特征工程模块包括参考论文使用的FE和FS方法。从这个意义上讲,四种特征提取方法被认为是最常见的方法,如基于统计的方法STA-TsB、基于图的方法graph、基于时间序列的方法和混合方法。在FS块中,它将表示参考论文是否进行了该过程。接下来,对于算法选择块,定义了使用的ML方法和要实现的目标。研究的趋势有经典分类CClass、多分类集成方法MClass&E、分类与异常检测聚类Clust和混合与先进技术H&A。研究的分类目标包括应用名称(AppN)、应用类别AppC和异常检测AD。此外,还考虑了其他目标,如用户行为检测和社区搜索等。最后,在模型部署块中,区分了实现ML解决方案(YES)的论文和没有实现ML解决方案或没有指定ML解决方案(NNS)的论文。解决方案的重新配置将是研究的一个关键方面,从这个意义上说,如果参考论文提供了再训练(RTraining)、自学或进化(SLE)或其他/非指定(ONS)过程,则将得到验证。
论文检索是在最重要的学术数据库上进行的。所选文档在标题、摘要或关键字上都有,例如“流量监视”、“流量分析”、“Internet分类”和“加密流量分类”等术语。这些论文发表于2010年至2017年之间,它们位于学术数据库中,如ScienceDirect、ACM、IEEE Xplore和Scopus。必须注意的是,同样考虑了会议记录和期刊的工作。
传统上,历史数据是构建ML解决方案的重要知识来源。一组对于问题丰富而完整的观察结果可以提高ML模型的性能和泛化能力。然而,在流量分类领域,这一方面是至关重要的,因为:互联网网络的复杂性和可扩展性,流量的不断演变,以及不允许数据收集的隐私策略等等。因此,真实的网络流量数据很难用于分析和知识提取。已经开发了一些工具和策略来解决这一差距,本节将对其中一些工具和策略进行研究。
数据收集过程的总体结构如图4所示。在这个图中,按照以下顺序给出了三个层次的抽象:
本节讨论的主要问题有助于找到良好流量分类结果的组件。首先,在第IV-A节中,对用于监视通信量的网络环境进行了区分。随后,在第IV-B节中,将讨论数据测量程序。此过程与所采用的环境无关,并考虑了包提取、流重建和存储等步骤。最后,第IV-C节将概述用流量的真实值标记网络流的重要性。
需要注意的是,在综述的论文中发现了三个主要的趋势:真实流量采集、流量生成和仿真。实际流量通常从网络收集,混淆通信实体(如客户机服务器)之间的私有信息。流量生成试图通过脚本复制或建模真实交互来模拟类似的真实流量条件。最后,流量仿真的目标是将场景设置为与真实场景尽可能接近,其中一个或多个参与者可以有意地模拟网络中的常见交互。
最佳解决方案是从网络中捕获真实的流量,以便获得可靠的真实数据源;但是,此解决方案很难执行,主要是由于隐私问题。尽管一些工作设法获得了监测网络流的实际条件,但这些数据几乎从未向研究界公开。附录A列出了一些公开的数据。
流量生成解决方案主要用于评估网络设备性能、通信安全性、资源管理等。在文献中可以找到几种流量生成方法,其策略主要分为:基于流量的生成和基于模型的生成。基于流的生成是为了重现在真实场景中捕获的流的内容和到达时间,包的内容由虚拟的或随机的有效载荷给出,用于技术测试。一些基于流的生成工具包括BRUTE[62]、iPerf[63]和Ostinato[64]等。例如,BRUTE被设计为生成以太网通信量IPv4或IPv6。Ipref通过调整时间、协议和缓冲区等参数来测量IP网络上可达到的最大带宽。以同样的方式,Ostinato工具可以以不同的速率生成具有不同协议的通信量。相比之下,基于模型的流量生成方法试图再现真实流量的统计特性,并将其表示为一个模型,该模型随后将生成用于实验测试的流量。例如,[65]通过训练隐马尔可夫模型(HMM)生成客户机工作负载。该模型是在网络试验环境中用真实的人与人之间的交互建立起来的,其主要目的是通过操作系统向每个应用程序发送一系列事件,以创建合成数据。训练数据由事件ID、进程IP和事件之间的到达时间组成。最后,该模型可以注入真实的客户机-服务器交互来创建合成的流量数据。此外,基于模型的生成可以在包级别而不是应用级别执行;例如,[66]提出了一种用于包时间和包大小的合成序列生成的HMM。[67]中的工作回顾了一些最流行的流量生成工具,并提出了一个综合工作负载生成器,它可以用作放置流和基于模型的生成方法的平台。这些工具的一个限制是,它们通常不能生成加密的通信量。加密流量覆盖了当前互联网流量的很大一部分,因此对其进行分析时必须考虑其集合。
另一种建模通信行为的方法是基于网络仿真系统。仿真网络环境涉及在两个或多个端点之间构建通信配置。一般的架构是在不同的虚拟机或物理机上设置多个客户机,为每个客户机配置监视点,并设置数据存储组件。为了记录向后和向上的IP流,可以引发产生通信量。[68]-[71]中的工作介绍了流量仿真框架,这些工具是公开的,需要根据感兴趣的流量分类进行调整。[68]提出了一种基于用户行为自动仿真的网络流量仿真框架。模拟了几个场景,这些场景代表了用户与应用程序交互的一系列操作;这是通过一个为Microsoft Windows程序创建自动化脚本或宏的工具实现的。类似地,[69]和[70]中的工作模拟记录图形用户界面的用户行为,以生成因特网流量。与流量生成方法相比,流量仿真可以覆盖使用加密或流量封装的应用程序;此功能对于使用ML的流量分类是可取的。
在本节中,将介绍在Internet网络上执行数据测量的常用方法。此外,如何在监测点进行流量观测。考虑这两个方面是为了更容易地理解如何执行标注任务,以及如何在实际网络环境中实现ML解决方案。通常,网络流量监控最常用的策略之一是在一个时间窗口内提取一组数据包;这种方法是参考文献中使用最多的,本节将对此进行研究。
设置好网络流量环境之后,接下来要解决的问题是如何导出数据包、构造IP流和标记这些流的应用程序名称(如果需要),以便最终存储或使用这些数据。[72]提出了使用NetFlow和IPFIX进行流量提取的综合程序。这项工作将数据测量的步骤定义为:i)数据包捕获,ii)流量测量和输出,以及iii)数据收集。包捕获步骤是指从监测点提取二进制数据的过程,在该步骤中,每个包被视为单个独立实体。在此阶段要考虑的关键方面是样本的大小和采样时间[73]。接下来,流量统计过程旨在将分组聚合为第II-B1节中定义的流。当认为流达到顶点时,即通信完成时,就会发生导出过程。统计和导出过程相互关联,可以统一。最后,数据收集是存储导出的流。引用[72]中相同的工作,对于使用ML的流量分类,可能只需要一个额外的组件,这就是标注任务。此附加组件通常放在流量分类步骤中,其目的是定义每个流的应用程序名称,或丰富知识库所需的任何其他标识符,特别是对于受监督的ML技术。标注任务的重要性将在第IV-C节中讨论。
关于数据测量步骤,有几项工作试图分别改进它们各自的不足之处。例如,[73]提出了一种分组抽样技术的分类方法,旨在根据要实现的目标给出选择最合适方法的指导原则。文献[74]中的工作介绍了运行在商用硬件上的包捕获引擎,这些引擎有助于减少流量分类中的时间响应。使用商用硬件,[75]和[76]实现了包捕获。
监控点的流量观测从数据包捕获开始。在这个组件中,涉及采样和过滤过程。这些包通过统计过程聚合成流,稍后导出以供使用。收集到的流可以存储以供进一步分析或直接由系统分析器使用。流量监控的一些实现见文献。[77]中的工作显示了在工业网络上的实现,而[78],[79]将其应用于家庭网络。[80]中的工作展示了包捕获(Tcpdumb、Wireshark等)
、流量测量(nProbe、YAF、QoF等)
和数据收集(nProbe、flowd、nfdumb等)
的流行网络监视方法的最常见实现。
流量观测的主要挑战之一是实时捕获数据包。涉及大量高速数据。为了处理流式数据,采用了经典的基于批处理的方法;但是,这些方法在关键环境(如多媒体监控[81]或网络威胁)中不能提供快速响应。传统上,基于批处理的方法是在流量统计和输出块之后部署的。它的主要目的是管理和存储导出的流,通常以时间间隔批处理到二进制文件(例如,pcap文件)中。基于批处理的方法必须满足一定的数据处理速度和容错性等要求。在基于流的方法中,前者的要求必须满足更为迫切的要求,特别是数据处理速度。例如,在[82]中的工作以流的方式分析流量观测过程,以减少用于流量分类的延迟。作者提出了一种使用消息传递系统分发导出流的工作流。IP流被转换为数据序列化格式。选定的数据序列化格式是二进制JavaScript对象表示法(BSON)
。最终的目标是提供一个比基于批处理的方法更高效的分布式数据系统。[83]中的工作评估了一个最常用的用于流量监视的分布式流处理系统的性能。作者提出了一个体系结构基准,可公开用于诸如task之类的任务。同一作者将这项工作扩展到比较三个流处理系统,以找到每个系统对于实时网络流处理的适用性[83]。
标注任务过程是指为每个流设置一个标识符;该标识符与通信会话中的特定模式相关,例如应用程序的名称或类型。由于跟踪属于特定应用的流的复杂性,将真实信息与流量轨迹相关联可能是一项繁琐的任务;此外,此过程也是验证流量分类器的关键任务。就我们所知,很少有工作实现可靠的真实值标注,因为最常见的方法是使用DPI工具来完成此类任务。例如,[84]中的工作提出了一个工具,该工具能够通过使用套接过程为每个流建立标签。然而,这个解决方案也使用了DPI工具。
在给定网络环境和数据测量过程的情况下,标注任务可以通过仿真或生成系统来建立。仿真和生成系统是受控制的环境;从这个意义上说,它知道触发的通信量的类型,并且可以将它与收集的流相匹配记录。因此,标注过程可以在监视过程运行时执行,也可以在流量分类系统中自行执行。对于真正的流量监视,DPI或基于端口的工具仍然用于此任务。然而,已经证明,这些技术在未来的分析中增加分析的不确定性和误差,特别是相对于ML技术来说。参考文献[85]量化了使用端口分析和DPI工具将协议标签与流关联时获得的误差。研究表明,端口分析仅对一组协议是准确的;而DPI工具提供了更好的结果。作者通过实验证明,对于P2P流量,DPI工具的失败率超过14%,对于TCP和流媒体应用上的Skype,DPI工具几乎失灵100%。尽管如此,在这个问题上可以找到不同的观点。例如,由[86]所做的研究显示了几个DPI工具之间的性能比较,在大多数情况下,真实标签和DPI标签结果之间的误差很低。重要的是要考虑到,在所有这些比较中,所使用的数据对结果有重大影响;以及DPI工具的版本和进行研究的年份同样有很大的影响。一般来说,流量跟踪显示出通信模式的飞速增加,促使流量分类器(如DPI)不断升级其引擎。此外,DPI工具在存在加密流量时是不准确的,这种情况使得它们非常不适合标注任务。
一些工作试图提出正确定义真实标签的策略或架构。[87]中的工作评估了以恶意检测为重点的最常用的流量数据测量方法,并提出了一种半人工实践来定义真实标签。此外,出现了支持流量监控和标记的不同工具,如Tsat[88]
和基于志愿者的系统[89]
等。此外,[90]提出了一种大规模网络监控和分析的框架,称为DBStream
,它是网络监控数据的数据仓库,能够处理来自各种来源的数据流。最后,为了保留基于用户行为的语义关系,本文提出了一种新的事件流标记策略[91]。
作为本节要完成的最重要的方面,我们可以提出一些建议,并强调未来的以下工作。
这一部分定义一些ML中的FE方法,研究了四组主要的FE程序。这项研究将使我们对每种方法进行概述性的讨论,并指导读者选择最方便的方法。在参考论文中发现了三个主要的组:基于统计的特征、基于图形的特征和基于时间序列的特征,这将在下一节中介绍;此外,第V-D节涵盖了一些杂项和混合方法。有关更详细的研究,请参阅[92]中的工作,其中从协议、包和流级别详细说明了数据构造、FE和FR的过程。此外,在[93]中的工作提出了特征提取的自动过程。尽管在[93]中提出的工作主要集中在检测隧道连接,但它提供了一个逻辑工作流程,用于提取和处理流程以获得特征,这可以被ML技术使用。
从分组流中提取的特征主要是基于统计的特征,这些特征是在假设网络层的业务具有对于特定类型的应用来说是唯一的统计特性(例如流持续时间、流空闲时间、分组到达间隔时间和分组长度的分布)的情况下定义的,可以使不同的源应用程序相互区别。在这种假设下,[94]提出了249个统计特征,这些特征可以从流量网络流量中提取出来。
诸如到达间隔时间(IAT)
和分组长度
等属性似乎是考虑的最重要的特征,它们的度量标准包括最大、最小、平均和标准偏差等。此外,从a到b(反之亦然)发送的包的数量、控制包以及作为传输协议的包头中的一些其他属性可用于对通信网络建模。
如第IX节所述,大多数参考论文都倾向于基于统计的特征。在实践中,由于其简单性,很大程度上使用IP流的统计特征。基于统计特征的流量特性已经得到了大量的报道和论证。例如,对于异常检测,[92]列出了单向流和双向流的所有经典统计特征以及内容类型。[10]提出了一个类似的工作,从流和包级别来标记FE方法。
文献[95]对统计特征进行了全面的研究。作者对10个分类器进行了测试,结果表明这些特征使分类器获得了良好的性能。另一方面,[96]表明,仅通过会话中的数据包计数和字节交换就足以识别某些应用程序,特别是P2P应用程序。
文[97]研究了TCP连接中数据包重传引起的异常。包重传可以改变包序列,因此,无法基于统计的方法来执行准确的分类。作者提出了一种丢弃重传数据包、检测和使用原始数据包的系统。
一般来说,基于统计的特征在这一领域通常是首选的,因为它们的计算简单,这在处理高速通信时非常重要。此外,这种方法不会侵入数据包内容,允许在尊重隐私的同时对非加密和加密的通信均可用。
Internet网络的内在组成允许将其交互建模或表示为大型互连图。因此,该方法利用图论从网络中寻找有价值的信息。假设节点是主机,网络可以看作是一组相互连接的节点,网络的边缘表示主机之间的交互作用。这些交互可以看作是交换数据包的通信会话。通常的步骤是设置一个监视点,例如路由器。通过监视点的分组可以聚合为流。[98]给出了流量分散图(TDG)
的构造方法,以及如何找到量化指标来提取信息。在TDG中,所使用的度量通常是图的基数,包括仅具有传入和传出边的节点、图的对称性和连通性以及节点的平均度等。这些度量用于训练分类器,该分类器将应用程序分组为协作或不协作。另一方面,为了比较两个或两个以上的TDG,作者提出计算图的相对包含度、边相似度和边波动率。这些度量用于检测应用程序,如游戏和DNS。
从另一个角度来看,这些图可以用来表示网络中的流量活动。例如,[59]中的工作展示了流量活动图(标记)来揭示主机之间的行为。与前面的情况一样,节点可以被视为主机,而边缘是打开会话中的流。可以找到不同的变体来创建边之间的链接;例如,在[58]中的工作提出了将边作为一对IP和端口,这是由可以为P2P通信打开多个端口的应用程序行为驱动的。
统计图分解技术被广泛应用于这些方法中以提取最主要的子图。例如,非负矩阵因式分解(NMF)
或正交非负矩阵三因式分解(tNMF)
旨在提取支配子结构并表征其结构性质,以分析网络应用。利用这些结构特性,应用K-均值来发现不同的应用行为[60]。
总之,这种方法的主要目的是通过图表示来建模应用程序行为,并试图发现Internet网络图之间的相似性。这些相似性将允许将图形分组到应用程序池中。这种相似性可以基于不同的特征;提取的最常见特征是图的结构属性、图的连通性度量和基于社区的特征,例如连通良好的图之间的密度或相似性[99]、[100]。
一般来说,时间序列数据可以看作是按时间顺序索引的事件序列。从这个意义上说,FE通常是在离散时间数据上执行的。
网络流量问题具有适合作为事件驱动问题处理的特点。一对(例如,客户机-服务器)之间的交互强烈依赖于按时间顺序排列的事件,例如打开或关闭通信会话、启动或完成数据传输等。这样的场景促使我们使用时间序列特性或数据驱动的方法来发现网络中的模式。
在这个领域中,大多数基于时间的方法都试图找出到达时间(IATs)和属于流的包大小之间的关系,以便通过时间序列表示来描述应用程序模式。例如,[101]中的工作提出了单向流的时间活动向量,该向量考虑了流的活动时间、流是否显示活动等特征。此外,可以发现其他不同的方法意图使用网络的时间行为,例如[102]。
特别地,信号处理方法可用于将时域输入转换为频域输入。其主要目的是获得信号数据的等效幅度和相位,以揭示可用于流量分类的新特征。例如,在[103]中的工作提出了一种用基于傅里叶的方法检测异常的方法,对于这种情况,在一段时间内发送和接收的包被分析为时间序列输入。类似地,[104]基于小波导频(WL)技术处理FE过程。在时间窗中将双向流转换成传输字节数的时间序列,然后利用WL获得多重分形特征。多重分形表示是指一种空间或时间域的统计尺度,其主要目的是描述特征的不规则或碎片形状,以及传统欧氏几何无法分析的其他复杂对象。
通常,传统上这种FE并不是应用于流量分类;然而,这些特征被广泛用于识别异常,如[10]所述。
下面的分类提到了发现的一些方法,但是,还有其他有趣的方法来进行特征提取。这些方法试图结合或提出更适合分类问题的新特征。例如,Bag-of-Flows(bof)
源于基于统计的方法,它只在构建双向流的方式上有所不同。BoFs包括由同一应用程序注入的一组流量。BoF可以定义为一组共享同一目的地和源IP的流,这些流表示连接的已打开端口的变化。这种行为常见于通信会话中。BoFs计算了所有流量的统计特征。用所有的流训练ML模型,每个包都有一个通过一些标准定义的标签;例如,标签在包中的出现率很高。对于新的传入流,使用ML模型获取类标签;跟踪流可以与bof关联。一些工作已经测试了使用bof来提高使用ML分类和聚类方法的性能的优势[105]–[107]。
另一方面,基于统计的特征可以与基于图形的特征相结合,以获得更好的分类性能,如[57]中在流量分类框架中提出的,以及[54]中在异常检测中提出的。
研究包从源发送到目的地的顺序、序列和时间,可能有助于用基于时间和事件的方法描述具有相关行为的应用程序。例如,[108]中的工作仅使用序列包间时间和有效载荷大小来构建流的序列作为分类模型的输入特征。另一方面,[109]为他们的工作提供了时间序列和基于统计的特征。时间序列特征是通过应用程序的句法结构获得的。句法结构用有限状态机表示。其主要目的是根据机器状态来模拟流的分组序列,包括分组长度和分组方向(向前和向后)。
本节实质上介绍了所参考的FE方法的综合,并对其进行了定性描述和比较,并简要讨论了未来的发展方向。
当给出大量特征时,ML模型可能会有一些问题。由于增加计算负担、降低精度、增加过拟合等,这些模型会被修剪。这些问题通常与维度诅咒有关。在这一领域中,FS被广泛应用于选择最相关的特征,提高ML模型的精度。ML进程可能会也可能不会与FR或FS进程一起运算。一些研究表明,要完全获得区分应用程序与其他应用程序的模式,只需要少量的特征。文献[151]-[153]研究了流量分类中最相关的统计特征。在[152]中,使用了几种FS技术来获得最重要的特征,采用一种新的方法选择最小的特征集。将结果与三个数据集中每个特征的优化度、相似性和稳定性交叉验证;结果给出一个小的数据集,在6到14个统计特征之间,通过精度提供最佳的测量性能。
文献[152]研究了FS和FR在利用ML进行流量分类中的重要性。使用了10个网络流量数据集来说明不同的FS技术的优缺点,如信息增益、增益比、主成分分析PCA和基于相关的特征选择等。作者提出了三种新的度量方法来度量结果特征的性能。这些度量基于分类器的准确性、每次测试结果在不同条件下的稳定性以及FS和FR技术给出的特征集之间的相似性。结果表明,这些新的度量方法都不能提供良好的性能,因此,提出了一种将FS和FR解决方案相结合的新方法。在文献[153]中,前一项研究通过一个称为全局优化方法GOA的优化过程来估计最优和稳定的特征。GOA结合了多个著名的FS技术,在不同的流量数据集中产生一个可能的最优特征子集;然后最优熵阈值将选择稳定的特征。
数据中的多类不平衡行为通常出现在流量分类中。从这个意义上说,[143]中的工作再使用ML进行流量分类时研究到了这个问题。作者提出用基于熵测度的度量为每一类选择一组特征。类最相关的特征是那些高于预定义阈值的特征的值,特征子集被发送到集成分类器。类似地,[154]提出了一种新的FS方法,其目的是获得最相关的特征,同时减少多类不平衡。文献[155]提出了一种能够区分最相关和不相关特征的模型。该模型是基于具有代表性的深结构深度信任网络DBNs的。DBN设计的一个主要特点是可以从第一层获得高层特征表示,而到最新的底层特征表示。这一特性使得它们适合于本研究所报道的特征生成。
由于网络的动态性,流量数据会从一个数据集影响到另一个数据集,影响有多个方面,其中性能是最重要的一个方面。因此,我们可以得出以下研究:
在这个领域,使用各种ML算法实现不同的解决方案是很常见的。由于ML算法数量众多,在流量分类中寻找最合适的ML算法是非常重要的。特别是,大多数的工作都是基于建立和测试几个模型,直到找到性能最高的模型。在本节中,我们将详细介绍所选的工作,以概述在选择ML算法时所面临的挑战。
在回顾的过程中,我们会注意到,这些研究的重点是要实现的特定目标:识别应用程序的类型、协议应用程序、异常或隧道连接。读者会注意到,大多数论文的目的是执行分类任务(见第VII-A节)。此外,第VII-B节介绍了使用多分类和集成方法的具体工作。此外,一些论文在第VII-C节中以无监督的方式处理分类问题。最后,第VII-D节将研究混合和高级方法。
值得注意的是,处理未加密和加密跟踪通常单独描述。这种区别通常是由于未加密通信量的行为可能与加密通信量的行为不同,这是出于使用不同通信协议的动机。然而,在本节中,主要是从ML的角度研究流量分类问题。因此,本文重点介绍了所选择的ML算法,并在第VII-E节中对加密和未加密业务进行了明确的分离。
有监督算法常常采用标记的数据进行训练以选择最佳的模型,进而得到衡量分类性能的模型。例如,对于未加密的流量,[95]和[117]中的工作给出了使用统计特征的几个分类器之间的比较。使用分类准确度和计算成本进行了比较。在给定各种数据集的情况下,不同的分类器给出了最佳性能;一般来说,考虑到数据集的某些特性,可以找到比其他分类器表现更好的分类器。ML算法的模型结构和学习过程更适合于某一类问题。
[123]中的工作面向应用程序类别(视频流、VoIP等)以提高QoS。在不同的数据采集条件下(如丢包和高或低延迟)进行了一些实验。计算了几个性能指标,评估出了性能最好的分类器。这项工作中指出的一个主要原因是类不平衡的存在;此外,互联网通信的中断对分类器产生了噪音。与网络流量中常见的类失衡行为有关。[126]提出比较有偏和无偏数据训练的支持向量机分类器的结果。与其他类相比,有偏数据包含大量只属于一个类的样本;相反,在无偏数据中,所有类都具有相似数量的样本。结果表明,样本量较低的类别提供了10%以上的假阴性,而在有偏情况下,总体准确度没有显著差异。另一方面,[156]提出用代价敏感学习来解决多类不平衡问题。其思想是计算一个类中错误分类流的代价。这个结果产生一个类似混淆矩阵的结构,它包含了每个类的先验加权概率。根据流量的几何平均值,将权重定义为启发式函数。代价函数有助于在训练具有不平衡数据的树型分类器时获得更好的性能。
文献[109]将统计特征与时间序列特征相结合,建立了流量分类的隐马尔可夫模型。它们说明了所选应用程序的语法结构,如BitTorrent、Skype和Emule等。结果表明,该方法比一些基于统计的方法具有更高的分类精度;然而,模型的构建需要标记数据,此外在网络中出现新应用时需要再训练。
对于异常或恶意流量检测,广泛应用的有监督学习和基于统计的特征,例如[116]识别Web中常见的公开的威胁,以及[157]比较多个ML模型进行入侵检测。Lalitha和Josna[158]实现了无线传感器网络场景,以捕获特定环境条件下的流量。然后,训练高斯混合模型来检测网络中的正常和异常行为。另一方面,一些工作试图在移动/蜂窝网络中部署分类解决方案。例如,[130]在固定时间窗口中收集从移动网络提取的IP流量。通过计算正常和异常流量的统计特征,训练贝叶斯分类器对海量网络用户的流量行为进行分析。在[136]中的工作收集了一个大型大学校园Wi-Fi控制器的网络轨迹。这些控制器将接入点连接到校园骨干网,允许无线设备访问Internet。跟踪来自恶意和良性域之间的网络流量,并在这些跟踪上计算基于统计的特征。训练一个二进制ML分类器进行检测恶意域名。
网络上加密流量的激增显然呈指数级增长。公开加密的通信量会引起网络中不同参与者的注意,其方式与未加密的情况相同。此外,监督学习是加密流量最流行的方法。从这个意义上讲,[7]中的工作在理论上比较了创建用于加密流量分类的ML模型的几个工作。在比较中,我们注意到比较这些方法的困难,因为每种方法都使用不同的和私有的数据集,其中大多数数据集的标记过程不清楚。
可以想象,为未加密的通信量部署的所有方法对于加密的情况都应该有效,特别是在FE过程中不侵入包内容的工作(例如基于统计的)。然而,有可能发现新的加密方法或协议在不同应用程序之间的行为也不同。例如,在[159]中的工作表明,两个加密的应用程序可以使用监督学习进行分类。由于加密通信的性质,在不考虑有效负载信息、IP地址和端口号的情况下,选择了SSH和Skype使用统计特性(如IAT和数据包大小)评估多个分类器。在相同的背景下,Alshamari和Zincir Heywood[111]测试了不同的ML方法来对VoIP加密流量进行分类。他们提出了一种只使用统计特征的特征提取方法。其他方法遵循相同的过程,保持统计特征为公共点,并改变分类器或数据集,例如在[115]中使用朴素贝叶斯,在[114]中使用决策树。
在参考的论文中发现的一个特殊点是,它们通常集中在一定程度上检测一种加密类型。例如,在[129]中的工作提出了一种两阶段的方法:1)使用签名匹配方法识别安全套接字层协议(SSL)或传输层安全协议(TLS)下的数据流,2)计算统计特征来对这些流中的应用程序进行分类。其中一个不足是签名匹配方法是基于标准的协议规范和文档,或者基于人工观察和分析。
VoIP通信越来越受欢迎,其识别是电信领域中的一个关键因素,无论是对其进行优先级排序还是对其进行失效处理。因此,提出了几种方法,如[114]、[118]、[128]、[160]和[161]中的工作。其中一些作品试图描述和识别Skype,由于其复杂的通信协议,Skype是网络中最复杂的VoIP应用之一。
对HTTP2或IPsec连接中的应用程序进行分类非常复杂。例如,[162]-[164]中的工作是用加密的流量数据训练ML分类器。启动了几个应用程序,没有采用VPN,捕获基于统计的特性。随后,对多个ML模型进行训练和测试,得到了满意的结果。另一方面,对于隧道连接,回顾定义2中数据流的特征,并不能应用特征提取过程。当实际中嵌入了更多数据流时,隧道连接被识别为仅一个流。这种情况还没有得到大量的研究,然而,一些工作的目的是首先确定一个隧道连接,如在[93]和[110]。基于ML技术的一种有趣的方法旨在检测HTTP2连接中的拒绝服务(DoS)攻击[112]。作者准备了一个正常流量和攻击流量的网络环境。通过一个特征过程获得数据集,在该过程中计算统计特征,然后通过一个特征降维过程来减小特征空间。最后,对多个分类器进行了二值分类检测。
多个分类器的组合可以解决经典分类器在流量分类领域中遇到的泛化问题。这些类型的解决方案旨在创建更专业的分类器。例如,[149]提供了几个ML模型的组合,以获得更好的性能。使用相同的数据对多个分类器(两个基于树的、一个基于规则的、两个基于统计的和支持向量机)进行训练;此外,还包括一个DPI工具作为分类器。所有的分类器都对新输入进行评价,并采用最大似然法、DempsterShafer法、Enhanced DempsterShafer法和perfect combination法等组合方法对结果进行整理分析。例如,在最大似然组合中,所有分类器对一个类进行投票,投票最多的类是输出。文献[165]中的工作比较了七种基于决策树的集成算法的性能。研究表明,大多数集成算法在性能上克服了经典的单分类器方法。实验中发现的主要缺陷是模型训练和在线分类的时间开销。[121]中的工作建议计算特征提取过程并将其划分为子集;该过程应用于三个不同的案例研究。这些情况与原始数据集不同,例如有或没有零负载数据包。对每种情况计算统计特征,并训练专用分类器。另一方面,在[143]中的工作通过FS过程定义了多个特征子集;每个特征子集是关于特定的应用协议类定义的。对每个子集训练一个分类器,并通过投票过程给出输出。在这项工作中,我们认为相关的特性可能会因类别而异,以及在类别不平衡资料的存在下,它会如何影响分类器的效能。
无监督方法通常与异常检测相关,因为它能够检测与正常或标准条件不相似的模式;而且还可以执行分类任务。从这个意义上说,聚类技术在网络流量分类中得到了广泛的应用。本节致力于将无监督学习应用于互联网流量分类的工作。
利用无监督学习对网络流量进行分类的最常用方法之一是K均值法,它根据样本与聚类中心的相似性建立K个聚类。在[106]中的工作使用K均值和流的几个属性进行网络分类。在[140]中,改进了使用K均值时簇的经典随机初始化。初始簇由流属性之间的方差定义。在构建集群之后,使用概率分配来执行映射集群应用程序。最大似然估计标记样本对K个聚类的隶属度。这种方法的一个主要缺陷是必须预先定义集群K的数量,将解决方案绑定到固定数量的标签上。此外,不考虑噪声样本和新标签。
对于加密流量,[145]中的工作使用K均值模型来识别HTTPS连接中的加密视频流,获得了良好的平均精度。在不同的比特率下提取数据集,以证明在不同的场景下(IATs的变化)分类器的性能。类似地,[166]中的工作使用K均值来识别P2P流量。在[167]和[168]中给出了无监督技术之间的一些比较,这反过来可以提供在面对未标记的加密流量时使用的方法的见解。最后,由于类的真实标签是未知的,必须为使用聚类技术部署足够的指导。例如,[169]提出了一个框架,该框架允许无监督方法考虑类的真实标签来进行流量分类。
在本节中,将介绍一些使用混合、半监督和新方法进行流量分类的工作。
首先,有一些方法将有监督和无监督学习相结合,采用两阶段过程对网络流量进行分类。第一阶段负责对同一类型的流量类(如视频流、P2P torrent等)进行聚类,第二阶段使用监督模型对应用(Youtube、Neflix等)进行分类。在[137]中的工作提出了一种两阶段的聚类,一个使用统计流特征,另一个使用包有效载荷特征。第三个阶段将两个聚类结果集成起来,创建一个分类器。构建了一个词包(BoWs)模型来表示具有流量统计特征的簇的内容,然后应用潜在语义分析(LSA)来根据其负载内容聚合相似的流量簇。[122]中的工作使用K均值对业务类进行分组,并且通过决策树对应用进行分类,以便为结果提供更大的粒度。类似地,文献[113]提出了一种结合K均值和KNN的混合算法,用于对加密流量进行在线分类。该组合是一个两阶段的过程,其中K-means在实时嵌入式环境中对流量进行集群。通过一种基于缓存的机制来评估性能,该机制结合了基于端口和基于统计的分类元素。
此外,还使用了更专门的算法来获得更细粒度的性能。作为一个例子,[120]提出了一种**基于在线序列极值学习机(OS-ELM)**的入侵检测分类系统。使用FS技术的集合丢弃不相关的特征。文献[144]提出了一种Wavelet Kernel Extreme Machine Learnin(WK-EML)和遗传算法(GA)的流量分类方法,并结合统计特征对网络流进行分类。遗传算法允许最优地找到使用WK-EML所需的参数,从而训练模型,而不是使用经典的随机设置方法。
文献[170]提出了一种识别加密应用的新方法,该方法提出了一种无需显式特征提取过程的流量分类问题。作者没有使用经典的统计特性,而是构建了一个可以从数据包内容中学习的深度学习架构。该方法不像DPI技术那样侵入数据包检查关键字,而是通过深度学习架构来学习每个应用程序的新特性。特征提取过程是嵌入的,这些新特征没有实际意义,而是由深层神经网络发现的二元关系数据。最后一个特征使得它适合于加密的流量,并提出了一种替代基于统计特征的方法。但是,尚未对它与经典FE分析和分类方法的界限进行量化。
这一节的摘要是对论文结果的简要描述。此外,还对未来的发展方向作了简要的讨论。
本节的主要目的是检查ML解决方案在实际网络场景中的实现和重构尝试。本研究仅以文献为参考。
在论文中,研究了几种FE、FS和ML方法,这些方法依次构成了对流量进行分类的必要步骤。出现的主要问题是如何将ML解决方案部署到实际场景中。在本文回顾的大部分文章中,没有实现ML解决方案,它们通常展示了概念的证明。然而,上面的一些工作给出了一些关于如何部署ML方法的提示。此外,分析了ML解决方案重构的重要性,它在流量分类任务中起着重要的作用。
互联网最重要的特点之一,就是传输速率通常很高,网络规模很大。这些主要特性使得分类器的实现工作具有挑战性。最常见的方法是在流量监视工具上部署ML解决方案(参见第IV-B节);因此,每次观察到分组流时,都有可能执行分类。例如,[180]使用支持NetFlow的路由器来监视跟踪,跟踪以在线方式转发到ML分类器。NetFlow是一个Cisco协议,旨在从路由器和交换机导出IP流信息。类似地,dbstream[90]将流量分类解决方案集成到其监控平台中。另一种方法是在独立的分类模块中实现ML解决方案;例如,[133]中的工作将ML解决方案实现到基于现场可编程门阵列(FPGA)的嵌入式系统中。FPGA设备使用网络层的信息,如数据包大小和IATs。
然而,监控模块可以直接包含分类模型,也可以不直接包含分类模型;捕获的信息可以发送到服务器或业务控制器,在服务器或业务控制器中执行对业务进行分类所需的操作[139]、[158]。[110]中的工作提出了一种使用简单代理服务器的实现。有几个主机连接到此服务器,VoIP和其他流量被注入其中。特别地,VoIP检测算法被放置在代理服务器上以便优先处理该流量。[113]中的工作将其ML解决方案实现到服务控制引擎(SCE)中,SCE是一个Cisco平台,用于基于会话的分类和控制所有网络流量。参考文献[127]提出了一种在网络控制器中实现的QoS感知流量分类框架。该控制器采用软件定义网络(SDN)技术,允许执行监控和流量分类。
到目前为止研究的大多数ML解决方案中发现的一个主要问题是,当网络中出现新的模式时,必须更新ML模型。由于网络的动态性,基于ML的分类快速过时。因此,必须考虑到自我学习、进化或再训练策略。一般来说,对于大多数ML技术,更新意味着使用新的历史数据集(通常被标记)重新训练模型。这意味着在网络上出现新的应用程序或行为时,必须不断地对模型进行重新训练。执行此步骤的成本可能很高;尽管如此,如果不考虑这一点,模型的性能将面临风险。
在这个问题上,[181]提出了一种用于P2P识别的自学习流量分类器(SLTC)。作者提出了一种被动监测组件在特定链路上观察网络的体系结构。分布式监控组件嵌入了分类器(基于有效载荷检测)。如果这个组件能够正确地对流进行分类,那么它将被标记为已知,否则,流将被发送到逻辑服务器。逻辑服务器负责更精细的操作,以便在监视组件出现故障时识别通信量。此外,逻辑服务器转发策略规则,以向监视组件提供新的行为。需要指出的是,在逻辑服务器中执行的操作基于基于统计的方法、有效负载检查和应用程序分析;但是,可以修改此策略,将其解决方案替换为ML解决方案,为基于ML的联机分类器定义重新训练或更新策略。相比之下,文献[107]提出了一种自学习智能分类器(SLIC)用于流量分类。SLIC的学习过程只需要少量的有标签的流,系统就可以进化成一个新的有无标签数据的配置。SLIC使用BoFs结构,使用KNN将一组流分类到同一组中。首先,用标记样本训练KNN模型。训练完成后,系统可以将未标记的样本标记为新的训练样本,并批量保存。当批处理达到定义的阈值时,激活再训练过程,将新的训练样本引入KNN模型。是否引入新的训练样本取决于预测步骤,在预测步骤中,基于样本与其最近的两个类之间的距离的两个条件将允许做出最终决定。尽管该系统在两个数据集的流量分类方面表现出了良好的性能,但在基于距离的方法容易失败的情况下,可能会出现不平衡或高维数据的问题。此外,应该量化这种方法的计算成本。
在ML领域,半监督学习可能有助于处理网络特征进化和标记数据缺乏的问题。半监督工作流程可以在线方式处理ML模型的更新。例如,[141]提出了一种半监督的流量聚类方法。首先,采用基于集的等价约束高斯混合模型(GMM),并遵循基于期望最大化(EM)的聚类算法。半监督过程是利用边缘信息进行处理的,目的是利用高斯模型建立一组给定约束条件的流。边缘信息原则是基于BoFs定义的。最后,利用集合中的流的经典统计特征将应用协议与EM进行聚类。参考文献[135]也使用半监督方法解决了流量分类问题。支持向量机(SVM)采用协同训练方法,在不同的特征集上训练多个分类器。当历史数据集同时使用标记数据和未标记数据时,使用此方法;其中,考虑未标记数据也可以为模型提供更多的知识。[131]中的工作提出了类似的方法。文献[146]分析了基于时间和基于主机的网络入侵检测特征。该方案基于一种半监督方法,该方法通过带有标记的样本训练分类器。利用该分类器得到未标记数据的隶属度向量。利用隶属度向量得到模糊群,并将模糊群进一步合并到训练集中进行分类器的再训练。
在本节中,我们将概述流量分类在三个重要网络基础设施中的应用/实现。从这个意义上讲,我们对这些领域中使用ML的IP流量分类进行了简要的分析。
在蜂窝网络中,可以使用端口、分组有效载荷[182]、[183]或流统计分布在不同级别执行移动IP业务分类。在这个问题上,当从蜂窝网络跟踪中获得统计属性时,应用ML学习。比如,在一个固定的时间窗口从移动网络中提取收集到IP流量。通过计算正常和异常流量的统计特征,训练贝叶斯分类器对海量网络用户的流量行为进行分析。[184]中的工作提出了一种正确收集和标记移动IP网络轨迹的方法,而[24]中提出了在同一领域中定义标签的分类法。[185]中的工作针对ML解决方案的实现提出了一个从移动网络中正确提取IP流的细粒度过程。在[186]和[187]中可以找到关于这一问题的更多信息。例如,在[186]中的工作公开了蜂窝网络的一般架构,以及可以部署被动监视的可能位置,例如在分组交换(PS)核心中。为此,被动监测点的基于IP的数据可以通过ML分类器按照本调查论文揭示的完整过程进行分析。
以类似的方式,在WiFi网络中,可以提取IP数据,以便应用ML方法进行流量分类。例如,[136]中的工作从一个大型大学校园的Wi-Fi控制器收集了网络轨迹。这些控制器将接入点连接到校园骨干网,允许无线设备访问Internet。跟踪来自恶意和良性域之间的网络流量,并在这些轨迹上计算基于统计的特征。为检测恶意域,训练了一个二进制ML分类器。类似的方法可以在[158]、[187]和[188]中找到。与蜂窝/移动网络和WiFi网络的区别在于用于数据交换的技术可能会影响速度、成本和安全性。
最后,在卫星网络中,流量管理是一项关键任务,因为它可以提高服务质量。通常,流量数据是从卫星互联网服务提供商(ISP)获取的。这方面的工作旨在对大型网络中的互联网流量进行分类和分析[189]–[192]。其原理与以往的情况相同,采用被动监测的方式进行流量分类。这些监视点可以位于大型ISP网络的路由器[189]、[190]或存在点(PoP)[191]。另一种新兴的方法是在卫星地面网络中使用软件定义网络(SDNs)。在SDNs中,由于在[193]和[194]中公开了流量分类,因此可以很容易地将其部署在SDN的主控制器中。
总之,本节介绍了基于ML的流量分类在三个相关的Internet网络基础设施中的可以使用本文提出的方法步骤的可能应用。
最后,就本节内容提出了一些重要的问题和意见。
这项研究主要指出了用ML技术实现知识抽取的一些重要步骤和挑战。所提出的过程包括数据收集、特征工程(FE、FR和FS)、算法选择和模型部署。问题是:哪条路是最好的,或者如何开始寻找相关的参考资料?选择了49篇论文,因为它们在附录A中展示了使用各种流量分类策略的完整过程,展示了前面章节中提到的挑战。图2总结了本次参考的结果。绘制路径是为了了解通常采取的程序趋势。关于图5最重要的注释如下。
图5中的这一块与第IV节中观察到的特征相关。首先,论文分为两部分:使用真实场景和仿真场景进行流量观测的论文。不考虑流量生成,因为这不是用ML进行流量分类的常用方法。值得注意的是,这两种情况下的论文数量是相似的。接下来,研究数据是否公开。模式与前一个案例相同;但是,大多数有实际流量的论文都使用了公开的数据集,有些在附录A中列出。
关于加密,我们发现大多数方法在提出到加密案例的映射之前都是从非加密研究开始的。本文的综述主要是对60%的论文进行了非加密数据的整理,其余为加密研究。接着,真实标签通常由DPI工具定义,在DPI工具中很少有论文定义了一个严格的流程来标记流。该模块的一般结论是,趋势是对已知的公共数据使用真实的流量测量,但也要设置网络架构来模拟流量。大多数流量是未加密的,并且通常没有流的真实标签。
本区块由第V和第VI部分构成。考虑的第一个方面是执行的FE的类型,而第二个方面报告是否执行了FS过程。从图5可以注意到,最常见的趋势是使用基于统计的(STATsB)特征的FE过程,之所以预期这种情况,是由于这些特性可以在加密和非加密流量分析之间互换,而且它们不会侵入数据包内容,而且它们的计算量很少。
在算法选择上,经典分类(CClass)占主导地位,这是意料之中的,因为本研究的重点是流量分类。然而,一些方法在多分类集成方法(MClass&E)方向做了一些努力。最后一个原因是类不平衡和泛化问题。此外,还可以发现使用聚类(Clust)和混合或改进(H&A)技术进行流量分类的一些努力。在目标实现方面,应用分类(ApPC)和协议(AppN)是常用的搜索方法,而异常检测(AD)也是一个研究热点。其他目标包括检测用户的行为、查找社区和创建用户配置文件等。
最后,在模型部署块中,关注的是实现该解决方案的论文数量。此外,了解所选论文提出的重构策略也很重要。最后一个很重要,因为网络的持续动态性会导致一些ML方法出现问题。
从图5可以注意到,超过65%没有指定(NNS)解决方案的实现。以同样的方式,大多数解决方案都不提供重构方法(ONS);尽管有些工作提出了计划的重新训练过程来升级其解决方案。自学习或进化(SLE)在参考的论文中没有发现;然而,这对于一般的ML技术来说是一个具有挑战性的课题。
最后,在总结分析的基础上,用红色标出了参考论文中较少采用的方法。从图5中可以注意到,所研究的大多数工作没有使用加密数据,并且标记流量的真实值的过程。在特征工程的过程中,很少有人应用FS来求解。就所使用的ML方法而言,研究得较少的是无监督技术、多分类和集成方法。最后,在模型部署阶段,很少有工作在实际场景中实现该解决方案。此外,重构过程不处理进化或自主重构。鉴于这些情况和前一节的讨论,总结出以下未来趋势。
本文介绍了利用ML技术实现流量分类的一般过程。程序的每个步骤都有一些相关的工作,遵循不同的路径来实现结果。这样,参考的论文被组织起来,每个步骤都定义了每一篇论文所属的类别。这些类别以图形的形式显示,说明了该领域最常见的趋势。每一节都进行了讨论,以确定其最常见的趋势和挑战。
这项研究试图揭示流量分类领域的几个挑战。例如,使用加密通信量是一项挑战,在没有数据包内容的情况下,特征类型应该导致正确的分类。当前公开标记的数据很少,这使得比较ML解决方案变得很困难。接着,对于ML中的知识提取,分类任务是最流行的。然而,多分类和集成方法的优点使得它们在处理流量分类中的类不平衡和泛化等问题时具有很强的吸引力。聚类方法有助于发现网络流量中新的或异常的行为,因此,该领域的研究值得推广。最后,这类解决方案的实现仍然是一项需要完成的重要任务,由于影响因素不同,大多与解决方案的性能和适应性有关。
对于文献中的大多数调查,本综述的不同之处在于,它展示了网络流量分类所需步骤的全貌。此外,还分析了该进程各个阶段的挑战,并概述了未来的方向。总而言之,本书要强调的一些最重要的方向是:
本节在表IV中列出了流量分析中最常见的公共可用数据集。
表V描述了表征过程的趋势。表VI描述了特征工程过程的趋势。表VII描述了算法选择过程的趋势。表VIII描述了模型建造过程的趋势。
写在最后,安利一下github地址,收集了一些流量分类领域的论文,欢迎一起交流
https://github.com/WithHades/network_traffic_classification_paper