交換機是局域網(wǎng)中用來交換、傳輸數(shù)據(jù)信息的樞紐,其工作狀態(tài)的好壞直接關(guān)聯(lián)著局域網(wǎng)網(wǎng)絡(luò)的數(shù)據(jù)傳輸穩(wěn)定性。特別是作為整個局域網(wǎng)中心的核心交換機,一旦出現(xiàn)問題,則意味著整個網(wǎng)絡(luò)癱瘓。因此,保障核心交換機的穩(wěn)定運行是網(wǎng)絡(luò)管理的一項重要工作。
實踐表明,核心交換機出現(xiàn)硬件故障的概率極少,但交換機在長時間工作過程中,很容易出現(xiàn)一些軟件故障,如死機、緩存溢出、交換機端口“假死”等情況,解決這類問題的簡單方法就是重啟機器。所以重啟交換機是網(wǎng)絡(luò)管理員經(jīng)常做的工作。而管理員的辦公地點有時距離交換機很遠,而且很多核心交換機沒有開關(guān),只能通過拔插電源的方法進行重啟,這種方法對機器會造成不良影響。通過超級終端與交換機連接,用命令進行重啟,也不太方便。
雖然遠程監(jiān)控已很普遍,但遠程監(jiān)控基于網(wǎng)絡(luò)和交換機端口,一旦網(wǎng)絡(luò)堵塞或交換機死機就無法實現(xiàn)信息的監(jiān)測和控制。而基于SNMP的嵌入式重啟裝置可以解決這一問題,它不需人工干預(yù),便可在特殊情況下自動實現(xiàn)對交換機的重啟工作。
1 設(shè)計思路
所設(shè)計的嵌入式系統(tǒng)應(yīng)具備:RJ-45口和RS-232接口,RJ-45口與交換機的一個Ethernet口相連,通過SNMP協(xié)議獲取交換機管理對象庫 MIB信息[1],檢測交換機是否正常;RS-232接口與交換機的Console口相連,通過帶外管理方式實現(xiàn)異常情況下對交換機重啟功能。
2 硬件實現(xiàn)
嵌入式裝置的硬件結(jié)構(gòu)框圖如圖1所示。
2.1微處理器選擇
傳統(tǒng)的8位/16位微控制器由于速度慢、功耗大,并且實現(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、獨立的16 KB數(shù)據(jù)Cache、16 KB指令Cache和高速AMBA(Advanced Microcon-troller Bus Architecture)總線接口等功能[2]。
2.2 網(wǎng)卡接口設(shè)計
該系統(tǒng)需要連接交換機以太網(wǎng)端口,通過SNMP協(xié)議獲取交換機管理對象庫MIB信息。系統(tǒng)采用DAVICOM公司的DM9000AEP作為以太網(wǎng)MAC控制器與處理接口。該器件具有10 Mb/s和100 Mb/s的自適應(yīng)物理層收發(fā)器,支持802.3x全雙工控制流標準,具有4 KB的雙字SRAM,可以減輕CPU的負擔,因此使系統(tǒng)更穩(wěn)定,處理和傳輸數(shù)據(jù)速度更快。RJ-45插座采用HanRun公司的內(nèi)置網(wǎng)絡(luò)變壓器、狀態(tài)顯示燈和電阻網(wǎng)絡(luò)的HR911105A,具有信號耦合、電氣隔離、阻抗匹配、抑制干擾等優(yōu)點。
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)用帶外管理方式對交換機實現(xiàn)重啟操作,需要RS-232接口與交換機Console口相連。ARM920T本身就具有串行通信接口,只需將TTL電平轉(zhuǎn)化為RS-232電平即可。Sipex公司的SP3232芯片可以實現(xiàn)這一功能,而且SP3232芯片所需的供電電壓低,適合嵌入式系統(tǒng)應(yīng)用,其外圍電路連接簡單,僅需幾個0.1 μF的電容即可。串口接口設(shè)計如圖3所示。圖3中TXD表示接收數(shù)據(jù),RXD表示發(fā)送數(shù)據(jù),RTS表示請求發(fā)送,CTS表示清除發(fā)送。當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實現(xiàn)位擴展,使數(shù)據(jù)總線寬度達到32 bit,總?cè)萘窟_到64 MB,將其地址空間映射在ARM920T的bank6;Flash存儲器有NOR和NAND兩種,用來存放Linux引導(dǎo)加載程序 (BootLoader)。NOR Flash的特點是芯片內(nèi)執(zhí)行(Execute In Place),即程序可直接在Flash閃存內(nèi)運行,不必把代碼讀到系統(tǒng)RAM中。NOR Flash的傳輸效率很高,在1~4 MB的小容量時具有很高的成本效益,但是很低的寫入和擦除速度大大影響了它的性能。NAND Flash結(jié)構(gòu)能提供極高的單元密度,可以達到高存儲密度,并且寫入和擦除的速度也很快,應(yīng)用NAND Flash的困難在于Flash的管理和需要特殊的系統(tǒng)接口。本系統(tǒng)采用Intel公司的NOR Flash 28F640芯片,其容量為8 MB,將其地址空間映射在ARM920T的bank0。
3 軟件實現(xiàn)
3.1操作系統(tǒng)
ARM芯片獲得了許多實時操作系統(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)核進行裁剪。本系統(tǒng)采用自行裁剪的方法,使用make menuconfig命令對Linux內(nèi)核進行配置,整個配置以維持系統(tǒng)運行的最小化為原則。需要注意的是內(nèi)核應(yīng)支持proc、ext2文件系統(tǒng)、 UNIX domain sockets、TCP/IP networking、UART等選項,以保證系統(tǒng)能實現(xiàn)RJ-45口和RS-232接口對外通信。實現(xiàn)這些功能的內(nèi)核靜態(tài)壓縮映像大約為500 KB[3]。為了實現(xiàn)系統(tǒng)功能,還需編寫相應(yīng)的網(wǎng)絡(luò)接口和串口驅(qū)動程序,建立根文件系統(tǒng)。[!--empirenews.page--]
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è)備開機后自動運行,在交換機上先配置一個VLAN接口用于與嵌入式設(shè)備通信。嵌入式設(shè)備的網(wǎng)絡(luò)接口IP地址應(yīng)與交換機的這個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對交換機發(fā)送1次SNMP報文,獲取交換機狀態(tài)進行分析,如連續(xù)3次(3 min)發(fā)現(xiàn)通信失敗或判定交換機狀態(tài)異常,則對交換機進行重啟。主程序流程圖如圖4所示。
3.4 交換機狀態(tài)監(jiān)測程序
簡單網(wǎng)絡(luò)管理協(xié)議(SNMP)是Internet組織用來管理Internet的網(wǎng)絡(luò)協(xié)議,其定義了傳送管理信息的協(xié)議消息格式及管理者和設(shè)備代理相互之間進行消息傳送的規(guī)程。在SNMP管理模型中有三個基本組成部分:管理者(Manager),被管代理(Agent)和管理信息庫(MIB)。管理者的管理工作是通過輪詢代理來完成的,管理者可以通過SNMP 操作直接與被管代理通信,獲得即時的設(shè)備信息,對網(wǎng)絡(luò)設(shè)備進行遠程配置管理或者操作,也可以通過對數(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é)點來訪問網(wǎng)絡(luò)中的設(shè)備。網(wǎng)絡(luò)管理者通過對MIB庫的存取訪問實現(xiàn)配置管理、性能管理、故障管理、安全管理、計費管理等五大管理功能。SNMP提供有三類操作:Get、Set和Trap。Get操作實現(xiàn)對被管理對象所表示的管理信息的讀操作,Set操作實現(xiàn)對被管理對象的管理信息進行寫操作,Trap 操作實現(xiàn)被管理設(shè)備向管理工作站報告設(shè)備出現(xiàn)的異常事件。
交換機狀態(tài)異常或死機的原因主要有:散熱不好致溫度過高;病毒攻擊;交換機背板帶寬過低;負荷過大等。交換機狀態(tài)異?;蛩罊C最終表現(xiàn)為:CPU利用率和內(nèi)存利用率過高、端口丟包率過大、與交換機端口連接不通等。因此,需要對交換機的CPU利用率、內(nèi)存利用率、端口丟包率等進行監(jiān)測,同時依據(jù)與交換機的 SNMP通信是否正常來判斷交換機是否出現(xiàn)異?;蛩罊C。本系統(tǒng)通過SNMP協(xié)議與交換機的SNMP被管代理通信,讀取(Get)相應(yīng)MIB節(jié)點數(shù)據(jù),獲知 CPU利用率、內(nèi)存利用率、端口丟包率等信息。
下面以華為3com公司的S7500系列交換機為例,說明本系統(tǒng)需要使用的MIB節(jié)點,如表1所示。
狀態(tài)監(jiān)測程序的流程圖如圖5所示。
3.5 交換機重啟程序
遠程監(jiān)控一般是通過網(wǎng)絡(luò)經(jīng)交換機以太網(wǎng)口對交換機實行控制,大多數(shù)情況下是可行的,但在交換機死機時,所有端口都不通,無法通過以太網(wǎng)口對交換機發(fā)送命令,對交換機實行帶內(nèi)管理。對這種特殊情況,帶外管理是唯一可行的方法。
帶外管理是通過RS232總線與交換機的Console口進行串行通信,給交換機下達命令。一般波特率為9 600 b/s,無流控,每幀包括8位數(shù)據(jù)、1位起始位、1位停止位共計10 bit,無奇偶校驗位。
需要注意的是,不同交換機要實現(xiàn)重啟,發(fā)送的指令字符可能不一樣,要根據(jù)具體交換機型號而定。以華為3com公司的S7500系列交換機為例,重啟程序的流程圖如圖6所示。
本嵌入式系統(tǒng)實現(xiàn)了在核心交換機死機等特殊情況下自動對其進行重啟的功能,大大減輕了網(wǎng)絡(luò)管理員的負擔。將本系統(tǒng)進行擴展,可以根據(jù)需要實現(xiàn)對交換機特定方面的本地監(jiān)測和控制功能。特別是該系統(tǒng)將來可以與核心交換機融為一體,有效增強核心交換設(shè)備的智能化和自我修復(fù)能力。