RTCP协议总结

协议概述

 实时传输控制协议。单独运行在低层协议上,由低层协议提供数据与控制包的复用。

在RTP会话期间,每个会话参与者周期性地向所有其他参与者发送RTCP控制信息包,不同的端口区分RTP信息包和RTCP信息包,如下图所示:

 

RTCP功能

1.为应用程序提供会话质量或者广播性能质量的信息

    不封装声音数据和电视数据,封装发送/接受端的统计报表,包括发送信息包数目,丢失的信息包数目和信息包的抖动等,应用程序开发人员决定这些信息用来做什么。

 

2.确定RTP用户源

    为每个RTP用户提供了一个全局唯一的规范名称标识符(CNAME)。

  • 接收者使用它来追踪一个RTP进程的参加者,当发现冲突或者程序重新启动时,RTP中的同步源标识符SSRC可能发生改变,接收者可利用CNAME来追踪参加者。
  • 接收者也需要利用CNAME在相关RTP连接中的几个数据流之间建立联系。
  • 音视频同步:用于接收者使用CNAME来使得同意发送者的音视频数据相关联,然后跟进RTCP包中的计时信息来实现音视频同步。

 

3.控制RTCP传输间隔

    为了防止占用过多的网络资源,所以需要限制RTCP信息包的流量,控制信息所占带宽一般不超过可用带宽的5%,应用程序根据参加者总数就可以调整RTCP包的发送速率。

 

4.传输最小进程控制信息

    对于参加者可以任意进入和离开的松散会话进程十分有用,参加者可以自由进入或离开,没有成员控制或参数协调。    

 

##RTCP信息包    

    以固定部分开头,紧接着的是可变长的结构单元,最后以一个32位边界结束。分成以下五类:

 

SR

SR:发送端报告包,用于发送和接受活动源的统计信息;发送端报告分组SR用来使发送端以多播方式向所有接收端报告发送情况。主要包括:

  • 相应的RTP流的SSRC
  • RTP流中最新产生的RTP分组的时间戳和NTP
  • RTP流包含的分组数
  • RTP流包含的字节数    

SR包的封装:

 

版本(V):同RTP包头域

填充(P):同RTP包头域

接收报告计数器(RC):5比特,该SR包中的接受报告块的数目,可以为0

包类型(PT):8比特,SR包是200

长度域(Length):16比特,其中存放的是该SR包以32比特为单位的总长度减一

同步源(SSRC of sender):SR包发送者的同步源标识符。与对应RTP包中的SSRC一样。

NTP Timestamp(Network time protocol):SR包发送时的绝对时间值。NTP的作用是同步不同的RTP媒体流。

RTP Timestamp:与NTP时间戳对应,与RTP数据包中的RTP时间戳具有相同的单位和随机初始值。

Sender's packet count:从开始发送包到产生这个SR包这段时间里,发送者发送的RTP数据包的总数。SSRC改变时,这个域清零。

Sender's octet count:从开始发送包到产生这个SR包这段时间里,发送者发送的净荷数据的总字节数(不包括头部和填充)。发送者改变其SSRC时,这个域要清零。

同步源n的SSRC标识符:该报告块中包含的是从该源接收到包的统计信息。

丢失率(Fraction Lost):表明从一个SR或RR包发出以来从同步源n(SSRC_n)来的RTP数据包的丢失率。

累计的包丢失数目:从开始接受到SSRC_n的包到发送SR,从SSRC_n传过来的RTP数据包的丢失总数。

收到的扩展最大序列号:从SSRC_n收到的RTP数据包中最大的序列号。

接受抖动(Interariival jitter):RTP数据包接受时间的统计方差估计。

上次SR时间戳(Last SR,LSR):取最近从SSRC_n收到的SR包中的NTP时间戳的中间32比特。如果目前还没收到SR包,则该域清零。

上次SR以来的延时(Delay since last SR,DLSR):上次从SSRC_n收到SR包到发送本报告的延时。

 

RR

接受者报告包,用于接受非活动站的统计信息;

 

SDEC

源描述包,用于报告和站点相关的信息,包括CNAME;

 

BYE

断开RTCP包,是站点离开系统的报告,表示结束;

 

APP

应用特定函数。

 

其余说明

  • 所有RTCP包至少把必须以两个包组合形式发送,格式如下:

        1.加密前缀(Encryption prefix)

        2.仅当组合包被加密,才加上一个32位随机数用于每个组合包发送

        3.SR或RR:组合包中第一个RTCP包必须是一个报告包,以帮助分组头的确认。即使没有数据发送,也没有接收到数据,也要发送一个空RR,哪怕组合包中RTCP包为BYE;

        4.附加RR:如报告统计源数目超过31,在初始报告后应该有附加RR包

        5.SDES:包含CNAME项的SDES包必须包含在每个组合RTCP包中。SDES包可能包括其他源描述项,这要根据特别的应用需要,并同时考虑带宽限制。

        6.BYE或APP:除了BYE应作为最后一个包发送,其他RTCP包类型可以任意顺序排列,包类型出现可不止一次。

        

RTCP传输间隔

    由于RTP设计成允许应用自动扩展,可从几个人的小规模系统扩展成上千人的大规模系统。由于每个参与者需要周期性地向所有其他参与者发送RTCP控制信息包,所以需要控制控制信息包的流量,RTCP控制信息包速率必须按比例下降。

    一旦确认加入到RTP会话中,即使后来被标记成非活动站,地址的状态任会被保留,地址应继续计入共享RTCP带宽地址的总数中。

SR源报告包和RR接受者报告包

    SR源报告包和RR接受者报告包用于提供接收质量反馈,除包类型代码外,SR与RR间唯一的差别是源报告包含有一个20字节发送者信息段。

 

SDES源描述包

  • CNAM:规范终端标识SDES项目

  • NAME:用户名称SDES项目
  • EMAIL:电子邮件地址SDES项
  • PHONE:电话号码SDES项
  • LOC:用户地理位置SDES项
  • TOOL:应用或工具名称SDES项
  • NOTE:通知/状态SDES项
  • PRIV:专用扩展SDES项

 

BYE断开RTCP包

    如混合器接收到一个BYE包,混合器转发BYE包,而不改变SSRC/CSRC标识。如混合器关闭,在关闭之前它应该发出一个BYE包,列出混合器处理的所有源,而不只是自己的SSRC标识。

 

APP特殊应用包

    APP包用于开发新应用和新特征的实验,不要求注册包类型值。不可识别的APP包应被忽略。如确定应用广泛,推荐重新定义每个APP包,而不用向IANA注册子类型和名称段。

 

RTP/RTCP不足之处

    当很多人加入会话时,由于每个参与者都需要周期发送RTCP控制包,所以容易导致RTCP包泛滥。

 

RTCP抓包分析

send report:

    

 

recv report:

   

 

        

 

 

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值