拥塞控制是网络传输的核心,基本定义就是确定带宽大小。关于带宽的计算,我觉得下面一张图描述的比较准确
这幅图的意思是这样的
1)带宽(BDP)=rtt*btlbw
btlbw 表示在网络中的瓶颈带宽,就是最小带宽
2)inflight data表示正在传输的数数据 btlbuffsize 表示网络中所有路由器缓存大小总和
3)数据传输消耗的带宽可以分为三个阶段
inflight data <bdp 这时不会产生延时 rtt 保持不变,从接收者的角度来看,带宽在增加
bdp<inflight data<btlbuffsize 此时 不会丢包 延时变大 从接收者的角度来看,带宽稳定,rtt增加
inflight data>btlbuffsize 此时 发生丢包,从接收者角度来看 rtt 增加 丢包增加
通过分析,我们可以看到,最好的发送速度,最好是控制在BDP附近
用这个过程分析下TCP的拥塞控制,可以发现 TCP的带宽估计发生在第三个阶段,此时,网络已经发生了严重的拥塞和丢包,如果用于RTC音视频数据的传输,那么延时和丢包会非常的大
webrtc的拥塞控制是基于接收端延时来计算带宽的,基本理念是:计算两组数据