欢迎访问 水平网    今天是:2017年11月22日 注册 | 登录 | 订阅 | 收藏
>> 网络技术 >> VOIP技术 >> SIP协议的事务处理机制-ICT处理流程
推荐文章
热点文章
专题
JQuery框架
Prototype.js
HTML5

SIP协议的事务处理机制-ICT处理流程

作者:承成,  来源:本站,  阅读:1486,  发布时间:2014-07-26 【放入收藏夹
本站原创文章,如需转载,请保留作者及出处:www.goalercn.com,谢谢合作,不愿保留作者及出处信息的请勿转载!

 
SIP共有4个状态处理机制,分别是ICT(客户端的请求消息-INVITE及与之相关的消息)、NICT(客户端非INVITE消息的其他所有消息)、IST(服务器端的请求消息- INVITE及与之相关的消息)、NIST(服务端的非INVITE消息的其他所有消息)
 
为什么要把INVITE消息单独处理? 因为INVITE是一个3次握手的过程,而其他所有的消息只需要两次握手;其过程类似与TCP/UDP。

INVITE Client Transaction

                               |INVITE from TU
             Timer A fires     |INVITE sent
             Reset A,          V                      Timer B fires
             INVITE sent +-----------+                or Transport Err.
               +---------|           |---------------+inform TU
               |         |  Calling  |               |
               +-------->|           |-------------->|
                         +-----------+ 2xx           |
                            |  |       2xx to TU     |
                            |  |1xx                  |
    300-699 +---------------+  |1xx to TU            |
   ACK sent |                  |                     |
resp. to TU |  1xx             V                     |
            |  1xx to TU  -----------+               |
            |  +---------|           |               |
            |  |         |Proceeding |-------------->|
            |  +-------->|           | 2xx           |
            |            +-----------+ 2xx to TU     |
            |       300-699    |                     |
            |       ACK sent,  |                     |
            |       resp. to TU|                     |
            |                  |                     |      NOTE:
            |  300-699         V                     |
            |  ACK sent  +-----------+Transport Err. |  transitions
            |  +---------|           |Inform TU      |  labeled with
            |  |         | Completed |-------------->|  the event
            |  +-------->|           |               |  over the action
            |            +-----------+               |  to take
            |              ^   |                     |
            |              |   | Timer D fires       |
            +--------------+   | -                   |
                               |                     |
                               V                     |
                         +-----------+               |
                         |           |               |
                         | Terminated|<--------------+
                         |           |
                         +-----------+
 
                 Figure 5: INVITE client transaction
TU:可理解为上层用户,应用界面:
TU向transaction提交一个“INVITE”,state machine(状态机) 进入 “calling”状态
若采用UDP传输方式,则启动定时器A,超时时间为T1(T1为一个协议中定义的值)
若采用TCP传输方式,则不启动定时器
 
任何传输都必须启动定时器B(总的超时时间),value= 64*T1
若定时器A超时,ICT必须转发请求到传输层,并重新启动定时器A,value= 2*T1
当定时器A到2*T1时间以后,请求必须被再次转发(如果事务还存在),超时时间变为4*T1如此循环,直到定时器B超时;
定时器B时到,退出整个事务;
定时器A,必须被用在“calling”状态
注:T1 默认值为 500ms,RTT between the UAC and the UAS
1、  当定时器B超时,而Client Transaction状态依然是“calling”时,则CT向TU提交一个TIMEOUT消息,CT不产生ACK;
注:64*T1 = 7个request的TIME
/*****************************************************************************/
2、  在状态为“calling”时,当CT收到临时请求如100 try时,CT状态从“calling”—>”Preceeidng”。
3、  当CT为状态“Preceeidng”时,CT就不再提交Request;同时把临时请求通知TU;
4、  无论CT在“calling”或者“Proceeding”状态,当收到300-699响应,CT必须进入“completed”状态,同时提交响应给TU。
5、  当CT为状态“Preceeidng”时,任何临时响应都必须通知TU
6、  当CT在状态“Preceeidng”时,收到响应如300~699时,无论是TCP还是UDP都必须产生一个ACK request,并发送;ACK发送的IP_addr,port必须同INVITE;
7、  当CT进入“completed”状态时,若采用UDP方式,启动定时器D,RTT_VALUE = 32s(至少);若TCP则不需要
8、  当CT处在状态“calling”、“proceeding”,收到“2XX”响应时,则CT进入“terminated”状态,同时通知TU;若UAC收到“2XX”,产生一个“ACK_REQUEST”,ACK不放入事务层
9、  当CT进入“Terminated”,必须立即删除事务
ACK消息不通过事务发送
TGAS:SIP协议事务处理机制ICT流程
评论【共有0条评论】查看所有评论
称呼:(*)   邮箱:   QQ:   验证码: 看不清楚?点击刷新验证码