You need to enable JavaScript to run this app. FreeSWITCH如何强制每路新出局呼叫使用独立TCP/TLS连接实现SBC负载均衡
优惠活动
大模型
产品
解决方案
定价
更多

FreeSWITCH如何强制每路新出局呼叫使用独立TCP/TLS连接实现SBC负载均衡

FreeSWITCH 双节点SBC出局呼叫负载均衡配置说明

问题根因

FreeSWITCH 的 Sofia SIP 协议栈默认会复用相同目的地址的已建立 TCP/TLS 连接,所有出局呼叫的 SIP 信令都会走同一个连接,最终流量全部发往该连接对应的 SBC 单节点,无法利用双节点的负载均衡能力。

可行实现方案

1. 关闭对应链路的连接复用能力

根据你的出局配置方式,可选择修改全局SIP Profile或者单条SIP Gateway的配置:

  • 全局修改:在用于出局的 SIP Profile(默认路径为conf/sip_profiles/external.xml)的配置块中添加:
    • 普通TCP传输场景:tcp-connection-reuse=false
    • TLS传输场景:tls-connection-reuse=false
  • 单网关修改:仅针对对接双SBC的这条出局网关,在默认路径conf/sip_profiles/external/下对应的gateway配置文件中添加上述两个参数,不影响其他出局链路的原有连接复用逻辑。

该配置默认值为true,修改为false后,Sofia栈不会主动复用已建立的连接,每路新呼叫会优先发起新的连接请求。若使用的FreeSWITCH版本低于1.6,不支持上述连接复用配置,可通过定期触发Sofia栈清空已建立的TCP连接,配合DNS轮询实现分流,不过该方案会有短暂的呼叫中断风险,不建议生产环境使用。

2. 配合地址轮询实现节点分流

仅关闭连接复用还不够,需要确保FreeSWITCH能获取到两个SBC节点的地址,避免所有新连接都发起给同一个节点:

  • 若双SBC使用同一域名对外提供服务,调小SIP Profile的DNS缓存配置,可添加dns-cache-min=10、dns-cache-max=10,让FreeSWITCH每10秒重新解析一次SBC域名,拿到不同的节点IP发起新连接
  • 若双SBC有独立的IP/域名,可在Dialplan的拨号逻辑中实现轮询调度,每次呼叫按顺序/随机选择其中一个SBC地址作为目的方,自然会建立对应节点的独立TCP连接。

注意事项

  • 关闭连接复用会增加每次呼叫的TCP/TLS握手开销,若单节点并发呼叫量超过1000路以上,需要提前评估服务器的端口占用、连接数压力
  • 若SBC自身有长连接保活逻辑,可适当调小SIP Profile的tcp-keepalive间隔参数,避免旧连接被长期占用。

内容的提问来源于stack exchange,提问作者Sharath

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.26 10:27:03