freeswitch由于ext-sip-ip地址填写错误导致32秒拆线问题

    今天在freeswitch投产使用过程中,发现大量通话时长为32秒的通话,并且这下32秒通话全部来自与其中一台freeswitch中,这台freeswitch中的通话记录没有超过32秒的话单,所以对这台freeswitch进行抓包分析处理,发现其中contant代的地址不对,代成了媒体地址,所以导致在发送200ok接通后,对方ack回不来,32秒后自动拆线。

   对此分析了一下该逻辑的源码在nua_session.c中,里面有一个process_timeout的函数,这个函数是处理ack超时的,判定freeswitch多久没有接受到ack即认为对方没接通,则主动发送bye消息进行拆线。大家可以在这里增加告警代码,将freeswitch的ip发送到告警的api服务端,从而知道这一情况的发生。可以监控到自己或者没回ack所导致的异常,及时进行自处理,以及告知对端客户。

   并且发现在profile中有一个参数可以设置这个超时时间,可以根据业务需求进行对应的修改,不过作为标准的协议栈,不建议大家进行修改,参数为:timer-T1X64

   官方的解释该参数的用途为:

Transaction timeout (defaults to T1 * 64).
         Set the T1x64 timeout value used by the SIP transaction engine.
         The T1x64 is duration used for timers B, F, H, and J (UDP) by the SIP transaction engine.

         The timeout value T1x64 can be adjusted separately from the initial retransmission interval T1

我们可以在profile中添加这一行进行启用:

<param name="timer-T1X64" value="20000" /> 其中value就是超时时间,单位为ms,这里为20000,即当对方20S没有回ACK使就会使其挂断。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值