您当前的位置是:  首页 > 资讯 > 国内 >
 首页 > 资讯 > 国内 >

SIP终端和服务器端会话超时定时器中SE和MSE设置关系详解示例说明以及相关协议-rfc4028

2021-10-18 09:26:52   作者:james.zhu    来源:Asterisk开源派   评论:0  点击:


  在SIP网络环境中,注册和会话管理涉及了很多的定时器,通过定时器来更新各种自动和服务器端的状态。很多用户在终端配置中因为缺乏对一些关于SIP基本配置的了解,可能在注册时就已经产生了错误。因此,他们在配置过程中因为对超时设置的问题导致很多常识性的错误。还有一些用户在注册成功以后,一段时间出现再次注册失败,试图使用keepalive来维持会话存活状态。其实,这种方式也不是一个SIP规范支持的方式。因为,在SIP规范中没有对创建的会话有非常明确的存活机制处理方式,尽管各种用户端支持了这样的处理设置,但是服务器端仍然不会对此做相应的处理。
  为了处理对话存活机制进行管理,SIP协议支持了一个非常重要的关于定时器的扩展协议,这就是RFC4028。在此协议中规定了两个针对SIP会话超时定时器:Session-Expires(SE)和Min-SE(MSE)。这里提醒读者,一些人理解这里的M为MAX了,当然后续就会有很多悲剧出现。Session-Expires 终端用来通过INVITE或者UPDATE传输会话生命周期,Min-SE用来传输代理服务器端允许最小会话周期值。UAs通过周期性地发送re-INVITE或者UPDATE请求来保持会话存活状态。示例中是鼎信SIP 话机设置中关于定时器(SE)设置:
  根据RFC4028-5,MSE默认设置为90秒,通过响应码422返回中传输。服务器端通过MSE设置来校验其设置范围,鼎信IPPBX UC200 示例关于定时器设置:
  通过终端(SE)和服务器端(MSE)设置可以看出,尽管在用户端设置了某个参数值,但是如果超过了服务器端MSE的设置,仍然不会成功设置。因为服务器端MSE也进行了设置处理。在具体的关于SIP话话定时器的SE和MSE的处理流程如下:
  关于SIP会话超时SE和MSE协商机制-RFC4028
  在以上示例中,我们可以看到,用户通过INVITE发送一个SE为:50秒,服务器端不接受,因此返回一个422(参考rfc4028-6),假设服务器指示仅接受最小80秒的MSE。终端又根据服务器端的设置最小要求,设置为SE为80秒。代理服务器 1 看到终端按照此建议值设置了SE,满足了自己本身的MSE要求,然后转发到第二个代理服务器,在设置中设置了SE 80秒,MSE也是80秒。假设第二个代理服务器同样也不能接受这样的设置,也对第一个代理发送一个建议的MSE值:90秒。第一个代理服务器通过和第一个终端协商后又重新发送一个新的SE设置为90秒的定时器超时设置,并且携带了第二个代理服务器的MSE定时器设置90秒。最后实现存活机制流程。
  通过以上关于ME和MSE处理机制的流程我们看到,用户侧不能任意设置ME,服务器端也需要小心设置MSE值。因为,MSE事实上是一种对服务器的一种保护机制,如果服务器端对话话处理能力遇到性能瓶颈,资源不足的话,SE设置过低,导致服务器端验证响应过于频繁,可能最后导致系统稳定性问题。笔者这里仅介绍了关于会话定时器SE和MSE的关系设置,在SIP服务器的环境配置中还有其他的定时器讨论需要读者做进一步的了解,通过这些定时器设置获得更多关于SIP处理的时间设置:
  参考资料:
  • https://www.rfc-editor.org/rfc/rfc4028.html
  • www.dinstar.cn
  • www.asterisk.org.cn
【免责声明】本文仅代表作者本人观点,与CTI论坛无关。CTI论坛对文中陈述、观点判断保持中立,不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。请读者仅作参考,并请自行承担全部责任。

专题

CTI论坛会员企业