魏榮娟 周 歡
(西安郵電大學(xué) 西安 710000)
最近的技術(shù)進(jìn)步實(shí)現(xiàn)了開發(fā)的低成本、低功耗,以及多功能的網(wǎng)絡(luò)化嵌入式設(shè)備。其中之一就是單片機(jī)被廣泛地應(yīng)用到各種嵌入式系統(tǒng)中。這些設(shè)備集成了傳感器、處理和通信能力。我們可以把這些設(shè)備應(yīng)用到其他各行各業(yè)中,例如農(nóng)業(yè)、工業(yè)和環(huán)境監(jiān)測(cè)等,使其具有普變性。因此在今天,越來(lái)越多的網(wǎng)絡(luò)化嵌入式系統(tǒng)控制著許多常用的設(shè)備。例如,智能生活,一個(gè)全新的服務(wù),通過(guò)利用技術(shù)給你帶來(lái)額外的舒適、方便、效率來(lái)提高你的生活質(zhì)量。異構(gòu)技術(shù)產(chǎn)品和普遍的系統(tǒng)正在激增,這些占據(jù)了專業(yè)、個(gè)人、交通、交通生活環(huán)境等各個(gè)方面。有關(guān)發(fā)現(xiàn)服務(wù)、自動(dòng)化、環(huán)境意識(shí)、安全處理等方面的問(wèn)題已經(jīng)在研究中得到解決。幾個(gè)優(yōu)秀成果主要集中在調(diào)度或管理上。然而這些問(wèn)題并沒有得到徹底的解決。此外,長(zhǎng)期以來(lái)收視率一直被視為一個(gè)重要的反饋機(jī)制,其結(jié)果極大地影響了電視公司、廣告商、節(jié)目制作人的巨大利潤(rùn),并且決定了節(jié)目的長(zhǎng)度。相反,一旦網(wǎng)絡(luò)嵌入式設(shè)備成為主要的娛樂設(shè)備,設(shè)備就應(yīng)提供基本的運(yùn)算功能,然而,這種方法的主要問(wèn)題之一是網(wǎng)絡(luò)化嵌入式設(shè)備的控制。
簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議(SNMP),它可以管理和監(jiān)控IP網(wǎng)絡(luò)中的設(shè)備[1],大多數(shù)的專業(yè)級(jí)網(wǎng)絡(luò)單元都附帶著SNMP代理[2]。我們必須啟動(dòng)、配置這些代理使它們能夠與網(wǎng)絡(luò)管理系統(tǒng)(NMS)進(jìn)行通信。SNMP網(wǎng)絡(luò)管理有許多優(yōu)秀的產(chǎn)品,如MIB管理、家庭自動(dòng)化、電力線路控制,集群管理和安全。一般來(lái)說(shuō),這些代理是為具有強(qiáng)大的計(jì)算功能的設(shè)備設(shè)計(jì)的。隨著網(wǎng)絡(luò)化嵌入式系統(tǒng)日益增長(zhǎng)的需求,我們將提供一個(gè)更簡(jiǎn)單的方法來(lái)設(shè)計(jì)和管理這些代理。因?yàn)樵S多基于單片機(jī)的嵌入式設(shè)備是通過(guò)串口通信的,我們將設(shè)計(jì)一個(gè)新的代理來(lái)滿足此需求。
本文提出了一種基于單片機(jī)的SNMP代理來(lái)高效地控制網(wǎng)絡(luò)化嵌入式儀器。我們這個(gè)代理的目的是提供一種有效的方式來(lái)將SNMP的GET命令解釋成為串口通信協(xié)議。此外,代理也可以從網(wǎng)絡(luò)化的嵌入式設(shè)備接收數(shù)據(jù)[3]。我們將SNMP庫(kù)和單片機(jī)的功能整合在一起,沒有涉及MIB模塊,而是設(shè)計(jì)了一個(gè)小型網(wǎng)絡(luò)化的嵌入式設(shè)備。這種技術(shù)將會(huì)幫助設(shè)計(jì)師來(lái)構(gòu)建一個(gè)用于單片機(jī)應(yīng)用程序的小型SNMP代理。
在所有的網(wǎng)絡(luò)化配置中都有兩種類型的系統(tǒng):代理和管理者,這是所有網(wǎng)絡(luò)管理的基本思想。SNMP,它可以管理和監(jiān)控IP網(wǎng)絡(luò)上的設(shè)備。通常支持SNMP的設(shè)備包括路由器、交換機(jī)、服務(wù)器、工作站等等[4]。網(wǎng)絡(luò)上所有需要被管理的設(shè)備,都需要一個(gè)代理模塊。它主要在網(wǎng)絡(luò)管理系統(tǒng)中用于監(jiān)控網(wǎng)絡(luò)上連接的設(shè)備,并對(duì)設(shè)備進(jìn)行管理[5]。因此,代理負(fù)責(zé)1)收集和維護(hù)有關(guān)系統(tǒng)環(huán)境的信息,2)提供這些信息給管理者,3)響應(yīng)管理者的命令來(lái)更改配置或操作參數(shù)。
圖1顯示了有代理的SNMP簡(jiǎn)單網(wǎng)絡(luò)管理模塊的工作過(guò)程。SNMP有四個(gè)主要組件:網(wǎng)絡(luò)管理系統(tǒng)、被管理的設(shè)備、代理和管理信息庫(kù)(MIB),SNMP管理者和SNMP代理之間的通信主要通過(guò)5個(gè)基本信息來(lái)實(shí)現(xiàn)[6],分別是 GET,GET-NEXT,GETRESPONSE,SET,和 TRAP。GET和 GETNEXT消息允許管理者為一個(gè)特定的變量請(qǐng)求信息。管理信息庫(kù)(MIB)是一個(gè)用于管理通信網(wǎng)絡(luò)中實(shí)體的數(shù)據(jù)庫(kù)[7]。圖2是SNMPMIB樹的一個(gè)例子,數(shù)據(jù)庫(kù)是層次結(jié)構(gòu)的,而且每個(gè)對(duì)象實(shí)體由對(duì)象標(biāo)識(shí)符來(lái)標(biāo)識(shí)。
圖1 SNMP代理的工作過(guò)程
圖2 SNMPMIB樹
SNMP協(xié)議有許多種實(shí)現(xiàn)方式,最著名的SNMP代理有3Com(SuperStack II),Cisco,HP,IBM,Nortel(Baystack450,Passport 8610) ,UCD/Net-SNMP,MicrosoftWindows XP代理,NuDesign代理,SNMP Research CIA代理,Cabletron系統(tǒng)(ssr2000),Xircom(GemTek)等。
考慮到成本問(wèn)題,基于開源工具NetSNMP來(lái)實(shí)現(xiàn)我們的SNMP代理。Net-SNMP是一套使用IPv4和 IPv6來(lái)實(shí)現(xiàn)SNMP v1,SNMP v2c和SNMP v3的應(yīng)用程序。這套程序包括:從支持SNMP的設(shè)備中檢索信息、操作設(shè)備的配置信息,檢索一個(gè)固定的信息集合、數(shù)字和MIBOID文本之間的形式轉(zhuǎn)換、一個(gè)接收SNMP通知的守護(hù)進(jìn)程和一個(gè)可擴(kuò)展的SNMP應(yīng)用程序庫(kù)。通過(guò)使用Net-SNMP設(shè)計(jì)一個(gè)框架和接口集成基于perl的SNMP代理。借助于Net-SNMP,可以很容易地開發(fā)我們自己的SNMP代理,而沒有過(guò)多的開銷。
SNMP是一種被廣泛接受的協(xié)議,它可以管理和監(jiān)控網(wǎng)絡(luò)單元。然而,很多嵌入式設(shè)備可能并不支持本機(jī)SNMP協(xié)議。因此需要一個(gè)代理,它可以提供一個(gè)有效的方式將SNMP的GET命令解釋為串口通信協(xié)議。為了管理網(wǎng)絡(luò)化的嵌入式應(yīng)用程序的設(shè)備,設(shè)計(jì)了一個(gè)基于單片機(jī)的SNMP代理來(lái)有效控制設(shè)備。圖3是我們?cè)O(shè)計(jì)的系統(tǒng)架構(gòu),在設(shè)計(jì)中,集成了Net-SNMP庫(kù)和單片機(jī)的功能,沒有MIB模塊,而是設(shè)計(jì)了一個(gè)小型的網(wǎng)絡(luò)化嵌入式設(shè)備。我們使用Net-SNMP的擴(kuò)展代理功能來(lái)映射所設(shè)計(jì)的功能中的MIB庫(kù)的對(duì)象[8]。Net-SNMP代理(snmpd)負(fù)責(zé)處理傳入請(qǐng)求和從Net-SNMP庫(kù)的傳輸層和處理層傳送進(jìn)來(lái)的信息。結(jié)果,專門為基于單片機(jī)的網(wǎng)絡(luò)化嵌入式設(shè)備設(shè)計(jì)了一款小型SNMP代理。Net-SNMP是基于以下的技術(shù)來(lái)管理設(shè)備的:
功能命令(如exec、extend、pass);
動(dòng)態(tài)模塊(如嵌入式perl、dlmod);
與代理的通信(proxy、SUMX、AgentX)。
我們的設(shè)計(jì)有四個(gè)主要部分:SNMP管理者、嵌入式perl Net-SNMP,perl模塊和網(wǎng)絡(luò)化的嵌入式設(shè)備。采用CPAN(Perl程序庫(kù)),Net-SNMP代理模塊,這個(gè)模塊提供了一個(gè)API和代理對(duì)象來(lái)支持對(duì)OID樹的處理。
圖3 網(wǎng)絡(luò)化嵌入式設(shè)備代理框架
在調(diào)用SNMP代理之前,有幾個(gè)步驟需要完成。首先,要在snmpd.conf文件中設(shè)置基本配置。用戶必須把rocommunity和rwcommunity設(shè)置成read-only和readwrite模式。接下來(lái),用戶就可以調(diào)用snmpd程序了。我們可以在/etc/rc.conf文件中通過(guò)“snmpd enable=YES”與設(shè)置配置。用下面的命令安裝Perl模塊:
$agent-?register(”serialcontrol”,”.1.3.6.1.4.1.8072.9999.9999”,&serial handler);
之后,用戶就可以通過(guò)下面這條命令調(diào)用嵌入式 Perl模 塊 :perldo”/usr/share/snmp/serialcontrol.pl”。
圖4顯示了在FreeBSD系統(tǒng)中SNMP代理的GET命令的處理流程。圖5顯示了串口控制的Perl程序。程序設(shè)置的參數(shù)包括波特率、奇偶校驗(yàn)、數(shù)據(jù)位和停止位[9]。為了和基于單片機(jī)的網(wǎng)絡(luò)化嵌入式設(shè)備通信,設(shè)置系統(tǒng)的cuau0接到COM1口上[10]。
圖4 FreeBSD系統(tǒng)上的SNMP代理Get
圖5 SNMP串口控制程序
在單片機(jī)模塊中,我們?cè)O(shè)置波特率,串口和匯編程序的命令檢查。尤其是要設(shè)置TH1=256-((11059000/384)/1200)=232。為了和單片機(jī)通信,如圖6所示,將SNMP代理和串口集成在一起。
圖6 帶串口的SNMP代理的Get命令的集成
在兩種不同的平臺(tái)上實(shí)現(xiàn)我們所提出的SNMP代理:一個(gè)8位單片機(jī),和一個(gè)ARM操作系統(tǒng)。第一個(gè)實(shí)驗(yàn),在單片機(jī)實(shí)驗(yàn)板上實(shí)現(xiàn)了基于單片機(jī)的SNMP代理。如圖7所示,這個(gè)測(cè)試板的CPU是一個(gè)8位單片機(jī)。
圖7 測(cè)試板1
圖8顯示我們提出的方案的工作環(huán)境。用戶可以使用一臺(tái)PC機(jī)或者上網(wǎng)本來(lái)控制網(wǎng)絡(luò)化嵌入式系統(tǒng)。支持藍(lán)牙協(xié)議的SNMP代理Get/Set的全部程序在圖9中。
圖8 工作環(huán)境
我們用iReasoning MIB browser來(lái)測(cè)試SNMP代理的Get功能,如圖10所示,當(dāng)設(shè)置Net-SNMP代理的OID為.1.3.6.1.4.1.8072.9999.9999.1.0,系統(tǒng)可以獲取到控制狀態(tài)。之后,演示板上的LED燈將會(huì)如圖11所示。同樣地,如果設(shè)置SNMP代理的OID為.1.3.6.1.4.1.8072.9999.9999,演示板上的LED燈將會(huì)如圖12所示。
圖9 SNMP代理的Get/Set步驟
圖10 獲取到的控制狀態(tài)
圖11 實(shí)驗(yàn)結(jié)果1
圖12 實(shí)驗(yàn)結(jié)果2
我們?cè)诨贏RM的系統(tǒng)上也實(shí)現(xiàn)了SNMP代理。在這個(gè)實(shí)驗(yàn)中,用SNMP命令和iReasoning MIB瀏覽器執(zhí)行SNMP的Get/Set命令。圖13所示為測(cè)試板2,在基于ARM的Debian Linux系統(tǒng)上的SNMP代理如圖14所示。使用SNMP命令來(lái)對(duì)SNMP代理進(jìn)行設(shè)置。單片機(jī)對(duì)象將會(huì)映射到一個(gè)SNMPOID。圖15所示為測(cè)試板2的工作環(huán)境。
圖13 測(cè)試板2
圖14 SNMP代理在基于ARM的Debian Linux操作系統(tǒng)上的工作流程
在這個(gè)試驗(yàn)中,用PRTG Network Monitor來(lái)監(jiān)控測(cè)試板,SNMP代理可以很容易地得到這些測(cè)試板的一些信息。
圖15 測(cè)試板2的工作環(huán)境
SNMP協(xié)議是基于對(duì)象注冊(cè)樹來(lái)對(duì)對(duì)象機(jī)型驗(yàn)證。目的是提供一個(gè)可以有效地管理設(shè)備對(duì)象的方法。Net-SNMP提供了一個(gè)靈活且可擴(kuò)展的API。我們可以采用這個(gè)API來(lái)構(gòu)建自己的程序,然后,將它添加到代理的MIB列表中。開發(fā)一個(gè)管理程序的方式不同,開銷也就不同。如果用C語(yǔ)言開發(fā),代碼量有500多行,如果用Perl語(yǔ)言開發(fā),則代碼量大概是56行。CPU利用率是相似的,如果我們用C語(yǔ)言開發(fā)管理端程序,沒有支持C語(yǔ)言的庫(kù)來(lái)減少開發(fā)的開銷。但是如果采用Perl語(yǔ)言,則可以使用CPAN庫(kù)來(lái)減少開發(fā)的開銷。調(diào)試也很重要,因?yàn)榛赑erl語(yǔ)言的程序規(guī)模比基于C語(yǔ)言方案的要小,所以基于Perl語(yǔ)言的程序調(diào)試也比基于C語(yǔ)言的要容易的多,Perl開發(fā)的速度比C語(yǔ)言的快。
表1 兩種開發(fā)方式的比較
使用SNMP的最大優(yōu)點(diǎn)是設(shè)計(jì)簡(jiǎn)單,因此它很容易在一個(gè)大型網(wǎng)絡(luò)上實(shí)現(xiàn),因?yàn)樗炔恍枰荛L(zhǎng)時(shí)間來(lái)設(shè)置,也不會(huì)給網(wǎng)絡(luò)造成很大的壓力[11]。用表2的調(diào)查方法控制網(wǎng)絡(luò)化嵌入式設(shè)備??梢杂靡蛱鼐W(wǎng)(TCP/IP)、PSTN調(diào)制解調(diào)器、有線網(wǎng)絡(luò)和無(wú)線網(wǎng)絡(luò)來(lái)控制網(wǎng)絡(luò)化嵌入式設(shè)備。如表2所示,SNMP代理可以支持大型網(wǎng)絡(luò)。它是一個(gè)開方式標(biāo)準(zhǔn),因此很容易將自己的程序和SNMP集成。這個(gè)簡(jiǎn)易的最終成果是一個(gè)網(wǎng)絡(luò)管理端,它可以很容易地在現(xiàn)有網(wǎng)絡(luò)上實(shí)現(xiàn),而且不會(huì)對(duì)網(wǎng)絡(luò)造成很大的壓力[12]。此外,它為管理提供了最大的靈活性,管理既可以采用集中式服務(wù)器,也可以通過(guò)分布式來(lái)實(shí)現(xiàn)。
表2 控制網(wǎng)絡(luò)化嵌入式設(shè)備的方式
本文提出了一種基于單片機(jī)的SNMP代理,它可以有效地控制網(wǎng)絡(luò)化嵌入式設(shè)備。我們將Net-SNMP庫(kù)和單片機(jī)功能集成在一起,沒有建立MIB模塊,而是為資源受限的設(shè)備設(shè)計(jì)了一款小型SNMP代理。這種技術(shù)將會(huì)有助于為網(wǎng)絡(luò)化嵌入式系統(tǒng)構(gòu)建一個(gè)小型的SNMP代理,它不僅可以給基于單片機(jī)的設(shè)備提供一個(gè)控制方案,還可以利用TCP/IP網(wǎng)絡(luò)和串口通信來(lái)擴(kuò)展其靈活性。和現(xiàn)代網(wǎng)絡(luò)化嵌入式設(shè)備相比,此技術(shù)擴(kuò)展了適用性,并使管理更加方便。
[1]王韌.基于SNMP的呼叫中心設(shè)備監(jiān)控系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[D].上海:上海交通大學(xué),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協(xié)議的網(wǎng)絡(luò)流量采集系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].軟件導(dǎo)刊,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]付保川,王中杰,陸衛(wèi)忠,等.嵌入式設(shè)備的網(wǎng)絡(luò)化方法研究[J].自動(dòng)化儀表,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服務(wù)器上配置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網(wǎng)絡(luò)管理系統(tǒng)的研究與設(shè)計(jì)[D].桂林:廣西師范大學(xué),2015.LUO Dejun.Research and Design on OCDMA--PON Network Management System based on SNMP[D].Guilin:GuangxiNormalUniversity,2015.
[6]鄢華林,祁圣民,張鵬.柔性排纜絞車檢測(cè)系統(tǒng)設(shè)計(jì)[J].自動(dòng)化儀表,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協(xié)議的網(wǎng)絡(luò)管理系統(tǒng)設(shè)計(jì)[D].武漢:武漢理工大學(xué),2007.SHU Chang.The Desing of Network Management System based on SNMP Protocol[D].Wuhan:Wuhan University of Technology,2007.
[8]張宇.嵌入式網(wǎng)絡(luò)管理SNMP代理系統(tǒng)的研究與實(shí)現(xiàn)[D].上海:上海交通大學(xué),2012.ZHANG Yu.Research and Implementation of Embedded network management SNMPAgent System[D].Shanghai:Shanghai jiaotong university,2012.
[9]高嶺,李洪亮.基于JMX/JDMK技術(shù)的SNMP分級(jí)代理[J].計(jì)算機(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]衛(wèi)敏.淺談基于單片機(jī)的嵌入式系統(tǒng)的網(wǎng)絡(luò)應(yīng)用[J].數(shù)字技術(shù)與應(yīng)用,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]呂佳.基于移動(dòng)Ad Hoc網(wǎng)絡(luò)管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].北京:北京郵電大學(xué),2008.LV Jia.Design and Implementation of Network Management System Based onmobile Ad Hoc[D].Beijing:Beijing University of Postsand Telecommunications,2008.
[12]朱虹,楊家海,謝樹煜.CORBA技術(shù)在網(wǎng)絡(luò)管理中應(yīng)用的探討[J].計(jì)算機(jī)工程與應(yīng)用,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.