馬素剛 李宥謀
(西安郵電學(xué)院計算機(jī)學(xué)院,陜西 西安 710121)
隨著嵌入式技術(shù)與網(wǎng)絡(luò)通信技術(shù)的發(fā)展,嵌入式設(shè)備不斷推陳出新,對設(shè)備的網(wǎng)絡(luò)化也提出了更高的要求。然而,許多早期的嵌入式設(shè)備沒有網(wǎng)絡(luò)接口,無法通過網(wǎng)絡(luò)實現(xiàn)遠(yuǎn)程監(jiān)控。對嵌入式設(shè)備的管理與維護(hù),必須是操作人員在工作現(xiàn)場操作設(shè)備面板或攜帶筆記本電腦連接專用接口(如 RS-232、I2C、SPI、GPIB等)進(jìn)行調(diào)試。這種方式無法滿足設(shè)備調(diào)試的實時性要求,也浪費(fèi)了人力和財力。
簡單網(wǎng)絡(luò)管理協(xié)議(simple network management protocol,SNMP)是目前TCP/IP網(wǎng)絡(luò)中應(yīng)用較為廣泛的網(wǎng)絡(luò)管理協(xié)議[1],使用SNMP要求通信雙方都支持UDP和IP協(xié)議。由于許多早期的嵌入式設(shè)備不支持TCP/IP協(xié)議,為實現(xiàn)對這些非標(biāo)準(zhǔn)設(shè)備的管理,可以采用委托(Proxy)代理[2]。Proxy代理將SNMP管理站發(fā)出的SNMP報文轉(zhuǎn)換為設(shè)備特定的消息格式,從而使管理者能夠管理多種類型的設(shè)備。
本文闡述了Proxy代理的軟硬件設(shè)計方法,以及如何通過串口連接將委托代理應(yīng)用于微波傳輸設(shè)備的遠(yuǎn)程管理。
SNMP采用代理/管理站模型[3],其系統(tǒng)總體結(jié)構(gòu)如圖1所示。Proxy代理使得非標(biāo)準(zhǔn)SNMP設(shè)備具有網(wǎng)絡(luò)管理功能。
圖1 系統(tǒng)總體結(jié)構(gòu)Fig.1 System architecture
整個系統(tǒng)由管理站(network management station,NMS)、Internet、Proxy代理和被管設(shè)備組成。管理站運(yùn)行網(wǎng)絡(luò)管理軟件(如AT-SNMPc、HP OpenView等),通過Internet與Proxy代理連接。Proxy代理通過專用接口與被管設(shè)備連接,發(fā)送查詢、控制命令,同時接收被管設(shè)備主動發(fā)送的告警信息。被管設(shè)備(如一些常用的儀器儀表、傳輸設(shè)備等)運(yùn)行自身的監(jiān)測程序,負(fù)責(zé)數(shù)據(jù)的采集傳輸,同時還需要提供專用調(diào)試接口。
管理站對被管設(shè)備的監(jiān)控主要包括查詢設(shè)備信息、設(shè)置設(shè)備參數(shù)以及處理告警信息。
1.2.1 設(shè)備信息的查詢
查詢設(shè)備信息按以下步驟進(jìn)行。
①管理站上運(yùn)行的網(wǎng)絡(luò)管理軟件,通過SNMP協(xié)議,向Proxy代理發(fā)送查詢信息的Get請求,運(yùn)行于Proxy代理中的Agent進(jìn)程接收查詢請求。
②Agent進(jìn)程讀取Proxy代理中保存被管設(shè)備信息的文件,并通過SNMP協(xié)議向管理站作出回應(yīng)。為保證Proxy代理保存信息的實時性,被管設(shè)備定期(如1 s)通過專用接口(如RS-232)向Proxy代理發(fā)送自身的各種參數(shù)信息。
1.2.2 設(shè)備參數(shù)的設(shè)置
設(shè)置設(shè)備參數(shù)的流程如下。
①管理站通過SNMP協(xié)議,向Proxy代理發(fā)送設(shè)置參數(shù)的Set請求,運(yùn)行于Proxy代理中的Agent進(jìn)程接收設(shè)置請求。
②Proxy代理收到設(shè)置請求后,采用專用通信協(xié)議(如串口通信協(xié)議),把設(shè)置請求傳送到被管設(shè)備。被管設(shè)備完成設(shè)置操作后,對Proxy代理作出回應(yīng)。
③Proxy代理向管理站回應(yīng)完成設(shè)置信息。
1.2.3 告警信息的處理
對于被管設(shè)備中發(fā)生的告警,需要主動向管理站發(fā)送告警信息,工作流程如下。
①運(yùn)行于被管設(shè)備上的監(jiān)測程序發(fā)現(xiàn)有告警產(chǎn)生時,通過專用接口把告警信息主動發(fā)送到Proxy代理。
②運(yùn)行于Proxy代理的Agent進(jìn)程發(fā)現(xiàn)有告警產(chǎn)生時,及時通過SNMP Trap報文把告警信息發(fā)送至管理站。
Proxy代理負(fù)責(zé)將管理站發(fā)送的Get、Set請求轉(zhuǎn)換為專用命令,然后發(fā)送至被管設(shè)備;同時把被管設(shè)備主動發(fā)送的告警信息轉(zhuǎn)換為Trap報文并發(fā)送至管理站。Proxy代理采用S3C2410 CPU和嵌入式Linux操作系統(tǒng),運(yùn)行SNMP Agent程序以及與被管設(shè)備相關(guān)的專用通信程序。
Proxy代理采用韓國Samsung公司的S3C2410高性能ARM處理器[4],運(yùn)行頻率可達(dá)266 MHz。S3C2410處理器基于ARM920T內(nèi)核(16/32 bit RISC CPU),集成了大量的功能單元,主要包括內(nèi)存管理單元MMU、獨(dú)立的16 kB 指令 Cache、16 kB 數(shù)據(jù) Cache、4通道 DMA、3通道UART、2通道SPI、PLL數(shù)字鎖相環(huán)等。Proxy代理還包括存儲器(64 MB SDRAM、64 MB Nand Flash)、CS8900以太網(wǎng)控制器、2個輸出串口、SPI接口、I2C接口和JTAG調(diào)試接口等元件。
Proxy代理的硬件結(jié)構(gòu)如圖2所示。
圖2 Proxy代理的硬件結(jié)構(gòu)Fig.2 Hardware architecture of Proxy Agent
在Proxy代理硬件平臺上成功移植了基于2.6內(nèi)核的嵌入式Linux操作系統(tǒng)[5],并使用C語言編寫了SNMP Agent程序。
SNMP Agent是在net-snmp軟件包的基礎(chǔ)上,通過二次開發(fā)來實現(xiàn)的[6]。擴(kuò)展后的Agent除了可以響應(yīng)管理站發(fā)來的Get、Set請求外,還可以把專用通信程序接收的告警信息轉(zhuǎn)換為Trap報文,并發(fā)送至管理站。Agent設(shè)計主要完成管理信息庫(management information base,MIB)設(shè)計和Agent程序擴(kuò)展。
2.2.1 MIB 庫的設(shè)計
通過對實際設(shè)備功能及應(yīng)用場合的分析[7],從配置管理、性能管理和故障管理等方面增加管理對象。擴(kuò)展的MIB庫對象屬于私有MIB變量,它們在iso.org.dod.internet.private.enterprises 子樹下加以定義。MIB庫采用OSI的抽象語法標(biāo)志ASN.1編寫。
2.2.2 Agent程序的擴(kuò)展
Agent程序主要包含 Init、Get、Set和 Notification 這4個子模塊。
①Init模塊:Init模塊通過函數(shù)init_NMS()完成代理的初始化功能,即注冊擴(kuò)展的MIB、初始化自定義變量和設(shè)置定時器等。
② Get模塊:Get(讀)操作是SNMP的基本操作之一,用于對被管設(shè)備信息的查詢。Get模塊通過函數(shù)var_NMS()實現(xiàn)Get功能。該函數(shù)的結(jié)構(gòu)比較簡單,主要內(nèi)容即為一個switch-case結(jié)構(gòu),每一個分支處理一個管理對象。
③Set模塊:Set(寫)操作用于設(shè)置被管設(shè)備的參數(shù)信息,通過名稱類似“write_****”的寫函數(shù)實現(xiàn)。對于不同的管理對象,分別定義寫函數(shù)用于設(shè)置不同的參數(shù)。對被管對象的設(shè)置操作可以分配到6個不同階段完成。各階段功能如表1所示。
表1 各階段功能表Tab.1 Functions of each stages
④Notification模塊:Notification模塊通過發(fā)送Trap報文,處理告警信息。Agent程序定時(如1 μs)查看與專用通信程序共享的管道,如果檢測到來自被管設(shè)備的告警信息,則立即調(diào)用函數(shù)send_v2trap(),并通過Trap報文向管理站發(fā)送告警信息。
早期的微波通信設(shè)備沒有網(wǎng)絡(luò)接口,使用Proxy代理能夠?qū)崿F(xiàn)對它的遠(yuǎn)程管理[8]。微波通信設(shè)備和Proxy代理之間通過RS-232連接,采用專用串口通信協(xié)議[9]。
串口通信采用異步通信方式,數(shù)據(jù)傳輸率為19200 bit/s。串口數(shù)據(jù)幀格式如圖3所示。
圖3 串口數(shù)據(jù)幀格式Fig.3 Frame format for serial port data
串口數(shù)據(jù)幀主要包含以下字段。
① 起始位:取值為0xcc或0xc3,其中0xcc表示設(shè)置信息,0xc3表示響應(yīng)信息。
②長度位:表示幀中命令位和數(shù)據(jù)位長度之和。
③命令位:用來標(biāo)志幀的功能。
④數(shù)據(jù)位:用于標(biāo)志設(shè)置信息或響應(yīng)信息。
⑤校驗和:將命令位、數(shù)據(jù)位按字節(jié)相加。
⑥ 結(jié)束位:表示一幀結(jié)束,取值為0xf3。
交叉編譯環(huán)境如圖4所示[10]。
圖4 交叉編譯環(huán)境Fig.4 Cross-compiling environment
開發(fā)人員在宿主機(jī)(PC機(jī))上編譯生成適合在目標(biāo)機(jī)(Proxy代理)上運(yùn)行的執(zhí)行代碼,包含Agent程序(snmpd)和串口通信程序(s_port),并通過NFS方式下載到Proxy代理中。
通過對網(wǎng)管系統(tǒng)進(jìn)行的測試可以看出,Proxy代理實現(xiàn)了預(yù)定功能。在管理站使用AT-SNMPc能夠?qū)ξ⒉ㄍㄐ旁O(shè)備進(jìn)行有效的監(jiān)視和控制,從而提高了微波通信網(wǎng)絡(luò)的服務(wù)質(zhì)量。
本文設(shè)計實現(xiàn)的Proxy代理適用于多種接口的非SNMP設(shè)備,在不改變原有設(shè)備軟硬件結(jié)構(gòu)的基礎(chǔ)上,增強(qiáng)了被管設(shè)備的可管理性能,有利于設(shè)備的快速升級。Proxy代理支持標(biāo)準(zhǔn) SNMP 協(xié)議[11-12],使得非SNMP標(biāo)準(zhǔn)設(shè)備能夠加入網(wǎng)管軟件中統(tǒng)一管理。Proxy代理在保護(hù)用戶已有投資的基礎(chǔ)上,拓寬了用戶對自身設(shè)備的管理能力。然而,由于SNMPv2協(xié)議支持的安全措施有限,帶來了一定的安全隱患,整個系統(tǒng)的安全性有待進(jìn)一步提高。
[1]雷震甲.計算機(jī)網(wǎng)絡(luò)管理[M].西安:西安電子科技大學(xué)出版社,2006.
[2]Chavan S S,Madanagopal R.Generic SNMP proxy agent framework for management of heterogeneous network elements[C]//Bangalore:Communication Systems and Networks and Workshops,2009:1-6.
[3]Zeng Wenxian,Wang Yue.Design and implementation of server monitoring system based on SNMP[C]//Hainan Island:International Joint Conference on Artificial Intelligence,2009:680 -682.
[4]李敏,何平.基于ARM920T的薄膜厚度在線測量系統(tǒng)設(shè)計[J].自動化儀表,2009,30(8):61 -63.
[5]張?zhí)m云,張高偉.基于ARM9和Linux的GPS定位數(shù)據(jù)的采集與管理[J].自動化儀表,2008,29(10):14 -17.
[6]馬素剛.微波中繼站中嵌入式網(wǎng)管Agent實現(xiàn)[J].西安郵電學(xué)院學(xué)報,2009,14(1):120 -124.
[7]羅毅,姚桂玲.基于SNMP的MIB構(gòu)結(jié)樹高效算法研究[J].計算機(jī)工程與設(shè)計,2010,31(15):3386 -3389.
[8]劉釗遠(yuǎn),王亞剛,許振文.基于SNMP的數(shù)字微波網(wǎng)管系統(tǒng)設(shè)計與實現(xiàn)[J].通信技術(shù),2009,42(9):139 -141.
[9]畢國玲,陳濤,王建立,等.多功能嵌入式遠(yuǎn)程信息采集與監(jiān)控系統(tǒng)[J].微電子學(xué)與計算機(jī),2010,27(10):174 -177.
[10]馬素剛,王力,許振文.基于嵌入式Linux的Web服務(wù)器的設(shè)計與實現(xiàn)[J].計算機(jī)與數(shù)字工程,2010,38(9):183 -186.
[11]蔡偉鴻,舒兆港,劉震,等.基于SNMP協(xié)議的以太網(wǎng)拓?fù)渥詣影l(fā)現(xiàn)算法研究[J].計算機(jī)工程與應(yīng)用,2005,41(14):156-157.
[12]陳雷,董博,王雪,等.基于SNMP協(xié)議的全局網(wǎng)絡(luò)流量分析系統(tǒng)的設(shè)計與實現(xiàn)[J].大連理工大學(xué)學(xué)報:工學(xué)版,2005(S1):69-71.