計算機網絡原理(11)—— 擁塞控制原理和TCP擁塞控制

擁塞控制是重要的傳輸層服務,一定要記住!!

一、擁塞控制原理

1. 擁塞(Congestion)
  • 非正式定義:太多發送主機發送了太多數據或者發送速度太快,以至於網絡無法處理。
  • 表現:
    • 分組丟失(路由器緩存溢出)
    • 分組延遲過大(在路由器緩存中排隊)
  • 擁塞控制(接收方處理不了) V.s.流量控制(網絡無法處理)
2. 擁塞的代價
  • 擁塞時分組延遲太大
  • 達到最大吞吐量(throughput)
  • 對給定的輸出緩存,要做更多的工作(重傳),造成資源的浪費
  • 當多跳路由器情況下,分組被drop時,任何用於該分組的“上游”傳輸能力全都被浪費掉
3. 擁塞的控制
  • 端到端的擁塞控制
    • 網絡層不需要顯示地提供支持
    • 端系統通過觀察loss,delay等網絡行爲判斷是否發生擁塞
    • TCP採取這種方法
  • 網絡輔助的擁塞控制
    • 路由器向發送方顯示地反饋網絡擁塞信息
    • 簡單地擁塞指示(1bit):SNA,DECbit,TCP/IP ECN,ATM)
    • 指示發送方應該採取何種速率

二、TCP擁塞控制(***)

1. 基本原理

sender限制發送速率——設計變量CongWin(擁塞窗口)

  • 動態調整以改變發送速率

  • 反映所感知到的網絡擁塞

2. 如何感知網絡擁塞
  • Loss事件 = 超時(timeout)或3個重複ACK
  • 發生loss事件後,發送方降低速率

3. 如何合理地調整發送速率

① 加性增-乘性減:AIMD

  • 原理:逐漸增加發送速率,謹慎探測可用帶寬,直到發生loss

  • 方法:AIMD

    • Additive Increase:每個RTT將CongWin增大一個最大段長度MSS——擁塞避免
    • Multiplicative Decrease:發生loss後將CongWin減半

② 慢啓動:SS

  • TCP連接建立時,CongWin = 1MSS,可用帶寬可能遠遠高於初始速率:希望快速增長。

  • 原理:當連接開始時,指數性增長

指數型增長

  • 每個RTT將CongWin翻倍

  • 收到每個ACK進行操作

  • 初始速率很慢,但是快速攀升

4. 指數性增長與線性增長切換

變量:Threshold(閾值)

  • 當Loss事件發生時,Threshold被設爲Loss事件前CongWin值的1/2
Loss事件的處理
  • 3個重複ACKs(網絡還能傳輸一些段):先指數,再線性,遇到擁塞時減半,再線性
    • CongWin切到一半
    • 然後線性增長
  • Timeout事件(擁塞更嚴重):先指數,再線性,遇到擁塞時變爲1,再指數
    • CongWin直接設爲1個MSS
    • 然後指數增長
    • 達到threshold後,再線性增長

三、TCP性能分析

1. TCP throughput:吞吐率
  • 給定擁塞窗口大小和RTT,TCP的平均吞吐率是多少?
  • 忽略掉慢啓動Slow start
  • 假定發生超時是CongWin的大小爲W,吞吐率是W/RTT
  • 超時後,CongWin=W/2,吞吐率是W/2RTT
  • 平均吞吐率爲:0.75W/RTT
2. TCP的公平性

公平性與UDP

  • 多媒體應用通常不使用TCP,以免被擁塞控制機制限制速率
  • 使用UDP:以恆的速率發送,能夠容忍丟失
  • 產生了不公平

公平性與併發TCP連接

  • 某些應用會打開多個併發連接
  • Web瀏覽器
  • 產生公平性問題
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章