張建中
(河北遠東哈里斯通信有限公司,河北 石家莊 050081)
在軟交換技術推出之前,電信網上的智能業務很多都是由智能網(IN)提供的。隨著公眾電話網絡(PSTN)向下一代網絡(NGN)的逐漸演進,軟交換設備正在逐漸替換原有時分復用(TDM)制式的交換設備。智能網做為電信運營商前期大量投入的投資不可能因為軟交換的推出而一下子全部推翻不用,因此,軟交換設備必須能夠與原有智能網進行互通,并繼承智能網原有的業務,從而最大程度保護運營商的前期投資。
軟交換智能網應用規程(INAP)業務適配系統即軟交換系統內用于與智能網通過INAP協議進行互通的子系統。通過INAP業務適配系統,軟交換域內的各類用戶仍舊可以使用智能網的各類語音業務,智能網內的業務控制點(SCP)設備仍舊可以對軟交換域內的用戶進行業務控制。
軟交換系統在智能網的概念模型中,其地位相當于業務交換點(SSP),而業務邏輯則位于SCP。INAP是國際電信聯盟的電信標準化局(ITU-T)制定的用于智能網各功能實體之間進行標準化通信的協議。INAP業務適配系統屬于SSP內的一個功能實體,其目的是向SCP暴露標準業務接口。圖1給出了INAP業務適配系統在SCP和SSP通信過程中所處的位置及其功能。
CS2A、SF、TCAPES是分別對INAP業務適配系統、呼叫控制系統、事務處理能力應用部分(TCAP)協議棧應用程序實例化的一個稱謂。
CS2A是一個獨立運行的程序,在運行時它需要與軟交換系統的其他模塊進行消息交互,共同配合完成與智能網的互通功能。與CS2A進行消息交互的2個關鍵進程是SF和承載INAP協議的TCAPES。SF相當于智能網中的SSF實體,TCAPES是7號信令網絡的上層協議承載者。CS2A與SF通過私有協議進行通信,與TCAPES使用符合TCAP協議規范的TCAP原語進行通信,其中INAP協議信息單元包含于TCAP原語的參數之中。CS2A的主要功能即是負責將私有協議與INAP協議進行相互轉換和映射。

圖1 CS2A在SSP和SCP通信中的位置
SF負責將觸發的業務信息上報給CS2A,CS2A將該消息轉換為標準的INAP消息并通過TCAPES送達信令連接控制部分(SCCP)、消息傳遞部分(MTP)各層協議棧,直至到達SCP端的TCAP用戶。反之,SCP端的TCAP用戶發來的INAP消息經由CS2A轉換為私有協議再傳遞給SF。
CS2A的設計除了要完成私有協議和INAP的準確映射外,還需考慮如下方面的內容:
①軟件的模塊化設計。要求軟件必須進行合理的模塊劃分,模塊內部的結構清晰易懂,各模塊之間相對獨立。這樣便于檢查錯誤,節省開發時間,可以提高軟件系統的可修改性和重用性;
②軟件的效率問題。為了能夠滿足大呼叫量的要求,軟件必須提高運行效率。為了更好地提高軟件的性能,在軟件設計上,可以考慮采取內存審計、多線程,流水線等技術;
③軟件的健壯性問題。為了保證軟件能夠健壯穩定的運行,需要采取TRACE(跟蹤)處理、告警處理、呼叫統計、擁塞控制等措施;
④軟件的可靠性問題。為了提高系統的可靠性,需要考慮軟件的熱冗余問題。
圖2給出了CS2A的軟件結構以及與其相關的外部其他進程的關系。

圖2 CS2A軟件結構
CS2A分為3個子模塊:核心模塊(CORE)、遠程業務接入管理模塊(RSAM)和TCAP接口管理模塊(TIM),其中CORE模塊又劃分為4個子模塊:SF適配(SFA)、軟交換管理進程(SSM)適配(SSMA)、命令及數據配置進程(CLH)適配(CLHA)、錯誤及日志管理進程(FM)適配(FMA)。
SFA負責把SF發來的私有消息轉換成INAP消息,把RSAM發來的INAP消息轉換成私有消息,完成對INAP消息的編解碼處理,同RSAM一起維護一個存儲業務對話相關信息的業務上下文塊結構,維護資源連接狀態機的狀態。
SSMA負責處理來自于SSM的health_ping等管理消息。
CLHA負責處理來自數據配置管理系統CLH的數據消息。
FMA負責將TRACE信息、告警信息、統計信息等內容輸出到錯誤管理系統FM。
RSAM負責將CORE發來的INAP消息單元承載到TCAP原語上,將TIM發來的TCAP消息中的INAP信息單元分離出來;同CORE模塊一起維護一個存儲業務對話相關信息的業務上下文塊結構;負責向復制管理系統(RPM)發送主邊信令點狀態和系統冗余狀態信息。
TIM負責系統向TCAPES進行注冊;對TCAPES發來的消息的第一次解包處理、對RSAM發來的消息的最后一次裝包處理;維護SF同SCP的對話狀態機;負責處理定時器進程發來的時超消息。
CS2A進程啟動后在接收SF和TCAPES的消息之前需要做一系列的初始化工作。這些初始化工作主要包括:
①依據程序啟動時傳入的內存池參數創建內存池。內存池參數的設定是依據整個軟交換系統的規模及業務量計算得出的;
②創建全局變量,并從內存數據庫中讀取程序運行必需的數據;
③初始化消息隊列;
④從SSM獲取其他相關模塊的IP地址和端口信息;
⑤向TCAPES發送注冊消息。
ss_cs2a_process_msg_entry函數作為CS2A進程的消息處理主函數,負責對CS2A的外部消息和內部消息進行分揀(RPM進程發來的消息由于優先級較高,不進入該函數,直接調用其對應的處理函數進行處理)。
CS2A對外部消息按照其來源模塊的不同,調用相應模塊處理函數進行處理;
CS2A對內部消息按照其來源模塊和目的模塊的不同調用相應模塊處理函數進行處理;
CS2A完成消息分揀后就進入各模塊進行消息處理。各模塊完成對消息的處理后,對消息進行發送,對內部消息的發送調用函數ss_cs2a_put_msg_in_q完成;對外部消息的發送調用函數mgc_send完成。
CS2A對各種消息的接收、分揀、處理和發送過程如圖3所示。

圖3 CS2A消息處理
CORE模塊又由SFA、SSMA、FMA、CLHA 4個邏輯子模塊構成,其中SSMA、FMA、CLHA 3個模塊相較于CS2A進行私有消息和INAP消息轉換的首要功能而言起到的是輔助的功能,因此,對其介紹較為簡單。
(1)SFA模塊的實現
在接收自SF的消息中,已經包含了一次業務交互需要的全部信息,此時SFA需要做的就是按照《YD 1226-2002智能網能力集2(CS-2)智能網應用規程(INAP)》中規定的編碼要求進行信息編碼。信息編碼采用的是 ITU-T X.209建議中給出的BER(Basic Encode Rule)編碼規則,該規則是依據抽象語法標記(Abstract Syntax Notation One,ASN.1)標準定義的一種傳送文法。在ASN.1的編解碼處理上,采用了Objective System,inc的ASN.1編譯器工具,該工具提供的函數庫可以被繼承到系統內,通過調用其提供的編碼函數可以把私有協議信息內容編譯成為INAP標準格式,通過調用解碼函數可以把RSAM發來的INAP消息解碼后將其內容取出再轉換為私有協議信息內容。
SFA使用業務上下文塊結構來記錄SF和SCP之間一次業務交互的相關信息,一個業務上下文塊唯一對應一次業務事務交互。業務上下文塊的維護是由RSAM和CORE共同完成的。事務ID是SF同SCP之間一次業務對話的唯一標識。事務ID的生成、存在和銷毀過程如下:
①事務ID的生成。當SCP發起一次業務交互請求時,該消息傳到RSAM,RSAM會生成一個事務ID來標識這次業務對話。另外,當SF發起一次業務交互請求時,SFA使用SF生成的一個唯一的事務ID來標識這次業務交互;
②事務ID的生存期。在SF和SCP的一次業務對話過程中,事務ID始終有效;
③事務ID的銷毀。事務ID隨著業務對話的結束而銷毀。
在SF和SCP的一次業務對話過程中,可能同時存在多個資源連接狀態機,一個資源連接狀態機唯一對應一個業務上下文塊中的cs2a ctx blk st類型的狀態機上下文塊。當SFA收到SCP的連接到資源的操作請求時,新建一個資源連接狀態機,當銷毀一個狀態機時,同時銷毀該資源連接狀態機的上下文塊。
(2)SSMA模塊的實現
SSMA模塊對來自于SSM的其他模塊IP及端口消息、狀態設置消息、健康查詢消息、系統監控消息進行處理和回復。在CS2A初始化過程中,會收到SSM發來的其他模塊的IP地址和消息接收端口的信息,SSMA會把這些信息寫入全局變量中備用。在CS2A初始化完成后會向SSM發送初始化完成的消息,此時SSM回復將CS2A置為ACTIVE或者PASSIVE的消息,或者當CS2A運行在PASSIVE狀態下時,也可能會收到將其置為ACTIVE狀態的消息。SSMA每隔若干時間會收到SSM發來的health_ping消息,此時SSMA會回復OK的消息,同時觸發一次內存審計檢查操作,根據一定的算法來判斷某些內存數據包是否已經不再使用但是并沒有被釋放,進而釋放這些內存。當SSM發現系統發生擁塞時,會發系統監控消息給SSMA,此時SSMA會采取一定的算法來舍棄一些連接請求,并發送告警信息。
(3)FMA模塊的實現
FMA模塊提供一個統一入口函數,該函數負責將收集到的CS2A內的TRACE信息、告警信息、統計信息上報給FM模塊。
(4)CLHA模塊的實現
CLHA模塊接收CS2A初始化時CLH發來的內存數據庫加載完畢的消息,并在之后去進行數據讀取;或者在CS2A運行期間,接收CLH發來的一些設置指令,例如打開關閉TRACE、對告警級別進行控制等。
遠程業務接入管理(RSAM)模塊的功能是通過生成TCAP協議消息和遠端SCP進行通信,轉換TCAP原語消息、INAP消息,維護對話的狀態,其處理方法如下:
①接受TIM發送的消息,該消息以TCAP原語形式表示,實際是SCP通過TCAP協議傳送來的消息,此消息分為對話處理原語和成分處理原語。RSAM接受對話處理原語,維護對話;轉換成分處理原語,將其轉換為INAP的操作消息;
②接受CORE發送的消息,將其轉換為成分處理原語,再根據消息的內容生成對話處理原語,向遠端SCP發送;
RSAM到CORE的消息是INAP消息類型(實質為成分處理原語內容),RSAM到TIM為TCAP原語消息(包括成分處理原語和對話處理原語)。RSAM負責將CORE傳來的內部消息轉化為TCAP原語消息,將TIM傳來的TCAP原語消息轉化為內部消息;
RSAM和CORE模塊共同維護全局變量哈希表,該哈希表中記載了事務ID和業務上下文塊的指針。
RSAM模塊同時負責將CS2A系統的處于穩態的會話和事務相關的數據包發送到RPM系統,并由RPM系統負責向高可用系統HA進行冗余數據的處理和向備邊的CS2A發送。
CS2A在使用TCAPES提供的服務前必須向TCAPES注冊,如果注冊成功TCAPES會返回一個值唯一的log_user_id。
TIM和TCAPES之間的通信使用消息頭+消息體的消息格式,其中消息頭中包含了目的、源、消息長度、會話ID、log_user_id、call_id等信息,消息體部分是符合TCAP協議規范的消息內容。來自RSAM的消息在TIM模塊進行最后一次裝包處理,填充諸如目的地址、源地址、消息長度等信息,并進行消息的發送處理;對接收自TCAPES的消息,依據消息頭中的信息將消息體部分解出,并對消息進行分發處理。
TIM還負責維護會話狀態機。一個會話狀態機唯一對應SF和SCP之間的一次業務對話,也唯一對應一個對話塊。狀態機隨著對話塊的創建而創建,隨著對話塊的銷毀而銷毀。狀態機的狀態信息記錄在對話塊的tdsm_state成員中,當新建一個對話塊時,狀態機初始狀態為IDLE;當銷毀一個對話塊時,會檢查狀態機狀態,如果不是IDLE則報錯。狀態機的狀態變遷反映了對話從請求、建立到銷毀的過程。
TIM對每個會話專門分配了一個定時器池,用以對這個會話范疇內的消息發送進行定時守護,如果等待回復消息的定時器時超,則做錯誤處理。
利用上述設計思想和實現思路,已經在某軟交換系統的研發項目中將之進行了具體實現。經過反復測試,該系統符合《YD1435-2007軟交換設備測試方法》中關于INAP的測試要求。該系統采用C語言和商用ASN.1工具完成,同時該系統的設計充分考慮了系統的模塊化設計、運行效率、健壯性、可靠性等問題。該設計思想對于同類項目的研發具有很高的參考價值。
[1]YD 1226-2002,智能網能力集2(CS-2)智能網應用規程(INAP)[S].
[2]YD 1435-2007,軟交換設備測試方法[S].
[3]王柏.智能網教程[M].北京:北京郵電大學出版社,2000:55-62.
[4]糜正琨,陳錫生.七號共路信令系統[M].北京:人民郵電出版社,1994:195-226.