[計算機網絡] TCP的擁塞控制


引言

  計算機網絡中的帶寬、交換結點中的緩存和處理機等,都是網絡的資源。在某段時間,若對網絡中某一資源的需求超過了該資源所能提供的可用部分,網絡的性能就會變壞。這種情況就叫做擁塞。
  擁塞控制就是防止過多的數據注入網絡中,這樣可以使網絡中的路由器或鏈路不致過載。擁塞控制是一個全局性的過程,和流量控制不同,流量控制指點對點通信量的控制。

TCP擁塞控制算法

  該算法包括三個主要部分:(1)加性增、乘性減 (2)慢啟動 (3)對超時事件做出反應

1.加性增、乘性減

加性增: 如沒有檢測到丟包事件,每個RTT時間擁塞窗口值增加一個MSS (最大報文段長度)。
乘性減: 丟包事件后,擁塞窗口值減半。

  CongWin值重復地經歷一種升降循環,即重復的線性增長,然后又突然降至當前值懂得一半(當丟包事件發生時),這種循環,使得長壽命TCP連接的CongWin變化呈鋸齒形狀,如下圖所示:

2.慢啟動

  在連接開始時, 擁塞窗口值 = 1 MSS(例如: MSS= 500 bytes & RTT = 200 msec,則初始化速率 = 20 kbps)。但可獲得帶寬可能 >> MSS/RTT,為了盡快達到期待的速率,我們可以在連接開始的時候,以指數級的速率增加,直到第一個丟失事件發生。

  上圖所示,當連接開始的時候,速率呈指數式上升,直到第1次報文丟失事件發生為止:(1)每經過一個RTT,倍增擁塞窗口值;(2)每收到ACK,增加擁塞窗口。
  總結: 初始速率很低,但以指數級的速率增加

3.對超時事件作出反應

  在上述對擁塞窗口的描述中,我們只是說在連接開始的時候,以指數級的速率增加,直到第一個丟失事件發生。但實際中TCP對因超時而檢測到的丟包事件作出的反應與對因收到3個冗余ACK而檢測到的丟包事件做出的反應是不同的。

  ·收到3個冗余ACK后:CongWin減半、窗口再線性增加。
  ·檢測超時事件后:CongWin值設置為1MSS、窗口再指數增長、到達一個閾值(Threshold,初始化時被設置為一個很大的值,以使它沒有初始效應。每發生一個丟包事件,Threshold就會被設置為當前CongWin值的一半)后,再線性增長。

  原因:3個冗余ACK指示網絡還具有某些傳送報文段的能力;3個冗余ACK以前的超時,則更為 “嚴重”。

小結:

·當CongWin < Threshold時,發送者處於慢啟動階段, CongWin指數增長。

·當CongWin > Threshold時,發送者處於擁塞避免階段, CongWin線性增長。

·當出現3個冗余確認時, 閾值Threshold設置為CongWin/2,且CongWin設置為Threshold。

·當超時發生時,閾值Threshold設置為CongWin/2,並且CongWin設置為1 MSS.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM