擁塞控制
概述
擁塞: 當一個網絡出現太多分組,導致網絡性能急劇下降
出現資源擁塞的條件:對資源需求的總和 > 可用資源
擁塞控制:采取措施,防止網絡出現擁塞.
有人想到了流量控制,他們有什么區別呢?
- 擁塞控制是一個全局性問題
- 所有主機和路由器
- 存儲-轉發處理過程
- 所有可能會削弱子網承載容量的其他因素
- 流量控制只涉及發送方和接收方之間的點到點流量
- 限制發送速率
- 接收方 向 發送方 發送反饋信息
- 滑動窗口
思路
Open loop(開環方法) 試圖采用良好的設計來解決問題,本質是從一開始就保證不會發生擁塞問題。 一旦網絡運行起來,就不需要中途做修正。
Closed loop(閉環方法)
基於返回環路:
Explicit feedback (顯式反饋)
Implicit feedback(隱式反饋)
方法
- Open loop(開環方法)
- Preventative(預防性的方法)
- Closed loop(閉環方法)
- Network Provisioning(網絡供給):網絡升級/改造
- Traffic-aware routing(流量感知路由):在計算路由的時候,把流量因素考慮進去。
- 鏈路權值會根據網絡負載動態調整, 可以將網絡流量引導到不同的鏈路上, 均衡網絡負載。
- 繞開熱門的區域,疏散流量
- 可能會出現搖擺不定的問題
- Internet路由協議一般不考慮流量負載因素
- Admission Control(准入控制):降低負載,在虛電路中控制新連接的建立。
- 用於虛電路網絡
- 一旦出現擁塞,則不再創建任何虛電路.
- 當虛電路建立的時候,在主機和子網之間進行協商以達成一致的約定
- 協商服務質量
- 預留資源
- 繞開有問題的區域建立新的虛電路
- Traffic throtting(流量調整)
- 動態調整發送速度
- 當擁塞迫在眉睫的時候,它必須告訴發送方緊急剎車放慢速度
- 監視系統:預警擁塞 將監視的信息反饋到能夠采取緩解行動的地方
- 依據什么來判斷是否可能出現擁塞?
- 鏈路平均利用率 路由器內緩存排隊的數據包 丟棄的數據包數量
- EWMA模型:計算指數加權平均數
- The warning bit(設置警告位)
- 路由器 監視平均隊列長度 當路由器處於警告狀態時,在轉發分組的頭部設置二進制警告位
- 源主機 目標端將警告位送回源主機 源主機監視設置了包含警告位的分組比例 超過閾值,源主機減少發送
- Choke packet(抑制分組)
- 當路由器處於警告狀態時,向源主機發送抑制分組
- 源主機將減慢到相同目標端的分組傳輸速率 調整策略參數,按一定比例(比如50% )減少發向特定目的地的流量 在一段時間間隔內,忽略所有指向同一目標的抑制分組
- 若在監聽周期內沒有收到抑制包,則增加負載
- 流量增減策略是:減少時,按比例減少,保證快速解除擁塞;增加時,以常量增加,防止很快導致擁塞。
- 發生擁塞時,路由器選擇哪個分組,向該分組源端發送抑制分組?
- 隨機選擇:發送方的速度越快,它的數據包排隊在路由器隊列中的數目就越多。
- Hop-by-hop choke packet(逐跳抑制分組)
- 抑制分組:只會影響到源主機,響應太慢
- 逐跳抑制分組:讓經過的路由器減慢分組流
- 抑制包對它經過的每個路由器都起作用 能夠迅速緩解發生擁塞處的擁塞 上游路由器要求有更多的緩沖區
- 調整系統的運行以解決問題
- Load shedding(負載丟棄)
- 擁塞的時候丟棄一些分組來消除擁塞
- 路由器丟棄哪些分組呢?
- 葡萄酒策略 老的分組比新的分組更有價值 例如,文件傳輸
- 牛奶策略 新的分組比老的分組更有價值 例如,實時流媒體、直播視頻
- 優先級:源主機標明哪些分組更重要
- 當一開始檢測到可能出現擁塞的時候就采取措施,比等到擁塞嚴重影響工作之后再采取措施更有效 在實際耗盡所有的緩沖區空間之前就開始丟棄分組 在有些傳輸協議(包括TCP)中,針對分組丟失的響應措施是源主機減慢傳輸速度,這樣可以減少擁塞