技术规格指标
本节汇总 RustPBX 的兼容性、性能假设、外部依赖与可扩展边界,方便在规划容量或做架构评审时引用。内容对应 0.5.x 版本系列。
1. 支持矩阵
| 项目 | 说明 |
|---|---|
| 操作系统 | 64-bit Linux(Debian 11+/Ubuntu 20.04+/CentOS Stream);亦可在容器/Kubernetes 中运行 |
| 数据库 | 默认 SQLite;生产建议 PostgreSQL/MySQL,models 层使用 SeaORM 统一管理 |
| SIP 编解码 | G.711a/u、G.729、Opus、G.722、iLBC(可在 Trunk/分机配置指定) |
| 传输协议 | UDP/TCP/TLS for SIP,RTP/SRTP for 媒体,WebSocket/WebRTC for 浏览器客户端 |
| 媒体安全 | DTLS-SRTP(WebRTC)、SDES-SRTP(SIP 腿),并可应答 ICE-lite 以兼容严格 full-ICE 端点(如 Teams Direct Routing) |
| 对象存储 | 默认使用本地文件系统;支持 S3(AWS/MinIO/阿里云/腾讯云 COS,含 presigned 下载 URL 与匿名访问)、Azure Blob 和 GCP Cloud Storage,用于录音、CDR 归档和 SipFlow 卸载 |
| 控制台 | Web UI(React+Docusaurus 文档)、REST/AMI 管理接口 |
2. 性能参考
说明:由于场景差异较大,下列为在 4C/8G、启用 SRTP 的常见经验值,实际需结合压测工具
examples/perfcli.rs验证。
- 并发呼叫:单实例 500~800 并发为常见区间,取决于编解码与录音策略。
- 每秒呼叫建立数(CPS):轻量场景可达 30+ CPS,需结合运营商节流策略。
- 延迟:内部处理延迟 < 20ms,端到端取决于网络质量。
- 媒体快速路径:同编解码的传输组合直接 relay 不转码;仅当编解码不一致时才进入转码路径。
2.1 SDES-SRTP 支持
自 v0.4.10 起,RustPBX 在 SIP 腿上支持 SDES-SRTP(RTP/SAVP)协商,与 WebRTC 使用的 DTLS-SRTP 并存。
- 入向 SDES-SRTP offer:入站 INVITE 携带
RTP/SAVPprofile 与a=crypto行时,应答保持RTP/SAVP(不再降级为明文RTP/AVP——部分运营商会拒绝明文)。 - SIP 到 SIP 锚定媒体:SDES-SRTP 从主叫腿镜像到被叫腿,媒体在媒体代理全程加密。
- WebRTC 网关:WebRTC(ICE+DTLS)↔ SIP(RTP/SAVP)互通不受影响——代理自动桥接两种传输模式。
- 明文 RTP:未协商 SDES-SRTP 的 Trunk/分机仍使用明文 RTP/AVP,无需改动配置。
无需专门配置——SDES-SRTP 根据 SDP offer 自动协商。开启 Secure Media 的 Twilio Elastic SIP Trunk 等运营商线路可正常互通。
3. 可观察性与接口
- 健康探针:
handler::ami暴露/health,可供负载均衡或黑盒探测;perfcli亦可批量检测节点状态。集群部署会上报各节点的会话心跳指标。 - 日志:通过
log_level、log_file控制tracing输出,方便采集到 ELK/Loki;HTTP 访问日志可借助AccessLogEventFormat。业务类拒绝日志降为 WARN,SIP 信令噪音被抑制。 - Diagnostics UI:
templates/console/diagnostics.html提供 WebRTC probe、Trunk/Route Evaluate、Web Dialer,满足大部分排障需求。 - 逐通证据:每条 CDR 携带腿时间线、基于 RTCP 的媒体质量(丢包率、抖动、RTT)、最终 SIP 响应码、归一化的挂断原因,以及统一呼叫错误目录的引用。
- 报表:统一多插件报表层(
/console/reports)提供呼叫、中继、域维度报表,含热力图与运行时快照;wholesale、CC 等插件复用同一套 API。 - Webhook/AMI:
handler/ami.rs、handler/llmproxy.rs可扩展事件回调或对接外部语音机器人。RWI webhook 运行时提供独立 worker、重试队列与事件指标。
4. 安全与合规
- 加密:支持 TLS/SRTP、WebRTC DTLS,证书可由
addons/acme管理。 - 鉴权:分机级/SIP Trunk 级凭证,控制台支持自定义中间件(
console/middleware.rs)。 - 访问控制:IP ACL 支持子串匹配,并内置扫描器 User-Agent 黑名单(Sipvicious 等工具在门口即被拒绝)。
- 审计:通话记录与操作日志可导出满足监管留存,需自行配置保留周期。
5. 扩展点
- 插件:通过
Addontrait 实现的插件架构——社区版插件包括 ACME(TLS 证书自动续期)、Archive(录音归档)、Transcript(离线语音识别)、Queue(队列)和 Observability(Prometheus 指标)。商业版插件扩展到批发线路(Wholesale)、呼叫中心(CC)、IVR 编辑器、语音信箱(Voicemail)、终端管理(Endpoint Manager,话机自动配置)、企业认证(Enterprise Auth,LDAP/SAML)、SBC 和 Telemetry(OpenTelemetry)。 - RWI(实时 WebSocket 接口):基于 WebSocket 的命令/事件协议,支持呼叫控制(发起、应答、挂断、桥接、转接、保持)、队列管理(入队、出队、坐席分配)和会议控制。适用于构建自定义 CTI 面板、语音代理和 CRM 集成。RWI 事件携带根通话标识块、
src_ip/client_ip归因和会话级用户数据。 - AI 语音钩子:逐通转写计划与 realtime AI-voice bridge 可对接外部 LLM/ASR/TTS 供应商;IVR 引擎支持第三方 Step 端点解析与 TTS 提示音别名。
- Handler:在
handler/下添加自定义 API/协议,如 Webhook 或 gRPC 端点。
6. 部署与容灾建议
- 多实例部署:建议至少两台节点 + 共享数据库,结合外部 SBC 或负载均衡实现流量分配。
- 状态同步:集群会话注册表保证通话状态按归属节点路由并跨节点一致;会话
user_data自动复制,重启时支持优雅排水退出(SIGTERM/SIGINT 与 AMI/shutdown端点)以保护进行中的通话。 - 备份:配置文件使用 Git 管理;数据库定期快照;录音/文件可放对象存储。
如需官方基准数据,可参考 docs/specs 后续发布的性能报告,或在测试环境运行 cargo bench 与自定义压测脚本获得更精确结果。