互联网技能本钱低价、灵活性强,在许多范畴都有着广泛的运用远景。其在工业自动化范畴的运用一直是一个研讨热门。SNMP(简略网络办理)协议是一种被广泛运用的互联网设备办理协议,其最大的特色便是本钱低价,简略完结。SNMP协议可以办理大部分契合Internet标准的设备。经过增加新的被管方针,可以十分便利地扩展其办理才能。即便在被管设备产生严峻的错误时,协议自身的特色也促使其不会影响办理者的正常作业。
本文介绍一种根据AT91SAM9260工控机渠道的SNMP协议完结办法,经过开发能在AT91SAM9260工控机渠道上运转的SNMP Agent(SNMP署理),并扩展其MIB(办理信息)库,完结在互联网上办理工控机自身和与工控机经过其他通讯协议衔接的设备资源。
1 SNMP(简略网络办理)协议介绍
1.1 SNMP协议概述
SNMP协议是一种根据TCP/IP协议的运用层网络办理标准,被广泛运用于办理互联网上许多厂家的软硬件渠道。SNMP协议的模型如图1所示,其间办理运用经过发送Get、Set、GetNext、GetResponse和Event这五种类型的音讯来读取或设置被管设备的MIB库,完结对被管设备的办理。
SNMP协议作为运用层协议,经过用户数据报协议(UDP)来完结办理信息在互联网上的传输,相对于TCP协议,UDP这种无衔接的通讯方法,不光加强了SNMP协议的稳定性,并且提高了SNMP协议的运转功率。
1.2 MIB(办理信息)库
MIB库是办理站可以经过SNMP协议拜访的被办理方针的调集。MIB描绘了被办理方针可以为办理者供给哪些办理信息以及这些信息之间的联系。MIB运用ASN.1描绘言语对方针进行描绘。ASN.1使被描绘方针在逻辑上构成树形结构(如图2),这样办理站就可以很便利地拜访到MIB库中各个节点的信息。ASN.1描绘言语也供给了根本编码规矩(BER),使MIB库中数据按规矩转换为串行字节流在网络上传输。
2 开发环境介绍
2.1 AT91SAM9260工控机
本文运用的AT91SAM9260工控机是一套根据ARM926EJ-S中心的嵌入式工控机体系,处理器选用ATMEL公司的AT91SAM9260,210 MHz,230MIPs。存储器包含64MB NandFlash,64MB SDRAM,2MB NorFlash。网络(Ether-net)单元为一个10/100M网络。操作体系为2.6.19内核的嵌入式linux。该设备的软硬件渠道是彻底满意SNMP协议的开发需求的。
2.2 net-snmp开发包
net-snmp开发包是由加州大学戴维斯分校(University ofCalifonia,Davis)开发并保护的可在linux体系下运用的SNMP协议开发程序。本文运用的是net-snmp-5.4.4版别,其组成内容首要包含:
1)可扩展SNMP Agent程序(snmpd)开发库;
2)几个用于设置SNMP署理变量的办理端指令(snmpget,snmpset,snmpwalk等);
3)将MIB文件转换成C言语程序用于MIB库扩展的mib2c东西;等等。
3 SNMP协议完结
3.1 穿插编译环境建立
因为AT91SAM9260工控机渠道上的嵌入式linux体系运转才能有限,需求在电脑上建立net-snmp的穿插编译环境。电脑的操作体系选用的是fedora 8,穿插编译东西选用的是AT91SAM9260工控机开发包自带的armv51-linux-gcc.tar.bz2穿插编译器。
穿插编译环境建立好今后,将net-snmp-5.4.4.tar.gz开发包复制到fedora 8体系的/usr/local/src文件夹下,翻开fedora 8下终端(terminal)程序,运转“tar-zxvf net-snmp-5.4.4.tar.gz/work”、“cob/work/net-snmp-5.4.4”,就抵达net-snmp-5.4.4的源码地点的文件夹“/work/net-snmp-5.4.4”中了。
穿插开发环境建立好今后,就可以开端在工控机上完结SNMP协议的开发了。开发进程首要分为以下两个部分:
1)开宣布能在AT91SAM9260工控机上运转的SNMPAgent程序(即snmpd程序);
2)经过net-snmp开发包供给的东西,扩展MIB库。
3.2 SNMP Agent开发
在运用net-snmp开发包编译smnpd程序之前,要对编译选项进行装备。持续在fedora 8下运转“./configure-with-cc=armv51-linux-gcc-with-ar=armv51-linux-ar-enable-mini-agent-with-endianness=little-enable-mini-agent-disable-ipv6-disable-snmptrapd-subagent”,此指令首要是对穿插编译器,方针机巨细端,署理的编译形式进行装备。各装备选项的详细意义可以运转“./configure-help”检查。
装备完net-snmp编译选项后可以进行静态编译,运转“make LDFLAGS=”-static””,编译得到snmpd。将snmpd复制到工控机操作体系的/usr/sbin目录下,并在工控机操作体系终端下运转“ehmod u+x snmpd”,更改snmpd的权限。
要在工控机操作体系下运转SNMP Agent程序,还需求装备snmpd.conf文件。运用电脑上途径“/work/net-snmp-5.4.4/EXAMPLE.conf”的文件作为测验范本,将其复制成工控机“/usr/loeal/share/snmp/snmpd.cord”文件,将其间的community设置修改为以下内容:
#sec.name source community
com2sec local loealhost public
com2sec net 192.168.0.135/24 public
其间工控机地点的测验网段为192.168.0.xxx。将组设置改为可读写(group MyRWGroup v2c net),以便利测验运用。
移植完snmpd和snmpd.eonf文件后,在工控机操作体系终端下运转“snmpd-f-Le-d”指令,假如正常发动,则snmpd移植成功。
3.3 MIB库扩展
进入fedora 8的“/work/net-snmp-5.4.4/share/snmp/mibs”途径下,可以看到net-snmp包容了许多公有MIB文件。这些文件都是依照标准格局开宣布来的。办理信息库的扩展便是将依照这种标准格局开宣布来的私有MIB文件移植到net-snmp中。以完结办理端经过SNMP协议对私有方针进行办理。扩展MIB库首要分为以下三个过程:
首要,将待扩展的私有MIB文件复制到fedora 8的“/work/net-snmp-5.4.4/share/snmp/mibs”途径下,并将该MIB文件增加到环境变量MIBS中去(fedora下运转“ex port MIBS=ALL”)。增加完可以用net-snmp自带的snmptranslate指令检测署理是否可以正确找到待扩展的私有MIB。
然后,运用mib2c东西生成C文件,例如fedora下运转“mib2 netSnmpExampleScalars”指令,就会生成MIB文件中界说的netSnmpExampleScalars方针的.h文件和.c文件。其间.h文件对节点进行函数声明和宏界说。.c文件分为初始化函数和呼应函数两大块。其间初始化函数用来对变量进行注册,呼应函数用来呼应办理端的操作指令,呼应函数的返回值需求手艺填充。
最终,将私有MIB生成的C文件复制到“/work/net-snmp-5.4.4/agent/mibgroup”目录下,重新装备net-snmp,在./configure后边增加“-with-mib-modules=“XXX ””(其间XXX为生成的C文件名),编译生成新的snmpd程序,移植到工控机体系中。
衔接好工控机到电脑的网络,运用net-snmp开发包自带的snmpget,snmpset等指令测验snmpd的运转状况,假如得到正确的成果测验,就证明在AT91SAM9260工控机上完结SN MP协议成功。
4 结束语
net-snmp开发包供给了强壮的开发和测验东西,使开发者能便利地完结各种嵌入式工控机渠道下的SNMP协议开发。本文完结的根据AT91SAM9260工控机渠道的SNMP协议,在工业级互联网办理设备的开发上有着很大的运用远景。