文章编号:100622475(2004)0820065202收稿日期:2003208222作者简介:李慧君(19802),女,江西抚州人,南昌大学硕士研究生,研究方向:计算机网络技术与应用;徐鹰(19572),女,辽宁盖县人,高级实验师;李建民(19562),男,江西丰城人,教授。
网络监控系统的设计与实现李慧君,徐 鹰,李建民(南昌大学网络中心,江西南昌 330029)摘要:介绍了网络监控系统的设计思想和实现方法。
系统提供流量监控、拓扑发现、故障管理等功能,可以有效地监控流量及其他网络异常情况。
关键词:流量监控;拓扑发现;故障管理中图分类号:TP309 文献标识码:ADesign and Implementation of N etw ork Monitor SystemLI Hui 2jun ,X U Y ing ,LI Jian 2min(Netw ork Center of Nanchang University ,Nanchang 330029,China )Abstract :The paper introduces the design and im plementation of a netw ork m onitoring system.The system provides the functions of net 2w ork traffic m onitoring ,topology discovery and fault w ork traffic and exceptions can be m onitored effectively.K ey w ords :netw ork traffic m onitoring ;topology discovery ;fault management0 引 言随着校园网络规模的扩大以及应用的普及,网络流量扩大,网络负担加重,可能使网络设备超负荷运转,从而导致网络性能下降。
这就需要功能更完善的网络管理来保证网络的可靠运行,网络管理特别是网络性能的监控越来越受到人们的重视。
网络监控系统是网络管理的基础,主要是为网络管理提供所需的一些数据,它是维护网络的重要工具。
大型网络管理软件价格昂贵,而开发一些工具软件辅助管理则十分必要。
本文介绍了一个网络监控系统设计与实现技术。
1 系统的设计思想1.1 系统体系结构网络监控系统为客户机/服务器方式,客户端和服务器端位于同一局域网内,系统与网内的其他机器连接在同一H UB 或SWIT CH 上。
这种接入方式对原有网络设置不做任何改动即可保护整个内部网,在意外情况下若系统无法正常工作,不会影响网络的正常活动。
图1 网络监控系统的系统结构1.2 系统功能模块该系统具有4个功能模块,见图2。
系统主要功能是:(1)对每一条链路及各网络设备的流量及通断状态进行实时监控,及时发现故障设备和线路,进行报警并协助迅速解决。
(2)定期分析历史数据,对整个网络的性能进行定量评估,及时提示管理者和决策者做出设备和线路的升级计划,保证计算机与现代化 2004年第8期J IS UAN J I Y U XI ANDAIH UA总第108期设备和线路不会由于负载过重而出现网络性能急剧下降的情况。
2 系统的具体实现2.1 流量监控模块在网络监控系统中网络流量数据的采集是关键。
实现数据采集的方案和技术有多种,目前用于网络流量数据采集的常用方法有:(1)基于侦听网络数据包的包分析模式:它通过所监听的数据包进行分析从而获得网络流量的数据。
传输介质带宽限制或路由器的过滤功能等原因影响了网络数据包的完整性。
对带宽占用、加重网络设备的负担等也是它存在的缺点。
(2)基于路由器MI B的S NMP模式:该方法的优点在于有效地克服了包监听模式的不足之处,且其原理简单,容易实现,对于中小型的校园网比较适用。
缺点是工作效率较低,对网络带宽有影响且会加重路由器的负担,使网络设备的通讯性能大大降低,甚至造成通讯的瓶颈。
另外,流量采集的时间间隔比较难把握,容易造成数据的丢失。
(3)基于安插网络探针(PROBE)技术的流量捕获模式:PROBE技术是依靠传统的以太网总线结构的通信原理,在靠近出口路由器的网段上安插网络探针,以监听通信,并记录通过该网段的每一次通信,进而整理成流量统计数据。
实时流量监控部分由于数据采集频率较高,若采用S NMP模式来采集势必增加路由器负担。
本系统中采用了探针技术来获取流量数据,基本思路是接收并记录所有的通讯数据,即所有通过用户网段的流量只在交换机上作了一份复制定向发送到网络探针上,网络探针截获网络中各种协议的数据报文,解析其报文的包头,记录目的IP、源IP、数据大小等信息并统计流量信息存入数据库中,不对其内容进行解析,用户数据的安全性可以得到保证。
采用网络探针技术最大的优点就是不需要路由器的参与,对路由器的影响很小;且占用很少的带宽,不需要额外的网络开销。
但是,要实现基于这种技术的流量采集统计,就必须要有很大的缓存器,以便记录下所有的网络通信。
这给流量统计主机(Cache)的性能和硬件配置提出了很高的要求。
2.2 拓扑发现模块本系统中采用了基于S NMP协议(路由表)的拓扑发现方法。
路由表的基本表项包括路由的目的网络地址、目的网络的网络掩码、该路由的下一站的IP 地址、对应的端口、路由协议等信息。
其中下一站的IP地址(nexthop)信息可以用于网络的拓扑发现。
其定义如下:ipR outeT able OB J ECT2TY PE//路由表SY NT AX SE QUE NCE OF I pR outeEntryI pR outeEntry::=SE QUE NCE{ ipR outeDest I pAddress,//路由的目的地址 ipR outeNextH op I pAddress,//路由的下一个路由地址 ipR outeMask I pAddress//路由目的地的子网掩码…}拓扑发现的方法是从管理工作站的缺省路由器开始,通过读取路由器的路由表,可以逐渐向下发现网络中的所有基于路由功能的网络节点。
再通过路由表的ifindex(对应端口标识)项,就可以构建出整个网络的拓扑关系图。
每隔一定时间,根据被管网络对象数据库中的信息,生成网络拓扑图,监听网络设备自动发现模块传来的事件消息,修正网络拓扑图。
2.3 故障管理模块该模块利用IC MP和S NMP所提供的T rap机制作为基本的数据获取手段来实现对故障事件的采集。
在服务器端后台打开一个S NMP进程,注册要接收的TRAP类型,监听指定端口,侦听网络元素的报警事件,将解析的结果(故障的开始时间、结束时间、故障位置和故障类型)写入数据库日志,在网络拓扑图上让故障设备的颜色变成红色示警。
有针对性地向被测站点或被测线路上一站点在一定的时间间隔内发送IC MP报文,根据其响应状况来确定链路状态,链路状态用不同颜色的线来表示,红色表示链路状态不正常,绿色表示正常。
同时可根据管理员的设定采用窗口声音报警或电子邮件报警。
2.4 信息服务模块该模块主要有以下功能:(1)参数设定:方便管理员设置各种参数,如报警时间,节点对应的信息的添加、插入和删除。
(2)日志备份与删除:定期备份路由器和其他设备的主要设备的配置文件,当网络管理员对路由器或服务器上的配置文件进行修改后,应及时备份配置信息,当发生异常时,可利用备份信息进行恢复,网管工作站可定期执行脚本文件,从路由器和服务器上获取配置信息,并以日志的形式存储在当地磁盘上。
并根据设定的时间对陈旧的日志删除。
(3)统计功能:统计给定年月设备的流量和故障情况,具体有:统计设备的国际国内流量及按(下转第82页)s=S tring(BlobM id(bu f,1,n)) //将接收到的数据转换成字符串。
对一个实用的网络应用程序,异步套接字的使用是不可缺少的,否则,对于客户应用程序,在通过套接字收发大量的数据时,用户失去对程序的控制,不能点选菜单,也无法取消漫长的操作。
对于服务应用,这几乎意味着同时只能为一个客户提供服务(除非使用多线程)。
因此程序在客户端和服务端都采用了异步套接字,这样客户端的用户不会因为进行长时间的I/O操作而失去对程序的控制,服务端则可以并发地为多个客户服务。
为了使用异步套接字,要用到WS AAsyncSelect()函数。
在服务器对套接字调用ac2 cept()或者在客户端调用connect1()之前,将套接字设置成异步方式,并指定感兴趣的事件,确保调用不会被阻塞才执行调用指令:对服务器应用程序,下面的语句表示对套接字上的FD-ACCEPT事件感兴趣:n=WS AAsyncSelect(s ock,Handle(parent),W M-USER,FD-ACCEPT)对客户应用程序,下面的语句表示对套接字上的FD-C ONNECT事件感兴趣:n=WS AAsyncSelect(s ock,Handle(parent),W M-USER,FD-C ONNECT)上述两条语句分别位于某个控件的事件处理函数中,因此用Handle(parent)来得到当前控件所在窗口的句柄。
在进行上述的调用之后,窗口必须处理W M-US2 ER消息。
这就要为窗口定义一个新的自定义事件,事件的I D为pbm-custom01。
在accept()或connect1()成功之后,网络连接就已经建立好了。
再用下面的语句表示对FD-RE AD和FD-C LOSE事件感兴趣: WS AAsyncSelect(s ock,Handle(this),W M-USER,FD-RE AD+ FD-C LOSE)或者用下面的语句表示对FD-WRITE和FD-C LOSE事件感兴趣:WS AAsyncSelect(s ock,Handle(this),W M-USER,FD-WRITE+ FD-C LOSE)因为这条语句位于窗口的事件处理函数内,因此在这儿要用Handle(this)获得当前窗口的句柄。
现在,可以在套接字上进行异步的数据收发了。
对于采用异步套接字的程序来说,窗口处理函数是关键,也就是前面提到的Event I D为pbm-custom01的窗口事件函数。
这个函数有两个参数,(1)w param,类型是U LONG,代表了发生事件的套接字的s ocket 号。
(2)lparam,类型是LONG,它的低16位是上述套接字上发生的事件(FD-C ONNECT、FD-ACCEPT、FD-C LOSE、FD-RE AD以及FD-WRITE等等)。
这个函数首先要判断发生了哪个事件,然后根据发生不同的事件进行相应的处理。
比如发生FD-C ONNECT事件(一般在客户机上发生),就要调connect1()函数进行连接,发生FD-ACCEPT事件(一般在服务器上发生)就调accept()接受客户的连接请求,或者拒绝———例如同时连接到服务器的客户数目超出指定的值。