车旭民
(南京晓庄学院,江苏 南京 211171)
随着全球信息化进程的加快,网络尤其是Internet作为现代信息社会最重要的基础设施之一,已渗透和影响到社会的不同领域,成为社会进步和国家发展的基本需求,是未来知识经济的基础载体和支撑环境。信息社会和正在逐渐形成的全球化知识经济形态对信息网络管理提出了很高的要求,但Internet网络在管理方面逐渐暴露出许多缺陷。[1-3]
本文就是在这样的背景下,研究了网络流量分析与预测原型。由于该模型采用了数据挖掘技术,且系统能够通过自学习,对网络流量数据进行分析,然后进行特征提取,扩大样本知识库,不断提高流量采集的能力。它具有自适应、分布式和面向网络业务的特点,可以有效地解决现有的许多流量采集系统中的问题。
网络流量数据采集方法主要分为基于网络探针的网络流量采集方法和基于网络流(Netflow)的网络流量采集方法。在不同的考察层面,两者具有不同的特性。
当前,广为流行的网络体系结构 OSI[4-6]结构系统,采用了7层的层次结构,每层各负责不同的通信功能,所有协议的分层结构如图1所示。
图1 网络层次化结构模型示意图
按照图1的参考模型,以及数据包的传输过程,可以构造一个合适的数据结构,来保存需要的信息。以下根据图2对协议网络流量数据封装和分解进行分析。
图2 协议网络流量数据封装和分解示意图
针对 k-means聚类算法[7-8]存在的问题,可以考虑采用分层聚合的形式避免这些问题。也即在初始化数据时,将数据集中的每个样本设置为1个类;计算现有的所有类两两之间的距离(相似度),找出其中距离最近(相似度最大)的2个类;将最近的2个类合并为1个新类,总类数减1;若所有样本数据合并为1个类或满足所设定的终止条件时,结束算法;否则,返回计算现有的所有类两两之间的距离。
本文研究的k-means聚类改进算法的核心思路如下:
1)以分层聚合的方式,求出最合适的聚类个数k,并找出每个簇中心,如此便可获取第2步划分聚类的初始值。
2)利用k-means聚类算法进行迭代重定位运算来优化改进,直到出现较好的聚类结果。
之所以利用此方法,是因为在分层聚合开始时,将每1个数据对象看作是1个簇,因此,对初始聚类中心无特殊要求,如此可以弥补k-means聚类算法对聚类中心的依赖。同时,通过k-means聚类算法的反复优化又对分层聚合所存在的“不可逆转”的缺陷进行了一定补偿。
在实际的网络流量分析与预测中,可以利用上述算法,依据首重宏观,由面及点的原则,进行逐步深入的分析。所谓的逐步深入的分析,即采用从网络到主机逐级细化的分析步骤来对流量数据进行剖析,从宏观入手了解网络上流量的变化趋势开始,逐级细化到掌握主机上流量的状态。该分析技术主要分为以下步骤[9-10]进行:
第1步,面向网络的分析,该步骤属于粗粒度的分析,即了解网络上整体的、宏观的流量分布状况。首先对时间维上的流量数据进行分析,筛选出可能的异常时间点,每1条数据的属性代表该时刻整个网络上流量的分布情况,即以P维列向量来描述。本文选取源IP地址、目的IP地址、端口号作为表示流量的特征参数。通过获取这些特征参数的信息熵,即可以用一个特征向量来表示当前时刻的网络流量状态。通过该算法的分析,便可以灵活、准确地区分出网络中存在的不同流量分布状态,从而对网络的流量情况进行总体的、宏观的把握。
第2步,面向主机的分析,该步骤属于细粒度的分析,即了解网络流量状态在各个主机上的分布情况。针对第1步分析中分离出的可能存在于异常时段内的数据点,进行进一步的分析。此时每1条数据代表该时刻该主机的网络流量状态情况,通过选取传输层协议(TCP、UDP)的分布情况、平均丢包率以及平均包大小等表征主机流量状态的参数进行分析,便可以准确定位到可能存在异常的主机,从而为后续的策略制订及所需采取的措施提供依据。
在进行分析之前,需要对网络流量数据集Traffic进行标准化,即通过将属性数据按比例缩放,使之落入一个小的特定区间。对于本文所使用的这种基于距离的算法,规范化可以帮助防止具有较大初始值域的属性与具有较小初始值域的属性相比(如,在一个局域监测范围内,网络端口的数量要远远大于IP地址的数量),显得权重过大。由于本文所选取流量特征熵的取值在[0,log2N]之间,这里的N或为IP地址数,或为网络端口数,其最大最小值均为已知数据,因此,可以采用最小—最大规范化的方法对原始数据进行线性变化。实验结果如表1所示。
根据表1可以看出,改进后的算法能够得到较高且稳定的准确率,针对数据集 Iris、Wine、Traffic均可以得到接近最高准确率的聚类结果。产生这种结果的原因是改进后的算法首先利用分层聚类的方法来确定初始聚类中心,而分层聚类对于初始聚类中心是没有要求的,因而产生的初始聚类中心比较符合数据实际分布,也就更适用于对实际数据的聚类。
令k为改进的k-means聚类算法的输入参数,其含义为该算法分割并计算网络流量数据集后输出的聚类的数量。网络流量数据集由n个模式(Patterns)组成。在本文算法中,使k=3,在进行初始化时,根据k随机地从n个模式{i1,i2,…,in}中找出 k 个原型(Protypes){W1,W2,W3,…,Wk},故:
初始化{W1,W2,W3,…,Wk},其中,Wj=ii,j∈{1,2,…,k},i∈{1,2,…,n}
使每个聚类Ci与原型Wj对应
Repeat
For每一个输入向量 ii,其中 ii属于{1,2,…,n}do
将ii分配给最近的原型Wj所属的聚类Cj。即:
For每一个聚类 Cj,其中 j属于{1,2,…,k}do
将原型更新为当前的Cj中所有样本的质心点,并计算错误函数
Until E不再明显地改变或者聚类的成员不再变化
End
其中Cj是第jth个聚类,其值是输入模式互不相交的子集。
错误函数确定聚类的质量。如何选择恰当的k值,通常来说是一个比较困难的问题。一般来说,k值的选择和问题域有关,用户需选择不同的k值进行实验。设有n个模式,每1个模式的维数为d,则1个直接k-means改进算法的每1个循环的计算代价可以分解为以下几部分:
1)以上算法中的第1个For循环所需的时间复杂性。
2)计算质心点的时间复杂性。
3)计算错误函数的时间复杂性。
循环的次数与输入模式的数量及输入数据有关,可以从几次到上千次不等。故,k-means改进算法的时间复杂性可以精确地计算出来,这对数据挖掘应用于网络流量数据大量的模式向量来说尤其重要。
利用k-means改进算法,把采集到的网络流量数据进行聚类,最终生成如下属性,如表2所示。
表2 网络流量数据分流后的属性表
改进的k-means算法相比经典的k-means算法在时间复杂度和聚类准确率上均具有较大的优势,对于网络流量数据大量的模式向量,k-means改进算法的时间复杂性可以精确地计算出来,通过仿真实验表明,该算法达到实际应用需求。
[1]何荣毅.网络流量监测管理系统的研究与实现[J].硅谷,2008,4(9):12 -14.
[2]周小勇,胡宁,向杨蕊,等.基于数据流的实时网络流量分析系统设计与实现[J].计算机应用研究,2007,8(10):34 -36.
[3]程斌,魏国强,何光营.基于应用层的校园网网络流量监测与分析[J].上海电力学院学报,2010,9(1):89 -91.
[4]刘颖秋,李巍,李云春.网络流量分类与应用识别的研究[J].计算机应用研究,2008,12(5):39 -42.
[5]匡琳.P2P网络流量监控技术探讨[J].科技广场,2008,7(12):45-48.
[8]周宏.校园网上netflow流量监控分析系统的设计与实现[J].西南民族大学学报:自然科学版,2005,7(3):22-25.
[9]周向军.校园网流量识别与控制系统的建设[J].电脑知识与技术,2009,8(14):70 -72 .
[10]黄茹芬.校园网流量测试与分析[J].福建电脑,2006,32(11):90-92.