网络监测系统中SIP监测模块的研究与实现
2010-11-05王庆敏何西良杨浩
王庆敏,何西良,杨浩
(重庆邮电大学通信学院 重庆 400065)
0 引言
网络监测设备主要部署在通信系统设备接口处,通过测试仪器的硬件接口对网络中的信令数据进行采集,将采集到信令的数据进行实时以及事后分析。测试仪器通过对所采集数据的详细分析,可以提供协议详细解码、呼损分析、呼叫流程关联、呼叫以及话务量统计等功能,为网络的建设和进一步优化完善提供支持。
针对信令的监测主要有3个大的模块,协议解码模块、呼叫合成模块、应用模块。协议解码模块实现对信令消息进行解码是监测系统的基础部分,呼叫合成是根据用户需要在解码基础上对相关信令消息进行处理合成。应用模块是为用户提供的各种应用如CDR显示,流量统计等。
1 SIP监测系统研究与实现
1.1 SIP消息结构
SIP (Session Initial Protocol,会话初始协议)由IETF(Internet工程任务组)提出的多媒体通信应用层信令控制协议,用于创建并控制双方或者多方参加的会话。SIP是一个基于文本的分层协议,由于它简洁、灵活、易于扩展,已经成为NGN/IMS的主导信令协议。
SIP协议包括起始行、头域、空行、和一个包含的消息体(主要为SDP描述)。消息格式如下:
Start-line
//起始行
Message-heade
//头域字段
CRLF
//空行
Message-bode
//消息体
起始行为第一行,根据请求或应答消息分为请求行和状态行。请求行提供六种基本方法INVITE、ACK、OPTIONS、BYE、CANCEL 和 REGISTER。状态行提供100~699的6类不同的3位应答码对应不同的相应原因。
头域提供了本次呼叫和相关的路由信息,主要字段包括Call-ID、From、To、Via、Csep和Max-Forwards。SIP协议解码和分析主要针对头域。
消息体通常用来描述建立会话的类型,交换媒体类型的相关参数,它不是SIP协议定义的消息体,而是SIP协议携带的其他协议,通常为SDP(会话描述协议)描述。
1.2 SIP解码模块总体方案
网络监测系统对于SIP的解码时通过接口函数调用解码库来实现的。解码库函数模块封装了对SIP消息解析的全部方法,它为其他模块提供服务接口,并且独立于其他模块。框架如图1所示。
图1 解码功能框架
由于网络监测设备面临海量的信令信息,所以对采集到的信令消息解码后并不进行存储,而是根据不同的需要调用不同的解码接口函数进行不同程度的解码。具体的来说,合成解码主要解析SIP中的关键信息,用于呼叫合成分析;概要解码通过对特定关键字段的解析为用户提供信令过滤功能;详细解码则是提取SIP中所有字段的信息,完整的展现给用户。
在解码类库中我们设这SIPMessage类,SIPMessage类结构图如下:
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 ) ();
………..
}
以上之列举了类中定义的重要的变量指针和函数。*data为数据指针,dataLength是协议数据单元在内存中的长度,根据这两个变量确定一个SIP协议数据在内存中的确切位置。把SIP协议数据处理函数封装在SipParser类中,根据SIP协议的特点得到对消息处理的简单流程图如图2所示。
图2 SIP协议数据解码流程图
1.3 SIP呼叫合成方案实现方案
呼叫合成主要是提取额一次完整呼叫的过程,我们用CDR来表示。CDR合成时实现通信结果信息统计监测和网络性能测试的基础,对网络中消息安归属不同的呼叫流进行归并,并用索引的方式吧这些归属同一个呼叫的信息联系到一起,以便完成呼叫跟踪等各项功能。
呼叫合成的第一步是创建CDR记录,然后调用基础解码接口取出SIP协议数据中能唯一判断一个呼叫的关键值信息。在SIP协议中不同的呼叫可以通过Call-ID,From,To标签唯一的确定。若符合该记录则修改呼叫属性并加入到该CDR记录当中来。
2 系统运行结果与分析
通过对网络关口现场测试,对网络监测系统功能进行测试,下面是一条实测的SIP数据的头域:
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
与该条消息属于同一个呼叫的CDR合成图如图3所示。由图3可见,本次呼叫时在NGN网络的 172.15.15.16 和 172.15.15.17 的两个 IP 地址之间建立的,双方完成了建立呼叫的三次握手,并交换了媒体类型等参数。通过测试,该监测系统满足了设计中所提出的要求。
图3 SIP协议呼叫合成结果
3 结束语
本文首先介绍了网络监测系统的基本构架,给出了模块构成图,在对SIP协议研究的基础上指明了SIP协议的三段式结构:起始行、头域、消息体。然后对SIP解码模块和CDR合成模块进行了方案的设计并给出了CDR合成的结果图。通过单元测试和系统集成测试结果给证明了方案设计的正确性。
[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.awardsolutions.com,2002.
[6] 李邵梅.NGN中SIP监测系统模型的研究与设计[J].电信工程技术与标准化,2007.
[7] 代贝.无线网络中SIP信令组合压缩方案研究[J].电子测试,2009.
[8] ROSENBERG J,SCHULZRINE H,CAMARILLOG,eta1.SIP :Session Initiation Protocol[S].IETF RFC3261,June 2002.