(二十八)運輸層--主動隊列管理AQM

主動隊列管理AQM

前一篇文章介紹了TCP的擁塞控制方法,但是並沒有和網絡層採取的策略聯繫起來。其實,它們之間有着密切的關係。

例如,假定一個路由器對某些分組的處理時間特別長,那麼這就可能使這些分組中的數據部分經過很長時間才能到達終點,結果引起發送方對這些報文段的重傳。根據前面所學習的內容,重傳會使TCP連接的發送端認爲在網絡中發生了擁塞。於是在TCP的發送端就採取了擁塞控制措施,但實際上網絡並沒有發生擁塞。

網絡層的策略對TCP擁塞控制影響最大的就是路由器的分組丟棄策略。在最簡單的情況下,路由器的隊列通常都是按照“先進先出”的規則處理到來的分組。由於隊列長度總是有限的,因此當隊列已滿時,以後再到達的所有分組將被丟棄,這就叫做尾部丟棄策略。

路由器的尾部丟棄往往會導致一連串分組的丟失,這就使發送方出現超時重傳,使TCP進入擁塞控制的慢開始狀態,結果使TCP連接的發送方突然把數據的發送速率降低到很小的數值。更爲嚴重的是,在網絡中通常有很多的TCP連接(它們有不同的源點和終點),這些連接中的報文段通常是複用在網絡層的IP數據報中傳送。在這種情況下,若發生了路由器中的尾部丟棄,就可能會同時影響到很多條TCP連接,結果使這許多TCP連接在同一時間突然都進入到慢開始狀態。這在TCP的術語中稱爲全局同步。全局同步使得全網的通信量突然下降了很多,而在網絡恢復正常後,其通信量又突然增大很多。

爲了避免發生網絡中的全局同步現象,在1998年提出了主動隊列管理AQM。所謂“主動”就是不要等到路由器的隊列長度已經到達最大值時才丟棄後面的分組,這樣太被動了。應當在隊列長度達到某個值得警惕的數值時(即當網絡有了某些擁塞徵兆時),就主動丟棄到達的分組。這樣就提醒發送方放慢發送速率,因而有可能使網絡擁塞的程度減輕,甚至不出現網絡擁塞。AQM可以有不同實現方法,其中曾流行多年的就是隨機早期檢測RED(Random Early Detection)。

實現RED時需要使路由器維持兩個參數,即隊列長度最小門限和最大門限。當每一個分組到達時,RED就按照規定的算法先計算當前的平均隊列長度。
(1)若平均隊列長度小於最小門限,則把新到達的分組放入隊列進行排隊
(2)若平均隊列長度超過最小門限,則把新到達的分組丟棄
(3)若平均隊列長度在最小門限和最大門限之間,則按照某一丟棄概率P把新到達的分組丟棄

由此可見,RED不是等到已經發生網絡擁塞後才把所有在隊列尾部的分組全部丟棄,而是在檢測到網絡擁塞的早期徵兆時(即路由器的平均隊列長度達到一定數值時),就以概率P丟棄個別的分組,讓擁塞控制只在個別的TCP連接上進行,因而避免發生全局性的擁塞控制。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章