王超 曹俊興
摘 要: 隨著通信技術(shù)的快速發(fā)展,運(yùn)營(yíng)商對(duì)網(wǎng)管系統(tǒng)提出了綜合,高效和簡(jiǎn)捷的性能需求。根據(jù)TMN標(biāo)準(zhǔn),網(wǎng)管系統(tǒng)對(duì)網(wǎng)元的管理應(yīng)包括性能管理,配置管理和故障管理等業(yè)務(wù)功能。實(shí)現(xiàn)這些業(yè)務(wù)功能的前提條件是網(wǎng)管系統(tǒng)成功集成網(wǎng)元,但集成不是簡(jiǎn)單地建立連接,而要在監(jiān)管軟件上創(chuàng)建對(duì)象并設(shè)置屬性,還需遠(yuǎn)程連接到網(wǎng)元執(zhí)行命令進(jìn)行配置。目前這些操作均是網(wǎng)管人員手工完成,當(dāng)同時(shí)集成大量網(wǎng)元時(shí),就會(huì)面臨耗時(shí)長(zhǎng)、操作繁瑣和容易出錯(cuò)等問(wèn)題。本應(yīng)用采用WebService技術(shù)完成與另一應(yīng)用軟件的交互,使用SSHLibrary模塊完成了遠(yuǎn)程配置網(wǎng)元,利用Python正則表達(dá)式模塊完成了復(fù)雜字符串的處理。該軟件是針對(duì)網(wǎng)管系統(tǒng)的第一次研究開(kāi)發(fā),達(dá)到了一鍵集成網(wǎng)元的目的,提高了網(wǎng)管系統(tǒng)的效率,促進(jìn)了自動(dòng)化技術(shù)的應(yīng)用。
關(guān)鍵詞 : 通信網(wǎng)絡(luò)管理;網(wǎng)元;自動(dòng)集成;Python;WebService
中圖分類(lèi)號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):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通信的廣泛應(yīng)用,移動(dòng)互聯(lián)、物聯(lián)網(wǎng)技術(shù)也進(jìn)入了高速發(fā)展時(shí)期。運(yùn)營(yíng)商對(duì)通信基礎(chǔ)設(shè)施進(jìn)行維護(hù)和管理是保障通信質(zhì)量的關(guān)鍵,為完成對(duì)某地區(qū)所有通信設(shè)備的管理,網(wǎng)管系統(tǒng)起著至關(guān)重要的作用。網(wǎng)管系統(tǒng)提供有故障處理、配置管理、性能管理等業(yè)務(wù)功能。在對(duì)網(wǎng)元實(shí)現(xiàn)管理前,集成工作是必經(jīng)環(huán)節(jié),然而如何避免手工集成耗時(shí)和繁瑣的弊端,成為網(wǎng)管人員亟待解決的問(wèn)題,針對(duì)上述需求提出了自動(dòng)集成軟件的開(kāi)發(fā)。該軟件運(yùn)用了WebService技術(shù),使用了Python語(yǔ)言,借助開(kāi)源模塊和自主設(shè)計(jì)的算法完成了整個(gè)開(kāi)發(fā)工作。文中主要分析了后臺(tái)的工作流程和原理,詳細(xì)論述了WebService技術(shù)和算法編程。該軟件整合Shell、Perl腳本和XML文件的使用,完成了所有工作模塊,目前該軟件已正式發(fā)布并贏得客戶的喜愛(ài)與青睞。
1 基本概念
1.1網(wǎng)管系統(tǒng)及網(wǎng)元
如圖1所示為網(wǎng)管系統(tǒng)與網(wǎng)元的拓?fù)浣Y(jié)構(gòu),網(wǎng)管系統(tǒng)是指進(jìn)行網(wǎng)絡(luò)管理和通信設(shè)備維護(hù)的軟硬件系統(tǒng),網(wǎng)管系統(tǒng)對(duì)網(wǎng)元設(shè)備集中監(jiān)護(hù)、集中管理,通過(guò)采集各種數(shù)據(jù)實(shí)現(xiàn)對(duì)全網(wǎng)的監(jiān)控,未來(lái)將逐步實(shí)現(xiàn)自動(dòng)化處理,智能化管理的需求。網(wǎng)管系統(tǒng)應(yīng)滿足以下指標(biāo):系統(tǒng)平均無(wú)故障時(shí)間應(yīng)大于100天,重大警告的處理正確性達(dá)99%,性能數(shù)據(jù)準(zhǔn)確性不小于99%,應(yīng)用系統(tǒng)的實(shí)用性簡(jiǎn)單明了。目前對(duì)網(wǎng)管系統(tǒng)的基本功能要求有告警處理、性能管理、配置管理和報(bào)表查詢。網(wǎng)管系統(tǒng)也逐漸由傳統(tǒng)服務(wù)器/客戶端模式向多應(yīng)用層服務(wù)體系結(jié)構(gòu)發(fā)展,具體可分為三層:數(shù)據(jù)采集層,數(shù)據(jù)處理層和應(yīng)用層,而應(yīng)用層主要完成網(wǎng)絡(luò)的拓?fù)?、互?lián)互通分析、路由管理、生成報(bào)表的模版,故障處理流程,安全管理等。
圖 1 網(wǎng)管集成網(wǎng)元拓?fù)?/p>
Fig.1 Topology of NMS integrating network
網(wǎng)元在這里主要指基站控制器,這是基站收發(fā)臺(tái)和移動(dòng)交換中心之間的連接點(diǎn),也為基站收發(fā)臺(tái)和移動(dòng)交換中心提供接口。一個(gè)基站控制器通??刂茙讉€(gè)基站收發(fā)臺(tái),其主要功能是進(jìn)行無(wú)線信道管理、實(shí)施呼叫和通信鏈路的建立和拆除,并為本控制區(qū)內(nèi)移動(dòng)臺(tái)的過(guò)區(qū)切換提供控制等[1]。
1.2 集成概念
網(wǎng)管系統(tǒng)對(duì)基站控制器實(shí)施管理,首先需要進(jìn)行集成操作,成功集成之后才能對(duì)該網(wǎng)元進(jìn)行配置管理,告警處理和性能管理等。集成工作主要包括:在Moniter(網(wǎng)管系統(tǒng)上基于Java的監(jiān)管軟件)上創(chuàng)建osi對(duì)象,可根據(jù)管理模式、網(wǎng)元類(lèi)型和通信協(xié)議在該對(duì)象下配置屬性值,Moniter對(duì)網(wǎng)元進(jìn)行監(jiān)管時(shí),根據(jù)已創(chuàng)建的對(duì)象及其屬性值實(shí)施具體的管理方案。比如為實(shí)現(xiàn)網(wǎng)元的遠(yuǎn)程終端,需要?jiǎng)?chuàng)建MML對(duì)象并設(shè)置協(xié)議及其端口號(hào)、網(wǎng)元用戶連同密碼等屬性,網(wǎng)管系統(tǒng)會(huì)檢查是否創(chuàng)建了FTP-PM對(duì)象來(lái)選擇從網(wǎng)元端上傳數(shù)據(jù)采用的協(xié)議及處理方式。另外,通過(guò)遠(yuǎn)程連接到網(wǎng)元端進(jìn)行命令行操作,即在網(wǎng)元端設(shè)置網(wǎng)管服務(wù)器的信息并開(kāi)啟相關(guān)的服務(wù)應(yīng)用。如果采用手工操作同時(shí)將幾十個(gè)網(wǎng)元集成到某一網(wǎng)管系統(tǒng)下,則需要反復(fù)進(jìn)行創(chuàng)建對(duì)象、設(shè)置屬性的操作,這樣不僅耗時(shí)而且容易出錯(cuò),通過(guò)開(kāi)發(fā)自動(dòng)集成應(yīng)用可以實(shí)現(xiàn)客戶一鍵完成網(wǎng)管和網(wǎng)元的集成。成功集成之后,網(wǎng)管系統(tǒng)不僅實(shí)現(xiàn)了與網(wǎng)元的互聯(lián)互通,同時(shí)根據(jù)網(wǎng)管人員的要求完成了相關(guān)對(duì)象的創(chuàng)建和屬性設(shè)置,保障了網(wǎng)管系統(tǒng)對(duì)該網(wǎng)元實(shí)施各項(xiàng)管理功能[2]。
2 設(shè)計(jì)原理
自動(dòng)集成的設(shè)計(jì)原理如圖2所示。該應(yīng)用軟件是基于網(wǎng)管系統(tǒng)Linux服務(wù)器的,主要通過(guò)Python程序?qū)崿F(xiàn)。其工作原理及設(shè)計(jì)框圖均如圖2所示,自動(dòng)集成開(kāi)始后程序首先檢查網(wǎng)管系統(tǒng)運(yùn)行是否正常,然后遠(yuǎn)程連接到網(wǎng)元檢測(cè)其工作狀態(tài)。校驗(yàn)成功之后保存來(lái)自GUI或命令行的初始化配置文件,同時(shí)調(diào)用shell腳本轉(zhuǎn)換初始化文件的信息并融合內(nèi)置配置文件1得到完整的配置文件,該配置文件包括網(wǎng)元類(lèi)型、通信協(xié)議、需創(chuàng)建的對(duì)象及其屬性。內(nèi)置配置文件2定制了在網(wǎng)管系統(tǒng)服務(wù)器上執(zhí)行操作的流程,即調(diào)用Python程序文件的順序。Python程序先讀取配置文件,再使用WebService技術(shù)在Moniter上創(chuàng)建相應(yīng)的對(duì)象并設(shè)置屬性。同時(shí)調(diào)用SSHLibrary遠(yuǎn)程連接到網(wǎng)元,利用正則表達(dá)式模塊處理命令執(zhí)行的結(jié)果,根據(jù)網(wǎng)元當(dāng)前狀態(tài)和集成要求執(zhí)行配置命令。最后進(jìn)行集成的校驗(yàn),比如掃描日志是否有報(bào)錯(cuò),在網(wǎng)元端產(chǎn)生告警后查看網(wǎng)管系統(tǒng)是否接受到告警,網(wǎng)元端產(chǎn)生的數(shù)據(jù)是否上傳到網(wǎng)管服務(wù)器,數(shù)據(jù)是否插入到對(duì)應(yīng)的數(shù)據(jù)庫(kù)表里[3]。
圖 2 設(shè)計(jì)原理
Fig.2 Designing principle
3 關(guān)鍵技術(shù)
3.1 WebService
WebService是一個(gè)平臺(tái)獨(dú)立的、低耦合的、自包含的、基于可編程的web的應(yīng)用程序,可使用開(kāi)放的XML標(biāo)準(zhǔn)來(lái)描述、發(fā)布、協(xié)調(diào)和配置這些應(yīng)用程序,用于開(kāi)發(fā)分布式的互操作的應(yīng)用程序,Webservice的三要素:SOAP、WSDL和UDDI。SOAP即簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議(Simple Object Access Protocol),就是用于交換XML編碼信息的輕量級(jí)協(xié)議。一條 SOAP 消息就是一個(gè)普通的 XML 文檔,包含下列元素:必需的 Envelope 元素,可把此XML 文檔標(biāo)識(shí)為一條 SOAP 消息;可選的Header元素,包含頭部信息;必需的 Body 元素,包含所有的調(diào)用和響應(yīng)信息;可選的Fault元素,提供有關(guān)在處理此消息所發(fā)生錯(cuò)誤的信息。WebService描述語(yǔ)言WSDL基于XML的語(yǔ)言,用于描述WebService及其函數(shù)、參數(shù)和返回值。WSDL既是機(jī)器可閱讀的,又是人可閱讀的,一些開(kāi)發(fā)工具既能根據(jù)開(kāi)發(fā)者的WebService生成WSDL文檔,又能導(dǎo)入WSDL文檔,生成調(diào)用相應(yīng)WebService的代碼。UDDI是一套基于Web的、分布式的、為WebService提供的、信息注冊(cè)中心的實(shí)現(xiàn)標(biāo)準(zhǔn)規(guī)范,用來(lái)管理、分發(fā)、查詢WebService[4]。
該自動(dòng)集成軟件利用網(wǎng)管系統(tǒng)建立WebService服務(wù)器,采用Python編寫(xiě)的開(kāi)源ZSI模塊,可在Moniter上完成對(duì)象的創(chuàng)建、更新、查詢和刪除等操作。下面以創(chuàng)建對(duì)象及設(shè)置屬性的源碼為例,介紹該模塊的實(shí)現(xiàn)原理[5]。完整源代碼可描述如下。
from ZSI import client
from ZSI.schema import GED, GTD
import ZSI
from ZSI.generate.pyclass import pyclass_type #導(dǎo)入ZSI相關(guān)模塊
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() #產(chǎn)生resquest createObjectsResponse=GED("http://.../persistency/operations","CreateobjectResponse").pyclass #發(fā)送resquest
self.binding.Send(None,None,createObjectsRequest,soapaction="http://.../WSPersistency/createObjects", **kw)
response = self.binding.Receive(createObjectsResponse.typecode)
return response #返回執(zhí)行結(jié)果
create_delete_modify_objects(object_list,ne_type="BSC",operation="create")調(diào)用之后即可實(shí)現(xiàn)在Moniter對(duì)象的創(chuàng)建,wsdlLocationURL為WebService的WSDL地址,object_list為鏈表類(lèi)型,包括需要?jiǎng)?chuàng)建的對(duì)象及對(duì)象的屬性值。程序工作流程:首先綁定WSDL地址,并將object_list的內(nèi)容生成一定格式的request,再將request發(fā)送到WSDL端,同時(shí)調(diào)用WebService創(chuàng)建對(duì)象的方法,最后將執(zhí)行結(jié)果保存于response變量中[6]。
3.2 字符處理算法
首先,調(diào)用遠(yuǎn)程模塊登錄到網(wǎng)元并執(zhí)行相關(guān)的命令,然后將命令執(zhí)行結(jié)果存于字符串變量中,最后按行切割存儲(chǔ)在列表變量中。如下字符串為網(wǎng)元執(zhí)行某命令的返回結(jié)果,經(jīng)簡(jiǎn)單處理后將每行字符串作為列表的元素保存在列表變量中,方便算法對(duì)其進(jìn)行后續(xù)的精確處理。
['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']
上述字符串列表是網(wǎng)元端某一命令的返回值,此時(shí)要求將各個(gè)NUM及對(duì)應(yīng)的PRIO 值提取出來(lái)并保存于字典變量中,由于網(wǎng)元狀態(tài)的不確定性和非相關(guān)數(shù)字的干擾,提取的值可能無(wú)效或不相對(duì)應(yīng)。為了能夠準(zhǔn)確無(wú)誤地提取研發(fā)需要的值,編寫(xiě)了如下字符串處理算法。具體如下:
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))))
#有效值結(jié)果:{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
程序執(zhí)行流程:首先檢測(cè)字符串'NET ADDR'是否在命令的執(zhí)行結(jié)果中,若存在則開(kāi)始定位NUM及PRIO所在的行區(qū)間,之后利用正則表達(dá)式提取所有NUM及PRIO的值,最后使用dict(tuple())轉(zhuǎn)換存于字典變量中。其中使用了lambda匿名函數(shù),filter,map高階函數(shù),并結(jié)合正則表達(dá)式模塊準(zhǔn)確、高效地提取了有效值。上述程序可作為處理命令行結(jié)果的萬(wàn)能模板,不僅能準(zhǔn)確定位有效字符串的位置,而且有序地將key值及對(duì)應(yīng)的屬性值存于字典變量中[7]。
4結(jié)束語(yǔ)
該自動(dòng)化集成軟件,簡(jiǎn)化了繁瑣的手工操作,采用自動(dòng)化并行的方式,提高了網(wǎng)管系統(tǒng)的效率并降低了出錯(cuò)率,滿足了客戶需求。軟件后臺(tái)利用WebService技術(shù)實(shí)現(xiàn)了與另一應(yīng)用軟件的交互,調(diào)用SSHLibrary遠(yuǎn)程連接到網(wǎng)元,進(jìn)行網(wǎng)元的配置。在處理網(wǎng)元命令返回的字符串時(shí),借助正則表達(dá)式及函數(shù)式編程構(gòu)建了兼容性較強(qiáng)的處理算法,該算法精確地匹配字符并有序地進(jìn)行處理,結(jié)合前端的交互,實(shí)現(xiàn)了整個(gè)自動(dòng)化集成軟件的開(kāi)發(fā)。網(wǎng)管系統(tǒng)對(duì)網(wǎng)元實(shí)施管理時(shí)集成連接是前提保障,目前在校驗(yàn)的模塊上只添加了基本的檢驗(yàn)點(diǎn),為保證集成的質(zhì)量應(yīng)擴(kuò)大校驗(yàn)的范圍,優(yōu)化編程實(shí)現(xiàn)快速全面校驗(yàn)集成結(jié)果。
參考文獻(xiàn):
[1] 張乃通,等編著. 移動(dòng)通信系統(tǒng)[M]. 哈爾濱:哈爾濱工業(yè)大學(xué)出版社, 2001.
[2] 楊云,鄭偉,王紹軍,主編. Linux操作系統(tǒng)與實(shí)訓(xùn)[M]. 北京:清華大學(xué)出版社, 2015.
[3] 王傳杰,常春霞,肖文棟. 基于XML的移動(dòng)通信網(wǎng)管數(shù)據(jù)處理層的設(shè)計(jì)實(shí)現(xiàn)[J].信息技術(shù)與標(biāo)準(zhǔn)化,2011(3):38-40.
[4] 王向方,武偉,唐偉媛. WebService技術(shù)在企業(yè)中的應(yīng)用[J].電腦編程技巧與維護(hù),2015(2):52-54.
[5](美)丘恩(Chun. W.J.)著. Python核心編程[M]. 宋吉廣, 譯.北京:人民郵電出版社, 2008.
[6] 肖旻,陳行.基于Python語(yǔ)言編程特點(diǎn)及應(yīng)用之探討[J].電腦知識(shí)與技術(shù),2014(34):36-38.
[7](美)Jeffrey E. F. Friedl,著. 精通正則表達(dá)式 第3版[M].余晟,譯. 北京:電子工業(yè)出版社, 2007.
1 作者簡(jiǎn)介:王 超(1990-),男,四川巴中人,碩士研究生,主要研究方向:嵌入式系統(tǒng)設(shè)計(jì)、信號(hào)與信息處理;
曹俊興(1961-),男,陜西長(zhǎng)武人,博士,教授,博士生導(dǎo)師,主要研究方向:地球探測(cè)與信息技術(shù)、信號(hào)與信息處理。