Asterisk 版 VQ 监测器把 Sevana 的实时通话质量监测直接带入您的 PBX。只需加载一个模块 res_vq_monitor.so,Asterisk 就会开始为其承载的每一通呼叫的媒体评分:每一路流都根据丢包和抖动计算网络 MOS,您选定的呼叫还会获得 Sevana 的 PVQA 感知 MOS。结果显示在 Web 仪表盘和 REST API 中,由模块自行启动和守护,无需另外安装探针、镜像端口或监测服务器。

申请演示咨询授权事宜

加载一个模块,即可监测 Asterisk 通话质量

该模块内嵌的引擎与独立版 VQ 监测器服务器完全相同。它像抓包工具一样监听 PBX 自身的网络接口,因此从不介入 Asterisk 的通道或媒体路径。即使引擎停滞,呼叫也会照常进行,只是不再被监测。在同一批呼叫上并行运行时,模块与独立服务器在每一路流上得出的网络 MOS 和 Sevana MOS 完全一致。

每路流两种 MOS 评分

网络 MOS(ITU-T G.107 E-model)反映传输层交付的质量;Sevana MOS(PVQA)反映主叫方实际听到的效果。两者不一致时,差距本身就指向了问题根源。

被动且隔离

抓包通过 libpcap 在 PBX 的网络接口上进行。模块所用的库以私有方式链接,不会与 Asterisk 自身使用的库冲突,也从不触碰呼叫。

自带仪表盘

模块以受守护的子进程方式启动 VQ 监测器仪表盘,进程退出时自动重启,模块卸载时将其停止。由于仪表盘是独立进程,它出现故障也不会拖垮 PBX。

通过 Asterisk CLI 操作

vq show status 报告引擎、抓包计数器和仪表盘的状态。vq track add 用于选择哪些呼叫进行感知评分和录音。

Asterisk 版 VQ 监测器仪表盘:实时流、优质通话占比,以及最近 1 小时和 24 小时的平均 Sevana MOS 与网络 MOS
仪表盘概览:实时流、优质通话占比,以及最近 1 小时和 24 小时的平均评分。

模块的工作原理

在 Asterisk 进程内部,VQ 监测器引擎抓取 SIP 和 RTP,把每一路 RTP 流与其 SIP 呼叫(主叫、被叫、Call-ID)关联起来,计算网络 MOS,并解码音频供 PVQA 分析。引擎通过本地 ZeroMQ 总线发布按流和按区间的报告。仪表盘进程订阅该总线,把结果存入 SQLite,并提供 Web 界面和 REST API。该总线使用与独立服务器相同的公开协议,因此您自己的工具同样可以订阅。

Asterisk process
 ├─ chan_pjsip / RTP              calls, untouched by the module
 └─ res_vq_monitor.so
     ├─ VQ Monitor engine         libpcap capture → SIP + RTP → network MOS, PVQA
     │                            → ZeroMQ reports (loopback)
     └─ supervisor ──fork──►  vq-db: SQLite, dashboard, REST API (loopback)
                                        ▲
                     reverse proxy with authentication ── your users

自行选择哪些呼叫进行感知评分

每一路流都会得到网络 MOS、抖动和丢包统计。Sevana MOS 需要先解码音频,而解码正是 CPU 开销所在,因此模块只解码部分流。跟踪列表为空时,模块按您设定的上限为当前进行中的流评分(例如同时 32 路)。添加一个匹配模式(如 SIP 地址或 Call-ID)后,模块只为匹配的呼叫评分并可选择录音,包括已在进行中的呼叫。清空列表即可恢复自动评分。

*CLI> vq track add 1002@
Added 1 pattern(s).
*CLI> vq show track
1002@
*CLI> vq track clear
Track list cleared.

仪表盘的 Track list 页面编辑的是同一份列表,因此支持人员无需登录 PBX 的 shell,就能抓取某个问题分机的呼叫。

按需录音,统计数据始终保留

每路流的通话统计只占几百字节,而解码后的音频每路流每 10 秒约占 1.3 MB。因此录音是一个单独的选项:false 从不录音,tracked 只录制跟踪列表中的呼叫,true 录制所有被解码的流。统计数据和录音按各自的周期过期(例如统计保留 14 天、音频保留 1 小时),磁盘占用始终可控。

仪表盘、SIP 呼叫分析与 REST API

仪表盘上的所有内容也都可以通过有文档的 REST API 以 JSON 或 CSV 格式获取,可直接接入您自己的报表、NOC 工具或计费核对流程。

Asterisk 版 VQ 监测器流详情:Sevana MOS、网络 MOS、抖动、编解码器、检测到的回声和死寂、按区间评分
流详情:两种 MOS 评分、网络统计、检测到的损伤以及按区间评分。
Asterisk 版 VQ 监测器 SIP 呼叫详情:主叫、被叫、结果、相关 RTP 流和 SIP 事件时间线
SIP 呼叫详情:该呼叫的 RTP 流及其从 INVITE 到挂断的信令时间线。

命令行参考

vq show status 引擎状态和版本、进行中的流和 SIP 呼叫、音频模式、各接口的抓包计数器(含丢弃的包)以及仪表盘进程状态
vq show track 当前的跟踪列表
vq track add | remove | clear 选择哪些呼叫进行 Sevana MOS 评分和录音;对进行中的呼叫同样生效
vq db restart 仅重启仪表盘进程(例如升级后),PBX 照常运行
vq logger reload 日志轮转后重新打开引擎日志

系统要求与部署

PBX 64 位 Linux 上带 chan_pjsip 的 Asterisk 20 LTS(已在 Ubuntu 24.04 上构建并验证)。其他 Asterisk 版本可按需提供
权限 Asterisk 需要 CAP_NET_RAW 能力才能抓包;模块附带的 systemd drop-in 文件会授予该能力
抓包 承载 PBX 的 SIP 和 RTP 的网络接口,可选择只抓取 SIP 端口和 rtp.conf 中的端口范围。基于 TLS 的 SIP 无法解析,因此这类流在评分时不带主叫和被叫信息。SRTP 流只提供网络指标
配置 /etc/asterisk 下的三个文件:Asterisk 自身 INI 格式的 vq_monitor.conf,以及与独立版 VQ 监测器相同的引擎和仪表盘 YAML 配置
存储 SQLite,无需外部数据库。统计数据和音频分别在可配置的期限后过期
安全 仪表盘只监听本地回环地址;请通过带身份验证的反向代理对外发布
授权 感知评分需要 Sevana PVQA 授权

选择模块还是独立服务器?

如果您运行一台或少量几台 Asterisk PBX,并希望无需额外硬件、SPAN 端口或单独服务器就能监测质量,请选择 Asterisk 模块。对于运营商链路、SBC 和混合网络,请选择独立版 VQ 监测器服务器:它可抓取镜像流量或 HEP 数据,可通过多个探针向同一数据库汇聚来横向扩展,并在每秒数百万包的链路上支持 DPDK 抓包。两者使用相同的引擎和 Sevana PVQA 评分,结果可以直接比较。

查看您自己 PBX 的通话质量

想了解您自己的 Asterisk 通话能得多少分?欢迎预约 Asterisk 版 VQ 监测器的演示,或与我们洽谈授权事宜。

申请演示联系 Sevana

Asterisk 版 VQ 监测器仪表盘:实时流、优质通话占比,以及最近 1 小时和 24 小时的平均 Sevana MOS 与网络 MOS
Asterisk 版 VQ 监测器流详情:Sevana MOS、网络 MOS、抖动、编解码器、检测到的回声和死寂、按区间评分
Asterisk 版 VQ 监测器 SIP 呼叫详情:主叫、被叫、结果、相关 RTP 流和 SIP 事件时间线