首页 > 其他分享 >opensips的dispatcher模块笔记

opensips的dispatcher模块笔记

时间:2024-03-27 23:00:14浏览次数:25  
标签:192.168 ds 地址 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: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

配置示例可从如下渠道获取:

关注微信公众号(聊聊博文,文末可扫码)后回复 20240327 获取。

三、函数说明

这里列下常用的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/[email protected]:5060 &echo

运行效果如下:

 抓包效果:

 运行效果视频可从如下渠道获取:

关注微信公众号(聊聊博文,文末可扫码)后回复 2024032701 获取。

五、资源下载

本文涉及资源,可以从如下途径获取:

 关注微信公众号(聊聊博文,文末可扫码)后回复 20240327 获取。

标签:192.168,ds,地址,opensips,模块,dispatcher
From: https://www.cnblogs.com/MikeZhang/p/18100516/dispatcher20240327

相关文章

  • Python中的datetime模块:轻松拿捏时间操作
    前言在Python中,处理日期和时间是非常常见的任务,无论是在开发Web应用程序、数据分析还是其他领域。datetime模块为我们提供了丰富的功能,可以轻松处理日期和时间,从简单的日期算术运算到复杂的时区转换,应有尽有。本文将深入探讨datetime模块的功能和用法,帮助大家轻松拿捏时间操作。......
  • Python - inspect 模块的简单使用
    Python中的inspect模块解析Python的inspect模块是一个强大的内省工具,允许开发者检查(inspect)活动对象和源代码。它提供了一系列函数,用于获取信息关于正在运行的程序和调用堆栈,非常适合进行调试和动态分析。本文将通过介绍inspect模块的关键功能,并结合实际案例代码,来探索其在日常......
  • 巨控GRMOPC模块的应用
    在如今这个高度数字化、信息化的时代,企业和个人对信息安全和设备稳定运行的需求空前高涨。特别是在某些关键行业中,如制造业、数据中心、医疗保健等领域,一旦系统出现故障,不仅可能导致经济损失,还可能对人身安全造成威胁。因此,及时的故障报警和信息通知成为了维护系统稳定不可......
  • NX二次开发:切换应用模块
    一、概述    最近将唐工的教学视频基本上看完了,收获很大;昨天NX二次开发学习群中,有小伙伴说在从建模模块切换到加工模块是说有问题,我尝试了一下录制的代码,确实有BUG,调试了一下,找到了一种方法,做以下笔记,防止忘记。最近感觉学的内容有点多,不知怎么回事总是记忆不清。二......
  • 速度与效率的双赢:探索ADOP 100G多模光模块的优势
    当今通信行业的快速发展,对数据传输速度和稳定性的要求日益增高。ADOP品牌的100G多模光模块正是在这样的背景下应运而生,它不仅提供了高速的数据传输能力,而且还具有多种优势,使其成为数据中心和高性能计算网络的理想选择。产品概述: ADOP的100GQSFP28SR4多模光模块是一款高性能......
  • 使用compileall模块编译Python的源代码
    编译当前目录及子目录所有python源码为pyc文件python-mcompileall-b.参数说明-b:这个选项告诉compileall模块在编译时进行备份。它会为每个已编译的源文件创建一个备份文件,后缀为.pyc.bak.:这是命令行中的当前目录。这意味着compileall将会在当前目录及其所有子目录中......
  • yolov8添加EffectiveSE 注意力模块
    ######################BiFPN####################################BiFPN#两个特征图add操作classBiFPN_Add2(nn.Module):def__init__(self,c1,c2):super(BiFPN_Add2,self).__init__()self.w=nn.Parameter(torch.ones(2,dtype=torch.f......
  • BOSHIDA DC电源模块与其他电源模块的区别与优势
    BOSHIDADC电源模块与其他电源模块的区别与优势在现代电子设备中,电源模块是不可或缺的组成部分。电源模块的作用是将外部电源的电能转换为设备所需的电能进行供应。在电源模块的选择中,DC电源模块与其他电源模块有着明显的区别与优势。 首先,DC电源模块与其他电源模块的区别在......
  • Python pandas模块
    1、转换python字典类型为dataframe#!/usr/bin/envpython#-*-coding:utf-8-*-#__author__=#pandas>=1.5.3importpandasaspdpydict={'Dosage':'1.1.1.1,2.2.2.2,4.4.4.4,5.5.5.5','HalfLife':'6.6.6.6,7.7.7.7,8.8.8.......
  • enum模块
    文章目录enumauto()enumenum是Python的一个标准库,它提供了枚举类型(EnumeratedTypes)的支持。枚举类型是一种用户定义的类型,它包含了一组命名的常量。使用枚举类型可以使代码更清晰、更易读,因为它用具体的名字代替了数字或其他难以理解的标识符。在Python3.4......