第199期 / May 5, 2014

分享到臉書!分享到維特!分享到噗浪!分享到Google+!分享到微博!轉寄友人友善列印

以JUNG為基礎實作客戶端網路拓撲圖

作者/王 翔

[發表日期:2014/5/2]

前言

隨著網際網路的興盛與便利性,各大企業對網路設備的需求都不斷提高。但大量的網路設備會造成維護上的困難,各設備之間有多種不同的關連性,部門之間可能有多組設備彼此關連,對這樣的企業網路,一台台設備進行檢查容易造成網路監控時間上的浪費與不必要的複雜性。

一個能夠簡單顯示各設備之間的關連性,方便進行企業網路問題的初步評估的模型,可以有效減少網路監控與維護上的負擔。本文以網管伺服器定期對各設備的記錄,一個好的網路設備的網路拓撲(Topology),可以在網管客戶端簡單獲得即時的企業網路狀態,方便自檢與維護行為。

而JUNG是一個用來繪製網路或圖形的軟體函式庫,能夠將資料模型化、分析、並繪製成可視的網路結構或圖形。收集好需要資訊和功能後,即可以JUNG為基礎,建構出一個方便使用者釐清網路資訊的網路拓撲圖。

網路拓撲

網路拓撲是指構成網路的成員間特定的排列方式。分為物理的-即真實的-或者邏輯的-即虛擬的-兩種。如果兩個網路的連接結構相同,儘管它們各自內部的物理接線、節點間距離可能會有不同,依然可視為相同的網路拓撲。

網路拓撲圖有多種形態,如線性、星狀、環狀、網狀,不同的網路拓撲在線路複雜度、安全性、架設難易度、速度等等都有不同的表現,通常視安全性及速度上的需要來選擇適合的網路拓撲圖形。

流程概述

圖一為流程概述,為了做出從客戶端開啟的網路拓撲圖,主要有兩個組成結構:
  • 客戶端:

    拓撲程式主體,圖形介面包含節點、連結、與其它操作選項,依需求顯示設計好的資訊,與使用者互動,接收使用者的指令後向伺服器端索取資料,並隨時接收伺服器端的資料更新資訊。亦可與伺服器端請求外部資源。


  • 伺服器端:

    依設定的時間間隔,持續的向各設備發出例行詢問以收集資訊,進行分析後儲存,依客戶端的需求提供所需的資料,並在資訊更新時以push的方式傳給客戶端。


《圖一》流程概述


系統流程

由於主要重點為以JUNG實作的網路拓撲圖,所以伺服器端的功能不額外多做說明。

本系統以JAVA程式語言實作,以基於JAVA圖形化介面工具而產生的,針對圖形或網路結構設計的JUNG— Java Universal Network/Graph Framework— 為基礎,設計一個適合在客戶端上開啟的網路拓撲圖。

在拓撲圖開始啟動時,首先伺服器端的相關資料收集/交換服務必須先啟動。在此是以RESTful service服務向伺服器索取資料,當伺服器端有即時更新時,以cometD服務將新資料push出去。

網路拓撲圖最主要的功能是圖形功能。圖形功能可分為節點功能、連結功能與其它功能三大類。節點功能為針對特定結果的操作,如移動、資料顯示等等;連結功能針對兩節點之間的連結進行操作,如選擇、隱藏、刪除;其它功能則是針對使用者方便性上的其它功能,如縮放、儲存。

於節點的部份,針對拓撲群組、設備、外部拓撲群組的不同,給予不同的圖形,方便使用者辨識。針對設備節點的說明文字,可依使用者需求選擇名稱、網路位置、設備類型等選項。可以針對設備類型對網路拓撲圖進行過濾,隱藏不需要觀察的設備類型。可以選擇特定拓撲群組後新開頁面來顯示該拓撲群組的網路拓撲圖。

於連結的部份,使用者可以選擇用特定的連線資訊來繪製節點之間的連結,也可以隱藏連結避免畫面過於雜亂,或僅顯示特定狀況,如障礙或流量異常的連結。使用者可以自己定義連結的類型,並以顏色區分,增加網路拓撲圖的可辨識度。

其它功能目的是方便使用者使用這個網路拓撲圖,包含放大、縮小拓撲圖,儲存目前拓撲圖資訊,自動對拓撲圖進行排列,預防離位時他人操作時的鎖定功能等等。

當伺服器端能對特定設備進行操作時,也可以從網路拓撲圖中送出操作,由伺服器端進行實行,可再次擴大網路拓撲圖在功能面上的範圍,也可以與其它系統結合使用。

測試流程

以下為測試時的系統環境:
  • 主機A:客戶端,Windows 7 系統。


  • 主機B:伺服器端,Windows 7系統,以MySQL儲存網路設備資訊。

圖二為測試結果,在客戶端開啟的網路拓撲圖範例,節點為設備或是拓撲群組,連線為兩者之間的連結,節點能自動排列,設備資訊能自主決定顯示與否,操作模式能選擇是否更動節點位置,拓撲圖大小能縮放,能將目前拓撲資訊回存,能將目前畫面存成圖片檔。

《圖二》測試結果


結語

此次實作主要是以JUNG實作可以在客戶端觀看的網路拓撲圖介面,包含一個網路拓撲圖應有的基本功能與操作。

但此種網路拓撲圖的實際功能應由操作者決定,故需與實際操作者商談後完整設計,或更改為可以自行修增功能的模組,方能完善此系統。


參考資料

1.JUNG
2.CometD

(本文轉載自RUN!PC雜誌)