潘成勝,張 松,趙 晨,石懷峰,2
(1.南京信息工程大學電子與信息工程學院,南京 210044;2.南京理工大學自動化學院,南京 210094)
近年來,網(wǎng)絡智能化已成為網(wǎng)絡創(chuàng)新式發(fā)展和變革的突出特征,與傳統(tǒng)網(wǎng)絡不同,智能網(wǎng)絡中存在著大量實時多媒體業(yè)務,如網(wǎng)頁瀏覽、語音聊天、視頻會議等,這些業(yè)務產生了巨大、多樣的數(shù)據(jù)流量[1-4]。網(wǎng)絡轉發(fā)設備的緩沖區(qū)在網(wǎng)絡處于流量負荷大的情況下易被填滿,產生網(wǎng)絡擁塞問題[5-7]?;谠炊说膿砣刂剖蔷徑饩W(wǎng)絡擁塞的有效辦法,“端到端原則”提供的可擴展性在客觀上促進了網(wǎng)絡的快速發(fā)展,但基于源端的擁塞控制具有一定的滯后性,網(wǎng)絡在檢測到擁塞和擁塞發(fā)生的時間間隔內會一直處于擁塞狀態(tài)[8]。因此,為了保障服務質量quality of service(QoS)模型有效地運行,不僅需要在源端實現(xiàn)擁塞控制,網(wǎng)絡中間節(jié)點也需要發(fā)揮作用[9]。
隊列管理是指網(wǎng)絡出現(xiàn)擁塞時路由節(jié)點通過丟包來調節(jié)緩沖區(qū)的占有率,不同的隊列管理機制直接影響到網(wǎng)絡節(jié)點的擁塞控制能力和網(wǎng)絡的QoS??偟膩碚f,隊列管理機制可以分為被動隊列管理機制與主動隊列管理機制兩大類,與被動隊列管理機制相比,主動隊列管理機制能夠使發(fā)送節(jié)點在中間節(jié)點緩存溢出前作出反應,有效減少和避免擁塞的發(fā)生。其中,RED(random early detection)算法作為主動隊列管理機制中的代表性算法在擁塞控制方面起到了關鍵作用[10],該方法使路由節(jié)點緩沖區(qū)的隊列在沒有達到極值前就開始丟包,并向源端發(fā)送擁塞反饋信息,以此來緩解網(wǎng)絡擁塞,但它存在參數(shù)配置敏感和全局同步現(xiàn)象等缺陷。為了保證低時延和高吞吐量,F(xiàn)loyd 等在RED 算法的基礎上又提出了ARED(adaptive RED)算法[11],ARED 算法針對RED 算法存在的參數(shù)敏感性問題做出了一定的改善,但它自身又引入調節(jié)參數(shù)α 和β,由此產生了新的參數(shù)設置問題。為了充分利用路由器的緩沖區(qū),Patel 提出了URED(upper threshold RED)算法[12],在RED 算法的基礎上增加了一個更大閾值(upper threshold),這在一定程度上提高了平均隊列長度的穩(wěn)定性,但有時也存在時延增加和鏈路吞吐量下降等問題。
本文提出SP-ARED 算法,丟包策略方面,利用S 型分布函數(shù)對ARED 算法進行優(yōu)化,在ARED 算法基礎上使用平方函數(shù)和冪函數(shù)相結合的方式來優(yōu)化丟包策略。閾值方面,結合URED 算法的思想,提出增加一個新的閾值上限SPth,充分利用路由器的緩沖區(qū),以此來緩解網(wǎng)絡中由流量突發(fā)而導致的網(wǎng)絡擁塞問題。NS2 的仿真結果表明[13-15],SP-ARED算法提升了平均隊列長度穩(wěn)定性和吞吐量,并降低了丟包率和時延抖動。
相比被動隊列管理算法DropTail,RED 算法具有吞吐量較高、時延較低和丟包率較小的優(yōu)點,該方法通過監(jiān)控緩沖區(qū)的平均隊列長度來判斷網(wǎng)絡的擁塞情況。路由器接收新到達的數(shù)據(jù)包時要先計算平均隊列長度Lav,令THmin和THmax分別為平均隊列長度的最小和最大閾值。若Lav<THmin,隊列的丟棄概率為0;若THmin≤Lav≤THmax,路由器需根據(jù)求得的動態(tài)丟包概率Pb來對到達的數(shù)據(jù)包進行丟棄;若Lav>THmax,丟棄概率則為1,下一刻到達的數(shù)據(jù)包將會被全部丟棄。Lav的計算方式為:
其中,當前時刻的Lav是瞬時隊列長度q(t+1)與上一時刻的Lav進行加權計算而來,權值Wq是RED根據(jù)它對數(shù)據(jù)流輸入的敏感性來設置的,范圍為[0,1]。
上述提到的動態(tài)丟包概率Pb如下:
Pb和最終的數(shù)據(jù)包丟棄概率Pa關系為:
式中,count 為上一刻丟包后進入緩沖區(qū)的數(shù)據(jù)包個數(shù),這也能夠看出Pa與平均隊列長度和進入緩沖區(qū)的數(shù)據(jù)包數(shù)量有關。
RED 算法參數(shù)設置相對固定的缺點使得它很難適應動態(tài)變化的網(wǎng)絡環(huán)境,為了減小RED 算法對參數(shù)設置的敏感性,研究人員又提出了ARED 和TRED[16]等改進算法。其中最具代表性的就是ARED算法,ARED 算法是一種自適應算法,算法的核心思想是根據(jù)當前的平均隊列長度來判斷網(wǎng)絡擁塞狀態(tài),并動態(tài)地調整丟棄概率。動態(tài)調整maxp的主要代碼如圖1 所示。
圖1 ARED 動態(tài)調整代碼Fig.1 Dynamic adjustment code of ARED
如果緩沖區(qū)當前的平均隊列長度在THmin附近,說明數(shù)據(jù)包被過多地丟棄,丟棄策略過于激進,應該減小maxp;反之,如果緩沖區(qū)當前的平均隊列長度在THmax附近,說明數(shù)據(jù)包被丟棄得過少,丟棄策略過于保守,應該增大maxp[17]。代碼中,interval為丟包概率改變的時間間隔,一般設置為0.5 s;targetqueue 為理想的平均隊列長度區(qū)間,范圍為[THmin+0.4×(THmax-THmin),THmin+0.6×(THmax-THmin)];α 與β 分別為maxp的加性增大和乘性減小因子,值為α=min(0.01,maxp/4),β=0.9[18]。
URED 算法通過引入新的閾值上限Uth來更好地利用緩沖區(qū),在平均隊列長度處于[THmax,Uth]范圍時,丟棄概率由RED 算法中的直接變?yōu)? 轉變成線性增大到1。Uth的引入增強了節(jié)點在流量突發(fā)時的處理能力,對于網(wǎng)絡存在大量突發(fā)負載時,URED算法在某些方面的表現(xiàn)比ARED 算法更好。
與RED 算法相比,ARED 算法通過引入α 與β來提高maxp的動態(tài)調整能力,但α 與β 的引入也使得ARED 仍然存在著參數(shù)選取的問題。URED 算法提高了路由器緩沖區(qū)的利用率,但其在最小和最大閾值之間的丟包策略仍有進一步優(yōu)化的空間。針對上述問題,本文在ARED 和URED 算法基礎上提出改進算法SP-ARED,減小算法中固定參數(shù)值設定所帶來的影響,在修改丟棄概率函數(shù)的同時保證平均隊列長度的穩(wěn)定性。
3 種算法的丟棄概率如圖2 所示。平均隊列長度在[THmin,THmax]區(qū)間時,采用類似于S 型的分布函數(shù)對ARED 算法的丟棄函數(shù)做非線性處理,目的是將算法的線性函數(shù)變得更平滑。具體實施過程中,采用分段函數(shù)的形式對平方函數(shù)(the square function)和冪函數(shù)(power function)進行有效組合。
圖2 SP-ARED 丟棄概率Fig.2 Discard probability of SP-ARED
圖3 SP-ARED 算法偽代碼Fig.3 Pseudocode of SP-ARED algorithm
SP-ARED 算法中Pb的計算公式為:
智能網(wǎng)絡規(guī)模大,網(wǎng)絡中業(yè)務類型繁多且流量具有突發(fā)性,因此,在仿真時增加流量突發(fā)的情況。具體表現(xiàn)為,在仿真35 s 和65 s 的時候分別開啟和結束40 個TCP 連接,以此來衡量流量突發(fā)時QoS模型中的丟包率、時延、時延抖動和吞吐量等性能指標。
仿真中,節(jié)點R1和R2構成瓶頸鏈路,帶寬設為20 Mb/s,傳播時延設為15 ms。S1到Sn代表的是發(fā)射源端,D1到Dn代表的是接收源端。發(fā)射源端與R1相連接,接收源端與R2相連接,所有的鏈路帶寬均設置為10 Mb/s,傳播時延設為10 ms,發(fā)送源端Sn和相應的接收源端Dn建立起TCP 連接[19]。
仿真的拓撲結構如圖4 所示。在R1隊列上依次實施ARED、URED 和SP-ARED 算法。算法中相關參數(shù)的值設置如下:緩沖區(qū)大小設為156 packets,THmin=26 packets,THmax=78 packets,maxp= 0.1,Wq=0.002,依據(jù)經驗將SPth設為最大閾值THmax的3/2,也為路由器緩沖區(qū)大小的3/4,即SPth=117 packets[12]。發(fā)射源端發(fā)送的數(shù)據(jù)包大小可以自行設置。
圖4 仿真的拓撲結構Fig.4 Topology structure of simulation
1)無流量突發(fā)情況
根據(jù)圖4,建立80 個發(fā)射源端和接收源端的并發(fā)連接,仿真持續(xù)時間為100 s。圖5~圖7 分別表示3 種算法在無流量突發(fā)情況下的隊列長度,藍色和紅色曲線分別表示實時以及平均隊列長度情況。平均隊列長度和它的變化情況是衡量算法性能的重要指標,它能夠反映網(wǎng)絡服務質量的好壞。
圖5 無流量突發(fā)情況下的ARED 算法隊列長度Fig.5 Queue length of ARED algorithm under no traffic burst
圖6 無流量突發(fā)情況下的URED 算法隊列長度Fig.6 Queue length of URED algorithm under no traffic burst
圖7 無流量突發(fā)情況下的SP-ARED 算法隊列長度Fig.7 Queue length of SP-ARED algorithm under no traffic burst
ARED 算法在[THmin,THmax]內缺乏有效的丟包策略,因此,隨著業(yè)務量的增加,平均隊列長度出現(xiàn)了持續(xù)性的波動且波動范圍大,其平均隊列長度穩(wěn)定性最差。和ARED 算法一樣,URED 算法在[THmin,THmax]內同樣缺乏有效的丟包策略,但其通過設置更大的閾值在一定程度上提高了緩沖區(qū)的利用率,所以它的平均隊列長度穩(wěn)定性略優(yōu)于ARED 算法。SP-ARED 算法在[THmin,THmax]采用了有效的丟包策略,并設置更大的閾值SPth來更有效地利用緩沖區(qū),提高了數(shù)據(jù)包的轉發(fā)效率。因此,相較于ARED 和URED 算法,SP-ARED 算法能夠在負載增大的情況下減小平均隊列長度的波動范圍,提高平均隊列長度的穩(wěn)定性。
2)模擬流量突發(fā)情況
圖8~ 圖10 分別表示3 種算法在模擬流量突發(fā)時的隊列長度。
圖8 有流量突發(fā)情況下的ARED 算法隊列長度Fig.8 Queue length of ARED algorithm under traffic burst
圖9 有流量突發(fā)情況下的URED 算法隊列長度Fig.9 Queue length of URED algorithm under traffic burst
圖10 有流量突發(fā)情況下的SP-ARED 算法隊列長度Fig.10 Queue length of SP-ARED algorithm under traffic burst
根據(jù)圖4,采用相同參數(shù)來模擬流量突發(fā)的情況。開始時啟動80 個TCP 連接,35 s 的時候增加40個TCP 連接,TCP 連接數(shù)此時變?yōu)?20 個,并在65 s的時候減少40 個TCP 連接,重新恢復為80 個TCP連接,仿真過程持續(xù)100 s。
模擬流量突發(fā)情況下,URED 算法的平均隊列長度波動幅度最大,尤其是在35 s~65 s 的時間段內,平均隊列長度出現(xiàn)了持續(xù)的振蕩,其平均隊列長度穩(wěn)定性最差。ARED 算法在35 s~65 s的時間段內平均隊列長度也出現(xiàn)了持續(xù)的振蕩,但其在仿真開始的0~10 s 這段時間內,平均隊列長度的波動范圍小于URED 算法,因而ARED 算法的平均隊列長度穩(wěn)定性在整體上略好于URED 算法。SP-ARED算法下的平均隊列長度波動范圍小于ARED 和URED 算法,僅在35 s 和65 s 附近出現(xiàn)了小幅度的抖動,平均隊列長度總體上維持在理想?yún)^(qū)間內,這使得路由器緩沖區(qū)有空間處理突發(fā)流量,有效提高了數(shù)據(jù)包的轉發(fā)效率。
圖中的平均隊列長度及其變化情況表明,網(wǎng)絡無論是處于重度負載還是流量突發(fā)情況下,SP-ARED 算法下的平均隊列長度穩(wěn)定性均優(yōu)于ARED 算法和URED 算法。
3 種算法的丟包情況如表1 所示。丟包率是評價和衡量網(wǎng)絡性能的重要指標,更低的丟包率能夠反映出網(wǎng)絡服務質量更好。表中,Lose 和Send 分別表示丟棄和發(fā)送的數(shù)據(jù)包數(shù)量,TCP 連接數(shù)為80時,SP-ARED 算法的丟包率相較于ARED 和URED算法分別下降了8.67%和6.78%;模擬流量突發(fā)情況下,即TCP 連接數(shù)增至為120 時,SP-ARED 算法的丟包率相較于ARED 和URED 算法分別下降了8.62%和2.16%。通過上述分析可以得出,網(wǎng)絡在處于重度負載和流量突發(fā)情況下,SP-ARED 算法的丟包情況均優(yōu)于ARED 和URED 算法,這表明了本文改進ARED 算法與URED 算法的有效性。
表1 3 種算法丟包率Table 1 Packet loss rates of three algorithms
3 種算法的端到端平均時延如表2 所示。文中指數(shù)據(jù)包從源端到目的端的平均時延,該指標能夠反映業(yè)務的體驗情況,時延越大表示體驗程度越不好。TCP 連接數(shù)為80 時,ARED 算法的端到端平均時延最大,URED 算法次之,SP-ARED 算法最小,SP-ARED 算法的時延相較于ARED 和URED 算法分別減少了0.62%和0.49%。模擬突發(fā)流量產生的情況下,即TCP 連接為120 的時候,URED 算法的端到端平均時延最大,SP-ARED 算法次之,ARED算法表現(xiàn)最好。SP-ARED 算法的時延相較于URED算法減少了1.34%,相較于ARED 算法增加了0.09%。
表2 3 種算法端到端平均時延Table 2 Average end-to-end delay of three algorithms
端到端平均時延由傳播時延和排隊時延組成,從3 種算法的對比中可以看出,傳播時延相同的情況下。TCP 連接為80 時,數(shù)據(jù)包在路由節(jié)點緩沖區(qū)中時,SP-ARED 算法的平均排隊時延最小。但當TCP連接為120 的時候,SP-ARED 算法的平均排隊時延高于ARED 算法,這是因為端到端平均時延與隊列長度相關,相較于ARED 算法,此時SP-ARED 算法的丟包策略能讓更多的數(shù)據(jù)包進入隊列等待發(fā)送,增大了平均隊列長度。尤其是仿真在35 s~65 s 時,SP-ARED 算法的平均隊列長度大部分時刻高于ARED 算法,導致了時延的增大。這表明SP-ARED算法在時延方面的表現(xiàn)較差,仍有待提高。
3 種算法的時延抖動如表3 所示,文中用時延的方差(σ2)表示時延抖動[20]。時延抖動是數(shù)據(jù)包時延的變化量,它反映了算法在網(wǎng)絡系統(tǒng)中的穩(wěn)定性。時延抖動越小,網(wǎng)絡穩(wěn)定性越好;反之,時延抖動越大,網(wǎng)絡穩(wěn)定性越差。TCP 連接數(shù)為80 時,URED 算法的端到端時延抖動最大,ARED 算法次之,SP-ARED 算法最小,SP-ARED 算法的時延抖動相較于ARED 和URED 算法分別減少了19.38%和20.52%。模擬突發(fā)流產生情況下,即TCP 連接為120 時,結果保持一致,SP-ARED 算法的時延抖動相較于ARED 和URED 算法分別減少了9.80%和11.66%。
表3 3 種算法時延抖動Table 3 Delay jitter of three algorithms
通過上述分析可以得出,SP-ARED 算法在時延抖動方面的表現(xiàn)相較于ARED 和URED 算法有了較大的提升,這也表明SP-ARED 算法在3 種算法中穩(wěn)定性最好。
3 種算法的吞吐量如表4 所示。較高的吞吐量能夠使網(wǎng)絡更加流暢,從而提高網(wǎng)絡的性能。表中,TCP 連接數(shù)為80 時,SP-ARED 算法的瓶頸鏈路吞吐量相較于ARED 和URED 算法分別提高了0.52%和0.67%;流量突發(fā)情況下,即TCP 連接數(shù)為120時,SP-ARED 算法的瓶頸鏈路吞吐量比ARED 和URED 算法分別提高了0.40%和0.38%。從上述分析可以得出,網(wǎng)絡在處于重度負載和流量突發(fā)情況下時,SP-ARED 算法的鏈路吞吐量都是最高的,算法提升了網(wǎng)絡的服務質量。
表4 3 種算法吞吐量Table 4 Throughput of three algorithms
作為擁塞控制體系中不可或缺的一環(huán),主動隊列管理機制對于提高網(wǎng)絡服務質量起到了重要的作用。針對ARED 算法和URED 算法中存在的不足,本文提出了一種改進算法SP-ARED,SP-ARED算法通過采用分段函數(shù)優(yōu)化丟棄策略和引入新的閾值上限來提高網(wǎng)絡的服務質量。實驗結果表明,除時延以外,SP-ARED 算法在平均隊列長度穩(wěn)定性、丟包率、時延抖動和吞吐量方面的表現(xiàn)都有了一定的提高,擁塞控制效果較好。下一步將思考如何提升時延的表現(xiàn)。