1. 程式人生 > >網路中常用的佇列管理方法比較

網路中常用的佇列管理方法比較

        佇列管理屬於鏈路IP層的擁塞控制策略,主要是在路由器中採用排隊演算法和資料包丟棄策略。排隊演算法通過決定哪些包可以傳輸來分配頻寬,而丟棄策略通過決定哪些包被丟棄來分配快取。

1、先進先出(FIFO,First In First Out)

先進先出屬於典型的被動佇列管理的方法,它排程包的方法是:先到達路由器的分組先被傳輸,其它分組採用預設的排隊方式。然而,路由器的快取總是有限的,如果分組到達時快取已滿,那麼路由器就不得不丟棄該分組。由於FIFO總是丟棄隊尾的分組,所以又稱它為“去尾”(drop-tail)演算法。FIFO和“去尾”是最簡單的分組排程和丟棄策略,兩者有時可被視為一體,簡單稱為FIFO排隊。
FIFO排隊的演算法簡單,實施容易,是目前Internet使用最為廣泛的一種方式。FIFO無法“識別”面向連線的連續TCP資料流,當存在佔用大量頻寬的對TCP不友好的流時,網路可能會持續擁塞,TCP流分享不到應有的頻寬。所以該方案對突發性的、存在包丟失的連線。

2、隨機提前檢測(RED,Random Early Detection)

隨機提前檢測屬於典型的主動式佇列管理的方式,它排程包的方法是:在路由器的快取佔滿之前就按一定的概率丟棄分組,這樣可以及早通知傳送端減小擁塞視窗,減少進入網路的資料量,使路由器以後不必要丟棄更多的分組。
RED演算法可以看成由兩個獨立的演算法組成:1、計算平均隊長(這個平均是指對時間的平均,採用該演算法的路由器在每個介面上只維持一個佇列)的演算法; 2、計算分組丟失概率的演算法。演算法1決定了路由器所能夠允許的突發分組的程度。演算法2決定了路由器在當前負荷狀態下丟棄分組的頻度,其目的是使路由器丟棄分組的時間間隔儘量均勻,以避免對突發性流的不公平性,也為了避免產生全域性同步,同時還要能夠足夠頻繁地丟棄分組以控制平均佇列的長度。使用平均隊長比使用隊長的瞬時值更能準確的觀測到網路的擁塞情況。