步園明
(江南大學(xué) 物聯(lián)網(wǎng)工程學(xué)院,江蘇 無錫 214122)
SNMP在網(wǎng)絡(luò)管理領(lǐng)域有著重要地位,但傳統(tǒng)的基于SNMP的網(wǎng)絡(luò)管理多采用C/S結(jié)構(gòu)[1]。隨著網(wǎng)絡(luò)技術(shù)的發(fā)展和網(wǎng)絡(luò)規(guī)模的擴大,這種網(wǎng)絡(luò)管理方式逐漸顯露出其缺點,如管理平臺開發(fā)費用高,用戶要掌握復(fù)雜的系統(tǒng)安裝、維護技術(shù),不便于遠程訪問和分布式管理等。與現(xiàn)有的網(wǎng)絡(luò)管理方法相比,基于Web的網(wǎng)絡(luò)管理具有許多優(yōu)勢。采用瀏覽器代替?zhèn)鹘y(tǒng)的GUI或命令行界面,大大簡化了用戶界面;進行遠程管理,突破地理限制,以前必須在中心的工作站上得到的信息,現(xiàn)在在任何地方都可以得到;大大降低了成本,瀏覽器可以在絕大多數(shù)平臺上運行,使得以前只能在昂貴的Unix工作站上進行的工作,現(xiàn)在在廉價的PC上也可以完成[2]。
然而,盡管基于Web的網(wǎng)絡(luò)管理有著諸多優(yōu)點,但目前卻無法取代現(xiàn)有的管理方式[3]。這是因為嵌入式Web服務(wù)器的能力有限,難以提供SNMP代理那樣豐富的管理信息;此外,基于Web的網(wǎng)絡(luò)管理缺乏統(tǒng)一的國際標準,這些因素制約了Web管理技術(shù)的發(fā)展。因此,出現(xiàn)了將基于Web的管理技術(shù)與SNMP管理技術(shù)相結(jié)合這一新型的管理技術(shù)。
網(wǎng)絡(luò)管理系統(tǒng)的軟件結(jié)構(gòu)如圖1所示。用戶通過Web瀏覽器向管理工作站上的Web服務(wù)器發(fā)出HTTP格式的管理請求,Web 服務(wù)器通過 PHP (PHP,Hypertext Preprocessor)程序解釋這一請求,并將其發(fā)送給網(wǎng)管工作站上的SNMP管理應(yīng)用程序 (或者直接從數(shù)據(jù)庫中提取所需數(shù)據(jù)),SNMP管理應(yīng)用程序?qū)⒄埱蠓庋b成SNMP PDU,然后發(fā)送給嵌入在被管設(shè)備中的SNMP Agent。Agent對SNMP請求做出響應(yīng)后,將響應(yīng)結(jié)果返回給SNMP管理應(yīng)用程序,SNMP管理應(yīng)用程序?qū)⑺祷亟oPHP程序 (或存入數(shù)據(jù)庫),PHP程序返回給Web服務(wù)器,最后Web服務(wù)器送回HTML頁面,將結(jié)果顯示在Web瀏覽器中。
圖1 系統(tǒng)軟件結(jié)構(gòu)Fig.1 Software structure of the system
在這一過程中,網(wǎng)管工作站扮演了服務(wù)器和客戶端的雙重角色。作為Server,它向Web客戶端提供HTTP服務(wù),同時,它又作為Client,訪問被管設(shè)備上SNMP代理提供的SNMP服務(wù)。
KT505是徐州博聯(lián)科技有限公司生產(chǎn)的一款網(wǎng)關(guān),能夠利用SHDSL技術(shù)經(jīng)普通電話線長距離傳輸以太網(wǎng)信號,可用于同時傳送數(shù)據(jù)、語音、圖象和視頻信息。在一對0.5 mm線徑 (24 awg)的普通電話線上,當實時連續(xù)傳輸速率為2.304 Mbps時,傳輸距離可達3.5 km,大大延長了以太網(wǎng)電纜傳輸?shù)耐ㄐ啪嚯x。KT505提供4個10 M/100 M自適應(yīng)以太網(wǎng)接口,1個console口和一個電話線接口,具有橋接/路由功能。該設(shè)備的設(shè)計和實現(xiàn)基于嵌入式技術(shù),采用嵌入式Linux操作系統(tǒng)平臺。
2.2.1 M IB設(shè)計
通常,網(wǎng)絡(luò)資源被抽象為對象進行管理。對象的集合被組織為管理信息庫(Management Information Base,MIB)。對代理端來說,MIB記錄了可管理的對象的屬性集合;在管理工作站方,需要輪詢時,把對應(yīng)的MIB轉(zhuǎn)換成中間結(jié)構(gòu)通過網(wǎng)絡(luò)傳遞給代理端,代理端輪詢資料后反饋給管理工作站。
設(shè)計網(wǎng)絡(luò)設(shè)備MIB樹的工作實際就是規(guī)劃設(shè)備的私有MIB樹。其過程就是將設(shè)備的控制點分門別類,再用ASN.1語法規(guī)則將其描述出來[4]。文中根據(jù)KT505的管理需要規(guī)劃出了私有MIB結(jié)構(gòu),對各節(jié)點的名稱、位置、類型、訪問權(quán)限和簡單注釋等做出了定義。
KT505的MIB結(jié)構(gòu)分為以下幾個部分:
1)global,定義了 KT505 的系統(tǒng)信息
①system節(jié)點定義了系統(tǒng)時間;
②mode節(jié)點定義了KT505的工作模式:網(wǎng)橋或者路由;
③snmpConfig節(jié)點下又定義了sysSnmpCommunityConfig和snmpTrapCfgTable兩個節(jié)點。這兩個節(jié)點中分別定義了SNMP的讀共同體、寫共同體、陷阱共同體和Trap的索引號、發(fā)送至主機IP、發(fā)送Trap端口;
2)portConfig,定義了LAN口和DSL口的基本信息
① lanPort 節(jié) 點 下 定 義 了 portEnable、lanSelfAdapting、duplex、speed4個子節(jié)點,分別代表了LAN口的使能與否、是否自適應(yīng)、全/半雙工選擇、LAN口速率等信息。
②dslPort節(jié)點下定義了stuType、standard和dataRate3個子節(jié)點。stuType節(jié)點表示選擇KT505是工作于CO(中心局端,Center Office)模式,還是 RT(客戶端,Remote Terminal)模式;standard表示DSL采用的標準;dataRate是DSL的傳輸速率。
3)advancedConfig節(jié)點定義了網(wǎng)橋或路由工作模式下的一些高級設(shè)置
①bridgeIPConfig,包含工作在網(wǎng)橋模式下的KT505的IP地址和子網(wǎng)掩碼;
②routerConfig,其下又定義了lanRouterConfig、wanRouter Config、ripEnable、ripVersion、staticRoutingTable5 個子節(jié)點。
lanRouterConfig定義了路由模式下LAN口的IP地址和子網(wǎng)掩碼的信息;
wanRouterConfig定義了WAN口采用的協(xié)議、WAN口的IP地址、子網(wǎng)掩碼、遠端IP、用戶名和密碼;
ripEnable和ripVersion分別表示RIP協(xié)議的使能和RIP協(xié)議的版本;
staticRoutingTable定義了靜態(tài)路由信息表。
2.2.2 代理程序?qū)崿F(xiàn)
LIANG Yuan-yuan, YUAN Wang, HUANG Ping, GUO Xin, XU Jia-jie, JIANG Jian
嵌入式代理的開發(fā)使用了Net-SNMP軟件,通過這個軟件可以實現(xiàn)代理的主體功能,其他擴展功能再根據(jù)需要進行二次開發(fā)。本文使用的是Net-SNMP 5.1,首先要將該軟件包移植到基于嵌入式Power PC平臺的目標板中,移植成功后就可以利用該軟件和自己設(shè)計的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文件相對應(yīng)的.c和.h文件:
#env MIBS="+KT505"mib2c kt505
生成的兩個文件為kt505.c和kt505.h。由mib2c生成的文件是一個大致的代理程序框架,其中頭文件是對節(jié)點進行宏定義,函數(shù)聲明。C文件分為兩大塊:一是初始化函數(shù),主要用來對變量注冊;二是響應(yīng)函數(shù),用來響應(yīng)管理端的查詢命令,響應(yīng)函數(shù)的返回值,就是我們要手工實現(xiàn)的內(nèi)容[5-6]。
所要做的工作就是把數(shù)據(jù)以一種合理的方式導(dǎo)入到代理程序框架中,主要是在初始化函數(shù)init_kt505()中對變量進行注冊和初始化;在var_kt505()函數(shù)中實現(xiàn)對變量的get和set操作:在這個函數(shù)中的 switch(vp->magic){}語句里,各個case的常量表達式對應(yīng)了各個結(jié)點,要在每一個case分支中填充對結(jié)點變量進行g(shù)et和set的具體操作代碼。
之后即可進行可執(zhí)行代理程序的生成。把編輯好的kt505.c和kt505.h拷貝到Net-SNMP源代碼目錄下的agent/mibgroup中,對Net-SNMP軟件包進行重新編譯,編譯選項配置命令./configure 中增加--with-mib-moudles=”KT505”,使生成的可執(zhí)行程序snmpd支持新擴展的MIB。此時的snmpd即是本文要實現(xiàn)的代理Agent,可將其拷入目標板的文件系統(tǒng)中,并在目標板啟動時運行snmpd進程。
網(wǎng)絡(luò)管理端通過在Windows客戶機上使用Telnet遠程登錄Linux服務(wù)器的方式進行開發(fā)。在開發(fā)過程中使用到了兩款軟件,一款為在開發(fā)代理端時使用的Net-SNMP 5.1,另一款為XAMPP。XAMPP是一個易于安裝的Apache發(fā)行版,并包含了MySQL和PHP等組件,本文中使用的是XAMPP 1.68 for Linux。
Web服務(wù)模塊的工作流程如圖2所示。用戶首先在瀏覽器端輸入管理端Web服務(wù)器的IP或域名,進行登錄認證后,即可看到網(wǎng)絡(luò)管理系統(tǒng)的主頁面index.htm。在主頁面中,用戶可進行用戶管理和設(shè)備管理等操作。
圖2 Web服務(wù)模塊工作流程Fig.2 Flow chart of Web module
當用戶有與服務(wù)器端進行交互的需求時,將通過FORM表單向Web服務(wù)器發(fā)送信息,激活一個PHP程序,一般格式如下:
METHOD屬性指定將數(shù)據(jù)傳送到Web服務(wù)器的方法。在使用GET方法時,表單數(shù)據(jù)會附加在所指向PHP腳本的URL后一起發(fā)送給Web服務(wù)器,Web服務(wù)器將收到的表單數(shù)據(jù)賦予環(huán)境變量QUERY_STRING。而POST方法通過使用標準輸入將表單數(shù)據(jù)傳送給Web服務(wù)器,Web服務(wù)器啟動指定的腳本,并將用戶提供的數(shù)據(jù)傳入該腳本。ACTION屬性指定了將處理表單數(shù)據(jù)的PHP程序的URL。
Web服務(wù)器將表單數(shù)據(jù)以下列格式傳遞給PHP程序:
name1=value1&name2=value2&name3=value3……
name和value是表單中元素的名稱和取值。
然后,PHP程序?qū)⑻崛〗换バ畔ⅰHP程序?qū)⑼ㄟ^$_GET變量獲取通過GET方法發(fā)送的表單數(shù)據(jù),通過$_POST變量獲取通過POST方法發(fā)送的表單數(shù)據(jù),或者使用$_REQUEST變量,它能獲取通過GET方法或POST方法發(fā)送的表單數(shù)據(jù)。
接下來,PHP程序會將提取到的交互表單數(shù)據(jù)傳入?yún)f(xié)議轉(zhuǎn)換模塊。從協(xié)議轉(zhuǎn)換模塊傳回的響應(yīng)值通過PHP程序輸出到.htm文件中,在Web瀏覽器上顯示出來。
由系統(tǒng)的軟件結(jié)構(gòu)圖如圖1所示,可以看出,網(wǎng)管工作站實現(xiàn)了一種類似協(xié)議轉(zhuǎn)換的功能,完成了HTTP協(xié)議和SNMP協(xié)議之間的轉(zhuǎn)換。
當用戶需要對設(shè)備進行配置等管理操作時,將通過SNMP管理應(yīng)用程序?qū)Ρ还茉O(shè)備的Agent發(fā)送SNMP請求,來完成查詢和配置操作。SNMP管理應(yīng)用程序使用PHP語言編寫,PHP提供了SNMP網(wǎng)管函數(shù)庫,可以在PHP程序中調(diào)用Net-SNMP包中的接口函數(shù)。
下面以獲取DSL的服務(wù)類型為例,說明PHP-SNMP函數(shù)的實現(xiàn)。
snmpget()函數(shù)獲取PHP程序傳來的參數(shù)值:設(shè)備地址$nodeIP和SNMP共同體變量$community,返回指定設(shè)備中OID為”.1.3.6.1.4.1.5651.11.2.2.1.0”的對象值,并將該對象值賦值給PHP變量$stuType。
設(shè)備操作信息傳給SNMP管理應(yīng)用程序后,SNMP管理應(yīng)用程序與代理端的通信將通過報文交換實現(xiàn)。從SNMP管理應(yīng)用程序這一端來看,發(fā)出的命令將啟動SNMP數(shù)據(jù)報的構(gòu)造過程,該操作命令類型可能是Set、Get或是Get-Next等中的任何一種。SNMP管理應(yīng)用程序?qū)?chuàng)建一個 SNMP報文,并填入合適的報文首部,以便通過網(wǎng)絡(luò)向目的代理進程傳送該報文。報文中指定了團體名稱Community、版本號和請求ID,還要確定PDU類型并且將變量綁定列表插入報文,然后將SNMP報文發(fā)送給UDP層進行傳送。報文發(fā)出之后,網(wǎng)絡(luò)管理應(yīng)用程序一定要記住請求中的Request ID,以便于和隨后接收到的響應(yīng)配對。SNMP管理端采集數(shù)據(jù)的流程如圖3所示。
圖3 SNMP管理端采集數(shù)據(jù)流程Fig.3 Data acquisition flow of SNMP manager
基于Web的網(wǎng)絡(luò)管理與傳統(tǒng)的網(wǎng)絡(luò)管理方式相比具有更高的性能價格比,使用方便靈活且便于擴展,是網(wǎng)絡(luò)管理發(fā)展的趨勢。文中采用SNMP網(wǎng)絡(luò)管理協(xié)議,融合Web技術(shù),設(shè)計了一個B/S模式的網(wǎng)絡(luò)管理系統(tǒng),并以徐州博聯(lián)科技有限公司的KT505產(chǎn)品作為具體被管設(shè)備對系統(tǒng)進行了實現(xiàn)。管理者只需要Web瀏覽器就可以隨時隨地對設(shè)備進行管理,并且不受管理者所使用操作系統(tǒng)類型的限制,大大增加了管理的靈活性和易操作性。
[1]張邦奎.簡析網(wǎng)絡(luò)管理技術(shù)的運用和發(fā)展趨勢[J].中小企業(yè)管理與科技,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]肖德寶,徐慧.網(wǎng)絡(luò)管理理論與技術(shù)[M].武漢:華中科技大學(xué)出版社,2009.
[3]劉翔,沈明玉.基于SNMP與Web的服務(wù)監(jiān)控系統(tǒng)[J].合肥工業(yè)大學(xué)學(xué)報:自然科學(xué)版,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環(huán)境下基于Net-SNMP的代理開發(fā)[J].武漢理工大學(xué)學(xué)報:信息與管理工程版,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的通用網(wǎng)管代理軟件的設(shè)計[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.