局域网管理系统设计与实现

时间:2023-05-10 20:35:21 手机站 来源:网友投稿

摘要:局域网管理的主要内容就是对网络计算机的工作性能、配置和安全进行管理。为了能让管理员更加方便迅速的获取信息,我们需要为网络管理提供出一个简单、便捷、界面友好的操作工具。文章主要分析了如何利用简单网络管理协议来实现对网络流量的监控。首先研究了如何实现对网络流量的管理,接着设计出满足这些要求的基于SNMP的网络管理系统。文章针对当前管理系统中存在的不足进行了深入的研究,对网络流量的监控提出了一些新的见解。

关键词:网络管理;流量分析;配置管理;控件

中图分类号:TP393文献标识码:A文章编号:1009-3044(2009)27-7621-03

Design and Implementation of Lab Network Surveillance System

MA Ke1, WU Zhen-yu2, LI Zheng2

(1.Naval Aeronautical Ordnance Repair Institute, Shanghai 200436, China; 2 Unit 91321 of PLA, Shanghai 200436, China)

Abstract: The main wok of network management is the monitoring of performance, configuration and security-accounting. For the purpose of making managing person more easier of understanding and operation, more convenient and more faster to obtain the information they need , What is needed desperately is a set of simple, convenient and interface-friendly tools for managing networks. This paper focuses on the use of SNMP protocol for the purposes of network traffic monitoring. We first examine the requirements for network traffic monitoring, and then design a monitoring system that satisfy for those requirements.

Key words: network surveillance; traffic analysis; configuration management; control

随着各部门内部网的迅猛发展,网络变得越来越普遍,但结构却越来越复杂,而且现在涌现出大量的各种各样网络的应用、硬件、平台和协议,使得各个企业或部门不得不投入一个或多个网络管理者去维护和控制这些网络[1]。如何将企业从具体、繁琐的网络管理中解脱出来,同时提高网络的经济效益就显得非常迫切和重要,这要求在加强网络建设的同时加强网络管理建设。对网络系统管理员来说,最大挑战就是怎样才能快速、高效的进行网络管理。因此,研制出一种易学易操作的管理工具迫在眉睫。

1 系统需求分析

现有的网络管理系统往往比较复杂,并且难于掌握。给管理者带来了查询、获取信息的不方便。列如现有系统为HP的SNMP++,属于比较老的网络管理系统,完全按SNMP编程,点击MIB树获得OID(对象标识符),再进行get、getnext等操作,才能得到网络设备相应的数据。其缺点如下[2]:

1) 不容易让管理员理解操作,管理人员需要掌握MIB表的每一个标识符所对应表示的N个标识符,所以管理员要想能够全部掌握需要很长一段时间。

2) SNMP++的编程很死,获取信息的方式比较呆板。

但是SNMP++的源代码很有层次,所以很容易对它进行扩展[3]。

2 目标系统功能描述

由于现有系统存在的诸多弊端,为了能让管理员快速的理解操作,更加方便迅速的获取信息,本系统设计的主要功能如下:

1) 能直观的查询出网络设备的各项数值,从而快速的给出网络的运行情况。

2) 查询网络设备及相关软件的配置情况,通过对关键网络设备的流量等参数的实时采集,给出网络的运行情况。并将采集的数据存入文本文件,作为日志文件以备以后查询。

3) 方便快捷地完成数据查询工作及数据转换工作。

4) 同时要求设计所生成的网络管理系统是一个简洁的网管系统,有着直观友好的用户界面,管理员能够很方便、快捷的对整个局域网进行全面监控,及时发现网络中服务器、工作站等信息点的故障。不需要太多的专业知识,非专业管理者也能很快掌握使用。

3 系统功能设计

3.1 系统工作原理

网络管理系统是基于SNMP协议实现的,其编程的重点就是如何实现SNMP的编程。

这一部分是系统取值的核心,解决这一步之后就可以考虑管理窗口的设计了,管理窗口控制着各个功能的实现(包括与代理取得联系,查看网络参数,将网络流量存入日志文件等),这是系统设计的大模块。

然后就是自己定义MIB表,网络参数都对应唯一的对象标识符,在网络管理中对网络运行的情况分析是非常重要的,这些网络数值都存在唯一的标识符,需要开发者自己定义。

系统工作原理图如图1所示。

3.2 系统数据处理流程

大多数的现代网络设备都由管理代理配备,比如:我们设计所用的Cisco router和Switch在内部都有智能代理,SNMP负责计算机网络设备,CMIP负责网络设备之间通信的管理代理以及监视,维持管理信息库(MIB)的一致,这些管理信息库包括发送的信息和接受的信息。这些数据信息是我们的网络管理系统利用相关的网络管理通信协议(SNMP),通过产生的数据采集单元(PDU)采集的[4]。

这些从管理代理收集而来的信息数据必须存储在系统中,这就要求系统必须拥有一个管理信息的寄存器,系统定期收集日志和信息以便数据分析,用来统计一个时期的最大输入、输出量以及平均输入输出量。这些分析数据能够产生流量的图形和曲线,还能用来统计网络的管理意图。这些分析数据会作为日志存入管理信息寄存器以备日后分析。

管理系统的另一个需求就是产生监控网络设备的报道,报道被监测到的代理问题,这涉及到局域网的部分或多部门的交流信息,这些信息被报道给管理员,管理员再通过这些信息适时动态的了解和掌握网络上信息点的工作状态信息,对于特别的信息能判断出哪里发生了故障。它们还可以在局域网由于突发问题需要更新或为以后阻止病毒入侵提供备份数据。

为了实现动态的监控,就得将重要的网络流量变化显示出来,这些重要的参数都存在于MIB中。图2是MIB的层次结构图[5]。

网络管理系统将接收到的SNMP包译码之后,再以表格的形式显示出来,在SNMP++中,系统并没有提供这种功能,它只是简单的显示出OID值,这就需要管理人员自己了解各个OID值对应的每一项,对于刚刚涉及网络管理的人员来说,这样的任务是比较艰巨的,在查看网络状态时需要备一份详细的MIB表,而且要一个一个的找出OID,这样的设计其实是不太友好的。同时,SNMP++每次都需要点击MIB树才能取值,对于经常要查看的数据,这是非常不方便的。因此需要对SNMP++进行第二次开发,将对判断网络运行状态有帮助的参数要能一次性的显示出来,使得用户不需要再看MIB表就能直接知道网络传输的各种状态,这样的界面就友好多了,管理人员同时也不需要花太长的时间来掌握一套网络管理工具,整个操作过程变得简单了许多。

系统数据处理流程图如图3所示。

4 系统实现

4.1 用VC实现SNMP

整个SNMP编程要经过一个创建、执行、销毁的过程[6]。通俗点说就是要做准备。初始化SNMP环境即加载SNMP的功能,接着就要执行所进行的操作,SNMP是基于消息机制的,所以消息传递与管理是在编程过程中所必须注意的问题,最后要进行销毁和回收资源。

SNMP主要工作是发送消息和接受消息,下面以接收消息为里来详细介绍编程实现过程。

1) 接收消息,用函数

SNMPAPI_STATUS SnmpRecvMsg

(HSNMP_SESSION session,// SNMP会话句柄

LPHSNMP_ENTITY srcEntity,//资源实体句柄

LPHSNMP_ENTITY dstEntity, // 目标实体句柄

LPHSNMP_CONTEXT context,//上下文句柄

LPHSNMP_PDU PDU //PDU句柄

);

2) 提取数据报,用函数SNMPAPI_STATUS SnmpGetPduData();

3) 计算返回列表数目,用函数

SNMPAPI_STATUS SnmpCountVbl();

4) 取得返回结果,用函数

SNMPAPI_STATUS SnmpGetVb();

在上一步已经得到了结果,用一个简单的for循环一次就能将结果取出。该函数有四个参数,第一个在第三步已得到,第二个是for循环中的变量值,取得变量是从0开始的。在前面我们把它们都设置为空,现在SNMP代理将返回值添了进去,然后就可以坐享其成了,定义两个变量,直接接收就行。在这里需要提醒的是对IP地址的接收会有点不同,因为返回值将其封装为一个指针数组了,我们需要一个一个的取出来。

前面我们提到过5个重要的句柄,只有会话句柄是在发送和接收消息时都用到的,所以在发送和接收消息以后,要将其它四个句柄释放掉,那么会话句柄何时释放呢?应该在应用程序退出的过程中释放掉,进而要知道创建会话句柄的位置,那是在构造函数里。以上这些释放句柄资源的函数SNMP API都有提供,如SnmpFreeEntity,SnmpFreeContext,SnmpFreeVbl,SnmpFreePdu,SnmpClose,它们的参数只有一个,就是要释放的句柄。最后清理整个现场,用函数SnmpCleanup()解决。

4.2 创建变量捆绑列表Vb

系统通过SNMP发送PDU数据包,当目标机器回应时,就需要接收PDU数据包返回的值。所以要对Vb获取数据进行相应的程序编写,前面已经提到Vb就是绑定列表,要返回一个Vb就必须有一个有效的OID和返回值,所以一开始就要判断是否是有效的取值,对于取值我们用到的是get_value()函数,而SNMP实体中包含了很多种数据类型,而在网络编程中,表示层对数据格式的要求是特别严格的,所以我们要分别定义取值函数。

通过get_printable_value()我们就能获得各种网络设备的参数值,但是这需要建立在PDU的发送的基础上。

4.3 PDU的创建

PDU是我们程序中真正的工作者,这些数据包能够带回我们需要的网络参数。所以它的实现非常重要,PDU的实现包括产生PDU、检验PDU的有效性、以及匹配的应答和请求PDU。

产生PDU:要确认PDU是否为SNMP3版本,PDU要与Vb进行捆绑,调用free()函数释放。

检验PDU的有效性:一个PDU数据成份(或称域)的值可能各自有效,但和其它域的值组合在一起后或许就是无效的。

匹配的应答和请求PDU:应用程序接收SNMP应答的顺序或许不匹配此应用程序提交SNMP操作请求的顺序。为了匹配应答和请求,应用程序必须使用应答的请求标识符域(request_id)。request_id域是一个标识PDU的唯一的数字值。

4.4 界面设计

以上部分都属于后台的操作,我们的最终目的就是将数据显示出来,也就是要进行前台操作,所以在这里把它单独拿出来作为一个模块。系统主要界面组成关系如图4所示。

这里以目标机器编辑界面为例,介绍界面设计思路。目标机器的属性分为超时时间、重传次数、版本信息、IP地址等。要想获取目标机器的各项网络参数,首先就必须要知道目标机器的IP地址,这样才能与机器连接。目标机器编辑界面如图5所示。

5 结论

本设计是在对目前市场上存在应用于网络管理的系统软件进行分析,在得出它们存在的或多或少的缺陷之后,确定了我们要对它们进行改进和升级的目标。先是可行性工作分析,发现目标系统是否值得开发的,同时是否能力开发,也能否符合用户的操作方式。然后理清目标系统的设计思路及其实现拓扑结构,在明白目标系统的工作原理图和主模块数据流图之后,根据设计流程,我们设计了目标操作系统并最终达到了预期的目的。

参考文献:

[1] 武孟军.简单网络管理协议(SNMP) [M].北京:人民邮电出版社,2006.

[2] 张楠,张振国.客户端/服务器模式中传输层协议的比较与选择[J].网络与通信,2006,22(9-3):200-202.

[3] 王绍斌,王昭顺.信息系统攻击与防御[M].北京:电子工业出版社,2007.

[4] 尹建璋.无线局域网网络安全措施改进[J].计算机工程与设计,2008, 29(11):2745-2747.

[5] 栾昌海.异构网络下的Web监控系统设计研究[J].微计算机信,2008,24(7-3): 81, 101-102.

[6] 吴媛,陈正军,李雄德.基于SNMP校园网网络管理系统设计与实现[J].电脑知识与技术,2009,5(15):3925-3926.

推荐访问:管理系统 局域网 设计

版权声明 :以上文章中选用的图片文字均来源于网络或用户投稿 ,如果有侵权请立即联系我们 , 我们立即删除 。