步園明
(江南大學 物聯網工程學院,江蘇 無錫 214122)
SNMP在網絡管理領域有著重要地位,但傳統的基于SNMP的網絡管理多采用C/S結構[1]。隨著網絡技術的發展和網絡規模的擴大,這種網絡管理方式逐漸顯露出其缺點,如管理平臺開發費用高,用戶要掌握復雜的系統安裝、維護技術,不便于遠程訪問和分布式管理等。與現有的網絡管理方法相比,基于Web的網絡管理具有許多優勢。采用瀏覽器代替傳統的GUI或命令行界面,大大簡化了用戶界面;進行遠程管理,突破地理限制,以前必須在中心的工作站上得到的信息,現在在任何地方都可以得到;大大降低了成本,瀏覽器可以在絕大多數平臺上運行,使得以前只能在昂貴的Unix工作站上進行的工作,現在在廉價的PC上也可以完成[2]。
然而,盡管基于Web的網絡管理有著諸多優點,但目前卻無法取代現有的管理方式[3]。這是因為嵌入式Web服務器的能力有限,難以提供SNMP代理那樣豐富的管理信息;此外,基于Web的網絡管理缺乏統一的國際標準,這些因素制約了Web管理技術的發展。因此,出現了將基于Web的管理技術與SNMP管理技術相結合這一新型的管理技術。
網絡管理系統的軟件結構如圖1所示。用戶通過Web瀏覽器向管理工作站上的Web服務器發出HTTP格式的管理請求,Web 服務器通過 PHP (PHP,Hypertext Preprocessor)程序解釋這一請求,并將其發送給網管工作站上的SNMP管理應用程序 (或者直接從數據庫中提取所需數據),SNMP管理應用程序將請求封裝成SNMP PDU,然后發送給嵌入在被管設備中的SNMP Agent。Agent對SNMP請求做出響應后,將響應結果返回給SNMP管理應用程序,SNMP管理應用程序將它返回給PHP程序 (或存入數據庫),PHP程序返回給Web服務器,最后Web服務器送回HTML頁面,將結果顯示在Web瀏覽器中。

圖1 系統軟件結構Fig.1 Software structure of the system
在這一過程中,網管工作站扮演了服務器和客戶端的雙重角色。作為Server,它向Web客戶端提供HTTP服務,同時,它又作為Client,訪問被管設備上SNMP代理提供的SNMP服務。
KT505是徐州博聯科技有限公司生產的一款網關,能夠利用SHDSL技術經普通電話線長距離傳輸以太網信號,可用于同時傳送數據、語音、圖象和視頻信息。在一對0.5 mm線徑 (24 awg)的普通電話線上,當實時連續傳輸速率為2.304 Mbps時,傳輸距離可達3.5 km,大大延長了以太網電纜傳輸的通信距離。KT505提供4個10 M/100 M自適應以太網接口,1個console口和一個電話線接口,具有橋接/路由功能。該設備的設計和實現基于嵌入式技術,采用嵌入式Linux操作系統平臺。
2.2.1 M IB設計
通常,網絡資源被抽象為對象進行管理。對象的集合被組織為管理信息庫(Management Information Base,MIB)。對代理端來說,MIB記錄了可管理的對象的屬性集合;在管理工作站方,需要輪詢時,把對應的MIB轉換成中間結構通過網絡傳遞給代理端,代理端輪詢資料后反饋給管理工作站。
設計網絡設備MIB樹的工作實際就是規劃設備的私有MIB樹。其過程就是將設備的控制點分門別類,再用ASN.1語法規則將其描述出來[4]。文中根據KT505的管理需要規劃出了私有MIB結構,對各節點的名稱、位置、類型、訪問權限和簡單注釋等做出了定義。
KT505的MIB結構分為以下幾個部分:
1)global,定義了 KT505 的系統信息
①system節點定義了系統時間;
②mode節點定義了KT505的工作模式:網橋或者路由;
③snmpConfig節點下又定義了sysSnmpCommunityConfig和snmpTrapCfgTable兩個節點。這兩個節點中分別定義了SNMP的讀共同體、寫共同體、陷阱共同體和Trap的索引號、發送至主機IP、發送Trap端口;
2)portConfig,定義了LAN口和DSL口的基本信息
① lanPort 節 點 下 定 義 了 portEnable、lanSelfAdapting、duplex、speed4個子節點,分別代表了LAN口的使能與否、是否自適應、全/半雙工選擇、LAN口速率等信息。
②dslPort節點下定義了stuType、standard和dataRate3個子節點。stuType節點表示選擇KT505是工作于CO(中心局端,Center Office)模式,還是 RT(客戶端,Remote Terminal)模式;standard表示DSL采用的標準;dataRate是DSL的傳輸速率。
3)advancedConfig節點定義了網橋或路由工作模式下的一些高級設置
①bridgeIPConfig,包含工作在網橋模式下的KT505的IP地址和子網掩碼;
②routerConfig,其下又定義了lanRouterConfig、wanRouter Config、ripEnable、ripVersion、staticRoutingTable5 個子節點。
lanRouterConfig定義了路由模式下LAN口的IP地址和子網掩碼的信息;
wanRouterConfig定義了WAN口采用的協議、WAN口的IP地址、子網掩碼、遠端IP、用戶名和密碼;
ripEnable和ripVersion分別表示RIP協議的使能和RIP協議的版本;
staticRoutingTable定義了靜態路由信息表。
2.2.2 代理程序實現
LIANG Yuan-yuan, YUAN Wang, HUANG Ping, GUO Xin, XU Jia-jie, JIANG Jian
嵌入式代理的開發使用了Net-SNMP軟件,通過這個軟件可以實現代理的主體功能,其他擴展功能再根據需要進行二次開發。本文使用的是Net-SNMP 5.1,首先要將該軟件包移植到基于嵌入式Power PC平臺的目標板中,移植成功后就可以利用該軟件和自己設計的MIB文件生成代理程序的框架。
生成代理程序的框架的方法如下,首先將KT505.txt拷入/home/opt/eldk/ppc_8xx/usr/local/snmp/share/snmp/mibs/目 錄下,運行下面的命令加載MIB文件。
#export MIBS=all
#export MIBDIRS=/home/opt/eldk/ppc_8xx/usr/local/snmp/share/snmp/mibs
然后使用mib2c工具生成與MIB文件相對應的.c和.h文件:
#env MIBS="+KT505"mib2c kt505
生成的兩個文件為kt505.c和kt505.h。由mib2c生成的文件是一個大致的代理程序框架,其中頭文件是對節點進行宏定義,函數聲明。C文件分為兩大塊:一是初始化函數,主要用來對變量注冊;二是響應函數,用來響應管理端的查詢命令,響應函數的返回值,就是我們要手工實現的內容[5-6]。
所要做的工作就是把數據以一種合理的方式導入到代理程序框架中,主要是在初始化函數init_kt505()中對變量進行注冊和初始化;在var_kt505()函數中實現對變量的get和set操作:在這個函數中的 switch(vp->magic){}語句里,各個case的常量表達式對應了各個結點,要在每一個case分支中填充對結點變量進行get和set的具體操作代碼。
之后即可進行可執行代理程序的生成。把編輯好的kt505.c和kt505.h拷貝到Net-SNMP源代碼目錄下的agent/mibgroup中,對Net-SNMP軟件包進行重新編譯,編譯選項配置命令./configure 中增加--with-mib-moudles=”KT505”,使生成的可執行程序snmpd支持新擴展的MIB。此時的snmpd即是本文要實現的代理Agent,可將其拷入目標板的文件系統中,并在目標板啟動時運行snmpd進程。
網絡管理端通過在Windows客戶機上使用Telnet遠程登錄Linux服務器的方式進行開發。在開發過程中使用到了兩款軟件,一款為在開發代理端時使用的Net-SNMP 5.1,另一款為XAMPP。XAMPP是一個易于安裝的Apache發行版,并包含了MySQL和PHP等組件,本文中使用的是XAMPP 1.68 for Linux。
Web服務模塊的工作流程如圖2所示。用戶首先在瀏覽器端輸入管理端Web服務器的IP或域名,進行登錄認證后,即可看到網絡管理系統的主頁面index.htm。在主頁面中,用戶可進行用戶管理和設備管理等操作。

圖2 Web服務模塊工作流程Fig.2 Flow chart of Web module
當用戶有與服務器端進行交互的需求時,將通過FORM表單向Web服務器發送信息,激活一個PHP程序,一般格式如下:

METHOD屬性指定將數據傳送到Web服務器的方法。在使用GET方法時,表單數據會附加在所指向PHP腳本的URL后一起發送給Web服務器,Web服務器將收到的表單數據賦予環境變量QUERY_STRING。而POST方法通過使用標準輸入將表單數據傳送給Web服務器,Web服務器啟動指定的腳本,并將用戶提供的數據傳入該腳本。ACTION屬性指定了將處理表單數據的PHP程序的URL。
Web服務器將表單數據以下列格式傳遞給PHP程序:
name1=value1&name2=value2&name3=value3……
name和value是表單中元素的名稱和取值。
然后,PHP程序將提取交互信息。PHP程序將通過$_GET變量獲取通過GET方法發送的表單數據,通過$_POST變量獲取通過POST方法發送的表單數據,或者使用$_REQUEST變量,它能獲取通過GET方法或POST方法發送的表單數據。
接下來,PHP程序會將提取到的交互表單數據傳入協議轉換模塊。從協議轉換模塊傳回的響應值通過PHP程序輸出到.htm文件中,在Web瀏覽器上顯示出來。
由系統的軟件結構圖如圖1所示,可以看出,網管工作站實現了一種類似協議轉換的功能,完成了HTTP協議和SNMP協議之間的轉換。
當用戶需要對設備進行配置等管理操作時,將通過SNMP管理應用程序對被管設備的Agent發送SNMP請求,來完成查詢和配置操作。SNMP管理應用程序使用PHP語言編寫,PHP提供了SNMP網管函數庫,可以在PHP程序中調用Net-SNMP包中的接口函數。
下面以獲取DSL的服務類型為例,說明PHP-SNMP函數的實現。

snmpget()函數獲取PHP程序傳來的參數值:設備地址$nodeIP和SNMP共同體變量$community,返回指定設備中OID為”.1.3.6.1.4.1.5651.11.2.2.1.0”的對象值,并將該對象值賦值給PHP變量$stuType。
設備操作信息傳給SNMP管理應用程序后,SNMP管理應用程序與代理端的通信將通過報文交換實現。從SNMP管理應用程序這一端來看,發出的命令將啟動SNMP數據報的構造過程,該操作命令類型可能是Set、Get或是Get-Next等中的任何一種。SNMP管理應用程序將創建一個 SNMP報文,并填入合適的報文首部,以便通過網絡向目的代理進程傳送該報文。報文中指定了團體名稱Community、版本號和請求ID,還要確定PDU類型并且將變量綁定列表插入報文,然后將SNMP報文發送給UDP層進行傳送。報文發出之后,網絡管理應用程序一定要記住請求中的Request ID,以便于和隨后接收到的響應配對。SNMP管理端采集數據的流程如圖3所示。

圖3 SNMP管理端采集數據流程Fig.3 Data acquisition flow of SNMP manager
基于Web的網絡管理與傳統的網絡管理方式相比具有更高的性能價格比,使用方便靈活且便于擴展,是網絡管理發展的趨勢。文中采用SNMP網絡管理協議,融合Web技術,設計了一個B/S模式的網絡管理系統,并以徐州博聯科技有限公司的KT505產品作為具體被管設備對系統進行了實現。管理者只需要Web瀏覽器就可以隨時隨地對設備進行管理,并且不受管理者所使用操作系統類型的限制,大大增加了管理的靈活性和易操作性。
[1]張邦奎.簡析網絡管理技術的運用和發展趨勢[J].中小企業管理與科技,2009(21):277.ZHANG Bang-kui.Brief analysis on application and development tendency of the network management technology.Management&Technology of SME,2009(21):277.
[2]肖德寶,徐慧.網絡管理理論與技術[M].武漢:華中科技大學出版社,2009.
[3]劉翔,沈明玉.基于SNMP與Web的服務監控系統[J].合肥工業大學學報:自然科學版,2008,31(1):44-47.LIU Xiang,SHEN Ming-yu.Design ofa server monitoring system based on the SNMP and Web[J].Journal of Hefei University of Technology:Natural Science,2008,31(1):44-47.
[4]Dubuisson O.ASN.1-Communication between heterogeneous systems[M].Morgan Kaufmann Publishers,2000.
[5]呂鋒,閔迪.嵌入式Power PC Linux環境下基于Net-SNMP的代理開發[J].武漢理工大學學報:信息與管理工程版,2006,28(5):51-54.LV Feng,MIN Di.Agent development based on Net-SNMP in Linux for embedded Power PC environment[J].Journal of Wuhan University of Technology:Information&Management Engineering, 2006, 28(5):51-54.
[6]王禮德,向良軍,鄭林華.基于SNMP的通用網管代理軟件的設計[J].科技信息,2007(29):419-420.WANG Li-de,XIANG Liang-jun,ZHENG Lin-hua.Design of generic network management agent software based on SNMP[J].Science&Technology Information,2007(29):419-420.