sip信令超时机制

DIALOG
UA 发送初始INVITE 请求后,只有接收到失败响应才有可能建立DIALOG 。通过callid,FROM 域中的tag 参数,TO 域中的tag 参数来唯一标识DIALOG  FROM 域中的参数由主叫添加,TO 域中的参数由被叫添加。

根据DIALOG的定义,只有当101199200消息中的TO域中带有tag参数时,此时才建立dialog。对通过101199消息(目前一般是18×消息)建立的DIALOG,我们称之为早期会话(early dialog).

消息传送和定时器保护
无论是 Client 还是 Server 方,在定时器和消息重发的处理上,可分为与 INVITE 相关的 Transaction  和与 INVITE 不相关的 Transaction RFC3261 中定义了两个基准定时器 T1500msT24s
无论是可靠传送还是不可靠传送,当实体发送消息(包括请求或响应消息)后,都会启动一个64  倍的T1 定时器(计时器B、H、F),当此定时器终结时,如果没有收到相应的响应或确认消息,实体将会清掉相关的Transaction

一、与INVITE请求 消息相关的行为(Client 侧行为)
SIP 实体(包括UA Proxy )发送INVITE 消息后,无论是可靠传送还是不可靠传送,实体都会启动 Transaction 保护,启动定时器B Timer B=64*T1 ,如果T1 500ms, 则此定时器为32S )。
在不可靠传送的情况下,实体同时会启动 T1 500ms 定时器(A定时器) 如果 T1 终结了没有收到任何响应消息,实体将会重发 INVITE 消息,以后的间隔分别为 2T1,4T1,8T1,16T1,32T1, 在此期间,如果收到响应消息,实体将会终止重发行为。
当定时器B Timer B=64T1 )终结时,如果实体仍然没有收到响应消息,实体将终止该呼叫请求。

二、与INVITE 消息相关的最终响应行为(Server 侧行为)
当被叫用户应答时,被叫侧UA UAS )将会向对端发送200 消息,表示对INVITE 消息的确认,主叫侧UA UAC 收到200 消息)后,将会发送ACK 消息,表示收到200 消息。 因此,对Server 侧来讲,当发送200 消息后,为了等待ACK 消息,将会启动定时器H Timer H=64T1
在不可靠传送的情况下, Server 还会启动 T1 定时器(计时器G) 如果 T1 终结,没有收到 ACK 消息, UAS 将会重发 200  消息。以后的间隔分别为 2T1,4T1,8T1, 当时间达到 T2 T2 8T1 )后,后续重发的间隔将一直为 T2。
当定时器H Timer H=64T1 )终了时,如果实体仍然没有收到ACK 确认消息,实体将会终止该呼叫请求。
其它的最终响应消息,消息的重传和定时器保护也与200 消息的相同。

三、与INVITE消息无关的请求消息的行为(Client 侧行为)
其它请求(非INVITE 请求)消息,例如INFO 消息或BYE 消息,实体接收到最终响应后,由于不需要对最终响应消息进行确认,因此消息重发行为上与INVITE 消息的重发存在不同。
当实体发送INFO BYE 消息后,实体将会启动定时器F Timer F=64T1 )。如果定时器F 终了时,没有收到最终响应消息,实体将会清掉Transaction
在不可靠传送的情况下,实体同时启动T1 定时器(计时器E)。如果没有收到任何响应消息,实体重发的行为将与INVITE 消息相关的最终响应行为(Server )相同。如果在此期间没有收到临时响应消息,实体将会以T2 的间隔重发。

ACK 只有在响应非200 OK 时才和INVITE 一样,否则与INVITE 不为同一事务,只属于同一个对话。

定时器 缺省值 含义
T1 500 ms 17.1.1.1 经历来回时间(RTT)
T2 4 秒 17.1.2.2 非 INVITE 请求和 INVITE 响应的最长重新传输时间间隔
T4 5 秒 17.1.2.2 消息可保留在网络中的最长持续时间
计时器 A 最初为 T1 17.1.1.2 INVITE 请求重新传输时间间隔(仅适用于 UDP)
计时器 B 64*T1 17.1.1.2 INVITE 事务超时计时器
计时器 D 大于 32 秒(对于 UDP) 17.1.1.2 响应重新传输的等待时间
0 秒(对于 TCP 和 SCTP)
计时器 E 最初为 T1 17.1.2.2 非 INVITE 请求重新传输时间间隔(仅适用于 UDP)
计时器 F 64*T1 17.1.2.2 非 INVITE 事务超时计时器
计时器 G 最初为 T1 17.2.1 INVITE 响应重新传输时间间隔
计时器 H 64*T1 17.2.1 ACK 接收的等待时间
计时器 I T4(对于 UDP) 17.2.1 ACK 重新传输的等待时间
0 秒(对于 TCP 和 SCTP)
计时器 J 64*T1(对于 UDP) 17.2.2 重新传输非 INVITE 请求的等待时间
0 秒(对于 TCP 和 SCTP)
计时器 K T4(对于 UDP) 17.1.2.2 响应重新传输的等待时间
0 秒(对于 TCP 和 SCTP)

猜你喜欢

转载自blog.csdn.net/daitu3201/article/details/80831429