1、RTP/RTCP简介
RTP协议是IP网络中针对实时业务的一种传输协议,一般构架在UDP协议之上。另外,它也是一个数据封装协议,实时业务数据封装于RTP包的数据域中。RTP协议的设计目的是提供实时数据传输中的时间戳信息及各数据流(音/视频等)同步功能。RTP提供序列号(Sequence Number)以恢复数据包的顺序,实现丢包检测,为实时传输提供网络拥塞等信息;提供时间戳(Timestamp)用于媒体同步,使接收端按正确的速率回放数据;提供同步源标志(Source Identification)使接收端有可能获得有关发送方的信息。RTCP控制包共有五种类型,其中用于提供QoS反馈的有两种:发送端报告(Sender Report , SR)和接收端报告(Receiver Report ,RR) 。前者描述发送端的发送和接收统计数据;后者描述接收端的接收统计数据。这些统计数据包括发送包数、发送字节数、累计丢包数、已收报文的最大序列号、到达时间间隔抖动等
2、基于RTP/RTCP的控制理论基础及控制模型
λ为当前丢包率,λc为丢包率下限,λl为丢包率上限。
当λ>λc时,网络拥塞;
当λ<λl时,网络空闲;
当λl=<λ<=λc时,网络负载适中
当网络拥塞时,降低发送速度,当网络空闲时,可适当提升发送速度。控制模型如下:
3、反馈控制算法
我们采取基于RTP协议的端到端反馈拥塞控制策略。接收端根据RTP数据包的接收情况生成RTCP接收报告RR ,周期性地向发送端反馈此RTCP包,通告发送端当前的网络状况。发送端根据反馈的信息采取相应的控制算法调节输出码率,从而实现拥塞控制。我们利用某段时间内的丢包率作为判断网络是否拥塞的标准。发送端根据RTCP反馈包中的信息可计算出丢包率。
为了防止QoS抖动,我们使用下述低通滤波器对丢,包率λ进行平滑处理:
λ=aλ+ (1-a)b(λ为最新计算出的丢包率,b为当前使用中的丢包率,a为权重(0<a<1)。我们设置两个门限值λc ,λl,根据平滑后的丢包率λ,作如下估计:
当λ>λc时,网络拥塞;
当λ<λl时,网络空闲;
当λl=<λ<=λc时,网络负载适中
设MaxRate/ MinRate是发送端最大/最小输出比特率; Speed0 是初始速率;Step是速率的线性增量;β是乘性减小因子。我们采取下述反馈控制算法:
●发送端
(1)按初始速率Speed0发送数据
Speed : = Speed0 ;(MinRate≤Speed≤MaxRate)
(2)根据接收端反馈的RTCP包中的信息计算出丢包率,平滑处理后进行网络负载判断并调整输出码率:
if (λ>λc)
Speed = max{(β*Speed) ,MinRate} ;
Else if (λ<λl)
Speed = min{( Speed + Step) ,MaxRate}
Else
Speed = Speed
●接收端
每收到N个数据包或最多5s发送一RTCP反馈包至发送端,其中包含从发出上一个反馈包到发送此包期间内的QoS信息。此反馈拥塞控制策略能使整个H264视频传输系统实时监视带宽的变化,动态地改变输出码率,充分利用当前带宽。当网络拥塞时,发送速率乘性减小,降低对所需带宽的要求,同时设置一最小发送码率MinRate ,保证发送端所需的最小带宽;当网络空闲时,线性增加发送码率,同时设置一最大发送码率MaxRate ,保证发送端不会过度占用资源;当网络负载正常时,不作任何调整。由于发送端采取类似TCP拥塞控制中的AIMD策略(Addictive Increase ,Multiplicative Decrease) ,它可以进一步缩短实时传输系统处于拥塞状态下的时间,进一步降低丢包率和时延,为用户提供良好的服务质量,并且保证了同其它协议的数据流竞争带宽的公平性。
建议参数
MTU | Speed0 | MaxSpeed | MinSpeed | Step | a | β | N | λc | λl |
|
|
|
| 5kbps | 0.7 | 0.8 |
| 5% | 1% |