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