摘? 要: 以移動(dòng)交換系統(tǒng)網(wǎng)元層故障管理模塊為例,介紹了實(shí)時(shí)系統(tǒng)的軟件設(shè)計(jì)中,在保證系統(tǒng)實(shí)時(shí)性的前提下,提高軟件系統(tǒng)可靠性的軟件設(shè)計(jì)技術(shù)。
關(guān)鍵詞: 網(wǎng)元? 移動(dòng)交換系統(tǒng)? 實(shí)時(shí)系統(tǒng)? 可靠性? 故障管理
?
典型的GSM/CDMA移動(dòng)通信網(wǎng)由交換分系統(tǒng)、基站分系統(tǒng)和大量移動(dòng)用戶終端三大部分組成。其中,交換分系統(tǒng)也稱(chēng)為移動(dòng)交換系統(tǒng)(MSS),由移動(dòng)交換中心(MSC)、歸屬位置寄存器(HLR)、被訪位置寄存器(VLR)、設(shè)備識(shí)別寄存器(EIR)、鑒權(quán)中心(AUC)、短消息中心(SMSC)等諸多網(wǎng)絡(luò)元素(Network Element,簡(jiǎn)稱(chēng)為網(wǎng)元)和操作維護(hù)中心(OMC)構(gòu)成。交換分系統(tǒng)是移動(dòng)通信系統(tǒng)的控制交換中心,也是移動(dòng)網(wǎng)與其他通信網(wǎng)的接口。交換分系統(tǒng)中任何一個(gè)網(wǎng)絡(luò)元素出現(xiàn)故障都有可能對(duì)整個(gè)移動(dòng)通信系統(tǒng)產(chǎn)生嚴(yán)重影響。在交換分系統(tǒng)中,操作維護(hù)中心和各網(wǎng)元實(shí)體上的故障管理模塊是網(wǎng)元層網(wǎng)絡(luò)管理系統(tǒng)的一個(gè)重要組成部分。本文以移動(dòng)交換系統(tǒng)網(wǎng)元層故障管理模塊為例,介紹在實(shí)時(shí)系統(tǒng)的軟件設(shè)計(jì)過(guò)程中,在保證系統(tǒng)實(shí)時(shí)性的前提下,提高軟件系統(tǒng)可靠性的一些軟件設(shè)計(jì)技術(shù)。
1? 故障管理模塊概述
故障管理模塊在交換分系統(tǒng)中所處的位置如圖1所示?! ?/P>
故障管理模塊存在于OMC和各網(wǎng)元實(shí)體之上。OMC上的故障管理模塊一般設(shè)計(jì)為客戶端/服務(wù)器(C/S)結(jié)構(gòu),其實(shí)現(xiàn)的功能包括:故障信息的持久性保存(一般是寫(xiě)入數(shù)據(jù)庫(kù))、故障信息的顯示、網(wǎng)元機(jī)架圖的顯示等。網(wǎng)元上的故障管理模塊負(fù)責(zé)收集各業(yè)務(wù)進(jìn)程和控制進(jìn)程產(chǎn)生的故障信息,經(jīng)過(guò)處理后把這些故障信息轉(zhuǎn)發(fā)到OMC。故障信息也稱(chēng)為告警消息。一條告警消息在C++中表現(xiàn)為一個(gè)具體的對(duì)象,包括告警發(fā)生時(shí)間、恢復(fù)時(shí)間、發(fā)生位置、具體內(nèi)容和流水號(hào)等若干屬性。
故障管理模塊是監(jiān)控交換分系統(tǒng)是否正常工作的主要工具,是電信運(yùn)營(yíng)商非常重視的一個(gè)軟件模塊。電信運(yùn)營(yíng)商對(duì)故障管理功能的最基本的要求就是:實(shí)時(shí)準(zhǔn)確,不漏警,不虛警。為了達(dá)到這個(gè)要求,故障管理模塊的設(shè)計(jì)必須在保證實(shí)時(shí)性的基礎(chǔ)上,確保故障信息的準(zhǔn)確無(wú)誤。
2?網(wǎng)元上故障管理模塊的設(shè)計(jì)和實(shí)現(xiàn)
交換分系統(tǒng)中的各種網(wǎng)元實(shí)體(如MSC、HLR等)都是典型的分布式實(shí)時(shí)系統(tǒng),一般由若干個(gè)模塊構(gòu)成。交換分系統(tǒng)中的設(shè)備都要求全年24小時(shí)不間斷工作,所以每個(gè)模塊都采用了主機(jī)備用冗余的設(shè)計(jì)。網(wǎng)元中故障管理模塊的結(jié)構(gòu)示意圖如圖2所示。每個(gè)模塊都有主用和備用2個(gè)模塊處理機(jī)(MP),2個(gè)模塊處理機(jī)同時(shí)處于工作狀態(tài)。備用MP只和主用MP通信,負(fù)責(zé)備份主用MP中的重要數(shù)據(jù)。一旦主用MP發(fā)生故障,備用MP可以在不中斷業(yè)務(wù)的情況下迅速地轉(zhuǎn)為主用工作狀態(tài)。
?
?
從圖中可以看出,故障管理模塊同時(shí)運(yùn)行在主用和備用MP中。故障管理模塊在MP中用3個(gè)進(jìn)程實(shí)現(xiàn)。
(1)告警收集進(jìn)程:收集各業(yè)務(wù)進(jìn)程和單板控制進(jìn)程產(chǎn)生的告警信息,進(jìn)行必要的格式轉(zhuǎn)換等數(shù)據(jù)預(yù)處理工作,然后把處理后的告警信息放入當(dāng)前告警列表和消息發(fā)送隊(duì)列。當(dāng)前告警列表存儲(chǔ)在MP內(nèi)存中的一個(gè)數(shù)據(jù)緩沖區(qū)。主用和備用MP中的告警數(shù)據(jù)緩沖區(qū)總是處于一致?tīng)顟B(tài)。
(2)告警發(fā)送進(jìn)程:主要的任務(wù)是將告警發(fā)送隊(duì)列中的告警消息發(fā)送到OMC上的故障管理模塊。
(3)告警同步進(jìn)程:主要完成網(wǎng)元和OMC之間告警消息的周期性同步、斷鏈同步處理以及主用和備用MP之間的周期性同步和倒換同步處理。該進(jìn)程是實(shí)現(xiàn)不漏警、不虛警要求的重要機(jī)制。
3?OMC中故障管理模塊的設(shè)計(jì)和實(shí)現(xiàn)
OMC設(shè)計(jì)為C/S結(jié)構(gòu)。故障管理模塊同時(shí)存在于客戶端和服務(wù)器上,分別用不同的應(yīng)用進(jìn)程實(shí)現(xiàn)。服務(wù)器上的故障管理模塊實(shí)現(xiàn)的功能有:保存告警信息到數(shù)據(jù)庫(kù);轉(zhuǎn)發(fā)告警信息到上一級(jí)的網(wǎng)絡(luò)管理中心;轉(zhuǎn)發(fā)告警信息到客戶端;處理客戶端的數(shù)據(jù)庫(kù)操作請(qǐng)求和參數(shù)修改請(qǐng)求;控制告警箱等。客戶端的故障管理模塊實(shí)現(xiàn)的功能有:最新告警的實(shí)時(shí)顯示;歷史告警的查詢和打印;告警屏蔽設(shè)定和解除;機(jī)架圖的實(shí)時(shí)顯示;人機(jī)命令界面等。
在C/S結(jié)構(gòu)的系統(tǒng)中,服務(wù)器處于核心地位,服務(wù)器端的故障管理進(jìn)程要確保能長(zhǎng)時(shí)間正常工作。在OMC系統(tǒng)中,可以使用看門(mén)狗機(jī)制監(jiān)控故障管理進(jìn)程。看門(mén)狗實(shí)際上是一個(gè)錯(cuò)誤監(jiān)控程序,可以用一個(gè)高優(yōu)先級(jí)的應(yīng)用進(jìn)程來(lái)實(shí)現(xiàn)??撮T(mén)狗進(jìn)程定時(shí)向故障管理進(jìn)程發(fā)送握手消息,故障管理進(jìn)程收到此消息后會(huì)立刻發(fā)回一個(gè)確認(rèn)消息。如果在一段時(shí)間內(nèi)收不到故障管理進(jìn)程的響應(yīng),看門(mén)狗進(jìn)程就認(rèn)為故障管理進(jìn)程發(fā)生異常。此時(shí)看門(mén)狗進(jìn)程就會(huì)殺掉并重新啟動(dòng)故障管理進(jìn)程,使故障管理進(jìn)程恢復(fù)正常運(yùn)行狀態(tài)。
4?使用定時(shí)同步機(jī)制保證故障信息的準(zhǔn)確性
從用戶使用的角度看,故障管理模塊必須保證2種信息的準(zhǔn)確性:機(jī)架圖和活動(dòng)告警。機(jī)架圖是對(duì)網(wǎng)元上各種單板位置和狀態(tài)的直觀顯示。網(wǎng)元有無(wú)故障,用戶通過(guò)查看OMC客戶端上的機(jī)架圖就能一目了然。
為了確保機(jī)架圖顯示的實(shí)時(shí)性,可以把機(jī)架圖在內(nèi)存中按線形結(jié)構(gòu)存儲(chǔ)。例如一個(gè)機(jī)架由7層機(jī)框組成,每層機(jī)框有27個(gè)板位,該機(jī)架在內(nèi)存中就可以用2個(gè)長(zhǎng)度為27×7的一維數(shù)組表示:aRackState[189]和aRackType[189]。aRackState[189]是表示單板狀態(tài)的數(shù)組,aRackType[189]是表示單板類(lèi)型的數(shù)組,二者結(jié)合就是完整的機(jī)架圖信息。OMC和網(wǎng)元上的故障管理模塊都在各自的內(nèi)存中維護(hù)機(jī)架圖數(shù)組。OMC中維護(hù)內(nèi)存機(jī)架圖數(shù)組的目的在于保證客戶端界面上的機(jī)架圖顯示能很好地實(shí)時(shí)刷新,并且還便于和網(wǎng)元中的機(jī)架圖數(shù)組保持?jǐn)?shù)據(jù)同步。網(wǎng)元中的內(nèi)存機(jī)架圖數(shù)組由網(wǎng)元上的告警進(jìn)程和控制進(jìn)程共同維護(hù)。數(shù)組中的信息和網(wǎng)元中的內(nèi)存數(shù)據(jù)庫(kù)保持一致,其數(shù)據(jù)是高度可靠的。為了保證OMC和網(wǎng)元的機(jī)架圖數(shù)組的數(shù)據(jù)一致性,需要引入定時(shí)同步機(jī)制確保二者的數(shù)據(jù)完全相同。
最簡(jiǎn)單的同步辦法是每隔一定時(shí)間把OMC上的機(jī)架圖數(shù)組發(fā)送到網(wǎng)元上,由網(wǎng)元上的告警同步進(jìn)程逐字節(jié)地比較OMC和網(wǎng)元機(jī)架圖數(shù)組的異同。由于1個(gè)網(wǎng)元可能由10個(gè)以上的機(jī)架構(gòu)成,而同步間隔一般都是若干秒,因此在很短的時(shí)間里把很多數(shù)組傳來(lái)傳去對(duì)底層通信系統(tǒng)的總體性能會(huì)有一定影響。
本系統(tǒng)采用的辦法是比較OMC和網(wǎng)元機(jī)架圖數(shù)組的校驗(yàn)和。同步過(guò)程由OMC上的故障管理進(jìn)程發(fā)起,該進(jìn)程計(jì)算出OMC上的機(jī)架圖數(shù)組的校驗(yàn)和,然后把該校驗(yàn)和發(fā)送到網(wǎng)元上的告警同步進(jìn)程。網(wǎng)元上的告警同步進(jìn)程收到該校驗(yàn)和后,立刻計(jì)算出本機(jī)內(nèi)存中的機(jī)架圖數(shù)組的校驗(yàn)和,然后比較這2個(gè)校驗(yàn)和的值。如果這2個(gè)值不一致,說(shuō)明前、后臺(tái)機(jī)架圖不一致,網(wǎng)元上的告警同步進(jìn)程就把本機(jī)內(nèi)存中的機(jī)架圖數(shù)組發(fā)送到OMC,OMC中的機(jī)架圖數(shù)組隨即得到更新。
計(jì)算校驗(yàn)和的算法采用了16位循環(huán)冗余校驗(yàn)CRC(Cycle Redundancy Check)算法。它可以對(duì)一個(gè)數(shù)據(jù)塊進(jìn)行校驗(yàn),是一種高效的差錯(cuò)控制方法。16位CRC算法能夠檢查出所有的單位錯(cuò)、雙位錯(cuò)、奇位數(shù)錯(cuò)及小于等于16位的突發(fā)性錯(cuò),還能檢查出17位突發(fā)性錯(cuò)的99.997%,大于等于18位突發(fā)性錯(cuò)的99.998%。如此高的可靠性,可以滿足用戶對(duì)機(jī)架圖準(zhǔn)確性的嚴(yán)格要求。
活動(dòng)告警是指當(dāng)前沒(méi)有恢復(fù)的、正在發(fā)生的告警。其同步過(guò)程與機(jī)架圖類(lèi)似,此處不再展開(kāi)討論。
5?持續(xù)改善軟件設(shè)計(jì)與開(kāi)發(fā)質(zhì)量
前面介紹的主備冗余、定時(shí)同步和看門(mén)狗機(jī)制都不同程度地提高了故障管理模塊的可靠性,但這些機(jī)制并不能完全確保不漏警、不虛警。網(wǎng)元中的每個(gè)模塊處理機(jī)都是一個(gè)運(yùn)行在PSOS、VxWorks等實(shí)時(shí)操作系統(tǒng)之上的大型實(shí)時(shí)系統(tǒng)。MP上運(yùn)行著大量的應(yīng)用進(jìn)程,軟件故障不可避免地存在其中。相當(dāng)比例的漏警、虛警事故與硬件無(wú)關(guān),而是由業(yè)務(wù)模塊和故障管理模塊中的軟件錯(cuò)誤導(dǎo)致,所以提高軟件設(shè)計(jì)質(zhì)量和開(kāi)發(fā)質(zhì)量是進(jìn)一步提高故障管理模塊可靠性的重要手段。
提高軟件系統(tǒng)設(shè)計(jì)質(zhì)量和開(kāi)發(fā)質(zhì)量的途徑是多樣的,例如使用設(shè)計(jì)模式優(yōu)化軟件結(jié)構(gòu)、在開(kāi)發(fā)過(guò)程中進(jìn)行單元測(cè)試等。對(duì)于已經(jīng)完成開(kāi)發(fā)的軟件,使軟件質(zhì)量獲得持續(xù)改善的重要手段是代碼重構(gòu)。不漏警、不虛警是比較苛刻的要求。要達(dá)到這個(gè)目標(biāo)需要故障管理模塊設(shè)計(jì)者不懈努力。
參考文獻(xiàn)
1? 梁振軍,梁波.計(jì)算機(jī)網(wǎng)絡(luò)教程.北京:海洋出版社,1991
2? 鄭宗漢.實(shí)時(shí)系統(tǒng)軟件基礎(chǔ).北京:清華大學(xué)出版社,2003
3? Subramanian M.Network Management:Principles and Practice.Addison Wesley Longman,2000
4? Fowler M.Refactoring:Improving the Design of Existing?Code.Addison Wesley Longman,2000