OpenSIPS 最新的 3.3 版本引入了几个新模块,这些模块有助于在 IMS 和 UC 环境中实现消息传递服务。本次演讲介绍了 OpenSIPS 中新的 MSRP 堆栈、MSRP 相关模块和其他新特性。
来源:FOSDEM 2023 | Real Time Communications
链接:https://fosdem.org/2023/schedule/event/opensips/
主讲人:Liviu Chircu
内容整理:赵研
SIP 与 OpenSIPS 概述
根据瞻博研究公司 (Juniper Research) 的数据,预计到 2026 年 RCS(Rich Communication Service)用户将增长到 32 亿 (相对于目前的12亿人口增长了300% 以上) ,因此基于 SIP 的即时通讯 (Instant Messaging,IM) 正变得越来越重要。

SIP (Session Initiation Protocol) 是一种源于互联网的 IP 语音会话控制协议,具有灵活、易于实现、便于扩展等特点,而 IP 多媒体子系统 (IP Multimedia Subsystem,IMS) 和统一通信 (Unified Communications,UC) 环境中的即时通信也获得了业界广泛关注。

SIP 服务器主要可分为两类:侧重于媒体/业务的服务器(如 freeswitch/asterisk),以及侧重于代理/负载服务器(如 OpenSIPS/kamailio)。其中,OpenSIPS 是用于语音、视频、即时通信、在线状态和任何其他 SIP 扩展的开源 SIP 代理服务器。OpenSIPS 的可靠性和性能极佳,因具有如下特点,它被推荐用于所有类型的 SIP 服务:
- 高吞吐量:数万CPS,数百万个在线呼叫(参见官方测试:https://www.opensips.org/About/PerformanceTests)
- 路由和集成的灵活性:用于实现自定义路由逻辑的路由脚本,多个接口 API(参见手册:https://www.opensips.org/Documentation/Manual)
- 有效的应用程序构建:超过 120 个模块提供功能,用于 SIP 处理、后端操作、集成、路由逻辑(参阅模块列表:https://www.opensips.org/Documentation/Modules-3-1)
OpenSIPS 3.3
OpenSIPS 每年都会发布一个主要版本,最新的 3.3 版本增加了许多新的模块和特性。其中最明显的,是对即时通信更加关注。主要原因有三点:
- 传统的 SIP 服务总是忽视即时通信;
- 目前在 IMS 生态(RCS)中,即时通信非常重要;
- UC 生态都需要具备即时通信能力。

OpenSIPS 3.3 中的即时通信
1. 使用 Pager Mode 的即时通信:
Pager Mode 使用 SIP MESSAGE(RFC 3428)的方式在用户间发送消息,这种方式不会建立会话(session),每次消息发送都是相互独立的。且媒体负载(media payload)是 SIP 信息的一部分。

2. 使用 Session Mode 的即时通信
基于 Session Mode 的即时通信中,会通过会话(session)来发送成组的消息。该模式使用 SIP 作为集合协议(Rendezvous Protocol),并使用 MSRP 协议来传输媒体数据。相比简单的 Pager Mode,Session Mode 适合于构建更高级的通信服务,比如小组聊天,文件传输,照片分享等。

OpenSIPS 3.3 中的 MSRP
MSRP(Message Session Relay Protocol,消息会话中继协议)是一种基于文本、面向连接的协议,用于交换任意 MIME 内容,特别是即时消息。
- 它使用 SIP 建立会话,并使用 SDP 实现一些其他特性;
- 主要用于 P2P 通信,但也可使用中继设备(Relay);
- 使用 TCP/TLS 用于 P2P 通信,当使用中继时,采用 TLS 协议;
- 具有请求-响应模型,并根据传输状态分别提供成功或失败报告;
- 可以在多个请求中将消息分块,以中断发送或拆分大消息(比如文件)。
1. OpenSIPS 3.3 中的 MSRP 栈

2. OpenSIPS 3.3 中的 MSRP 中继

当使用中继时,MSRP 需要客户端通过 AUTH 进行 HTTP 摘要认证(HTTP Digest Authentication)。OpenSIPS 3.3 中的 MSRP 中继模块提供了专门的脚本,用于:
- 提供认证资格;
- 在多个接口间建立连接;
统一通信(UC)
统一通信(UC)的核心是,让人们在任何时间地点,都可以通过任何设备和网络获得数据、图像和声音的自由通信。在 UC 服务中,需要在使用 Page Mode(”SIP MESSAGE”)和 Session Mode(”MSRP”)的 SIP 客户端之间建立桥接/网关。

- 从 MESSAGE 到 MSRP 的网关

- 从 MSRP 到 MESSAGE 的网关

IP多媒体子系统(IMS)
Diameter 协议包含IP传送、安全协议、Diameter 基础协议以及不同的应用协议,它是 IETF 开发的新一代 aaa 协议(authentication 认证,authorization 授权,accounting 计费)。OpenSIPS 3.2 中引入了第一版对 Diameter 协议的支持,目前 OpenSIPS 3.3 提供了建立和发送任意 Diameter 请求的方式(opensips.cfg),并实现了基于 Diameter 的定制服务(不止是 Auth 和 Accounting)。
版权声明:本文内容转自互联网,本文观点仅代表作者本人。本站仅提供信息存储空间服务,所有权归原作者所有。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至1393616908@qq.com 举报,一经查实,本站将立刻删除。