李興春
(1.重慶文理學(xué)院 教務(wù)處,重慶 永川 402160;2.重慶大學(xué) 計算機(jī)學(xué)院,重慶 沙坪壩 400030)
網(wǎng)絡(luò)管理工具已經(jīng)變成了近來網(wǎng)絡(luò)以及系統(tǒng)管理者必備的工具.在Web-Based的網(wǎng)絡(luò)管理系統(tǒng)的設(shè)計與實現(xiàn)上[1-2],Java程序語言扮演著一個十分重要的角色.Java是個平臺中立的程序語言,在任何支持Java虛擬機(jī)器的平臺都能執(zhí)行,具有高度的可移植性.Java能讓瀏覽器可以執(zhí)行網(wǎng)絡(luò)管理的應(yīng)用程序,對于實現(xiàn) Web-Based的網(wǎng)絡(luò)管理系統(tǒng)而言,是一個強(qiáng)而有力的技術(shù)[3-5].因此,目前設(shè)計 Web-Based網(wǎng)絡(luò)管理系統(tǒng)的主流趨勢便是以 Java作為系統(tǒng)組成的核心.
本文目的在于發(fā)展一套針對 Web-Based網(wǎng)絡(luò)管理系統(tǒng)需要的 Java高級類別函數(shù)庫(Class Library).在這套類別函數(shù)庫(Class Library)中,將包含多種網(wǎng)絡(luò)管理的高級功能,比如:網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)的搜尋(Network Topology Discovery)、網(wǎng)絡(luò)效能的監(jiān)測(Network Performance Monitor),等等.另一方面,網(wǎng)絡(luò)管理系統(tǒng)的程序設(shè)計者也不必花費許多的心力開發(fā)這些網(wǎng)絡(luò)管理功能的程序,而可以直接地利用這套類別函數(shù)庫(Class Library)中所發(fā)展出來的各式高級網(wǎng)絡(luò)管理類別,可以更專注于系統(tǒng)的整合與使用者接口的設(shè)計.換句話說,這套類別函數(shù)庫希望提供許多網(wǎng)絡(luò)管理的程序組件,使用架構(gòu)于這套類別函數(shù)庫(Class Library)的程序設(shè)計者可以藉由組裝這些程序組件,而簡化網(wǎng)絡(luò)管理系統(tǒng)的設(shè)計工作.
在所設(shè)計與實現(xiàn)的類別中,包含幾個部分,分別是:高級網(wǎng)絡(luò)管理信息類別、高級網(wǎng)絡(luò)管理信息擷取類別、網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)管理類別、網(wǎng)絡(luò)效能監(jiān)測類別以及網(wǎng)絡(luò)管理檔案存取類別.其中高級網(wǎng)絡(luò)管理信息類別是最為基礎(chǔ)的一個部份,因此也是我們首先加以設(shè)計以及實現(xiàn)的一個部分.
這一類的高級類別,其目的在于包裝各類的管理信息(Management Information).傳統(tǒng)上,我們以MIB(ManagementInformation Base)來定義各類的管理信息[6],然而 MIB的定義方式對于開發(fā)網(wǎng)絡(luò)管理系統(tǒng)的程序設(shè)計者來說,并不便利.而我們則將各種管理信息一一包裝成為 Java程序語言中的類別.這樣一來,將程序設(shè)計者原本必須直接操縱 OID的設(shè)計方式,轉(zhuǎn)換成為以 Java類別的方式來思考,更貼近對象導(dǎo)向設(shè)計的哲學(xué).每種管理信息,都被轉(zhuǎn)換成為 JavaObject,程序設(shè)計者可以更容易地以對象導(dǎo)向的概念來操控這些管理信息.在MIB I(IManagement Information BaseII)中包括了數(shù)個 Group:System、Interface、IP、TCP、UDP、SNMP、ICMP,等等.
和高級網(wǎng)絡(luò)管理信息類別息息相關(guān)的便是高級網(wǎng)絡(luò)管理信息擷取類別.高級網(wǎng)絡(luò)管理信息類別的目的在于封包、整理網(wǎng)絡(luò)管理相關(guān)的類別并且將其轉(zhuǎn)化成為 Java類別的形式.而高級網(wǎng)絡(luò)管理信息擷取類別則實現(xiàn)了擷取這些網(wǎng)絡(luò)管理信息的部分.這一類的類別,隱藏了以網(wǎng)絡(luò)管理通訊協(xié)議去取得相關(guān)信息的部分,程序設(shè)計者只需輕易地呼叫相對應(yīng)的方法(method)即可取得網(wǎng)絡(luò)管理所需的信息.我們設(shè)計并實現(xiàn)了 3個高級網(wǎng)絡(luò)管理信息擷取類別分別用來取得 MIB中的 object、column以及 table的值.它們的類別名稱分別是:
MIBObjHunter
MIBColumnHunter
MIBTableHunter
事實上,當(dāng)高級網(wǎng)絡(luò)管理信息類別的對象實際被建構(gòu)(construct)出來時,即會透過“高級網(wǎng)絡(luò)管理信息擷取類別”來取得高級網(wǎng)絡(luò)管理信息類別所代表的相關(guān)信息.因此,對于程序設(shè)計者而言,甚至不需接觸到高級網(wǎng)絡(luò)管理信息擷取類別,只需將高級網(wǎng)絡(luò)管理信息類別建構(gòu)出來,再透過高級網(wǎng)絡(luò)管理信息擷取類別所提供的界面取得信息即可.
我們以實現(xiàn)的高級網(wǎng)絡(luò)管理信息類別以及高級網(wǎng)絡(luò)管理信息擷取類別作為基礎(chǔ),便十分輕易地為我們所開發(fā)的系統(tǒng)融入各種取得網(wǎng)管信息的模塊.利用一個稱為 InterfaceSummary的類別取得該被管理設(shè)備各個 interface的運作狀態(tài),程序設(shè)計者只需建構(gòu)此類別的對象,傳入欲取得被管理設(shè)備的 IP地址,類別內(nèi)的建構(gòu)機(jī)制即自動地利用 MIBColumnHunter來取得在MIB2中的一個 column,而將被管理設(shè)備各個 interface的運作狀態(tài)取回.程序設(shè)計者只需利用 getSize()來取得該被管理設(shè)備究竟有多少 interafce,以及 getOper Status()來取得指定 interface的狀態(tài).可以說是相當(dāng)?shù)乇憷?可以為程序設(shè)計者節(jié)省許多寶貴的時間.
架構(gòu)在高級網(wǎng)絡(luò)管理信息類別以及高級網(wǎng)絡(luò)管理信息擷取類別之上,我們再發(fā)展了網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)管理類別.這一類的類別,其目的在于依循一套完整自動化的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)搜尋的演算方法,將其設(shè)計成 Java程序語言中的類別,以對象導(dǎo)向的方式提供給程序設(shè)計者使用.這一類的類別包括了兩類:第一類是各種網(wǎng)絡(luò)拓?fù)渲袝霈F(xiàn)的基本元素以及數(shù)據(jù)結(jié)構(gòu).我們以類別的方式加以定義,提供程序設(shè)計者以抽象高級的方式來處理這些在拓?fù)浣Y(jié)構(gòu)中會出現(xiàn)的元素,包括了這些類別:
Ether netAdd ress
Inter face
IpAddress
IpRange
Topology
TopologyLink
TopologyNode
Layer 3Device
Segment
Subnet
另一類則是實現(xiàn)搜尋網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)算法的類別.這些類別將原本十分復(fù)雜而且繁瑣的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)搜尋算法包裝起來,成為一個自動化的機(jī)制,程序設(shè)計者只需呼叫所提供的方法(method),便可以輕易地取得網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)的信息,包括了:
Discover
TopologyDiscover
因此,我們所實現(xiàn)的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)管理類別提供了極為實用,而且?guī)缀跏敲總€網(wǎng)絡(luò)管理系統(tǒng)都必須提供的重要組件.不僅如此,更以極易使用的方式來加以呈現(xiàn).
網(wǎng)絡(luò)效能監(jiān)測類別的發(fā)展,則提供了另一個在一般網(wǎng)絡(luò)管理系統(tǒng)中同樣必備的效能監(jiān)測功能.我們在計劃中所設(shè)計的網(wǎng)絡(luò)效能監(jiān)測類別中,主要提供了一個監(jiān)測器(Monitor)類別.程序設(shè)計者只需指定監(jiān)測參數(shù),并且建構(gòu)監(jiān)測器對象,即可由監(jiān)測器對象自動地進(jìn)行監(jiān)測的動作[7].程序設(shè)計者在建構(gòu)監(jiān)測器對象時,可以同時指定多個欲監(jiān)測網(wǎng)絡(luò)效能信息(傳入欲監(jiān)測的“高級網(wǎng)絡(luò)管理信息類別”即可),并且分別指定相對應(yīng)的監(jiān)測周期.在監(jiān)測器對象被建構(gòu)完成后,分別為每個監(jiān)測的標(biāo)的建立監(jiān)測用的執(zhí)行緒(thread).不同的執(zhí)行緒之間相互獨立.另外,還設(shè)計了一個稱作“監(jiān)測觀察者(MonitoringObserver)”的界面(interface).使用監(jiān)測者類別的系統(tǒng),必須另外提供一個實現(xiàn)(implement)此界面的類別,并且以 addObserver()這個方法,使此類別的對象成為監(jiān)測者的一個觀察者.那么當(dāng)各監(jiān)測用的執(zhí)行者取得網(wǎng)絡(luò)效能信息時,便會將結(jié)果傳遞交予觀察者.這種設(shè)計的模式在Java核心的類別庫中也屢見不鮮.透過這種設(shè)計的模式,可以將接收監(jiān)測結(jié)果的模塊和實際監(jiān)測的模塊確實分離,避免各模塊之間耦合過強(qiáng).
網(wǎng)絡(luò)管理檔案存取類別可以解決網(wǎng)絡(luò)管理應(yīng)用系統(tǒng)儲存以及加載網(wǎng)管信息的需求.網(wǎng)絡(luò)管理檔案存取類別提供了程序設(shè)計者將網(wǎng)絡(luò)管理信息儲存在文件案之中的界面,也提供了由檔案中加載的界面.它能協(xié)助程序設(shè)計者維護(hù)網(wǎng)管信息的永續(xù)性(Persistence).程序設(shè)計者需要儲存對象狀態(tài)時,即可將對象交予此永續(xù)對象管理者(利用 put()這個方法),而在下次取出時(利用get()這個方法),仍舊可以取得相同狀態(tài)的對象.此永續(xù)性的維護(hù)乃是利用 Java程序語言的“Object Serialization”的特性,配合我們以檔案系統(tǒng)實作一個允許存入檔案的雜湊表(hashtable)來達(dá)成快速地存取以及取出物件的目的.
這類的類別使網(wǎng)絡(luò)管理系統(tǒng)的設(shè)計者免于費心于信息存取的細(xì)節(jié),只需專注于物件的處理即可.
本文設(shè)計了各種類別協(xié)助程序設(shè)計者解決所會遭遇到的復(fù)雜問題.這些類別,可以大幅地縮短網(wǎng)管系統(tǒng)的開發(fā)周期,同時因為我們遵循對象導(dǎo)向的設(shè)計典范,因此更可使程序本身易于維護(hù).
[1]Y Yemini.The OSI network management model[J].IEEECommunication Magazine,1993,31(5):20-29.
[2]Anonymous.ISO 9596/CCITT X 711[C].Common Management Information Protocol-CMIP,1991:32-26.
[3]Case JD,Fedor M S,Schoffstall M L,et al.Simp le network management protocol[M].RFC 1157,1990:32-29.
[4]T Berners-Lee.World-wide web:the Information universe[J].Elect.Networking,1992,1(1):13-16.
[5]James W-K Hong,J-Y Kong,T-H Yun,et al.Web-based intranet services and network management[J].IEEE Communications Magazine,1997,35:100-110.
[6]Muller N J.Web-accessible network management tools[J].International Journal of Network Management,1997,2:288-297.
[7]Arnold K,Gosling J.The Java programming language[C].Addison-Wesley,1996:32-36.