OpenSIPS 官网博客最新发表了一篇文章,开始规划 OpenSIPS 4.x 最新版本了,全文如下。
3.6 主版本将结束 OpenSIPS 3.x 系列的发布。这些版本历时 7 年,共发布了 7 个主要版本,每个版本都有自己的理念。
OpenSIPS 3.x 的遗留问题
3.x OpenSIPS 系列解决了大量主题。
最具代表性的是DevOps 领域(3.0和3.6) ,带来了脚本重新加载、自动缩放、脚本预处理、动态套接字、结构化 SDP等许多出色的功能。
外部集成也是许多 3.x 版本中广泛讨论的一个话题——SMPP 、RabbitMQ、Kafka、Prometheus、LaunchDarkly、SQS、DynamoDB 和 Janus集成只是这里的一些例子。
3.1 版本在高级呼叫处理方面取得了巨大的进步,满足了对 Class 5 支持的需求。这体现在API 领域(呼叫 API)、RTP 领域(media_exchange、DTMF)以及 SIP 层面(B2B、BLF、DFKS、呼叫中心)的增强。
集群和云支持是3.2 版的跳跃主题,增强了 OpenSIPS 形成地理分布、同步集群的能力。
3.3 版本恢复了 OpenSIPS 中的 IM 区域– 添加了 MSRP 支持,以及 MSRP 网关和 API,所有这些都通过 Contact Center 增强功能而完善。
3.4版本的目标是实现高级测试——一致性和性能。说起来容易,但测试是软件开发中至关重要的一个方面,不容忽视,此版本的一个副产品是SIPssert 测试框架。
最具挑战性的版本之一可能是3.5版本,它针对的是 IMS。作为第一阶段,CSCF 组件及其接口。
因此,这需要跨多个模块进行工作,并添加新的专用模块。
OpenSIPS 4.x 的愿景
每个版本都会带来新的理念、新的功能和模块。但 OpenSIPS 的演进过程中,有些阶段会以革命性的变化为标志,这些变化通常是底层的,而有些变化对 OpenSIPS 的各个层面都影响深远,从性能、SIP 层到功能层。
这样的转折点通常预示着一个新的 OpenSIPS 家族的诞生。异步和网络方面的重做定义了 2.x 家族;集群和脚本方面的重做则塑造了 3.x 家族。那么,4.x 又将由什么来定义呢?
我们的待办事项清单上有一些事项。我们计划在 4.x 系列中应对这些事项:
- 重新设计 OpenSIPS 进程内部传入流量的调度机制,从目前的静态映射(UDP 进程负责单个 UDP 套接字,其他 TCP 进程仅负责 TCP 流量)转变为更灵活的自动平衡方法——流量可以由专用进程读取,但处理将调度到单个工作进程池。这种方法将更好地利用所有进程,避免出现某些进程过载而其他进程空闲的奇怪情况。
- 移除对 Lump 的支持(当涉及 SIP 变更时),转而支持实时应用变更。目前,SIP 消息的变更仅在发送消息时记录并应用。这会带来一个缺点,即在处理 SIP 消息期间无法查看自己的变更,这不仅与脚本级别有关,也与模块级别有关(一个模块无法查看其他模块执行的变更)。在 3.6 版结构化 SDP 重制中,我们试验了 SDP 的实时变更(转而支持 Lump),效果非常好。我们的想法是将这种方法推广到 SIP 报头上。
- 增强脚本变量引擎。一旦添加脚本重新加载功能,历史遗留的系统性问题就会再次出现。变量支持的设计初衷或多或少地忽略了删除和解析新变量(例如在脚本重新加载期间)——而这种解析变量规范的操作确实会导致内存泄漏。此外,在变量的数据类型、数组或更结构化的数据类型方面,也还有很大的改进空间。
- OpenSIPS SDK:我们拥有 OpenSIPS 调用 API,但我们想探索通过 SDK(库)公开完整的脚本功能。基本上,您可以使用 OpenSIPS SDK 构建自己的应用程序,进行路由操作,其体验与当前配置文件类似。只需通过基于 API 的 SDK 将路由功能外包给其他应用程序即可(支持多种语言)。
想法很多,我们只需要逐一实现。再次强调,我们讨论的不是定义主要版本的功能和增强功能(这些功能和增强功能将在各个版本中陆续确定),而是塑造新 4.x 版本的新基因集。
原文:https://blog.opensips.org/2025/07/23/opensips-4-x-the-next-evolution-step/
本文来自作者投稿,版权归原作者所有。如需转载,请注明出处:https://www.nxrte.com/zixun/60019.html