王云磊,康志杰
(中國(guó)電子科技集團(tuán)公司第五十四研究所,河北石家莊050081)
以軟交換為核心的通信網(wǎng)絡(luò)是未來(lái)通信發(fā)展的必然趨勢(shì)。與傳統(tǒng)電路交換相比,軟交換網(wǎng)絡(luò)采用呼叫控制與承載相分離的技術(shù),網(wǎng)絡(luò)設(shè)備的處理能力都有很大提高,軟交換機(jī)和各種網(wǎng)關(guān)的容量可以做得非常大,這些都是軟交換的優(yōu)勢(shì),但同時(shí)也讓它面臨更多的安全威脅。軟交換機(jī)作為下一代網(wǎng)絡(luò)中呼叫與控制的核心,一旦設(shè)備出現(xiàn)問(wèn)題和故障,將導(dǎo)致大范圍的通信故障,給整個(gè)網(wǎng)絡(luò)造成非常大的影響。如何實(shí)現(xiàn)軟交換機(jī)的高可用性成為備受關(guān)注的課題。
為實(shí)現(xiàn)軟交換機(jī)的高可用性,在設(shè)計(jì)中可以采取很多措施,包括采用高穩(wěn)定的硬件平臺(tái),電信級(jí)的操作系統(tǒng),冗余、雙歸屬的系統(tǒng)架構(gòu)和高可用性(HA)管理中間件等。除此之外,新技術(shù)審計(jì)機(jī)制也可以提高軟交換機(jī)的高可用性。
審計(jì)就是通過(guò)特定手段檢測(cè)設(shè)備內(nèi)部模塊間或設(shè)備與外部環(huán)境間的矛盾因素,并通知設(shè)備糾正解決這些矛盾,以提高設(shè)備穩(wěn)定運(yùn)行能力的一種機(jī)制。
審計(jì)機(jī)制采用的是自我檢測(cè)、自我修復(fù)的策略,著重解決系統(tǒng)設(shè)備在運(yùn)行過(guò)程中出現(xiàn)的不可預(yù)料的異常,保證設(shè)備性能穩(wěn)定,預(yù)防設(shè)備宕機(jī)造成重大影響。而冗余、雙歸屬的系統(tǒng)架構(gòu)是在系統(tǒng)設(shè)備宕機(jī)后才生效的解決方案,無(wú)法解決設(shè)備切換時(shí)造成的損失。二者相比,審計(jì)機(jī)制是一種更積極有效提高設(shè)備穩(wěn)定性的措施。
審計(jì)對(duì)象是設(shè)計(jì)的關(guān)鍵內(nèi)容。審計(jì)對(duì)象的選擇應(yīng)符合以下條件:①對(duì)象出現(xiàn)異常,會(huì)對(duì)設(shè)備功能和性能造成顯著影響;②對(duì)象在多個(gè)不同模塊或設(shè)備中被運(yùn)用;③對(duì)象在不同模塊或設(shè)備中有統(tǒng)一的標(biāo)識(shí)。審計(jì)對(duì)象選擇得好,可以提高審計(jì)效率,達(dá)到事半功倍的效果。
審計(jì)機(jī)制作為提高設(shè)備高可用性的預(yù)防性措施,應(yīng)遵循以下規(guī)則:①審計(jì)進(jìn)程運(yùn)行于低優(yōu)先級(jí),不能搶占系統(tǒng)資源,不能影響設(shè)備正常的功能處理;②在系統(tǒng)擁塞的情況下,審計(jì)進(jìn)程將被掛起,以便給設(shè)備的功能處理讓出資源,等到系統(tǒng)擁塞解除后,審計(jì)進(jìn)程將再次被啟動(dòng)。
軟交換機(jī)支持H.323、H.248、媒體網(wǎng)關(guān)控制協(xié)議(MGCP)和會(huì)話發(fā)起協(xié)議(SIP)等多種協(xié)議,結(jié)構(gòu)較為復(fù)雜,其總體方案設(shè)計(jì)如圖1所示。
圖1 總體方案設(shè)計(jì)
軟交換機(jī)采用電信級(jí)的Linux操作系統(tǒng),應(yīng)用程序中與審計(jì)相關(guān)的功能模塊包括:
①資源管理模塊:負(fù)責(zé)外部設(shè)備資源的分配和釋放,記錄資源的忙閑狀態(tài)和呼叫的信息;
②呼叫控制模塊:負(fù)責(zé)呼叫的接續(xù)與控制;
③呼叫接入模塊:負(fù)責(zé)H.323、H.248、MGCP和SIP等多種協(xié)議外部設(shè)備的接入,并把這些不同的協(xié)議信令映射成統(tǒng)一的內(nèi)部適配消息交由呼叫控制處理;
④審計(jì)模塊:向相關(guān)模塊發(fā)送狀態(tài)請(qǐng)求消息,并比對(duì)回復(fù)信息中審計(jì)對(duì)象的狀態(tài)是否一致;若不一致,則進(jìn)行異常處理。
依據(jù)審計(jì)對(duì)象的設(shè)定條件,軟交換機(jī)中審計(jì)機(jī)制的設(shè)計(jì)分為2部分:軟交換機(jī)內(nèi)部模塊間的審計(jì)和軟交換機(jī)與外部設(shè)備間的審計(jì)。
在軟交換機(jī)內(nèi)部,呼叫控制、呼叫接入和資源管理模塊都涉及到對(duì)呼叫的處理,并且每個(gè)呼叫均對(duì)應(yīng)唯一的呼叫標(biāo)識(shí)call_id ,所以模塊間設(shè)計(jì)進(jìn)行呼叫的審計(jì)。
軟交換機(jī)通過(guò)H.248協(xié)議對(duì)綜合接入網(wǎng)關(guān)(IAD)的終端進(jìn)行操作,并且每個(gè)終端都對(duì)應(yīng)唯一的終端標(biāo)識(shí)term_id ,所以軟交換機(jī)與IAD間設(shè)計(jì)進(jìn)行終端的審計(jì)。
呼叫審計(jì)是周期性進(jìn)行的,它以資源管理模塊保存的呼叫信息為基準(zhǔn),通過(guò)比對(duì)相關(guān)模塊的呼叫狀態(tài)來(lái)實(shí)現(xiàn),流程設(shè)計(jì)如圖2所示。
圖2 呼叫審計(jì)流程
審計(jì)模塊執(zhí)行時(shí)首先啟動(dòng)循環(huán)定時(shí)器,該定時(shí)器周期觸發(fā)審計(jì)處理。收到時(shí)超消息,審計(jì)模塊向資源管理發(fā)送消息,請(qǐng)求呼叫標(biāo)識(shí)列表。資源管理模塊從全部呼叫信息中依次取出若干個(gè)呼叫標(biāo)識(shí)回復(fù)給審計(jì)模塊。
審計(jì)模塊依據(jù)收到的呼叫標(biāo)識(shí)列表,按照次序逐一向呼叫控制和呼叫接入模塊發(fā)送消息,請(qǐng)求該呼叫的狀態(tài)。呼叫控制和呼叫接入模塊查詢進(jìn)程內(nèi)的呼叫包,將呼叫的狀態(tài)映射為不存在、穩(wěn)態(tài)和非穩(wěn)態(tài)回復(fù)給審計(jì)模塊。
審計(jì)模塊從回復(fù)中提取呼叫狀態(tài)進(jìn)行比對(duì)。若2個(gè)模塊中某個(gè)呼叫的狀態(tài)不一致,則記錄該呼叫標(biāo)識(shí),等待第2次審計(jì);若標(biāo)識(shí)列表中所有呼叫的狀態(tài)比對(duì)均一致,則程序等待定時(shí)器時(shí)超,向資源管理請(qǐng)求新的呼叫標(biāo)識(shí)列表。
審計(jì)模塊依據(jù)第1次審計(jì)失敗的呼叫標(biāo)識(shí)列表,重新向呼叫控制和呼叫接入模塊發(fā)送消息,請(qǐng)求該呼叫的狀態(tài)。收到回復(fù)后,若呼叫狀態(tài)還不一致,則認(rèn)為該呼叫處理錯(cuò)誤,并進(jìn)行糾錯(cuò)處理,向資源管理、呼叫控制和呼叫接入模塊發(fā)送消息,請(qǐng)求刪除該呼叫,釋放內(nèi)存和呼叫標(biāo)識(shí)等資源。然后程序等待定時(shí)器時(shí)超,向資源管理請(qǐng)求新的呼叫標(biāo)識(shí)列表。
在流程設(shè)計(jì)中,呼叫審計(jì)通過(guò)2次審計(jì)的方法來(lái)確認(rèn)目標(biāo)對(duì)象錯(cuò)誤。在第1次審計(jì)失敗時(shí)并不會(huì)立即采取糾正措施。只有連續(xù)2次審計(jì)失敗后才確認(rèn)目標(biāo)對(duì)象錯(cuò)誤,采取糾正措施。這種策略可以防止由于模塊間消息處理不同步而造成的審計(jì)錯(cuò)誤。
軟交換機(jī)借助H.248協(xié)議的審計(jì)值(AuditValue)命令來(lái)實(shí)現(xiàn)終端審計(jì)。AuditValue命令可以返回終端當(dāng)前的狀態(tài)屬性、事件、信號(hào)和終端的統(tǒng)計(jì)等信息。
終端審計(jì)在以下情況出現(xiàn)時(shí)被觸發(fā),IAD曾經(jīng)中斷與軟交換機(jī)的通信連接,但隨后連接重新恢復(fù)。呼叫接入模塊從 IAD接收到帶有拆線方式(Disconnected)的服務(wù)更改(ServiceChange)命令,開(kāi)始對(duì)IAD的所有終端進(jìn)行審計(jì)。終端審計(jì)的流程設(shè)計(jì)如圖3所示。
圖3 終端審計(jì)流程
審計(jì)模塊接收到呼叫接入模塊的觸發(fā),啟動(dòng)終端審計(jì)流程。審計(jì)模塊分別向資源管理和IAD發(fā)送詢問(wèn)消息和AuditValue命令,請(qǐng)求終端狀態(tài)。
審計(jì)模塊收到IAD的回復(fù)后,首先檢查終端狀態(tài)。如果終端不是進(jìn)入服務(wù)狀態(tài),審計(jì)模塊向IAD發(fā)送帶有重啟動(dòng)(Restart)方式的ServiceChange命令,強(qiáng)制IAD恢復(fù)終端功能,進(jìn)入服務(wù)可用狀態(tài)。然后,審計(jì)模塊繼續(xù)檢查資源管理模塊的終端狀態(tài)。如果終端沒(méi)有進(jìn)入服務(wù),審計(jì)模塊則向資源管理模塊發(fā)送重置終端狀態(tài)的消息。終端審計(jì)的流程結(jié)束。
測(cè)試的目標(biāo)是驗(yàn)證呼叫審計(jì)和終端審計(jì)可以提高軟交換機(jī)的高可用性。測(cè)試需要的設(shè)備包括:軟交換機(jī)、思博倫abacus5000測(cè)試儀、網(wǎng)絡(luò)交換機(jī)和監(jiān)控主機(jī)。其中,監(jiān)控主機(jī)安裝思博倫測(cè)試儀操作軟件和軟交換機(jī)監(jiān)控軟件;軟交換機(jī)將跟蹤信息發(fā)送給監(jiān)控主機(jī)進(jìn)行保存;思博倫測(cè)試儀配置為H.248綜合接入網(wǎng)關(guān),包含 400個(gè)終端,終端標(biāo)識(shí)符為aaln1~aaln400。測(cè)試設(shè)備的網(wǎng)絡(luò)配置結(jié)構(gòu)如圖4所示。
圖4 測(cè)試設(shè)備的網(wǎng)絡(luò)配置結(jié)構(gòu)
思博倫測(cè)試儀模擬H.248綜合接入網(wǎng)關(guān)注冊(cè)到軟交換機(jī),然后終端之間發(fā)起呼叫,對(duì)軟交換機(jī)進(jìn)行呼叫測(cè)試。測(cè)試結(jié)束后,測(cè)試儀數(shù)據(jù)顯示,呼叫試發(fā)次數(shù)為1 290 724次,呼叫成功接通率為99.99%。
分析軟交換機(jī)的跟蹤信息,由于內(nèi)部模塊間UDP通信的網(wǎng)絡(luò)丟包,造成了部分呼叫失敗。呼叫審計(jì)成功發(fā)現(xiàn)并釋放了這些遺漏的呼叫資源,避免了對(duì)后續(xù)測(cè)試造成呼損,為軟交換機(jī)保持高呼叫接通率提供了保障。
監(jiān)控主機(jī)控制思博倫測(cè)試儀模擬終端aaln1向軟交換機(jī)發(fā)送Disconnected方式的ServiceChange命令。分析軟交換機(jī)的跟蹤信息,看到終端審計(jì)流程被觸發(fā),而后終端aaln1被強(qiáng)制進(jìn)入服務(wù)狀態(tài),實(shí)現(xiàn)了軟交換機(jī)中終端資源的高可用性。
測(cè)試證明,審計(jì)機(jī)制可以糾正呼叫和終端在設(shè)備運(yùn)行過(guò)程出現(xiàn)的異常,大大提高了軟交換機(jī)的高可用性,達(dá)到了設(shè)計(jì)目標(biāo)。目前,審計(jì)機(jī)制已被應(yīng)用于軟交換設(shè)備的研制,工程實(shí)踐證明,該設(shè)計(jì)思路清晰,結(jié)構(gòu)合理,為其他項(xiàng)目的設(shè)計(jì)開(kāi)發(fā),提供了有益的參考。
[1]YD/T 1434-2006-I.交換設(shè)備總體技術(shù)要求[S],2006.
[2]萬(wàn)曉榆.下一代網(wǎng)絡(luò)的業(yè)務(wù)生成技術(shù)[M].北京:北京郵電大學(xué)出版社,2005.
[3]唐雄燕.軟交換網(wǎng)絡(luò)-技術(shù)與應(yīng)用實(shí)踐[M].北京:電子工業(yè)出版社,2005.
[4]劉韻潔,張智江.下一代網(wǎng)絡(luò)[M].北京:人民郵電出版社,2005.