王维列
摘 要: CORBA提供面向对象的互操作,作为实现分布管理对象访问的处理方式,是很有应用前景的系统集成标准。在EMS北向CORBA接口功能的基础上提出了接口的总体结构,并详细讨论了总体结构中通道模块和业务模块的设计和实现。系统运行表明,所设计的功能达到了预期要求。
关键词: CORBA; 网元管理系统; 网管; 同步数字体系统
中图分类号:TN915 文献标志码:A 文章编号:1006-8228(2013)05-13-02
Design of north CORBA interface for EMS network management
Wang Weilie
(Zhejiang Guangxin Research Institute of intelligent building, Hangzhou, Zhejiang 310012, China)
Abstract: The CORBA, as a means of implementation of distributed object management, is a promising standard for system integration, and provides an interoperation standard for object-oriented application. The overall structure of the interface is proposed based on the functions of EMS North CORBA interface, and the design and implementation of channel module and business related modules are carefully discussed. The running system shows that the designed functions are satisfactory as expected.
Key words: CORBA; EMS; NMS; SDH
0 引言
CORBA是由OMG( Object Management Group)负责制定和维护的一组规范。与过去面向过程的RPC(Remote Procedure Call)不同,CORBA基于面向对象技术,能解决远程对象之间的互操作问题,是对象管理组织所定义的用来实现硬件、软件之间互操作的解决方案,是迈向面向对象标准化和互操作的重要一步[1]。目前,国内外对CORBA技术的研究是朝着更高效、更实时、更多对象的方向发展。基于以上原因,提供基于CORBA技术的多厂商接口已成为解决多厂商环境问题最理想的方法之一。在基于CORBA技术的多厂商接口中,EMS北向接口是实现整个多厂商接口的前提和关键,是SMN管理体系中网元管理层和网络管理层之间的桥梁。它为NMS端提供各种预定义的操作,支持网管人员通过NMS系统对SDH设备直接进行操作。
1 EMS网管北向CORBA接口设计
1.1 总体结构
如图1所示,EMS北向CORBA接口软件处于厂商设备原有的EMS系统和综合网管NMS之间,完成网管信息从网元管理层到网络管理层的传递,它的数据主要来源于SDH设备和系统数据库。从功能上看,EMS北向CORBA接口由通道模块和业务处理模块两大部分组成。
[网管][通道模块][业务处理模块] [网络单元数据] [NML][EML] [NorthBound][Socket] [数据库][SQL]
图1 EMS北向CORBA接口體系结构
1.2 通道模块设计
在整个CORBA北向接口中,通道模块封装了所有与CORBA技术相关的操作,同时向其他模块提供各种必要的接口。通道模块中涉及到的主要问题有CORBA服务对象POA策略的选择、CORBA通知服务的应用、大容量数据包的发送等。
⑴ POA策略的选择
可移植对象适配器POA是基本对象适配器BOA的替代方式,提供大量可扩展的接口,来处理一些对于BOA来说不合理的要求。因此在北向CORBA项目中我们决定选择POA作为对象适配器。
可以根据不同的应用背景在程序中设置多个不同的POA,每个POA根据在其上注册对象的多少,访问频率,以及生命周期的不同选择不同的策略。为一般管理接口对象和迭代器接口对象分别建立了一个POA,并为它们设置不同的策略,详细描述如表1所示。
表1 POA策略的选择
[ 策略 使用对象\&一般管理接口对象\&迭代器接口对象\&线程策略\&ORB_CTRL_MODEL\&ORB_CTRL_MODEL\&生命周期策略\&PERSISTENT\&TRANSIENT\&对象ID惟一性策略\&UNIQUIE\&UNIQUIE\&ID分配策略\&SYSTEMID\&SYSTEMID\&服务对象保留策略\&RETAIN\&RETAIN\&请求处理策略\&USE_ACTIVE_MAP_ONLY\&USE_ACTIVE_MAP_ONLY\&隐式激活策略\&NO_IMPLICIT\&IMPLICIT\&]
⑵ CORBA通知服务的应用
在基于CORBA的SMN体系结构中,一般采用CORBA标准的C/S调用模式来完成不同厂商系统之间信息的交换。这时,CORBA北向接口相当于CORBA服务器端,提供不同的接口对象供NMS端调用[2]。
但是另外有一类信息必须由被管理者主动地上报给管理者,使得管理端能够及时进行处理。这类信息主要包括告警信息、性能越界信息,以及设备配置的改变信息等等[3]。对于这类信息,我们考虑采用CORBA通知服务来实现主动上报功能。这样既能使被管理端信息实时主动地到达管理端,又能大大降低开发的复杂度。
上述类型的信息定义了以下的事件类型,基本上涵盖了SMN中常见的应用:
NT_OBJECT_CREATION 对象创建;
NT_OBJECT_DELETION 对象删除;
NT_ATTRIBUTE_VALUE_CHANGE 属性值变化;
NT_STATE_CHANGE 状态变化;
NT_ROUTE_CHANGE 路由变化;
NT_PROTECTION_SWITCH 保护倒换;
NT_TCA 性能门限突破;
NT_ALARM 告警上报。
当发生上述事件时,EMS主动地调用CORBA通知服务上报事件,而NMS端则可以根据自己的需要对这些事件进行过滤或预订,以获取自己感兴趣的事件类型。
⑶ 大容量数据包的处理策略
在NMS和EMS交互的过程中涉及到大量大容量数据包的交换和传递。在设计的过程中,我们引入了迭代器的概念。迭代器是一个封装了大容量数据包的对象,该对象提供获取任意长度数据包的功能。通过迭代器的使用可以使大容量数据包分批传送和处理,变串行过程为并行过程,增加了传送和处理过程的灵活性和可控制性。
1.3 业务模块设计
业务模块完成与SDH相关以及其他的辅助功能,它除了要和通道模块打交道之外,还要与系统数据库和EMS网管系统进行交互。
1.3.1 日志处理子模块
日志操作子模块的主要任务是完成操作日志的显示、打印和保存功能。根据面向对象的设计原则,为日志操作模块设计了一个类TLog,向其他管理模块提供日志的显示、打印和保存接口。
1.3.2 数据采集子模块
⑴ 实时数据的获取
实时数据的获取都要求与SDH设备进行通信。但是北向CORBA接口不可能与SDH设备直接通信,否则就成了另一个网元管理系统了。因此在设计的过程中,决定通过与EMS网管系统交互来间接获取实时数据。北向CORBA接口与EMS网管系统交互的过程如图2所示。
[网管][北向接口] [CORBA][网络管理层][网元管理层][操作界面][管理代理][TCP/IP] [TCP/IP] [同步数字系统设备][EMS] [网络单元层][Q3]
图2 通过与管理代理交互获取SDH设备上的实时数据
从图2中可以看到,EMS系统由GUI和MANAGER两部分构成,其中GUI是网管系统的操作界面,而MANAGER是管理代理,通过Q3接口与网元层的SDH设备直接进行通信,GUI和MANAGER之间通过TCP/IP协议进行交互。数据采集子模块通过向EMS系统的管理代理MANAGER下发SOCKET命令来间接获取实时数据。MANAGER收到SOCKET命令后通过Q3接口取得SDH设备上的数据再返回给数据采集子模块。可以看到,数據采集子模块与MANAGER之间的交互过程和GUI与MANAGER之间的交互过程类似,因此可以采用相同的通信方式。
⑵ 数据库数据的获取
对于CORBA北向接口来说,数据库操作主要是进行数据的获取。可以使用C++BUILDER自带的控件TDatabase通过BORLAND数据库引擎BDE连接SQL Server数据库,然后使用TBDEClientDataSet控件作为数据集来最终访问数据库[4]。
由于某一时刻可能有多个线程访问数据库,因此数据采集子模块中将提供5个TBDEClientDataSet控件作为数据集池,每个线程必须先获得当前空闲的数据集方能访问数据库,否则程序弹出无空闲数据集的异常。访问数据库采用直接写SQL语句的方式,这样可以使开发时有尽可能大的灵活性[5]。
⑶ 常量数据的获取
对于常量数据,数据采集子模块使用宏定义的方法,便于以后数据的修改和更新。当数据采集模块从不同的数据源获得了所需的数据之后必须按照约定的规则格式化数据,以便NMS能够在获得数据之后通过分析数据获得所需的信息。
1.3.3 通知转发子模块
EMS北向CORBA接口是提供给网络层管理系统NMS的一个接口,NMS可以通过该接口对SDH网络进行各种预定义的操作。另一方面,EMS网元管理系统也可以对SDH网络进行各种操作。这就涉及到一个网络同步的问题,具体地说,当EMS网元管理系统对网络设备进行了某项操作,并且这项操作将会影响到NMS系统的管理时,那么北向CORBA接口必须及时地把操作结果以通知的形式发送到NMS端;同样的道理,当NMS对SDH网络进行了某项操作,而这项操作将会影响到EMS端GUI界面的显示时,则北向CORBA接口必须主动地把操作结果转发给EMS系统,以及时刷新界面显示。通知转发子模块即完成这部分功能。
因此,通知转发子模块可以直接使用数据采集子模块中建立的命令发送通道,剩下来要做的只是命令字的定义而已。
2 结束语
本文对EMS网管北向CORBA接口的设计进行了详细的探讨。目前,CORBA技术还存在着一些缺点,如:对实时性能支持不太理想;对海量对象的支持不够完善。这些都是我们今后研究的方向[6]。随着CORBA3.0规范的推出和更多的CORBA服务规范和基础设施规范的制定,这些问题将得到一定程度的解决。
参考文献:
[1] 李玲,刘岩,林君.CORBA技术与TMN技术集成研究[J].长春邮电学
院学报,2001.19(4):1-6
[2] 吴军等,卢正鼎.CORBA在传输网网络管理系统中的应用[J].光通信
研究,2003.29(5):25-28
[3] 周文生,王学睿,胡维华.CORBA通知服务在TMN中的应用[J].计算
机应用,2003.23(12):132-134
[4] Borland/Inprise公司.C++ BUILDER 5开发人员指南[M].机械工业
出版社,2000.
[5] Konrad King著,杜大鹏译.SQL编程实用大全[M].中国水利水电出
版社,2003.
[6] 朱其亮,郑斌.CORBA原理及应用[M].北京邮电大学出版社,2001.