1. 概述
RFC5506致力于在保持RTCP数据包功能的前提小,缩小RTCP数据包的大小,从而使RTP流的传输获得更大的带宽,同时提高RTCP数据包传输的成功率。在RFC3500强制要求RTCP数据包必须以复合数据包的形式发送,同时必须包含至少一个SR packet或RR packet,如果使用SDES模式,那么还应该至少包括拥有CNAME项SDES packet。
2. 复合RTCP packet的作用
-
发送者报告和接收者报告中包含了一个RTP回话中的所有参与者的SSRC标记。定期发送发送者报告和接受者报告可以让每个人知道一个RTP回话中的参与人数,从而通话传输调度算法决定更合适的传输速率。同时这样也有助于新的参与者快速建立对RTP会话参与者的整体估计。
-
在一个新参与者没有发送RTP和RTCP packet之前,复合RTCP数据包可以帮助新参与者确认自身的SSRC,解决相应的SSRC冲突问题。
-
发送者报告和接受者报告中包含了一些基本的统计信息,可以用来检测数据传输,实现传输的自适应功能。如果规律地发送这些报告,那么将会变得更加有用,例如可以用来分析预估不同报告之间的传输趋势。每一个RTCP数据包发送地更频繁,对于媒体传输自适应就更加有利。所以在RTCP报文中添加发送者或者接收者报告是非常有用的。
-
CNAME SDES项用来帮助接收器确定哪些媒体流应该在RTP会话内以及在承载不同媒体类型的不同RTP会话之间彼此同步。所以对于每一新加入会话的数据发送者来说,越早接收到该项越好。
-
SR和CNAME SDES项一起用来同步多个不同的RTP流,接收者通过CNAME项决定需要同步的媒体流,然后使用SR中的NTR和RTP的时间戳建立同步。
-
CNAME SDES项允许会话参与者检测SSRC冲突,并且将其从循环路由上分开。32位的SSRC存在一定概率的冲突问题,尤其是当某一个RTP流具有一个SSRC值,但是这个RTP流不再发送时,如果发送冲突,那么冲突将变得难以检测。CNAME用作绑定到SSRC的特定端点实例的较长规范标识符,所以通过CNAME项,可以将两个RTP流区分开。
在上面的描述中,复合数据包作用很大,但是当RTCP 复合数据包没有规律发送时,上面的作用被大大减少。
2. reduce-size数据包的使用场景
2.1 Control Plane Signaling
开发移动联盟(OMA)在PoC中就使用了reduce-size数据包来传输具体的事件。OMA的PoC主要用于能够进行IP传输的蜂窝链路,例如通过GPRS的GSM。
2.2 Codec Control Signaling
临时最大媒体流比特率请求用来说明媒体比特率的变化。这些消息受益于在不良信道条件下使用Reduced-Size RTCP,因为与大型RTCP相比,Reduced-Size RTCP更可能成功传输。 这很关键,因为当信道条件差时,可能会发生这些消息。
2.3 Feedback
具有通用NACK的视频流也可以使用reduce-sizeRTCP数据包,当RTT比接收缓冲器深度短时,通用NACK会请求重传丢失的数据包,从而大大提高出局质量。如果NACK使用reduce-size模式,那么传输单个NACK数据包的带宽就得以减小,从而在相同带宽条件下,可以传输更多的NACK数据包。
2.4 Status Reports
在传输小的测量或者状态报告时可以使用reduce-size的RTCP数据包,或者对复合数据包进行分片。这样做的目的在于,在无线传输的场景中,越小的数据包越容易传输成功。
3. reduce-size模式传输的好处
reduce-szie传输的RTCP数据包比复合RTCP数据包更小,所以在传输过程中占有更加有利的位置。一个复合数据包至少包含一个SR或者RR,同时还需包含一个具有CNAME项的SDES数据包。其中一个SR至少具有52字节,一个RR至少具有32字节,而一个SDES数据包至少具有10个字节加上CNAME长度的字节数。而一个CNAME至少具有10字节,当使用推荐结构usr@host时,这个大小则至少为20字节。所以使用reduce-size可以至少减少70到80个字节。
在低速链路中,这样做的好处有:
- 对于像无线链路这种丢包率随数据包大小增长的链路来说,越小的数据包越不容易丢失。
- 数据包的传输时间更短。
网友评论