首页> 中国专利> 基于Spark和聚类的网络异常流量分析方法及系统

基于Spark和聚类的网络异常流量分析方法及系统

摘要

本发明提供了一种基于Spark和聚类的网络异常流量分析方法及系统,使用Spark大数据处理平台,通过聚类对网络流量进行聚类分析,通过检测算法对检测算法对分类后的网络流量进行异常流量分析。在经过初次聚类的基础上,利用马氏距离判定异常流量簇以及正常流量簇,以达到区分正常流量以及异常流量的目的。为了进一步提高该方法的效率,在基于Spark的聚类流量分析中,采取了将K‑means算法并行化的手段,通过并行化提高算法计算效率,降低算法对机器内存和内核处理的要求,提高算法实用性。

著录项

  • 公开/公告号CN112511547A

    专利类型发明专利

  • 公开/公告日2021-03-16

    原文格式PDF

  • 申请/专利号CN202011401551.0

  • 发明设计人 张小飞;伍军;施远;徐传华;

    申请日2020-12-04

  • 分类号H04L29/06(20060101);H04L12/24(20060101);G06K9/62(20060101);

  • 代理机构31236 上海汉声知识产权代理有限公司;

  • 代理人胡晶

  • 地址 210000 江苏省南京市江宁经济技术开发区诚信大道19号

  • 入库时间 2023-06-19 10:14:56

说明书

技术领域

本发明涉及通信技术领域,具体地,涉及一种基于Spark和聚类的网络异常流量分析方法及系统。

背景技术

经过了数十年的蓬勃发展,互联网应用已经成为了我们日常生活中必不可少的组成部分,不断地影响并改变着我们的生活。现如今,网络发展越来越向虚拟化,分布式,动态性发展。新技术、新基础、新需求、新应用使得网络环境日益复杂,网络中的流量正在呈几何式的增长。随着互联网、物联网、云计算、大数据等技术加快发展,信息通信网络行业的内涵也不断丰富,从传统的电信服务、互联网服务延伸到物联网服务等新业态。当前,万物互联、信息互通,互联网日益成为人们生产和生活的基础,极大提高了人们对世界的认知能力。进入5G时代后,网络中的设备数量预计将超过500亿台,网路中的流量将是现在的1000倍。网络技术的快速发展为我们的生活带来方便快捷的生活的同时,也进一步引入了更多的安全问题。

随着网络结构的不断复杂,网络带宽的不断扩展,网络中的异常流量也是在不断的增加,现有的基于小波变换的检测,关联分析法,分类分析法,基于统计学的检测等方法无法很好的适应如今网络流量爆发式增长的需求。为解决这一问题,有人提出了基于机器学习的异常检测方法,基于数据挖掘的异常检测方法和基于神经网络的异常检测方法等。在异常网络流量算法分析中,统计模型中常用的测量测度包括审计事件的数量、间隔时间、资源消耗等。还有人提出了应用支持向量机算法,使得入侵检测系统在小样本(先验知识少)的条件下仍然具有良好的推广能力。然而,虽然异常流量分析的方法已经提出了很多,但是将它们应用在大规模网络异常流量的分析上欠佳。主要原因有:一,原有的分析方法(例如小波分析,统计分析等)不适用于处理维数较高的数据,无法达到大规模网络的检测范围;二,原有方法的算法复杂度高,通常检测滞后,不能满足异常的在线检测。

发明内容

针对现有技术中的缺陷,本发明的目的是提供一种基于Spark和聚类的网络异常流量分析方法及系统。

根据本发明提供的一种基于Spark和聚类的网络异常流量分析方法,包括:使用Spark大数据处理平台,通过聚类对网络流量进行聚类分析,通过检测算法对检测算法对分类后的网络流量进行异常流量分析。

优选地,所述聚类包括采用K-means算法,包括:

步骤10:给定n条网络流量数据,找到k个中心使得网络流量数据中的第i个数据点与最近的第j个中心点的距离平方和最小,记为Wn,数学表达式为:

x

步骤11:从n条网络流量数据中人为取k条流量,作为k个网络流量簇的各自的中心,其中,k的取值根据实际网络中所关注的网络流量特征的个数来进行判断;

步骤12:分别计算出剩下的网络流量数据到k个中心的欧式距离,并加入到距离最近的网络流量簇;

步骤13:根据聚类结果,重新计算k个网络流量簇各自的中心,通过计算本簇中所有向量各自维度的算数平均值重新确定中心点;

步骤14:将n条网络流量数据按照新的中心重新聚类;

步骤15:重复步骤14,直到聚类的结果不再发生变化。

优选地,通过K-means++算法对所述K-means算法进行优化,K-means++算法包括:

步骤20:随机选取网络流量数据的聚类中心,聚类中心属于网络流量数据集;

步骤21:对于网络流量数据中的每一个数据点,计算所述数据点与最近的聚类中心的距离;

步骤22:从数据点选择出一个作为新的聚类中心,在选取的过程中遵循较大的点被选为聚类中心的概率较大;

步骤23:重复步骤21和步骤22,直到k个聚类中心被选出来。

步骤24:执行K-means算法。

优选地,在经过初次聚类的基础上,利用马氏距离判定异常流量簇以及正常流量簇。

优选地,在聚类分析中,通过将K-means算法并行化的手段提高算法计算效率。

根据本发明提供的一种基于Spark和聚类的网络异常流量分析系统,包括:使用Spark大数据处理平台,通过聚类对网络流量进行聚类分析,通过检测算法对检测算法对分类后的网络流量进行异常流量分析。

优选地,所述聚类包括采用K-means算法,包括:

模块M10:给定n条网络流量数据,找到k个中心使得网络流量数据中的第i个数据点与最近的第j个中心点的距离平方和最小,记为Wn,数学表达式为:

x

模块M11:从n条网络流量数据中人为取k条流量,作为k个网络流量簇的各自的中心,其中,k的取值根据实际网络中所关注的网络流量特征的个数来进行判断;

模块M12:分别计算出剩下的网络流量数据到k个中心的欧式距离,并加入到距离最近的网络流量簇;

模块M13:根据聚类结果,重新计算k个网络流量簇各自的中心,通过计算本簇中所有向量各自维度的算数平均值重新确定中心点;

模块M14:将n条网络流量数据按照新的中心重新聚类;

模块M15:重复执行模块14,直到聚类的结果不再发生变化。

优选地,通过K-means++算法对所述K-means算法进行优化,K-means++算法包括:

模块M20:随机选取网络流量数据的聚类中心,聚类中心属于网络流量数据集;

模块M21:对于网络流量数据中的每一个数据点,计算所述数据点与最近的聚类中心的距离;

模块M22:从数据点选择出一个作为新的聚类中心,在选取的过程中遵循较大的点被选为聚类中心的概率较大;

模块M23:重复执行模块21和模块22,直到k个聚类中心被选出来。

模块M24:执行K-means算法。

优选地,在经过初次聚类的基础上,利用马氏距离判定异常流量簇以及正常流量簇。

优选地,在聚类分析中,通过将K-means算法并行化的手段提高算法计算效率。

与现有技术相比,本发明具有如下的有益效果:

本发明利用Spark大数据的处理平台,同时引入了聚类的概念,利用分布式的计算方法来对网络中的流量进行分析,通过聚类对网络流量进行分类,并通过检测算法将异常流量识别出来。本发明方法在经过初次聚类的基础上,利用马氏距离判定异常流量簇以及正常流量簇,以达到区分正常流量以及异常流量的目的。为了进一步提高该方法的效率,在基于Spark的聚类流量分析中,采取了将K-means算法并行化的手段,通过并行化提高算法计算效率,降低算法对机器内存和内核处理的要求,提高算法实用性。

附图说明

通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:

图1为本发明所使用的仿真实验环境系统构架;

图2为本发明所使用的仿真实验的HDFS工作模型;

图3为本发明所使用的仿真实验的YARN的运行流程;

图4为各簇到数据集中心的距离;

图5为测试集分类结果;

图6为网络流量数据识别分析对比图。

具体实施方式

下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。

本发明的目的是提供一种基于Spark和聚类的网络异常流量分析方法,提出利用Spark大数据的处理平台,同时引入了聚类的概念,利用分布式的计算方法来对网络中的流量进行分析,通过聚类对网络流量进行分类,并通过检测算法将异常流量识别出来。本发明方法在经过初次聚类的基础上,利用马氏距离判定异常流量簇以及正常流量簇,以达到区分正常流量以及异常流量的目的。为了进一步提高该方法的效率,在基于Spark的聚类流量分析中,采取了将K-means算法并行化的手段,通过并行化提高算法计算效率,降低算法对机器内存和内核处理的要求,提高算法实用性。

本发明所采用的技术方案如下:

一种基于Spark和聚类的网络异常流量分析方法,其分为基于Spark和聚类的网络异常流量分析和网络异常流量分析系统设计两个部分,第一部分主要组成包括:(1)spark的构架,(2)网络流量特征提取,(3)异常流量分析算法以及算法优化,(4)基于Spark的并行流量聚类分析。

本方法为了采用聚类算法对网络流量进行分析,首先需要对网络流量的特征进行提取。特征是我们描述理解一条信息的重要内容。相对于分类,聚类算法是非监督学习,这使得我们抽取特征学习的时候不需要特别准确的给出聚类的标准。但是,在网络流量中有很多的特征信息,但是并不是所有信息都是我们需要的特征,如果特征集中存在大量不相干数据,不但会降低分类的准确度,同时增加了算法的搜索空间。因此从中选取对于我们重要的特征,对于聚类的效果以及降低维数,提升运算效率有重要意义。

在进行异常流量分析的时候,本方法采用了K-means算法来进行分析。是考虑到K-means算法对于大数据集来说具有相对可伸缩性和高效率。K-means是一种应用最为广泛的聚类算法,也被称为k-平均或者k-均值算法,它是一种非监督学习的机器学习算法,它将n个对象,根据他们特点的不同,将其分为k个集合使得在相同集合中的数据相似度高,在不同的集合中的数据相似度低。

(1)算法描述

在本发明方法中,利用K-means算法,给定n条网络流量数据,找到k个中心使得网络流量数据集中的数据点与它最近的中心点的距离平方和最小,记为Wn,其数学表达式为:

其中W

可以描述为:

步骤0:从n条网络流量数据中人为取k条数据,作为k个网络流量簇的各自的中心。其中k可以根据网络流量特征提取的个数来进行适当取值。

步骤1:分别计算出剩下的网络流量数据到k个中心的欧式距离,并将这些元素加入到和其距离最近的簇。

其中,x为网络流量数据中心以外的其他流量,c

步骤2:根据聚类结果,重新计算k个簇各自的中心,通过计算本簇中所有特征向量各自维度的算数平均值重新确定中心点。

步骤3:将n中全部元素按照新的中心重新聚类。

步骤4:重复第4个步骤,直到聚类的结果不再发生变化。

k-mean算法通过不断的迭代,找到使每一个簇中的中心点,并且将点进行分类使各个簇中的点到达自己中心点的距离之和最短。

(2)中心点计算

对于网络流量数据中心点的计算,一般可以采用特征向量的每个元素求平均值的方式,除此之外还可以选取其他的方式,如

1)Minkowski Distance公式,其中λ为任意值,可以是负数,也可以是正数,或是无穷大

其中,d

2)Euclidean Distance公式——也就是第一个公式λ=2的情况

3)CityBlock Distance公式——也就是第一个公式λ=1的情况

(3)k点的选取

对于这种算法来说,需要先确定k的值,然后执行相应算法。而算法的性能在很大程度上与k的取值有关,所以对于k的选取是很关键的工作,需要反复试验最终确定取值。依据专家经验和测试数据,根据经验规律认为最佳的聚类数应该在2到N之间,其中N为所分析的网络流量数据总的条数。

本方法中,k的取值核心是设定初始点,而应用K-means方法可以很好的处理这个问题。在这种方法的基础上还发展了K-means++方法,这种方法的工作过程如下:

步骤0:随机选取网络流量的聚类中心,聚类中心属于所有网络流量数据的集合。

步骤1:对于网络流量数据中的每一个点,计算它与最近的聚类中心的距离。

步骤2:从网络流量数据的集合中选择出一个作为新的聚类中心,在选取的过程中遵循较大的点被选为聚类中心的概率较大。

步骤3:重复1,2过程,直到k个网络流量数据聚类中心被选出来。

步骤4:执行K-means算法。

在上述过程中可以看到,关键的环节在于第三步,即如何将反应到合适的网络流量数据聚类中心被选中的概率上。

由上述的算法可以得出,K-means++算法利用了将相互距离大的点作为聚类中心的可能性大的这种方法在是使用者不需要自行定义聚集中心的同时,能够更好的选取聚类中心。

在完成了对于数据的初步特征选择之后,就可以用所选用的聚类算法对来自网络的流量进行聚类分析。

为了进一步提高该发明方法的效率,将K-means算法并行化是一种有效的手段,算法包含两个迭代运算部分:首先是计算数据与聚类中心之间的距离,时间复杂度为O(nkr),数据数量用n表示,簇数用k表示,数据对象维数用t来表示。其次是确定新的中心点,完成此操作的时间复杂度为O(nkr),数据对象个数用n表示,数据对象的维数用t表示。所以迭代的算法复杂度为。可以看到,随着数据对象、维度、聚类个数的不断增加,计算所需要的时间开销也大大增加,解决此问题需将K-means算法并行化,通过并行化提高算法计算效率,降低算法对机器内存和内核处理能力的要求,提高算法实用性。

本发明方法中,就是采用了基于马氏距离和K-means算法的异常流量分析的方法。马氏距离(Mahalanobis distance)由印度统计学家P.C.Mahalanobis提出,它利用数据间的协方差计算距离,得到两个未知数据集间的相似度。在聚类分析中,需要计算样本点与数据重心之间的距离,然后可以根据马氏距离的远近对不同样本进行分类。马氏距离具有独立于测量尺度不受量纲影响等优点,因此本次试验中选用马氏距离来对划分后的类进行异常流量的判别。

马氏距离的定义为:

其中,T表示转置,X、Y分别为样本的协方差矩阵。马氏距离的计算不仅考虑了数据间的相关性,且与计算尺度的关联不大。这两个特性是马氏距离相对于其他距离计算方式的重要优势。本文利用马氏距离,区分正常流数据以及异常流量数据。

将第一次经过K-means算法聚类的结果作为输入,得到了由n个数据点组成的k个簇,利用马氏距离计算得到整个网络流量数据集的中心点C,分别计算第i个簇到中心点的距离为:

其中,表示第i个簇到中心点的距离,dist(r

下面,就是利用K-means算法和马氏距离的异常流量识别。由于K-means算法是对于特征矢量的聚类,因此首先要从预处理之后的数据中提取特征,生成特征向量。然后选择类数k,进行聚类分析。

在得到清洗过后的数据,将放入Spark算法中进行聚类分析,但是算法需要我们手动设置分类的组数k,然而网络中的数据量十分的巨大,我们无法预知将来自网络中的流量分为多少类才能保证异常流量都很好的聚集在了某一簇中,而其他的正常的流量被聚集在了其他的类中。因此,我们需要通过遍历的方法,测试不同的k值来确定哪一种的分类方式更加准确。

这样就带来了新的一个问题--如何界定k值适不适合。我们需要一种方法来衡量所得的分类的优劣性,所以需要编写两个方程clusteringScore1,clusteringScore2来测定所聚类而成的簇的得分,根据分数的高低来判断聚类效果的优劣。

在此之前,需要定义其他几个事项。K-means算法中,对于距离的计算一般都是使用的欧式距离,因此首先定义一个两个向量之间欧式距离的函数distance(),在这个基础之上定义一个每个簇中任何一点到中心点的距离distToCentroid()。然后提出两个计算分类质量的函数。

clusteringScore1:对于第一种的分数计算方法,对每个簇中的所有点做到中心点的距离求和之后取平均值,这和之前所提到过的K-means算法的在求取中心点时所使用欧式距离的平均值吻合,得到的是满足算法的一种得分计算方法。

clusteringScore2:对于第二种分数计算方法,如果是一个好的聚类结果,那么聚类中的样本类别应该是大体相同的,因而熵值较低,所以可以对每一个簇的熵加权平均,将结果作为聚类的得分。

本发明方法在上文中已经叙述过了,K-means算法的初始点是随机选取的,初始点的选取对于接下来的分类有着至关重要的影响,人为的设置初始点除非在清楚知道k的个数以及大概的数据分布的情况下是很难做出准确的判定。因此在上文中介绍了K-means++,这种自动设置初始点的方式,除此之外,K-means||也是解决这一问题的一种有效的方式。在Spark中,本方法中的K-means就是使用的K-means||算法。它更容易产生多种多样且相对分散的初始点,因而更容易得到较好的聚类结果。但是不管怎么样,这里还是有随机选择的因素,所以不能保证全局最优。为了改善聚类的结果,可以采用多次聚类的办法,通过对给定的k值进行多次的聚类,每次选择不同的随机初始点,然后从多次聚类结果中选取最优的。很幸运的是,在Spark中,提供了setRuns()方法能够在给定k值时设置运行的次数。

同时,增加迭代的时间可以优化聚类的结果,虽然对效率有所影响,但是聚类的结果更加重要。在Spark中,也提供了setEpsilon()来设置一个阈值,该阈值能够控制聚类过程中,中心点进行有效移动的最小值。降低该阈值能够使中心点继续移动更长的时间。Spark会对所有聚类任务进行统一管理,每个k对应的并行计算都是在集群上分布的执行的,通过充分利用大规模集群的处理能力,这样可以提高集群的吞吐率。

用上述两个计算聚类效果的方法,我们可以通过不断迭代的方式,在一定范围内选取网络流量分类的局部最优的聚类类数。

随着分类个数的增加,在两种评价标准分类的质量都是先随着聚类分组数k的增加而得到加强。在这里选取两种评价标准是因为单个的评价标准下可能存在误差,在两种不同的评价标准下得到的最佳的分组值相同可以更加确信分类结果的正确性。

在K-means算法中有这样的一个特点:随着分类个数k的增加,聚类的质量会不断地改进,但是过于大的分类个数对于聚类分析没有太大的意义,当k的个数和数据数相同时聚类效果最好但是没有任何意义。因此,k值不需要无限制的增加,只需要找到局部的最优解就可以继续进行训练。在训练过程中得到一个较好的k值之后,就可以对数据集进行分类了。

由于在分类的时候是寻找能够使分类效果最好的k值进行分类的,并不保证分类是否是按不安全行为划分,因此在得到结果之后需要再一次根据想要的划分标准,将可能相同的类进行再次合并,得到需要的结果。

本发明实例中搭建了一个实验环境,同时从上海电信的服务器中提取了2015-12-2513:00:00到2015-12-26 13:00:00期间24小时的访问记录进行分析。在试验的过程中,首先是在虚拟机上搭建了一个Hadoop的伪分布式的环境。使用三台虚拟机,其中一个作为Namenode,两个作为Datanode,为了节省空间,对Datanode只做一份备份。然后利用YARN系统作为资源管理器。这样做可以达到两个目的。一个是可以扩大数据集的支持范围,还有一个是为了能够结合Spark Streaming,能够将产生的实时的数据流直接输入到Spark中进行操作,更加具有实际意义。由于只有一个较小的数据集,所以无法做到实时性的数据处理,但是我们使用一个短时间内的数据作为一个Streaming RDD的输入,在有大量实时数据的时候,可以直接进行移植处理,可以很好的衔接。

本发明方法的系统为分布式格局,如图1所示。且利用HDFS分布式文件,形成底层环境,进而实现分布式的Spark构架。在它之上使用Hadoop的YARN资源管理器来实现分布式的处理。

该实验环境的底层文件系统采用的是HDFS分布式文件。HDFS构架是master/slave模式。在本次用的分布式文件系统中包含了一个Namenode(并且为了实现容错性准备一个备用的Namenode)和两个的Datanode,这些Datanode按规定的时间和Namenode通信,向Namenode报告自己的状态同时接受来自Namenode的指令。Namenode上并不会一直保留每一个Datanode上面蕴含的信息,这样可以减轻Namenode的负担,HDFS在Datanode在一开始启动时的向Namenode报告自己存储的数据块信息,通过这种的方式定时更新Namenode上的映射表。HDFS文件系统的一个特点,就是可以将自己的名字空间暴露给用户,这样用户就可以以文件的形式在HDFS上存储数据。从内部结构上来分析,一个被存入HDFS的文件实际上被划分成一个或多个block(至少是一个block一个块),这些block一般情况下在多个Datanode上进行储存,这样做的好处是在保证可靠性同时也能使后期的读取速度得到很大的提升。Datanode负责处理HDFS在客户端的实际上的读写数据请求。在经过Namenode的统一调度,对数据块进行创建、删除和复制工作。

使用三台虚拟机,其中将其中一台虚拟机命名为SparkMaster作为namenode节点,其他两台虚拟机分别为SparkWorker1和SparkWork2作为两个datanode,三个节点之间通过使用ssh协议相互连接,其工作过程如图2所示。

接下来需要对资源管理器进行配置。资源管理器是协调底层文件系统和上层数据处理系统的控制装置,它建立起了底层文件系统的一个桥梁。在Spark中,其支持三种资源管理器,分别是脱机调度器,Mesos和YARN。为了更好与底层的文件系统沟通,我们选取YARN,作为资源管理器。YARN是在Hadoop 2.0中引入的概念,它的使用大大提高了集群的资源利用率同时降低了集群管理成本。首先,YARN允许多个应用程序运行在一个集群中,并将资源按需分配给它们,这大大提高了资源利用率,其次,YARN允许各类短作业和长服务混合部署在一个集群中,并提供了容错、资源隔离及负载均衡等方面的支持,这大大简化了作业和服务的部署和管理成本。

YARN总的结构上使用的是master/slaver架构,在这当中,master被称为资源管理器(ResourceManager),slaver被称为节点管理器(NodeManager),资源管理器负责对各个节点管理器上的资源进行整体的管理和调度。当使用者提交一个应用程序时,必须提供一个用来跟踪和管理这个程序的ApplicationMaster,ApplicationMaster负责向资源管理器申请资源,并要求节点管理器启动可以占用一定资源的Container。因为不同的ApplicationMaster会被分布到不同的节点上,并通过一定的隔离机制进行了资源隔离,因此它们之间不会相互影响。为了更好的能够和HDFS进行结合,减少通信开销,将SparkMaster作为资源管理器,两台机器SparkWorker1和SparkWorker2分别作为两个节点管理器其结构如图3所示。

然后,进行网络流量数据采集。本仿真实验环境的数据流量来自于上海电信一天的流量访问记录,本实验中的流量数据来自远端的服务器,服务器中存有上海电信网络http访问记录,本次实验通过在远端通过ssh协议链接到远端服务器,下载其中2015-12-2513:00:00到2015-12-26 13:00:00期间24小时的访问记录,大小为162GB记录。将拿到的数据存储到上述搭建的分布式文件系统HDFS上。

我们提取其时间,源IP地址,访问域名作为一条数据记录进行分类。首先将IP提取出来作为一个标识,其次为了方便统计和压缩数据,我们将所有的域名规约为2级域名即update.pan.baidu.com,m.baidu.com,都规约成二级域名baidu.com。这样做既保留了用户对于网站的访问信息,又达到了压缩数据的效果。在进行压缩之后,数据量下降为995247134条访问记录,其分别来自于1521237个IP主机,对7265685个域名进行了访问。之后,对所获得的二级域名使用one-hot这种方法实现数字化,以备后续K-means算法使用。统计每一个ip地址访问的网站的个数以及其中相同的个数,并将其作为新的特征值加入到数据的特征中。

其中,在每一条信息中,都存在很多的属性,其中有一些属性是我们进行聚类时需要的,有些属性对于我们来说并没有实际意义,因此在进行机器学习算法之前舍弃不需要的数据,并且重新分析计算新的有效属性对于我们减少计算量提高运算效率,得到更加准确的分类有着重要的意义。在本次试验中,我们选取IP值,域名,每个IP值访问域名的次数,每个IP访问的相同的域名的次数。我们将这些特性组成一个labeledPoint,其中我们使用IP作为每个类的标签,Vector中的是包括其他几项属性的。

由于Vector中必须是数字类型的数据,而在几个属性中域名是字符串类型,所以我们需要将其转换成String类型。其中我使用的是one-hot方法,具体的做法是,首先计算整个数据集中有多少个被我们归一化之后的域名n,每一个不同的域名被赋予0~n-1之间不同的一个数值,然后创造一个n位的数组,将其初始化为0,对于每一个域名我们将其对应的数字的数组的那一位改成1。举例说明,假使我们有4个域名分别是a.com-0,b.com-1,c.com-2,d.com-3,当我们得到一条信息,其域名是b.com,我们首先初始化一个4位的floar数组,并将其初始化为0000,然后我们发现域名b.com所对应的数字是1,所以将数组的第2位赋值为1,即0010,依次类推,a.com为0001,c.com为0100,d.com为1000。至此我们就完成了对数据的初始处理,得到了我们所需要的labeledPoint。

下面,就是利用K-means算法和马氏距离的异常流量识别。上述实验将网络流量分成了12类,下一步需要进一步确认哪几类的流量是异常的流量。在此本方法基于马氏距离,将已经划分的12类流量进一步分为正常的流量与异常的流量。

本发明方法首先利用马氏距离计算出整个网络流量数据集的中心,其次分别计算出各个类到中心的距离。我们需要确定阈值,当各个簇中到数据集中心距离小于阈值时,该簇为正常流量簇,当簇到数据集中心的距离大于阈值,则该簇为异常流量类。为确定阈值,现取1000条正常流量记录组成一个簇,分别取该簇到数据中心的距离的均值0.56.,最大值0.83,最小值0.03作为阈值。后另取1000条流量正常流量数据组成一个新簇作为测试集,分别计算每一点的到中心距离并计算出在每一种情况下未超过阈值的点占总数据点的百分比,在阈值取最小距离,最大距离,平均距离下分别为0.32,0.21,0.74比较发现在阈值设为0.56时,正确率最高,因此我们选择0.56作为阈值点,如图4所示。

最后,就是本发明所使用的仿真实验环境额实验结果。我们从电信已划分好正常HTTP流量和异常HTTP流量各1000条,将其放入已经训练好的模型中进行聚类训练,将其分为12类其中每种类别划分划分情况如图5所示。

其中被我们划分为流量的为类3,7总数是869,其中被正确分类的有823条,流量的是类1,2,4,5,6,8,9,10,11,12,总数是1131,其中被正确分类的有964。异常流量检测的准确率为:

其中TS表示正确识别出的流量数量,FS表示未能正确识别出的流量数量,整个训练集2000条数据被正确分类的数据数是1769条,因此该模型下,聚类的准确率为89.35%。其具体分布情况如图6所示。

图6中柱形的高度表示数据流量的数量,每一栏柱形图中左侧柱形表示在该类中分类正确识别的流量数量,右侧的柱形表示测试集中被划分到该类错误识别的流量数量,顶部百分比为该数据的正确识别率。图中分别显示在划分的异常流量类中共有869条数据,其中异常流量有823条;在划分为正常流量中共有1131条数据,其中有964条正常流量;总的准确率为89.35%。

综上所述,本发明所提出的基于Spark和聚类的网络异常流量分析方法,在搭建的仿真实验环境中,选取正常的和异常的流量数据各1000条,在已有的训练模型中进行训练,经计算得出此模型的精确度达到了89.35%。得到了一个较为理想的实验效果。

本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统及其各个装置、模块、单元以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统及其各个装置、模块、单元以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同功能。所以,本发明提供的系统及其各项装置、模块、单元可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置、模块、单元也可以视为硬件部件内的结构;也可以将用于实现各种功能的装置、模块、单元视为既可以是实现方法的软件模块又可以是硬件部件内的结构。

以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号