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

 一次数据包的丢失,也许并不代表网络发生拥塞。但是在经典的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]拥塞控制算法分类

相关文章
相关标签/搜索