sipmon — SIP/RTP 信令与媒体质量监控
内容提要
sipmon 是一款被动式 SIP/RTP 监控工具,通过旁路抓包分析通话质量与丢包,支持实时 TUI、离线 pcap、录制回放及 JSONL 导出。它基于 Call-ID 关联呼叫,计算 MOS 评分、抖动和 RTT,内置诊断规则,提供 7 页 TUI 界面,可快速定位问题 IP。单二进制部署,无外部依赖,适合运维排查 VoIP 故障。
延伸解读
部署方式与适用场景
sipmon 采用旁路监听设计,需部署在镜像口或分流口的抓包机上,不依赖运行中的 PBX,因此适合在不影响现网的情况下进行故障排查。它支持实时抓包、离线 pcap 分析、stdin 管道和录制回放四种输入方式,灵活适配不同运维场景。单二进制、无外部依赖的特性降低了部署成本,尤其适合快速介入 VoIP 故障定位。
媒体质量评估方法
工具基于 RFC3550 计算抖动、丢包,并通过 RTCP RR 的 LSR/DLSR 估算 RTT 和单向时延,同时采用简化 E-model(ITU-T G.107)得出 MOS 评分。这些指标有助于客观评估通话质量,但需注意 MOS 为估算值,实际用户体验可能受编码、网络拓扑等因素影响。
诊断规则与排查效率
内置 20+ 条诊断规则,覆盖 Contact 可达性、Record-Route、SDP/RTP 一致性、单向媒体等常见问题,并按 warn/critical 分级,帮助快速定位故障根因。TUI 的 Call Detail 页面将消息流、诊断、原始报文和媒体统计并列展示,便于对照分析。
性能与数据管理
采用双线程模型和快照增量发布,内存有界(环形淘汰),丢包窗口计算复杂度为 O(窗口桶数),适合长时间监控。录制的事件日志支持回放和按 Call-ID 查询,便于事后追溯。但需注意,全量数据保留受内存限制,长时间运行可能丢失早期数据,建议结合录制功能保存关键证据。
Q&A
sipmon 是什么工具?它的主要用途是什么?
sipmon 是一款被动式的 SIP/RTP 信令与语音质量监控工具,通过旁路抓包分析通话质量与丢包,支持实时 TUI、离线 pcap、录制回放及 JSONL 导出,适合运维排查 VoIP 故障。
sipmon 如何部署?它依赖运行中的 PBX 吗?
sipmon 部署在镜像口/分流口的抓包机上,旁路监听,不依赖运行中的 PBX。它是单二进制,纯静态 musl 构建,无运行时依赖、无外部数据库。
sipmon 支持哪些输入方式?
sipmon 支持四种输入方式:实时抓包(libpcap,支持 BPF 过滤)、离线分析(pcap/pcapng 文件,支持 --rate 倍速回放)、stdin 管道(如 tcpdump -w - | sipmon -)、录制回放(record 模式写成 evlog,之后 replay 回放)。
sipmon 如何关联同一通电话的信令和媒体?
sipmon 基于 Call-ID 的呼叫状态机,事务按 branch+method 关联,并通过 Call-ID / 号码 / IP / SSRC 多重索引,query 一条命令即可拉出整通电话的流程与统计。
sipmon 计算哪些媒体质量指标?
sipmon 计算 RFC3550 抖动、丢包(64 包重排窗口)、RTCP RR LSR/DLSR RTT 与单向时延估计、简化 E-model(ITU-T G.107)MOS 评分,以及 PDD / setup / ring 时序、180 vs 183 早期媒体、挂机方判定等。
sipmon 如何帮助定位网络丢包问题?
sipmon 按 IP 的进出方向(TX/RX)独立统计,提供丢包率时间窗(1s … 1h)与 IP 丢包热力图,可一眼定位哪个 IP 在哪个时间段丢包。
sipmon 内置了哪些诊断规则?
sipmon 内置 20+ 条诊断规则,包括 Contact 可达性、Record-Route、SDP/RTP 一致性、单向媒体、TURN allocation/refresh 等,按 warn / critical 分级。
sipmon 的 TUI 界面有哪些页面?
sipmon 的 TUI 有 7 个页面,底部 1-7 tab 条:Overview(呼叫总览)、Search(sngrep 式搜索)、Call Detail(四栏详情)、Heatmap(IP 丢包热图)、Streams(逐流统计)、Event Log(诊断事件流)、IP Stats(按 IP 的 TX/RX 统计 + 下钻)。
如何快速开始使用 sipmon 进行实时监控?
使用命令 `sipmon live -i any` 可监控所有网卡并打开 TUI;若只监控 5060 端口,可用 `sipmon live -i eth0 -f "udp port 5060"`。
sipmon 的性能设计有哪些特点?
sipmon 采用双线程模型(主线程 TUI + 工作线程流水线)、快照 100ms 增量发布、全量有界内存(环形淘汰)+ 每 IP 两级时间桶(1s×600、1m×60)做 O(窗口桶数) 的丢包窗口计算、O(1) 的“五元组→呼叫”哈希关联,并且是纯静态单二进制部署。