潘佳,鄒仕祥,黃炳忠
(1.解放軍理工大學(xué) 通信工程學(xué)院,南京210007; 2.中國(guó)人民解放軍92126部隊(duì))
潘佳(碩士研究生),研究方向?yàn)橥ㄐ排c信息系統(tǒng)。
基于Web的網(wǎng)絡(luò)管理(Web-Based Management,WBM),允許管理人員使用任何一種Web瀏覽器,在網(wǎng)絡(luò)的任何節(jié)點(diǎn)上方便迅速地配置、控制,以及存取網(wǎng)絡(luò)和它的各個(gè)部分。WBM有兩種實(shí)現(xiàn)策略,它們之間平行發(fā)展而互不干涉。第一種是代理方案,也就是將Web服務(wù)器加到一個(gè)內(nèi)部工作站(代理)上。這個(gè)設(shè)備輪流與端設(shè)備通信,瀏覽器用戶(hù)通過(guò)HTTP協(xié)議與代理通信,代理通過(guò)SNMP協(xié)議與端設(shè)備通信。第二種方案是嵌入式方式,將Web能力真正嵌入到網(wǎng)絡(luò)設(shè)備中。管理人員可以輕松地通過(guò)瀏覽器訪問(wèn)到該設(shè)備,從而實(shí)現(xiàn)網(wǎng)絡(luò)管理功能。代理方式保留了現(xiàn)存的基于工作站的網(wǎng)絡(luò)管理系統(tǒng)的全部?jī)?yōu)點(diǎn),同時(shí)增強(qiáng)了訪問(wèn)的靈活性,適合大型機(jī)構(gòu)進(jìn)行全部網(wǎng)絡(luò)的網(wǎng)絡(luò)監(jiān)測(cè)與管理,而嵌入式方式對(duì)于小規(guī)模的環(huán)境更為理想。本文討論的就是以嵌入式方式實(shí)現(xiàn)WBM。
隨著計(jì)算機(jī)技術(shù)的發(fā)展,嵌入式系統(tǒng)已成為計(jì)算機(jī)領(lǐng)域的一個(gè)重要組成部分。嵌入式系統(tǒng)可以通過(guò)各種無(wú)線和有線形式的網(wǎng)絡(luò)連接,實(shí)現(xiàn)它們之間的相互連接,在網(wǎng)絡(luò)通信市場(chǎng)上極具生命力。只要在嵌入式設(shè)備中加入一個(gè)微型服務(wù)器,就可以使用任何一種Web瀏覽器接收和發(fā)送信息,向Internet或內(nèi)部網(wǎng)提供高效的管理接口,用戶(hù)可以使用瀏覽器作為接口來(lái)訪問(wèn)設(shè)備進(jìn)行配置管理。嵌入式方式給每個(gè)設(shè)備帶來(lái)了圖形化的管理,提供了簡(jiǎn)單易用的接口,操作簡(jiǎn)單而不損失功能,為管理者提供了真正的即插即用的安裝方式。
嵌入式Web服務(wù)器是指,將Web服務(wù)器引入現(xiàn)場(chǎng)測(cè)試和控制設(shè)備中,在相應(yīng)的硬件平臺(tái)和軟件系統(tǒng)的支撐下,以Web技術(shù)為核心的基于互聯(lián)網(wǎng)的網(wǎng)絡(luò)測(cè)試和控制設(shè)備。嵌入式Web服務(wù)器和傳統(tǒng)Web服務(wù)器相比有其自身的特點(diǎn):
①在嵌入式系統(tǒng)中,由于處理能力、存儲(chǔ)器容量、內(nèi)存等的限制,嵌入式Web服務(wù)器很難對(duì)占有大量系統(tǒng)資源的程序(如JAVA)提供支持。
②為了達(dá)到遠(yuǎn)程管理和監(jiān)控設(shè)備的目的,用戶(hù)必須能同服務(wù)器交互。交互可通過(guò)SSI、FORM、CGI等來(lái)實(shí)現(xiàn)。
③嵌入式系統(tǒng)對(duì)安全性有一定的要求,對(duì)動(dòng)態(tài)應(yīng)用內(nèi)容的驗(yàn)證是它必須要解決的問(wèn)題,最好能實(shí)現(xiàn)用戶(hù)的分級(jí)訪問(wèn)。
系統(tǒng)服務(wù)器端硬件是以MPC8270為核心的HHPPC8270開(kāi)發(fā)板。M PC8270為Freescale公司PowerQUICC系列新一代處理器,適合于集成控制和推進(jìn)處理的高端網(wǎng)絡(luò)和通信設(shè)備。每個(gè)芯片都集成了2個(gè)處理單元:1個(gè)嵌入式PowerPC603e核和1個(gè)精簡(jiǎn)指令集(RISC)的通信處理模塊(CPM)。HHPPC8270開(kāi)發(fā)板提供了3個(gè)高速的百兆以太網(wǎng)接口、16 MB的 Flash、128 MB的SDRAM 、1個(gè) 2線RS232串口,HDD(PCI接口)支持電子盤(pán) 、IDE、SATA 、SCSI硬盤(pán)(陣列)存儲(chǔ),同時(shí)提供 2個(gè) PCI插槽可以方便擴(kuò)展多種PCI接口卡,實(shí)現(xiàn)硬盤(pán)存儲(chǔ)、無(wú)線通信、圖像采集/顯示等功能。服務(wù)器操作系統(tǒng)采用嵌入式實(shí)時(shí)操作系統(tǒng)VxWorks,系統(tǒng)中運(yùn)行的Web服務(wù)器軟件是GoAhead WebServer。它負(fù)責(zé)接收、處理和應(yīng)答客戶(hù)端提出的請(qǐng)求,傳遞用戶(hù)請(qǐng)求的靜態(tài)頁(yè)面,或調(diào)用main.c中申明的Goform函數(shù)來(lái)調(diào)用具體的控制程序?qū)υO(shè)備進(jìn)行管理,Goform函數(shù)處理后的結(jié)果以HTM L的方式返回客戶(hù)端。系統(tǒng)的結(jié)構(gòu)圖如圖1所示。
圖1 系統(tǒng)結(jié)構(gòu)圖
系統(tǒng)用到的主要軟件有:嵌入式操作系統(tǒng)VxWorks及其開(kāi)發(fā)環(huán)境Tornado II,以及源碼公開(kāi)的Web服務(wù)器軟件GoAhead WebServer。VxWorks系統(tǒng)運(yùn)行環(huán)境支持的CPU 包括 Power PC、68K、CPU32、x86等。VxWorks的微內(nèi)核是一個(gè)具有較高性能的、標(biāo)準(zhǔn)的嵌入式實(shí)時(shí)操作系統(tǒng)內(nèi)核。其主要特點(diǎn)包括:搶占式任務(wù)調(diào)度,任務(wù)間通信手段多樣化,任務(wù)間切換時(shí)間短,中斷延遲小,網(wǎng)絡(luò)流量大等。Tornado II是一個(gè)友好的開(kāi)發(fā)環(huán)境,它可以運(yùn)行在多種主機(jī)上(如 Sun、HP、Dec、Mips等)。主機(jī)操作系統(tǒng)則支持Unix、Windows NT、Windows XP等。系統(tǒng)的各項(xiàng)配置由于使用較為流行的圖形界面,而方便使用者較快地理解和掌握。GoAhead WebServer功能強(qiáng)大,可以運(yùn)行在Windows CE 、eCos、Linux 、MACOSX 、QNX、VxWorks 等多個(gè)平臺(tái)上。GoAhead WebServer的主要特征有:支持ASP、嵌入式的javascript、標(biāo)準(zhǔn)的CGI執(zhí)行、內(nèi)存中的CGI處理GoForms和擴(kuò)展的 API;如果不包含SSI僅要求60 KB內(nèi)存,包含SSI則要求500 KB內(nèi)存;Web頁(yè)面可存在ROM或文件系統(tǒng)中。
進(jìn)行GoAhead WebServer移植之前,要在開(kāi)發(fā)板上移植好VxWorks操作系統(tǒng)。GoAhead WebServer的所有代碼都是C語(yǔ)言編寫(xiě)的,所以在不同操作系統(tǒng)上都可以方便地移植。GoAhead WebServer的具體移植步驟如下:
步驟1 下載最新的GoAhead WebServer源碼文件夾Webs218,即GoAhead2.1.8。
步驟2 運(yùn)行 Tornado II建立一個(gè)Downloadable工程,編譯GoAhead WebServer的源碼。
①把Webs218文件夾下所有的源文件(*.c和*.h文件),以及VxWorks文件夾下的main.c文件添加到所建立的工程中。注意,要去掉WebSSL.c和Webcomp.c文件,否則會(huì)報(bào)錯(cuò)。WebSSL.c文件用在SSL上,如果需要使用SSL,還需要下載openSSL系列的文件。Webcomp.c文件用于Web文檔壓縮,步驟3中會(huì)具體說(shuō)明。
②參考../VxWorks/makefile來(lái)修改工程的makefile。在工程中增加宏定義:
-DWEBS-DUEMF-DOS="VXWORKS"-DVXWORKS-g-mapcs-32-mlittle-endian-march=ar-mv4-ansi-fno-builtin-DA RMEL-I.-IG:/Tornado 2.0/target/h/-DCPU=ARM 7TDMI-DTOOL_FAMILY=gnu-DTOOL=gnu
如果需要增加用戶(hù)管理、存取控制支持,則還需增加-DUSER_MANAGEM ENT_SUPPORT和-DDIGEST_ACCESS_SUPPORT。
③根據(jù)實(shí)際系統(tǒng)要求修改main.c文件。
設(shè)定根目錄名,例如:
#define ROOT_DIR T("//");
設(shè)定Web頁(yè)面的路徑,例如:
Static char_t*rootWeb=T("");
設(shè)定安全密碼,例如:
Static char_t*password=T("1234");
設(shè)定服務(wù)端口,例如:
Static int port=80;
設(shè)定默認(rèn)訪問(wèn)的頁(yè)面,例如:
WebsSetDefaultPage(wp,T("home.asp"));
利用搜索工具查找home.asp,將查到的都修改完成。
步驟3 壓縮網(wǎng)頁(yè)文件。HHPPC8270開(kāi)發(fā)板沒(méi)有標(biāo)準(zhǔn)的文件系統(tǒng),所以要把所有網(wǎng)頁(yè)文件壓縮后存為靜態(tài)全局?jǐn)?shù)組,工程makefile中還要定義宏WEBS_PAGE_ROM。GoAhead WebServer專(zhuān)門(mén)為將網(wǎng)頁(yè)文件打包成C語(yǔ)言的數(shù)組設(shè)置了文件合并程序。在../WIN/目錄下,有個(gè)Webcomp.dsw工程,先編譯得到可執(zhí)行文件Webcomp.exe,然后運(yùn)行Webcomp.exe../Web Websfile>W(wǎng)ebrom.c。其中,Websfile是所有網(wǎng)頁(yè)文件的文件列表;Webrom.c就是生成的網(wǎng)頁(yè)數(shù)據(jù)文件,包含所有網(wǎng)頁(yè)文件的內(nèi)容,圖像、文字以及頁(yè)面文件之間的鏈接關(guān)系。然后替換掉原有的Webrom.c。
步驟4 編譯工程生成*.out文件,下載運(yùn)行。這樣就完成了GoAhead WebServer的移植,在WindShell下加載WebServer:sp Websvxmain。
步驟5 在瀏覽器端鍵入目標(biāo)板網(wǎng)口IP地址,就可以訪問(wèn)home.asp了。
GoAhead WebServer支持基本認(rèn)證(Basic Access Authentication,BAA)。用戶(hù)密碼從客戶(hù)端經(jīng)過(guò)Base64方式加密后傳到瀏覽器端,雖然不是以明文傳輸,但這種方法顯然很容易被破譯。實(shí)現(xiàn)BAA,需要對(duì)GoAhead WebServer源碼中security.c的預(yù)定義部分進(jìn)行修改。代碼如下:
進(jìn)行上述修改后,訪問(wèn)home.asp時(shí)服務(wù)器會(huì)自動(dòng)返回一個(gè)登陸窗口,要求驗(yàn)證用戶(hù)名和密碼。
GoAhead WebServer還支持(Digest Access Authentication,DAA)。DAA應(yīng)答中包含一個(gè)有效的校驗(yàn)和,即摘要。DAA假定客戶(hù)方和服務(wù)器都知道一個(gè)有權(quán)使用資源的用戶(hù)名和用戶(hù)密碼。相對(duì)于BAA,它不要求客戶(hù)方向服務(wù)器端提供顯式的用戶(hù)密碼,從而避免了密碼被盜。系統(tǒng)管理員通過(guò)Web頁(yè)面完全添加用戶(hù)、用戶(hù)組、用戶(hù)訪問(wèn)權(quán)限的設(shè)置。在完成這些配置后,只有擁有相應(yīng)操作權(quán)限的用戶(hù),才可以訪問(wèn)相應(yīng)的服務(wù)器資源。
GoAhead WebServer支持 GoForms。GoForms是GoAhead公司自創(chuàng)的一種表單技術(shù),它的任務(wù)直接運(yùn)行在內(nèi)存,而非像傳統(tǒng)CGI程序那樣,每一次和服務(wù)器連接都要產(chǎn)生新的任務(wù)。通過(guò)和Web服務(wù)任務(wù)共享地址空間,GoForms進(jìn)程能直接訪問(wèn)所請(qǐng)求的內(nèi)容。當(dāng)GoAhead WebServer運(yùn)行時(shí),若解析到URL包含有“/goform”,則開(kāi)始調(diào)用某個(gè)表單處理函數(shù)。URL字段中“/goform”之后的信息定義了該表單的名稱(chēng)和具體參數(shù)。下面是一個(gè)簡(jiǎn)單的goform處理程序,用于在客戶(hù)端輸出名字與年齡:
本文詳細(xì)介紹了嵌入式Web服務(wù)器實(shí)現(xiàn)的關(guān)鍵技術(shù),并對(duì)其以嵌入式方式實(shí)現(xiàn)WBM的應(yīng)用做了簡(jiǎn)要分析。嵌入式Web服務(wù)器技術(shù)的廣泛應(yīng)用將會(huì)大大提高設(shè)備性能,從根本上改變?cè)O(shè)備維護(hù)、管理方式。基于嵌入式Web服務(wù)器技術(shù)建立的新型控制系統(tǒng),可以有效地降低運(yùn)行和維護(hù)費(fèi)用,提高系統(tǒng)的管理水平。實(shí)驗(yàn)表明,基于HHPPC8270平臺(tái)的Web服務(wù)器系統(tǒng)運(yùn)行可靠,實(shí)現(xiàn)了用戶(hù)訪問(wèn)權(quán)限配置。所述方法對(duì)嵌入式遠(yuǎn)程管理維護(hù)具有一定的參考價(jià)值。
[1]夏海濤,詹志強(qiáng).新一代網(wǎng)絡(luò)管理技術(shù)[M].北京:北京郵電大學(xué)出版社,2002.
[2]胡杰,王風(fēng)茂.動(dòng)態(tài)網(wǎng)頁(yè)設(shè)計(jì)基礎(chǔ)教程[M].北京:科學(xué)出版社,2005.
[3]李黎,鄭成輝.基于B/S模式的分布式網(wǎng)管系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].鐵路計(jì)算機(jī)應(yīng)用,2004,13(9).
[4]李磊,楊柏林.嵌入式Web服務(wù)器軟件的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與設(shè)計(jì),2003,24(10).
[5]肖德寶,劉學(xué)超.一種基于Web的嵌入式設(shè)備網(wǎng)絡(luò)管理的設(shè)計(jì)[J].計(jì)算機(jī)工程,2006,32(15).
[6]何力.移動(dòng)代理技術(shù)在網(wǎng)絡(luò)管理系統(tǒng)中的應(yīng)用研究與部分實(shí)現(xiàn)[D].成都:電子科技大學(xué),2005.
[7]李中健,等.基于 PC/104平臺(tái)的VxWorks Web服務(wù)器研究與實(shí)現(xiàn)[J].儀表技術(shù)與傳感器,2008(11).
[8]左明文,段懷敏,等.VxWorks中嵌入式Web服務(wù)器的應(yīng)用研究.見(jiàn):第十六屆全國(guó)煤炭自動(dòng)化學(xué)術(shù)年會(huì)、中國(guó)煤炭學(xué)會(huì)自動(dòng)化專(zhuān)業(yè)委員會(huì)學(xué)術(shù)會(huì)議論文集[C],2006.
單片機(jī)與嵌入式系統(tǒng)應(yīng)用2010年2期