opensips的dispatcher模块笔记
操作系统 :CentOS 7.6_x64
opensips版本:2.4.9
dispatcher模块模块实现了基于目的地址的调度功能,可用作无状态负载均衡,但不能保证均匀分配。今天整理下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:5060socket
本地用来发送探测包(options或info)的socket地址,必须是opensips已绑定的地址。
比如opensip地址是 192.168.1.101 ,这里的socket可以是:
udp:192.168.1.101:5060
tcp:192.168.1.101:5060state
对目的地的状态检测结果
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 获取。
opensips的dispatcher模块笔记的更多相关文章
- python日志模块笔记
前言 在应用中记录日志是程序开发的重要一环,也是调试的重要工具.但却很容易让人忽略.之前用flask写的一个服务就因为没有处理好日志的问题导致线上的错误难以察觉,修复错误的定位也很困难.最近恰好有时间 ...
- 爬虫-request以及beautisoup模块笔记
requests模块 pip3 install requests res = requests.get('') res.text res.cookies.get_dict() res.content ...
- python系统性能模块笔记
内存信息psutil.cpu_times() 使用cpu_times方法获取cpu完整信息,需要显示所有逻辑cpu信息(指定变量percpu=True)psutil.cpu_ti ...
- Python模块笔记
__name__属性 一个模块被另一个程序第一次引入时,其主程序将运行.如果我们想在模块被引入时,模块中的某一程序块不执行,我们可以用__name__属性来使该程序块仅在该模块自身运行时执行. #!/ ...
- MSF里MS17_010利用模块笔记
1. auxiliary/scanner/smb/smb_ms17_010 //扫描检测漏洞辅助模块 扫描结果这里可以看到 2,3,4这几台主机存在此漏洞! 2. auxilia ...
- Node.js http等模块 笔记05
一.http模块 const http = require('http'); http.createServer((req,res)=>{ //1 设置响应头 res.writeHead(200 ...
- 【Python】Python学习----第一模块笔记
1.python是什么? python是动态解释型的强类型定义语言. python官方版本的解释器是CPython.该解释器使用C语言开发. 当前主要使用3.x版本的python. 2.第一个pyth ...
- requests 模块笔记
import requests 请求方式: requests.get("https://www.baidu.com") requests.post("http://htt ...
- MSF系列--MS17_010利用模块笔记
1. auxiliary/scanner/smb/smb_ms17_010 //扫描检测漏洞辅助模块 扫描结果这里可以看到 2,3,4这几台主机存在此漏洞! 2. auxilia ...
- subprocess模块笔记
subprocess笔记 import subprocess subprocess.call("netstat -ano") #父进程等待子进程完成任务,返回执行结果和结束信息0或 ...
随机推荐
- 【Unity3D】UGUI之Text
1 Text 简介 UGUI概述 中介绍了Canvas 渲染模式.RectTransform 组件.锚点(Anchor)等,本文将介绍 UGUI 中的 Text 控件. 在 Hierarchy ...
- aspell命令
aspell命令 aspell命令是一个交互式拼写检查器,其会扫描指定的文件或任何标准输入的文件,检查拼写错误,并允许交互式地纠正单词. 语法 aspell [options] command 参数 ...
- Vue+ElementUI实现用户管理前后分离实战二:API接口篇
项目介绍 上一篇介绍了前端相关实现代码和效果,本篇则介绍后端接口API如何实现. :) 上一篇地址: https://blog.csdn.net/IndexMan/article/details/11 ...
- 【Android 逆向】【攻防世界】easyjava
1. apk 安装到手机,提示输入flag 2. jadx 打开apk看看 private static char a(String str, b bVar, a aVar) { return aVa ...
- 迁移mm_wiki数据实践记录
写在前面 虽然我的随笔大部分都是记录在静态博客站点和博客园平台的,但是有一些临时的想法还是使用了wiki来记录. 经过多次试用和对比之后,最终选择了mm-wiki来作为自托管的wiki系统. mm-w ...
- 【Azure Redis 缓存】Azure Reids是否可以开启慢日志(slowlog)和执行config指令
问题描述 使用Azure Redis,是否可以开启慢日志来查看最近时间中执行比较耗时的指令呢? 同时,如何执行Redis的Config只能来修改配置呢? 根本原因 一:Azure Reids通过Red ...
- [C++逆向] 8 数组和指针的寻址
目录 数组在函数中 字符串 数组作为参数 下标寻址和指针寻址 多维数组 存放指针类型数据的数组 指向数组的指针变量 函数指针 数组是相同类型数据的集合,以先行方式连续储存在内冲中 而指针只是一个保存地 ...
- linux复习基础命令
Linux基础命令 学习目标 了解vm备份的两种方式 了解快照和克隆的区别 了解linux系统文件 掌握基础命令 指定vmtools的作用 1 vm两种备份方式 为什么要进行备份 保证centos操作 ...
- Java MVC 模式
MVC 模式 MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式.这种模式用于应用程序的分层开发. Model(模型) - 模型代表一个存取数据的对象或 JAVA ...
- offline RL | D4RL:最常用的 offline 数据集之一
pdf:https://arxiv.org/pdf/2004.07219.pdf html:https://ar5iv.labs.arxiv.org/html/2004.07219 GitHub:ht ...