基于Web的多模式网络监控系统的设计与实现
2012-01-18靳建彬秦艺力
靳建彬,秦艺力,张 垚
(1.中国卫星海上测控部远望三号船通信部 江苏 江阴 214431;2.江南计算技术研究所 江苏 无锡 214083)
随着计算机网络在工业中的广泛应用,监视、控制网络设备的网络监控系统作用愈发重要。现有网管系统普遍存在如下不足:1)缺少兼容性,实际应用中的网络系统通常包含多种类型的网络产品,而网管系统一般是厂商为单类网络产品开发,如华为公司的IManager系统,不能兼容如Cisco交换机、天融信防火墙等其它公司的产品;2)模式单一,网管模式主要采用服务器后台进行周期性轮询机制,如华为网管,最小刷新间隔为1 min,网络状态监控与故障异常报告存在延时;3)系统复杂,需要提供独立网管服务器,耗费资源多,不方便使用。
远洋航天测量船通信IP网包含不同厂商的多种网络设备,需要兼容性强的网管系统。通信IP网对网络的可靠性、实时性要求很高,在特殊时刻需要实时查看网络状态,并及时报告网络异常。传统的网管系统不能满足测量船通信IP网的这些需求,为此文中开发了一种基于Web的多操作模式、兼容多种网络设备的网络监控系统。
1 相关技术原理
文中开发的网络系统基于Web模式,前台利用SVG技术绘制网络拓扑图形,通过JSON-RPC进行前台与后台的通信,后台使用PYTHON技术实现,采用JSON格式描述网络设备。
1.1 SVG
SVG是W3C(World Wide Web Consortium)制定的基于XML的可缩放矢量图形描述规范,可用于描述矢量图形、图像及文字等3类图形对象,与传统的图形格式相比,它不但占用空间小,可操作性好,并可以嵌入脚本语言以支持动画效果和交互能力,适合在网络上传输和显示。它基于XML,不但与现有的W3C其它开放标准有很好的兼容性,也能与其它组织的标准化技术很好的协同工作,在网络监控系统和很多其它实时系统中使用SVG[1]。
SVG特点:
SVG是矢量图,利用点和线等矢量化的数据描述图像,在图像中包含色彩和位置信息,图像品质不受设备分辨率影像,放大和缩小不影响图像品质。
SVG基于XML,不同于常规的图像格式,采用文本格式描述图像,完全支持DOM,可用程序语言动态生成。
SVG可以和Javascript结合,通过对SVG属性进行操作形成强大的显示效果。
1.2 JSON
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不需要复杂的解析过程。
1.3 JSON-RPC
RPC(远程过程调用),运行于不同操作系统、不同环境中的软件通过网络发送基于消息的请求进行RPC,从而实现进程间通信。JSON-RPC,是在RPC概念上发展起来的一种规范和一组实现方案,采用HTTP作为底层通信协议、JSON为数据编码格式[2]。相比较以XML为数据编码格式的XML-RPC,JSON-PRC基于简单易用的JSON数据,具有执行效率高、解析简单、容易实现、平台无关等特点。
1.4 PYTHON
Python是一种很流行的程序语言,可以作为独立的程序和脚本在各种领域中应用。Python免费、可移植、功能强大,而且使用起来相当容易[3]。
开发者效率高:
相对于C、C++和Java等编译语言,Python的开发者效率提高了数倍。Python代码大小只有C++或Java的五分之一,意味着可以录入、调试和维护更少的代码。
Python程序可以立即运行,无需传统编译语言所必须的编译、链接等步骤,进一步提高了程序员的开发效率。
程序跨平台、可移植:
Python的标准实现方式是将源代码的语句编译(或者说是转换)为字节码的形式,之后再将字节码解释出来.由于字节码是一种与平台无关的格式,字节码具有可移植性.因此,Python语言具有跨平台和可移植的特性,绝大多数的Python程序不做任何改变即可在所有主流计算机平台上运行.例如,在Linux和Windows之间移植Python代码,只需简单地在机器间复制代码即可.
然而,因为Python没有将代码编译成底层的二进制代码(例如intel芯片的指令),一些Python程序将会比C这样的完全编译语言慢些。
1.5 Raphael库
Raphael是用一个小型的JavaScript库,符合W3C标准,用于绘制和编辑SVG矢量图形。利用Raphael创建的图形具有DOM结构,可以嵌入JavaScript脚本语言以支持动画效果和交互能力,并能够兼容不同浏览器[4]。
2 设计与实现
2.1 系统框架
文中设计基于Web方式的网络监控系统,包含前台和后台两部分,系统框架如图1所示。
图1 多模式网管系统总体框架图Fig.1 Structure diagram of the multi-mode network management system
用户登陆Web浏览器进入网络监控系统,通过前台界面交互按钮进行操作,对后台发出请求,利用JSON-RPC进行远程服务调用,后台执行相关业务处理模块并将网络实时状态信息返回给客户端。前台基于SVG技术和JavaScript脚本显示或更新网络拓扑图。
2.2 网管系统前台
前台是用户和综合网管系统进行交互操作的平台,包括用户交互模块和图形处理模块。用户交互模块的功能包括:实时查看网络拓扑、设置拓扑自动刷新间隔、重置拓扑等功能;图形处理模块的功能包括绘制拓扑图、更新拓扑图等功能。这些功能主要通过定义前台中的JavaScript脚本来实现。前台的逻辑运行框图如图2所示。
图2 前台逻辑运行框图Fig.2 Run block diagram of the front desk logic
用户操作界面,在JavaScript脚本中触发对服务端的服务请求,获取服务端的响应后,依据响应的网络状态信息调用SVG库函数绘制网络拓扑图或者更新网络拓扑图的链路状态,以图形界面的形式向用户呈现网络运行状态。下面是实时查看网络拓扑操作的客户端关键代码片段:
//点击界面中的立刻刷新按钮,触发相关联的脚本
$(“#refreshButton”).click(function(){…});
//在JavaScript脚本中对服务端的服务发起请求:获取网络接口状态,并设置回调函数为更新接口状态函数
ajaxRequest("getIfStatusJSONMT", updateIfStatus);
//在客户端脚本中定义更新接口状态的处理函数,根据服务端返回的接口状态信息进行更新处理。
updateIfStatus()
综合网管系统也能通过设置自动刷新间隔,实现自动拓扑刷新,如图3所示。
2.3 基于SVG的网络拓扑显示
网络拓扑可以看成是由网络设备(路由器、防火墙、交换机等)和连接这些网络设备的链路组成的[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
2.4 前台与后台的通信
由于文中的设备信息设计为JSON格式,因此前台与后台的通信方式采用JSON-RPC技术。JSON-RPC基于HTTP协议,能够获取前台的请求信息,传递给后台相应服务处理模块进行处理,并将响应信息以JSON-RPC的格式返回给客户 端 。 例 如 前 台 通 过 脚 本 ajaxRequest(“getTopoJSON”,topoResponseHandle),即可直接调用后台的函数getTopoJSON获取网络拓扑信息,中间的调用过程由JSON-RPC完成。
2.5 系统后台业务处理
综合网管系统后台的主要工作是对网络设备进行监控,获取网络状态信息,通过提供服务的方式接收并处理前台的请求,完成与前台的交互,实现网络监视功能。后台采用层次化结构设计,其分层结构如图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]。
为提高系统工作效率,后台通过多线程并行处理技术,并行获取设备参数、状态,大大提高了网络检索效率。
2.6 网管系统的实现
图6是文中开发的网络监控系统的初始界面。
图6 网管系统初始界面Fig.6 Initial interface of the network management system
从上图可见,综合网管系统提供了用户操作界面,用户可以通过刷新界面来获取实时网络信息,也可设定刷新间隔来自动进行网络监管。
网络拓扑图基于SVG绘制,可以通过缩放图像和拖动结点来显示美观的界面,反应网络实时状态,便于用户及时发现并处理网络故障。
此网管系统的主要功能是显示网络设备的连接拓扑图、网络设备间的链路通断状态、链路两端的接口信息和网络设备的在线情况等。
3 结 论
文中分析了目前网管系统的不足,研究了相关开发技术的原理,针对航天远洋测控船通信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.