SIP timer

使用UDP传输(unreliable way)SIP时需要进行重传。

一、UAC端
1. Invite transaction
---------------------------------------------------
T1,是对RTT的一个估计,默认500ms。可以根据实际情况进行配置,比如内网,建议减小,外网,建议增大。

Timer A:
发送Request后,启动,超时值是T1。如果超时,则重传,启动Timer A,超时值是2*T1。根据Timer B的值,一共可以传6次。

Timer B: 64*T1
Transaction的超时值

Timer D:
Client Transaction发送Ack后,如果使用UDP,则至少32s,使用TCP,则至少0s。
Timer D reflects the amount of time that the server transaction can remain in the "Completed" state when unreliable transports are used.
这个和Server Transaction的Timer H等价,其默认值是64*T1,但Client Transaction不知道Server的T1,所以使用了绝对值32s

StateMachine:
Calling -> Proceeding -> Completed -> Terminated


2. Non-Invite transaction
--------------------------------------------------------
UDP传输才需要重传
发送request后,启动timer E,超时值为T1,每次重传后再启动时为此前一次2倍,直到T2。
如果收到了一个provisional response,那么重传继续,但超时值变为T2;
发送reuqest后,启动Timer F,超时值为64*T1

每次重传后,启动的timer E,超时值为此前一次超时值的2倍与T2之间的最小值;
T2的默认值是4s,因此timer E的超时值可能依次是:500ms,1s,2s,4s,4s,... 直到Timer F超时

一旦UAC进入Completed状态,应该启动Timer K,超时值为T4(TCP的情况为0s)。
T4的默认值是5s,代表了网络清空UAC和UAS之间事务消息的时间。

Trying -> Proceeding -> Completed -> Terminated

二、UAS端
1. Invite transaction
收到Invite请求后,建立server transaction,进入Proceeding 状态
server transaction必须产生100 trying,除非他知道TU会在200ms内产生provisional 或者 final response

2xx 的重传由TU负责,不由server transaction 负责

在收到300 - 699 response后,server transaction进入Completed状态。
如果是unreliable 传输,则启动Timer G,超时值T1
进入Completed状态,启动Timer H,超时值64*T1

如果Timer G超时,那么重传并再启动,超时值min(2*old,T2),

在Completed状态收到Ack,则进入Confirmed状态,在这个状态下,Timer G被忽略。
进入Confirmed状态,是为了消化后续可能的Ack,进入这个状态,启动Timer I,超时值T4(UDP),0s(TCP)

在Completed状态,Timer H超时,则说明没有收到Ack,那么server transaction进入Terminated状态,并且,通知TU该failure

2. Non-Invite transaction
初始Trying状态,收到provisional response后,进入Proceeding状态
在Proceeding状态收到final response,则进入Completed状态,启动Timer J,超时值64*T1(UDP), 0s(TCP)。 Timer J超时,进入Terminated状态
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值