> 网络工程论文 > > 基于SIP协议的forking功能的研究和实现(2)
网络工程论文

基于SIP协议的forking功能的研究和实现(2)

摘要:三、具体流程 SIP的具体流程要分为并行和串行两种情形,分别进行介绍: 3.1 并行流程 在并行流程中主叫的请求会同时被发送给两个别叫用户,具体流程如图3所示,其中User AgentA为主叫用户,User Agent B,C为被叫用
关键词:基于,SIP,协议,forking,功能,研究,实现,摘要,

商业大宋,化妆品行业网站,十三咒txt下载

  三、具体流程

  SIP的具体流程要分为并行和串行两种情形,分别进行介绍:

  3.1 并行流程

  在并行流程中主叫的请求会同时被发送给两个别叫用户,具体流程如图3所示,其中User AgentA为主叫用户,User Agent B,C为被叫用户,Proxy Server是IMS系统中的某个具体的网元,是代理服务器,主要是起到消息转发以及完成fork功能的作用。

  各步骤的具体含义如下:

  主叫用户A发起请求INVITE到代理服务器,对应图上消息(1);

  假定此代理服务器是被叫归属地的网元,它能检测到有多个被叫联系contact地址,同时通过Request-Disposition确定为发生并行fork,于是,向两个被叫用户B和C发起INVITE请求,对应图上消息(2)和(3);

  两个被叫用户收到INVITE请求后,提示用户并振铃,都发送180( Ringing)消息通过代理服务器传给主叫用户,主叫用户能同时听到两个被叫的回铃音,对应图上消息(4)(5)(6)(7),此时,两路别叫的180消息中的To头部的tag值是不一样的,这样代理服务器中实现SIP的TU层就可以维护两个leg,来保存两路的不同会话信息;

  两个被叫用户都会送响应,上图中被叫用户B接通呼叫,产生2000K的应答,而被叫用户C则回送4XX消息,显示忙,代理服务器接收到两个被叫的不同应答,需要进行处理,它主动地对被叫用户C回送ACK,以结束被叫用户C之间的呼叫,同时将被叫用户B的200 OK转发到主叫侧,具体对应图上的(8)(9)(10)(11);   主叫收到成功响应后,回送ACK消息到被叫用户B予以证实,呼叫建立,对应图上的(12)和(13);

  主叫挂机,发送BYE消息,被叫回应200 0K响应,整个通话结束,对应图上的(14)(15)(16)(17)。

  3.2 串行流程

  在并行流程中主叫的请求会按照优先级先后发送给两个被叫用户,具体流程如图4所示:

  各步骤的具体含义如下:

  主叫用户A发起请求INVITE到代理服务器,对应图上消息(1);

  假定此代理服务器是被叫归属地的网元,它能检测到有多个被叫联系co ntact地址,同时通过Request-Disposition确定为发生串行fork,就需要根据两个被叫用户的优先级,优先级通过Accept-Contact,Reject-Contact等参数按照RFC3841协议规定的原则进行权值的计算,假定用户B的优先级高于用户C,代理服务器现将INVITE转发给用户B,对应图上消息(2);

  被叫用户B收到INVITE请求后,提示用户并振铃,并发送180(Ringing)消息通过代理服务器传给主叫用户,主叫用户能听到被叫用户B的回铃音,对应图上消息(3)(4);

  被叫用户B忙,因此回送4XX消息,代理服务器接收后,由于是fo rk情况,因此不将此失败响应发送给主叫用户,直接给被叫用户回送ACK确认,并将此初始请求消息INVITE继续发送到第二个用户C,对应图上消息(5)(6)(7);

  被叫用户C收到INVITE请求后,提示用户并振铃,并发送180(Ringing)消息通过代理服务器传给主叫用户,并进一步的发送200 0K响应接续通话,对应图上消息(8)(9)(10)(11);

  主叫收到成功响应后,回送ACK消息到被叫用户B予以证实,呼叫建立,对应图上的(12)和(13);

  主叫挂机,发送BYE消息,被叫回应200 0K响应,整个通话结束,对应图上的(14)(15)(16)(17)。

  四、结束语

  总体来说,fork功能的实现是比较复杂的,SIP协议层面要考虑非常多的异常情况,比如所有被叫用户都无法建议呼叫、或者两个被叫同时回送2000K成功响应等情况,而且整个功能的完成,还需要底层以及上层业务的配合,比如考虑如何对两个被叫都建立媒体通道等问题,这些在本文中没有阐述,本文主要介绍的是在现有的SIP架构的基础上,通过TU层维护多路呼叫的数据区的方法去实现fork功能,目前此方案已经在企业中采用并实现。