基于性能的拥塞控制算法PCC

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010643777/article/details/78973256

 一次数据包的丢失,也许并不代表网络发生拥塞。但是在经典的tcp拥塞控制条件下,丢包作为网络拥塞信号,tcp的窗口就要减半,发送端就要减少向网络中发送的数据包数量。
 若是丢包是如下原因,降窗明显不合理。

  • f might traverse a shallow buffer on a high-BDP link, with the loss due to bad luck in statistical multiplexing rather than high link utilization.
  • There may be a higher-rate competing flow.
  • There may be random non-congestion loss somewhere along the path such as noise packet loss.

 关键的就是PCC的速率控制机制了,这个机制和后来出现的BBR算法几乎相同,增加发送速率对网络带宽进行探测。PCC按照监测周期(MI,Monitor Interval)更改发送速率,每四个MI形成两个对。在每个监测对中,分别按照速率(1+ϵ)r,(1ϵ)r向网络中发包。四个监测周期后,速率更改为r,发送端等待反馈的ack,分别计算相应监测周期的效用函数(U+i,Ui,i=1,2)。如果U+i>Ui,i{1,2},则将发送速率调整为(1+ϵ)r;如果U+i<Ui,i{1,2},则将发送速率调整为(1ϵ)r;若是其他情况,则保持当前的速率。
 其采用的效用函数如下:
ui(x)=Ti(x)sigmoid(Li(x)0.05)xi(t)Li(t)(1)
xi(t)为数据包发送速率,Li(t)为丢包率,Ti(x)=xi(t)(1Li(x))为吞吐量,当丢包率超过0.05,ui(x)为负,可以认为此时的网络状况极其糟糕。
 这个算法,有缺点,带宽小的数据流竞争带宽慢,收敛速度较慢。但是保证了链路的利用率高。
[1]PCC: Re-architecting Congestion Control for Consistent High Performance
[2]拥塞控制算法分类

没有更多推荐了,返回首页