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. 环路时延计算的实现
时间轴InitRTPSeqNo-------表示本端收到的第一个RTP 报文的序列号ExtRTPSeqNo1-----表示本端在采样点1处收到的RTP 报文中最大的序列号(( 即PreExpRcvRTPPkt =ExtRTPSeqNo1-InitRTPSeqNo )RcvRTPPkt1---------表示本端在采样点1处实际收包数(PreRcvRTPPkt )ExtRTPSeqNo2-----表示本端在采样点2处收到的RTP 报文中最大的序列号
RcvRTPPkt2---------表示本端在采样点2处实际收包数1LostInterval =(ExpectedInterva -ReceivedInterval )/ExpectedInterval 时间基准(设备启动时间) 1.此段时间用RTCP 报文中的Rtp_ts 保存,发送给B 端
2.此段时间表示A 端点上线时间,即StartTime
3.此段时间用RTCP 报文中的Ntp 保存,发送给B 端,即PeerSRTime
4.此段时间表示B 端点上线时间,即StartTime
5.此段时间表示端点B 收到SR 报文相对时间,即RcvSRTime 随SR 报文发回A 端
承载软件根据协议计算间隔抖动;上层控制软件直接使用此值进行打包和告警。
备注:RTCP 一共有如下5个告警:
接收报文丢报率告警
发送报文丢报率告警
接收报文间隔抖动告警
发送报文间隔告警
接收报文时延告警
对于同一个IP 地址,告警恢复之前,只上报一种告警;发送报文相关的告警是本端计算的,接收报文相关的告警是对端计算,通过RTCP 报文传送过来的。
上报告警的原则如下:计算出的丢包率/时延/抖动如果连续4个周期大于MML (SET RTCP )设置的对应告警上限,且同一个IP 地址没有上报RTCP 相关的告警,则上报该告警。如果计算出的相关值小于MML 设置的告警下限,则恢复告警。
参考协议:RFC1889
承载软件根据协议计算jitter 上层控制软件直接使用jitter 打包、告警jitter