王超 曹俊興
摘 要: 隨著通信技術的快速發展,運營商對網管系統提出了綜合,高效和簡捷的性能需求。根據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-),男,陜西長武人,博士,教授,博士生導師,主要研究方向:地球探測與信息技術、信號與信息處理。