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