基于主動(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ì)列。
圖1所示是對(duì)兩種算法的仿真曲線圖。由結(jié)果可以得出:隨著流量的增加,兩種算法都產(chǎn)生了不同程度上的延遲,且在高負(fù)載的情況下,去尾算法由于全局同步而使隊(duì)列震蕩加劇[3-4]。
500)this.style.width=500;" border="0" />
2 設(shè)計(jì)方案
RED算法及很多的改進(jìn)算法,都不能夠?qū)Σ煌琎os要求的服務(wù)提供有區(qū)別的服務(wù),這樣就不能很好地保證高服務(wù)質(zhì)量要求的服務(wù)。本文中,提出了一種可以實(shí)現(xiàn)區(qū)分服務(wù)的算法DS-RED(Different Serve RED),在緩存中設(shè)置一個(gè)動(dòng)態(tài)門限來(lái)控制包的丟失率,使得緩存可以動(dòng)態(tài)地分配給各個(gè)數(shù)據(jù)流,可以根據(jù)各個(gè)數(shù)據(jù)流的不同Qos要求,動(dòng)態(tài)地調(diào)整網(wǎng)絡(luò)資源,從而提高網(wǎng)絡(luò)網(wǎng)絡(luò)資源的利用率??梢酝ㄟ^(guò)設(shè)置一個(gè)門限值,然后根據(jù)高低優(yōu)先級(jí)包的丟失情況來(lái)動(dòng)態(tài)調(diào)整這個(gè)門限值,使得不同的Qos要求的服務(wù)得到有區(qū)別的對(duì)待,并且高低優(yōu)先級(jí)包丟棄達(dá)到一個(gè)均衡。使網(wǎng)絡(luò)資源得到更加充分的利用。
2.1 算法設(shè)計(jì)目標(biāo)
(1)擁塞避免與擁塞控制。實(shí)驗(yàn)表明要維持網(wǎng)絡(luò)中的高吞吐量和低延遲,就必須進(jìn)行擁塞避免;作為擁塞避免失敗的補(bǔ)救措施,必須在路由器上實(shí)施擁塞控制,以避免網(wǎng)絡(luò)中擁塞崩潰的發(fā)生;
(2)實(shí)現(xiàn)各數(shù)據(jù)流區(qū)分服務(wù)。在緩存中設(shè)置一個(gè)動(dòng)態(tài)門限來(lái)控制包的丟失率,使得緩存可以動(dòng)態(tài)地分配給各個(gè)數(shù)據(jù)流,可以根據(jù)各個(gè)數(shù)據(jù)流的不同Qos要求,動(dòng)態(tài)調(diào)整網(wǎng)絡(luò)資源,從而提高網(wǎng)絡(luò)資源的利用率,它可以通過(guò)設(shè)置一個(gè)門限值,然后根據(jù)高低優(yōu)先級(jí)包的丟失情況來(lái)動(dòng)態(tài)調(diào)整這個(gè)門限值,使得不同的Qos要求的服務(wù)得到有區(qū)別的對(duì)待,并且高低優(yōu)先級(jí)包丟棄達(dá)到均衡。
2.2 算法思想
為高、低優(yōu)先級(jí)數(shù)據(jù)流分別設(shè)置丟失計(jì)數(shù)器ch和cl,每個(gè)計(jì)數(shù)器指定一個(gè)丟失增量,例如為kh、kl。當(dāng)ch每增加kh將會(huì)引起門限減少一定值;而cl每增加kl將會(huì)引起門限減少一定值。這樣如果太多高優(yōu)先級(jí)數(shù)據(jù)包丟失,增大低優(yōu)先級(jí)數(shù)據(jù)包丟棄概率的門限值就會(huì)減少,以減少低優(yōu)先級(jí)數(shù)據(jù)包的緩存空間;反過(guò)來(lái),如果太多低優(yōu)先級(jí)數(shù)據(jù)包丟失,門限就會(huì)增加。使得高低優(yōu)先級(jí)包丟棄達(dá)到一個(gè)均衡。使網(wǎng)絡(luò)資源得到更加充分地利用。
3 與RED算法的性能比較
為了比較RED和新算法的性能,進(jìn)行網(wǎng)絡(luò)仿真,仿真使用的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)如圖2所示。
500)this.style.width=500;" border="0" />
S1和S2為數(shù)據(jù)發(fā)送源端,其中假定S1發(fā)送高優(yōu)先級(jí)數(shù)據(jù)流,S2發(fā)送低優(yōu)先級(jí)數(shù)據(jù)流,D1和D2為接收端。瓶頸鏈路位于路由器1和2之間,其鏈路容量為64 kb/s,其余鏈路的容量為10 Mb/s,各主動(dòng)隊(duì)列管理算法設(shè)置在路由器1上。仿真時(shí)間為20 s,路由器的緩沖區(qū)大小為50個(gè)數(shù)據(jù)包。以上介紹的各種算法的參數(shù)設(shè)置如下:RED基本參數(shù)設(shè)置為min_th=5, max_th=15, max_p=0.02。對(duì)于本文提出的方案DS-RED 參數(shù)設(shè)置為 min_th=5, max_th=15, max_p=0.2。下面分別采用恒定速率和文件傳輸FTP的模型對(duì)以上的仿真模型進(jìn)行測(cè)試[5-6],仿真結(jié)果分別如圖3和圖4所示。
500)this.style.width=500;" border="0" />
500)this.style.width=500;" border="0" />
由仿真結(jié)果可以看到,在恒定速率下,兩種算法的丟棄概率是差不多的,但是在FTP文件傳輸?shù)那闆r下,使用改進(jìn)后的算法高優(yōu)先級(jí)數(shù)據(jù)包的丟棄概率明顯降低,而低優(yōu)先級(jí)數(shù)據(jù)包丟棄概率相應(yīng)升高。而改進(jìn)之前的高優(yōu)先級(jí)數(shù)據(jù)包的丟棄概率高于低優(yōu)先級(jí)的丟棄概率,改進(jìn)之后高優(yōu)先級(jí)數(shù)據(jù)包的概率明顯低于丟優(yōu)先級(jí)的數(shù)據(jù)包的丟棄概率,而且改進(jìn)后的算法在時(shí)間延遲方面也有了明顯改善。
如何減少網(wǎng)絡(luò)中的丟包率,提高鏈路的利用率,降低傳輸時(shí)延,防止網(wǎng)絡(luò)崩潰對(duì)網(wǎng)絡(luò)研究來(lái)說(shuō)是很重要的。當(dāng)數(shù)據(jù)包在到達(dá)接點(diǎn)前就被丟掉或者是鏈路長(zhǎng)時(shí)間處于空閑狀態(tài)或者大量不必要的數(shù)據(jù)包重傳都會(huì)造成網(wǎng)絡(luò)資源的大量浪費(fèi)。所以網(wǎng)絡(luò)的擁塞控制的研究也就變得至關(guān)重要。
通過(guò)MATLAB仿真,將該方法與RED算法進(jìn)行性能比較,結(jié)果表明,改進(jìn)后的擁塞控制機(jī)制能夠提供區(qū)分服務(wù),更好地滿足Qos要求。