摘要:提出一個(gè)基于Java的網(wǎng)元管理系統(tǒng),首先對網(wǎng)管系統(tǒng)進(jìn)行功能分析和結(jié)構(gòu)設(shè)計(jì),然后以此為基礎(chǔ),最后給出了網(wǎng)管系統(tǒng)的實(shí)現(xiàn)方法。
關(guān)鍵詞:Java;網(wǎng)絡(luò)管理;TWaver;SNMP
中圖分類號:TP315 文獻(xiàn)標(biāo)識(shí)碼:A文章編號:1009-3044(2009)36-10622-02
The Design and Implementation of a Network Element Management System Based on Java Platform
XU Ming-yang, LV Hong-wei, WEI Shuai
(China Electronics Technology Group Corporation No.34th Research Institute, Guilin 541004, China)
Abstract: A Java based network management system is proposed in this paper. Function and design of the system are discussed. And then model of the system is provided. The implementation of this system is also given at the end.
Key words: Java; network management; TWaver; SNMP
網(wǎng)絡(luò)管理的現(xiàn)狀是它的發(fā)展在很大程度上滯后于網(wǎng)絡(luò)規(guī)模的發(fā)展,而網(wǎng)絡(luò)的動(dòng)態(tài)性能的提高主要是通過網(wǎng)絡(luò)管理系統(tǒng)加以實(shí)現(xiàn),因網(wǎng)絡(luò)管理不善而導(dǎo)致的網(wǎng)上信息擁塞、網(wǎng)絡(luò)不通,已影響到電信網(wǎng)絡(luò)的應(yīng)用性能。網(wǎng)絡(luò)管理的自動(dòng)化和智能化,己成為網(wǎng)絡(luò)管理亟待解決的問題之一。
Java,尤其是J2EE技術(shù),在網(wǎng)絡(luò)管理系統(tǒng)中的應(yīng)用已經(jīng)比較普遍。很多公司都將自己的新一代網(wǎng)絡(luò)管理產(chǎn)品構(gòu)建在J2EE技術(shù)平臺(tái)之上,以便實(shí)現(xiàn)大型網(wǎng)絡(luò)管理系統(tǒng)的分布式架構(gòu)。
1 系統(tǒng)功能分析與設(shè)計(jì)
1.1 系統(tǒng)功能分析
該系統(tǒng)主要功能是識(shí)別、控制、管理網(wǎng)元,提高網(wǎng)元的工作效率,并為管理員提供一個(gè)友好的人機(jī)界面,以便管理員能方便地檢測網(wǎng)元的狀態(tài),據(jù)此,本系統(tǒng)主要提供了配置管理、性能管理和告警管理三個(gè)方面的管理功能。
配置管理:配置管理涉及網(wǎng)絡(luò)的實(shí)際物理安排,主要實(shí)施對網(wǎng)元的識(shí)別、檢測、控制和數(shù)據(jù)交換,建立和修改網(wǎng)絡(luò)拓?fù)鋱D,增加、刪除網(wǎng)元,獲取網(wǎng)元參數(shù)信息和對網(wǎng)元配置的相關(guān)數(shù)據(jù)進(jìn)行修改,并記錄有關(guān)的操作,建立操作日志,以便管理人員管理和維護(hù)。
性能管理:實(shí)時(shí)監(jiān)視各網(wǎng)元設(shè)備的性能,完成收集設(shè)備實(shí)際運(yùn)行的質(zhì)量數(shù)據(jù),為管理人員提供評價(jià)、分析、預(yù)測系統(tǒng)性能的手段。包括性能監(jiān)視歷史記錄和告警門限兩部分,管理員據(jù)此可判斷系統(tǒng)或網(wǎng)元的目前工作狀態(tài)和趨勢分析。
告警管理:對網(wǎng)絡(luò)中網(wǎng)元設(shè)備的異常運(yùn)行情況進(jìn)行監(jiān)控,完成對告警的監(jiān)視、報(bào)告以及故障的診斷、定位和處理等任務(wù),同時(shí)在GUI(Graphics User Interface,圖形用戶界面)上給出告警顯示。對歷史告警信息進(jìn)行查詢和刪除。
1.2 系統(tǒng)設(shè)計(jì)
為了實(shí)現(xiàn)2.1小節(jié)所描述的功能,適應(yīng)網(wǎng)絡(luò)管理的層次化要求和分布式的管理要求,本系統(tǒng)采用了GUI-Manager-Agent結(jié)構(gòu),該結(jié)構(gòu)提供了分布式環(huán)境下的系統(tǒng)管理方法,支持多個(gè)Agent連接,如圖2所示,該網(wǎng)絡(luò)管理系統(tǒng)主要包含三個(gè)部分:
GUI:提供圖形化的界面呈現(xiàn)網(wǎng)絡(luò)拓?fù)浜途W(wǎng)元設(shè)備的運(yùn)行狀態(tài)、配置信息等,直接與管理員進(jìn)行交互,管理員通過鍵盤、鼠標(biāo)等FCAPS模塊的各種功能入口對網(wǎng)管進(jìn)行操作。
Manager:負(fù)責(zé)與GUI與Agent之間的通信,對數(shù)據(jù)進(jìn)行處理、實(shí)時(shí)轉(zhuǎn)發(fā),并把拓?fù)湫畔?、告警信息、配置信息等存入?shù)據(jù)庫,方便GUI調(diào)用。
Agent:是嵌入被管網(wǎng)元設(shè)備中的代理,收集、處理網(wǎng)元中的性能、告警/故障和狀態(tài)數(shù)據(jù),接收和響應(yīng)從Manager來的與網(wǎng)元有關(guān)的各種命令,進(jìn)而操作網(wǎng)元設(shè)備。
管理員通過用戶管理平臺(tái)實(shí)現(xiàn)對網(wǎng)元設(shè)備的遠(yuǎn)程管理,用戶管理平臺(tái)與被管網(wǎng)元之間通過網(wǎng)絡(luò)進(jìn)行通訊。GUI與Manager之間采用標(biāo)準(zhǔn)TCP/IP進(jìn)行通信,Manager與Agent之間采用SNMP(Simple Network Management Protocol,簡單網(wǎng)絡(luò)管理協(xié)議)進(jìn)行通信[4]。
2 系統(tǒng)實(shí)現(xiàn)
2.1 上層網(wǎng)管實(shí)現(xiàn)
上層網(wǎng)管是安裝在用戶管理平臺(tái)(PC)供管理員操作的管理程序,全部有java實(shí)現(xiàn)。它分為兩大功能模塊:1) GUI 模塊:提供直觀、友好的GUI 操作界面,以圖形化的形式顯示網(wǎng)元設(shè)備并響應(yīng)用戶的操作,便于管理員監(jiān)測、操作被管網(wǎng)元設(shè)備,力求做到所見即所得的操作效果。2) Manager模塊:負(fù)責(zé)與Agent 通訊,通過網(wǎng)絡(luò)訪問Agent 中的MIB 信息保存到本地?cái)?shù)據(jù)庫中,并將管理網(wǎng)元的操作通過網(wǎng)絡(luò)發(fā)送給Agent。
GUI的核心是網(wǎng)絡(luò)拓?fù)洹>W(wǎng)元是網(wǎng)管系統(tǒng)的被管對象,網(wǎng)管系統(tǒng)需要用最直觀的方式呈現(xiàn)網(wǎng)元的拓?fù)浣Y(jié)構(gòu)、運(yùn)行狀態(tài)、配置信息等。客戶端的各種功能一般以網(wǎng)絡(luò)拓?fù)鋱D為核心進(jìn)行展開,用戶通過菜單、鼠標(biāo)等提供FCAPS模塊的各種功能入口,來進(jìn)行操作。面對復(fù)雜的網(wǎng)絡(luò)結(jié)構(gòu)和大量網(wǎng)絡(luò)運(yùn)行信息,用圖形化的界面來呈現(xiàn)和操作網(wǎng)絡(luò)無疑是最直觀、方便的方式。
本網(wǎng)管系統(tǒng)GUI采用SERVA Software公司的TWaver圖形組件來實(shí)現(xiàn)[3]。基于MVC的架構(gòu)設(shè)計(jì)的開發(fā)工具TWaver是一套Java 2 平臺(tái)的Java Swing圖形界面組件,其設(shè)計(jì)的目標(biāo)非常明確,就是用于電信網(wǎng)管界面的開發(fā)。只要把將創(chuàng)建的各種電信網(wǎng)絡(luò)圖形對象(例如各種節(jié)點(diǎn)、網(wǎng)元、設(shè)備、連接等),直接放置在一個(gè)內(nèi)存數(shù)據(jù)容器類中(稱為DATABOX),而各種用于顯示數(shù)據(jù)的圖形組件(例如樹圖、屬性表格、告警等)直接與此容器連接即可。
有了以上基本概念,使用TWaver就比較容易了。其基本過程是:
1) 創(chuàng)建數(shù)據(jù)容器;
2) 創(chuàng)建各種視圖(地圖/樹圖),并與容器連接;
3) 創(chuàng)建各種網(wǎng)絡(luò)對象并設(shè)置其屬性,并放入容器中;
4) 動(dòng)態(tài)更改對象的各種屬性,實(shí)現(xiàn)數(shù)據(jù)的實(shí)時(shí)更新;
下面就是創(chuàng)建一個(gè)簡單GUI的演示代碼。首先創(chuàng)建一個(gè)簡單的界面,它由中間的拓?fù)鋱D、左邊的樹視圖、右面的屬性表以及下面的告警表組成。他們分別對應(yīng)于TWaver的TNetwork控件、TTree控件、TPropertySheet控件以及TAlarmTable控件。同時(shí),他們共享一個(gè)統(tǒng)一的數(shù)據(jù)容器TDataBox。
private TDataBox box = new TDataBox(\"NEManager\"); //創(chuàng)建數(shù)據(jù)容器
private TNetwork network = new TNetwork(box); //創(chuàng)建拓?fù)鋱D
private TTree tree = new TTree(box); //創(chuàng)建樹視圖
private TPropertySheet sheet =new TPropertySheet(new TPropertySheetModel(network));
//創(chuàng)建屬性表
private TAlarmTable alarmTable=new TAlarmTable(box);//創(chuàng)建告警表
private TTableNavigator navigator=new TTableNavigator(alarmTable.getTableModel(), new int[] {10, 30, 50, 0 }, true); //創(chuàng)建告警表導(dǎo)航
//以上代碼創(chuàng)建了一個(gè)界面,顯示了一幅空的拓?fù)鋱D,下面對網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行初始化
Node server = new Node(); //創(chuàng)建一個(gè)node對象
server.setImage(\"/GUI/res/server.png \"); //指定圖片
server.setLocation(60, 100); //設(shè)置其X、Y坐標(biāo)
server.setName(\"SERVER\"); //設(shè)置節(jié)點(diǎn)顯示名稱
box.addElement(server); //將節(jié)點(diǎn)放入容器
for (int i = 0; i < 10; i++) {//圍繞服務(wù)器創(chuàng)建n個(gè)節(jié)點(diǎn),并通過一條link與服務(wù)器相連
Node node = new Node (\"node \"+i); //創(chuàng)建一個(gè)普通節(jié)點(diǎn)并設(shè)置其位置
node.setName(\"node \"+i);
node.setImage(\"/GUI/res/computer.png\"); //指定圖片
int x = 20 + server.getLocation().x +(int) (70 * Math.cos(2 * Math.PI / 10 * i));
int y = server.getLocation().y +(int) (100 * Math.sin(2 * Math.PI / 10 * i));
node.setLocation(x, y); //設(shè)置其X、Y坐標(biāo)
box.addElement(node); //將節(jié)點(diǎn)放入容器
Link link=new Link(node, server); //創(chuàng)建一條link并讓它連接到云圖
box.addElement(link);
}
此時(shí)運(yùn)行程序,將界面顯示如圖3。
如上圖可以看到,拓?fù)鋱D上的網(wǎng)元按照我們設(shè)定的位置顯示了出來,可以通過鼠標(biāo)進(jìn)行選擇、拖拽等操作。同時(shí),樹圖上也顯示了網(wǎng)元之間的層次關(guān)系,屬性表則顯示了當(dāng)前選中的對象的屬性集合,告警表則顯示當(dāng)前所有的告警信息。
2.2 代理實(shí)現(xiàn)
Agent是一種特殊的軟件,它包含了關(guān)于一個(gè)特殊設(shè)備或該設(shè)備所處環(huán)境的信息。當(dāng)一個(gè)Agent被安裝到一個(gè)設(shè)備上時(shí),上述的設(shè)備就被列為“ 被管理的”。換句話說,Agent就是一個(gè)數(shù)據(jù)庫。簡言之,Agent是在通信網(wǎng)絡(luò)中被管理的對象,即網(wǎng)絡(luò)設(shè)備,它是駐留于網(wǎng)絡(luò)被管理設(shè)備中的處理實(shí)體,每個(gè)代理擁有自己的本地MIB。
事實(shí)上,SNMP協(xié)議的管理任務(wù)是移交給代理來執(zhí)行的,代理直接與相應(yīng)的功能實(shí)體通信并執(zhí)行信息處理任務(wù),其主要任務(wù)是訪問相關(guān)模塊數(shù)據(jù),發(fā)布控制信息,有兩種消息由代理提供:GetReponse和Trap。代理翻譯來自管理者的請求,驗(yàn)證操作的可行性、執(zhí)行命令并發(fā)出合適的響應(yīng)。SNMP Agent軟件與Manager之間采用UDP進(jìn)行通信。Agent是嵌入被管網(wǎng)元設(shè)備內(nèi)的代理,和被管網(wǎng)元設(shè)備的其他軟件之間采用緊耦合方式進(jìn)行通信,可共享全局變量或者調(diào)用其他模塊的函數(shù),它負(fù)責(zé)收集、保存網(wǎng)元的相關(guān)信息,并為Manager提供訪問接口。Manager通過訪問被管網(wǎng)元設(shè)備的MIB樹來獲取網(wǎng)元信息,并把GUI對網(wǎng)元設(shè)備的操作命令也提交給Agent,然后由Agent進(jìn)行過濾、解析,進(jìn)而操作網(wǎng)元設(shè)備。
3 結(jié)束語
本系統(tǒng)的功能完善,把所有的網(wǎng)元設(shè)備(數(shù)量可成百上千)呈現(xiàn)在GUI的拓?fù)湟晥D中,管理員可以很容易的用圖形化的方式配置、管理和維護(hù)網(wǎng)絡(luò)中的設(shè)備,能夠詳細(xì)、全面地掌握網(wǎng)絡(luò)的狀態(tài),大大提高了管理的效率和服務(wù)質(zhì)量,達(dá)到最初的設(shè)計(jì)目標(biāo)。
參考文獻(xiàn):
[1] 岑賢道,安常青.網(wǎng)絡(luò)管理協(xié)議及應(yīng)用開發(fā)[M].北京:清華大學(xué)出版社,1998.
[2] 韋樂平.SDH及其新應(yīng)用[M].北京:人民郵電出版社,1998:170-184.
[3] SERVA Software.TWaverTM Swing Components Developer Guide Version 2.0[S].2008:10-260.
[4] 唐寶民,張穎.電信網(wǎng)監(jiān)控和管理計(jì)數(shù)[M].北京:人民郵電出版社,2006:138-168.