APP下载

基于NET-SNMP的代理扩展实现

2014-03-11黄岩涛阮军洲

计算机与网络 2014年8期
关键词:网管开发人员网络管理

黄岩涛阮军洲

(1中国电子科技集团公司第五十四研究所河北石家庄050081)

(2中国人民解放军75660部队广西桂林541002)

技术论坛

基于NET-SNMP的代理扩展实现

黄岩涛1阮军洲2

(1中国电子科技集团公司第五十四研究所河北石家庄050081)

(2中国人民解放军75660部队广西桂林541002)

针对网络中不同设备的高效管理问题,对NET-SNMP技术进行了简要介绍。NET-SNMP是一个开源的软件包,选择NET-SNMP开发网管系统既便于移植,也利于代理的扩展。介绍了NET-SNMP开发工具的工作原理,详细描述了在Linux环境下使用NET-SNMP开发工具扩展代理的流程和注意事项。代理软件采用模块化的结构,可根据需要扩展所支持的管理信息库模块,实现新的应用。结尾提出了NET-SNMP技术是一种实现远程管理功能的有效可行的方法。

NET-SNMP简单网络管理协议代理管理信息库

1引言

随着网络技术的发展,越来越多的设备接入到网络。如何对网络中的设备进行高效的管理成为一个重要课题。简单网络管理协议(SNMP)是应用最广泛的网管协议,已经成为网络管理系统的行业标准。SNMP是以TCP辕IP的协议为基础[1],采用管理者-代理者的管理模型。SNMP的管理信息主要包括以下关键元素:管理信息结构(SMI)、管理信息库(MIB)和抽象语法表示(ASN.1)[2,3]。SNMP为不同种类的设备、不同厂商的设备和不同型号的设备定义一个统一的接口和协议,可以提高网络管理效率,简化管理员的工作。

SNMP包括一系列协议组和规范,提供了从网络设备中收集和配置管理信息的方法,也提供了网络设备向管理站报告问题和错误的方法。这些网络设备都包含标准的SNMP代理模块,包括MIBⅡ及其相关组件。但是,由于不同设备厂商的设备存在差异,所以根据自身设备的特点扩展了标准MIB,定义了私有MIB,使网络设备的可管理性大大提高。在Linux环境下的SNMP代理的开发方式有很多种,由于NETSNMP具有开源、移植性好、功能强大和便于维护等优点,所以受到了开发人员的欢迎,成为开发人员开发网管代理的很好选择。

2 NET-SNMP软件包介绍

NET-SNMP是一个开源的软件开发工具,可由官方网站下载源码。使用比较稳定的5.7.1版本,NET-SNMP软件包主要包括以下内容[4]:①为SNMP应用开发者提供完整的API,包括C和Perl的API;②可扩展的SNMP代理程序snmpd,开发者可以开发动态模块扩展snmpd;③MIB管理,提供了典型MIB库,并可以将MIB库映射到进程内部,按MIB所定义的层次结构组织数据;④提供众多命令行工具,包括snmpget、snmpgetnext、snmpwalk、snmpbulkget、snmpbulkwalk、snmptable、snmpset、snmptrap、snmpinform、snmpdelta、snmptest、snmptranslate和snmpstatus等;⑤Trap接收进程,用于接收、显示和记录Trap;⑥标准Unix命令netstat的SNMP版本srunpnetstat;⑦基于Tk/perl的图形化MIB浏览工具tkmib。

3 代理开发步骤

3.1 安装配置软件包

3.1.1 NET-SNMP安装

以RedHat为例介绍安装过程,由于某些程序的需要,需要以root身份登陆linux。安装NET-SNMP的具体步骤如下:

把net-snmp-5.7.1.tar.gz复制到Linux任何目录下,运行以下命令解压:tar zxvf net-snmp-5.7.1.tar.gz;执行./configure --prefix=/usr/net-snmp/;执行make;执行make install。

3.1.2 perl模块安装

由于mib2c使用perl语言编写的,为了使用mib2c扩展snmp代理,所以必须安装perl模块。安装perl模块具体步骤如下:

在/root中找到隐藏文件.bash_profile,打开文件,加入路径/usr/net-snmp/bin和usr/net-snmp/sbin,执行source./. bash_profile;进入net-snmp-5.7.1/perl/SNMP下执行命令perl Makefile.PL;执行make;执行make install。

3.1.3 配置NET-SNMP

软件包安装完成后,需要在snmpd.conf文件中配置NETSNMP,包括:启动运行和进程进入循环后所需的信息、共同体(community)权限、trap上报的网管地址。该文件主要配置内容包括:①rocommunity public//共同体名验证读访问控制;②rwcommunity private//共同体名验证写访问控制;③trapsink xxx.xxx.xxx.xxx//snmp vl trap发送地址;④trap2sink xxx.xxx. xxx.xxx//snmp v2 trap发送地址。

在snmpd.conf文件中“#”开头的行表示注释行。只读共同体名为public,即get的访问口令。读写的共同体名为private,即set的访问口令。Trapsink表示snmpv1的trap发送的管理站地址为xxx.xxx.xxx.xxx。Trap2sink表示snmpv2的trap发送的管理站地址为xxx.xxx.xxx.xxx。

3.2 生成代理扩展代码

NET-SNMP提供了mib2c工具,mib2c是一个功能强大的工具,可以满足开发人员对标量和表的各种需求。mib2c可以将mib文件转化成C语言的框架代码,开发人员需要在相应位置填充少量自己的代码即可实现功能。mib2c工具将mib文件(例如:myMib.txt)转化为.c和.h文件的步骤如下[5]:

将myMib.txt文件拷贝到/usr/net-snmp/share/snmp/mibs目录;执行(env MIBS="+myMib"mib2c-f demo节点名)命令,输入不同的选项,生成不同框架的.c和.h文件。

3.3 扩展代理实现

扩展代理的实现可以在mib2c生成的程序框架基础上修改[6],也可以参照NET-SNMP提供的例子example.c和example.h,在其基础上进行修改,选择在mib2c生成的标量程序框架demoScalar.c和demoScalar.h基础上分析如何实现标量的get和set功能。

3.3.1 init模块

init_scalarDemo主要完成扩展代理的初始化功能。init_scalarDemo模块用const oid intType_oid[]={1,3,6,1,4,1,1,1}定义了需要扩展的MIB在MIB树中的位置。netsnmp_register_scalar模块的主要功能是注册需要扩展的MIB。

3.3.2 get模块

get功能是代理的基本功能,下面以demoScalar.c文件为例,介绍get功能的实现。get功能的框架程序主要在case MODE_GET的分支中,开发人员需要在该程序分支中得到要返回的数据,然后使用snmp_set_var_typed_value函数,将数据返回[7]。

3.3.2 set模块

set功能的实现原理,如图1所示。

set功能包括RESERVE1、RESERVE2、FREE、ACTION、UNDO和COMMIT6个状态,分别对应图中的保留1、保留2、释放资源、实现设置、取消操作和提交设置。其中,RESERVE1、RESERVE2和FREE分别用于合法性检查、分配资源和释放资源。ACTION是要实现set功能的状态,但是只保存在内存中。UNDO是取消上一次操作状态。COMMIT是把ACTION操作提交状态。

图1 set功能实现原理图

3.4编译扩展代理到NET-SNMP代理

用mib2c工具生成C语言的框架代码后,开发人员要根据实际需要在框架代码中填充代码。填充代码完成后,需要将扩展代码编译到NET-SNMP代理。编译可以有多种方式,例如静态编译和动态加载库等[8]。文章采用的是静态编译的方式,即通过修改配置头文件,在相应位置包含新引入的mib模块的.c和.h文件,最后重新编译代理。扩展代码编译到NETSNMP代理的步骤如下:

3.5 NET-SNMP V3的配置

在配置NET-SNMP V3前,需要先将snmpd进程结束。在命令行输入net-snmp-create-v3-user命令,显示以下配置信息:

在上面的注释处分别输入用户名、鉴权密码和加密密码,完成NET-SNMP V3配置。

4 结束语

随着网络技术和网络应用的飞速发展,网络的复杂度大大增加,如何有效的管理网络,确保网络稳定运行已经成为一个迫切需要解决的问题。因此网络管理技术显得越来越重要。网络管理使得各通信网络能够稳定、高效和持续地运转,已经成为网络技术研究的重要领域。介绍了利用NET-SNMP开发工具扩展开发网管代理的方法,详细介绍了NET-SNMP软件包的组成和工作原理,描述了NET-SNMP软件包的安装和配置过程,分析了扩展代理的开发和编译流程,使开发者不需要关心NET-SNMP实现细节,就能开发出具有移植性和扩展性的网管代理软件。

[1]DRAKE P.Using SNMP to manage networks[C].London: Designing Resilient Architectures,IEE Colloquium on,1991: 2/1-2/4.

[2]RFC1157,Simple Network Management Protocol(SNMP)[S].

[3]RFC1901,Introduction to Community-based SNMPv2[S].

[4]刘明,陈磊,宋佳.NET-SNMP网管代理在ARM9上实现的技术[J].计算机系统应用,2011,20(10):232-235.

[5]葛化敏,杨利青,郑静.基于NET-SNMP的嵌入式网络管理代理的开发[J].通信技术,2009,42(11):138-140.

[6]吕锋,闵笛.嵌入式Power PC Linux环境下基于Net-SNMP的代理开发[J].武汉理工大学学报,2006,28(5): 51-54.

[7]孙晓艳.SNMP扩展代理的设计与实现[J].现代电子技术, 2011,34(22):116-119.

[8]付强,王玥.基于NET-SNMP的代理扩展开发[J].工业控制计算机,2011,24(7):56-57.

Implementation of Agent Extension Based on NET-SNMP

HUANG Yan-tao1RUAN Jun-zhou2
(1 The 54th Research Institute of CETC,Shijiazhuang Hebei 050081,China)
(2 Unit 75660,PLA,Guilin Guangxi 541002,China)

Aiming at the effective management of different devices in network,this paper briefly introduces the NET-SNMP technology.The NET-SNMP is an open source software package.The selection of NET-SNMP for developing the network management system is convenient for migration and agent extension.This paper introduces the operating principle of NET-SNMP development tool,describes in detail the processes and precautions of extension agent of NET-SNMP development tool used in Linux environment.The agent software uses modular structure,so that the supported management information base module can be extended according to the requirements,in order to realize the new application.The conclusion shows that the NET-SNMP technology is an effective method for implementing the remote management function.

NET-SNMP;simple network management protocol;agent;management information base

TP391.4

:A

:1008-1739(2014)08-54-3

猜你喜欢

网管开发人员网络管理
Semtech发布LoRa Basics 以加速物联网应用
电动汽车充电服务网络管理初探
基于EOC通道的SHDSL网络管理技术
后悔了?教你隐藏开发人员选项
“五制配套”加强网管
校园网络管理及安全防护
发射机房网管系统的设计原则及功能
网管支撑系统运行质量管控的研究与实现
卫星导航网络管理设计
从网管系统到网管云:论网管集约化的建设思路