基于SNMP++网络管理软件的编程实现

更新时间:2024-01-17 作者:用户投稿原创标记本站原创 点赞:5899 浏览:19774

【摘 要】大规模网络离不开自动网络管理软件.网络管理软件的开发通常以已有的开发包为基础.论文介绍了HP公司的SNMP++开发包,包括如何找到开发包,如何编译开发包,如何使用开发包.最后,给出了如何获取网络管理信息的例子以及如何构建测试环境.

【关 键 词】网络管理软件;简单网络管理协议;开发包;SNMP++

【中图分类号】TP393【文献标识码】A

1引言

随着网络技术的发展,网络规模的扩大,过去单纯依赖人工管理网络已经变得不现实,需要专业的网络管理软件辅之人工分析才能完成网络管理.网络管理软件功能通常包括配置管理、故障管理、性能管理、安全管理、计费管理.这些网络功能的实现目前主要借助于简单网络管理协议(SimpleNetworkManagementProtocol,SNMP).SNMP是管理IP网络中设备的标准协议.互联网上的许多设备都支持SNMP,包括交换机、路由器、工作站、怎么写作器、打印机等.

2SNMP和网络管理

2.1SNMP

现今复杂的网络离不开路由器、交换机、怎么写作器等网络基础设施,对这些基础设施进行管理是一件令人生畏的事情,因为管理人员不但要保证这些设备正常工作,同时还需要对这些设备进行性能优化等工作.1998年,在这种网络管理需求背景下提出了SNMP.SNMP已经成为网络管理的事实标准.

2.2管理者和写作技巧

在SNMP体系结构中,有两种实体:管理者(Managers)和写作技巧(Agents).管理者和写作技巧都是软件系统.管理者通常运行在怎么写作器系统中,写作技巧运行在网络设备上.管理者负责向写作技巧发起轮询请求,同时接受从写作技巧发送过来的trap信息.写作技巧负责跟踪设备上的各种操作情况,根据管理者的请求信息访问设备中相应对象的值或设置设备中相应对象的值,然后把结果返回管理者;或者写作技巧发现了设备中预定义的trap事件发生,则主动向管理者发送trap信息.

2.3I和MIBs

管理信息结构(StructureofManagementInformation,I)负责定义管理对象以及它们的行为.每个写作技巧拥有它负责跟踪的网络管理对象列表.例如,路由器接口工作状态就是一个网络管理对象.写作技巧维护的网络管理对象列表定义了管理者能判断网络设备网络情况的管理信息.

管理信息库(ManagementInformationBase,MIB)可以认为是写作技巧负责跟踪的管理对象信息数据库.任何能被管理者访问的统计信息或者状态信息都在MIB中定义.

I提供了定义MIB的方法,而MIB是对象的定义.写作技巧可以实现许多MIBs,但所有写作技巧都必须实现的MIB称为MIB-II.MIB-II的主要目标是提供TCP/IP网络管理信息.

3SNMP应用编程接口和SNMP++

3.1SNMP应用编程接口

目前存在多种简单网络管理协议应用编程接口,基于这些编程接口可以方便地进行网络管理应用编程.这些编程接口中大部分需要程序员非常熟悉SNMP协议的内部工作原理以及SNMP的资源管理,同时,大部分编程接口依赖于特定的平台,产生的SNMP代码特定于操作系统或者网络操作系统平台,难于移植.

3.2SNMP++

SNMP++将面向对象编程的优点融入了网络管理编程中,它是基于C++的SNMP协议应用程序编程接口.

SNMP++提供了SNMP语法类,包括ObjectIdentification(Oid)类、OctetStr类、TimeTicks类、Counter32类、Gauge32类、Counter64类、Address类、VariableBinding类、Pdu类、SnmpMessage类、Target类、Snmp类,这些类的详细说明可以参见相关网站信息,在此不再赘述了.

4SNMP++编程

4.1下载SNMP++开发包

开发者可以从网站http://.agentpp.上下载SNMP++开发包.目前,最新的版本是SNMP++v2.8和SNMP++v3.2.SNMP++v2.8是一个实现SNMPv1/V2c协议操作的C++编程接口.SNMP++v3.2在SNMP++v2.8基础上进行了扩展,增加了对SNMPv3的支持,同时修复了一些bug.

开发包包括目录:consoleExamples目录、include目录、src目录等.开发者可以研究consoleExamples目录下的相关例子,从而掌握如何实现网络管理软件的开发.include目录和src目录下的文件是一些开发资源,如果开发者直接使用这些头文件和源文件,将会使得网络管理软件文件庞大,因此,通常情况下,开发者都会把这些文件编译为一个静态库加以使用.

4.2创建静态链接库


以VisualC++6.0开发环境为例,首先开发者创建一个Win32静态链接库工程,然后将所有的SNMP++开发包中的源文件和头文件加入到工程的相应源文件和头文件目录中,设置Project菜单下的子菜单Setting的C/C++属性页,选择CodeGeneration和DebugMultithreaded,最后,设置Build菜单的子菜单Build则生成一个静态链接库.开发者可以直接使用该静态链接库完成网络管理软件的相关开发工作.

4.3使用静态链接库

同样,创建一个Win32平台应用程序,在项目中增加SNMP++静态链接库ws2_32.lib,同时在项目源文件中增加静态链接库的相应头文件.基于SNMP++网络管理软件程序基本流程:

首先,开启Snmp类的socket.然后,准备好SNMP通信基本参数,如设置SNMP协议版本、通信端口、共同体名等,如果没有对这些基本参数进行设置,程序采用默认参数:SNMP协议版本为1,端口为161,共同体名为public.接着,根据网络管理目标,设置写作技巧IP地址,要获取或设置的网络管理信息.创建一个SNMP会话.如果会话创建成功,开始snmp相关操作,如get操作、set操作、get_next操作.如果操作成功,则从变量绑定中获取相应的网络管理信息.最后,关闭Snmpsocket,释放资源.

5编程实践

检测设路由器r2621的接口f0/0的IP地址为172.168.0.1,sysContact网络管理对象设置为字符串China,共同体名设置为字符串public.下面给出C++编程代码:

#include"stdafx.h"

#include"snmp_pp/snmp_pp.h"

#include

#defineSYSCONTACT"1.3.6.1.2.1.1.4.0"

voidset_system_location()

{intstatus;

CTargetctarget((IpAddress)"172.168.0.1");

Vbvb(SYSCONTACT);

Pdupdu;

Snmpsnmp(status);

if(status!等于SNMP_CLASS_SUCCESS){cout<

vb.set_value("China");

pdu+等于vb;

status等于snmp.set(pdu,ctarget);

cout<

voidmain()

{Snmp::socket_startup();

snmp_versionversion等于version1;

set_system_location();

Snmp::socket_cleanup();}

网络管理软件不同于一般的应用软件,需要对网络管理软件所在主机和网络管理写作技巧程序所在设备进行相应的SNMP参数设置.因此,在运行网络管理程序之前,还需要做好两项准备工作:

(1)管理端也需要开放SNMP怎么写作,同时设置共同体名public,该共同体名具有读写权限.

(2)对路由器r2621进行基本配置.

示例如下:

r2621>en

r2621#confter

r2621#interfaf0/0

r2621#ipaddress172.168.0.1255.255.255.0

r2621#noshutdown

r2621#exit

r2621#snmp-servermunitypublic

6结束语

论文讨论了网络管理软件的编程方法,研究了网络管理基本原理以及SNMP++开发包,同时给出了网络管理软件的开发过程和方法.

当前,基于XML的网络管理软件是研究热点,下一步我们将研究如何把XML技术和Web技术应用于网络管理软件开发中.