靳建彬,秦藝力,張 垚
(1.中國衛星海上測控部遠望三號船通信部 江蘇 江陰 214431;2.江南計算技術研究所 江蘇 無錫 214083)
隨著計算機網絡在工業中的廣泛應用,監視、控制網絡設備的網絡監控系統作用愈發重要。現有網管系統普遍存在如下不足:1)缺少兼容性,實際應用中的網絡系統通常包含多種類型的網絡產品,而網管系統一般是廠商為單類網絡產品開發,如華為公司的IManager系統,不能兼容如Cisco交換機、天融信防火墻等其它公司的產品;2)模式單一,網管模式主要采用服務器后臺進行周期性輪詢機制,如華為網管,最小刷新間隔為1 min,網絡狀態監控與故障異常報告存在延時;3)系統復雜,需要提供獨立網管服務器,耗費資源多,不方便使用。
遠洋航天測量船通信IP網包含不同廠商的多種網絡設備,需要兼容性強的網管系統。通信IP網對網絡的可靠性、實時性要求很高,在特殊時刻需要實時查看網絡狀態,并及時報告網絡異常。傳統的網管系統不能滿足測量船通信IP網的這些需求,為此文中開發了一種基于Web的多操作模式、兼容多種網絡設備的網絡監控系統。
文中開發的網絡系統基于Web模式,前臺利用SVG技術繪制網絡拓撲圖形,通過JSON-RPC進行前臺與后臺的通信,后臺使用PYTHON技術實現,采用JSON格式描述網絡設備。
SVG是W3C(World Wide Web Consortium)制定的基于XML的可縮放矢量圖形描述規范,可用于描述矢量圖形、圖像及文字等3類圖形對象,與傳統的圖形格式相比,它不但占用空間小,可操作性好,并可以嵌入腳本語言以支持動畫效果和交互能力,適合在網絡上傳輸和顯示。它基于XML,不但與現有的W3C其它開放標準有很好的兼容性,也能與其它組織的標準化技術很好的協同工作,在網絡監控系統和很多其它實時系統中使用SVG[1]。
SVG特點:
SVG是矢量圖,利用點和線等矢量化的數據描述圖像,在圖像中包含色彩和位置信息,圖像品質不受設備分辨率影像,放大和縮小不影響圖像品質。
SVG基于XML,不同于常規的圖像格式,采用文本格式描述圖像,完全支持DOM,可用程序語言動態生成。
SVG可以和Javascript結合,通過對SVG屬性進行操作形成強大的顯示效果。
JSON(JavaScipt Object Notation),JavaScript對象表示法。JSON是一種結構簡單的序列化數據格式,容易與python和JavaScipt結合,解析方便。JSON格式如下示例:
Var router={“name”: “JY -Y3-AS-003”, “ip”:“30.70.0.45”,“manufacturer”:“huawei”}
JSON以一對花括號表示對象,通過列舉以冒號分隔的名稱和值來表示每一個屬性,JavaScipt可以直接訪問JSON對象的屬性,eg:router.name,相比較XML不需要復雜的解析過程。
RPC(遠程過程調用),運行于不同操作系統、不同環境中的軟件通過網絡發送基于消息的請求進行RPC,從而實現進程間通信。JSON-RPC,是在RPC概念上發展起來的一種規范和一組實現方案,采用HTTP作為底層通信協議、JSON為數據編碼格式[2]。相比較以XML為數據編碼格式的XML-RPC,JSON-PRC基于簡單易用的JSON數據,具有執行效率高、解析簡單、容易實現、平臺無關等特點。
Python是一種很流行的程序語言,可以作為獨立的程序和腳本在各種領域中應用。Python免費、可移植、功能強大,而且使用起來相當容易[3]。
開發者效率高:
相對于C、C++和Java等編譯語言,Python的開發者效率提高了數倍。Python代碼大小只有C++或Java的五分之一,意味著可以錄入、調試和維護更少的代碼。
Python程序可以立即運行,無需傳統編譯語言所必須的編譯、鏈接等步驟,進一步提高了程序員的開發效率。
程序跨平臺、可移植:
Python的標準實現方式是將源代碼的語句編譯(或者說是轉換)為字節碼的形式,之后再將字節碼解釋出來.由于字節碼是一種與平臺無關的格式,字節碼具有可移植性.因此,Python語言具有跨平臺和可移植的特性,絕大多數的Python程序不做任何改變即可在所有主流計算機平臺上運行.例如,在Linux和Windows之間移植Python代碼,只需簡單地在機器間復制代碼即可.
然而,因為Python沒有將代碼編譯成底層的二進制代碼(例如intel芯片的指令),一些Python程序將會比C這樣的完全編譯語言慢些。
Raphael是用一個小型的JavaScript庫,符合W3C標準,用于繪制和編輯SVG矢量圖形。利用Raphael創建的圖形具有DOM結構,可以嵌入JavaScript腳本語言以支持動畫效果和交互能力,并能夠兼容不同瀏覽器[4]。
文中設計基于Web方式的網絡監控系統,包含前臺和后臺兩部分,系統框架如圖1所示。

圖1 多模式網管系統總體框架圖Fig.1 Structure diagram of the multi-mode network management system
用戶登陸Web瀏覽器進入網絡監控系統,通過前臺界面交互按鈕進行操作,對后臺發出請求,利用JSON-RPC進行遠程服務調用,后臺執行相關業務處理模塊并將網絡實時狀態信息返回給客戶端。前臺基于SVG技術和JavaScript腳本顯示或更新網絡拓撲圖。
前臺是用戶和綜合網管系統進行交互操作的平臺,包括用戶交互模塊和圖形處理模塊。用戶交互模塊的功能包括:實時查看網絡拓撲、設置拓撲自動刷新間隔、重置拓撲等功能;圖形處理模塊的功能包括繪制拓撲圖、更新拓撲圖等功能。這些功能主要通過定義前臺中的JavaScript腳本來實現。前臺的邏輯運行框圖如圖2所示。

圖2 前臺邏輯運行框圖Fig.2 Run block diagram of the front desk logic
用戶操作界面,在JavaScript腳本中觸發對服務端的服務請求,獲取服務端的響應后,依據響應的網絡狀態信息調用SVG庫函數繪制網絡拓撲圖或者更新網絡拓撲圖的鏈路狀態,以圖形界面的形式向用戶呈現網絡運行狀態。下面是實時查看網絡拓撲操作的客戶端關鍵代碼片段:
//點擊界面中的立刻刷新按鈕,觸發相關聯的腳本
$(“#refreshButton”).click(function(){…});
//在JavaScript腳本中對服務端的服務發起請求:獲取網絡接口狀態,并設置回調函數為更新接口狀態函數
ajaxRequest("getIfStatusJSONMT", updateIfStatus);
//在客戶端腳本中定義更新接口狀態的處理函數,根據服務端返回的接口狀態信息進行更新處理。
updateIfStatus()
綜合網管系統也能通過設置自動刷新間隔,實現自動拓撲刷新,如圖3所示。
網絡拓撲可以看成是由網絡設備(路由器、防火墻、交換機等)和連接這些網絡設備的鏈路組成的[5]。在SVG文件中,我們可以分別用

圖3 設置拓撲自動刷新間隔Fig.3 Set topology automatic refresh interval
1)初始化SVG圖形
Var r =Raphael ("SVGHolder",SVGHolderWidth,SVGHolderHight);
2)設置結點設備初始位置、圖像
var shape=r.image(entity.image, entity.x, entity.y, 32, 32);
3)繪制設備節點之間的鏈路
connection=r.connection (shapes[entity.shapeIndex],shapes[destEntity.shapeIndex],color,bgcolorwidth);
4)根據設備接口狀態設置鏈路顏色
//0表示未知狀態,1為連接,2為斷開狀態
if(1) connections[i].bg.attr({stroke:“green”});
else if(2) connections[i].bg.attr({stroke:“red”});
else connections[i].bg.attr({stroke:“gray”});

圖4 網絡拓撲顯示圖Fig.4 Network topology shown in figure
由于文中的設備信息設計為JSON格式,因此前臺與后臺的通信方式采用JSON-RPC技術。JSON-RPC基于HTTP協議,能夠獲取前臺的請求信息,傳遞給后臺相應服務處理模塊進行處理,并將響應信息以JSON-RPC的格式返回給客戶 端 。 例 如 前 臺 通 過 腳 本 ajaxRequest(“getTopoJSON”,topoResponseHandle),即可直接調用后臺的函數getTopoJSON獲取網絡拓撲信息,中間的調用過程由JSON-RPC完成。
綜合網管系統后臺的主要工作是對網絡設備進行監控,獲取網絡狀態信息,通過提供服務的方式接收并處理前臺的請求,完成與前臺的交互,實現網絡監視功能。后臺采用層次化結構設計,其分層結構如圖5所示。
不同于常見的XML表示方法,文中提出一種新的方法來定義網絡設備,即采用JSON文件的格式,通過設置包括設備名稱、IP、接口、類型等屬性來描述網絡設備。這種表示方法數據結構清晰,層次簡單,省去了復雜的XML文件DOM解析,既降低了開發的復雜度,又提高了網絡反應速度。

圖5 后臺分層結構圖Fig.5 Structure diagram of the background layers
JSON文件定義設備實例:
結點3{
“name”:“JY-Y3-AS-003”,
“ip”:“30.70.0.45”,
“interfaces”:{
“GigabitEthernet0/1/1”:{
“destEntity”:“JY-Y3-DS-001”,
“destInterface”:“GigabitEthernet1/0/5”
},
…
}}}
設備模塊讀取設備定義文件,定義操作設備的基本方法。設備管理模塊管理底層設備,將設備數據提供給上層模塊。服務處理模塊封裝并提供常見服務,供前臺調用。
系統后臺基于SNMP協議,獲取網絡設備狀態信息,能夠讀取不同產品的私有MIB(管理信息數據庫),兼容性強[6]。
為提高系統工作效率,后臺通過多線程并行處理技術,并行獲取設備參數、狀態,大大提高了網絡檢索效率。
圖6是文中開發的網絡監控系統的初始界面。

圖6 網管系統初始界面Fig.6 Initial interface of the network management system
從上圖可見,綜合網管系統提供了用戶操作界面,用戶可以通過刷新界面來獲取實時網絡信息,也可設定刷新間隔來自動進行網絡監管。
網絡拓撲圖基于SVG繪制,可以通過縮放圖像和拖動結點來顯示美觀的界面,反應網絡實時狀態,便于用戶及時發現并處理網絡故障。
此網管系統的主要功能是顯示網絡設備的連接拓撲圖、網絡設備間的鏈路通斷狀態、鏈路兩端的接口信息和網絡設備的在線情況等。
文中分析了目前網管系統的不足,研究了相關開發技術的原理,針對航天遠洋測控船通信IP網的實際需求,設計并實現了一種網絡監控系統,在實際中得到應用和驗證。
此系統具有如下特點:兼容性強;實時性強;具有實時操作和自動監管兩種模式;跨平臺、效率高、易部署;界面美觀友好,易操作。
[1]Ola Andersson ZOOMON AB,Phil Armstrong Corel Corporation,Henric Axelsson Ericsson AB,et al.Scalable Vector Graphics(SVG) 1.1 Specification.[EB/OL]. (2005).http://www.w3.org/TR/SVG/.
[2]李德賢,李嵩山,李志勇.JSON-RPC協議分析、擴展及其應用[EB/OL].(2007-10-02).http://www.paper.edu.cn/index.php/default/releasepaper/content/.
[3]Mark Lutz.Python學習手冊[M].機械工業出版社,2009.
[4]Dmitry Baranovskiy.Small fix to glow and animation[EB/OL].(2011)http://github.com/DmitryBaranovskiy/raphael/raw/master/paphael-min.js.
[5]熊齊邦,魯成茂.SVG和XML_RPC實現的Web方式網絡拓撲顯示[J].計算機工程,2005,31(12):220-223.XIONG Qi-bang,LU Cheng-mao.Web-based visualization of network topologies using SVG and XML-RPC[J].Computer Engineering,2005,31(12):220-223.
[6]楊妮妮,趙新慧.基于Web的SNMP網絡管理[J].微計算機信息,2006(2-3):72,110-111.YANG Ni-ni,ZHAO Xin-hui.Web-based SNMP network management[J].Microcomputer Information,2006(2-3):72,110-111.