VoIP 呼叫的实际数据是通过 RTP 传输的,它实际上只需要 24-64Kbps(取决于编解码器)并且需要双向传输 UDP 地址。偶尔会发送 RTCP 数据包来报告状态、指标等,但实际上并不需要。
SIP 用于呼叫建立和拆除。
RTCP 数据包携带(最小)呼叫质量指标。
有几个参数会影响通话质量,包括编解码器的选择、可用带宽、网络延迟、数据包丢失(RTP 通过 UDP,因此不会重新传输)和抖动(数据包间到达延迟、无序交付)。
(Cicso) 交换机实现了 RED,这是一种通过随机丢弃网络数据包来减少队列深度的技术。对于 TCP 网络连接,这是可以接受的,因为 TCP 通过滑动窗口协议进行重传。许多基于UDP的协议实现了应用重传。但是 RTP 负担不起这种奢侈。因此,语音数据包的随机丢弃会损害连接质量。RED 的一种解决方案是通过 TCP 连接隧道 VoIP,但这不是做出的选择。
拥塞的网络是 VoIP 通话质量问题的一个重要来源,并且可以在通话的最初几秒钟内进行测量。由于抖动和延迟的数据包(高网络延迟)导致的丢包是通话质量下降的两个主要原因。我在一个 VoIP 服务质量监控系统上工作,我们观察到最差的呼叫具有高抖动和高延迟(超过 ~70 毫秒是不好的)。避免高延迟、拥塞的网络。编码的选择会对质量产生巨大影响。更高压缩率的编解码器比“效率低”的编解码器丢失更多的数据包,所以选择使用更高带宽的编解码器(祝你好运)。
IP 网络需要 QoS 保证来提供最佳 VoIP 质量。在重新定义 TCPIP 以包括 QoS 之前,VoIP 将存在(潜在的)问题。
你的方法很接近。但是你想测量:
- UDP
- 数据包丢失
- 拥塞
- 潜伏
- 包抖动
您需要对数据包进行时间戳和编号,并检测高延迟、到达间隔抖动,避免通过 TCP 进行测量(数据包重新传输会扭曲您的质量数字,并且 TCP 会重新排序数据包,即使它会引入延迟)。您还想知道两者的质量。您可能会发现编解码器选择将是改善通话的重要因素。
我为构建监视器 (Telchemy) 工作的公司将他们的 VQMon 软件授权为用于测量质量的产品,因此您想要的工具已经存在。