基于数据流挖掘的流量识别技术研究

绪论
课题背景
   随着互联网技术的飞速发展,各类新颖的网络应用与需求也层出不穷,网络业务由传统的WWW、Email应用逐渐向包括语音和视频等多媒体在内的综合业务以及增值服务发展。尤其近几年来,电子购物成为一时尚,网络游戏越来越受到年轻人的喜爱,网上观看各类视频已经成为人们生活的一部分,视频会议、电子银行和网上炒股等实时业务也己经在Intemet得到广泛的应用。其中,在2013年,中国网购用户规模已达到3.02亿,使用率已经达到48.9%,相比2012年增长6.0个百分点。随着互联网技术的不断飞速发展,网络规模正逐渐向着全球化的方向发展,国际总出口的带宽不断在增加,宽带入网的用户数量指数增长。2014年1月,中国互联网络信息中心(CNNIC)发布了第33次《中国互联网络发展状况统计报告》,数据显示,截至2013年12月,中国网民规模达6.18亿,全年新增网民5358万人[1]。互联网普及率为45.8%,较2012年底提升3.7个百分点[1]。截至2013年12月,中国国际出口带宽为3,406,824Mbps,年增长率为79.3%[1]。然而与此相对应的却是网络用户对网络连接速度和服务质量抱怨的增加,网上传播病毒的种类与数量也越来越多,由此造成的危害也在不断升级,非关键业务的泛滥导致了运营网络的带宽资源被大量地消耗,影响了其他一些网络关键业务的正常开展。所以对网络流量进行准确识别与分类对保证各单位机构的局域网有足够的带宽就变得极为关键。
   要监测网络能否高效、安全及稳定的运行,必须对网络流量的类别、特征进行详细研究和分析,这些对及时的了解网络的行为特征、网络的实时运行状态、定位网络故障、发现异常流量是十分关键的。同时对于设计高效网络系统,重新配置网络设施,为不同的网络客户提供QoS(服务质量)起到指导性作用。此外,网络流量识别对于各种网络计费、网络安全、流量工程等领域也是非常关键的。
   早期的网络模式简单,采用基于网络端口[2]、基于DPI的流量识别方法[3]就可以对流量进行非常准确的识别,但是互联网技术的的发展,如今的网络模式变得越来越复杂,传统的流量识别算法已不适合。如今对网络流量识别的研究已经成为一个热点。
   目前流量识别大多是基于网络流的统计特征[4-6],并结合机器学习算法[7-9],如决策树[7]、支持向量机[8]、神经网络[9]等。最初,机器学习是作为数据挖掘和知识发现的工具,包括文本识别、市场营销分析、医疗诊断等。将机器学习用于网络流控设备最早是在1990提出,1994年首次将机器学习用在入侵检测系统中来区分网络流量。现在,流量识别方法大都是将机器学习和网络流特征相结合,通过训练数据构造一个分类模型。但在实际网络流量中,网络流量具有快速的、连续的、无限的、动态变化等特点,训练样本相对于未知网络流量是有限的,未知流量的分布情况无法获得,从而导致分类结果的稳定性无法保证。
   数据流的特点是数据规模大、动态变化快、多变性、连续性,这些特点正好与高速的网络流量的特点相吻合。在以往的研究中,研究者是利用数据流挖掘技术来处理数据流,因此,本文将数据流挖掘技术与高速网络流量识别联系在一起,提出基于数据流挖掘的流量识别。数据流挖掘能够处理不断变化的、连续到达的流数据,并且识别模型能随流量的分布而动态的更新,保证了分类结果的稳定性。
相关研究
目前,流量识别方法主要集中在以下四个方面。
基于网络端口的识别方法
早期最常用的方法就是基于端口的识别方法,这种方法主要通过应用层协议公认的端口号来识别,简单高效快速,但是目前将这种方法用与流量识别识别效果并不好。在文献[10]中指出,以字节准确性作为评价准则时,发现端口与应用类别的相关性较为密切,这种方法对于传统应用非常有效,此外,端口可以作为其他识别方法的重要属性,对于提高准确性起较为关键的作用。
基于深度包检测的识别方法
深度报文检测(DPI:Deep Packet Inspection)是指对网络数据帧中的应用层数据内容进行识别检测,找出与之匹配的网络流量识别规则[10]。使用基于DPI技术的方法,首先提取待检测流量识别规则,然后建立一个识别规则库;在网络流量数据被捕获到时,就利用模式匹配算法[14],查找网络数据包数据内容是否与识别规则库中的规则相匹配,如果匹配,就将以该数据包五元组定义的数据流识别为规则所对应的网络应用协议所产生的网络流量。每种网络应用的识别规则在规则库中都可能有一条或者多条。
因此,基于深度报文检测的识别的关键就在建立和维护网络流量识别规则库,必须保证识别规则是互斥的精确的。这种方法在当前巨大的网络应用的规模下,需要耗费大量的时间、人力以及物力来持续的维护规则库。
基于行为特征的识别方法
基于行为特征方法则是通过分析网络应用的宏观行为的一些特征,利用这些行为特征实现网络流量识别。如TCP和UDP的使用比例、上下层传输的数据的比例以及连接请求的次数等特征。这种方法能够避开基于网络端口方法和基于DPI方法要预先提取特征的缺陷,主要是通过分析P2P网络的链接模式来对P2P流量进行识别。
识别方法主要包括:网络直径分析技术[11]、网络节点角色分析技术[11]、协议对分析技术[12]以及地址端口对分析技术[12]等。这种方法的实时性和可行性比较差,大都停留在理论的研究阶段,这种方法更适合于离线的网络流量识别。
基于数据挖掘的流量识别方法
数据挖掘技术[12],是从大量、不完全、包含噪声以及模糊的数据中,提取隐含在其中的以前未知的并具有潜在可用的模式的过程。数据挖掘的主要方法包括统计学方法和机器学习方法,其中,机器学习是使计算机模拟人类学习活动的一种技术,与数据挖掘的理论结合用于观测样本数据,发现蕴含的规律,预测出新的数据。
当把机器学习应用到流量识别时,样本就是网络流量,通过学习出各流量的各种属性特征,进而发现规律预测流量属于何种应用类型。对于流量识别来说,每一条流都可以用一系列的属性特征进行表示,但是不同流之间属性特征又是有区别的,因此可以利用机器学习算法,将网络中流量的不同属性值与相关应用进行关联识别。
系统中用到的属性主要是实时属性,提取出流属性之后,需要计算属性值,下面对流实时属性如何计算进行设计。在类RTFlowMap中的Map结构是采用一个C++标准模板库中的迭代器机制来遍历得,而引入锁即Mutex变量的原因是如果Map中有新的数据插入了或移除了某些数据,那么这时迭代器将会失效或指向了一个非法得空间,程序也将出错。当扫描Map时,首先对当前迭代器指向的Flow作判断,确定该Flow是否满足包区间规定,即FlowRTFull的值是否为True,并判定该流的实时属性是否已经被提取过,即FlowRTFeatureExtrance的值是否为True,如果FlowRTFull的值为True并且FlowRTFeatureExtranc值为False,即满足包区间并且属性未被提取,则调用GetFlowFeature函数,对该Flow提取属性,并把属性提取函数返回的FlowFeature对象存入到RTFeatureQueue队列中,等待分类模块调用,然后把“属性特征是否已经提取”标志变量即FlowRTFeatureExtrance设置为TRUE。对于已被取出的流实时属性的流将不再对其属性值进行更新,流一旦结束了,就在Map中去删除它相关的记录。具体过程如图5.13所示。

               图4.13 流实时属性计算过程
建树模块
建树模块是由CVFDT中的CreateDT()函数完成,通过读入一个样本,根据CVFDT算法构建决策树。CVFDT算法在上一章进行了详细介绍,概括起来CVFDT是按如下方式进行建树。
它从一个叶子结点开始,从数据流或离线样本中收集训练样本。当样本数据足够多,置信度足够高的时候,就可以确定最佳分裂属性,即该叶子节点上哪个属性可以作为分裂属性,则将该叶子结点变成一个测试结点,然后新叶子结点不断地重复该过程。CVFDT使用滑动窗口技术维持一个训练样本的窗口,随着训练样本的流入和流出窗口更新已构建的决策树,使决策树能够与训练样本窗口保持一致。一个新的样本到达时,将其加入到它所经过的所有决策树结点,而一个样本从决策树中去除时,也需要从所有受它影响的结点中移除,并将所有的统计测试重新进行。如果在某个时刻出现概念漂移,则算法会在出现概念漂移的结点上建立一棵替代子树。当这棵替代子树的分类效果比当前决策树更好时,就直接用替代子树取代这棵决策树。建树阶段的过程如图4.14所示。
初始建立决策树时,必须将离线标记好的流量信息作为训练样本输入构建地一棵决策树,这个过程可以在离线阶段完成,不用考虑适时快速的因素,选择初始训练样本几时,要选择确定性的分类算法比如DPI(深度包检测)、DFI(深度流检测),准确标记每条流的类别。
分类模块
   分类模块功能是完成类标记。分类模块主要通过CategoryLabel类来读取RTFeatureQueue中流实时属性值而进行分类的。
   RTFeatureQueue中通过Mutex变量保证对队列操作的唯一性。首先载入己构造的决策树,其中每读一条Feature,就将Feature转换为Example依据决策树标记的该记录的类别。分类过程中,决策树的结构也在调整依据CVFDT算法。最后可以将Feature和其被标记的类一起存入数据库等。具体过程如图4.14所示。

原创文章,作者:Editor,如若转载,请注明出处:https://www.diyilunwen.com/lwfw/xxjs/1191.html

(0)
EditorEditor
上一篇 2014年10月12日
下一篇 2014年10月12日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注