基于插件技术的综合网管系统通用网元代理的分析与设计2012-08《电信工程技术与标准化》
王萌1, 2,朱晓民1, 2,李炜1, 2
1北京邮电大学网络与交换技术国家重点实验室,北京(100876)
2东信北邮信息技术有限公司,北京(100191)
E-mail:wangmeng@ebupt.com
摘 要:从移动智能网综合网管的定义及发展现状出发,讨论了综合网管系统中实现通用网元代理的必要性及特殊需求,并结合插件技术的特点,给出了一种基于插件的高扩展性的通用网元代理设计方案,阐述了该方案的工作机制和相关技术要点,最后分析了该方案在现有网络管理体系结构中的优势及待解决的问题。
关键词:插件,移动智能网,综合网管系统,通用网元代理
Analysis and Design of General Network Element Agent for Integrated Network Management System Based on Plugin Technology
Wang Meng1, 2,Zhu Xiaomin1, 2,Li Wei1, 2
1 State Key Laboratory of Networking and Switching Technology,Beijing University of Posts and Telecommunications,Beijing (100876)
2 EBUPT Information Technology Co. Ltd.,Beijing (100191)
E-mail:wangmeng@ebupt.com
Abstract:Starting from the definition and development status of the integrated network management of mobile intelligent network, this paper discussed the need for integrated network management system to achieve general network agent. After introducing the characteristics of plugin technology, this paper proposed a high scalable design of general network element agent based on plugin technology, then illuminated the working mechanism and related technical points. In the end, this paper analyzed the adaptability of the framework to the current network management architecture and points out the problem should be solved.
Key words:Plugin, Integrated Network Management, General Network Element Agent
1. 引 言
移动智能网是一种在移动网中快速、有效、经济、方便的提供新业务的网络体系结构[1]。随着移动智能网的发展成熟,部署在网络上的业务系统不断出现,软件和主机的数量也在相应的增多,网络和业务资源的管理问题也越来越突出[2]。综合网管系统可以通过一个控制操作台实现对互联的多个业务网络的管理,能够提供对多专业多厂家多个业务子网的透视、对所管业务的了解及对故障定位和故障排除的支持。
随着智能网业务的拓展[3],原有的业务系统需要进行修改或者升级,可能会增加或者修改网管监控数据,其自身的业务数据如KPI(Key Performance Indicator,关键绩效指标)等也可能会发生变化,而目前只能通过更新各个业务系统的网管代理来进行适应,导致现网维护的成本较高,业务系统网管代理开发者的开发负担和现网工程客服人员的升级维护负担较重,因此如何设计一种通用可扩展的网元代理,在业务系统功能变动或者扩展时,不需要对代理进行重新开发,以最小的代价适应智能网业务的发展,是一个亟需解决的问题。
插件式架构的应用系统具有良好的扩充性、可定制性和易维护性,本文即在论述插件设计思想的基础上提出了一种基于插件技术实现通用网元代理的设计思路。
2. 基于插件的软件设计思想
插件是一种遵循统一的预定义应用接口规范编写出来的程序,主框架程序(宿主程序)在运行时通过接口规范对插件进行调用,以扩展应用程序的功能[4]。插件结构有助于应用程序功能的扩充和维护,许多著名的软件都运用了这一技术,例如火狐浏览器、微信、Eclipse、Adobe Photoshop等。
2.1. 基于插件的软件开发框架
基于插件开发的软件可分为插件和宿主程序两部分,两者之间可以互相通信,宿主程序通过增删或者修改插件来扩充或者变更整个软件的功能。插件与调用它的宿主程序之间的结构关系如图 1所示。
图 1 插件和宿主程序UML关系图
可以看到宿主程序和插件之间需要事先约定好两种接口,其一是宿主程序接口,由宿主程序实现,插件调用这些接口获取宿主程序内部的各种资源和数据,宿主程序接口为插件提供了定制宿主程序所需的全部接口;其二从插件的角度,为了使宿主程序能够装载并成功调用,插件也必须遵循宿主程序提供的插件接口,它为宿主程序提供了装载和调度插件所需要的全部方法[5]。
2.2. 插件技术的优势
基于插件的软件开发框架能够有效的减少系统各模块之间的耦合;同时软件新增加功能时不需要修改现有代码,只需新开发插件进行安装即可,增强了软件的可扩展性;另外由于具体的功能由插件来实现,也降低了系统的整体复杂度。
3. 基于插件的通用网元代理分析与设计
3.1. 通用网元代理总体架构
通用网元代理作为综合网管系统的重要组成部分,它运行于所有的被管理主机,其主要功能在于收集被管理主机的各种配置和运行数据。根据插件式架构设计思想,可以将通用网元代理划分为代理接口、插件管理、插件调度和插件库四大部分(如图 2示)。
代理接口模块实现与综合网管系统控制中心的通信、消息转发等功能;插件管理模块实现系统对插件的管理功能,包括插件的新增、删除、验证、已安装插件信息查询、插件运行状态查询等功能;插件调度模块实现了插件自动安装升级、网管数据采集等通用网元代理的核心功能。
图 2 基于插件的通用网元代理结构
3.2. 插件及接口设计
通用网元代理接收综合网管系统的命令调用相应插件获取网管数据,因此不需要宿主程序提供接口,只需设计插件接口规范即可。因为每个插件都单独实现获取某种网管数据的功能,所以这里将插件设计为单独的可执行程序,而宿主程序通过调用这些单独的可执行程序来实现具体的功能。
插件接口要提供宿主程序调用插件所需的所有方法,包括帮助信息、版本信息、测试信息、参数配置信息、能力信息,所有为通用网元代理开发的插件都需要实现这些接口,根据插件的设计,插件接口需要通过传递给插件的参数来实现,分别对应插件-help、-version、-test、-paraminfo、-dataindex参数。其中参数信息即实现插件的功能所需要的必须的参数,供插件调用的时候使用;能力信息即插件实现功能的描述,将插件获取的数据细化为数据指标,例如CPU占用率,内存剩余容量等,所有插件返回信息均使用XML格式化,例如插件返回版本信息如图 3所示:
图 3 插件返回版本信息示例
根据具体需求,插件可以使用shell等脚本语言或者C/C++等高级语言编写,只需要符合上面所述的接口规范即可。
3.1. 插件库设计
由于插件需要从综合网管系统安装到通用网元代理,因此需要在代理本地维护一个插件库,建立目录分别存储不同形式或状态的插件,如表1所示。
插件目录名
|
功能
|
fresh
|
存放安装成功的插件可执行程序
|
source
|
存放从综合网管系统获取到的插件源代码
|
valid
|
存放验证通过的插件
|
test
|
存放插件验证结果
|
obsolete
|
存放废弃的插件
|
表 1 插件库设计
3.2. 插件管理设计
支持插件功能的应用程序都需要对已安装的插件进行管理。通用网元代理可以在一个配置文件中为每个已安装的插件维护一条记录,保存该插件的编号、版本、位置、状态、更新时间等信息,进而利用这些信息实现插件的安装、验证、卸载等管理功能。
根据实际情况,插件在通用网元代理侧的状态可划分为五种:初始、安装失败、安装成功、验证失败、有效。插件首次安装状态为初始,之后状态通过安装、卸载、验证三种操作进行迁移。插件状态之间的转换关系如图 4所示,其中实线为安装操作,虚线为卸载操作,点划线为验证操作。
当且仅当插件处于有效状态时,才能被通用网元代理调度使用。
图 4 插件状态转换关系
3.3. 插件调度设计
插件调度模块需要根据综合网管系统的指令执行相应的插件实现数据采集功能,通用网元代理侧启动单独的进程负责插件调度。由于综合网管系统的数据获取指令可能存在并发,因此插件调度进程需要支持同时维护多个调度任务,每一个调度任务都是一个状态迁移过程(如图 5所示),包括四种状态:修复(插件未准备好,修复插件),就绪(插件就绪,等待调度)、运行(插件运行)、结束(插件执行结束)。
图 5 插件调度状态迁移图
当插件状态非有效、插件不存在或者当前安装插件版本与接收的调度命令要求的不一致时,调度任务进入修复状态,此时通用网元代理从综合网管系统下载最新插件代码进行安装验证,插件状态变为有效后,调度任务才能进入就绪状态等待调度,从而实现了插件自动修复和自动升级的功能。
由于数据采集可能存在单次和定期两种情况,因此插件调度任务也需要支持两种模式:单次调度和周期调度。当处于周期调度模式时,调度任务进入结束状态后会再次迁移到就绪状态等待下次调度。
1. 结语
本文提出的基于插件的通用网元代理的设计思路在功能与技术上都突破了传统的思维,为综合网管系统提供了智能化、可扩展、易维护的网管数据采集服务,业务功能的变更或者业务系统的扩展只修要修改相应的插件即可完成兼容,降低了业务侧网管功能开发人员的负担以及网络维护成本。本文提到的插件结构需要在综合网管系统控制中心提供对所有系统支持插件的管理功能,还需要进一步的研究。
参考文献
[1] 廖建新,王晶,郭力等,移动智能网,北京邮电大学出版社,2000(11):1-10.
[2] 吕献美,王晶,移动智能网自动例检系统的分析与设计,电信技术,2009(8):108-110.
[3] 吕新荣,廖建新,朱晓民,武家春,无差别移动性管理网络,通信学报,2007,28(7):1-7.
[4] 李延春,软件插件技术的原理与实现[J],计算机系统应用,2003(7):24-26.
[5] 陈方明,陈奇,基于插件思想的可重用软件设计与实现[J],计算机工程与设计,2005(1):172-176.