婁 久, 李秀坤(哈爾濱工業(yè)大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,黑龍江 哈爾濱 150001)
?
·專題研討——虛擬仿真實(shí)驗(yàn)(18)·
NS2平臺的TCP/IP網(wǎng)絡(luò)擁塞控制算法仿真
婁 久, 李秀坤
(哈爾濱工業(yè)大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,黑龍江 哈爾濱 150001)
網(wǎng)絡(luò)擁塞控制是網(wǎng)絡(luò)服務(wù)質(zhì)量(QoS)機(jī)制正常運(yùn)作的基礎(chǔ),而TCP/IP網(wǎng)絡(luò)的擁塞控制機(jī)制是保證Internet的穩(wěn)定性和魯棒性的關(guān)鍵。利用NS2仿真平臺,分別在不同網(wǎng)絡(luò)環(huán)境下實(shí)現(xiàn)5種經(jīng)典網(wǎng)路擁塞控制算法:TCP Tahoe、TCP Vegas、TCP Newreno、TCP Reno和TCP Sack,仿真結(jié)果表明在無丟包環(huán)境和高時(shí)延環(huán)境下各算法所受影響基本相同,而在低帶寬和一般擁塞環(huán)境中Vegas算法的性能要優(yōu)于其它算法,該結(jié)果為不同網(wǎng)絡(luò)環(huán)境擁塞控制算法的選擇和應(yīng)用提供有效依據(jù)。同時(shí)通過軟件仿真與實(shí)際測試,加深了學(xué)生對擁塞控制算法的理解。
網(wǎng)絡(luò)擁塞控制; 網(wǎng)絡(luò)仿真; NS2
伴隨著計(jì)算機(jī)網(wǎng)絡(luò)的快速發(fā)展,網(wǎng)絡(luò)上各方面的應(yīng)用急劇增加,涵蓋通訊社交、電子商務(wù)、資源上傳下載、云存儲與云計(jì)算等等[1-2]。在網(wǎng)絡(luò)上傳輸?shù)臄?shù)據(jù)量激增,且其增長速度遠(yuǎn)遠(yuǎn)超過了網(wǎng)絡(luò)負(fù)載能力的增長[3-4]。因此,網(wǎng)絡(luò)擁塞問題越來越受到關(guān)注[5-6]。到目前為止,擁塞控制的研究已有30余年。TCP擁塞控制主要涉及慢起動(dòng)(Slow Start)、擁塞避免(Congestion Avoidance)、快速重傳(Fast Retransmit)和快速恢復(fù)(Fast Recovery)[7]。迄今為止主要5種TCP版本所采用的擁塞控制算法,分別為TCP Tahoe[8]、TCP Reno[9]、TCP Newreno[10]、TCP Sack[11]、TCP Vegas[12]。本文利用面向?qū)ο蟮氖录?qū)動(dòng)網(wǎng)絡(luò)仿真軟件NS2虛擬了幾種不同網(wǎng)絡(luò)結(jié)構(gòu)環(huán)境,從而比較了上述5中經(jīng)典網(wǎng)絡(luò)擁塞控制算法的性能。由實(shí)驗(yàn)得出的結(jié)論可以為不同的網(wǎng)絡(luò)環(huán)境中擁塞控制算法的選擇提供一定的依據(jù),同時(shí)可以幫助學(xué)生加深對網(wǎng)絡(luò)擁塞控制的理解。
1.1 TCP擁塞控制算法
端到端的面向連接的傳輸控制協(xié)議(Transmission Control Protocol,TCP)為應(yīng)用提供可靠的數(shù)據(jù)傳輸服務(wù),與IP協(xié)議相結(jié)合組成了因特網(wǎng)協(xié)議的核心[13]。TCP協(xié)議中提供流量控制與擁塞控制。目前TCP協(xié)議主要包含五個(gè)版本:TCP Tahoe、TCP Vegas、TCP Newreno、TCP Reno、TCP Sack。TCP Tahoe是最早的版本,為其它幾種算法的出現(xiàn)與發(fā)展奠定了基礎(chǔ)。Vegas則是通過往返時(shí)延的變化來確定擁塞的發(fā)生,改變擁塞窗口的值。NewReno對之前的快速恢復(fù)算法進(jìn)行了一定的改進(jìn)。Reno與Tahoe基本相同,但增加了Tahoe所不具有的快速恢復(fù)算法。而Sack通過改進(jìn)實(shí)現(xiàn)了不需要重傳一個(gè)窗口內(nèi)所有的數(shù)據(jù)包,而只需要對丟失的數(shù)據(jù)包進(jìn)行重新發(fā)送。
1.2 網(wǎng)絡(luò)仿真平臺NS2
面向?qū)ο蟮木W(wǎng)絡(luò)模擬器(Network Simulator-Version 2,NS2),由伯克利大學(xué)開發(fā)的一種專業(yè)、免費(fèi)的軟件仿真平臺,主要用于仿真各種IP網(wǎng)絡(luò),并且開放源代碼供用戶自行進(jìn)行修改調(diào)用[14-15]。它擁有豐富的構(gòu)件庫,幾乎可以模擬所有需要的網(wǎng)絡(luò)環(huán)境。其開發(fā)語言為C++和Otcl語言。對于用戶來說,NS2就是一個(gè)包含模擬時(shí)間調(diào)度器、多種組件和模塊的Tcl腳本解釋器,如圖1所示。
圖1 從一個(gè)用戶的角度看NS2
從圖1中可以看出,NS2進(jìn)行模擬的過程是以事件進(jìn)行驅(qū)動(dòng)的,通過Tclcl將OTcl和最底層C++聯(lián)系起來,再提供一個(gè)可以被調(diào)用的接口。用戶可以使用Otcl庫中的多種模擬網(wǎng)絡(luò)組件根據(jù)自己的需求設(shè)計(jì)網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行仿真。如今大部分進(jìn)行網(wǎng)絡(luò)研究的文章中所給出的實(shí)驗(yàn)結(jié)果都是通過NS2進(jìn)行仿真得出的,由于NS2的專業(yè)性和權(quán)威性,由它得到的結(jié)果是受到學(xué)術(shù)界普遍認(rèn)可的。
2.1 仿真場景
為了全面的驗(yàn)證并分析TCP擁塞控制算法的性能,實(shí)驗(yàn)設(shè)計(jì)四種仿真場景:無丟包環(huán)境、高時(shí)延環(huán)境、低帶寬環(huán)境和擁塞環(huán)境,網(wǎng)絡(luò)拓?fù)淙鐖D2所示,圖中橢圓形代表數(shù)據(jù)流,矩形代表代理的類型,圓形代表節(jié)點(diǎn)。圖中發(fā)送節(jié)點(diǎn)s0為TCP代理節(jié)點(diǎn),可綁定不同類型TCP代理,r0為接收節(jié)點(diǎn),綁定sink代理,n1和n2路由器節(jié)點(diǎn)之間為傳輸瓶頸。隊(duì)列類型為Droptail。發(fā)送窗口最大值為24。鏈路使用ftp流進(jìn)行數(shù)據(jù)傳輸,仿真時(shí)間20 s。
圖2 網(wǎng)絡(luò)拓?fù)鋱D
2.2 實(shí)驗(yàn)測試
2.2.1 無丟包環(huán)境
通過前面分析擁塞產(chǎn)生的原因可以得出,當(dāng)網(wǎng)絡(luò)傳輸中各節(jié)點(diǎn)與中間路由器間的帶寬與時(shí)延沒有差別時(shí),數(shù)據(jù)會持續(xù)穩(wěn)定的傳輸,沒有傳輸瓶頸。為了研究發(fā)生擁塞時(shí)的條件,首先需要觀察沒有發(fā)生擁塞時(shí)的情況。實(shí)驗(yàn)參數(shù)為s0~n1、n1~n2、n2~r0之間的帶寬均為10 Mb/s,時(shí)延均為1ms,仿真時(shí)間為20s。將所得的數(shù)據(jù)進(jìn)行整理可得在簡單網(wǎng)絡(luò)結(jié)構(gòu)無丟包環(huán)境下各算法性能如表1所示。
表1 無丟包環(huán)境下各算法的性能
通過表1可以發(fā)現(xiàn),5種TCP擁塞控制算法在傳輸過程中均沒出現(xiàn)丟包情況,并且吞吐量也基本與帶寬相同,平均時(shí)延維持在很低的數(shù)值。證明在網(wǎng)絡(luò)中各節(jié)點(diǎn)間的參數(shù)相同,不存在瓶頸鏈路時(shí),數(shù)據(jù)會沒有限制的持續(xù)高速通過,不會發(fā)生擁塞與丟包。
2.2.2 高時(shí)延環(huán)境
在網(wǎng)絡(luò)中各節(jié)點(diǎn)間的網(wǎng)絡(luò)參數(shù)完全相同,不存在傳輸瓶頸時(shí),網(wǎng)絡(luò)不會出現(xiàn)擁塞和丟包現(xiàn)象,也沒有啟動(dòng)相應(yīng)的流量控制措施。但是當(dāng)路由器間的時(shí)延較大時(shí),會明顯的出現(xiàn)流量減少、吞吐量下降、數(shù)據(jù)包傳輸?shù)臅r(shí)延增大的現(xiàn)象。因此設(shè)置s0與n1、s2與r0之間的帶寬為10 Mb/s,時(shí)延1 ms,而n1到n2之間帶寬10 Mb/s,時(shí)延100 ms進(jìn)行仿真,結(jié)果如表2所示。
表2顯示了在高時(shí)延的網(wǎng)絡(luò)環(huán)境下,各種算法的性能均出現(xiàn)明顯的下降。平均吞吐量與發(fā)送的數(shù)據(jù)包數(shù)量大幅度下降,平均時(shí)延明顯上升,但是并沒有出現(xiàn)丟包的情況。結(jié)果表明在高時(shí)延的環(huán)境下,網(wǎng)絡(luò)傳輸速率會明顯下降,這是因?yàn)閿?shù)據(jù)包到達(dá)路由器的存儲隊(duì)列時(shí),由于n1與n2間時(shí)延過大,導(dǎo)致數(shù)據(jù)包不能及時(shí)的到達(dá)接收端r0,從而r0也不能及時(shí)的發(fā)送ACK返回給s0,因此發(fā)生吞吐量下降的情況。通過與表1的對比可以發(fā)現(xiàn),Tahoe、Reno、Newreno、Sack算法受時(shí)延的影響基本相同,而Vegas算法受時(shí)延的影響要比其他幾種大。因此在高時(shí)延的環(huán)境下不建議選擇Vegas算法。
表2 高時(shí)延環(huán)境下各算法的性能
2.2.3 低帶寬環(huán)境
當(dāng)網(wǎng)絡(luò)節(jié)點(diǎn)間時(shí)延相同時(shí),各鏈路的帶寬的差異也會使網(wǎng)絡(luò)傳輸發(fā)生明顯的變化。為了研究瓶頸鏈路低帶寬環(huán)境的情況,設(shè)置實(shí)驗(yàn)參數(shù)為s0到n1、n2到r0間的帶寬為10 Mb/s,時(shí)延1 ms,而低速鏈路n1到n2間的帶寬為1 Mb/s,時(shí)延也為1 ms,進(jìn)行仿真,觀察帶寬對擁塞現(xiàn)象的影響。結(jié)果如表3所示。
表3 低帶寬環(huán)境下各算法的性能
由表3分析可得當(dāng)存在低速瓶頸鏈路時(shí),網(wǎng)絡(luò)傳輸會受到影響,出現(xiàn)吞吐量下降、時(shí)延增加、數(shù)據(jù)包丟失的現(xiàn)象。原因在于當(dāng)網(wǎng)絡(luò)中存在低速鏈路時(shí),會導(dǎo)致高速的數(shù)據(jù)流流經(jīng)這條鏈路時(shí)產(chǎn)生擁塞。根據(jù)香農(nóng)信道容量公式可知,任何信道帶寬最大值即信道容量。
C=Blb2(1+S/N)
(1)
因此節(jié)點(diǎn)接收數(shù)據(jù)流的速率必須小于或等于信道容量。否則,接收的報(bào)文在緩沖區(qū)中排隊(duì),在緩沖區(qū)占滿后就會出現(xiàn)丟包,導(dǎo)致網(wǎng)絡(luò)擁塞。
2.2.4 擁塞環(huán)境
為了更方便直觀地分析各算法的性能,需要選擇一個(gè)合適的仿真場景進(jìn)行實(shí)驗(yàn)分析。通過前面的實(shí)驗(yàn),證明了在瓶頸鏈路低帶寬、高時(shí)延的情況下會發(fā)生擁塞現(xiàn)象。因此一個(gè)比較好的仿真環(huán)境是設(shè)置s0~n1、n2~r0之間帶寬為10 Mb/s,時(shí)延為1 ms,瓶頸鏈路n1~n2之間帶寬為1 Mb/s,時(shí)延為4 ms。在此環(huán)境下進(jìn)行仿真,網(wǎng)絡(luò)傳輸會出現(xiàn)明顯的丟包與擁塞現(xiàn)象,各算法會啟動(dòng)相應(yīng)的擁塞控制方法,所得到的結(jié)果如表4所示。
表4 擁塞環(huán)境下各算法的性能
總結(jié)來說,Tahoe算法主要涉及慢起動(dòng)、擁塞避免與快速重傳三部分,當(dāng)收到三個(gè)重復(fù)的ACK時(shí)會認(rèn)為發(fā)生了丟包重新開始慢起動(dòng);Reno算法在Tahoe的基礎(chǔ)上增加了新的算法:快速恢復(fù)算法,能夠解決Tahoe太過劇烈的減少發(fā)送窗口的問題;Newreno算法的改進(jìn)是在收到部分的ACK時(shí)并不會立刻結(jié)束快速恢復(fù),而是等所有丟失的封包重傳后才結(jié)束;Sack算法使用了SACK選項(xiàng),可以明確地知道哪些包丟失了,減少無謂的重傳;Vegas算法是基于往返時(shí)延RTT的一種擁塞控制算法,采用一種比較保守的方法避免擁塞,能夠減少丟包率,但是存在錯(cuò)誤估計(jì)RTT的可能,從而導(dǎo)致性能下降。
根據(jù)實(shí)驗(yàn)結(jié)果分析得到在各種不同的網(wǎng)絡(luò)環(huán)境下五種算法的性能如下:
(1)在沒有發(fā)生擁塞的網(wǎng)絡(luò)環(huán)境中,各種算法的性能基本相同,發(fā)送端會持續(xù)高速的發(fā)送數(shù)據(jù)包,不會產(chǎn)生丟包也沒有流量控制機(jī)制。
(2)在瓶頸鏈路高時(shí)延環(huán)境下,并沒有發(fā)生丟包,但是傳輸?shù)乃俾拭黠@受限,各種算法受影響的程度基本相同。
(3)在瓶頸鏈路低帶寬環(huán)境下,網(wǎng)絡(luò)傳輸會受到影響,出現(xiàn)吞吐量下降、時(shí)延增加、數(shù)據(jù)包丟失的現(xiàn)象。Vegas算法的平均吞吐量最高,時(shí)延低,沒有發(fā)生丟包,性能最出色。
(4)在一般擁塞環(huán)境中,Tahoe、Reno、Newreno、Sack、Vegas五種算法的平均吞吐量依次增加,但是Vegas算法不會出現(xiàn)丟包,并且時(shí)延低于其它幾種算法,因此建議使用Vegas算法。
[1] 朱志良,邱媛源,李丹程,等.一種We服務(wù)復(fù)雜網(wǎng)絡(luò)的構(gòu)建方法[J].小型微型計(jì)算機(jī)系統(tǒng),2012,33(2):199-205.
[2] 蔡小玲,范新麗. 不同隊(duì)列管理機(jī)制對多媒體傳輸品質(zhì)的影響[J]. 計(jì)算機(jī)應(yīng)用,2009,29(S2) :24-26.
[3] 吉祖勤, 黃津津.基于NS2的隊(duì)列管理算法DropTail和RED仿真與研究[J]. 實(shí)驗(yàn)室研究與探索,2014,33(1):6-28.
[4] 文 宏,樊曉平,張會福,等.無標(biāo)度網(wǎng)絡(luò)擁塞控制方法研究[J]. 小型微型計(jì)算機(jī)系統(tǒng),2013,34(11): 2482-2486.
[5] 秦 光.計(jì)算機(jī)網(wǎng)絡(luò)擁塞的高效控制方法研究[J].計(jì)算機(jī)仿真,2012,29(9):154-157.
[6] 葛彥強(qiáng),汪向征,于江德.一種利用自組織映射和徑向基函數(shù)神經(jīng)網(wǎng)絡(luò)的網(wǎng)絡(luò)擁塞預(yù)測方法[J].微電子學(xué)與計(jì)算機(jī),2012,29(12):176-179.
[7] 徐昌彪,鮮永菊. 計(jì)算機(jī)網(wǎng)絡(luò)中的擁塞控制與流量控制[M]. 北京:中國郵電出版社,2007.
[8] Jain R,Ramakrishnan K K,Chiu Dah-Ming. Congestion Avoidance in Computer Networks with a Connectionless Network Layer[R]. Digital Equipment Corporation DEC-TR-506,1988.
[9] 陳新房. 基于RED算法的擁塞控制策略研究[D]. 大連:大連海事大學(xué),2008.
[10] 孫 偉,溫 濤,馮自勤,等.基于TCP NewReno 的穩(wěn)態(tài)吞吐量分析模型[J].計(jì)算機(jī)研究與發(fā)展,2010,47(3):398-406.
[11] 錢艷平. 互聯(lián)網(wǎng)擁塞控制算法若干問題研究[D]. 南京:東南大學(xué),2005.
[12] 范·雅各布森.擁塞避免和控制[C]//美國計(jì)算機(jī)協(xié)會數(shù)據(jù)通信專業(yè)組會議,美國:ACM,1988:512-528.
[13] 孔金生,任平英.TCP 網(wǎng)絡(luò)擁塞控制研究[J].計(jì)算機(jī)技術(shù)與發(fā)展,2014,24(1):43-46.
[14] 王慶鳳, 陳 虹,王 萍.基于NS2的網(wǎng)絡(luò)控制系統(tǒng)仿真平臺的設(shè)計(jì)與實(shí)現(xiàn)[J].系統(tǒng)仿真學(xué)報(bào),2011,23(2):270-274.
[15] 黃化吉,馮穗力,秦麗姣. NS網(wǎng)絡(luò)模擬和協(xié)議仿真[M]. 北京:人民郵電出版社,2010.
Simulation of TCP Congestion Control Algorithms Based on NS2 Platform
LOUJiu,LIXiu-kun
(School of Computer Science and Technology, Harbin Institute Technology, Harbin 150001, China)
Network congestion control is the basis of network quality of service (QoS) mechanisms for normal operation, and congestion control mechanisms of TCP / IP network is the key guarantee for the stability and robustness of the Internet. In this paper, five classic network congestion control algorithms that include TCP Tahoe, TCP Vegas, TCP Newreno, TCP Reno and TCP Sack are performed on NS2 (Network Simulator-Version 2) simulation platform. Simulation results show that each algorithm is received unanimous influence in the high latency environment and the absence of packet loss environment. But in low-bandwidth environment and general congestion environment the Vegas algorithm is superior to the performance of other algorithms, which can be an effective basis for the selection and application of congestion control algorithms under the different network environment. Meanwhile students' understanding of congestion control algorithm can be deepened by the software simulation and actual test.
network congestion control; network simulation; NS2
2014-07-04
哈爾濱工業(yè)大學(xué)985工程教學(xué)實(shí)驗(yàn)室建設(shè)項(xiàng)目
婁 久(1977-),男,吉林長春人,高級工程師,主要研究方向:實(shí)驗(yàn)室建設(shè)與管理、計(jì)算機(jī)網(wǎng)絡(luò)及可信計(jì)算等。
Tel.:0451-86413341; E-mail:loujiu@hit.edu.cn
TP 393.0
A
1006-7167(2015)02-0081-03