OpenSIPS实战(一):OpenSIPS使用简介

2023-05-16

1、OpenSIPS是什么

OpenSIPS(Open SIP Server)是一个成熟的开源SIP服务器实现,可以作为SIP代理/路由器。 但OpenSIPS不仅仅是一个SIP代理/路由器,因为它包含了应用程序级别的功能。 OpenSIPS作为SIP服务器,可以作为任何基于SIP的VoIP解决方案的核心组件。 凭借非常灵活和可定制的路由引擎(路由脚本),和提供可扩展(模块化)设计,以高效的方式统一了语音,视频,IM和状态服务。OpenSIPS的可靠性和性能极佳,是最快速的SIP服务器之一。

需要说明的是,本篇文章所述的内容都是基于opensips-2.3.0的。

2、编译安装

下载对应版本的源代码,现在最新稳定版是opensips-2.3.2。解压切换到代码根目录。如果希望使用默认编译选项编译,直接执行

Make all

如果希望修改编译参数,执行

make menuconfig

opensips使用可拓展的模块话设计,很多功能模块都可以按需编译和在脚本中配置加载。所以opensips包含的很多模块默认是不编译的,如果需要需要,可以使用make menuconfig增删编译的模块。如果我需要增加编译cachedb_redis模块,并把opensips安装路径安装在/opt/opensips目录,可以按照如下操作执行:

1、在opensips源码根目录执行make menuconfig,出现配置界面

img

2、箭头移动到“Configure Compile Options”,按右方向键→进入“Configure Excluded Modules”

img

3、移动到“cachedb_redis”项,按空格键选中,选中出现“*”号

img

4、再按左方向键←回到上一页,移动到“Configure Install Prefix”,再按并按右方向键→,输入opensips安装目录为/opt/opensips,回车保存。

5、再按左方向键←回到上一页,移动到“Save Changes ”,并按右方向键→,执行保存操作。

img

6、回到上一页选择“Compile And Install OpenSIPS”,Enter执行编译。

如果不想这样添加模块编译,可以直接切换到opensips源码根中的modules目录,里面包含了所有可拓展的模块,进去要编译的模块,如切换modules/cachedb_redis,执行make,并将编译生成的库文件cachedb_redis.so复制到安装目录下的lib64/opensips/modules/,就可以通过脚本配置加载了。

需要注意的是opensips模块化实现是通过dlopen函数实现加载的,并不是opensips的编译依赖库,所以将库文件直接放到系统库目录或通过ldconfig配置是不能实现加载的。

3、安装目录和文件介绍

安装目录是可自定义的,这里在编译的时候就设置安装路径是/opt/opensips

/opt/opensips //opensips安装路径

├── etc//配置目录

│ └── opensips

│ ├── opensips.cfg //主要配置脚本文件

│ ├── opensipsctlrc

│ ├── osipsconsolerc

├── lib64

│ └── opensips

│ ├── modules //包含的模块动态库的目录

│ │ ├── acc.so

│ │ ├── alias_db.so

​ …

│ │ └── usrloc.so

│ └── opensipsctl //命令行MI操作用到的文件

│ ├── dbtextdb

│ │ └── dbtextdb.py

│ ├── opensipsctl.base

│ ├── opensipsctl.ctlbase

│ ├── opensipsctl.dbtext

│ ├── opensipsctl.fifo

│ ├── opensipsctl.mysql

│ ├── opensipsctl.sqlbase

│ ├── opensipsctl.unixsock

│ ├── opensipsdbctl.base

│ ├── opensipsdbctl.dbtext

│ └── opensipsdbctl.mysql

├── sbin

│ ├── opensips //opensips程序可执行文件(启动opensips)

│ ├── opensipsctl //用于opensips命令行MI操作的脚本

│ ├── opensipsdbctl //opensips数据库操作脚本

│ ├── opensipsunix

│ ├── osipsconfig

│ └── osipsconsole

4、启动与停止

前台运行

如果需要让opensips在前台运行,便于调试和查看日志,可以在opensips.cfg配置文件中设置:

debug_mode = yes

该选项默认为no。然后在安装根目录下直接执行sbin/opensips文件运行opensips

后台运行

将debug_mode配置项设置为no,或屏蔽掉该配置项,然后适用脚本进行启动和停止

启动:opensipsctl start

重启:opensipsctl restart

停止:opensipsctl stop

5、OpenSIPS的MI操作

opensips提供了很多管理接口(Manager Interface. 简称MI),通过这些接口,可以对opensips的运行状态进行查询,或者实时的让更新opensips的运行数据。下面列举了一些:

1、查看命令帮助:opensipsctl help

2、新建用户:opensipsctl add 101 101 #添加用户101,密码101

3、查看fifo提供的操作:opensipsctl fifo which

4、重新加载负载均衡信息:opensipsctl fifo lb_reload

5、查看负载均衡配置的服务器状态:opensipsctl fifo lb_list

7、查看注册在opensips上的用户:opensipsctl ul show

8、查看opensips的统计信息:opensipsctl fifo get_statistics all

9、查看opensips当前通话数等信息:opensipsctl fifo get_statistics dialog:

示例:

img

这里配置了两台做为负载的服务器。

6、OpenSIPS数据库表

Opensips有自己的数据库,默认名为opensips,opensips-1.11版本的库包含了50张表,opensips-2.3.0做了简化,但仍然有34张表,许多表都是对应于某个模块的,主要是某一个模块使用。常会涉及到的表有用于鉴权的用户表subscriber表、用户保存注册用户AOR地址信息的location表,用于配置负载均衡信息的load_balancer表。这里就不做过多阐述,有个大概了解即可

更多可以参考官方文档

http://www.opensips.org/Documentation/Install-CompileAndInstall-2-3

http://www.opensips.org/Documentation/Interface-CoreMI-2-3加粗样式

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OpenSIPS实战(一):OpenSIPS使用简介 的相关文章

  • nginx 主动健康检查搭建详解(nginx_upstream_check_module)

    版本信息 nginx 1 21 1 下载nginx upstream check module模块 nginx upstream check module master zip wget https codeload github com
  • paddle推理部署(cpu)

    我没按照官方文档去做 xff0c 吐槽一下 xff0c 官方文档有点混乱 一 概述 总结起来 xff0c 就是用c 43 43 示例代码 xff0c 用一个模型做推理 二 示例代码下载 https www paddlepaddle org
  • Vector的用法

    我不知道大家是怎么理解Vector和怎样使用的 xff0c 这篇文章主要是发表我自己对于Vector的看法 xff0c 仅仅属于个人理解 xff0c 如果有什么错误 xff0c 也希望大家指正哈 目录 1 xff1a Vector的概念 2
  • float的表示

    xfeff xfeff 先说一下计算机中二进制的算法 xff1a 整数 整数的二进制算法大家应该很熟悉 xff0c 就是不断的除以2取余数 xff0c 然后将余数倒序排列 比如求9的二进制 xff1a 9 2 61 4 余 1 4 2 61
  • cmake系列(三)

    目录 多个源文件 同一目录 xff0c 多个源文件 多个源文件 同一目录 xff0c 多个源文件 本小节对应的源代码所在目录 xff1a Demo2 上面的例子只有单个源文件 现在假如把 power 函数单独写进一个名为 MathFunct
  • ORACLE 字符串聚合函数 strcat

    create or replace type strcat type as object currentstr varchar2 4000 currentseprator varchar2 8 static function ODCIAgg
  • 无人机器件选择参考

    无人机飞控 xff0c 引脚预留数量 1 xff0c 四路pwm 2 xff0c 无线通信spi 3 xff0c 陀螺仪通信用iic 4 xff0c 串口调试用uart 5 xff0c led灯用普通io 6 xff0c 电量检测和电机堵塞
  • 字节对齐的规则总结

    一 什么是字节对齐 为什么要对齐 现代计算机中内存空间都是按照byte划分的 xff0c 从理论上讲似乎对任何类型的变量的访问可以从任何地址开始 xff0c 但实际情况是在访问特定类型变量的时候经常在特定的内存地址访问 xff0c 这就需要
  • C++中第三方库的一般使用方式(libxl库为例)

    本篇介绍如何使用C C 43 43 的第三方库 xff0c 学会使用第三方库很重要 xff0c 尤其对于使用C C 43 43 语言的人来说 xff0c 标准库能做的事不能说太少 xff0c 恰当的说应该是没那么有趣 学会使用第三方库 xf
  • 三相电动机用单相电源

    三相电机改为单相运行 单相电机配用电容不是越大越好 三相电动机用单相电源 三相电机改为单相运行 介绍几种简便易行的方法 xff0c 可以不改动电机内部绕组而将三相电机改为单相运行 有6 种 xff1a 一 加电容法 xff39 形接法的三相
  • curl_init()和curl_multi_init()多线程的速度比较

    来源 http www webkaka com tutorial php 2013 102843 php中curl init 的作用很大 xff0c 尤其是在抓取网页内容或文件信息的时候 xff0c 例如之前文章curl获得header检测
  • 连接两字符串函数

    include lt stdio h gt include 34 string h 34 char Strcat char s1 char s2 printf 34 连接之后的字符串为 xff1a 34 for s1 61 39 0 39
  • CAN通信数据帧介绍

    CAN通信有五个帧 xff0c 其中最重要的是数据帧 xff01 xff01 xff01 xff01 我们下面开始讨论数据帧 一 数据帧的格式 xff08 数据帧有七个段组成 xff09 xff0c 帧起始 表示数据帧开始的段 xff0c
  • STM32压力传感器信号采集-24位AD HX720 HX711 原理介绍

    我做过很多工业用压力采集产品 xff0c 用过很多高分辨率的AD芯片 xff0c 其中有两款值得推荐 一个是海芯科技出的HX711等24位AD xff0c 一个是塞普拉斯出的CS5532等24位AD 国产芯片和进口芯片有差距 xff0c 但

随机推荐

  • stm32实现网络音频-原理图单片机程序C#上位机程序

    电子可以一边玩 xff0c 一边研究 xff0c 网络音频这个课题特别适合电子爱好者 几方面的挑战如下 xff0c 单片机实现对接以太网 实时对音频流解码播放 xff0c 上位机配合单片机做音频流传输控制 xff0c 音频信号的对接放大处理
  • rosdep init and update Error

    rosdep init Error sudo rosdep init ERROR default sources list file already exists br etc ros rosdep sources list d 20 de
  • Postman汉化版本竟如此简单,全中文真香

    对于国内程序员来说 xff0c 外国开发软件的一个使用门槛是全英文的 xff0c 对于不熟悉各种专业术语的同学 xff0c 上手比较麻烦 因此有种方法就是使用汉化版的外国软件 xff0c 但 Postman 并没有汉化版本 但是postma
  • YOLOv5识别目标的实时坐标打印

    引言 这个功能看似鸡肋 xff0c 但对于无人机目标识别与追踪有重要意义 xff0c 通过目标在摄像头视野的坐标位置 xff0c 可以推算出无人机相对与目标的位置 xff0c 从而对无人机进行位置矫正 因此 xff0c 添加代码打印坐标并不
  • 六、WebRTC中ICE的实现

    一 Candidate种类 amp 优先级 高到底 xff1a host srflx prflx relay 同一局域网内通过host类型的Candidate在内网建立连接 非同一局域网 xff0c 隔断从STUN TURN服务器中收集sr
  • 七、WebRTC中的SDP

    一 SDP标准规范 格式 xff1a lt type gt 61 lt value gt SDP 会话层 媒体层 媒体音频 媒体视频 二 WebRTC中的SDP的整体结构 1 媒体信息 m 61 行中描述媒体类型 传输类型 Playload
  • linux 信号量sem

    一 信号量 信号量如同一盏红绿信号灯 xff0c 用于临界资源 xff08 如公路 人行道 xff09 的管理 信号量是一种特殊的变量 xff0c 访问具有原子性 P等待 xff1a 信号量的值为0时 xff0c 不能减 xff0c 则进行
  • 1-4 实验3 串口通信

    串口通信 1 实验内容 xff1a PC端串口调试助手向板子发送数据 xff0c 板子接受到数据后 xff0c 再把数据发送回给PC端串口调试助手 2 串口发送接受数据的基本步骤 xff1a 初始化串口 xff08 设置波特率 中断等 xf
  • 1-6 实验5 无线温度检测实验

    无线温度检测实验 1 实验内容 xff1a 协调器建立ZigBee无线网络 xff0c 终端节点自动加入网络 xff0c 然后终端节点周期性地采集温度并将数据发送到协调器 协调器接受数据并通过串口把接受到的数据传给PC端的串口调试助手 2
  • 1-11 实验9 网络管理实验1 获取自身的和父节点网络地址、MAC地址

    p p p style color rgb 51 51 51 font family Arial font size 14px line height 26px 获取自身的和父节点网络地址 MAC地址 p p style color rgb
  • 1-14 实验11 获取网络拓扑

    获取网络拓扑 1 实验内容 xff1a PC端串口调试助手向协调器发送命名 topology 协调器接受到命令后 xff0c 将网络拓扑信息发送到PC机串口调试助手上 2 知识点 xff1a 在1 11 实验9 网络管理实验1 获取自身和父
  • S 串口编程 详解3 串口的初始化、打开/关闭

    串口编程 详解3 串口的初始化 程序打开串口 xff0c 采用两种方法 xff1a 1 程序启动 xff0c 调用OnInitDialog 函数 xff0c 打开串口 xff0c 缺省串口号为COM1 xff0c 如果COM1不存在或被占用
  • 求关键路径(包含邻接表的建立、拓扑排序)

    include lt stdio h gt include lt stdlib h gt typedef struct node int adjvex 邻接点域 int info 边上的信息 struct node next 指向下一个邻接
  • FPGA串口回环实验

    本文将从个人理解的角度 xff0c 解释FPGA串口通信的原理 xff0c 并进行实战演示 1 写在前面的话 串口通信是初学FPGA必过的一道坎 xff0c 如果能够在不参考任何资料的情况下自己手搓一套串口回环的代码 xff0c Verio
  • Debug Assertion Failed!解决方法详解

    1 野指针 2 内存泄露 解决方法 1 看一看你的程序里是不是有 ASSERT xff08 xff09 或 VERIFY xff08 xff09 语句 这两个宏是用来测试它的参数是否为真的 出现你说的 xff0c 这说明你的指针或表达试有问
  • 用tftp的方式在u_boot下 烧写uImage内核

    用 u boot 进行下载 uImage 一种 kernel 镜像文件 首先 把编译好的 uImage 文件放在 tftpboot 目录下 用网线把开发板和电脑连上 但PC上的网卡显示是没连接的 xff0c 这一点是没有关系的 xff0c
  • 利用NFS服务挂载NFS根文件系统

    嵌入式Linux根文件系统 xff0c 简单地说 xff0c 根文件系统就是一种目录结构 注意根文件系统和普通的文件系统的区别 常见的Linux根文件系统有 xff1a xff08 1 xff09 NFS xff08 网络根文件系统 xff
  • 数据校验之Checksum算法

    校验和 xff08 Checksum xff09 是网络协议使用的数据错误检测方法 xff0c 并且被认为比LRC xff08 纵向冗余校验 xff0c Longitudinal Redundancy Check xff0c LRC xff
  • 位序转字符串的一种高效方法

    include lt stdio h gt include lt stdlib h gt include lt malloc h gt include lt string h gt include lt arpa inet h gt def
  • OpenSIPS实战(一):OpenSIPS使用简介

    1 OpenSIPS是什么 OpenSIPS xff08 Open SIP Server xff09 是一个成熟的开源SIP服务器实现 可以作为SIP代理 路由器 但OpenSIPS不仅仅是一个SIP代理 路由器 xff0c 因为它包含了应