摘要:通过分析基于SNMP协议的网络管理体系结构,提出了一种基于消息驱动的网管工作站方案,并给出了具体的实现方法,实现了高效的网络管理。 关键词: SNMP协议;网络管理;消息驱动
随着互联网技术的空前发展和网络带宽的不断提高,路由器成为互联网最为关键的核心设备,为了满足未来网络发展的需要,路由器的处理速度要达到T比特级(terabit)。为了实现对T比特路由器的有效管理,要求开发一个高效的扩展性好的网络管理系统。SNMP[1](Simple Network Management Protocol,简单网络管理协议)以其简单性和实效性成为网络管理的标准协议,基于SNMP协议的网管软件一般分为三个部分:客户端、网管工作站和网络设备,如图1所示。对网络的管理和维护是通过SNMP管理和SNMP代理之间的交互完成的[2]。其中SNMP管理程序运行在网管工作站上,网管工作站的工作效率将对网络管理的效果产生很大影响。
 1. WEB网络管理技术的适用性分析
目前,随着Web技术的流行和发展,普遍采用基于Web的网络管理系统。常用的基于Web的网络管理技术有两种,一种是基于嵌入式的网络管理,将网管工作站嵌入到网络端设备中,每个设备都有自己的Web地址,网管人员可以通过浏览器访问并管理设备,这种技术适合于小型网管系统,而且不利于扩展。第二种是基于代理的网络管理,由代理程序来管理设备,将管理程序加载到网管工作站中,通过snmp协议与代理程序通信,浏览器通过HTTP协议与网管工作站通信,这种技术使得浏览器与网管工作站可以采用B/S(Browser/Server,浏览器/服务器)结构通信,软件系统的部署、升级维护和数据备份只需在服务器端完成,客户端无需做应用程序的安装和调试,极大降低了系统总维护成本,加强了系统的稳定性和可扩展性。由于T比特路由器是核心路由器,用于大规模网络,且对可扩展性有较高要求,所以应采用基于代理的管理方法。
2. 网管工作站的设计方案 为提高网管工作站的扩展性和维护性,采用模块化设计,根据X.700系列建议书和在研项目的性能要求,划分为五个模块,网络管理工作站的模块结构如图2所示。  •故障管理模块(Fault Management):检测和确定网络环境中异常操作,完成网络系统中问题的发现、定位、修复;同时提供诊断的功能,以定位和解决问题,并且把告警信息记录到数据库中,作为以后诊断和分析的依据。 •配置管理模块(Configuration Management ):完成对资源的识别、配置和控制,使网络管理人员可以生成、查询和修改软硬件的运行参数和条件,以保持网络的正常工作。通过配置管理,能够完成网络设备的在线配置。 •性能管理模块(Performance Management):完成对系统服务质量的监测,能够实时连续地收集网络和系统运行的相关数据,并存入数据库,监视网络和系统的运行状况和效率,同时可以以图形方式显示网络运作的状态,在需要时通过命令进行控制。 •Web服务模块(Web Server):提供安全管理和流量统计的功能,根据流量统计的结果进行计费管理,还要与上述三个模块通信,及时收集网络信息。 •消息管理模块(Message Management):以上四个模块之间的通信采用基于消息的通信机制,为了实现消息的转发,同时实现对消息的集中管理,设计了消息管理模块,作为通信的中转站,消息管理模块是网管工作站的核心模块。
3. 消息管理模块的实现 3.1消息管理模块的需求分析 网管工作站采用B/S(浏览器/服务器)结构,网管人员利用浏览器访问网管工作站的Web服务模块,发出各种“管理请求”,Web服务模块把“管理请求”转发给消息管理模块。因为网管工作站支持多个浏览客户,所以浏览器与Web服务模块之间是多对一的通信,Web服务模块会“同时”向消息管理模块提交多个“管理请求”。因此消息管理模块应具有并发服务器[3]的功能,可以“同时”处理多个客户的请求。 消息管理模块作为消息的中转站,要对各模块通信的消息进行管理和转发,为了实现可靠的消息通信,消息管理模块除监听Web服务模块的“管理请求”外,还要与故障管理模块、配置管理模块、性能管理模块和路由器的IMI(Integrated Management Interface,集成管理接口)模块建立基于TCP协议的可靠连接。这种基于TCP的连接称为“line”连接,基于“line”连接的通信消息称为“line”消息,消息的报文格式如下:  图3 “line”消息的报文格式 各域的含义是: Length域,占两个字节,代表消息的长度,即Message域的长度。 Module域,占两个字节,代表目的模块标识符,目前目的模块包括Web服务模块、性能管理模块、故障管理模块、配置管理模块。一个模块占用1比特,例如Web服务模块占用第0比特,则Module域的第0比特为“1”表示消息的接收方是Web服务模块。 CLI key域,占两个字节,代表建立line连接的标识符。 Mode域,占一个字节,这个域是针对配置管理设置的,代表配置命令所属的命令节点。 Privilege域,占一个字节,代表命令的特权等级。 code域,占一个字节,代表命令执行的结果。 Reserved域代表保留字,缺省填零。 以上各域共占12个字节,组成消息头。 Message域存放具体的消息内容。 3.2 消息管理模块中并发服务器的实现 消息管理模块采用多线程技术实现对“管理请求”的并发处理。模块初始化时启动一个线程,并将线程加入到线程队列中,监听网管人员的“管理请求”,当收到请求后,该线程开始处理消息,并启动另一个线程继续监听。考虑到“管理请求”的优先权问题,增加了线程队列调度功能。设置三个线程队列,按优先级分为高、中、低三级,由一个线程管理器统一管理。线程队列的结构体设计如下: struct thread { struct thread *next; /* 指向前趋结点的指针 */ struct thread *prev; /* 指向后继结点的指针 */ struct thread_master *master; /* 指向线程管理器的指针*/ int (*func) (struct thread *); /* 线程处理管理请求的函数 */ char type; /* 线程类型 */ char priority; /* 优先级 */ } 线程管理器的结构体设计如下: struct thread_master { struct thread_list queue_high; /* 三个基于不同优先级的线程队列 */ struct thread_list queue_middle; struct thread_list queue_low; } 3.3消息管理模块的工作流程 首先启动故障管理模块、配置管理模块、性能管理模块和路由器的IMI模块,每一模块监听一个端口。然后启动消息管理模块,消息管理模块主动连接上述模块监听的端口,连接成功则建立了“line”连接,同时还要启动一个线程,监听来自Web服务模块的“管理请求”。最后启动Web服务模块,Web服务模块与消息管理模块建立“line”连接。  消息管理模块接收“line”消息,先对消息头进行解析,根据消息中Module域的内容得到消息的目的地,然后判断是否与消息接收方建立了“line”连接,如果没有建立连接,则填写消息的code域,向Web服务模块返回“消息发送失败”的编码,如果建立了连接,则转发消息。消息接收方根据消息的Length域得知Message域的长度,准确地从Message域提取消息内容,对消息进行具体处理,处理之后,发送应答的“line”消息,code域存放消息接收方处理消息的结果,应答消息的Message域可以为空,该消息经消息管理模块返回消息发送方。简要的处理流程如图4所示,消息管理模块处理消息的流程图如图5所示。
 4. 结束语 网管工作站的模块化设计增强了网管软件的维护性和扩展性,消息管理模块为网管工作站各模块之间提供了统一的通信格式,便于消息的转发和处理。基于消息驱动的网管工作站提高了管理效率,增强了网络管理系统的可扩展性和可维护性。希望这种网络管理模型对其它类似的网络管理起到积极的参考作用。 参考文献 [1] J. Case, M. Fedor, M. Schoffstall and J. Davin, “A Simple Network Management Protocol ”, RFC1157, 1990 [2] 林恒,李华锋,SNMP纵论,北京工业大学学报第30卷第1期,2004 [3] Dougalas E.Comer David L.Stevens,用TCP/IP进行网际互联 第三卷 ,电子工业出版社,2001
|