webrtc系列(二)——拥塞控制算法

1、背景

网络拥塞是基于IP协议的数据报交换网络中常见的一种网络传输问题,它对网络传输的质量有严重的影响, 网络拥塞是导致网络吞吐降低, 网络丢包等的主要原因之一, 这些问题使得上层应用无法有效的利用网络带宽获得高质量的网络传输效果。特别是在通信领域, 网络拥塞导致的丢包, 延迟, 抖动等问题, 严重的影响了通信质量, 如果不能很好的解决这些问题, 一个通信产品就无法在现实环境中正常使用。

2、丢包带宽估计

基于丢包的拥塞控制比较简单,其基本思想是根据丢包的多少来判断网络的拥塞程度. 丢包越多则认为网络越拥塞,那么我们就要降低发送速率来缓解网络拥塞; 如果没有丢包,这说明网络状况很好,这时候就可以提高发送码率,向上探测是否有更多的带宽可用. 实现该算法有两点:一是获得接收端的丢包率,一是确定降低码率和提升码率的阈值。

As_hat(i) =As_hat(i-1),2%<=丢包率<=10%,保持不变 As_hat(i) = As_hat(i-1)(1-0.5p),丢包率>10%,下降,p是丢包率 As_hat(i) = 1.05*As_hat(i-1),丢包率<2%,上升

webrtc中发送端收到RTCP RR报文并解析得到丢包率后,根据下图公式计算发送端码率: 当丢包率大于0.1时,说明网络发生拥塞,此时降低发送端码率; 当丢包率小于0.02时,说明网络状况良好,此时增大发送端码率; 其他情况下,发送端码率保持不变。

3、延迟带宽估计

3.1 Goog-REMB

基于接收端的延迟算法,利用延迟值,通过卡尔曼滤波器估计出下一时刻的网络带宽趋势,效果的准确性和公平性不如Transport-CC,目前已经被webrtc的新版本所淘汰

3.2 Transport-CC

基于发送端的延迟算法,也是利用区间延迟值,通过TrendLine滤波器(最小二乘法滤波器),通过斜率的增加或者减小来判断当前网络的拥塞状况

3.2.1 时延梯度计算

首先我们通过一张图看下时延梯度的计算:

对于两个包组:i以及i−1,它们的时延梯度:

在 WebRTC 中,延迟梯度不是一个个包来计算的,而是通过将包分组,然后计算这些包组之间的延迟,这样做可以减少计算次数,同时减少误差。 包组的划分原则为在一个burst_time间隔内的一系列的包构成一个组。建议burst_time为5ms.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值