RTCP 丢包抖动时延计算原理

RTCP 丢包抖动时延计算原理
RTCP 丢包抖动时延计算原理

RTP/RTCP 丢包/抖动/时延计算原理

1.RTP/RTCP的基本功能介绍

实时传输协议RTP(A Transport Protocol for Real-Time Application)提供实时的端对端传输业务(如交互的语音和图象),包括负载类型标识,序列号,时间戳,传输监视。

实时传输协议(RTP)本身并不提供任何机制保证实时传输或业务质量保证,而是让底层协议去实现。

RTP包括两个紧密相关的部分:

实时传输协议(RTP-Real Time Transport Protocol),传输有实时特性的信息;

RTP控制协议(RTCP-RTP Control Protocol),监视业务质量和传输对话中成员的信息。

RTP/RTCP报文封装格式为:DL+IP+UDP+RTP/RTCP

2.RTP报文统计方法介绍

RTP报文发送统计:

NTP时间标志:64比特,指示了此报告发送时的壁钟(wallclock)时刻,它可以与从其它接收者返回的接收报告块中的时间标志结合起来,测量到这些接收者的环路时延。

RTP时间标志:32比特,与以上的NTP时间标志对应同一时刻,但是与数据包中的RTP时间标志具有相同的单位和偏移量。

发送包数:32比特,从开始传输到此SR包产生时该发送者发送的RTP数据包总数。若发送者改变SSRC识别符,该计数器重设。

发送字节数:32比特,从开始传输到此SR包产生时该发送者在RTP数据包发送的字节总数(不包括头和填充)。若发送者改变SSRC识别符,该计数器重设。RTP报文接收统计:

丢包率:8比特,自从前一SR包或RR包发送以来,从SSRC_n传来的RTP 数据包的损失比例,以固定点小数的形式表示,小数点在此域的左侧,等于将丢包率乘256后取整数部分。该值定义为损失包数被期望接收的包数除。(对应RTCP消息中的丢包率时,除以256再乘以100即可,如为127,则丢包率为50%。)

累计包损:24比特,从开始接收到现在,从源SSRC_n发到本源的RTP数据包的丢包总数。该值定义为期望接收的包数减去实际接收的包数。

扩展的最高接收序列号:32比特,低16比特包含从源SSRC_n来的最高接收序列号,高16比特用相应的序列号周期计数器扩展该序列号。

到达间隔抖动:32比特,RTP数据包到达时刻统计方差的估计值,以时间标志为单位测量,用无符号整数表达。到达间隔抖动J定义为一对包中接收者相对发射者的时间跨度差值的平均偏差。计算方法:若Si是包i的RTP时间标志,Ri 是包i以RTP时间标志单位的到达时刻值,对于两个包i和j,D可以表达为D(i,j)=(Rj-Rj)-(Ri-Si);到达间隔抖动可以在收到从源SSRC_n来的每个数据包i 后连续计算,利用该包和前一包i-1的偏差D(按到达顺序,而非序号顺序),根据公式J=J+(|D(i-1,i)|-J)/16计算。循环计算,生成报告块时,取当时值。(具体可参考后面的详细描述)

环路时延:上一个SR时间标志(LSR):32比特,接收到的来自源SSRC_n 的最新RTCP发送者报告(SR)的64位NTP时间标志的中间32位。若还没有接收到SR,该域值为零。上一个SR以来的延时(DLSR):32比特,是从收到来自SSRC_n

1

2 的SR 包到发送此接收报告块之间的延时,以1/65536秒为单位。若还未收到来自SSRC_n 的SR 包,该域值为零。环路时延计算方法:假设SSRC_r 为发出此接收报告块的接收者。源SSRC_n 可以通过记录收到此接收报告块的时刻A 来计算到SSRC_r 的环路传输时延。可以利用最新的SR 时间标志(LSR )域计算整个环路时间A-LSR ,然后减去此DLSR 域得到环路传播时延。(具体可参考后面的详细描述)

3. 丟包率计算的实现

4. 环路时延计算的实现

21用户在线时间轴InitRTPSeqNo ExtRTPSeqNo1RcvRTPPkt1ExtRTPSeqNo2

RcvRTPPkt2InitRTPSeqNo-------表示本端收到的第一个RTP 报文的序列号ExtRTPSeqNo1-----表示本端在采样点1处收到的RTP 报文中最大的序列号(( 即PreExpRcvRTPPkt =ExtRTPSeqNo1-InitRTPSeqNo )RcvRTPPkt1---------表示本端在采样点1处实际收包数(PreRcvRTPPkt )ExtRTPSeqNo2-----表示本端在采样点2处收到的RTP 报文中最大的序列号

RcvRTPPkt2---------表示本端在采样点2处实际收包数1预期间隔收包数ExpectedInterval 实际间隔收包数ReceivedInterval LostInterval =(ExpectedInterva -ReceivedInterval )/ExpectedInterval A 端发送SR B 端接收SR B 端发送SR

时间基准(设备启动时间) 1.此段时间用RTCP 报文中的Rtp_ts 保存,发送给B 端

2.此段时间表示A 端点上线时间,即StartTime

3.此段时间用RTCP 报文中的Ntp 保存,发送给B 端,即PeerSRTime

4.此段时间表示B 端点上线时间,即StartTime

5.此段时间表示端点B 收到SR 报文相对时间,即RcvSRTime

6.此段时间用RTCP 报文中的Ntp 保存,发送给A 端,即PeerSRTime

7.此段时间表示端点A 收到SR 报文相对时间,即RcvSRTime 132端点上线时间64LSR 5DLSR=6-5LSR,DLSR 随SR 报文发回A 端

7在A 端收到SR 报文时计算:环路时延=7-LSR(3)-DLSR

3 5. 间隔抖动计算的实现

承载软件根据协议计算间隔抖动;上层控制软件直接使用此值进行打包和告警。

备注:RTCP 一共有如下5个告警:

接收报文丢报率告警

发送报文丢报率告警

接收报文间隔抖动告警

发送报文间隔告警

接收报文时延告警

对于同一个IP 地址,告警恢复之前,只上报一种告警;发送报文相关的告警是本端计算的,接收报文相关的告警是对端计算,通过RTCP 报文传送过来的。

上报告警的原则如下:计算出的丢包率/时延/抖动如果连续4个周期大于MML (SET RTCP )设置的对应告警上限,且同一个IP 地址没有上报RTCP 相关的告警,则上报该告警。如果计算出的相关值小于MML 设置的告警下限,则恢复告警。

参考协议:RFC1889

承载软件根据协议计算jitter

上层控制软件直接使用jitter 打包、告警jitter

相关主题
相关文档
最新文档