概述
freeswitch 是一款简单好用的VOIP开源软交换平台。
当呼叫是同一个入中继,但是有多条出中继时,需要对出中继做负载均衡,mod_distributor模块可以完成对应的配置和路由。
mod_distributor是一个轻量级的线路分发模块,配置简单,支持权重方式分发多条出中继。
环境
centos:CentOS release 7.0 (Final)或以上版本
freeswitch:v1.10.7
GCC:4.8.5
APP示例
distributor的APP接口使用方法“${distributor(distributor_list)”。
<action application="bridge" data="sofia/gateway/${distributor(distributor_list)}/${destination_number}"/>
<action application="bridge" data="sofia/external/${destination_number}@${distributor(distributor_list)}"/>
配置&测试
distributor模块默认不编译,需要进入目录手动编译安装。
src/mod/applications/mod_distributor
make install
修改conf/autoload_configs/modules.conf.xml,加载distributor模块。
<load module="mod_distributor"/>
配置文件conf/autoload_configs/distributor.conf.xml,设置distributor列表。
<configuration name="distributor.conf" description="Distributor Configuration">
<lists>
<list name="test" total-weight="5">
<node name="10.55.55.138:5080" weight="1"/>
<node name="10.55.55.138:5090" weight="2"/>
<node name="10.55.55.138:15090" weight="2"/>
</list>
</lists>
</configuration>
配置文件conf/dialplan/test.xml,设置拨号计划。
<extension name="test" continue="false">
<condition field="destination_number" expression="^(\d+)$">
<action application="bridge" data="{sip_invite_call_id=${sip_call_id}}sofia/external/$1@${distributor(test)}"/>
</condition>
</extension>
刷新distributor配置数据。
reloadxml
distributor_ctl reload
发起呼叫10011->1002,三次的测试日志如下。
2022-12-13 15:37:37.150797 [INFO] mod_dialplan_xml.c:637 Processing 10011 <10011>->1002 in context public
...
Dialplan: sofia/external/10011@10.55.55.138 Action bridge({sip_invite_call_id=${sip_call_id}}sofia/external/1002@${distributor(test)})
...
EXECUTE sofia/external/10011@10.55.55.138 bridge({sip_invite_call_id=db46fa8f-f55b-123b-7d99-000c29a63969}sofia/external/1002@10.55.55.138:5080)
...
EXECUTE sofia/external/10011@10.55.55.138 bridge({sip_invite_call_id=16ef92f5-f55a-123b-7d99-000c29a63969}sofia/external/1002@10.55.55.138:5090)
...
EXECUTE sofia/external/10011@10.55.55.138 bridge({sip_invite_call_id=1b811933-f55a-123b-7d99-000c29a63969}sofia/external/1002@10.55.55.138:15090)
总结
mod_distributor模块功能简单清晰,配置方便。
在拨号计划的action中使用loop标记配合distributor,可以实现多条出中继的呼叫尝试。
空空如常
求真得真