計算機網絡-運輸層-TCP擁塞控制

1 慢開始

基於窗口的擁塞控制,發送方維持一個擁塞窗口cwnd,擁塞窗口的大小取決於網絡的擁塞程度,並且動態變化,發送方使自己的發送窗口小於等於擁塞窗口,實現擁塞控制。

擁塞窗口cwnd的變化:

  1. 主機開始發送數據時,現將cwnd設置爲1-4個發送方的最大報文段SMSS。
  2. 每收到一個對新的報文段的確認,就把擁塞窗口增大最多一個SMSS的數值。
  3. 每經過一個傳輸輪次,cwnd大小就加倍。
  4. 爲防止cwnd增長過大,需要設置一個慢開始門限ssthresh,cwnd超過ssthresh時就不再使用慢開始算法,改用擁塞避免算法。

2 擁塞避免

擁塞避免算法:

  1. 擁塞避免算法讓cwnd緩慢地增大,沒經過一個傳輸倫次,cwnd+1,也就是加法增大
  2. 如果出現超時,就把ssthresh=cwnd/2,cwnd=1。重新開始慢開始算法
  3. 如果連續收到三個重複確認,就立即進行重傳。ssthresh=cwnd/2,cwnd=ssthresh,進行擁塞控制算法。這稱爲乘法減小,二者合在一起就是所謂的AIMD算法。

從流量控制考慮,發送方的窗口不能超過接收方給出的接受窗口值。
從擁塞控制考慮,發送方的窗口不能超過擁塞窗口。
實際上發送方的窗口上限值=min(rwnd,cwnd)。

3 主動隊列管理AQM

在路由器中,隊列通常按先進先出的順序轉發,當隊列已滿時,就會把後來的分組丟棄。因此就會產生超時重傳。
在實際使用中,通常有很多TCP連接的報文段是複用在網絡層的IP數據報中發送,因此一旦產生尾部丟棄,就或有多個TCP連接在同一時間進入到慢開始狀態,這稱爲全局同步。而網絡恢復後,通信量又會變大很多。

爲了避免全局同步現象,提出了主動隊列管理,也就是不等到隊列滿再丟棄尾部,而是稍微提前一些丟棄一些分組,使一些TCP連接提前進入慢開始,從而消除全局同步。其中就有流行多年的早期隨機檢測RED,其規則如下:

  1. 路由器維持兩個參數,即隊列最大門限和最小門限,當新到達一個分組時,如果當前隊列大小小於最小門限,就將新分組加入隊列。
  2. 如果當前隊列大小大於最大門限,就丟棄新分組。
  3. 如果當前隊列大小介於最小門限和最大門限之間,就以一定概率p丟棄新分組。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章