王曉東,楊學海
(中國西南電子技術研究所, 成都610036)
現有的航天地面測控系統中,監控系統通過采用C/S架構的方式基本實現了遠程中心對各套地面站設備的遠程監控管理。遠程客戶端通過本地服務端對地面站設備運行狀態與參數進行監視與控制,本地服務端將采集到的設備狀態參數信息傳送到遠程客戶端進行相應顯示,遠程客戶端則向用戶提供良好的人機操作界面,并且發送各種操控命令到本地服務端,通過本地服務端對本地設備或數據庫進行相應的操控。但是,由于遠程客戶端和本地服務端之間的信息傳輸沒有一套標準、統一的應用層協議,致使遠程中心的監控效率受到一定的影響,給用戶的使用帶來不便。
本文提出選擇簡單網絡管理協議(SNMP)作為遠程客戶端與本地服務端之間進行網絡通信的應用層協議,并以此為基礎構建C/S(Client/Server)模式下的遠程監控管理系統。通過原型系統的設計及實現,以及仿真試驗的驗證,從而研究并探討了SNMP在遠程監控中的應用。
簡單網絡管理協議(Simple Network Management Protocol, SNMP)是一系列協議組和規范的集合, 20世紀80年代末期由IETF開發后,開始被廣泛應用在各類網絡設備中,成為一種網管的工業標準,它被設計成為一種應用層協議,規定了網絡信息傳輸的方法、格式等,具有簡單、靈活、擴展性好等優點,適合于管理員對不同種類的設備、不同廠家生產的設備、不同型號的設備、不同物理空間的設備進行統一的管理,是一種從網絡設備中收集網絡管理信息的有效簡便的方法。
SNMP采用管理者(manager)/代理(agent)模型。管理者(一般是運行網絡管理系統的計算機)通過向代理(一般是包含SNMP管理信息的設備)發送相應的命令獲得代理中指定的信息,代理負責響應管理者發出的各種信息,或者以主動上報的方式向管理者提供必要的信息,從而實現管理者與代理之間的信息通信。
SNMP通常由管理信息結構(SMI)、管理信息庫(MIB)和管理協議(SNMP)[1]等幾個部分組成。
SMI是一套描述 SNMP如何訪問信息的標準[2],定義了SNMP框架所用信息的組織和標識,其中,被管理對象的定義要用抽象語句定義ASN.1來描述。SMI約束了抽象語句定義ASN.1的范圍,用于描述SNMP協議數據報和管理信息庫(MIB)。
MIB用來貯存管理信息,定義了可以通過網絡管理協議進行訪問的管理對象的集合,也即代理進程中所有可被查詢和修改的參數。MIB是一個樹形結構的數據庫, MIB中的每個被管理資源都由一個對象來表示,每一個對象信息都是管理信息樹下的一個節點,擁有唯一的對象標識。管理者與代理之間都使用同一個MIB作為接口結構,可實現相互信息的理解與管理。
SNMP協議是管理者和代理之間的異步請求和響應協議,定義了管理者如何對代理進程的MIB對象進行讀寫操作,定義了所使用的傳輸層協議、支持的操作、操作相關的PDU結構等。網絡管理信息的數據由SNMP從MIB庫中獲取,再經過網絡管理系統應用程序進行過濾、分析、加工等處理。 SNMP通常使用無連接的UDP進行通信,使用命令的方式來訪問MIB數據庫,每個SNMP命令稱為協議數據單元(PDU)。典型的PDU包括GetRequest、GetNextRequest、SetRequest、Trap、Response等幾種類型。
目前,航天地面測控系統中,通過采用C/S模式構建的遠程監控管理系統,部署在遠程中心的遠程客戶端已可基本實現對各個地面測控站設備進行遠程操控。地面站的本地服務端采集本地設備所有的參數、狀態信息,并將信息上報至遠程客戶端;遠程客戶端向用戶提供人機操作界面,同時將遠程控制命令發送到本地服務端,再由本地服務端對設備進行統一的分發控制。基于SNMP構建C/S模式的遠程監控管理系統,并未改變既有遠程監控的框架,只是采用了SNMP作為遠程客戶端與服務端之間的網絡信息交互的基礎。遠程監控管理系統模型如圖1所示。

圖1 遠程監控管理系統模型Fig.1 Remotemonitoring and controlmanagementsystem model
監控服務端可被看作是SNMP中的代理角色,遠程客戶端可被看作是SNMP中的管理者角色,這時的遠程中心客戶端軟件同地面站的本地服務端軟件之間的網絡信息交互即是采用SNMP的方式來實現。
在采用SNMP進行C/S模式遠程監控管理系統的構建中,重要的一個工作是遠程監控MIB庫的設計,以使得在管理者與代理之間使用同一個MIB作為網絡信息傳輸的基礎。圖2是遠程監控MIB庫的對象標識命名樹結構示意圖,可按路徑尋找到設備DC的對象標識(OID)為1.3.6.1.4.1.100000.1,或者也可表示為iso.org.dod.internet.private.enterprises.station.dc。

圖2 對象標識命名樹示例Fig.2 Named tree of objects identificationmodel
SNMP版本2中提供了多種命令類型的PDU操作,在遠程監控軟件中實際用到最多的是Trap操作與SetRequest操作兩種。在應用程序運行時,所有的Trap操作都在程序的某一個入口處接收數據,所有的SetRequest操作又在程序的另一個入口處接收數據。而在同一個 PDU操作命令中(例如 SetRequest操作)劃分出具體是遠程監控命令或數據的哪一種,則需要應用程序本身提供一種處理機制來進行解析。一種方式是,可以將收到的數據進行全MIB庫元素的遍歷,直至找到對應的元素,其缺點為進行遍歷操作將要消耗大量的資源,尤其在秒定時及大數據量傳輸時表現更為明顯。為了解決此問題,在進行遠程監控MIB庫設計時,將同一條命令或返回響應的數據集合在一個對象節點下,在節點內的第1個元素設計為本節點的名稱,通過查找第1個元素標識即可識別這一節點內的數據具體是哪一個設備的什么類型的數據或者是哪一類型的命令操作等。程序數據接收入口處收到響應或命令時,首先將收到的第1個元素解出,得到此識別標識后,再根據標識調用對應的處理方法即可對其后的MIB元素數據進行處理,不再需要對MIB庫對象進行全部遍歷操作。
在進行遠程監控的MIB庫設計時,以DC設備為例,總共需要進行控制的元素為兩項,包括dcDNLFreq、dcNCAttenLevel;需要設備上報的參數與狀態元素為8項,包括控制參數兩項以及狀態參數(dc-MonMode、 dcLO1Status、 dcLO2Status、 dcPower1Ind、dcPower2Ind、dcPower3Ind)6 項。所有參數定義為Integer32型, DC的MIB庫設計如圖3所示。

圖3 MIB庫中設備DC的定義Fig.3 The difinition fo DC in MIB
設備DC的節點名稱定義為“dc”,節點下定義的第1個元素dcNameID為此設備的String類型的元素,在發送控制命令或上報參數狀態時,填入一個相應的識別字符串,例如,對于設備DC狀態與參數的返回填入“DCStatus”,避免應用程序在對接收數據進行處理時對全MIB庫進行遍歷操作。在接收到服務端Trap上報的數據時,解出第1個元素對象,如設備DC上報“DCStatus”時,即可知道Trap的數據為設備DC的參數狀態,直接調用相應的處理過程即可,節省全MIB遍歷所需的處理時間和資源。
MIB中對所有設備監控、業務管理和數據庫操作的設計均采用同樣的方式。
遠程監控管理系統設計主要體現在監控軟件的設計上,監控軟件分為兩部分:一部分為監控服務端軟件,它實現對所有需要管理的設備進行參數的采集,將采集到的參數實時上報到遠程監控客戶端軟件,或者接收遠程客戶端軟件發出的控制命令,對設備進行控制操作以及對數據庫數據的操作;另一部分為遠程監控客戶端軟件,提供一個良好的人機圖形界面供用戶操作控制設備。
SNMPv2提供了GetRequest、GetNextRequest、SetRequest、Trap、Response、InformRequest、GetBulkRequest等7種命令類型的PDU操作,結合遠程監控軟件的功能特點以及所傳送數據的特點,將使用到GetRequest、SetRequest和Trap等3種操作方式,其中,又主要會大量的使用到SetRequest和Trap這兩種操作方式。監控服務端采用Trap操作方式定時(如每秒)將采集的數據上報至客戶端進行顯示;監控客戶端對監控服務端采用SetRequest操作方式進行監控命令的下達,對部分需要獲得少量返回參數的監控命令使用GetRequest操作方式進行下達。監控信息流程如圖4所示。

圖4 監控信息流程圖Fig.4 The flow chart of information onmonitoring&control
根據實際遠程監控管理的功能需求,主要包括設備參數與狀態的監視、設備參數控制、數據庫操作、用戶信息管理、圖像傳輸等幾個部分。對監控軟件實現上述功能的操作將根據各自的功能特點采用不同方式進行實現。
在本原型系統的實現過程中, SNMP的開發平臺采用AdventNet API,編程語言采用C#。
3.3.1 設備參數與狀態監視
監控服務端創建單獨的一個線程,以每秒主動發送Trap的方式將設備參數與狀態上報至監控客戶端。在Trap的PDU中將所有的參數、狀態進行一次性綁定并發送。服務端與客戶端使用相同的MIB庫文件,在接收的時候只需將收到的Trap包中數據的OID對應至MIB庫文件中的相應部分,即可解析出所需元素的數值,填入已經定義好的數據結構中以便監控客戶端使用。發送設備參數與狀態線程部分程序示例如下:


3.3.2 設備參數控制
獲得監控客戶端界面中需要更改的參數并將其填入對應的控制數據結構中,發送命令方式采用SetRequest操作。設備參數控制命令類型依靠所定義的不同的命令代碼表示,將所需控制的命令代碼與所需要傳送的命令參數,綁定在SetRequest操作的PDU中進行發送。監控服務端在收到SetRequest命令后,首先將命令類型數據解出,判斷出具體是哪一條命令,再由具體對應的命令解碼方法解出余下的命令參數并控制到設備或進行相應的操作。
3.3.3 數據庫操作
在設定的數據庫中,主要記錄設備的參數狀態,因此對于監控客戶端來說,操作數據庫實際上更多的是對數據庫內容的瀏覽與刪除兩項操作。對數據庫操作,監控客戶端采用SetRequest方式將查詢或刪除數據庫命令發出,在發出的命令中綁定了兩個日期參數,監控服務端收到命令后,在處理刪除數據庫命令時,直接將兩個日期之間的所有數據記錄刪除。處理查詢命令時需要將數據記錄讀出后全部返回到監控客戶端。因一條記錄可能包含有多個參數狀態,因此在返回查詢數據記錄時,采用Trap方式上報,一次返回一條記錄的方式進行。監控服務端單獨創建一個線程用于循環返回數據記錄,一次返回發送50條記錄到監控客戶端進行顯示。如查詢的數據記錄大于50條,則可在監控客戶端進行翻頁操作,每點擊一次翻頁事件,查詢下面50條記錄并返回,以解決數據記錄過多可能造成的獲取與顯示問題。
3.3.4 用戶信息管理
對用戶信息的增加、刪除操作采用SetRequest方式發送到監控服務端即可,已登錄用戶實時信息綁定在設備參數與狀態獲取的Trap包中一并返回,不需要進行單獨的處理。在用戶信息中最重要的處理為漢字的傳輸,對于用戶信息,使用漢字進行描述,而使用的AdventNet API無法支持String型傳輸漢字,因此處理漢字時需要在綁定至PDU上之前將漢字進行編碼轉換,轉換為能夠正常傳輸的編碼再綁定到PDU上發送,監控客戶端收到漢字后需要進行一次逆轉換,轉換為正常的漢字編碼再進行顯示。
3.3.5 圖像傳輸
監控軟件中對圖像傳輸的要求主要為波形圖像,用于設備頻譜儀圖像的實時監視。圖像傳輸標志置為開始后一直進行傳送,因此監控服務端單獨創建傳輸線程,并使用Trap方式進行圖像數據的傳輸。頻譜儀圖像采用每秒600點的采樣率進行波形采集,對每點的數據存儲方式為N[X][ Y],即把X與Y軸位置進行存儲,發送到監控客戶端后進行相應的還原、重繪以恢復圖像顯示。由于SNMP在對數據的傳輸時,需要將對象的OID與對象數據一起綁定,若單獨設定一個對象OID對應一個點的方式進行綁定,按圖像數據每秒更新一次計算,即每秒需要進行600 個點的數據傳輸,在MIB庫中,對圖像的傳輸就要設定600個元素,這樣導致MIB過于冗長,因此這里采用在MIB中只設定6個String型元素對象,每100 個點轉換為一個String型數據進行傳輸,一秒內傳輸6個String型(分為6個數據包)即可完成。在監控客戶端收到數據后進行一個循環依次解包,待6個數據包全部接收完畢并解碼完成后,即可對圖像進行重繪顯示。
采用基于SNMP協議的方式實現客戶端和服務端之間的網絡信息傳輸,可以規范統一各地面站對外的信息接口,提高接口的可擴展性,有利于遠程監控中心收集、處理分布在異地的各地面站的各種設備監控信息。
通過原型系統的設計及試驗驗證,采用SNMP的方式可以實現遠程監控管理的設備參數與狀態的監視、設備參數控制、數據庫操作、用戶信息管理、圖像獲取等幾個主要功能。其中,控制命令發出后設備或數據返回的響應時間均小于2.5 s,并且響應時間可通過對程序內部數據處理邏輯的優化進行縮減;監控軟件模擬實際系統運行情況,進行操作測試,在600 s內統計對24種不同設備的共870個元素進行監視,并進行30次不同設備的控制操作,總共產生9 487 500 byte數據量,監控客戶端與監控服務端之間的網絡信息傳輸的平均占用帶寬為9 487 500/600=126.5 kbit/s。
采用SNMP方式構建的C/S模式遠程監控管理系統中,對設備的參數與狀態的監視、對設備的參數控制以及自動化測試等功能均能得到良好的實現。但在進行數據庫操作與圖像傳輸時,由于數據本身的信息含量很大,網絡傳輸的時效性將受到一定的影響。特別是在進行數據庫瀏覽、查詢時,數據量超過規定帶寬(例如256 kbit)時,將會出現傳輸延遲現象,根據數據量的多少,完全傳輸一張表的內容需要幾秒至幾十秒不等。
基于SNMP構建C/S模式遠程監控管理系統具有一定的可行性,雖然在數據庫操作、圖像傳輸等幾個特殊方面表現有所欠佳,但這主要還是由于其功能本身的特點以及網絡傳輸帶寬等因素所決定的。
本文提出了將SNMP協議與基于C/S結構的遠程監控管理系統進行融合,實現了監控服務端與監控客戶端之間的網絡傳輸采用標準的SNMP協議進行通信,構建C/S模式的遠程監控管理方式。同時,提出了遠程監控主要功能在SNMP協議下的實現方式以及MIB中相應的功能與設備的對象元素的設計方式,通過試驗驗證監控服務端與監控客戶端之間采用SNMP協議實現遠程監控功能的可行性、占用帶寬及性能等。在SNMP協議下,客戶端與服務端之間的網絡通信為點對點方式,因此,我們在對多遠程客戶端自由接入服務端的功能支持上并不完善,這將是后續研究的主要方向。
[ 1] 曾凡鋒.基于SNMP的網絡流量統計分析系統[ J].北方工業大學學報, 2003, 15(1):17-20.
ZENG Fan-feng.The Netflow Statistical and Analytical System Based on SNMP[J].Journal of North China University of Technology, 2003, 15(1):17 -20.(in Chinese)
[ 2] 劉翔, 沈明玉.基于 SNMP與Web的服務監控系統[ J] .合肥工業大學學報, 2008, 31(1):44-47.
LIU Xiang, SHEN Ming-yu.Design of a server monitoring system based on the SNMP and Web[J].Journal of Hefei University of Technology, 2008, 31(1):44-47.(in Chinese)