一种基于Perl的嵌入式网络化设备的SNMP代理
2018-04-16魏荣娟
魏荣娟 周 欢
(西安邮电大学 西安 710000)
1 引言
最近的技术进步实现了开发的低成本、低功耗,以及多功能的网络化嵌入式设备。其中之一就是单片机被广泛地应用到各种嵌入式系统中。这些设备集成了传感器、处理和通信能力。我们可以把这些设备应用到其他各行各业中,例如农业、工业和环境监测等,使其具有普变性。因此在今天,越来越多的网络化嵌入式系统控制着许多常用的设备。例如,智能生活,一个全新的服务,通过利用技术给你带来额外的舒适、方便、效率来提高你的生活质量。异构技术产品和普遍的系统正在激增,这些占据了专业、个人、交通、交通生活环境等各个方面。有关发现服务、自动化、环境意识、安全处理等方面的问题已经在研究中得到解决。几个优秀成果主要集中在调度或管理上。然而这些问题并没有得到彻底的解决。此外,长期以来收视率一直被视为一个重要的反馈机制,其结果极大地影响了电视公司、广告商、节目制作人的巨大利润,并且决定了节目的长度。相反,一旦网络嵌入式设备成为主要的娱乐设备,设备就应提供基本的运算功能,然而,这种方法的主要问题之一是网络化嵌入式设备的控制。
简单网络管理协议(SNMP),它可以管理和监控IP网络中的设备[1],大多数的专业级网络单元都附带着SNMP代理[2]。我们必须启动、配置这些代理使它们能够与网络管理系统(NMS)进行通信。SNMP网络管理有许多优秀的产品,如MIB管理、家庭自动化、电力线路控制,集群管理和安全。一般来说,这些代理是为具有强大的计算功能的设备设计的。随着网络化嵌入式系统日益增长的需求,我们将提供一个更简单的方法来设计和管理这些代理。因为许多基于单片机的嵌入式设备是通过串口通信的,我们将设计一个新的代理来满足此需求。
本文提出了一种基于单片机的SNMP代理来高效地控制网络化嵌入式仪器。我们这个代理的目的是提供一种有效的方式来将SNMP的GET命令解释成为串口通信协议。此外,代理也可以从网络化的嵌入式设备接收数据[3]。我们将SNMP库和单片机的功能整合在一起,没有涉及MIB模块,而是设计了一个小型网络化的嵌入式设备。这种技术将会帮助设计师来构建一个用于单片机应用程序的小型SNMP代理。
2 SNMP网络管理
在所有的网络化配置中都有两种类型的系统:代理和管理者,这是所有网络管理的基本思想。SNMP,它可以管理和监控IP网络上的设备。通常支持SNMP的设备包括路由器、交换机、服务器、工作站等等[4]。网络上所有需要被管理的设备,都需要一个代理模块。它主要在网络管理系统中用于监控网络上连接的设备,并对设备进行管理[5]。因此,代理负责1)收集和维护有关系统环境的信息,2)提供这些信息给管理者,3)响应管理者的命令来更改配置或操作参数。
图1显示了有代理的SNMP简单网络管理模块的工作过程。SNMP有四个主要组件:网络管理系统、被管理的设备、代理和管理信息库(MIB),SNMP管理者和SNMP代理之间的通信主要通过5个基本信息来实现[6],分别是 GET,GET-NEXT,GETRESPONSE,SET,和 TRAP。GET和 GETNEXT消息允许管理者为一个特定的变量请求信息。管理信息库(MIB)是一个用于管理通信网络中实体的数据库[7]。图2是SNMPMIB树的一个例子,数据库是层次结构的,而且每个对象实体由对象标识符来标识。
图1 SNMP代理的工作过程
图2 SNMPMIB树
3 SNMP实现
SNMP协议有许多种实现方式,最著名的SNMP代理有3Com(SuperStack II),Cisco,HP,IBM,Nortel(Baystack450,Passport 8610) ,UCD/Net-SNMP,MicrosoftWindows XP代理,NuDesign代理,SNMP Research CIA代理,Cabletron系统(ssr2000),Xircom(GemTek)等。
考虑到成本问题,基于开源工具NetSNMP来实现我们的SNMP代理。Net-SNMP是一套使用IPv4和 IPv6来实现SNMP v1,SNMP v2c和SNMP v3的应用程序。这套程序包括:从支持SNMP的设备中检索信息、操作设备的配置信息,检索一个固定的信息集合、数字和MIBOID文本之间的形式转换、一个接收SNMP通知的守护进程和一个可扩展的SNMP应用程序库。通过使用Net-SNMP设计一个框架和接口集成基于perl的SNMP代理。借助于Net-SNMP,可以很容易地开发我们自己的SNMP代理,而没有过多的开销。
4 网络化嵌入式设备的SNMP代理
SNMP是一种被广泛接受的协议,它可以管理和监控网络单元。然而,很多嵌入式设备可能并不支持本机SNMP协议。因此需要一个代理,它可以提供一个有效的方式将SNMP的GET命令解释为串口通信协议。为了管理网络化的嵌入式应用程序的设备,设计了一个基于单片机的SNMP代理来有效控制设备。图3是我们设计的系统架构,在设计中,集成了Net-SNMP库和单片机的功能,没有MIB模块,而是设计了一个小型的网络化嵌入式设备。我们使用Net-SNMP的扩展代理功能来映射所设计的功能中的MIB库的对象[8]。Net-SNMP代理(snmpd)负责处理传入请求和从Net-SNMP库的传输层和处理层传送进来的信息。结果,专门为基于单片机的网络化嵌入式设备设计了一款小型SNMP代理。Net-SNMP是基于以下的技术来管理设备的:
功能命令(如exec、extend、pass);
动态模块(如嵌入式perl、dlmod);
与代理的通信(proxy、SUMX、AgentX)。
我们的设计有四个主要部分:SNMP管理者、嵌入式perl Net-SNMP,perl模块和网络化的嵌入式设备。采用CPAN(Perl程序库),Net-SNMP代理模块,这个模块提供了一个API和代理对象来支持对OID树的处理。
图3 网络化嵌入式设备代理框架
在调用SNMP代理之前,有几个步骤需要完成。首先,要在snmpd.conf文件中设置基本配置。用户必须把rocommunity和rwcommunity设置成read-only和readwrite模式。接下来,用户就可以调用snmpd程序了。我们可以在/etc/rc.conf文件中通过“snmpd enable=YES”与设置配置。用下面的命令安装Perl模块:
$agent-¿register(”serialcontrol”,”.1.3.6.1.4.1.8072.9999.9999”,&serial handler);
之后,用户就可以通过下面这条命令调用嵌入式 Perl模 块 :perldo”/usr/share/snmp/serialcontrol.pl”。
图4显示了在FreeBSD系统中SNMP代理的GET命令的处理流程。图5显示了串口控制的Perl程序。程序设置的参数包括波特率、奇偶校验、数据位和停止位[9]。为了和基于单片机的网络化嵌入式设备通信,设置系统的cuau0接到COM1口上[10]。
图4 FreeBSD系统上的SNMP代理Get
图5 SNMP串口控制程序
在单片机模块中,我们设置波特率,串口和汇编程序的命令检查。尤其是要设置TH1=256-((11059000/384)/1200)=232。为了和单片机通信,如图6所示,将SNMP代理和串口集成在一起。
图6 带串口的SNMP代理的Get命令的集成
5 实现
在两种不同的平台上实现我们所提出的SNMP代理:一个8位单片机,和一个ARM操作系统。第一个实验,在单片机实验板上实现了基于单片机的SNMP代理。如图7所示,这个测试板的CPU是一个8位单片机。
图7 测试板1
图8显示我们提出的方案的工作环境。用户可以使用一台PC机或者上网本来控制网络化嵌入式系统。支持蓝牙协议的SNMP代理Get/Set的全部程序在图9中。
图8 工作环境
我们用iReasoning MIB browser来测试SNMP代理的Get功能,如图10所示,当设置Net-SNMP代理的OID为.1.3.6.1.4.1.8072.9999.9999.1.0,系统可以获取到控制状态。之后,演示板上的LED灯将会如图11所示。同样地,如果设置SNMP代理的OID为.1.3.6.1.4.1.8072.9999.9999,演示板上的LED灯将会如图12所示。
图9 SNMP代理的Get/Set步骤
图10 获取到的控制状态
图11 实验结果1
图12 实验结果2
我们在基于ARM的系统上也实现了SNMP代理。在这个实验中,用SNMP命令和iReasoning MIB浏览器执行SNMP的Get/Set命令。图13所示为测试板2,在基于ARM的Debian Linux系统上的SNMP代理如图14所示。使用SNMP命令来对SNMP代理进行设置。单片机对象将会映射到一个SNMPOID。图15所示为测试板2的工作环境。
图13 测试板2
图14 SNMP代理在基于ARM的Debian Linux操作系统上的工作流程
在这个试验中,用PRTG Network Monitor来监控测试板,SNMP代理可以很容易地得到这些测试板的一些信息。
图15 测试板2的工作环境
SNMP协议是基于对象注册树来对对象机型验证。目的是提供一个可以有效地管理设备对象的方法。Net-SNMP提供了一个灵活且可扩展的API。我们可以采用这个API来构建自己的程序,然后,将它添加到代理的MIB列表中。开发一个管理程序的方式不同,开销也就不同。如果用C语言开发,代码量有500多行,如果用Perl语言开发,则代码量大概是56行。CPU利用率是相似的,如果我们用C语言开发管理端程序,没有支持C语言的库来减少开发的开销。但是如果采用Perl语言,则可以使用CPAN库来减少开发的开销。调试也很重要,因为基于Perl语言的程序规模比基于C语言方案的要小,所以基于Perl语言的程序调试也比基于C语言的要容易的多,Perl开发的速度比C语言的快。
表1 两种开发方式的比较
使用SNMP的最大优点是设计简单,因此它很容易在一个大型网络上实现,因为它既不需要很长时间来设置,也不会给网络造成很大的压力[11]。用表2的调查方法控制网络化嵌入式设备。可以用因特网(TCP/IP)、PSTN调制解调器、有线网络和无线网络来控制网络化嵌入式设备。如表2所示,SNMP代理可以支持大型网络。它是一个开方式标准,因此很容易将自己的程序和SNMP集成。这个简易的最终成果是一个网络管理端,它可以很容易地在现有网络上实现,而且不会对网络造成很大的压力[12]。此外,它为管理提供了最大的灵活性,管理既可以采用集中式服务器,也可以通过分布式来实现。
表2 控制网络化嵌入式设备的方式
6 结语
本文提出了一种基于单片机的SNMP代理,它可以有效地控制网络化嵌入式设备。我们将Net-SNMP库和单片机功能集成在一起,没有建立MIB模块,而是为资源受限的设备设计了一款小型SNMP代理。这种技术将会有助于为网络化嵌入式系统构建一个小型的SNMP代理,它不仅可以给基于单片机的设备提供一个控制方案,还可以利用TCP/IP网络和串口通信来扩展其灵活性。和现代网络化嵌入式设备相比,此技术扩展了适用性,并使管理更加方便。
[1]王韧.基于SNMP的呼叫中心设备监控系统设计与实现[D].上海:上海交通大学,2009.WANG Ren.The Design and Implementation of Call Center Equipment Monotoring System based on SNMP[D].Shanghai:Shanghai Jiao Tong University,2009.
[2]张立新.基于SNMP协议的网络流量采集系统设计与实现[J].软件导刊,2015(11):113-115.ZHANG Lixin.Design and Implementation ofNetwork traffic collection System Based on SNMP Protocol[J].Software Guide,2015(11):113-115.
[3]付保川,王中杰,陆卫忠,等.嵌入式设备的网络化方法研究[J].自动化仪表,2005,26(12):1-4.FU Baochuan,WANG Zhongjie,LU Weizhong,et al.Study on Networked Method for Embedded Devices[J].Process Automation Instrumentation,2005,26(12):1-4.
[4]布加迪.如何在ubuntu 15.04服务器上配置SNMPv3[EB/OL].http://netsecurity.51cto.com/art/201507/483436.htm,2015-7-8.BU Jiadi.How to Configure SNMPV3 on Ubuntu 15.04 Server[EB/OL].http://netsecurity.51cto.com/art/201507/483436.htm,2015-7-8.
[5]罗德俊.基于SNMP的OCDMA--PON网络管理系统的研究与设计[D].桂林:广西师范大学,2015.LUO Dejun.Research and Design on OCDMA--PON Network Management System based on SNMP[D].Guilin:GuangxiNormalUniversity,2015.
[6]鄢华林,祁圣民,张鹏.柔性排缆绞车检测系统设计[J].自动化仪表,2015,36(8):31-34.YAN Hualin,QIShengmin,ZHANG Peng.System Design on Flexible Winch Detection[J].Process Automation Instrumentation,2015,36(8):31-34.
[7]舒畅.基于SNMP协议的网络管理系统设计[D].武汉:武汉理工大学,2007.SHU Chang.The Desing of Network Management System based on SNMP Protocol[D].Wuhan:Wuhan University of Technology,2007.
[8]张宇.嵌入式网络管理SNMP代理系统的研究与实现[D].上海:上海交通大学,2012.ZHANG Yu.Research and Implementation of Embedded network management SNMPAgent System[D].Shanghai:Shanghai jiaotong university,2012.
[9]高岭,李洪亮.基于JMX/JDMK技术的SNMP分级代理[J].计算机工程,2005,31(19):125-126,132.GAO Ling,LI Hongliang.SNMP Sizing Agent based on JMX/JDMK Technology[J].Computer Engineering,2005,31(19):125-126,132.
[10]卫敏.浅谈基于单片机的嵌入式系统的网络应用[J].数字技术与应用,2013(10):30-32.WEO Min.Introduction to the Embedded System based on single chip microcomputer Network Applications[J].Digital Technology and Applications,2013(10):30-32.
[11]吕佳.基于移动Ad Hoc网络管理系统的设计与实现[D].北京:北京邮电大学,2008.LV Jia.Design and Implementation of Network Management System Based onmobile Ad Hoc[D].Beijing:Beijing University of Postsand Telecommunications,2008.
[12]朱虹,杨家海,谢树煜.CORBA技术在网络管理中应用的探讨[J].计算机工程与应用,2000,36(10):125-129.ZHU Hong,YANG Jiahai,XIE Shuyu.The Application of CORBA Technology in Network Management Study[J].Computer Engineering and Application,2000,36(10):125-129.