Freeswitch 解决32秒 ACK TimeOut自动挂断问题

32秒断开可能与SIP或RTP的超时设置有关

在FreeSWITCH的生产环境中遇到了大量通话在32秒后断开的现象。通过抓包分析中发现,SIP消息中的Contact地址被错误地设置为媒体地址。这种情况确实会导致SIP消息和媒体流的同步问题,从而引发通话中断。所以导致在发送200ok接通后,对方ack回不来,32秒后自动拆线(ACK Timeout)。

1. SIP 配置问题

SIP配置中的Contact地址应该正确指向SIP服务器的地址,而不是媒体地址。错误的Contact地址会导致SIP消息和媒体流的不一致,从而造成通话断开。

  • 检查SIP配置:确保FreeSWITCH的SIP配置文件中internalexternal配置文件的Contact地址正确设置。

  • 调整SIP配置:如果你的FreeSWITCH服务器配置了多个网络接口或IP地址,确保SIP配置正确指定了应该使用的IP地址。

<param name="sip-ip" value="your_sip_server_ip"/>
<param name="sip-contact-ip" value="your_sip_server_ip"/>
2. NAT 设置问题

如果FreeSWITCH服务器位于NAT后面,NAT设置可能会导致SIP和RTP流地址不匹配。

  • 检查NAT配置:确保FreeSWITCH的NAT设置正确。你可以在internalexternal配置文件中检查和配置NAT相关的参数。例如:

    <param name="nat-support" value="true"/>
    
    <param name="rtp-ip" value="your_external_ip"/>
  • 使用STUN服务器:如果FreeSWITCH位于NAT后,考虑配置STUN服务器,以帮助SIP客户端和服务器正确确定公共地址。

3. RTP 流设置

RTP流的配置错误也可能导致通话中断。

  • 检查RTP配置:确保RTP流的配置正确,并且SIP消息中的媒体地址与实际RTP流的地址匹配。

调整RTP设置:在FreeSWITCH的配置文件中,检查RTP设置是否正确。

<param name="rtp-ip" value="your_rtp_ip"/>
4.正确的配置方法

方法一:直接修改配置文件: 


/etc/freeswitch/conf/sip_profiles/internal.xml

<!-- param name="ext-rtp-ip" value="$${external_rtp_ip}"/ -->
<param name="ext-rtp-ip" value="$${local_ip_v4}"/>
<!-- param name="ext-sip-ip" value="$${external_rtp_ip}"/ -->
<param name="ext-sip-ip" value="$${local_ip_v4}"/>

方法二、在vars配置中修改external_rtp_ip变量

位置:/etc/freeswitch/conf/vars.xml.xml
 

<X-PRE-PROCESS cmd="stun-set" data="external_rtp_ip=stun:stun.freeswitch.org"/>
<X-PRE-PROCESS cmd="stun-set" data="external_sip_ip=stun:stun.freeswitch.org"/>

修改为:
<X-PRE-PROCESS cmd="stun-set" data="external_rtp_ip=192.168.1.8"/>
<X-PRE-PROCESS cmd="stun-set" data="external_sip_ip=192.168.1.8"/>

然后重启服务器即可。

总结,遇到这种问题,最可能的原因是SIP配置中的Contact地址设置错误,或者NAT设置不正确。检查并纠正这些配置,通常可以解决通话中断的问题。通过详细的抓包分析,可以帮助你进一步定位问题。如果问题仍然存在,提供更详细的抓包数据或日志信息,可以帮助进行更深入的排查。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

常生果

喜欢我,请支持我

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值