在理解sip 的协议栈中,timrt也是很重要的一部分,一直模模糊糊的,这几天整理了一下sip定时器的基础知识以及在实际代码中的应用;
sip 的定时器分类:参考下面的链接->
定时器 | 缺省值 | 节 | 含义 |
---|---|---|---|
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) |
sip 事件类型分为:ICT/IST/NICT/NIST/
不同的事件添加的timer类型和个数不同;
A B
| |
|—————1:SIP_INVENT—————>|
| |
|<————2:INVENT_100 ————— |
| |
|<————3:INVENT_180 ————— |
| |
|<————4:INVENT_200 ————— |
| |
|—————5:200_ACK——————> |
| |
|<—————6:TALING——————> |
| |
|——————7:BYE————————> |
| |
|——————8:BYE_200——————>|
| |
以下是自己根据网上资料,工作中的应用及rfc资料自己的理解。
1:SIP_INVENT:
创建 call_timer函数,作用是以后call超时操作;
2:INVENT_100:
B通过这个消息告诉A有回应,A开始启动自己的call_timer,时间可以自己定义。