張建中
(河北遠東哈里斯通信有限公司,河北 石家莊 050081)
在軟交換技術推出之前,電信網(wǎng)上的智能業(yè)務很多都是由智能網(wǎng)(IN)提供的。隨著公眾電話網(wǎng)絡(PSTN)向下一代網(wǎng)絡(NGN)的逐漸演進,軟交換設備正在逐漸替換原有時分復用(TDM)制式的交換設備。智能網(wǎng)做為電信運營商前期大量投入的投資不可能因為軟交換的推出而一下子全部推翻不用,因此,軟交換設備必須能夠與原有智能網(wǎng)進行互通,并繼承智能網(wǎng)原有的業(yè)務,從而最大程度保護運營商的前期投資。
軟交換智能網(wǎng)應用規(guī)程(INAP)業(yè)務適配系統(tǒng)即軟交換系統(tǒng)內用于與智能網(wǎng)通過INAP協(xié)議進行互通的子系統(tǒng)。通過INAP業(yè)務適配系統(tǒng),軟交換域內的各類用戶仍舊可以使用智能網(wǎng)的各類語音業(yè)務,智能網(wǎng)內的業(yè)務控制點(SCP)設備仍舊可以對軟交換域內的用戶進行業(yè)務控制。
軟交換系統(tǒng)在智能網(wǎng)的概念模型中,其地位相當于業(yè)務交換點(SSP),而業(yè)務邏輯則位于SCP。INAP是國際電信聯(lián)盟的電信標準化局(ITU-T)制定的用于智能網(wǎng)各功能實體之間進行標準化通信的協(xié)議。INAP業(yè)務適配系統(tǒng)屬于SSP內的一個功能實體,其目的是向SCP暴露標準業(yè)務接口。圖1給出了INAP業(yè)務適配系統(tǒng)在SCP和SSP通信過程中所處的位置及其功能。
CS2A、SF、TCAPES是分別對INAP業(yè)務適配系統(tǒng)、呼叫控制系統(tǒng)、事務處理能力應用部分(TCAP)協(xié)議棧應用程序實例化的一個稱謂。
CS2A是一個獨立運行的程序,在運行時它需要與軟交換系統(tǒng)的其他模塊進行消息交互,共同配合完成與智能網(wǎng)的互通功能。與CS2A進行消息交互的2個關鍵進程是SF和承載INAP協(xié)議的TCAPES。SF相當于智能網(wǎng)中的SSF實體,TCAPES是7號信令網(wǎng)絡的上層協(xié)議承載者。CS2A與SF通過私有協(xié)議進行通信,與TCAPES使用符合TCAP協(xié)議規(guī)范的TCAP原語進行通信,其中INAP協(xié)議信息單元包含于TCAP原語的參數(shù)之中。CS2A的主要功能即是負責將私有協(xié)議與INAP協(xié)議進行相互轉換和映射。
圖1 CS2A在SSP和SCP通信中的位置
SF負責將觸發(fā)的業(yè)務信息上報給CS2A,CS2A將該消息轉換為標準的INAP消息并通過TCAPES送達信令連接控制部分(SCCP)、消息傳遞部分(MTP)各層協(xié)議棧,直至到達SCP端的TCAP用戶。反之,SCP端的TCAP用戶發(fā)來的INAP消息經(jīng)由CS2A轉換為私有協(xié)議再傳遞給SF。
CS2A的設計除了要完成私有協(xié)議和INAP的準確映射外,還需考慮如下方面的內容:
①軟件的模塊化設計。要求軟件必須進行合理的模塊劃分,模塊內部的結構清晰易懂,各模塊之間相對獨立。這樣便于檢查錯誤,節(jié)省開發(fā)時間,可以提高軟件系統(tǒng)的可修改性和重用性;
②軟件的效率問題。為了能夠滿足大呼叫量的要求,軟件必須提高運行效率。為了更好地提高軟件的性能,在軟件設計上,可以考慮采取內存審計、多線程,流水線等技術;
③軟件的健壯性問題。為了保證軟件能夠健壯穩(wěn)定的運行,需要采取TRACE(跟蹤)處理、告警處理、呼叫統(tǒng)計、擁塞控制等措施;
④軟件的可靠性問題。為了提高系統(tǒng)的可靠性,需要考慮軟件的熱冗余問題。
圖2給出了CS2A的軟件結構以及與其相關的外部其他進程的關系。
圖2 CS2A軟件結構
CS2A分為3個子模塊:核心模塊(CORE)、遠程業(yè)務接入管理模塊(RSAM)和TCAP接口管理模塊(TIM),其中CORE模塊又劃分為4個子模塊:SF適配(SFA)、軟交換管理進程(SSM)適配(SSMA)、命令及數(shù)據(jù)配置進程(CLH)適配(CLHA)、錯誤及日志管理進程(FM)適配(FMA)。
SFA負責把SF發(fā)來的私有消息轉換成INAP消息,把RSAM發(fā)來的INAP消息轉換成私有消息,完成對INAP消息的編解碼處理,同RSAM一起維護一個存儲業(yè)務對話相關信息的業(yè)務上下文塊結構,維護資源連接狀態(tài)機的狀態(tài)。
SSMA負責處理來自于SSM的health_ping等管理消息。
CLHA負責處理來自數(shù)據(jù)配置管理系統(tǒng)CLH的數(shù)據(jù)消息。
FMA負責將TRACE信息、告警信息、統(tǒng)計信息等內容輸出到錯誤管理系統(tǒng)FM。
RSAM負責將CORE發(fā)來的INAP消息單元承載到TCAP原語上,將TIM發(fā)來的TCAP消息中的INAP信息單元分離出來;同CORE模塊一起維護一個存儲業(yè)務對話相關信息的業(yè)務上下文塊結構;負責向復制管理系統(tǒng)(RPM)發(fā)送主邊信令點狀態(tài)和系統(tǒng)冗余狀態(tài)信息。
TIM負責系統(tǒng)向TCAPES進行注冊;對TCAPES發(fā)來的消息的第一次解包處理、對RSAM發(fā)來的消息的最后一次裝包處理;維護SF同SCP的對話狀態(tài)機;負責處理定時器進程發(fā)來的時超消息。
CS2A進程啟動后在接收SF和TCAPES的消息之前需要做一系列的初始化工作。這些初始化工作主要包括:
①依據(jù)程序啟動時傳入的內存池參數(shù)創(chuàng)建內存池。內存池參數(shù)的設定是依據(jù)整個軟交換系統(tǒng)的規(guī)模及業(yè)務量計算得出的;
②創(chuàng)建全局變量,并從內存數(shù)據(jù)庫中讀取程序運行必需的數(shù)據(jù);
③初始化消息隊列;
④從SSM獲取其他相關模塊的IP地址和端口信息;
⑤向TCAPES發(fā)送注冊消息。
ss_cs2a_process_msg_entry函數(shù)作為CS2A進程的消息處理主函數(shù),負責對CS2A的外部消息和內部消息進行分揀(RPM進程發(fā)來的消息由于優(yōu)先級較高,不進入該函數(shù),直接調用其對應的處理函數(shù)進行處理)。
CS2A對外部消息按照其來源模塊的不同,調用相應模塊處理函數(shù)進行處理;
CS2A對內部消息按照其來源模塊和目的模塊的不同調用相應模塊處理函數(shù)進行處理;
CS2A完成消息分揀后就進入各模塊進行消息處理。各模塊完成對消息的處理后,對消息進行發(fā)送,對內部消息的發(fā)送調用函數(shù)ss_cs2a_put_msg_in_q完成;對外部消息的發(fā)送調用函數(shù)mgc_send完成。
CS2A對各種消息的接收、分揀、處理和發(fā)送過程如圖3所示。
圖3 CS2A消息處理
CORE模塊又由SFA、SSMA、FMA、CLHA 4個邏輯子模塊構成,其中SSMA、FMA、CLHA 3個模塊相較于CS2A進行私有消息和INAP消息轉換的首要功能而言起到的是輔助的功能,因此,對其介紹較為簡單。
(1)SFA模塊的實現(xiàn)
在接收自SF的消息中,已經(jīng)包含了一次業(yè)務交互需要的全部信息,此時SFA需要做的就是按照《YD 1226-2002智能網(wǎng)能力集2(CS-2)智能網(wǎng)應用規(guī)程(INAP)》中規(guī)定的編碼要求進行信息編碼。信息編碼采用的是 ITU-T X.209建議中給出的BER(Basic Encode Rule)編碼規(guī)則,該規(guī)則是依據(jù)抽象語法標記(Abstract Syntax Notation One,ASN.1)標準定義的一種傳送文法。在ASN.1的編解碼處理上,采用了Objective System,inc的ASN.1編譯器工具,該工具提供的函數(shù)庫可以被繼承到系統(tǒng)內,通過調用其提供的編碼函數(shù)可以把私有協(xié)議信息內容編譯成為INAP標準格式,通過調用解碼函數(shù)可以把RSAM發(fā)來的INAP消息解碼后將其內容取出再轉換為私有協(xié)議信息內容。
SFA使用業(yè)務上下文塊結構來記錄SF和SCP之間一次業(yè)務交互的相關信息,一個業(yè)務上下文塊唯一對應一次業(yè)務事務交互。業(yè)務上下文塊的維護是由RSAM和CORE共同完成的。事務ID是SF同SCP之間一次業(yè)務對話的唯一標識。事務ID的生成、存在和銷毀過程如下:
①事務ID的生成。當SCP發(fā)起一次業(yè)務交互請求時,該消息傳到RSAM,RSAM會生成一個事務ID來標識這次業(yè)務對話。另外,當SF發(fā)起一次業(yè)務交互請求時,SFA使用SF生成的一個唯一的事務ID來標識這次業(yè)務交互;
②事務ID的生存期。在SF和SCP的一次業(yè)務對話過程中,事務ID始終有效;
③事務ID的銷毀。事務ID隨著業(yè)務對話的結束而銷毀。
在SF和SCP的一次業(yè)務對話過程中,可能同時存在多個資源連接狀態(tài)機,一個資源連接狀態(tài)機唯一對應一個業(yè)務上下文塊中的cs2a ctx blk st類型的狀態(tài)機上下文塊。當SFA收到SCP的連接到資源的操作請求時,新建一個資源連接狀態(tài)機,當銷毀一個狀態(tài)機時,同時銷毀該資源連接狀態(tài)機的上下文塊。
(2)SSMA模塊的實現(xiàn)
SSMA模塊對來自于SSM的其他模塊IP及端口消息、狀態(tài)設置消息、健康查詢消息、系統(tǒng)監(jiān)控消息進行處理和回復。在CS2A初始化過程中,會收到SSM發(fā)來的其他模塊的IP地址和消息接收端口的信息,SSMA會把這些信息寫入全局變量中備用。在CS2A初始化完成后會向SSM發(fā)送初始化完成的消息,此時SSM回復將CS2A置為ACTIVE或者PASSIVE的消息,或者當CS2A運行在PASSIVE狀態(tài)下時,也可能會收到將其置為ACTIVE狀態(tài)的消息。SSMA每隔若干時間會收到SSM發(fā)來的health_ping消息,此時SSMA會回復OK的消息,同時觸發(fā)一次內存審計檢查操作,根據(jù)一定的算法來判斷某些內存數(shù)據(jù)包是否已經(jīng)不再使用但是并沒有被釋放,進而釋放這些內存。當SSM發(fā)現(xiàn)系統(tǒng)發(fā)生擁塞時,會發(fā)系統(tǒng)監(jiān)控消息給SSMA,此時SSMA會采取一定的算法來舍棄一些連接請求,并發(fā)送告警信息。
(3)FMA模塊的實現(xiàn)
FMA模塊提供一個統(tǒng)一入口函數(shù),該函數(shù)負責將收集到的CS2A內的TRACE信息、告警信息、統(tǒng)計信息上報給FM模塊。
(4)CLHA模塊的實現(xiàn)
CLHA模塊接收CS2A初始化時CLH發(fā)來的內存數(shù)據(jù)庫加載完畢的消息,并在之后去進行數(shù)據(jù)讀取;或者在CS2A運行期間,接收CLH發(fā)來的一些設置指令,例如打開關閉TRACE、對告警級別進行控制等。
遠程業(yè)務接入管理(RSAM)模塊的功能是通過生成TCAP協(xié)議消息和遠端SCP進行通信,轉換TCAP原語消息、INAP消息,維護對話的狀態(tài),其處理方法如下:
①接受TIM發(fā)送的消息,該消息以TCAP原語形式表示,實際是SCP通過TCAP協(xié)議傳送來的消息,此消息分為對話處理原語和成分處理原語。RSAM接受對話處理原語,維護對話;轉換成分處理原語,將其轉換為INAP的操作消息;
②接受CORE發(fā)送的消息,將其轉換為成分處理原語,再根據(jù)消息的內容生成對話處理原語,向遠端SCP發(fā)送;
RSAM到CORE的消息是INAP消息類型(實質為成分處理原語內容),RSAM到TIM為TCAP原語消息(包括成分處理原語和對話處理原語)。RSAM負責將CORE傳來的內部消息轉化為TCAP原語消息,將TIM傳來的TCAP原語消息轉化為內部消息;
RSAM和CORE模塊共同維護全局變量哈希表,該哈希表中記載了事務ID和業(yè)務上下文塊的指針。
RSAM模塊同時負責將CS2A系統(tǒng)的處于穩(wěn)態(tài)的會話和事務相關的數(shù)據(jù)包發(fā)送到RPM系統(tǒng),并由RPM系統(tǒng)負責向高可用系統(tǒng)HA進行冗余數(shù)據(jù)的處理和向備邊的CS2A發(fā)送。
CS2A在使用TCAPES提供的服務前必須向TCAPES注冊,如果注冊成功TCAPES會返回一個值唯一的log_user_id。
TIM和TCAPES之間的通信使用消息頭+消息體的消息格式,其中消息頭中包含了目的、源、消息長度、會話ID、log_user_id、call_id等信息,消息體部分是符合TCAP協(xié)議規(guī)范的消息內容。來自RSAM的消息在TIM模塊進行最后一次裝包處理,填充諸如目的地址、源地址、消息長度等信息,并進行消息的發(fā)送處理;對接收自TCAPES的消息,依據(jù)消息頭中的信息將消息體部分解出,并對消息進行分發(fā)處理。
TIM還負責維護會話狀態(tài)機。一個會話狀態(tài)機唯一對應SF和SCP之間的一次業(yè)務對話,也唯一對應一個對話塊。狀態(tài)機隨著對話塊的創(chuàng)建而創(chuàng)建,隨著對話塊的銷毀而銷毀。狀態(tài)機的狀態(tài)信息記錄在對話塊的tdsm_state成員中,當新建一個對話塊時,狀態(tài)機初始狀態(tài)為IDLE;當銷毀一個對話塊時,會檢查狀態(tài)機狀態(tài),如果不是IDLE則報錯。狀態(tài)機的狀態(tài)變遷反映了對話從請求、建立到銷毀的過程。
TIM對每個會話專門分配了一個定時器池,用以對這個會話范疇內的消息發(fā)送進行定時守護,如果等待回復消息的定時器時超,則做錯誤處理。
利用上述設計思想和實現(xiàn)思路,已經(jīng)在某軟交換系統(tǒng)的研發(fā)項目中將之進行了具體實現(xiàn)。經(jīng)過反復測試,該系統(tǒng)符合《YD1435-2007軟交換設備測試方法》中關于INAP的測試要求。該系統(tǒng)采用C語言和商用ASN.1工具完成,同時該系統(tǒng)的設計充分考慮了系統(tǒng)的模塊化設計、運行效率、健壯性、可靠性等問題。該設計思想對于同類項目的研發(fā)具有很高的參考價值。
[1]YD 1226-2002,智能網(wǎng)能力集2(CS-2)智能網(wǎng)應用規(guī)程(INAP)[S].
[2]YD 1435-2007,軟交換設備測試方法[S].
[3]王柏.智能網(wǎng)教程[M].北京:北京郵電大學出版社,2000:55-62.
[4]糜正琨,陳錫生.七號共路信令系統(tǒng)[M].北京:人民郵電出版社,1994:195-226.