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