1. 程式人生 > >基於效能的擁塞控制演算法PCC

基於效能的擁塞控制演算法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;若是其他情況,則保持當前的速率。
 其採用的效用函式如下:
u

i(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]擁塞控制演算法分類