一、opensips简介

1. opensips理解

opensips是一种开源的,GPL的,多用途的SIP服务器,能够执行大量与SIP相关的功能,诸如sip服务器、sip代理/路由器、即时消息服务器、存在服务器、SIP重定向服务器、SIP负载平衡器或SIP调度器、SIP背对背用户代理、呼叫排队系统、SIP IP网关、SIP媒体控制器、SIP应用服务器等。

通过以下三个功能进行自我定义:
(1)性能:有巨大的吞吐量
(2)功能丰富:提供与SIP协议、SQL或NoSQL DB操作、AAA集成、路由算法、管理和控制等。
(3)灵活性:由路由语言提供,一种简单但功能强大的脚本语言。
opensips作为sip服务器,主要是处理sip流量。
OpenSIPS有一个强大而灵活的引擎,能够以最有效、最快速和最定制的方式处理SIP流量。OpenSIPS处理引擎可以实现任何类型的路由逻辑。

2. opensips的能力

opensips没有内置媒体功能,但是它可以控制外部媒体引擎。
OpenSIPS类似于守护进程的应用程序,可以在所有类似unix平台上运行。

2.1 opensips提供的能力

(1)网络桥接
(2)NAT穿越
(3)协议转化。
(4)洪水检测
(5)IP过滤

2.2 opensips解决SBC问题

(1)sip确认:检查语法和消息内容,确保所有强制性的头都存在。
(2)呼叫感知:opensips将监控所有正在进行的呼叫,并检查呼叫中所有sip消息的有效性和健康状况。寻找中断的调用路由、请求注或挂起的调用。
(3)拓扑隐藏
(4)流量过滤:使用正则表达式,OpenSIPS可以通过检查SIP请求中的各种字段来过滤掉SIP流量。
(5)培养基处理:编解码器过滤和重新排序可以与媒体固定、转码或呼叫记录(使用外部媒体服务器)结合执行。
(6)SIP跟踪:OpenSIPS可以被指示根据SIP用户、源IP或目的地标准选择性地跟踪(和存储)某些SIP流量。
(7)数据复制

2.3 opensips充当核心组件的前端

  • 端点身份验证——>流量整形——>拨号方案——>调度/负载平衡——>自定义路由

当处理多个中继线时,opensips提供了实现此类操作的内置和脚本功能。

opensips中,PSTN路由逻辑有两个逻辑部分:

  • opensips根据最长的匹配前缀选择一组网关,提供到此目的地号码的终止。
  • 选择网关取决于网关在opensips中的配置顺序

opensips可以主动监视网关,动态地启用和禁用。

opensips中的动态路由引擎为高级路由提供了扩展,例如基于质量的路由。

网关质量统计:
(1)应答占用率(ASR)
(2)平均呼叫持续时间(ACD)
(3)拨号后延迟(PDD)

3. opensips的使用

opensips为负载平衡和集群核心组件提供现有平台和能力打开了由提供PBX服务或终端服务的现有参与者占据的市场。

opensips提供呼叫、自爱在线状态和即时消息功能,这对于构建富通信服务至关重要。

4. opensips的设计

(1)组成: 核心和模块

核心是应用程序本身,它提供opensips的底层功能、各种接口的定义以及一些通用资源。

模块是共享库,在启动时按需加载。每个模块都为特定的路由算法或身份验证实现了定义良好的功能。

(2)opensips中主要有两种类型的模块:

① 直接为路由脚本提供功能的模块
② 实现核心定义接口的模块

5. opensips内核

opensips内核是一个最小的应用程序。就其本身而言,它只能以无状态模式代理SIP请求和应答,并具有非常基本的脚本功能。在多数情况下,核心与多个模块一起使用。

5.1 opensips特性

  • SIP层传输层实现各种sip传输协议。目前opensips支持UDP、TCP/TLS和WebSockets。使用协议取决于SIP侦听器,可以同时使用多个传输协议。

  • SIP工厂层提供解析和构建SIP消息的功能。内存和锁定管理器是opensips中的全局资源。

  • opensips核心提供了它自己的脚本函数。

6. opensips模块

每个opensips模块都是一个动态库,如果路由脚本中有指示,可以在opensips启动时按需加载。


Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐