rtcp丢包抖动时延计算原理
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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的SR 包到发送此接收报告块之间的延时,以1/65536秒为单位。若还未收到来自SSRC_n 的SR包,该域值为零。环路时延计算方法:假设SSRC_r为发出此接收报告块的接
收者。源SSRC_n 可以通过记录收到此接收报告块的时刻A 来计算到SSRC_r 的环路传输时延。可以利用最新的SR 时间标志(LSR )域计算整个环路时间A-LSR ,然后减去此DLSR 域得到环路传播时延。(具体可参考后面的详细描述)
3. 丟包率计算的实现
4. 环路时延计算的实现
5. 间隔抖动计算的实现 承载软件根据协议计算间隔抖动;上层控制软件直接使用此值进行打包和告警。 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