当前位置:文档之家› 网络用户行为分析系统研究与设计

网络用户行为分析系统研究与设计

网络用户行为分析系统研究与设计1

张立明

北京邮电大学网络与交换技术国家重点实验室,北京 (100876)

E-mail:pceoming@https://www.doczj.com/doc/436731741.html,

摘要:本文在介绍当前对网络用户行为分析存在迫切需求的基础上,首先阐述了网络用户行为分析技术,然后介绍了网络用户行为分析系统的设计思想与系统框架,并随后介绍了系统的实现及一些关键技术。本系统在实际运行中具有效率高、兼容性好、用户友好、操作性强等特点。

关键词:网络用户行为,采集探针,Net Flow,数据采集

1.引言

随着互联网的快速发展与迅速普及,众多企业已经搭建起了自己的网络系统,网络已成为信息时代企业重要的资源。然而,网络的开放特性也给这些企业带来了不少困扰。先不说黑客攻击、病毒泛滥的外患,单单是企业员工对网络资源的滥用带来的内忧就让企业的管理者头疼不已,如工作时间上网、网上游戏、网上聊天等等,这些不仅影响工作效率,而且会占用企业宝贵的网络资源,影响企业正常的业务运转。在这种情况下,企业迫切的需要对网络上的用户行为进行监测及分析。

本文阐述的网络用户行为分析系统就是针对这种情况而设计的,系统通过对企业网络流量的采集、处理、统计等来分析网络上的用户行为,达到更好的管理企业网络,提高员工工作效率,降低企业安全风险,减少企业损失的目的。

2.网络用户行为分析技术

网络用户行为分析技术主要可以分为数据采集和数据分析两个部分。

2.1 数据采集

所谓数据采集就是获取用户访问网络的流量数据,数据采集技术主要可分为三类:基于SNMP、基于Net Flow以及基于流量全镜像,下面对这三种技术做一下介绍。

基于SNMP:该技术主要是通过读取交换机等网络设备中SNMP代理(Agent)提供的管理信息库中(MIB)特定对象表示符(OID)的信息,来得到相应的流量数据。该技术的优点是使用简单,效率较高,设备的支持范围比较广,但是由于它的流量数据是根据链路层的地址进行聚合的,所以无法得到网络层以上的信息,如IP地址和端口号等。

基于Net Flow:Net Flow是思科(Cisco)公司倡导的一项网络数据流统计技术,该技术通过分析在网络中传输的数据包的相关属性,可以快速区分网络中传送的各种不同类型业务的数据流(Flow)。对区分出的每个数据流,Net flow可以进行单独地统计相关的信息,并可将统计完成后的信息按照一定的格式发送到指定的接收设备。由于整个分析处理主要是由硬件来完成,所以效率较高,而且还可以获取网络层的信息,但是需要路由器硬件支持Net Flow 技术。目前最新的版本是Net flow V9,主要的实际应用版本则是Net flow V5。

基于流量全镜像:流量全镜象简单来说就是把交换机等网络设备的所有端口(源端口)的流量完全拷贝一份,复制到另外一个端口(目的端口),这个端口就叫做镜像端口。使用

1本课题得到教育部高等学校博士点专项科研基金(20040013002)的资助。

这种方法来采集流量数据的方式是通过一个采集探针接在镜像端口上,来捕获网络中传输的数据包,并进行相应的处理分析。使用该技术的优点是它可以提供丰富的信息,但是它对采集探针所在的服务器的要求比较高。

2.2 数据分析

数据分析实际上是一个从海量数据获得有价值的信息的数据挖掘过程,通过对采集到的流量数据的过滤、预处理、综合分析处理等程序,从中获取有价值的分析结果,并以准确直观的方式表示出来。目前来说,Top N分析是网络用户行为分析的一种最常用的方法。因为对某类用户行为进行分析时,Top N用户最大程度代表并影响了该类用户的特性,而且对Top N用户采取相应的策略措施也是最有效的方式。因此结合实际需要,本系统通过对应用,会话,来源,目的等进行Top N分析来达到对用户行为进行分析的目的。

3.系统研究与设计

3.1设计思想

网络用户行为分析系统的设计思想如下:

1)采用Net Flow的原理但不拘泥于Net Flow的限制。即对于支持Net Flow技术的网络设备,通过对设备进行适当的配置,可以直接把数据流信息发送到采集服务器。对于不支持Net Flow技术的网络设备,则采用基于流量全镜像的技术,用采集探针连到交换机等网络设备的镜像端口上来采集网络中的流量数据,并将采集到的流量数据采用Net Flow的方式进行处理,然后把处理后的数据流信息发送到采集服务器。因而对系统而言,通过网络设备直接发送过来的数据流信息和通过采集探针发送过来的数据流信息在格式上没有任何差别,可以统一进行相应的处理,所以系统就有很强的适应性。

2)系统采用分布式、松耦合的集成方式。各个模块间通过消息中间件进行通信,通过数据库进行数据的共享。这样系统具有很强扩展性和开放性,方便日后的维护以及功能的扩展。

3.2系统框架及模块划分

基于上述的设计思想,整个网络用户行为分析系统采用C/S的三层架构,即数据采集层,数据处理层和数据显示层。系统的框架如下图所示:

图2 网络用户行为分析系统框架图

3.2.1数据采集层

该层的主要功能是采集网络中的流量数据,并送到数据处理层进行相应处理。它包括基于流量全镜像技术的采集探针,也包括支持Net Flow 技术的交换机等网络设备。

基于流量全镜像技术的采集探针和交换机等网络设备的镜像端口相连接,通过这种方式来获取该流经该设备的全部流量数据并进行相应的处理,然后发送到接收模块。采集探针的部署方式如下图3-1所示:

图2 采集探针部署方式示意图

采集探针部署的服务器上有两块网卡,网卡A和核心交换机的镜像端口相连,接受镜像端口发送过来的镜像流量。网卡B和核心交换机的内网端口相连,并分配内网IP,可以和接收模块及控制中心连接。该部署方式的优点主要是在可以得到全部内外网交互数据的同时不产生额外的流量而占用网络带宽。

3.2.2业务处理层

该层的主要功能是接收数据采集层采集到的流量数据并进行相应的处理分析。包括接收模块、分析处理模块以及控制中心。

接收模块负责接收采集探针或者Net Flow发来的流量数据,通过预处理后保存至系统数据库。

分析处理模块负责对接收模块保存到数据库的原始流量数据做进一步的处理。

控制中心负责监控各个模块的运行状况。

3.2.3数据显示层

该层的主要功能是显示对网络用户行为的分析结果并提供对系统操作的功能入口,它包括C/S模式的监控客户端。

3.2.4消息平台和数据库

消息平台(DPP)是我们实验室自行研制的分布式处理平台,该平台是是支持跨平台、跨语言的分布式软件总线。各个模块采用统一技术的接口插入到DPP软件总线,它们之间的通信都通过DPP进行。

系统数据库(DB)则负责系统数据的存储,鉴于系统的规模及数据量,采用MySql数据库。

4.系统实现及关键技术

4.1采集探针

采集探针负责采集那些不支持NetFlow技术的网络设备上的流量,具体来讲就是通过采集探针的所有数据包,也就是数据链路层上的以太网帧。按照系统的设计思想,采集探针应用Netflow技术的处理机制对采集到的数据包进行处理,即不关心数据包中包含的具体信息,只通过分析数据包包头的相关属性信息来把这些数据包区分成不同的数据流(Flow),并将得到的数据流的相关信息按照NetflowV5的格式发送到上层的接收模块。下面先就Netflow技术的处理机制做一下简要介绍。

Netflow技术的处理机制实质上是对网络中传输的各种类型数据包进行区分。由于IP网络的非面向连接特性,网络中不同类型业务的通信可能是任意一台终端设备向另一台终端设备发送的一组IP数据包,这组数据包实际上就构成了一个数据流(Flow)。简单来说流就是一系列通过网络中某一观察点的具有相同特征的数据包,这些特征包括端点、方向、时间粒度、协议层次等。

Netflow通过分析IP数据包的下属7个属性来区分它们是不是归属于同一个数据流。即:·源IP地址

·目标IP地址

·源通信端口号

·目标通信端口号

·第三层协议类型(传输层协议)

·TOS字节(DSCP)

·网络设备输入(或输出)的逻辑网络端口(ifIndex)

Netflow还支持通过UDP的方式以预定的格式把该采集到的数据流的信息发送到指定的接收服务器。它发送的数据流的信息有如下主要属性,包括源IP地址、目的IP地址、源通信端口号、目的通信端口号、传输层协议、起始时间、结束时间、字节计数等,每个属性的含义如下:

源(目的)地址:发送(接收)端的IP地址

源(目的)通信端口号:发送(接收)端的通信端口号,如80(HTTP),21(FTP)等;

传输层协议:也可叫第三层协议,如6(TCP),17(UDP)等;

起始时间:收到该“流”第一个数据包的时间;

结束时间:收到该“流”最后一个包的时间;

字节记数:该“流”中以字节计数的数据量。

根据上面简述的Netflow技术的处理机制,本系统的采集探针主要分为两个部分:采集模块和归并模块,并且为了保证以后采集探针部署的平台无关性,采用Java技术开发。

4.1.1采集模块

采集模块主要基于WinPcap库来实现。Winpcap是Politecnico di Torino(都灵理工大学)的NetGroup小组开发的基于Win32平台的包捕获和网络状态分析的基础架构,由UNIX下的libpcap库移植而来,用于用户层次的数据包截获工作。Winpcap库采用内核过滤机制,并且只支持BPF接口的内核过滤。WinPcap的优点主要是使用简单、系统开销小、捕获数据包完整等。

采集模块又可以分为“数据包捕获”和“数据包解码”两个子模块。数据包捕获子模块根据系统设置的采集策略来采集符合要求的网络数据包,过滤掉不符合要求的网络数据包,然后把采集到的数据包交给数据包解码模块处理。数据包解码模块主要的工作是对数据包包头的解码,分析出数据包的主要属性信息,如源IP地址、目的IP地址、源端口、目的端口、协议类型等,并将这些信息存储到数据包信息缓冲区当中,供数据包归并模块读取。数据包信息缓冲区是一个循环链表的结构,目的是实现采集模块和归并模块的并行工作。整个采集模块的流程如下图4-1所示。

图3 采集模块流程图

4.1.2归并模块

归并模块是整个采集探针的关键,它的性能直接影响采集探针的整体运行效率。归并模块的核心处理流程就是对IP包进行区分,并归并成不同的数据流。整个流程如下图4-2所示:

图4 数据包归并主流程图

由上图可以看出,归并模块的性能瓶颈在判断框部分,因此设计一个快速的匹配算法非常关键。鉴于这种情况,我们决定采用哈希查找算法,哈希值由五元组<源IP 地址、目的IP 地址、源端口、目的端口、传输层协议>来确定。所构造的哈希函数如下式所示:

HKey = SrcIP.hashCode() + Desc IP.hashCode()+SrcPort*r+DescPort*s+Proto*t ;

其中SrcIP.hashCode()以及Desc IP.hashCode()是用JDK 自带的Hash 函数把SrcIP/ Desc 映射成int 值,然后再取改值的最后三位而形成,SrcPort,DescPort ,Proto 都是整数。r,s,t 都是素数,这样可以尽可能的分散哈希值。

下面所示的图4-3是匹配数据流算法的具体流程图,在介绍该图前,先说明一下数据对象的存储结构——哈希表,哈希表中的键值对中的K 对应通过哈希函数计算出的哈希值HKey ,V 对应一个ArrayList 对象,该ArrayList 对象中存储所有符合HKey 值的数据流对象。

图5 匹配数据流算法

首先根据数据包的相关信息生成哈希值(Hkey),然后由Hkey 在哈希表中查找是否有对应的值,即ArrayList 对象。如果查找结果为空,则新建一个ArrayList 对象,并把Hkey 和该ArrayList 对象做为一个键值对放到哈希表中去,然后根据该数据包的相关信息新建一个数据流对象并加到该ArrayList 中。

如果查找结果不为空,既存在这样的ArrayList对象,则顺序查找该ArrayList中所有的数据流对象,根据五元组<源IP地址、目的IP地址、源端口、目的端口、传输层协议>来匹配,如果和某个数据流匹配成功,则更新该数据流对象的相关信息。如果整个ArrayList已经遍历完毕,还是没有找到匹配的数据流,则根据该数据包的相关信息新建一个数据流对象并加到该ArrayList中。至此,一次匹配算法结束。

在数据包的归并过程中内存里可能会同时有大量的数据流信息存在,因此必须建立一个很好的垃圾回收机制,做到既能保证数据包归并的效率又能确保系统资源不被过度占用。系统采用基于定时器的解决方案,即每个数据流对象都有一个自带的定时器,当该数据流对象建立时,定时器也随之启动,每当一个新的数据包匹配该流成功时,定时器复位,如果定时器已经超时,则把该流的相关信息以NetFlowV5 的格式发送到接收模块,并释放该数据流占用的资源。

4.2数据分析处理

分析处理模块负责对接收模块保存到数据库的原始流量数据做进一步的处理,即按照一定的策略对这些原始数据流进行定期的汇聚,然后将汇聚的结果保存到数据库中。汇聚的频率一般是5分钟,太长了每次需要处理的数据量就会非常大,太短了就会常用的汇聚策略主要有如下几种:

按照IP地址汇聚

反映两个网络设备间的流量情况。

按照IP地址、端口汇聚

反映两个网络设备间某种特定应用的流量情况。

按照端口汇聚

也就是按照应用层协议汇聚,主要目的是得到各种网络应用的流量分布情况,如FTP,HTTP,SMTP,Telnet等等。

按照第三层协议汇聚

反映TCP/UDP等协议的流量情况。

按照域汇聚

反映两个网络区域间流量的情况。

随着系统的运行,数据库中的数据会飞速的增长,直接的后果就是影响系统的反应速度。为解决这个问题,我们采用分表存储的方式。假设按照汇聚策略进行初次汇聚后的数据表为table_ori,具体的解决步骤如下:在每小时结束的时候将table_ori表中这一小时内的数据汇总一下,放到table_hour表里面,然后把ori_table表里面相应的数据删除;在每天结束的时候将table_hour表中这一天内的数据汇总一下,放到table_day里面,然后把table_hour里面相应的数据删除;在每月结束的时候将table_day表中这一月内的数据汇总一下,放到

table_month里面,然后把table_day里面的相应的数据删除,经过这样的处理,既有效地减少数据量,又保证了监控的效果。

4.3监控客户端

监控客户端提供图形化数据和报表等显示方式,采用Visual Studio .Net 2005 开发,界面直观,简单易用,可操作性强,供网络管理员方便地查看网络用户行为分析的结果。

在实验室网络环境中进行测试,主机数目约为200台,图4-4是对网络用户行为按照应用

协议进行TopN分析得到的结果的柱状图及列表显示。

图6 应用Top N分析结果示意图

5.结语

网络作为信息时代企业的生产工具,面临着适当监控,合理使用的问题。本文阐述的网络用户行为分析系统采用面向对象分析和设计技术,具有很好的可扩展性。在实际网络环境中进行的测试中,系统表现稳定,满足实际应用的要求,并且功能可根据需要进行后续扩充。下一步准备增强用户行为分析功能,添加其他的分析方法,如关联分析、异常分析等。网络用户行为分析的研究和应用正在不断发展和完善中,相信其在网络资源利用、网络资源规划和网络安全等方面将会发挥越来越重要的作用。

参考文献

[1]Stevens, W.Richard. TCP/IP详解,卷一协议. 机械工业出版社, 北京, 2000

[2]Andrew S.Tanenbaum. 计算机网络.清华大学出版社, 北京 2004年8月.

[3]尤文坚. 利用WinPcap捕获网络底层数据包的方法. 科技资讯.2006年第25期:P84

[4]简清明. 基于Winpcap库的通用程序设计模型. 计算机系统应用.2007年第2期

The Research and Design of Network Users’Behaviors

Analysis System

Zhang Liming

State Key Laboratory of Networking and Switching Technology, Beijing University of Posts and

Telecommunications, Beijing, PRC, (100876)

Abstract

After introducing the exigent requirement to network users'behaviors analysis,this paper introduce network users'behaviors analysis technology firstly,then introduce a concrete architecture and design of network users’behaviors analysis system and describe the implementation and some key technologies of it.This system is user-friendly, compatible and efficient in actual running.

Keywords: Network Users’behaviors;Probe;Net Flow; Data Collecting

作者简介:张立明,男,1983 年生,硕士研究生。主要研究方向是网络管理与通信软件。

相关主题
文本预览
相关文档 最新文档