倪業(yè)鵬,帥千鈞
(中國(guó)傳媒大學(xué)計(jì)算機(jī)與網(wǎng)絡(luò)中心,北京100024)
網(wǎng)絡(luò)中心承擔(dān)著校園網(wǎng)維護(hù)、網(wǎng)絡(luò)辦公應(yīng)用開發(fā)、校園網(wǎng)絡(luò)數(shù)字化建設(shè)的重任,其中校園網(wǎng)絡(luò)的維護(hù)是最基本也是最主要的責(zé)任。
網(wǎng)絡(luò)維護(hù)主要是管理交換機(jī),交換機(jī)是校園局域網(wǎng)中用來交換、傳輸數(shù)據(jù)信息的樞紐,其工作狀態(tài)的好壞關(guān)系著校園網(wǎng)絡(luò)的數(shù)據(jù)傳輸穩(wěn)定性,因此對(duì)交換機(jī)進(jìn)行良好的實(shí)時(shí)遠(yuǎn)程管理與控制將直接影響網(wǎng)絡(luò)的穩(wěn)定性、健壯性,并可能大大減少網(wǎng)絡(luò)故障的時(shí)間,把由于網(wǎng)絡(luò)癱瘓而引起的損失降到最小。
實(shí)現(xiàn)遠(yuǎn)程管控交換機(jī)的系統(tǒng)已很普遍,但大部分系統(tǒng)都是基于網(wǎng)絡(luò)和交換機(jī)端口來進(jìn)行帶外管控,一旦出現(xiàn)網(wǎng)絡(luò)問題或交換機(jī)故障系統(tǒng)就無法工作。針對(duì)這種情況,本系統(tǒng)在帶內(nèi)管理的基礎(chǔ)上又融合了基于SNMP和RS232串口的帶內(nèi)管理模塊,并開發(fā)了相關(guān)的交換機(jī)應(yīng)急處理模塊,使交換機(jī)在系統(tǒng)控制下可以無需人工干預(yù),自動(dòng)處理部分問題,從而降低了故障時(shí)間,提高了網(wǎng)絡(luò)中心工作效率。
圖1 系統(tǒng)設(shè)計(jì)圖
本系統(tǒng)從功能來分共有四個(gè)模塊,分別是網(wǎng)絡(luò)通信模塊,SNMP管理模塊,GPRS通信模塊和串口通信模塊。網(wǎng)絡(luò)通信模塊主要負(fù)責(zé)在連網(wǎng)的情況下通過網(wǎng)絡(luò)監(jiān)控交換機(jī)的工作情況;串口通信模塊負(fù)責(zé)與交換機(jī)進(jìn)行帶外通信,它是系統(tǒng)實(shí)現(xiàn)自主管理交換機(jī)的基礎(chǔ);SNMP管理模塊是基于SNMP協(xié)議的一個(gè)程序模塊,該模塊通過SNMP協(xié)議來獲得交換機(jī)狀態(tài)信息,判斷其是否運(yùn)行正常,若工作正常,則把交換機(jī)信息由網(wǎng)絡(luò)通信模塊回傳至網(wǎng)絡(luò)中心,如若發(fā)現(xiàn)故障,則利用串口通信模塊操作交換機(jī)來解決相應(yīng)故障,完成自我修復(fù);在交換機(jī)發(fā)生故障且SNMP管理模塊無法恢復(fù)交換機(jī)正常工作時(shí),GPRS通信模塊會(huì)把交換機(jī)故障信息發(fā)回網(wǎng)絡(luò)中心,并從網(wǎng)絡(luò)中心接受指令來人工調(diào)試交換機(jī),實(shí)現(xiàn)遠(yuǎn)程帶外管控。這四個(gè)模塊中網(wǎng)絡(luò)通信模塊、GPRS通信模塊和串口通信模塊是系統(tǒng)與交換機(jī)之間,交換機(jī)與網(wǎng)絡(luò)中心之間數(shù)據(jù)互通的基礎(chǔ),起到橋梁作用,而SNMP管理模塊則是本系統(tǒng)的核心所在,它協(xié)調(diào)其他模塊完成遠(yuǎn)程管理控制交換機(jī)的全部功能。
雖然市場(chǎng)上有一些現(xiàn)成的開發(fā)板可以滿足系統(tǒng)需求,但其板上資源不是過多就是偏少,所以筆者還是自己設(shè)計(jì)并實(shí)現(xiàn)了系統(tǒng)的硬件。系統(tǒng)的硬件結(jié)構(gòu)圖2所示:
圖2 硬件結(jié)構(gòu)圖
現(xiàn)階段嵌入式處理器內(nèi)核按照體系結(jié)構(gòu)可劃分為:ARM處理器、MIPS處理器和Power PC處理器等??紤]本系統(tǒng)中核心處理器的主要任務(wù)和各處理器的特點(diǎn),筆者選擇具有ARM920T內(nèi)核的S3C2440芯片作為核心處理器。這款芯片[1]具有價(jià)格低、功耗小和性能高的特點(diǎn),讀寫速度可以達(dá)到400MHZ,具有豐富的外圍接口,非常適合應(yīng)用于網(wǎng)絡(luò)通信和設(shè)備控制系統(tǒng)。
網(wǎng)絡(luò)模塊是本系統(tǒng)重要的組成部分。不管是通過SNMP協(xié)議來獲取交換機(jī)信息,還是系統(tǒng)與網(wǎng)絡(luò)中心的數(shù)據(jù)交互,都需要網(wǎng)絡(luò)的支持。系統(tǒng)是運(yùn)行在校園網(wǎng)絡(luò)的核心交換機(jī)之上,因此網(wǎng)絡(luò)安全是首先要考慮的問題。為了防止非授權(quán)用戶通過普通IP地址去訪問核心交換機(jī),筆者采取了雙網(wǎng)卡的網(wǎng)絡(luò)模塊方案,其中一塊網(wǎng)卡手動(dòng)指定為內(nèi)網(wǎng)網(wǎng)管IP地址,專門通過SNMP協(xié)議獲取交換機(jī)信息;另一塊網(wǎng)卡通過DHCP來獲取外網(wǎng)普通IP地址,負(fù)責(zé)把交換機(jī)信息回傳給網(wǎng)絡(luò)中心,這樣就把內(nèi)部網(wǎng)管信息與外部用戶信息隔離開來,實(shí)現(xiàn)了對(duì)核心交換機(jī)的安全訪問。系統(tǒng)采用ASIX的AX88796作為以太網(wǎng)控制器與處理接口,該芯片[2]具有低功耗、高興能、抗干擾能力強(qiáng)等特點(diǎn),具有一個(gè)10/100Mbs的自適應(yīng)PHY和8K 16bit的SRAM,可以減少CPU負(fù)擔(dān),提升系統(tǒng)穩(wěn)定性,加快數(shù)據(jù)的傳輸與處理速度。
關(guān)于網(wǎng)絡(luò)模塊的硬件連接示意圖3所示:
圖3 網(wǎng)絡(luò)模塊硬件連接示意圖
圖中S3C2440的片選信號(hào)nGCS3與nGCS4分別連接兩片AX88796,通過片選信號(hào)的高低電平變化決定要讀取的芯片。AX88796共有16根數(shù)據(jù)線和5根地址線,分別通過共享S3C2440的數(shù)據(jù)總線與地址總線完成數(shù)據(jù)讀取與寄存器讀取。兩片網(wǎng)絡(luò)芯片的發(fā)送接收連線分別接兩個(gè)RJ45接口完成對(duì)外的連接。
外圍接口模塊主要包括串口和USB接口。串口在本系統(tǒng)中用兩個(gè)用處,一是與交換機(jī)的console口連接,使系統(tǒng)可以通過帶外管理的方式進(jìn)行重啟交換機(jī)等操作,二是為GPRS模塊提供接口,使系統(tǒng)能把交換機(jī)信息發(fā)回網(wǎng)絡(luò)中心。USB接口用來連接各種USB設(shè)備,為系統(tǒng)的擴(kuò)展升級(jí)提供接口。因?yàn)镾3C2440本身就具有串行通信接口和USB接口,所以系統(tǒng)硬件按照規(guī)范進(jìn)行連接即可,其中RS232接口需要用專用芯片進(jìn)行一下電平轉(zhuǎn)換。
本系統(tǒng)中GPRS通信模塊的主要作用是在校園網(wǎng)絡(luò)癱瘓時(shí),把交換機(jī)故障信息通過外部無線網(wǎng)絡(luò)回傳到網(wǎng)絡(luò)中心,并通過這種方式進(jìn)行遠(yuǎn)程人工調(diào)試。市面上有很多GPRS通信模塊,筆者根據(jù)本課題的需求和過去的開發(fā)經(jīng)驗(yàn),選擇了MC52i模塊。該模塊[3]是Cinterion公司(原西門子)最新推出的工業(yè)級(jí) GPRS無線通信模塊,MC52i是雙波段(900MHZ/1800MHZ)的GPRS模塊,內(nèi)部帶有TCP/IP協(xié)議棧,目前廣泛運(yùn)用于智能公交、無線數(shù)傳(DTU)、遠(yuǎn)程無線抄表等系統(tǒng)應(yīng)用中,可在-40℃到+80℃的環(huán)境下正常工作,功耗低、可靠性高、性價(jià)比高。MC52i包括了 MC35i、MC39i、TC35i的所有功能,引腳和指令完全兼容MC55/MC56,采用AT命令集實(shí)現(xiàn)協(xié)議解析和通信連接。MC52i模塊支持以下Internet服務(wù):
(1)Socket Client and Server for TCP,Client for UDP
(2)FTP Client
(3)HTTP Client
(4)SMTP Client
(5)POP3 Client.
圖4 GPRS通信模塊硬件連接示意圖
關(guān)于MC52i模塊的硬件連接筆者直接參照了其Datasheet,需要注意的有兩點(diǎn),一是電源部分最好使用LDO供電,另一點(diǎn)是當(dāng)使用MC52i的網(wǎng)絡(luò)服務(wù)時(shí)需要把7根串口線都連接在CPU上,使信號(hào)傳輸更穩(wěn)定。
本課題研究的是一個(gè)典型的嵌入式系統(tǒng),根據(jù)嵌入式常用的劃分方法,筆者將系統(tǒng)軟件劃分為圖5中所示的幾個(gè)部分,由底層到高層分別是引導(dǎo)程序、內(nèi)核、設(shè)備驅(qū)動(dòng)、文件系統(tǒng)和應(yīng)用程序,其中應(yīng)用程序是本課題的研究重點(diǎn)。下面將依次介紹這幾個(gè)部分,并主要闡述應(yīng)用程序中的主程序、交換機(jī)監(jiān)控程序和交換機(jī)自檢程序。
圖5 系統(tǒng)軟件架構(gòu)圖
引導(dǎo)程序就是在操作系統(tǒng)內(nèi)核啟動(dòng)之前運(yùn)行的一段小程序。運(yùn)行這段小程序可以使硬件設(shè)備得到初始化、可以建立內(nèi)存空間映射圖,從而將系統(tǒng)的軟硬件環(huán)境帶到一個(gè)合適狀態(tài),以便為最終調(diào)用操作系統(tǒng)內(nèi)核準(zhǔn)備好正確的環(huán)境。在基于ARM內(nèi)核的嵌入式系統(tǒng)中[4],系統(tǒng)在上電或復(fù)位時(shí)通常都從地址0x00處開始執(zhí)行,而在這個(gè)地址處安排的通常就是系統(tǒng)的引導(dǎo)程序。本系統(tǒng)的引導(dǎo)程序采用UBoot修改而成,其移植方法已有較多資料,筆者這里就不再贅述。
在上一章節(jié),筆者選擇了ARM內(nèi)核的S3C2440芯片作為系統(tǒng)CPU,支持該芯片的實(shí)時(shí)操作系統(tǒng)包括 WinCE、VxWorks、Linux、pSOS等。經(jīng)過多方面考慮,筆者還是決定采用ARM+Linux的嵌入式解決方案。由于Linux的開源特性,使用它作為操作系統(tǒng)可以大大減少開發(fā)周期,減少開發(fā)量,而且可以保證驅(qū)動(dòng)、文件系統(tǒng)等程序的穩(wěn)定性和健壯性。為了減少硬件開支,筆者在Linux移植時(shí)對(duì)其內(nèi)核進(jìn)行了適當(dāng)?shù)募舨茫箖?nèi)核映像保持在1M左右。
在移植內(nèi)核后,為了實(shí)現(xiàn)系統(tǒng)功能,還需進(jìn)行相應(yīng)的設(shè)備驅(qū)動(dòng)移植和建立根文件系統(tǒng)。
本系統(tǒng)的軟件部分包括有主程序、交換機(jī)監(jiān)控程序和自管程序。其中主程序主要負(fù)責(zé)初始化端口、計(jì)時(shí)中斷和程序模塊調(diào)度等。主程序在設(shè)備啟動(dòng)后自運(yùn)行,首先初始化串口和網(wǎng)絡(luò),并開啟GPRS模塊,若網(wǎng)絡(luò)連通,則運(yùn)行交換機(jī)監(jiān)控程序,若內(nèi)外網(wǎng)絡(luò)均不通,則需要重新初始化網(wǎng)絡(luò),當(dāng)重試三次還失敗的話就通過GPRS模塊通知網(wǎng)絡(luò)中心;交換機(jī)監(jiān)控程序每隔10秒鐘運(yùn)行一次,直到發(fā)現(xiàn)交換機(jī)故障就運(yùn)行交換機(jī)自管程序,若交換機(jī)恢復(fù)正常則繼續(xù)監(jiān)控其狀態(tài),若未恢復(fù)則通知網(wǎng)絡(luò)中心,并把故障信息回傳。故障信息當(dāng)外網(wǎng)通信正常則通過外網(wǎng)傳輸,當(dāng)外網(wǎng)也不通時(shí)則通過GPRS模塊傳輸。主程序流程圖如下所示:
圖6 主程序流程圖
簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議(SNMP)是一種專門設(shè)計(jì)用于在IP網(wǎng)絡(luò)管理網(wǎng)絡(luò)節(jié)點(diǎn)的標(biāo)準(zhǔn)協(xié)議。它是一種應(yīng)用層協(xié)議,主要應(yīng)用于網(wǎng)絡(luò)設(shè)備的監(jiān)控管理和網(wǎng)絡(luò)設(shè)備規(guī)劃。支持SNMP協(xié)議的設(shè)備有很多,包括交換機(jī)、路由器、服務(wù)器、工作站和打印機(jī)等。一個(gè)標(biāo)準(zhǔn)的SNMP管理模型包括三個(gè)組件[5]:SNMP管理端,SNMP代理端和MIB庫(kù)。
交換機(jī)出現(xiàn)異常或死機(jī)主要是由CPU利用率過高、內(nèi)存利用率過高和端口錯(cuò)誤等情況引起的。因此,本程序就需要監(jiān)控交換機(jī)的CPU利用率、內(nèi)存利用率和端口狀態(tài)等,并根據(jù)監(jiān)控得到的數(shù)據(jù)來判斷交換機(jī)的工作狀態(tài)。監(jiān)控程序通過SNMP協(xié)議與交換機(jī)SNMP代理通信,根據(jù)相應(yīng)的節(jié)點(diǎn)OID值從交換機(jī)MIB庫(kù)中得到CPU利用率、內(nèi)存利用率和端口狀態(tài)等數(shù)據(jù)。
以思科4506系列交換機(jī)為例,本嵌入式系統(tǒng)所需MIB[6]節(jié)點(diǎn)OID值如表1所示:
表1 系統(tǒng)使用的MIB節(jié)點(diǎn)
當(dāng)系統(tǒng)發(fā)生計(jì)時(shí)器中斷時(shí),交換機(jī)監(jiān)控程序開始運(yùn)行。首先,程序?qū)?zhí)行中斷保護(hù),然后,為了得到交換機(jī)運(yùn)行狀態(tài)信息,程序會(huì)初始化一個(gè)SNMP-GET消息并建立一個(gè)SOCKET連接。在連接建立后,程序發(fā)送SNMP-GET消息,如果消息發(fā)送失敗,則關(guān)閉SOCKET并再次嘗試建立連接;如果連續(xù)三次嘗試都失敗了,將會(huì)跳轉(zhuǎn)到交換機(jī)自管程序。當(dāng)成功發(fā)送SNMP-GET消息并收到交換機(jī)SNMP代理發(fā)回的消息后,程序?qū)⑼ㄟ^讀取消息來獲得交換機(jī)的CPU利用率、內(nèi)存利用率等于其工作狀態(tài)相關(guān)的數(shù)據(jù),由此來判斷交換機(jī)的運(yùn)行狀態(tài)。如果交換機(jī)運(yùn)行良好,程序?qū)挠?jì)時(shí)中斷中返回主程序等待下一次計(jì)時(shí)中斷;如果交換機(jī)運(yùn)行故障,程序?qū)⑻D(zhuǎn)到交換機(jī)自管程序。交換機(jī)監(jiān)控程序流程圖如圖7所示。
通常,交換機(jī)遠(yuǎn)程控制室由人工通過帶內(nèi)網(wǎng)絡(luò)來實(shí)現(xiàn)的,但是這樣做有兩個(gè)問題,一個(gè)是交換機(jī)在出問題后可能不會(huì)即時(shí)恢復(fù),因?yàn)榫W(wǎng)絡(luò)中心人員不可能一直監(jiān)控交換機(jī),如果交換機(jī)死機(jī)時(shí)網(wǎng)絡(luò)中心沒有值班人員,那么這個(gè)故障就不會(huì)馬上得以解決;二是在交換機(jī)故障后,網(wǎng)絡(luò)中心工作人員就沒有辦法遠(yuǎn)程控制和獲知交換機(jī)狀態(tài)了。
為了解決這一問題,本系統(tǒng)選擇了帶外控制交換機(jī)并利用GPRS模塊來給網(wǎng)絡(luò)中心回傳信息。帶外控制就是指系統(tǒng)與目標(biāo)機(jī)器之間利用數(shù)據(jù)通道以外的方式進(jìn)行通信,本課題中帶外控制室系統(tǒng)通過RS232串口與交換機(jī)進(jìn)行通信。
當(dāng)交換機(jī)出現(xiàn)異?;蛩罊C(jī)時(shí),系統(tǒng)將調(diào)用交換機(jī)自管程序。程序首先測(cè)試串口的聯(lián)通性,如果串口不通,則初始化串口,當(dāng)初始化三次串口仍然不通時(shí),則通過GPRS模塊通知網(wǎng)絡(luò)中心。如果串口通信正常,則根據(jù)交換機(jī)狀態(tài)發(fā)送重啟命令或其他命令,接著,程序?qū)⑻D(zhuǎn)至交換機(jī)監(jiān)控程序繼續(xù)監(jiān)控交換機(jī)狀態(tài)。
圖7 交換機(jī)監(jiān)控程序流程圖
圖8 交換機(jī)自管程序流程圖
本嵌入式系統(tǒng)實(shí)現(xiàn)了對(duì)交換機(jī)的遠(yuǎn)程實(shí)時(shí)管控與故障自主恢復(fù),圖9為監(jiān)控系統(tǒng)的工作截圖:
圖9 監(jiān)控系統(tǒng)運(yùn)行截圖
表2為同一配線間的交換機(jī)在發(fā)生相同故障次數(shù)時(shí)的對(duì)比表格:
表2 交換機(jī)故障比較表
如表2所示,在相同的故障次數(shù)下,當(dāng)安裝了本嵌入式系統(tǒng)后,交換機(jī)的總故障時(shí)間減少了90%,人工手動(dòng)控制的次數(shù)減少到了兩次。
本嵌入式系統(tǒng)實(shí)現(xiàn)了遠(yuǎn)程實(shí)時(shí)監(jiān)控交換機(jī)和自動(dòng)恢復(fù)交換機(jī)死機(jī)或端口故障的功能,大大減少了交換機(jī)故障持續(xù)時(shí)間,減輕了網(wǎng)絡(luò)中心管理人員的負(fù)擔(dān)。對(duì)本系統(tǒng)進(jìn)行擴(kuò)展,一是進(jìn)一步開發(fā)系統(tǒng)的自我管理程序,增強(qiáng)交換機(jī)的智能化,提高其自我修復(fù)能力;二是擴(kuò)展系統(tǒng)的外圍接口,配合溫度、濕度傳感器和攝像頭,使系統(tǒng)實(shí)現(xiàn)對(duì)配線間環(huán)境的監(jiān)控。
[1]S3C2440A 32-Bit CMOS Microcontroller User’s Manual Rev1[OL].http://www.Samsungsemi.com,July,2004.
[2]ASIX Electronics.AX88796 datasheet V1.7[OL].ASIX Electronics Corporation,August,2007.
[3]SIEMENS.MC52i Hardware USER’S MANUAL[OL].August,2008.
[4]Master Lei.U-Boot’s analysis of the S3C2440 and transplantation[J].Computer Systems & Applications,2010,19(4),204-207.
[5]Liu Mingbo,Deng Zhongji.Research of ARM-based Embedded Operate System Transplantation[J].Application Computer System,11,2006,87-88.
[6]SNMP object Navigator[DB].http://tools.cisco.com/Support/SNMP/do/BrowseOID.do