肖坤峨
摘要:SNMP 在基于 TCP/IP 的网络中具有重要的地位,然而传统的 SNMP 管理软件大多是基于 C/S 结构的,并且是集中式的管理,这必然为网络设备管理带来了不便。随着网络的不断发展,网络规模不断扩大,网络的复杂程度也在不断的增加,这迫切的需要一种新型的可以满足各种网络设备管理功能的管理系统。Web 技术的出现解决了这一难题,将 Web 技术与 SNMP 相结合的网络设备管理能够允许管理人员通过 WWW 的方式去监测他们的网络,使用任何一种 Web 浏览器,在网络任何节点上方便迅速地配置、控制以及存取网络的各个部分。
关键词:SNMP;WEB;网络设备管理
中图分类号:TP393文献标识码:A文章编号:1009-3044(2014)08-1678-03
1 网络设备管理的现状
在网络设备管理系统方面,国外已经有众多成熟的产品,早期的有pcAnywhere,目前较为流行的有HP公司的OpenView,而我国的网络管理水平还比较低,目前仅有少数公司能开发出通用的网管平台,如华为的iManager N2000数据通信网络管理系统、H3C公司的iMC智能网络管理平台。早期的网管设备管理系统中大多都是采用基于C/S单一主机模式,如3COM的Transcend系列,SUN公司的SunNetManager、D-Link公司的D-View、安耐特公司的SNMPc、华为公司的iManager N2000、H3C公司的Quidview等,采用的是高度集中的网管模式。这种基于C/S结构网管系统在技术上虽然很成熟,但该结构存在灵活性差、升级困难、维护工作量大等缺陷,不再符合现代网络管理技术的发展趋势。随着Web技术的成熟,可以将Web技术引入到网络管理中,使得管理更加灵活自如,管理人员可以在任何地方通过Web浏览器实施网络设备管理,故障管理,配置网络管理参数,并且可以通过将Applet技术、JSP技术、RMON技术和JAVA语言编程相结合形成新的网络管理应用。
2 基于C/S和基于WEB的网络设备管理模型的比较
SNMP是由 Internet 体系结构委员会 IAB 所制定的,目前大多数厂商的网络产品如交换机、路由器、MODEM 等都支持 SNMP 协议,SNMP 已经成为网络管理领域中的工业标准。
2.1SNMP在基于TCP/IP的网络中具有重要的管理地位
在整个SNMP管理体系中包含三类主要的角色:管理站(Manager),代理(Agent)和管理对象,如图1所示:
2.2 传统的基于SNMP的网络管理模型中,管理站在整个网络中一旦确定下来,其位置也就固定,很难随着管理员当前的位置在网上移动
基于 Web 服务的网络管理模型具有分布性、易扩展和易集成等特性,有效地克服了传统的集中式网络管理模式的主要缺陷。为了解决该问题,提高网络管理效率,该文将 SNMP 与 Web 技术结合,构造了一种基于 B/S 结构的SNMP 网络管理框架 , 如图2所示。
3 系统功能分析
1) 设备面板浏览,包括:交换机、路由器、语音产品、安全产品等。
2) 端口浏览及配置功能,主要包含端口up/down及端口基本信息。
3) 支持从数据库读取数据和从设备读取两种类型来显示设备面板。
4) 支持从设备面板的右键菜单调用其它功能模块。
4 系统设计
4.1 在总体设计阶段,分为前台ClientFrame界面的设计及后台Server端(数据的读取及设置)的设计,数据读取可以从数据数据库读取,也可以从物理设备的mib中读取
如图3所示。
前台刷新器每个几秒自动刷新设备,通過HTTP隧道获取后台数据,session层用于取得协议栈对象。
4.2 系统UML类图设计
DisplayUI实现Refreshable接口,基本上所有不需要配置的类(包括面板类)都是继承此类;Refresher用于刷新设备面板,即发送数据对象到Server端,设备设备厂商、MIB空间,加载MIB,加载功能列表,发送数据到Client端;AppletScheduler类用于Applet视图的调度管理;Device用于设置或获取ifTable表数据;Func类用于启东相应设备的功能。
5 系统功能实现
1)设备管理功能的实现。通过全仿真的设备面板对设备、网络系统进行管理,从设备面板上获知设备的厂商、类型,单板、子卡、端口状态、指示灯运行状况等。设备面板每隔5分钟自动刷新一次面板,如果出现异常则产生告警,设备面板上的元素状态发生变化。设备类Device.java用于构造设备面板视图已经对设备进行初始化工作。
Public class Device{
Public Device{init();}
Public Device(int opened){init(); this.opened=opened;}
Private void init(){ //对设备进行初始化
Opened=0; //设置设备的状态
Type=””;//设置设备的类型
Devname=””;//设置设备的名称
Description=”” //设置设备的描述
So=(snmpOption)SnmpOption.getSnmpOpiton.Clone();//获取//协议栈参数}
Start(){ //启动常驻功能模块
if(opened!=1)return;
Func f=null;
for(int i=0;i f=(Func)func.elementAt(i); if(f.needStop==false){f.start();} }} 刷新面板部分方法: Public void refreshCurUI(); //刷新当前功能模块 Public void refreshCurUI(Func f); //刷新指定功能模块 Public void setrefreshInterval(Func f,int t, Boolean restart) //设置刷新间隔 Public void setRefreshDirection(Func f,int d)//设置刷新方向 2)端口管理功能的实现。通过选定某个端口,可以查询该端口的现在的运行状况、可以获知该端口的速率、端口的类型、端口别名、端口的管理状态、端口的运行状态、端口描述及端口的最后改变时间。通过选定某个端口可以对真实设备的端口进行配置,可以配置端口的别名、端口的管理状态,配置端口管理状态成功则刷新设备面板,反映当前设备的状态。前台架构主类MainFrame.java代码如下: Class MainFrame{ Device dev=new Device(); PropertyResourceBundle res; Void loadResourebundle();//加载资源 Device createDevice(); //构造设备对象 Void refreshDevice() ;//刷新设备对象,构造设备功能列表 Void startDevicePanelMonitor() ; //启动设备面板监视功能 Void onMenuAction() ; //右键功能菜单响应函数 Public void openDevice (String ip,SnmpOptionEx so){ //打开设备 Startfrom();//设置线程 QvOpion option=Qvoption.getOption(); Dev.peername=IpTools.getTrim(ip); Dev.so=new SnmpOption(so); Opendevice(dev); }} 3)从mib库中读取数据用于显示面板信息。Session.java类用于取得协议栈对象。 public class session{ public session(){this.sisnmpIf=QvSnmpToolkit.getSnmpIf();} //初始化會话对象,通过协议栈连接设备 Public void initSession(Device dev){ siSnmpIf.setPeername(dev.peername); siSnmpIf.createConnection(dev.getSnmpOption()); this.dev=dev; }} 6发展趋势 未来的网络管理的发展方向是进一步实现智能化,从而大幅度降低网管人员的工作压力,提高工作效率,真正体现网管软件的作用。智能化的网管软件应该能够自动获得网络中各种设备的技术参数,进而智能分析、诊断,以至预警。智能化的网络管理系统具有强大的预故障处理功能,并且能够自动进行故障恢复,尽一切的可能把故障发生的可能性降至了最低。 参考文献: [1] 岑贤道,安常青.网络管理协议及应用开发[M].北京:清华大学出版社,1998. [2] 雷震甲.网络工程师教程 [M]. 2版.北京:清华大学出版社,2006. [3] 吴娜,鲁东明,潘云鹤.网络管理技术的研究与发展[J].计算机应用研究,2000(4). [4] 张忱.SNMPvl与SNMPv2.SNMPv3 的比较研究[J].计算机工程与应用,2000(4).