rtc中需要哪种拥塞算法

拥塞控制是网络传输的核心,基本定义就是确定带宽大小。关于带宽的计算,我觉得下面一张图描述的比较准确

rtc中需要哪种拥塞算法_第1张图片

这幅图的意思是这样的

1)带宽(BDP)=rtt*btlbw 

btlbw 表示在网络中的瓶颈带宽,就是最小带宽

2)inflight data表示正在传输的数数据 btlbuffsize 表示网络中所有路由器缓存大小总和

3)数据传输消耗的带宽可以分为三个阶段

inflight data

bdp

inflight data>btlbuffsize  此时 发生丢包,从接收者角度来看 rtt 增加 丢包增加 

通过分析,我们可以看到,最好的发送速度,最好是控制在BDP附近

用这个过程分析下TCP的拥塞控制,可以发现 TCP的带宽估计发生在第三个阶段,此时,网络已经发生了严重的拥塞和丢包,如果用于RTC音视频数据的传输,那么延时和丢包会非常的大

rtc中需要哪种拥塞算法_第2张图片

webrtc的拥塞控制是基于接收端延时来计算带宽的,基本理念是:计算两组数据发送时间和接收时间的时间差,如果发现此值在不断变大,那么带宽应该处在第二个传输阶段,那么会通过REMB协议,把带宽估计反馈给发送方,发送方根据 rtt 丢包率 和remb的值 把发送速率调整到BDP左右

具体过程为  1)计算延时。

rtc中需要哪种拥塞算法_第3张图片

2)通过延时判断网络状态,分为 overuse  hold  underuse 三个状态

rtc中需要哪种拥塞算法_第4张图片

3)根据第二步的判断结果,估算网络值

rtc中需要哪种拥塞算法_第5张图片

4)打包成remb协议 发送给发送端

rtc中需要哪种拥塞算法_第6张图片

5)发送端会根据丢包率 remb的估值 来确认新的发送速率

rtc中需要哪种拥塞算法_第7张图片

总结这个流程 我们会发现webrtc在网络评估里还有些问题

1)在第二步里,评估延时需要设置一些初始参数,这次参数对不同网络都不一样,是一个调优的点

2)第三步里,在评估带宽的时候,也是需要设置一个初始带宽,这块也是需要根据网络不同来调优

3)在发送端评估带宽里,WEBRTC是可以容忍2-10的带宽损失的,这个需要根据我们具体的需求来调节

图片来源

1)WebRTC基于GCC的拥塞控制(上) - 算法分析

2)TCP BBR算法学习笔记

3)TCP的拥塞控制(详解)

4)WebRTC之带宽控制部分学习(1) ------基本demo的介绍

5)What is RMCAT congestion control, and how will it affect WebRTC?

你可能感兴趣的:(其他)