文獻(xiàn)標(biāo)識碼: A
文章編號: 0258-7998(2010)10-0141-04
交換機(jī)是局域網(wǎng)中用來交換,、傳輸數(shù)據(jù)信息的樞紐,其工作狀態(tài)的好壞直接關(guān)聯(lián)著局域網(wǎng)網(wǎng)絡(luò)的數(shù)據(jù)傳輸穩(wěn)定性。特別是作為整個局域網(wǎng)中心的核心交換機(jī),,一旦出現(xiàn)問題,,則意味著整個網(wǎng)絡(luò)癱瘓。因此,,保障核心交換機(jī)的穩(wěn)定運(yùn)行是網(wǎng)絡(luò)管理的一項重要工作,。
實(shí)踐表明,核心交換機(jī)出現(xiàn)硬件故障的概率極少,,但交換機(jī)在長時間工作過程中,,很容易出現(xiàn)一些軟件故障,如死機(jī),、緩存溢出,、交換機(jī)端口“假死”等情況,解決這類問題的簡單方法就是重啟機(jī)器,。所以重啟交換機(jī)是網(wǎng)絡(luò)管理員經(jīng)常做的工作,。而管理員的辦公地點(diǎn)有時距離交換機(jī)很遠(yuǎn),而且很多核心交換機(jī)沒有開關(guān),,只能通過拔插電源的方法進(jìn)行重啟,,這種方法對機(jī)器會造成不良影響。通過超級終端與交換機(jī)連接,用命令進(jìn)行重啟,,也不太方便,。
雖然遠(yuǎn)程監(jiān)控已很普遍,但遠(yuǎn)程監(jiān)控基于網(wǎng)絡(luò)和交換機(jī)端口,,一旦網(wǎng)絡(luò)堵塞或交換機(jī)死機(jī)就無法實(shí)現(xiàn)信息的監(jiān)測和控制,。而基于SNMP的嵌入式重啟裝置可以解決這一問題,它不需人工干預(yù),,便可在特殊情況下自動實(shí)現(xiàn)對交換機(jī)的重啟工作,。
1 設(shè)計思路
所設(shè)計的嵌入式系統(tǒng)應(yīng)具備:RJ-45口和RS-232接口,RJ-45口與交換機(jī)的一個Ethernet口相連,,通過SNMP協(xié)議獲取交換機(jī)管理對象庫MIB信息[1],,檢測交換機(jī)是否正常;RS-232接口與交換機(jī)的Console口相連,,通過帶外管理方式實(shí)現(xiàn)異常情況下對交換機(jī)重啟功能,。
2 硬件實(shí)現(xiàn)
嵌入式裝置的硬件結(jié)構(gòu)框圖如圖1所示。
2.1微處理器選擇
傳統(tǒng)的8位/16位微控制器由于速度慢,、功耗大,,并且實(shí)現(xiàn)網(wǎng)絡(luò)協(xié)議困難,已越來越不能滿足高速發(fā)展的網(wǎng)絡(luò)管理需要,,隨著ARM(Advanced RISC Machine)RISC處理器的不斷成熟和嵌入式Linux的不斷完善,ARM+Linux嵌入式解決方案日益流行,因此,,本系統(tǒng)微處理器選用ARM920T,。ARM920T具有5級指令流水線,采用哈佛結(jié)構(gòu),具有16/32位RISC體系結(jié)構(gòu)和ARM指令集,,處理速度為1.1 MIPS/MHz,內(nèi)置MMU,、獨(dú)立的16 KB數(shù)據(jù)Cache、16 KB指令Cache和高速AMBA(Advanced Microcon-troller Bus Architecture)總線接口等功能[2],。
2.2 網(wǎng)卡接口設(shè)計
該系統(tǒng)需要連接交換機(jī)以太網(wǎng)端口,,通過SNMP協(xié)議獲取交換機(jī)管理對象庫MIB信息。系統(tǒng)采用DAVICOM公司的DM9000AEP作為以太網(wǎng)MAC控制器與處理接口,。該器件具有10 Mb/s和100 Mb/s的自適應(yīng)物理層收發(fā)器,,支持802.3x全雙工控制流標(biāo)準(zhǔn),具有4 KB的雙字SRAM,,可以減輕CPU的負(fù)擔(dān),,因此使系統(tǒng)更穩(wěn)定,處理和傳輸數(shù)據(jù)速度更快,。RJ-45插座采用HanRun公司的內(nèi)置網(wǎng)絡(luò)變壓器,、狀態(tài)顯示燈和電阻網(wǎng)絡(luò)的HR911105A,具有信號耦合,、電氣隔離,、阻抗匹配、抑制干擾等優(yōu)點(diǎn),。
ARM920T網(wǎng)絡(luò)接口設(shè)計電路如圖2所示,。DM9000AEP芯片的SD0~SD15為16根數(shù)據(jù)線,與ARM920T數(shù)據(jù)線相連;命令選擇引腳CMD為高電平,,訪問數(shù)據(jù)端口,,CMD為低電平,訪問地址端口;IOR#為讀信號引腳,,與ARM920T的讀信號LnOE引腳相連,;IOW#為寫信號引腳,與ARM920T的寫信號LnWE引腳相連,;CS#為片選信號,,與ARM920T的片選信號nGCS3引腳相連;INT為中斷請求信號,高電平有效,,與ARM920T的IRQ-LAN相連;發(fā)送端TX+,、TX-和接收端RX+,、RX-分別連接到HR911105A的發(fā)送端和接收端。
2.3 串口接口設(shè)計
該系統(tǒng)用帶外管理方式對交換機(jī)實(shí)現(xiàn)重啟操作,,需要RS-232接口與交換機(jī)Console口相連,。ARM920T本身就具有串行通信接口,,只需將TTL電平轉(zhuǎn)化為RS-232電平即可。Sipex公司的SP3232芯片可以實(shí)現(xiàn)這一功能,而且SP3232芯片所需的供電電壓低,,適合嵌入式系統(tǒng)應(yīng)用,,其外圍電路連接簡單,僅需幾個0.1 μF的電容即可,。串口接口設(shè)計如圖3所示,。圖3中TXD表示接收數(shù)據(jù),RXD表示發(fā)送數(shù)據(jù),,RTS表示請求發(fā)送,,CTS表示清除發(fā)送。當(dāng)RTS請求發(fā)送數(shù)據(jù)時,,需經(jīng)CTS信號檢測,,只有CTS信號允許才能發(fā)送數(shù)據(jù)。
2.4 存儲器設(shè)計
存儲器由SDRAM和Flash構(gòu)成,。SDRAM存儲器用來存放操作系統(tǒng)(從Flash解壓縮拷入)以及存放各類動態(tài)數(shù)據(jù),。設(shè)計中系統(tǒng)采用SAMSUNG公司的K4S561632,容量為32 MB,。用2片K4S561632實(shí)現(xiàn)位擴(kuò)展,,使數(shù)據(jù)總線寬度達(dá)到32 bit,總?cè)萘窟_(dá)到64 MB,將其地址空間映射在ARM920T的bank6;Flash存儲器有NOR和NAND兩種,用來存放Linux引導(dǎo)加載程序(BootLoader),。NOR Flash的特點(diǎn)是芯片內(nèi)執(zhí)行(Execute In Place),,即程序可直接在Flash閃存內(nèi)運(yùn)行,不必把代碼讀到系統(tǒng)RAM中,。NOR Flash的傳輸效率很高,,在1~4 MB的小容量時具有很高的成本效益,但是很低的寫入和擦除速度大大影響了它的性能,。NAND Flash結(jié)構(gòu)能提供極高的單元密度,,可以達(dá)到高存儲密度,并且寫入和擦除的速度也很快,,應(yīng)用NAND Flash的困難在于Flash的管理和需要特殊的系統(tǒng)接口,。本系統(tǒng)采用Intel公司的NOR Flash 28F640芯片,其容量為8 MB,將其地址空間映射在ARM920T的bank0。
3 軟件實(shí)現(xiàn)
3.1操作系統(tǒng)
ARM芯片獲得了許多實(shí)時操作系統(tǒng)供應(yīng)商的支持,有:Windows CE,、Linux,、Palm OS、VxWorks,、pSOS,、 Nucleus等。因Linux源代碼的公開特性,,Linux系統(tǒng)的應(yīng)用越來越廣泛,。將Linux應(yīng)用于ARM芯片,,可以采用一些現(xiàn)成的針對ARM芯片的嵌入式Linux系統(tǒng),也可根據(jù)需要自行對Linux內(nèi)核進(jìn)行裁剪,。本系統(tǒng)采用自行裁剪的方法,,使用make menuconfig命令對Linux內(nèi)核進(jìn)行配置,整個配置以維持系統(tǒng)運(yùn)行的最小化為原則,。需要注意的是內(nèi)核應(yīng)支持proc,、ext2文件系統(tǒng)、UNIX domain sockets,、TCP/IP networking,、UART等選項,以保證系統(tǒng)能實(shí)現(xiàn)RJ-45口和RS-232接口對外通信。實(shí)現(xiàn)這些功能的內(nèi)核靜態(tài)壓縮映像大約為500 KB[3],。為了實(shí)現(xiàn)系統(tǒng)功能,,還需編寫相應(yīng)的網(wǎng)絡(luò)接口和串口驅(qū)動程序,建立根文件系統(tǒng),。
3.2 引導(dǎo)加載程序
操作系統(tǒng)的啟動離不開引導(dǎo)程序,,Linux引導(dǎo)加載程序(BootLoader)由NOR Flash的地址0x0處開始執(zhí)行,完成存儲設(shè)備初始化,、堆棧初始化,、用戶環(huán)境初始化等,最終BootLoader把操作系統(tǒng)內(nèi)核映像加載到RAM中,。本系統(tǒng)引導(dǎo)加載程序采用ARM-BOOT修改而成,。
3.3主程序
主程序每次在設(shè)備開機(jī)后自動運(yùn)行,在交換機(jī)上先配置一個VLAN接口用于與嵌入式設(shè)備通信,。嵌入式設(shè)備的網(wǎng)絡(luò)接口IP地址應(yīng)與交換機(jī)的這個VLAN接口IP處于同一網(wǎng)段,。為避免與常用私網(wǎng)地址沖突,可以將VLAN接口IP設(shè)為192.168.255.1,,將嵌入式設(shè)備的網(wǎng)絡(luò)接口IP地址設(shè)為192.168.255.2,。定時器時間設(shè)為1 min,每隔1 min對交換機(jī)發(fā)送1次SNMP報文,,獲取交換機(jī)狀態(tài)進(jìn)行分析,,如連續(xù)3次(3 min)發(fā)現(xiàn)通信失敗或判定交換機(jī)狀態(tài)異常,則對交換機(jī)進(jìn)行重啟,。主程序流程圖如圖4所示,。
3.4 交換機(jī)狀態(tài)監(jiān)測程序
簡單網(wǎng)絡(luò)管理協(xié)議(SNMP)是Internet組織用來管理Internet的網(wǎng)絡(luò)協(xié)議,其定義了傳送管理信息的協(xié)議消息格式及管理者和設(shè)備代理相互之間進(jìn)行消息傳送的規(guī)程,。在SNMP管理模型中有三個基本組成部分:管理者(Manager),,被管代理(Agent)和管理信息庫(MIB)。管理者的管理工作是通過輪詢代理來完成的,管理者可以通過SNMP 操作直接與被管代理通信,獲得即時的設(shè)備信息,,對網(wǎng)絡(luò)設(shè)備進(jìn)行遠(yuǎn)程配置管理或者操作,,也可以通過對數(shù)據(jù)庫的訪問獲得網(wǎng)絡(luò)設(shè)備的歷史信息,以決定網(wǎng)絡(luò)配置變化等操作,。SNMP被管代理是指用于跟蹤監(jiān)測被管理設(shè)備狀態(tài)的特殊軟件或硬件,,每個代理都擁有自己本地的MIB。MIB信息即被管資源,,而網(wǎng)絡(luò)管理中的資源是以對象表示的,,每個對象表示被管資源的某方面屬性,這些對象形成了MIB庫。MIB是一個樹形結(jié)構(gòu),,SNMP協(xié)議消息通過遍歷MIB樹形目錄中的節(jié)點(diǎn)來訪問網(wǎng)絡(luò)中的設(shè)備,。網(wǎng)絡(luò)管理者通過對MIB庫的存取訪問實(shí)現(xiàn)配置管理、性能管理,、故障管理,、安全管理、計費(fèi)管理等五大管理功能,。SNMP提供有三類操作:Get,、Set和Trap。Get操作實(shí)現(xiàn)對被管理對象所表示的管理信息的讀操作,,Set操作實(shí)現(xiàn)對被管理對象的管理信息進(jìn)行寫操作,,Trap 操作實(shí)現(xiàn)被管理設(shè)備向管理工作站報告設(shè)備出現(xiàn)的異常事件。
交換機(jī)狀態(tài)異?;蛩罊C(jī)的原因主要有:散熱不好致溫度過高,;病毒攻擊;交換機(jī)背板帶寬過低,;負(fù)荷過大等,。交換機(jī)狀態(tài)異常或死機(jī)最終表現(xiàn)為:CPU利用率和內(nèi)存利用率過高,、端口丟包率過大,、與交換機(jī)端口連接不通等。因此,,需要對交換機(jī)的CPU利用率,、內(nèi)存利用率、端口丟包率等進(jìn)行監(jiān)測,,同時依據(jù)與交換機(jī)的SNMP通信是否正常來判斷交換機(jī)是否出現(xiàn)異?;蛩罊C(jī)。本系統(tǒng)通過SNMP協(xié)議與交換機(jī)的SNMP被管代理通信,,讀取(Get)相應(yīng)MIB節(jié)點(diǎn)數(shù)據(jù),,獲知CPU利用率、內(nèi)存利用率,、端口丟包率等信息,。
下面以華為3com公司的S7500系列交換機(jī)為例,,說明本系統(tǒng)需要使用的MIB節(jié)點(diǎn),如表1所示。
狀態(tài)監(jiān)測程序的流程圖如圖5所示,。
3.5 交換機(jī)重啟程序
遠(yuǎn)程監(jiān)控一般是通過網(wǎng)絡(luò)經(jīng)交換機(jī)以太網(wǎng)口對交換機(jī)實(shí)行控制,,大多數(shù)情況下是可行的,但在交換機(jī)死機(jī)時,,所有端口都不通,,無法通過以太網(wǎng)口對交換機(jī)發(fā)送命令,對交換機(jī)實(shí)行帶內(nèi)管理,。對這種特殊情況,,帶外管理是唯一可行的方法。
帶外管理是通過RS232總線與交換機(jī)的Console口進(jìn)行串行通信,給交換機(jī)下達(dá)命令,。一般波特率為9 600 b/s,,無流控,每幀包括8位數(shù)據(jù),、1位起始位,、1位停止位共計10 bit,無奇偶校驗位,。
需要注意的是,,不同交換機(jī)要實(shí)現(xiàn)重啟,發(fā)送的指令字符可能不一樣,,要根據(jù)具體交換機(jī)型號而定,。以華為3com公司的S7500系列交換機(jī)為例,重啟程序的流程圖如圖6所示,。
本嵌入式系統(tǒng)實(shí)現(xiàn)了在核心交換機(jī)死機(jī)等特殊情況下自動對其進(jìn)行重啟的功能,,大大減輕了網(wǎng)絡(luò)管理員的負(fù)擔(dān)。將本系統(tǒng)進(jìn)行擴(kuò)展,,可以根據(jù)需要實(shí)現(xiàn)對交換機(jī)特定方面的本地監(jiān)測和控制功能,。特別是該系統(tǒng)將來可以與核心交換機(jī)融為一體,有效增強(qiáng)核心交換設(shè)備的智能化和自我修復(fù)能力,。
參考文獻(xiàn)
[1] MCCLOGHRIE K, ROSE M. Management information base for network management of TCP/IP-based internets [DB/OL] [M]. http://www.rfc-editor.org/rfc/rfc1066.txt; August 1988.
[2] 曲鵬,,嚴(yán)勝剛,李博丞.基于嵌入式Web服務(wù)器的智能家居主控制系統(tǒng)[J/OL].http://www.21ic.com/app/embed/200907/45684.htm. 2009-07-30.
[3] 劉振海.基于軟盤的Linux系統(tǒng)的制作[J].微計算機(jī)應(yīng)用,2004,25(6):700-710.