王慶敏,何西良,楊浩
(重慶郵電大學(xué)通信學(xué)院 重慶 400065)
網(wǎng)絡(luò)監(jiān)測(cè)設(shè)備主要部署在通信系統(tǒng)設(shè)備接口處,通過測(cè)試儀器的硬件接口對(duì)網(wǎng)絡(luò)中的信令數(shù)據(jù)進(jìn)行采集,將采集到信令的數(shù)據(jù)進(jìn)行實(shí)時(shí)以及事后分析。測(cè)試儀器通過對(duì)所采集數(shù)據(jù)的詳細(xì)分析,可以提供協(xié)議詳細(xì)解碼、呼損分析、呼叫流程關(guān)聯(lián)、呼叫以及話務(wù)量統(tǒng)計(jì)等功能,為網(wǎng)絡(luò)的建設(shè)和進(jìn)一步優(yōu)化完善提供支持。
針對(duì)信令的監(jiān)測(cè)主要有3個(gè)大的模塊,協(xié)議解碼模塊、呼叫合成模塊、應(yīng)用模塊。協(xié)議解碼模塊實(shí)現(xiàn)對(duì)信令消息進(jìn)行解碼是監(jiān)測(cè)系統(tǒng)的基礎(chǔ)部分,呼叫合成是根據(jù)用戶需要在解碼基礎(chǔ)上對(duì)相關(guān)信令消息進(jìn)行處理合成。應(yīng)用模塊是為用戶提供的各種應(yīng)用如CDR顯示,流量統(tǒng)計(jì)等。
SIP (Session Initial Protocol,會(huì)話初始協(xié)議)由IETF(Internet工程任務(wù)組)提出的多媒體通信應(yīng)用層信令控制協(xié)議,用于創(chuàng)建并控制雙方或者多方參加的會(huì)話。SIP是一個(gè)基于文本的分層協(xié)議,由于它簡(jiǎn)潔、靈活、易于擴(kuò)展,已經(jīng)成為NGN/IMS的主導(dǎo)信令協(xié)議。
SIP協(xié)議包括起始行、頭域、空行、和一個(gè)包含的消息體(主要為SDP描述)。消息格式如下:
Start-line
//起始行
Message-heade
//頭域字段
CRLF
//空行
Message-bode
//消息體
起始行為第一行,根據(jù)請(qǐng)求或應(yīng)答消息分為請(qǐng)求行和狀態(tài)行。請(qǐng)求行提供六種基本方法INVITE、ACK、OPTIONS、BYE、CANCEL 和 REGISTER。狀態(tài)行提供100~699的6類不同的3位應(yīng)答碼對(duì)應(yīng)不同的相應(yīng)原因。
頭域提供了本次呼叫和相關(guān)的路由信息,主要字段包括Call-ID、From、To、Via、Csep和Max-Forwards。SIP協(xié)議解碼和分析主要針對(duì)頭域。
消息體通常用來描述建立會(huì)話的類型,交換媒體類型的相關(guān)參數(shù),它不是SIP協(xié)議定義的消息體,而是SIP協(xié)議攜帶的其他協(xié)議,通常為SDP(會(huì)話描述協(xié)議)描述。
網(wǎng)絡(luò)監(jiān)測(cè)系統(tǒng)對(duì)于SIP的解碼時(shí)通過接口函數(shù)調(diào)用解碼庫來實(shí)現(xiàn)的。解碼庫函數(shù)模塊封裝了對(duì)SIP消息解析的全部方法,它為其他模塊提供服務(wù)接口,并且獨(dú)立于其他模塊。框架如圖1所示。
圖1 解碼功能框架
由于網(wǎng)絡(luò)監(jiān)測(cè)設(shè)備面臨海量的信令信息,所以對(duì)采集到的信令消息解碼后并不進(jìn)行存儲(chǔ),而是根據(jù)不同的需要調(diào)用不同的解碼接口函數(shù)進(jìn)行不同程度的解碼。具體的來說,合成解碼主要解析SIP中的關(guān)鍵信息,用于呼叫合成分析;概要解碼通過對(duì)特定關(guān)鍵字段的解析為用戶提供信令過濾功能;詳細(xì)解碼則是提取SIP中所有字段的信息,完整的展現(xiàn)給用戶。
在解碼類庫中我們?cè)O(shè)這SIPMessage類,SIPMessage類結(jié)構(gòu)圖如下:
class SipMsg
{ public:
const UInt8 * data;
UInt32 dataLength;
SdpMsg * pSdpMsg;
IString decodedMsg;
SipMsgType msgType;
inline SipMsgType GetMsgType( void ) ();
inline int
GetRspCode ( void ) ();
inline UInt32
GetCSeqDigits ( void ) ();
inline IString * GetCallId( void ) ();
inline IString * GetToTag( void ) ();
inline IString * GetFromTag( void ) ();
………..
}
以上之列舉了類中定義的重要的變量指針和函數(shù)。*data為數(shù)據(jù)指針,dataLength是協(xié)議數(shù)據(jù)單元在內(nèi)存中的長(zhǎng)度,根據(jù)這兩個(gè)變量確定一個(gè)SIP協(xié)議數(shù)據(jù)在內(nèi)存中的確切位置。把SIP協(xié)議數(shù)據(jù)處理函數(shù)封裝在SipParser類中,根據(jù)SIP協(xié)議的特點(diǎn)得到對(duì)消息處理的簡(jiǎn)單流程圖如圖2所示。
圖2 SIP協(xié)議數(shù)據(jù)解碼流程圖
呼叫合成主要是提取額一次完整呼叫的過程,我們用CDR來表示。CDR合成時(shí)實(shí)現(xiàn)通信結(jié)果信息統(tǒng)計(jì)監(jiān)測(cè)和網(wǎng)絡(luò)性能測(cè)試的基礎(chǔ),對(duì)網(wǎng)絡(luò)中消息安歸屬不同的呼叫流進(jìn)行歸并,并用索引的方式吧這些歸屬同一個(gè)呼叫的信息聯(lián)系到一起,以便完成呼叫跟蹤等各項(xiàng)功能。
呼叫合成的第一步是創(chuàng)建CDR記錄,然后調(diào)用基礎(chǔ)解碼接口取出SIP協(xié)議數(shù)據(jù)中能唯一判斷一個(gè)呼叫的關(guān)鍵值信息。在SIP協(xié)議中不同的呼叫可以通過Call-ID,From,To標(biāo)簽唯一的確定。若符合該記錄則修改呼叫屬性并加入到該CDR記錄當(dāng)中來。
通過對(duì)網(wǎng)絡(luò)關(guān)口現(xiàn)場(chǎng)測(cè)試,對(duì)網(wǎng)絡(luò)監(jiān)測(cè)系統(tǒng)功能進(jìn)行測(cè)試,下面是一條實(shí)測(cè)的SIP數(shù)據(jù)的頭域:
INVITE sip:bob@172.15.15.17 :5060 ;SIP/2.0
Via: SIP/2.0/UDP 172.15.15.16;branch=z9hG4bK 776asdhds
Max-Forwards: 70
To: Bob <sip:bob@172.15.15.17>
From: Alice <sip:alice@172.15.15.16>;tag=19283 01774
Call-ID: a84b4c76e66710@172.15.15.16
CSeq: 314159 INVITE
Contact: <sip:alice@172.15.15.16>
Content-Type: application/sdp
Content-Length: 142
與該條消息屬于同一個(gè)呼叫的CDR合成圖如圖3所示。由圖3可見,本次呼叫時(shí)在NGN網(wǎng)絡(luò)的 172.15.15.16 和 172.15.15.17 的兩個(gè) IP 地址之間建立的,雙方完成了建立呼叫的三次握手,并交換了媒體類型等參數(shù)。通過測(cè)試,該監(jiān)測(cè)系統(tǒng)滿足了設(shè)計(jì)中所提出的要求。
圖3 SIP協(xié)議呼叫合成結(jié)果
本文首先介紹了網(wǎng)絡(luò)監(jiān)測(cè)系統(tǒng)的基本構(gòu)架,給出了模塊構(gòu)成圖,在對(duì)SIP協(xié)議研究的基礎(chǔ)上指明了SIP協(xié)議的三段式結(jié)構(gòu):起始行、頭域、消息體。然后對(duì)SIP解碼模塊和CDR合成模塊進(jìn)行了方案的設(shè)計(jì)并給出了CDR合成的結(jié)果圖。通過單元測(cè)試和系統(tǒng)集成測(cè)試結(jié)果給證明了方案設(shè)計(jì)的正確性。
[1] RFC3261.SIP :session Initiation Protoco1[s].IETF.2005-02.
[2] Handley M,Jacobson V.SDP:session description protocol[EB/OL].http://www.ietf.org/rfc/rfc2327.txt.April 1998.
[3] M Handley,ela1.SIP :Session Initiation Protoco1.RFC2543,March l999.
[4] 3GPP TS 23.228.IP Multimedia Subsystem (IMS)(Release 6).v6 2 0.
[5] Narayan Paran1eShwar.Chris Reece.Advanced SIP Series:SIP and 3GPP.http://www.a(chǎn)wardsolutions.com,2002.
[6] 李邵梅.NGN中SIP監(jiān)測(cè)系統(tǒng)模型的研究與設(shè)計(jì)[J].電信工程技術(shù)與標(biāo)準(zhǔn)化,2007.
[7] 代貝.無線網(wǎng)絡(luò)中SIP信令組合壓縮方案研究[J].電子測(cè)試,2009.
[8] ROSENBERG J,SCHULZRINE H,CAMARILLOG,eta1.SIP :Session Initiation Protocol[S].IETF RFC3261,June 2002.