【學習總結】網絡-TCP擁塞控制

tcp擁塞控制

  • 出現擁塞的條件:

    • 對資源需求的總和>可用資源。
  • 後果

    • 網絡中許多資源同時呈現供應不足 -- 網絡性能變壞 -- 網絡吞吐量將隨着輸入負荷增大而降低。
  • 定義:

    • 擁塞控制,能夠防止過多數據注入網絡,以使網絡中的路由器或鏈路不致過載。

爲何有了滑動窗口還須要有擁塞窗口?

  • 滑動窗口是對發送接收雙方的流量控制,若是中間的網絡設備的轉發性能達到極限是沒法感知到的,而tcp除了針對自身的收發能力作調整,還根據總體的網絡狀況作調整,因此有了擁塞窗口。

tcp擁塞控制與流量控制的區別

  • 概述:

    • 擁塞控制:全局性;流量控制:點對點。
  • 詳述:

    • 擁塞控制是讓網絡可以承受現有的網絡負荷,是一個全局性的過程,涉及全部的主機、全部的路由器,以及與下降網絡傳輸性能有關的全部因素。
    • 流量控制是指點對點的通訊量的控制,即接收端控制發送端,它所要作的是抑制發送端發送數據的速率,以便使得接收端來得及接收。

tcp擁塞控制的算法

  • 擁塞控制的算法:慢開始、擁塞避免,快重傳,快恢復。

慢開始和擁塞控制

  • 圖示:慢開始 -- 擁塞避免算法 -- 網絡擁塞的處理 -- 慢開始 -- 擁塞避免算法 -- ...

  • 慢開始詳述:

    • 以最大報文段長度MSS爲擁塞窗口cwnd的增加單位。
    • 初始零擁塞窗口cwnd=1,而後每通過一個傳輸輪次(往返時延RTT),擁塞窗口都呈指數增大。
    • 規定一個慢開始門限ssthread-slow start thread
    • 一直增大擁塞窗口cwnd,直到慢開始門限ssthread,而後改用擁塞避免算法。
  • 擁塞避免算法詳述:

    • 加法增大:發送端的擁塞窗口cwnd每次通過一個傳輸輪次,就只增大一個MSS大小,即按照線性規律緩慢增大。
    • 乘法減少:當出現網絡擁塞(即一次超時)時,令慢開始門限ssthread減少爲當前cwnd的一半,但不小於2
      • 注意:更新慢開始門限,參考值是當前cwnd的一半,不是當前門限的一半!
    • cwnd不一樣大小時,執行不一樣算法:
      • cwnd<ssthread:慢開始
      • cwnd=ssthread:能夠慢開始,也能夠擁塞避免(一般作法)
      • cwnd>ssthread:擁塞避免
  • 網絡擁塞的處理

    • 更新ssthread值
    • 擁塞窗口從新設置爲1,並從新開始執行慢開始算法。
      • 目的:迅速減小主機發送到網絡中的分組數,使得發生擁塞的路由器有足夠的時間把隊列中積壓的分組處理完。

快重傳和快恢復

  • 圖示:在慢開始和擁塞避免基礎上改進,慢開始 -- 快重傳 -- (跳過慢開始)快恢復 -- 擁塞避免 --

  • 快重傳

    • 快重傳:使用了冗餘ACK來檢查丟包的發生。
    • 當發送方連續收到三個重複的ACK報文時,直接重傳對方還沒有收到的報文段,而沒必要等待重傳計時器超時。
    • 注:快重傳並不是取消重傳計時器,而是在某些狀況下,可更早地重傳丟失的報文段。
  • 快恢復

    • 當發送端收到連續三個冗餘ACK(即重複確認)時,先乘法減少,把慢開始門限ssthread減少爲出現擁塞時發送方cwnd的一半。
    • 不一樣之處:跳過了cwnd=1起始的慢開始過程,而是將cwnd的值設置爲慢開始門限ssthread改變後的值,而後開始執行擁塞避免算法(加法增大)
    • 跳過了cwnd=1起始的慢開始過程,所以稱爲快恢復。

綜述

  • 擁塞控制中,發送方發送窗口的大小 = min(接收端窗口rwnd, 擁塞窗口cwnd)
  • 慢開始、擁塞避免、快重傳、快恢復是同時應用在擁塞控制機制之中的
    • 當發送方檢測到超時:慢開始和擁塞避免;
    • 當發送方接受到冗餘ACK時:快重傳和快恢復。

END

相關文章
相關標籤/搜索