opensips的dispatcher模块笔记
操作系统 :CentOS 7.6_x64
opensips版本:2.4.9dispatcher模块模块实现了基于目的地址的调度功能,可用作无状态负载均衡,但不能保证均匀分配。今天整理下CentOS7环境下opensips2.4.9的dispatcher模块使用示例,并提供运行效果视频。
我将从以下几方面进行展开:
-
模块数据库说明
-
模块参数说明
-
模块函数说明
-
模块使用示例
dispatcher模块官方文档:https://opensips.org/docs/modules/2.4.x/dispatcher.html
一、模块数据库说明
数据表:dispatcher
这里大概列举下字段说明,具体信息参考官方文档:
https://www.opensips.org/Documentation/Install-DBSchema-2-4#GEN-DB-DISPATCHER
字段说明:
-
setid
目的地址的id值,相同setid可以由多个地址,具体选择那个地址可根据设定的算法进行选择。 -
destination
目的地址,示例:
sip:192.168.1.100:5060 -
socket
本地用来发送探测包(options或info)的socket地址,必须是opensips已绑定的地址。
比如opensip地址是 192.168.1.101 ,这里的socket可以是:
udp:192.168.1.101:5060
tcp:192.168.1.101:5060 -
state
对目的地的状态检测结果
0 可用
1 不可用
2 检测中 -
weight
权重。 -
priority
优先级。 -
attrs
可理解为自定义标签。 -
description
描述信息,可用来备注该条目的用途。
二、模块参数说明
这里列举下常用参数,完整内容参考官方文档。
模块文件:dispatcher.so
模块参数如下:
-
partition
分区,用于定义数据源。 -
table_name
用于设置数据表,默认是 dispatcher 表。 -
db_url
用于设置数据库连接信息。 -
ds_probing_mode
探测模式,定义如下:
0 :仅检查处于探测中的网关
1 :检查所有网关 -
ds_ping_interval
ping的间隔,默认是0秒(关闭ping)。 -
ds_ping_method
ping方法,默认是发 OPTIONS 包,可以配置为发 INFO 包:
modparam("dispatcher", "ds_ping_method", "INFO") -
ds_ping_from
sip消息的from头 -
ds_ping_maxfwd
ping消息的最大转发次数。 -
ds_probing_threshhold
从可用状态到探测中,需要连续检查的次数,默认值为3次。
此外还有设置各个列名的参数,可根据实际情况使用。
模块加载及配置数据库
文件:opensips.cfg
配置示例可从如下渠道获取:
三、函数说明
这里列下常用的ds_select_dst函数,其它函数参考官方文档。
ds_select_dst(set, alg [, (flags M max_results)*])
该函数从给定的集合中选取一条路由,会重写sip的目的地址,在opensips内部则体现为重新 $du
-
set
集合id,对应数据库中的setid字段。 -
alg
目的地址选择算法,同一个setid下有多条记录时适用。
部分算法说明(更多说明参考官方文档):
0 :根据callid的哈希值
1 :根据from uri的哈希值
2 :根据to uri的哈希值
3 :根据request uri的哈希值
4 :带权重的轮询
5 :根据authorization-username的哈希值
6 :随机算法
函数使用示例可从如下渠道获取:
关注微信公众号(聊聊博文,文末可扫码)后回复 20240327 获取。
四、使用示例
这里演示下dispatcher模块的加载,及使用该模块实现话务调度的功能。
机器列表:
freeswitchA :192.168.137.31:5080
opensips :192.168.137.33:5060
freeswitchB :192.168.137.32:5080
测试目标:
将freeeswitchA呼叫opensips的通话路由到freeswitchB机器。
1、数据库配置
数据表:dispatcher
将1001这个组的呼叫路由到freeswitchB机器:
INSERT INTO `opensips`.`dispatcher` (`id`, `setid`, `destination`, `socket`, `attrs`, `description`) VALUES (1, 1001, 'sip:192.168.137.32:5080', 'udp:192.168.137.33:5060', 'fstest1', 'freeswitchB gw');
数据库效果:
2、cfg配置
文件:opensips.cfg
配置:
3、运行效果
fs机器:192.168.137.31
测试命令:
originate {}sofia/external/111@192.168.137.33:5060 &echo
运行效果如下:
抓包效果:
运行效果视频可从如下渠道获取:
五、资源下载
本文涉及资源,可以从如下途径获取:
关注微信公众号(聊聊博文,文末可扫码)后回复 20240327 获取。