VoIP:RTP标头中的时间戳更改

时间:2018-11-01 20:12:54

标签: timestamp voip rtp

根据RTP RFC(3550),时间戳必须在每个RTP数据包中增加: “时间戳反映了RTP数据包中第一个八位位组的采样时刻。采样时刻必须来自时钟,该时钟在时间上单调线性地递增,以进行同步和抖动计算。”

当呼叫中间的时间戳突然减少(回到零)而没有任何电话事件(例如保持/转移)时,我们将面临问题。 SSRC保持不变,并且序列号按预期递增。只有时间戳记在起作用,没有明确的解释。

此行为导致记录丢失(这些RTP数据包被捕获RTP流的记录器丢弃)。

我想找出减少时间戳记是否意味着缺乏对RTP RFC的依从性,以及这种行为的可能原因是什么?

此问题发生在固件版本为SCCP42.9-4-2SR3-1S的Cisco 7942电话上。

在Cisco 8841电话(和完全相同的环境)上,问题有点不同:当时间戳记重置时,序列号也会在同一时间(数据包)中重置,这不会导致记录丢失。

谢谢

Kobster

3 个答案:

答案 0 :(得分:0)

RTP中使用的时间戳确定接收到的数据包的顺序

在某些网络条件下,数据包3可以在数据包1,2等之前传递。

因此,如果您有抖动缓冲区,则应按照相应的时间戳顺序对数据包进行重新排序。

如果时间戳超出抖动缓冲区长度,则跳过不正确的数据包。

因此,时间戳的持续减少意味着一些错误。您应该更改固件或联系思科。

答案 1 :(得分:0)

根据RFC-3550 Section #5.1时间戳记必须增加:

  

时间戳反映了第一个八位位组中的采样时刻         RTP数据包。采样时刻必须来自         时钟在时间上单调线性增加         同步和抖动计算

您还可以从Sender Report RTCP Packet检查同步信息:NTP时间和相应的时间戳,也许Cisco电话会通知这种行为

答案 2 :(得分:0)

谢谢! 我认为,这种现象是由于延迟/带宽问题(或媒体服务器上的CPU / RAM过载)引起的,跨不同媒体服务器的实时呼叫“跳动”(类似于S4B的适应能力),并且这种现象的发生与电话事件无关作为举行,转让或会议。此问题仅发生在客户方面,因此也许这一方面已实时迁移到更相邻的媒体服务器。 再次感谢您的支持和确认,这确实不符合RTP RFC。