當乙個網路面對的負載超過了它的處理能力時,擁塞就會發生。internet也不例外。
理論上,通過使用一條從物理學中套用過來的法則:分組守恆法則,擁塞現象就可以得到控制。它的基本思想是,只有當乙個老的分組離開之後才允許向網路注入乙個新的分組。tcp企圖通過動態的維護視窗的大小來實現這個目標。
管理擁塞的第一步是檢測用色。在過去,檢測擁塞是非常困難的。由於丟失分組而引起的超時可能有兩種情況:(1)傳輸線路有雜訊;(2)在一台用色的路由器上分組被丟棄。要區分這兩種情形是很困難的。但是現在由於線路傳輸可靠性增加,我們認為internet上大部分的傳輸超時都是由於擁塞引起的。
internet的方案,首先意識到存在的兩個潛在的問題:網路容量和接收方的容量,然後單獨處理每乙個問題。為此,每個傳送方維護兩個視窗:第乙個是
接收方的准許視窗
,第二個是
擁塞視窗(congestion window)。每個視窗反映了傳送方可以傳遞的位元組數量。最終允許傳送的位元組數量是兩個視窗的最小值。
當乙個連線建立起來的時候,傳送方將擁塞視窗初始化為該連線上當前使用的最大資料段長度。然後,它傳送乙個最大的資料段。如果該資料段在定時器過期之前被確認,則它將擁塞視窗增加乙個資料段的位元組數,從而使擁塞視窗變成兩倍的最大資料段長度,然後傳送兩個資料段。如果這兩個資料段中的每乙個都被確認了,則擁塞視窗再增加兩個最大資料段長度。當擁塞視窗達到n個資料段的時候,如果有n個資料段都被及時確認的話,擁塞視窗增加這n個資料段對應的位元組數。實際上,每一批被確認的突發資料段都會使擁塞視窗加倍。
擁塞視窗一直呈指數增長,知道發生超時,或者到達接收方視窗的大小。這裡的思想是,如果一定大小的突發資料,比如說1024, 2048和4096位元組,都被正常地傳送過去,但是,8192位元組的突發資料卻發生超時,則擁塞視窗應該被設定為4096以避免擁塞。但是擁塞視窗保持在4096上,則無論接收方准許視窗有多大,傳送方都不會傳送超過4096位元組的突發資料。這個演算法被稱為慢啟動演算法(slow start),但是它實際上一點也不慢(jacobson, 1988)。它是指數量級的,所有的tcp實現都要求支援該演算法。
除了接收方准許視窗和擁塞視窗以外,它還使用了第三個引數: 乙個
閥值(threshold)
,初始時該引數為64kb。當一次超時發生的時候,閥值被設定為當前擁塞視窗的一半,而擁塞視窗被重置為乙個最大資料段。然後使用慢啟動演算法來決定網路的處理能力,不過當增長到閥值的時候便停止。從這個點開始,每一此成功的傳輸都會使擁塞視窗線性地增長(即每次突發資料僅增長乙個最大資料段),而不是成倍地增長。實際上,這個演算法是在猜測,將擁塞視窗減小一半可能是可以接受的,然後再從這點開始慢慢地往上增長。
如果不再發生超時的話,則擁塞視窗將繼續線性增長,知道達到接收方准許視窗的大小。在這個點上,它將停止增長,而且,只要不再發生超時並且接收方的視窗大小不改變大小,則擁塞視窗保持不變。順便提一下,如果乙個icmp source quench分組到來並且被傳遞給tcp,則這個時間將被當作超時一樣來對待。
TCP擁塞控制 慢啟動 擁塞避免 快重傳 快啟動
一般原理 發生擁塞控制的原因 資源 頻寬 交換節點的快取 處理機 的需求 可用資源。作用 擁塞控制就是為了防止過多的資料注入到網路中,這樣可以使網路中的路由器或者鏈路不至於過載。擁塞控制要做的都有乙個前提 就是網路能夠承受現有的網路負荷。對比流量控制 擁塞控制是乙個全域性的過程,涉及到所有的主機 路...
TCP擁塞控制 慢啟動 擁塞避免 快重傳 快啟動
擁塞控制作用 為了防止過多的資料注入到網路中,這樣可以使網路中的路由器或者鏈路不至於過載.擁塞視窗 傳送方為乙個動態變化的視窗叫做擁塞視窗,大小取決於網路的擁塞程度。傳送方讓自己的傳送視窗 擁塞視窗,但是傳送視窗不是一直等於擁塞視窗的,在網路狀況好的時候,擁塞視窗不斷的增加,傳送方的視窗自然也隨著增...
TCP擁塞控制 慢啟動 擁塞避免 快重傳 快啟動
一般原理 發生擁塞控制的原因 資源 頻寬 交換節點的快取 處理機 的需求 可用資源。作用 擁塞控制就是為了防止過多的資料注入到網路中,這樣可以使網路中的路由器或者鏈路不至於過載。擁塞控制要做的都有乙個前提 就是網路能夠承受現有的網路負荷。傳送方為乙個動態變化的視窗叫做擁塞視窗,擁塞視窗的大小取決於網...