步園明
(江南大學(xué) 物聯(lián)網(wǎng)工程學(xué)院,江蘇 無(wú)錫 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ī)模的擴(kuò)大,這種網(wǎng)絡(luò)管理方式逐漸顯露出其缺點(diǎn),如管理平臺(tái)開發(fā)費(fèi)用高,用戶要掌握復(fù)雜的系統(tǒng)安裝、維護(hù)技術(shù),不便于遠(yuǎn)程訪問和分布式管理等。與現(xiàn)有的網(wǎng)絡(luò)管理方法相比,基于Web的網(wǎng)絡(luò)管理具有許多優(yōu)勢(shì)。采用瀏覽器代替?zhèn)鹘y(tǒng)的GUI或命令行界面,大大簡(jiǎn)化了用戶界面;進(jìn)行遠(yuǎn)程管理,突破地理限制,以前必須在中心的工作站上得到的信息,現(xiàn)在在任何地方都可以得到;大大降低了成本,瀏覽器可以在絕大多數(shù)平臺(tái)上運(yùn)行,使得以前只能在昂貴的Unix工作站上進(jìn)行的工作,現(xiàn)在在廉價(jià)的PC上也可以完成[2]。
然而,盡管基于Web的網(wǎng)絡(luò)管理有著諸多優(yōu)點(diǎn),但目前卻無(wú)法取代現(xiàn)有的管理方式[3]。這是因?yàn)榍度胧絎eb服務(wù)器的能力有限,難以提供SNMP代理那樣豐富的管理信息;此外,基于Web的網(wǎng)絡(luò)管理缺乏統(tǒng)一的國(guó)際標(biāo)準(zhǔn),這些因素制約了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格式的管理請(qǐng)求,Web 服務(wù)器通過 PHP (PHP,Hypertext Preprocessor)程序解釋這一請(qǐng)求,并將其發(fā)送給網(wǎng)管工作站上的SNMP管理應(yīng)用程序 (或者直接從數(shù)據(jù)庫(kù)中提取所需數(shù)據(jù)),SNMP管理應(yīng)用程序?qū)⒄?qǐng)求封裝成SNMP PDU,然后發(fā)送給嵌入在被管設(shè)備中的SNMP Agent。Agent對(duì)SNMP請(qǐng)求做出響應(yīng)后,將響應(yīng)結(jié)果返回給SNMP管理應(yīng)用程序,SNMP管理應(yīng)用程序?qū)⑺祷亟oPHP程序 (或存入數(shù)據(jù)庫(kù)),PHP程序返回給Web服務(wù)器,最后Web服務(wù)器送回HTML頁(yè)面,將結(jié)果顯示在Web瀏覽器中。

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

圖2 Web服務(wù)模塊工作流程Fig.2 Flow chart of Web module
當(dāng)用戶有與服務(wù)器端進(jìn)行交互的需求時(shí),將通過FORM表單向Web服務(wù)器發(fā)送信息,激活一個(gè)PHP程序,一般格式如下:

METHOD屬性指定將數(shù)據(jù)傳送到Web服務(wù)器的方法。在使用GET方法時(shí),表單數(shù)據(jù)會(huì)附加在所指向PHP腳本的URL后一起發(fā)送給Web服務(wù)器,Web服務(wù)器將收到的表單數(shù)據(jù)賦予環(huán)境變量QUERY_STRING。而POST方法通過使用標(biāo)準(zhǔn)輸入將表單數(shù)據(jù)傳送給Web服務(wù)器,Web服務(wù)器啟動(dòng)指定的腳本,并將用戶提供的數(shù)據(jù)傳入該腳本。ACTION屬性指定了將處理表單數(shù)據(jù)的PHP程序的URL。
Web服務(wù)器將表單數(shù)據(jù)以下列格式傳遞給PHP程序:
name1=value1&name2=value2&name3=value3……
name和value是表單中元素的名稱和取值。
然后,PHP程序?qū)⑻崛〗换バ畔?。PHP程序?qū)⑼ㄟ^$_GET變量獲取通過GET方法發(fā)送的表單數(shù)據(jù),通過$_POST變量獲取通過POST方法發(fā)送的表單數(shù)據(jù),或者使用$_REQUEST變量,它能獲取通過GET方法或POST方法發(fā)送的表單數(shù)據(jù)。
接下來(lái),PHP程序會(huì)將提取到的交互表單數(shù)據(jù)傳入?yún)f(xié)議轉(zhuǎn)換模塊。從協(xié)議轉(zhuǎn)換模塊傳回的響應(yīng)值通過PHP程序輸出到.htm文件中,在Web瀏覽器上顯示出來(lái)。
由系統(tǒng)的軟件結(jié)構(gòu)圖如圖1所示,可以看出,網(wǎng)管工作站實(shí)現(xiàn)了一種類似協(xié)議轉(zhuǎn)換的功能,完成了HTTP協(xié)議和SNMP協(xié)議之間的轉(zhuǎn)換。
當(dāng)用戶需要對(duì)設(shè)備進(jìn)行配置等管理操作時(shí),將通過SNMP管理應(yīng)用程序?qū)Ρ还茉O(shè)備的Agent發(fā)送SNMP請(qǐng)求,來(lái)完成查詢和配置操作。SNMP管理應(yīng)用程序使用PHP語(yǔ)言編寫,PHP提供了SNMP網(wǎng)管函數(shù)庫(kù),可以在PHP程序中調(diào)用Net-SNMP包中的接口函數(shù)。
下面以獲取DSL的服務(wù)類型為例,說明PHP-SNMP函數(shù)的實(shí)現(xiàn)。

snmpget()函數(shù)獲取PHP程序傳來(lái)的參數(shù)值:設(shè)備地址$nodeIP和SNMP共同體變量$community,返回指定設(shè)備中OID為”.1.3.6.1.4.1.5651.11.2.2.1.0”的對(duì)象值,并將該對(duì)象值賦值給PHP變量$stuType。
設(shè)備操作信息傳給SNMP管理應(yīng)用程序后,SNMP管理應(yīng)用程序與代理端的通信將通過報(bào)文交換實(shí)現(xiàn)。從SNMP管理應(yīng)用程序這一端來(lái)看,發(fā)出的命令將啟動(dòng)SNMP數(shù)據(jù)報(bào)的構(gòu)造過程,該操作命令類型可能是Set、Get或是Get-Next等中的任何一種。SNMP管理應(yīng)用程序?qū)?chuàng)建一個(gè) SNMP報(bào)文,并填入合適的報(bào)文首部,以便通過網(wǎng)絡(luò)向目的代理進(jìn)程傳送該報(bào)文。報(bào)文中指定了團(tuán)體名稱Community、版本號(hào)和請(qǐng)求ID,還要確定PDU類型并且將變量綁定列表插入報(bào)文,然后將SNMP報(bào)文發(fā)送給UDP層進(jìn)行傳送。報(bào)文發(fā)出之后,網(wǎng)絡(luò)管理應(yīng)用程序一定要記住請(qǐng)求中的Request ID,以便于和隨后接收到的響應(yīng)配對(duì)。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ò)管理方式相比具有更高的性能價(jià)格比,使用方便靈活且便于擴(kuò)展,是網(wǎng)絡(luò)管理發(fā)展的趨勢(shì)。文中采用SNMP網(wǎng)絡(luò)管理協(xié)議,融合Web技術(shù),設(shè)計(jì)了一個(gè)B/S模式的網(wǎng)絡(luò)管理系統(tǒng),并以徐州博聯(lián)科技有限公司的KT505產(chǎn)品作為具體被管設(shè)備對(duì)系統(tǒng)進(jìn)行了實(shí)現(xiàn)。管理者只需要Web瀏覽器就可以隨時(shí)隨地對(duì)設(shè)備進(jìn)行管理,并且不受管理者所使用操作系統(tǒng)類型的限制,大大增加了管理的靈活性和易操作性。
[1]張邦奎.簡(jiǎn)析網(wǎng)絡(luò)管理技術(shù)的運(yùn)用和發(fā)展趨勢(shì)[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é)報(bào):自然科學(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é)報(bào):信息與管理工程版,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ì)[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.