一般原理:發生擁塞控制的原因:資源(頻寬、交換節點的快取、處理機)的需求》可用資源。
作用:擁塞控制就是為了防止過多的資料注入到網路中,這樣可以使網路中的路由器或者鏈路不至於過載。擁塞控制要做的都有乙個前提:就是網路能夠承受現有的網路負荷。
傳送方為乙個動態變化的視窗叫做擁塞視窗,擁塞視窗的大小取決於網路的擁塞程度。傳送方讓自己的傳送視窗=擁塞視窗,但是傳送視窗不是一直等於擁塞視窗的,在網路情況好的時候,擁塞視窗不斷的增加,傳送方的視窗自然也隨著增加,但是接受方的接受能力有限,在傳送方的視窗達到某個大小時就不在發生變化了。
傳送方如果知道網路擁塞了呢?傳送方傳送一些報文段時,如果傳送方沒有在時間間隔內收到接收方的確認報文段,則就可以人為網路出現了擁塞。
主機開發傳送資料報時,如果立即將大量的資料注入到網路中,可能會出現網路的擁塞。慢啟動演算法就是在主機剛開始傳送資料報的時候先探測一下網路的狀況,如果網路狀況良好,傳送方每傳送一次文段都能正確的接受確認報文段。那麼就從小到大的增加擁塞視窗的大小,即增加傳送視窗的大小。
例子:開始傳送方先設定cwnd(擁塞視窗)=1,傳送第乙個報文段m1,接收方接收到m1後,傳送方接收到接收方的確認後,把cwnd增加到2,接著傳送方傳送m2、m3,傳送方接收到接收方傳送的確認後cwnd增加到4,慢啟動演算法每經過乙個傳輸輪次(認為傳送方都成功接收接收方的確認),擁塞視窗cwnd就加倍。
為了防止cwnd增加過快而導致網路擁塞,所以需要設定乙個慢開始門限ssthresh狀態變數(我也不知道這個到底是什麼,就認為他是乙個擁塞控制的標識),它的用法:
當cwnd < ssthresh,使用慢啟動演算法,
當cwnd > ssthresh,使用擁塞控制演算法,停用慢啟動演算法。
當cwnd = ssthresh,這兩個演算法都可以。
擁塞避免的思路:是讓cwnd緩慢的增加而不是加倍的增長,每經歷過一次往返時間就使cwnd增加1,而不是加倍,這樣使cwnd緩慢的增長,比慢啟動要慢的多。
無論是慢啟動演算法還是擁塞避免演算法,只要判斷網路出現擁塞,就要把慢啟動開始門限(ssthresh)設定為設定為傳送視窗的一半(>=2),cwnd(擁塞視窗)設定為1,然後在使用慢啟動演算法,這樣做的目的能迅速的減少主機向網路中傳輸資料,使發生擁塞的路由器能夠把佇列中堆積的分組處理完畢。擁塞視窗是按照線性的規律增長,比慢啟動演算法擁塞視窗增長塊的多。
例項:1.tcp連線進行初始化的時候,cwnd=1,ssthresh=16。
2.在慢啟動演算法開始時,cwnd的初始值是1,每次傳送方收到乙個ack擁塞視窗就增加1,當ssthresh =cwnd時,就啟動擁塞控制演算法,擁塞視窗按照規律增長,
3.當cwnd=24時,網路出現超時,傳送方收不到確認ack,此時設定ssthresh=12,(二分之一cwnd),設定cwnd=1,然後開始慢啟動演算法,當cwnd=ssthresh=12,慢啟動演算法變為擁塞控制演算法,cwnd按照線性的速度進行增長。
乘法減小:無論在慢啟動階段還是在擁塞控制階段,只要網路出現超時,就是將cwnd置為1,ssthresh置為cwnd的一半,然後開始執行慢啟動演算法(cwnd加法增大:當網路頻發出現超時情況時,ssthresh就下降的很快,為了減少注入到網路中的分組數,而加法增大是指執行擁塞避免演算法後,是擁塞視窗緩慢的增大,以防止網路過早出現擁塞。
這兩個結合起來就是aimd演算法,是使用最廣泛的演算法。擁塞避免演算法不能夠完全的避免網路擁塞,通過控制擁塞視窗的大小只能使網路不易出現擁塞。
快重傳演算法要求首先接收方收到乙個失序的報文段後就立刻發出重複確認,而不要等待自己傳送資料時才進行捎帶確認。接收方成功的接受了傳送方傳送來的m1、m2並且分別給傳送了ack,現在接收方沒有收到m3,而接收到了m4,顯然接收方不能確認m4,因為m4是失序的報文段。如果根據可靠性傳輸原理接收方什麼都不做,但是按照快速重傳演算法,在收到m4、m5等報文段的時候,不斷重複的向傳送方傳送m2的ack,如果接收方一連收到三個重複的ack,那麼傳送方不必等待重傳計時器到期,由於傳送方盡早重傳未被確認的報文段。
當傳送發連續接收到三個確認時,就執行乘法減小演算法,把慢啟動開始門限(ssthresh)減半,但是接下來並不執行慢開始演算法。
此時不執行慢啟動演算法,而是把cwnd設定為ssthresh的一半, 然後執行擁塞避免演算法,使擁塞視窗緩慢增大。
TCP擁塞控制 慢啟動 擁塞避免 快重傳 快啟動
一般原理 發生擁塞控制的原因 資源 頻寬 交換節點的快取 處理機 的需求 可用資源。作用 擁塞控制就是為了防止過多的資料注入到網路中,這樣可以使網路中的路由器或者鏈路不至於過載。擁塞控制要做的都有乙個前提 就是網路能夠承受現有的網路負荷。對比流量控制 擁塞控制是乙個全域性的過程,涉及到所有的主機 路...
TCP擁塞控制 慢啟動 擁塞避免 快重傳 快啟動
擁塞控制作用 為了防止過多的資料注入到網路中,這樣可以使網路中的路由器或者鏈路不至於過載.擁塞視窗 傳送方為乙個動態變化的視窗叫做擁塞視窗,大小取決於網路的擁塞程度。傳送方讓自己的傳送視窗 擁塞視窗,但是傳送視窗不是一直等於擁塞視窗的,在網路狀況好的時候,擁塞視窗不斷的增加,傳送方的視窗自然也隨著增...
擁塞控制 慢啟動 快恢復 擁塞避免
1.慢開始和擁塞避免 擁塞視窗 傳送方維持乙個擁塞視窗 cwnd congestion window 的狀態變數。擁塞視窗的大小取決於網路的擁塞程度,並且動態地在變化。傳送方讓自己的傳送視窗等於擁塞。慢開始演算法 在剛剛開始傳送報文段時,先把擁塞視窗 cwnd 設定為1個最大報文段mss的數值,而後...