首页 > 范文大全 > 正文

面向应用Intranet流量监测系统的设计与实现

开篇:润墨网以专业的文秘视角,为您筛选了一篇面向应用Intranet流量监测系统的设计与实现范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘要:该文着眼于Intranet流量监测,比较了几种常用的流量数据采集方法,分析了Intranet中网络应用业务的特点,从而提出了一种面向应用的流量数据采集模型。基于这一模型,利用WinPcap提供的函数库实现了面向应用的intranet流量监测系统。介绍了系统的设计实现

关键词:流量;面向应用;WinPcap

中图分类号:TP311文献标识码:A文章编号:1009-3044(2010)03-593-04

The Design and Implementation for Application Intranet flow Monitoring System

MA Xiang

(Pianzhuan Group Information Center, Xianyang 712000, China)

Abstract: To deal with the Intranet flow monitor prpblem,after comparing several popular flow data collection methods and analysising netwrok's business characters, this paper resents a novel framework data collection model. Based on this modle, using the WinPcap's library, we give a detial introduction of the system's design and Implementation.

Key words: flow; application-oriented; winpcap

随着Internet的迅速普及和广泛使用,Intranet的部署和使用也不断发展。Intranet即内部网络,也叫内联网,是将Internet的成熟技术如TCP/IP、SMTP、HTML、HTTP、WWW等应用于企业或政府部门的内部专用网络。以Intranet为基础,一方面,可以将基于Internet成熟技术的服务如Web服务、Mail服务、FTP服务等网络应用迁移到企业内部;另一方面,企业根据自己的业务特点,针对企业内部人员或客户,开展新的网络应用业务,如企业内部数据库系统、办公自动化系统及MIS应用等。

随着Intranet中多种网络应用业务的开展,对网络的承载能力是一个考验。如何清楚地了解不同网络应用业务网络的使用情况;如何为每种网络应用业务分配合理的网络带宽,逐渐成为众多企业开展网络应用业务后关心的一个问题。

1 常用的流量数据采集方法

实现对Intranet流量的监测,就要选择流量数据采集点,并且采集的流量数据完整且不重复。下面对常用的流量数据采集方法[1]进行分析。

1.1 基于SNMP的网络流量统计分析模式

根据SNMP[2]的工作原理,需要流量统计服务器和路由器相配合来完成网络流量的采集和统计,如图1所示。流量统计服务器和路由器分别扮演SNMP的Manager和Agent角色,服务器定期向路由器发送SNMPWALK(SNMP请求),当路由器接收到请求后将所要采集的数据发送给流量统计服务器。这一“请求-响应-处理-发送”的过程每隔一段指定的时间执行一次。

实现基于SNMP模式的网络流量数据采集对所使用的路由器也有一定的要求。首先,路由器必须是企业网中心节点的路由器,这样采集的网络流量数据才会完整;其次,路由器除了拥有一般路由器的路由选择和数据包转发功能外,还须提供过往包的统计功能。这种模式原理简单,容易实现。但工作效率较低,对网络带宽有影响且会加重路由器的负担。另外,流量采集的时间间隔比较难把握,容易造成数据的丢失。

1.2 基于安插网络探针技术的流量数据捕获模式

探针(PROBE)技术是依靠传统的以太网(Ethernet)总线结构的通信原理,在靠近出口路由器的网段上安插网络探针,以监听其他的通信,并记录通过该网段的每一次通信,进而整理成流量统计数据。

这种模式最大的优点就是不需要路由器的参与,对路由器的影响很小;且占用很少的带宽,不需要额外的网络开销。但要实现这种基于PROBE技术的流量采集统计,必须有很大的缓存器(Cache),以便记录下所有的网络通信。这给流量统计主机的性能和硬件配置提出了很高的要求。

网络探针截获的是网络上的数据流,通过对这些数据进行分析,可以统计出对应IP地址的流量数据或者是基于某种协议的网络应用业务的流量数据。

1.3 基于网络数据流(NetFlow)技术的IP数据流捕获模式

它是采用流作为网络数据传输的单位。网络设备(路由器和带三层交换的交换机)为其提供一个专有的缓存器。在数据转发期间,对于属于同一个数据流的数据包,交换机只处理其第一个包,并根据第一个包的情况在netflow cache中建立一个记录,属于同一个流的数据包将根据netflow cache中的记录直接作二层转发而不再作三层处理。这样,便可以大大加快网络设备的数据处理速度。

在NetFlow[3]方法中,流量监控统计服务器使用专门的软件,每时每刻处于监听状态。路由器和带三层交换的交换机待某个流传输完毕后,把netflow cache中对该流的统计信息一次性地发送给流量监控统计服务器的监听进程,并由流量统计分析程序进行整理,生成流量统计记录,NetFlow技术的流量采集模型如图2所示。

基于NetFlow的流量采集模型可以有效地节省网络带宽,减少网络设备的额外负担。但对网络设备的要求较高,并且不适合用于某个精确时段的网络流量统计。

基于NetFlow技术的网络流量监控,可以根据源和目的IP地址及其子网掩码,甚至TCP/UDP端口号进行流量数据统计,并且可以列出指定时间内的IP包数、字节数、IP包大小分布情况等流量信息。

2 面向应用的流量数据采集模型

通过对常用的网络流量数据采集方法的分析和比较,结合Intranet中网络应用业务的特点,提出了面向应用的流量数据采集模型,如图3所示。

本模型需要网络流量监控服务器(运行管理进程)和安装在网络应用业务服务器上的流量统计程序(即进程)相配合来完成流量数据采集工作。具体实现中,管理进程根据WinPcap的过滤表达式语法对进程需要进行流量统计数据采集的网络应用业务信息和流量数据采集的周期进行配置。进程根据配置的参数信息,进行周期性的流量数据的采集工作,并随时将采集的流量数据以一定的格式发送给管理进程。管理进程一直运行接收流量数据的监听线程,将接收到的流量数据存入数据库中,用于实时流量数据显示和历史流量数据分析。

面向应用的流量数据采集模型具有以下特点:

1)数据采集的完整性

Intranet中运行的网络应用业务根据其实现模式可以归为C/S模式和B/S模式,无论是何种模式,Server端处理所有Client的请求,并作相应的响应处理。因此对某种网络应用业务而言,Server端是此种网络应用业务流量的汇接点。从网络应用业务的Server端采集此种网络应用业务的流量数据具有完整性。

调用pcap_lookupdev(),获取可用设备,再调用pcap_open_live()获得唯一的包捕获实例描述,并且设置回调函数的执行周期。

2)设置过滤规则

给定过滤表达式,调用pcap_compile()进行编译,并用pcap_setfilter()设置包捕获实例描述的内核过滤器。

3)设置数据采集模式

调用pcap_setmode()设置该包捕获实例描述为统计模式。

4)获取数据

执行pcap_loop()函数,利用回调函数dispatcher_handler()处理采集的流量数据。

回调函数dispatcher_handler()中,具体实时流速的计算和流量的计算如下代码所示。dispatcher_handler()的参数一传递时间戳,用于计算此次调用与上一次调用之间的延时delay,Kbps表示实时流速,单位是K比特每秒,KB表示实时流量,单位是K字节。

struct timeval *old_ts = (struct timeval *)state;

u_int delay;

LARGE_INTEGER Kbps,KB;

delay = (header->ts.tv_sec - old_ts->tv_sec) * 1000000 + (header->ts.tv_usec - old_ts->tv_usec);

Kbps.QuadPart = (((*(LONGLONG *)(pkt_data + 8)) * 8 * 1000000) / (delay) /1024);

KB.QuadPart = ((*(LONGLONG *)(pkt_data + 8)) / 1024)

old_ts->tx_sec = header->ts.tv_sec;

old_ts->tv_usec = header->ts.tv_usec;

流速Kbps和流量KB是本系统需要的数据,因此计算出这两个数据后,直接将采集的流速和流量数据发送给管理进程。

5 结束语

面向应用的Intranet流量监测系统应用于Intranet中不同网络应用业务流量的监测。通过对以网络应用业务为单位的流量数据的监测和分析,为Intranet中不同网络应用业务网络带宽的合理利用和分配提供了重要参考依据。

参考文献:

[1] 刘特,徐迎晓,吴建军,等.基于Java Servlet的网络流量采集与监控技术[J].计算机工程,2002,28(5):167-170.

[2] 曾凡锋.基于SNMP的网络流量统计分析系统[J].北方工业大学学报,2003,15(1).

[3] 梦学军,吴黎兵,石岗.基于NetFlow网络流量分析的研究及应用[J].华中科技大学学报(自然科学版),2003,31(234):253-255.

[4] Loris Degioanni, NetGroup, Politecnico di Torino.WinPcap Documentation 3.0[OL]. winpcap.polito.it, 2003.

[5] 孙鹏,董玉华,韩正之.基于数据链路层的局域网流量统计的实现[J].计算机工程与应用,2002(5):150-15.