1、浅谈基于 SNMP 网络管理系统的设计与实现【摘要】随着现代网络的规模不断扩大,复杂性不断增加,网络的异构性越来越高,网络管理的重要性与日俱增。特别在我国,迫切需要对中小网络提供有效的管理。本文就具体分析研究了基于 SNMP 网络管理系统的设计与实现。 【关键词】SNMP;网络管理;设计与实现 中图分类号:TN711 文献标识码:A 文章编号: 引言 目前,网络界应用最多的是简单网络管理协议(Simple Network Management Protocol,SNMP,),它已经成为事实上的工业标准,它代表了标准化的网管协议,并在很大范围内得到应用。但目前 SNMP 的管理范围仅限于对网络硬
2、件设备的管理,如路由器、集线器等,对于网络上运行的应用程序的管理涉及很少,只有 Oracle 等几个大公司对其数据库产品有 SNMP 管理。可以这么说,与网络硬件设备管理相比,网络应用软件的管理还处于一种混乱的状态。随着网络技术的发展,作为网络的一个重要组成部分的软件,越来越需要有统一有效的管理。 1SNMP 概述 1.1SNMP 的特点 简单网络管理协议 SNMP 作为网管协议,它提供了监控网络和管理网络的一整套系统的方法。它有以下特点: (1)简单性:顾名思义,SNMP 相对以前的管理协议简单,容易实现且成本低(尽管实际上 SNMP 并不是太简单) 。 (2)可伸缩性:SNMP 可管理绝大
3、部分符合 Internet 标准的设备。 (3)扩展性:通过定义新的“被管理对象”即 MIB,可以非常方便地扩展管理能力。 (4)健壮性:即使在被管理设备发生严重错误时,也不会影响管理者的正常工作。 1.2SNMP 的体系结构介绍 SNMP 的体系结构包括了网络管理协议体系结构和基本的网络管理结构。 (1)网络管理协议体系结构 Internet 网络管理协议规范是基于模块化的体系结构,它不仅仅是传输数据的协议,它由如下四个方面的定义构成:数据定义语言、管理信息定义(MIB)、协议操作定义和安全管理。 (2)基本的网络管理结构 基于 Internet 的 SNMP 网络管理中包含四个基本组成部分
4、,如图 1所示。 图 1 SNMP 参考模型 (1)若干个被管理节点,每个节点都有一个 SNMP 实体,其负责维护本地 MIB 中的管理信息,并提供对管理信息的远程访问,通常称其为代理。 (2)至少一个带有管理应用程序的 SNMP 实体,通常称其为管理站。 (3)管理协议,用于在 SNMP 实体间传输信息。 (4)管理信息。 2 使用 SNMP+软件包 2.1 认识 SNMP+ SNMP+是由 HP 公司开发的一套用于 SNMP 编程的类库,由于使用 C+语言编写,因此充分利用了面向对象的编程技术。SNMP 编程涉及的所有数据结构,全部被封装在相应的类中,所有的底层操作细节,对使用者来说是完全
5、透明的,从而简化了 SNMP 网络管理软件开发的复杂性,也缩短了系统开发周期。 2.2 SNMP+软件包中的主要类介绍 (1)数据类型类 Oid 类是对 SMI 中对象标识符 OID(Object Identifier)类型的封装。定义该类的目的是为了使操作 OlD 更加简洁、快速。它和 MFC 中的Cstring 类有很多相似之处。通过该类的成员函数 get_printable0 可以从一个 Oid 对象中获取对象标识符字符串。 IpAddress 类实现了对普通的 IP 地址的封装,UdpAddress 类则将一个 IP 地址与一个 UDP 端口号绑定在一起使用。 (2)Vb(Variab
6、leBinding)类 SNMP 中的变量绑定是一个对象标识符和一个 ASN1 值组成的序列,SNMP+中使用 Vb 类封装了这种数据结构。Vb 类中使用了一个 Oid 对象存储一个对象标识符,一个指向 Snmp Syntax 类型的指针绑定一个 ASN1值,以及对这两个数据进行操作的一组方法。例如可以通过调用 Vb 类的成员函数 setoid()和 set_value()来分别设置这两个值,也可以通过调用 get_oid0 币 nget_value0 来分别得到它们的值。 (3)Pdu(Protocol Data Unit)类 SNMP+使用 Pdu 类封装了 SNMP 报文中的 PDU 结
7、构。TrapPDU 的结构不同于其他 PDU 结构,Pdu 类中有存储这些信息的成员变量,包括一个requestid 号、错误状态和错误检索、变量绑定部分和 TrapPDU 包含的信息。其中变量绑定部分是用一个指向 Vb 类型的指针数组进行保存,一个Pdu 对象最多可以包含 50 个 Vb 对象,当然包含 Vb 对象的个数看具体的请求数据的大小而设定。 2.3 使用 SNMP+的注意事项 (1)编译连接注意事项 在编译 SNMP+软件包时应将其编译为动态或者静态链接库。成功编译之后,我们自己的工程在编译参数设置上要和 SNMP+一致。使用发行版的 SNMP+连接库的工程必须编译为发行版程序,使
8、用调试版的 SNMP+连接库的工程必须编译为调试版程序。 (2)内存泄露问题 若在使用 SNMP+开发包的过程中发现内存泄露问题(往往是 64 字节的整数倍),在确认自己的代码完好的情况下,可以试着在 SNMP+源码中的 wxsnmpcpp 文件中查看 voidSnmp:socketstartup()代码部分,注释掉 debugprintf(4, “WSCAleanup:RetumValue(i)” ,RetValue);再重新编译程序。但是在发行版模式下,该语句并不被执行,所以也可不必担心开发时的这个问题。 3 网络管理系统的实现 基于目前主流系统平台为 Windows 系列产品,而且本管理
9、系统的使用者是普通用户,所以我们也应针对 Windows 系列操作系统并应该有友好简洁的用户界面和尽量简单化的操作。因此,笔者采用了 Microsoft Visual C+60 开发平台,而且 VC 对 C 语言也有很好的支持,这对我们进行开源库的分析改进是非常必要的,进而也可不断完善我们的管理系统。 3.1 系统具体设计 系统为用户提供了一个单文档界面,菜单栏上有配置、操作、查看、工具、系统设置和帮助功能。窗体左右分为两个部分:左边用来显示网内的可管理设备,右边用来显示网络拓扑图。系统完成用户登录后,先要进行系统的配置,进而可以在操作中选择自动拓扑发现,之后网络中的各个节点信息都被存储在数据
10、库中,系统可以自动把收集到的各节点信息写入数据库。查看主要是利用数据库中的信息完成对历史告警的显示和查询,方便地管理历史告警。工具主要是 MIB 浏览器、Telnet 以及一些工具的操作。系统设置是对系统用户进行管理、轮询时间设置、超时重传设置以及其他系统设置。在拓扑图上点击某一节点也可对其进行流量监视。 本系统中使用了 HP 公司提供的 SNMP+软件包,并加入了 Libdesl一 4.01a 库来对 SNMPv3 进行支持。Libdes 是一组 C 语言源程序,主要实现了 SNMPv3 的数据加密功能 SNMP+提供了两种模式的网络请求:阻塞模式和非阻塞模式,在网络延迟比较大的情况下,使用
11、非阻塞模式要优于阻塞模式。大多数情况下,管理工作站与代理是处于同一个局域网的。因此,使用阻塞模式可以收到事半功倍的效果。本系统中使用了阻塞模式。使用 SNMP+,也可以很方便的实现 Trap 的发送和接收功能,而且可以调整 Trap 发送和接收时使用的 UDP 端口。 3.2 系统结构框架 该软件实现的网络管理系统结构由三部分组成。上层左边是网络管理系统的管理部分,主要完成对网络管理接口部分收集的网络数据进行分析,数据存储实现用户接口等;上层右边是信息数据库,主要用来信息的存储;下层是网络管理系统的网络代理部分,主要完成网络信息的分区收集,进而通过网络管理接口提交给用户,向下可以对连接的设备进
12、行访问。MiniView 局域网管理系统的结构如图 3 所示。 图 2 系统结构框架 结束语 基于 SNMP 协议的网络管理模式是目前计算机网络管理技术发展的必然趋势,对于这一课题的研究也是当今的热点。这里我们虽然进行了一些研究,但仍然有许多方面需要我们去加以完善以及作进一步地研究,例如在网络安全管理方面等,当然,这不是光靠网络管理协议本身就能够完全解决地。它还需与其他众多地计算机网络安全技术相结合才能更好地得到解决,这是我们今后努力的方向。 参考文献 1. 龚松显.张伟.SNMP 的 VC+编程实现J.2005 2. 陈家雄.使用 VC+和 SNMP+开发基于 SNMP 的网络管理系统J.现代计算机(专业版)2007(9)