SIP 协议中的定时器

发布于:2025-06-21 ⋅ 阅读:(17) ⋅ 点赞:(0)

SIP(Session Initiation Protocol) 是一种信令协议,广泛用于建立、维持和终止多媒体会话(如VoIP通话)。作为基于UDP等不可靠传输的协议,SIP 通过多个定时器机制来确保消息的可靠传输和状态机的正常运行。

本文将详细介绍 SIP 中常用的定时器定义、用途及默认值,主要参考自 RFC 3261。


一、定时器分类概览

SIP 协议中定时器主要服务于 事务层(Transaction Layer),分为以下两类:

  • INVITE 事务定时器:用于 INVITE 请求(建立会话)

  • 非 INVITE 事务定时器:如 REGISTER、OPTIONS、BYE 等请求


二、常用定时器详解

1. Timer A

  • 适用类型:INVITE 客户端事务(基于UDP)

  • 作用:初始请求超时重传间隔,指数退避。

  • 默认值T1,一般为 500ms,之后每次翻倍。

  • 示意:发送 INVITE → 无响应 → 500ms → 重传 → 1s → 重传 → 2s …


2. Timer B

  • 适用类型:INVITE 客户端事务

  • 作用:整个事务的最大超时时间,超过则报错。

  • 默认值64*T1(约 32s)

  • 触发条件:如果在 Timer B 期间没有收到任何最终响应(如 200 OK),事务失败。


3. Timer C

  • 适用类型:INVITE 客户端事务(TCP 或 TLS 场景)

  • 作用:等待 2xx 最终响应的超时定时器(一般由UA层管理)

  • 默认值:通常实现设为 180s

  • 说明:TCP 无需重传,但仍需等待响应。


4. Timer D

  • 适用类型:INVITE 服务端事务(UDP)

  • 作用:等待 ACK 的最大时间

  • 默认值32s(当使用 UDP 时,避免重复发送响应)

  • 说明:防止服务端在没有收到 ACK 的情况下过早删除事务。


5. Timer E

  • 适用类型:非 INVITE 客户端事务

  • 作用:请求重传时间,指数退避

  • 默认值T1 初始,最大不超过 T2(4s)


6. Timer F

  • 适用类型:非 INVITE 客户端事务

  • 作用:最大等待时间

  • 默认值64*T1(32s)


7. Timer G

  • 适用类型:INVITE 服务端事务

  • 作用:2xx 以下响应重传间隔

  • 默认值T1,指数退避


8. Timer H

  • 适用类型:INVITE 服务端事务

  • 作用:最大等待 ACK 的时间

  • 默认值64*T1(32s)


9. Timer I

  • 适用类型:INVITE 服务端事务(完成状态)

  • 作用:事务完成后进入终止状态前的延迟(UDP)

  • 默认值T4(默认 5s)


10. Timer J

  • 适用类型:非 INVITE 客户端事务

  • 作用:等待最终响应确认的时间

  • 默认值64*T1(32s)


11. Timer K

  • 适用类型:非 INVITE 服务端事务

  • 作用:事务完成状态进入终止状态前的延迟

  • 默认值T4

  • T4


三、默认常量定义

名称 默认值 描述
T1 500ms RTT 基准单位
T2 4s 非 INVITE 重传最大间隔
T4 5s 网络层最大响应延迟(用于完成状态)


四、工程实践建议

  1. Timer T1 可调节:可以根据网络延迟配置为 250~1000ms。

  2. TCP/WS场景中 Timer A/G/J 不使用:无需重传。

  3. 调试时开启事务日志:如 FreeSWITCH/Sofia 中启用 sofia tracelevel 9

  4. 使用 Wireshark 验证定时器触发点


五、总结

SIP 协议通过定时器机制补偿了 UDP 的不可靠性,同时也控制事务状态机的生命周期。理解这些定时器的定义及作用,对于调试通话建立失败、消息重传、事务挂起等问题具有重要价值。


网站公告

今日签到

点亮在社区的每一天
去签到