通信网管系统自动集成网元的研究与实现
2015-04-29王超曹俊兴
王超 曹俊兴
摘 要: 随着通信技术的快速发展,运营商对网管系统提出了综合,高效和简捷的性能需求。根据TMN标准,网管系统对网元的管理应包括性能管理,配置管理和故障管理等业务功能。实现这些业务功能的前提条件是网管系统成功集成網元,但集成不是简单地建立连接,而要在监管软件上创建对象并设置属性,还需远程连接到网元执行命令进行配置。目前这些操作均是网管人员手工完成,当同时集成大量网元时,就会面临耗时长、操作繁琐和容易出错等问题。本应用采用WebService技术完成与另一应用软件的交互,使用SSHLibrary模块完成了远程配置网元,利用Python正则表达式模块完成了复杂字符串的处理。该软件是针对网管系统的第一次研究开发,达到了一键集成网元的目的,提高了网管系统的效率,促进了自动化技术的应用。
关键词 : 通信网络管理;网元;自动集成;Python;WebService
中图分类号:TP311 文献标识码:A 文章编号:2095-2163(2015-)02-
Research and Implementation of NMS Automatically Integrate NE
WANG Chao1,CAO Jun Xing2
(School of Information Science and?Technology, Chendu University of Technology, Chendu 610059,China)
Abstract: With the rapid development of communication technology, operators also require efficient and simple performance for network management system(NMS). According to the TMN standard, the management of network element (NE) should include performance management, configuration management and so on , such as fault management, network management ,with the basic condition that NMS successfully integrate NE. But the integration donot establish a simple connection , need to create the object and set properties on supervision software and remotely execute commands to configure network elements.by now these works are finished by personnel manual operation , when integrating a large number of network elements at the same time , facing a long, tedious and error-prone operation and so on. This application uses the web service technology to complete the interaction with other application, SSHLibrary modules to complete the remote configuration, Python regular expression modules to process complex string processing. The software is the first time in view of NMSs research and development, achieving fast and accurately integration, improving the efficiency of NMS, promoting the application of automation technology.
Keywords: Communication Network Management; Network Element; Automatic Integration; Python; WebServic
0 引 言
随着4G通信的广泛应用,移动互联、物联网技术也进入了高速发展时期。运营商对通信基础设施进行维护和管理是保障通信质量的关键,为完成对某地区所有通信设备的管理,网管系统起着至关重要的作用。网管系统提供有故障处理、配置管理、性能管理等业务功能。在对网元实现管理前,集成工作是必经环节,然而如何避免手工集成耗时和繁琐的弊端,成为网管人员亟待解决的问题,针对上述需求提出了自动集成软件的开发。该软件运用了WebService技术,使用了Python语言,借助开源模块和自主设计的算法完成了整个开发工作。文中主要分析了后台的工作流程和原理,详细论述了WebService技术和算法编程。该软件整合Shell、Perl脚本和XML文件的使用,完成了所有工作模块,目前该软件已正式发布并赢得客户的喜爱与青睐。
1 基本概念
1.1网管系统及网元
如图1所示为网管系统与网元的拓扑结构,网管系统是指进行网络管理和通信设备维护的软硬件系统,网管系统对网元设备集中监护、集中管理,通过采集各种数据实现对全网的监控,未来将逐步实现自动化处理,智能化管理的需求。网管系统应满足以下指标:系统平均无故障时间应大于100天,重大警告的处理正确性达99%,性能数据准确性不小于99%,应用系统的实用性简单明了。目前对网管系统的基本功能要求有告警处理、性能管理、配置管理和报表查询。网管系统也逐渐由传统服务器/客户端模式向多应用层服务体系结构发展,具体可分为三层:数据采集层,数据处理层和应用层,而应用层主要完成网络的拓扑、互联互通分析、路由管理、生成报表的模版,故障处理流程,安全管理等。
图 1 网管集成网元拓扑
Fig.1 Topology of NMS integrating network
网元在这里主要指基站控制器,这是基站收发台和移动交换中心之間的连接点,也为基站收发台和移动交换中心提供接口。一个基站控制器通常控制几个基站收发台,其主要功能是进行无线信道管理、实施呼叫和通信链路的建立和拆除,并为本控制区内移动台的过区切换提供控制等[1]。
1.2 集成概念
网管系统对基站控制器实施管理,首先需要进行集成操作,成功集成之后才能对该网元进行配置管理,告警处理和性能管理等。集成工作主要包括:在Moniter(网管系统上基于Java的监管软件)上创建osi对象,可根据管理模式、网元类型和通信协议在该对象下配置属性值,Moniter对网元进行监管时,根据已创建的对象及其属性值实施具体的管理方案。比如为实现网元的远程终端,需要创建MML对象并设置协议及其端口号、网元用户连同密码等属性,网管系统会检查是否创建了FTP-PM对象来选择从网元端上传数据采用的协议及处理方式。另外,通过远程连接到网元端进行命令行操作,即在网元端设置网管服务器的信息并开启相关的服务应用。如果采用手工操作同时将几十个网元集成到某一网管系统下,则需要反复进行创建对象、设置属性的操作,这样不仅耗时而且容易出错,通过开发自动集成应用可以实现客户一键完成网管和网元的集成。成功集成之后,网管系统不仅实现了与网元的互联互通,同时根据网管人员的要求完成了相关对象的创建和属性设置,保障了网管系统对该网元实施各项管理功能[2]。
2 设计原理
自动集成的设计原理如图2所示。该应用软件是基于网管系统Linux服务器的,主要通过Python程序实现。其工作原理及设计框图均如图2所示,自动集成开始后程序首先检查网管系统运行是否正常,然后远程连接到网元检测其工作状态。校验成功之后保存来自GUI或命令行的初始化配置文件,同时调用shell脚本转换初始化文件的信息并融合内置配置文件1得到完整的配置文件,该配置文件包括网元类型、通信协议、需创建的对象及其属性。内置配置文件2定制了在网管系统服务器上执行操作的流程,即调用Python程序文件的顺序。Python程序先读取配置文件,再使用WebService技术在Moniter上创建相应的对象并设置属性。同时调用SSHLibrary远程连接到网元,利用正则表达式模块处理命令执行的结果,根据网元当前状态和集成要求执行配置命令。最后进行集成的校验,比如扫描日志是否有报错,在网元端产生告警后查看网管系统是否接受到告警,网元端产生的数据是否上传到网管服务器,数据是否插入到对应的数据库表里[3]。
图 2 设计原理
Fig.2 Designing principle
3 关键技术
3.1 WebService
WebService是一个平台独立的、低耦合的、自包含的、基于可编程的web的应用程序,可使用开放的XML标准来描述、发布、协调和配置这些应用程序,用于开发分布式的互操作的应用程序,Webservice的三要素:SOAP、WSDL和UDDI。SOAP即简单对象访问协议(Simple Object Access Protocol),就是用于交换XML编码信息的轻量级协议。一条 SOAP 消息就是一个普通的 XML 文档,包含下列元素:必需的 Envelope 元素,可把此XML 文档标识为一条 SOAP 消息;可选的Header元素,包含头部信息;必需的 Body 元素,包含所有的调用和响应信息;可选的Fault元素,提供有关在处理此消息所发生错误的信息。WebService描述语言WSDL基于XML的语言,用于描述WebService及其函数、参数和返回值。WSDL既是机器可阅读的,又是人可阅读的,一些开发工具既能根据开发者的WebService生成WSDL文档,又能导入WSDL文档,生成调用相应WebService的代码。UDDI是一套基于Web的、分布式的、为WebService提供的、信息注册中心的实现标准规范,用来管理、分发、查询WebService[4]。
该自动集成软件利用网管系统建立WebService服务器,采用Python编写的开源ZSI模块,可在Moniter上完成对象的创建、更新、查询和删除等操作。下面以创建对象及设置属性的源码为例,介绍该模块的实现原理[5]。完整源代码可描述如下。
from ZSI import client
from ZSI.schema import GED, GTD
import ZSI
from ZSI.generate.pyclass import pyclass_type #导入ZSI相关模块
class TopologyOperations():
def __init__(self,url,user,password):
self.binding = client.Binding(url=url, **kw) #绑定WSDL地址
self.binding.SetAuth(AUTH.httpbasic, user, password)
def create_delete_modify_objects(object_list, ne_type,operation="create"):
createObjectsRequest=GED("http://.../persistency/operations","CreateobjectRequest").pyclass() #产生resquest createObjectsResponse=GED("http://.../persistency/operations","CreateobjectResponse").pyclass #发送resquest
self.binding.Send(None,None,createObjectsRequest,soapaction="http://.../WSPersistency/createObjects", **kw)
response = self.binding.Receive(createObjectsResponse.typecode)
return response #返回执行结果
create_delete_modify_objects(object_list,ne_type="BSC",operation="create")调用之后即可实现在Moniter对象的创建,wsdlLocationURL为WebService的WSDL地址,object_list为链表类型,包括需要创建的对象及对象的属性值。程序工作流程:首先绑定WSDL地址,并将object_list的内容生成一定格式的request,再将request发送到WSDL端,同时调用WebService创建对象的方法,最后将执行结果保存于response变量中[6]。
3.2 字符处理算法
首先,调用远程模块登录到网元并执行相关的命令,然后将命令执行结果存于字符串变量中,最后按行切割存储在列表变量中。如下字符串为网元执行某命令的返回结果,經简单处理后将每行字符串作为列表的元素保存在列表变量中,方便算法对其进行后续的精确处理。
['NET ADDR ROLE NUM PRIO NUM PRIO NUM PRIO\n',
'ADR_TEST1 REMOTE 12 100 13 20 14 99\n',
' 15 101 16 100 17 98\n',
'ADR_TEST2 REMOTE 18 102 19 100 20 97\n',
' 21 103 22 100 23 96\n',
'COMMAND EXECUTED\n']
上述字符串列表是网元端某一命令的返回值,此时要求将各个NUM及对应的PRIO 值提取出来并保存于字典变量中,由于网元状态的不确定性和非相关数字的干扰,提取的值可能无效或不相对应。为了能够准确无误地提取研发需要的值,编写了如下字符串处理算法。具体如下:
def get_num_and_priority_value(self,command_result):
if(len(filter(lambda x:'NET ADDR' in x,command_result))>0):
priority_line = filter(lambda x:'NET ADDR' in command_result[x] or 'COMMAND EXECUTED' in command_result[x], range(0,len(command_result))) #有效值定位
if(len(priority_line)==2 and priority_line[1]>priority_line[0]+1):#提取有效值
priority=re.findall('(\s+[0-9]+\s+[0-9-]+)',''.join(map(lambdax:x.strip(),filter(lambda x:re.search(r'(REMOTE|LOCAL|\d+)',x),command_result[priority_line[0]+1:priority_line[1]]))))
priorityAndNumMap=dict(tuple(map(lambda y: y.split(),map(lambda x: x.strip(),priority))))
#有效值结果:{12:100,13:20,14:99,15:101,16:100,17:98,18:102,19:100,20:97,21:103,22:100,23:96}
return priorityAndNumMap
程序执行流程:首先检测字符串'NET ADDR'是否在命令的执行结果中,若存在则开始定位NUM及PRIO所在的行区间,之后利用正则表达式提取所有NUM及PRIO的值,最后使用dict(tuple())转换存于字典变量中。其中使用了lambda匿名函数,filter,map高阶函数,并结合正则表达式模块准确、高效地提取了有效值。上述程序可作为处理命令行结果的万能模板,不仅能准确定位有效字符串的位置,而且有序地将key值及对应的属性值存于字典变量中[7]。
4结束语
该自动化集成软件,简化了繁琐的手工操作,采用自动化并行的方式,提高了网管系统的效率并降低了出错率,满足了客户需求。软件后台利用WebService技术实现了与另一应用软件的交互,调用SSHLibrary远程连接到网元,进行网元的配置。在处理网元命令返回的字符串时,借助正则表达式及函数式编程构建了兼容性较强的处理算法,该算法精确地匹配字符并有序地进行处理,结合前端的交互,实现了整个自动化集成软件的开发。网管系统对网元实施管理时集成连接是前提保障,目前在校验的模块上只添加了基本的检验点,为保证集成的质量应扩大校验的范围,优化编程实现快速全面校验集成结果。
参考文献:
[1] 张乃通,等编著. 移动通信系统[M]. 哈尔滨:哈尔滨工业大学出版社, 2001.
[2] 杨云,郑伟,王绍军,主编. Linux操作系统与实训[M]. 北京:清华大学出版社, 2015.
[3] 王传杰,常春霞,肖文栋. 基于XML的移动通信网管数据处理层的设计实现[J].信息技术与标准化,2011(3):38-40.
[4] 王向方,武伟,唐伟媛. WebService技术在企业中的应用[J].电脑编程技巧与维护,2015(2):52-54.
[5](美)丘恩(Chun. W.J.)著. Python核心编程[M]. 宋吉广, 译.北京:人民邮电出版社, 2008.
[6] 肖旻,陈行.基于Python语言编程特点及应用之探讨[J].电脑知识与技术,2014(34):36-38.
[7](美)Jeffrey E. F. Friedl,著. 精通正则表达式 第3版[M].余晟,译. 北京:电子工业出版社, 2007.
1 作者简介:王 超(1990-),男,四川巴中人,硕士研究生,主要研究方向:嵌入式系统设计、信号与信息处理;
曹俊兴(1961-),男,陕西长武人,博士,教授,博士生导师,主要研究方向:地球探测与信息技术、信号与信息处理。