TCP的擁塞控制詳解

2021-07-14 20:58:26 字數 2336 閱讀 7506

在某段時間,若對網路中某資源的需求超過了該資源所能提供的可用部分,網路的效能就要變壞——產生擁塞(congestion)。

出現資源擁塞的條件:

對資源需求的總和 > 可用資源

若網路中有許多資源同時產生擁塞,網路的效能就要明顯變壞,整個網路的吞吐量將隨輸入負荷的增大而下降。

擁塞控制所起的作用:

傳送方維持乙個叫做擁塞視窗 cwnd (congestion window)的狀態變數。擁塞視窗的大小取決於網路的擁塞程度,並且動態地在變化。傳送方讓自己的傳送視窗等於擁塞視窗。如再考慮到接收方的接收能力,則傳送視窗還可能小於擁塞視窗。

傳送方控制擁塞視窗的原則是:只要網路沒有出現擁塞,擁塞視窗就再增大一些,以便把更多的分組傳送出去。但只要網路出現擁塞,擁塞視窗就減小一些,以減少注入到網路中的分組數。

慢開始演算法的原理

傳輸輪次(transmission round)

例如,擁塞視窗 cwnd = 4,這時的往返時間 rtt 就是傳送方連續傳送 4 個報文段,並收到這 4 個報文段的確認,總共經歷的時間。

設定慢開始門限狀態變數ssthresh

慢開始門限 ssthresh 的用法如下:

當網路出現擁塞時

慢開始和擁塞避免演算法的實現舉例

在執行慢開始演算法時,擁塞視窗 cwnd 的初始值為 1,傳送第乙個報文段 m0。

傳送端每收到乙個確認 ,就把 cwnd 加 1。於是傳送端可以接著傳送 m1 和 m2 兩個報文段。

接收端共發回兩個確認。傳送端每收到乙個對新報文段的確認,就把傳送端的 cwnd 加 1。現在 cwnd 從 2 增大到 4,並可接著傳送後面的 4 個報文段。

傳送端每收到乙個對新報文段的確認,就把傳送端的擁塞視窗加 1,因此擁塞視窗 cwnd 隨著傳輸輪次按指數規律增長。

當擁塞視窗 cwnd 增長到慢開始門限值 ssthresh 時(即當 cwnd = 16 時),就改為執行擁塞避免演算法,擁塞視窗按線性規律增長。

假定擁塞視窗的數值增長到 24 時,網路出現超時,表明網路擁塞了。

更新後的 ssthresh 值變為 12(即傳送視窗數值 24 的一半),擁塞視窗再重新設定為 1,並執行慢開始演算法。

當 cwnd = 12 時改為執行擁塞避免演算法,擁塞視窗按按線性規律增長,每經過乙個往返時延就增加乙個 mss 的大小。

乘法減小(multiplicative decrease)

加法增大(additive increase)

「加法增大」是指執行擁塞避免演算法後,在收到對所有報文段的確認後(即經過乙個往返時間),就把擁塞視窗 cwnd增加乙個 mss 大小,使擁塞視窗緩慢增大,以防止網路過早出現擁塞。

快重傳演算法

快恢復演算法

傳送視窗的上限值  min [rwnd, cwnd]

TCP的擁塞控制(詳解)

在某段時間,若對網路中某一資源的需求超過了該資源所能提供的可用部分,網路效能就要變壞,這種情況就叫做網路擁塞。在計算機網路中數字鏈路容量 即頻寬 交換結點中的快取和處理機等,都是網路的資源。若出現擁塞而不進行控制,整個網路的吞吐量將隨輸入負荷的增大而下降。當輸入的負載到達一定程度 吞吐量不會增加,即...

TCP擁塞控制

擁塞控制就是防止過多的資料注入到網路中,這樣可以使網路中的路由器或鏈路不致過載,擁塞控制要做的都有個前提,就是網路能夠承受現有的網路負荷。擁塞控制是個全域性性的過程。幾種擁塞控制方法 慢開始 擁塞避免 快重傳 快恢復 1.慢開始和擁塞避免 傳送方維持乙個叫做擁塞視窗的狀態變數,擁塞視窗取決於網路的擁...

TCP擁塞控制

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