OpenSIPS
系统要求
- 操作系统:Ubuntu 22.04 LTS(或任意主流 Linux)
- 服务器推荐配置:2 核 2G 内存(仅信令转发可更低)
- OpenSIPS 角色:SIP 信令代理/注册服务器/负载均衡器(不处理媒体)
第三方组件说明
以下说明仅供参考,具体配置和使用方法请参考 OpenSIPS 官方文档 与模块手册。
简介
OpenSIPS 是高性能的开源 SIP 服务器,常用于:
- 作为“边界/入口”SIP 代理与注册服务器(Registrar)
- 对后端媒体/业务服务器(如 FreeSWITCH)做负载均衡与故障切换
- 提供 NAT 适配、速率限制、访问控制、SIP 防火墙等安全能力
在微语体系里,常见架构是:终端设备/WebRTC → OpenSIPS(SIP 边界)→ FreeSWITCH 集群(媒体与业务处理)。
OpenSIPS 与 FreeSWITCH 的对比与关系
- 定位与能力
- OpenSIPS:SIP 代理/注册/路由/负载均衡,擅长高并发信令转发,不处理媒体(RTP)。
- FreeSWITCH:软交换/媒体服务器(B2BUA),负责通话建立、编解码、会议、IVR、录音等媒体与业务逻辑。
- 资源消耗与扩展
- OpenSIPS:超轻量,单机即可承载大规模注册与高 QPS 信令;横向扩容简单。
- FreeSWITCH:因处理媒体与业务,CPU/带宽消耗更高;通常通过前置 OpenSIPS 做横向伸缩与保护。
- 典型部署
- 单用 FreeSWITCH:小规模、功能型快速落地。
- OpenSIPS + FreeSWITCH:生产级架构,OpenSIPS 负责边界、鉴权、LB 与安全;FreeSWITCH 专注媒体/业务。
- 何时选谁
- 只需 PBX/IVR/会议/录音:FreeSWITCH 即可。
- 面向公网、大并发、需要多集群调度与抗攻击:在 FreeSWITCH 前增加 OpenSIPS。
结论:两者是互补关系。OpenSIPS 处理“信令与路由”,FreeSWITCH 处理“媒体与业务”。
与 Kamailio 的对比与选择
OpenSIPS 与 Kamailio 都是成熟的高性能 SIP 代理/注册/路由服务器,能力高度重叠,二者可视为“并列替代”。选型可从以下角度权衡:
- 架构定位:二者均不处理媒体(RTP),常与 FreeSWITCH/RTPEngine 等组合。
- 配置与脚本:二者均采用强大的配置脚本与模块化路由;均支持丰富的路由分支与对话内处理;具体语法风格不同。
- 模块生态:常见模块场景(usrloc/registrar、dispatcher、dialog、topology hiding、权限控制、限速/防刷等)两边均有覆盖,细节与参数名有所差异。
- 运维工具:
- OpenSIPS:opensips-cli/opensipsctl,便于查询 usrloc、dispatcher、对话等状态。
- Kamailio:kamcmd/kamctl,运维体验也很成熟。
- 性能与扩展:两者均以极高的并发能力著称,横向扩展容易;性能差异更多取决于具体脚本与部署。
- 生态与经验:团队既有脚本/模块经验、周边 工具链与社区支持,往往是更关键的选型因素。
实操建议:
- 团队熟悉哪一个就优先选哪一个;已有脚本/模板可复用可显著降低成本。
- 面向公网/多节点/高并发,建议前置 OpenSIPS 或 Kamailio,后端对接 FreeSWITCH 集群。
- 如需了解 Kamailio 版示例,可参见《Kamailio》。
安装方式选择
- Docker 方式(推荐):快速部署,易于回滚与扩容。
- 软件包安装(Debian/Ubuntu 仓库或官方仓库):简单稳定,便于系统级运维。
- 源码编译:适合深度定制或使用最新特性。
方式一:Docker Compose 安装(推荐)
1.1 Docker 镜像信息
- 官方镜像:
opensips/opensips:3.5(或最新稳定版) - 配置路径:
/etc/opensips/opensips.cfg