當(dāng)前的隊(duì)列治理算法可以分為兩大類:被動(dòng)式隊(duì)列治理(Passive Queue Management , PQM)和主動(dòng)式隊(duì)列治理(Active Queue Management , AQM) 。
2.1 被動(dòng)式隊(duì)列治理及其缺陷
治理路由器隊(duì)列長度的傳統(tǒng)技術(shù)是對(duì)每個(gè)隊(duì)列設(shè)置一個(gè)最大值(以包為單位) , 然后接受包進(jìn)入隊(duì)列直到隊(duì)長達(dá)到最大值 , 接下來到達(dá)的包就要被拒絕進(jìn)入隊(duì)列直到隊(duì)長下降 。這種技術(shù)也就是所謂的"去尾"(drop-tail)算法 。雖然這個(gè)方法在當(dāng)前Internet上得到了廣泛的使用 , 但其存在幾個(gè)重大缺陷:
死鎖(lock-out)問題:在某些情況下 , "去尾"算法會(huì)讓某個(gè)流或者少數(shù)幾個(gè)流獨(dú)占隊(duì)列空間 , 阻止其他流的包進(jìn)入隊(duì)列 。這種"死鎖"現(xiàn)象通常是由于同步(synchronization)或其他定時(shí)作用的結(jié)果 。
滿隊(duì)列(full queues)問題:由于"去尾"算法只有在隊(duì)列滿時(shí)才會(huì)發(fā)出擁塞信號(hào) , 因此會(huì)使得隊(duì)列在相當(dāng)長時(shí)間內(nèi)處于布滿(或幾乎布滿)的狀態(tài) 。而隊(duì)列治理最重要的目標(biāo)之一就是降低穩(wěn)定狀態(tài)下隊(duì)列的長度 , 因?yàn)槎说蕉说难舆t主要就是由于在隊(duì)列中排隊(duì)等待造成的 。
全局同步(global synchronization)問題:由于Internet上數(shù)據(jù)的突發(fā)本質(zhì) , 到達(dá)路由器的包也往往是突發(fā)的 。假如隊(duì)列是滿的或者幾乎是滿的 , 就會(huì)導(dǎo)致在短時(shí)間內(nèi)連續(xù)大量地丟包 。而TCP流具有自適應(yīng)特性 , 源端發(fā)現(xiàn)包丟失就急劇地減小發(fā)送窗口 , 包到達(dá)速率就迅速下降 , 于是網(wǎng)絡(luò)擁塞得以解除 , 但源端得知網(wǎng)絡(luò)不再擁塞后又開始增加發(fā)送速度 , 最終又造成網(wǎng)絡(luò)擁塞 , 而且這種現(xiàn)象經(jīng)常會(huì)周而復(fù)始地進(jìn)行下去 , 從而在一段時(shí)間內(nèi)網(wǎng)絡(luò)處于鏈路利用率很低的用狀態(tài) , 降低了整體吞吐量 , 這就是所謂地"TCP全局同步"現(xiàn)象 。
除了"去尾"機(jī)制 , 另外兩種在隊(duì)列滿時(shí)進(jìn)行隊(duì)列治理的機(jī)制是"隨機(jī)丟棄"(random drop)和"從前丟棄"(drop front)機(jī)制 。當(dāng)隊(duì)列滿時(shí) , 前者從隊(duì)列中隨機(jī)找出一個(gè)包丟棄以讓新來的包進(jìn)入隊(duì)列;后者從隊(duì)列頭部丟包 , 以便讓新包進(jìn)入隊(duì)列 。這兩種方法雖然都解決了"死鎖"問題 , 但仍然沒有解決"滿隊(duì)列"問題 。由于這幾種方法都是在隊(duì)列滿了被迫丟包 , 因此稱為被動(dòng)式隊(duì)列治理 。
2.2 主動(dòng)式隊(duì)列治理及其優(yōu)點(diǎn)
在當(dāng)前的Internet上 , 丟包是對(duì)端節(jié)點(diǎn)進(jìn)行擁塞通知的重要機(jī)制 , 解決路由器"滿隊(duì)列"的方法便是在隊(duì)列布滿之前丟包 , 這樣端節(jié)點(diǎn)便能在隊(duì)列溢出前對(duì)擁塞作出反應(yīng) 。這種方法便稱為"主動(dòng)式隊(duì)列治理"(Active Queue Management) 。
AQM是一族基于FIFO調(diào)度策略的隊(duì)列治理機(jī)制 , 使得路由器能夠控制在什么時(shí)候丟多少包 , 以支持端到端的擁塞控制 。AQM有以下優(yōu)勢(shì):
減少了路由器中丟棄的包的數(shù)量:Internet中數(shù)據(jù)包的突發(fā)本質(zhì)是不可避免的 , AQM通過保持較小的平均隊(duì)列長度(average queue size) , 能提供更大的容量吸收突發(fā)數(shù)據(jù)包 , 從而大大減少了丟包數(shù) 。進(jìn)一步說 , 假如沒有AQM , 會(huì)有更多的包被丟棄 , 這主要是因?yàn)橐韵氯齻€(gè)原因:
1) 由于使用共享的隊(duì)列和PQM , 會(huì)不可避免地產(chǎn)生全局同步 , 導(dǎo)致很低的平均帶寬利用率 , 也即吞吐量很低 。
2) TCP從突發(fā)包的丟棄中恢復(fù)要比從單個(gè)包丟棄中恢復(fù)更復(fù)雜 。
3) 假如一個(gè)數(shù)據(jù)包在到達(dá)目的端之前被丟棄 , 則其在傳輸過程中所消耗的資源都被浪費(fèi) , 降低了網(wǎng)絡(luò)帶寬的利用率 。因此 , 不必要的包丟棄也就意味著帶寬的浪費(fèi) 。
對(duì)交互式服務(wù)提供了更低的延遲:AQM通過保持較小的平均隊(duì)列長度 , 隊(duì)列治理能夠減少包的排隊(duì)延遲(queueing delay) , 而排隊(duì)延遲是造成端到端延遲(end to end delay)的主要原因 。這對(duì)交互式應(yīng)用比如Web瀏覽、Telnet業(yè)務(wù)和視頻會(huì)議等非常重要 。
推薦閱讀
- 下 在CISCO路由器上配置NAT功能
- 4 Internet路由器主動(dòng)式隊(duì)列管理機(jī)制綜述
- 3 Internet路由器主動(dòng)式隊(duì)列管理機(jī)制綜述
- 關(guān)于路由器cpu利用率過高的解決
- 通過SSH實(shí)現(xiàn)Cisco路由器登錄
- 無線路由器的設(shè)置步驟 新的無線路由器如何設(shè)置
- 解決路由器水晶頭不亮的方法 路由器水晶頭不亮
- 看寬帶路由器的市場(chǎng)要點(diǎn)
- Cisco路由器上實(shí)現(xiàn)VoIP
- 過濾功能對(duì)路由器性能的影響
