路由器中的資料包排隊和丟棄
路由器是控制網路資料流的關鍵網路裝置。路由器具有一個或多個輸入和輸出介面,透過這些介面接收和傳送資料包。
由於路由器的記憶體有限,它可能無法處理新到達的資料包。當資料包到達的速度超過資料包離開路由器記憶體的速度時,就會發生這種情況。在這種情況下,新的資料包會被忽略,而舊的資料包會被丟棄。為了規範資料包的儲存或丟棄方式,路由器必須在其資源分配演算法中實現某種排隊規則。
佇列擁塞和排隊規則
由於路由器佇列可用的緩衝記憶體有限,因此容易發生擁塞。當輸入流量的速度超過輸出鏈路上可以傳輸的數量時,就會發生擁塞。以下是這種情況的一些可能原因:
傳入流量速率超過傳出流量速率。
來自所有輸入介面的組合流量超過了整個輸出容量。
路由器處理器無法處理轉發表的大小以確定路由路徑。
佇列擁塞和排隊規則
在發生這種擁塞的情況下,路由器可能會遵循不同的規則來選擇保留哪些資料包以及丟棄哪些資料包,以控制路由器記憶體對資料包的分配。因此,路由器具有以下關鍵的排隊規則:
先進先出排隊 (FIFO)
大多數路由器使用 FIFO 作為其預設排隊方法。在伺服器上,這通常需要很少或不需要設定。在 FIFO 中,所有資料包都按到達路由器的順序進行服務。當記憶體飽和時,嘗試進入路由器的新資料包會被丟棄(尾部丟棄)。
但是,這種系統不適合即時應用程式,尤其是在擁塞區域。在擁塞期間,即時應用程式(例如 VoIP)會持續傳送資料包,可能會出現飢餓現象,導致所有資料包丟失。
排隊優先順序 (PQ)
在優先順序排隊中,路由器根據某種優先順序標準將記憶體劃分為多個佇列,而不是使用單個佇列。然後,每個佇列都以 FIFO 方式處理,並依次迴圈遍歷每個佇列。根據優先順序,佇列被標記為高、中或低。高佇列資料包始終在中佇列資料包之前處理。
在優先順序排隊中,路由器根據某種優先順序標準將記憶體劃分為多個佇列,而不是使用單個佇列。然後,每個佇列都以 FIFO 方式處理,並依次迴圈遍歷每個佇列。根據優先順序,佇列被標記為高、中或低。高佇列中的資料包始終優先處理。
加權公平排隊 (WFQ)
WFQ(加權公平排隊)根據流量流生成佇列,並根據優先順序向它們分配頻寬。子佇列的頻寬是動態分配的。假設有三個佇列,每個佇列的頻寬百分比分別為 20%、30% 和 50%,同時它們都處於活動狀態。