基于主動(dòng)隊列管理的擁塞控制機制研究
目前,互聯(lián)網(wǎng)上已經(jīng)廣泛使用TCP滑動(dòng)窗口進(jìn)行端到端的擁塞控制。但是,隨著(zhù)網(wǎng)絡(luò )用戶(hù)的增加和所承載業(yè)務(wù)流的多元化,端到端擁塞控制正面臨著(zhù)嚴峻的挑戰。而路由器是互聯(lián)網(wǎng)的核心實(shí)體,也是網(wǎng)絡(luò )擁塞狀態(tài)最直接的感受者,因而充分發(fā)揮路由器在擁塞控制中的作用也是解決擁塞控制問(wèn)題的有效思路。而且路由器可能更及時(shí),甚至能夠提前了解網(wǎng)絡(luò )的狀態(tài),并依此實(shí)施有效的資源管理策略,保證網(wǎng)絡(luò )能有效地避免擁塞或盡早從嚴重的擁塞狀態(tài)中恢復過(guò)來(lái)。
本文研究的重點(diǎn)是路由器擁塞控制中的隊列管理,隊列管理通過(guò)選擇何時(shí)丟棄何種業(yè)務(wù)流分組來(lái)控制隊列長(cháng)度。
1 主動(dòng)隊列管理
1.1 Tail Drop
路由器中最常用的隊列管理策略是“尾丟棄”(Tail Drop),從擁塞控制的角度分析,它是一種擁塞恢復機制,也是一種被動(dòng)隊列管理。但它有3個(gè)嚴重缺陷:持續的滿(mǎn)隊列狀態(tài);業(yè)務(wù)流對緩存的死鎖;業(yè)務(wù)流的全局同步。針對這些問(wèn)題,提出用“首丟棄”和“隨機丟棄”對死鎖和全局同步比較有效,但沒(méi)有解決持續的滿(mǎn)隊列問(wèn)題。近年來(lái)有學(xué)者提出主動(dòng)隊列管理AQM(Active Queue Management)[1-2]讓路由器在擁塞發(fā)生前就采取一些預防措施,使得滿(mǎn)隊列問(wèn)題比較有效地得到解決。
AQM策略試圖通過(guò)估算在某點(diǎn)的擁塞并且在緩沖區滿(mǎn)之前通過(guò)丟棄數據包來(lái)進(jìn)行標記。相應的擁塞控制策略能夠減小它的傳輸速率。這樣可以避免更加嚴重的擁塞,且試圖降低包的丟失率,保持較低的平均隊列長(cháng)度。一個(gè)AQM算法由兩部分組成:判斷擁塞的發(fā)生和決定該丟棄哪些包。所以它的性能依賴(lài)于是積極的還是保守的判斷擁塞的發(fā)生,怎樣根據判斷結果主動(dòng)地丟棄數據包。
1.2 RED
去尾算法考慮的是擁塞發(fā)生后如何恢復,如果在擁塞發(fā)生前就采取措施,則可以解決滿(mǎn)隊列問(wèn)題。AQM正是設計用來(lái)克服網(wǎng)絡(luò )中的Tail Drop隊列的缺點(diǎn)。而RED是最早提出的一種AQM算法。
RED算法是基于擁塞避免的思路,不是等緩存滿(mǎn)后再丟棄到達的分組,而是利用標記概率事先丟掉部分分組來(lái)預防擁塞的發(fā)生。同時(shí),RED 算法不是采用源抑制策略,立刻把反饋信息返回給發(fā)送端,而是通過(guò)設置標志位提示接收端,再由接收端傳遞給發(fā)送端;而且,RED通過(guò)平均隊列而非即時(shí)隊列來(lái)調整分組的丟失率,以盡可能地吸收部分短暫的突發(fā)流。在隊列頻繁接近于滿(mǎn)緩存時(shí), RED的丟包率明顯小于丟尾隊列。
評論