商业大宋,化妆品行业网站,十三咒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功能,目前此方案已经在企业中采用并实现。