趙宇紅,劉海良,張曉琳(內(nèi)蒙古科技大學(xué) 信息工程學(xué)院,內(nèi)蒙古 包頭 014010)
一種改進(jìn)的TCP Westwood算法
趙宇紅,劉海良,張曉琳
(內(nèi)蒙古科技大學(xué)信息工程學(xué)院,內(nèi)蒙古包頭 014010)
無(wú)線網(wǎng)絡(luò)存在高誤碼率、帶寬變化大等特點(diǎn),針對(duì)丟包類(lèi)型多樣化、擁塞控制中參數(shù)設(shè)置既盲目又單一化等問(wèn)題,提出了一種TCP Westwood(簡(jiǎn)稱TCPW)的改進(jìn)算法TCP-NW,該算法根據(jù)網(wǎng)絡(luò)中帶寬的利用率來(lái)區(qū)分丟包類(lèi)型并細(xì)化擁塞情況,并據(jù)此對(duì)CWND(擁塞窗口)和SSTHRESH(慢啟動(dòng)門(mén)限值)值進(jìn)行調(diào)整。仿真實(shí)驗(yàn)表明,TCP-NW算法在網(wǎng)絡(luò)時(shí)延、抖動(dòng)、吞吐量等方面表現(xiàn)穩(wěn)定,對(duì)于無(wú)線網(wǎng)絡(luò)TCP的傳輸性能有較大的改善。
無(wú)線網(wǎng)絡(luò);帶寬估計(jì);擁塞控制;網(wǎng)絡(luò)仿真
隨著網(wǎng)絡(luò)技術(shù)飛速發(fā)展,網(wǎng)絡(luò)中信息量急劇增長(zhǎng),擁塞的問(wèn)題也日趨嚴(yán)重,網(wǎng)絡(luò)出現(xiàn)擁塞時(shí),如果處理不當(dāng),網(wǎng)絡(luò)通信就會(huì)嚴(yán)重受阻,使網(wǎng)絡(luò)處于一種接近癱瘓的狀態(tài)。作為網(wǎng)絡(luò)廣泛使用的傳輸協(xié)議TCP為網(wǎng)絡(luò)中的用戶提供了可信和健壯的端到端網(wǎng)絡(luò)數(shù)據(jù)通信服務(wù),同時(shí)該協(xié)議一直備受大多數(shù)學(xué)者的關(guān)注,并取得了很多研究成果。如參考文獻(xiàn)[1]中提出了一種無(wú)線傳感器網(wǎng)絡(luò)中基于跨層優(yōu)化的擁塞控制算法;參考文獻(xiàn)[2]提出了基于背景流量變換的組播擁塞控制算法;參考文獻(xiàn)[3]中提出了一種高性能的TCP友好擁塞控制算法;參考文獻(xiàn) [4]中提出了一種基于自同步原則的擁塞控制方法;參考文獻(xiàn) [5]中提出一種基于雙包探測(cè)技術(shù)的TCP Westwood算法;參考文獻(xiàn)[6]提出一種基于非線性窗口增長(zhǎng)的TCPW改進(jìn)算法;參考文獻(xiàn)[7]中提出了一種Mesh網(wǎng)絡(luò)中基于區(qū)分服務(wù)的擁塞控制機(jī)制。這些算法都對(duì)TCP的擁塞控制機(jī)制從不同的方面作出了改進(jìn),但如何使得TCP協(xié)議更好地適應(yīng)無(wú)線網(wǎng)絡(luò)環(huán)境特性,依然是一個(gè)重要的研究課題。
TCPW協(xié)議是針對(duì)無(wú)線特點(diǎn)而設(shè)計(jì)的,相對(duì)于 TCP Reno表現(xiàn)出了更好的性能。但是在無(wú)線網(wǎng)絡(luò)環(huán)境中TCPW協(xié)議無(wú)法區(qū)分丟包類(lèi)型,即擁塞丟包和無(wú)線丟包(在網(wǎng)絡(luò)沒(méi)有出現(xiàn)擁塞時(shí),也會(huì)出現(xiàn)丟包的現(xiàn)象,這時(shí)丟包原因往往由外界環(huán)境因素引起,使得網(wǎng)絡(luò)本身傳輸信道的信號(hào)衰弱或干擾,把這種數(shù)據(jù)包丟失稱為無(wú)線丟包),而且在擁塞處理中,參數(shù)的調(diào)整沒(méi)有區(qū)分擁塞程度而作統(tǒng)一的處理,這些問(wèn)題導(dǎo)致網(wǎng)絡(luò)性能受到影響。本文根據(jù)TCPW協(xié)議存在的不足,提出了一種基于TCP的改進(jìn)算法TCP-NW,算法通過(guò)測(cè)算網(wǎng)絡(luò)中帶寬及帶寬利用率,根據(jù)帶寬利用率來(lái)區(qū)分丟包類(lèi)型并細(xì)化擁塞的不同場(chǎng)景,并據(jù)此對(duì)CWND和SSTHRESH值進(jìn)行調(diào)整。仿真實(shí)驗(yàn)表明該算法在一定程度上可以區(qū)分丟包類(lèi)型及擁塞程度,較大程度上提高了TCP性能。
TCPW算法是專門(mén)針對(duì)無(wú)線網(wǎng)絡(luò)提出的一種擁塞控制算法,是在TCP Reno版本上改進(jìn)而得,在一定程度上提高了網(wǎng)絡(luò)出現(xiàn)丟包時(shí)TCP的傳輸性能[8]。TCPW也是由“慢啟動(dòng)”、“擁塞避免”、“快速重傳”和“快速恢復(fù)”四個(gè)部分組成。
TCPW算法主要通過(guò)實(shí)時(shí)測(cè)量來(lái)估算網(wǎng)絡(luò)中的帶寬值,并利用帶寬估計(jì)值來(lái)調(diào)整CWND和SSTHRESH值以達(dá)到擁塞控制的目的?;玖鞒淌?,通過(guò)持續(xù)不斷地監(jiān)測(cè)TCP目的端返回的 ACK速率,從而計(jì)算出單位時(shí)間內(nèi)TCP發(fā)送端發(fā)送的分組數(shù)目和數(shù)據(jù)包大小,計(jì)算出網(wǎng)絡(luò)中的帶寬估計(jì)值[9-10]。當(dāng)出現(xiàn)擁塞收到 3個(gè)重復(fù) ACK或 RTO超時(shí)時(shí),SSTHRESH和CWND的賦值如下:
其中 cuurent_bwe是帶寬估計(jì)值,size是數(shù)據(jù)包的大小,min_rtt_estimate是測(cè)量中的最小RTT。
在收到3個(gè)重復(fù)ACK時(shí),CWND值設(shè)置為SSTHRESH的當(dāng)前值,而超時(shí)的情況下,CWND值設(shè)置為1。
TCPW算法的不足之處主要有以下幾個(gè)方面:
(1)TCPW算法無(wú)法區(qū)分丟包類(lèi)型。當(dāng)網(wǎng)絡(luò)中出現(xiàn)丟包時(shí),TCPW算法都會(huì)按照擁塞丟包來(lái)處理,而不區(qū)分是無(wú)線丟包還是擁塞丟包。
(2)TCPW算法在處理丟包時(shí)具有盲目性且單一。主要體現(xiàn)在CWND和SSTHRESH值的調(diào)整上,在出現(xiàn)丟包時(shí),不管丟包原因也不分擁塞程度,單純減小窗口值,降低數(shù)據(jù)的發(fā)送速率,這種處理會(huì)使得網(wǎng)絡(luò)帶寬利用率大幅度下降。
針對(duì)TCPW算法的不足,提出了一種改進(jìn)算法TCP-NW,TCP-NW算法的步驟如下:
(1)計(jì)算網(wǎng)絡(luò)帶寬估計(jì)值
通過(guò)TCPW協(xié)議中的帶寬估計(jì)算法實(shí)時(shí)計(jì)算網(wǎng)絡(luò)中的帶寬估計(jì)值current_bwe,引入一個(gè)變量bwe_max,用于保存此過(guò)程中的current_bwe的最大值。
(2)計(jì)算網(wǎng)絡(luò)帶寬利用率
根據(jù)(1)中計(jì)算出的 current_bwe和 bwe_max的值,計(jì)算出網(wǎng)絡(luò)中的帶寬利用率。計(jì)算公式如式(2)所示:其中,current_bwe為當(dāng)前帶寬估計(jì)值,bwe_max為當(dāng)前帶寬估計(jì)值中的最大值,α∈(0,1]。
由于網(wǎng)絡(luò)中帶寬利用率較低時(shí),網(wǎng)絡(luò)擁塞的可能性較小,如果網(wǎng)絡(luò)中此時(shí)出現(xiàn)了數(shù)據(jù)丟包,則認(rèn)定為出現(xiàn)了無(wú)線丟包。此算法中α∈(0,1/4]時(shí),認(rèn)定為無(wú)線丟包。
(3)分別對(duì)不同情況下的丟包作出相應(yīng)處理
當(dāng)在無(wú)線網(wǎng)絡(luò)出現(xiàn)數(shù)據(jù)丟包時(shí),根據(jù)計(jì)算出的網(wǎng)絡(luò)帶寬利用率來(lái)調(diào)整CWND和SSTHRESH值的大小。由于在網(wǎng)絡(luò)環(huán)境下丟包的原因主要有三個(gè)重復(fù)的ACK和超時(shí),因此兩種情況下的調(diào)整如下:
①收到三個(gè)重復(fù)ACK
當(dāng)出現(xiàn)無(wú)線丟包時(shí)(此時(shí)網(wǎng)絡(luò)并沒(méi)有發(fā)生擁塞),如果按照式(1)計(jì)算,SSTHRESH值會(huì)過(guò)度減小,CWND進(jìn)而減小,從而降低了數(shù)據(jù)發(fā)送速率,浪費(fèi)網(wǎng)絡(luò)帶寬,改進(jìn)后的重新計(jì)算公式如式(3)所示:
其中,α為當(dāng)前網(wǎng)絡(luò)的帶寬利用率,計(jì)算公式如式(2)。
式(3)雖然避免了在帶寬利用率較低時(shí)將SSTHRESH值過(guò)度減小的問(wèn)題,但是在帶寬利用率較高時(shí),依然存在此問(wèn)題。為了解決此問(wèn)題,將α值進(jìn)行細(xì)化,重新計(jì)算公式如式(4)所示:
算法偽代碼如下:
②RTO(重傳計(jì)時(shí)器)超時(shí)
當(dāng)TCP發(fā)送端每發(fā)送一個(gè)報(bào)文時(shí),為了防止數(shù)據(jù)包丟失,TCP發(fā)送端會(huì)啟動(dòng)一個(gè)重傳計(jì)時(shí)器,如果發(fā)送端發(fā)送的數(shù)據(jù)包在計(jì)時(shí)器超時(shí)前沒(méi)有收到該數(shù)據(jù)包的確認(rèn)ACK,就會(huì)重傳該數(shù)據(jù)報(bào),而此時(shí)出現(xiàn)網(wǎng)絡(luò)擁塞的程度要比收到3個(gè)重復(fù)ACK時(shí)嚴(yán)重,不論α如何取值,此時(shí)統(tǒng)一設(shè)置CWND的值為1,SSTHRESH值的計(jì)算公式如式(5)所示:
算法偽代碼如下:
3.1仿真實(shí)驗(yàn)環(huán)境
仿真網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)如圖1所示。節(jié)點(diǎn)N0、N1為T(mén)CP發(fā)送端,節(jié)點(diǎn)R0、R1為中間路由節(jié)點(diǎn),節(jié)點(diǎn) N2、N3 為T(mén)CP接收端。節(jié)點(diǎn)N0到R0之間、節(jié)點(diǎn)N1到R0之間、節(jié)點(diǎn)R1到N2和節(jié)點(diǎn)R1到N3之間建立延時(shí)為3 ms、帶寬為10 Mb/s的雙向鏈路。在節(jié)點(diǎn)R0和R1之間建立延時(shí)為2 ms、帶寬為5 Mb/s的雙向鏈路,此鏈路作為瓶頸鏈路。節(jié)點(diǎn)N0向節(jié)點(diǎn)N2發(fā)送數(shù)據(jù),節(jié)點(diǎn)N1向節(jié)點(diǎn)N3發(fā)送數(shù)據(jù),節(jié)點(diǎn)N0和節(jié)點(diǎn)N2之間建立TCP背景業(yè)務(wù),數(shù)據(jù)通信業(yè)務(wù)為FTP數(shù)據(jù)流,數(shù)據(jù)包大小為1 000 packets。仿真實(shí)驗(yàn)在仿真模擬工具 NS2(Network Simulator Version2)下進(jìn)行,NS2的版本為NS2.35[11]。
圖1 仿真實(shí)驗(yàn)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)
3.2仿真實(shí)驗(yàn)結(jié)果分析
實(shí)驗(yàn)主要從端到端時(shí)延、抖動(dòng)、吞吐量以及不同鏈路丟包率下平均吞吐量4個(gè)方面進(jìn)行實(shí)驗(yàn)結(jié)果的對(duì)比。各個(gè)對(duì)比實(shí)驗(yàn)圖如圖2~圖4所示。
圖2中delay-TCPReno、delay-TCPW、delay-TCP-NW分別為T(mén)CP Reno、TCP Westwood、TCP-NW三種算法下時(shí)延大小的變化值。從圖中可以看出TCP-NW算法下的時(shí)延值變化更加平滑,端到端的時(shí)延更小。
圖3中 jitter-Reno、delay-Westwood、delay-TCP-NW分別為T(mén)CP Reno、TCP Westwood、TCP-NW三種算法下的網(wǎng)絡(luò)抖動(dòng)的變化值。從圖中可以看出TCP-NW算法下的抖動(dòng)值變化幅度更加平滑,證明了網(wǎng)絡(luò)的穩(wěn)定性。
圖3 網(wǎng)絡(luò)抖動(dòng)變化圖
圖4中 throughput-Reno、throughput-Westwood、throughput-NW 分別為 TCP Reno、TCP Westwood、TCPNW算法下得到的系統(tǒng)吞吐的大小。通過(guò)仿真實(shí)驗(yàn)結(jié)果可以看出,TCP-NW算法下的系統(tǒng)吞吐量最大。
圖4 吞吐量結(jié)果對(duì)比
為了更好地驗(yàn)證TCP-NW算法對(duì)于丟包類(lèi)型的區(qū)分,分別在不同鏈路誤碼率實(shí)驗(yàn)環(huán)境下對(duì) TCP Reno、TCP Westwood、TCP-NW三種算法進(jìn)行了平均吞吐量的對(duì)比,如表1所示。
表1 不同鏈路誤碼率下平均吞吐量對(duì)比
表1中分別為T(mén)CP-Reno、TCPW、TCP-NW算法在無(wú)線丟包率分別為1%、2%、3%、4%的鏈路下的系統(tǒng)平均吞吐量,從中可以看出 TCP-NW算法不同鏈路丟包率的情況下平均吞吐量最高,并且隨著無(wú)線丟包率的升高,TCP-NW平均吞吐量下降的程度最少,說(shuō)明了TCPNW算法在一定程度上可以區(qū)分出無(wú)線丟包和擁塞丟包。
綜合仿真實(shí)驗(yàn)結(jié)果表明,本文改進(jìn)的TCP-NW算法能有效地改善無(wú)線網(wǎng)絡(luò)環(huán)境中因無(wú)線丟包而過(guò)多減小CWND和SSTHRESH值的問(wèn)題,并可以在一定程度上區(qū)分無(wú)線丟包和擁塞丟包。在發(fā)生無(wú)線丟包時(shí),不至于過(guò)多減小發(fā)送速率,從而更加充分利用網(wǎng)絡(luò)帶寬,很大程度上提高TCP的傳輸性能。
本文針對(duì)TCPW算法在無(wú)線網(wǎng)絡(luò)環(huán)境中存在的不足之處,提出了一種改進(jìn)的TCP-NW擁塞控制算法。通過(guò)實(shí)時(shí)計(jì)算網(wǎng)絡(luò)中的可用帶寬,根據(jù)帶寬的變化來(lái)區(qū)分不同的丟包類(lèi)型以及在不同類(lèi)型的丟包情況下對(duì)CWND和SSTHRESH值進(jìn)行調(diào)整。通過(guò)仿真實(shí)驗(yàn)表明,與TCPW相比,TCP-NW算法在端到端時(shí)延、抖動(dòng)性、系統(tǒng)吞吐量等方面性能都有提升,較大程度上提高了無(wú)線TCP的傳輸性能。
[1]張永敏,徐偉強(qiáng),黃炯,等.Ad Hoc網(wǎng)絡(luò)節(jié)能型功率控制與擁塞控制的跨層優(yōu)化[J].軟件學(xué)報(bào),2013,24(4):900-914.
[2]陶益坤,朱艷琴,羅喜召.基于背景流變化特征的組播擁塞控制算法[J].計(jì)算機(jī)應(yīng)用與軟件,2012,29(2):48-50.
[3]UTSUMI S,ZABIR S M S.A new high-performance TCP friendly congestion control over wireless networks[J].Journal of Network and Computer Applications,2014,41(3):369-378.
[4]HU W,XIAO G.Self-clocking principle for congestion control in the Internet[J]. Automatica,2012,48(2):425-429.
[5]袁鵬飛,鄭濤,楊李冬,等.一種基于 CAPPROBE帶寬估計(jì)的 TCP Westwood算法[J].廈門(mén)大學(xué)學(xué)報(bào)(自然科學(xué)版),2014,54(4):469-476.
[6]趙文波,孫小科,馬草川.基于非線性窗口增長(zhǎng)的TCP Westwood改進(jìn)算法[J].計(jì)算機(jī)應(yīng)用,2011,31(9):2344-2348.
[7]俞浚,白光偉,沈航.IEEE 802.16 Mesh網(wǎng)基于區(qū)分服務(wù)的擁塞控制機(jī)制[J].計(jì)算機(jī)應(yīng)用研究,2014,31(9):2811-2814.
[8]SHETH A M,PATEL K D,CHAUDHARI J P,et al.Analysis of TCP Westwood NR protocol in congested and lossy network[J].International Journal of Engineering and Technology,2013,3(4):477-482.
[9]CASETTI C,GERLA M,MASCOLO S,et al.TCP Westwood:end-to-end congestion control for wired/wireless networks[J].Wireless Networks,2002,8(5):467-479.
[10]GERLA M,SANADIDI M Y,WANG R,et al.TCP Westwood:congestion window control using bandwidth estimation[C].Global Telecommunications Conference,2001.IEEE,2001:1698-1702.
[11]UCB/LBNL/VINT.Network simulator ns(version2)[EB/OL].(2010-12-19)[2014-11-10].http://www.isi.edu/nsnam/ns.
An improved algorithm of TCP Westwood
Zhao Yuhong,Liu Hailiang,Zhang Xiaolin
(School of Information Engineering,Inner Mongolia University of Science and Technology,Baotou 014010,China)
Due to the high error rate and the serious variation of bandwidth in wireless network,aiming at the problem that losted package type diversification and parameter setting is both aimless and simplification in congestion control,this paper proposed TCP-NW which is the improved algorithm of TCP Westwood(TCPW).The algorithm distinguished the type of packet loss according to the utilization of the network bandwidth and refined the congestion situation,and modulated the value of CWND(congestion window)and SSTHRESH (slow start threshold value).The simulation experiments show that the TCP-NW algorithm has a stable performance in the aspects of network delay,jitter,throughput and so on,has greatly improved the transmission performance of TCP in wireless network.
wireless network;bandwidth estimation;congestion control;the network simulation
TP393
A
1674-7720(2015)15-0063-04
趙宇紅,劉海良,張曉琳.一種改進(jìn)的TCP Westwood算法[J].微型機(jī)與應(yīng)用,2015,34(15):63-66.
2015-04-05)
趙宇紅(1974-),女,碩士,副教授,主要研究方向:復(fù)雜網(wǎng)絡(luò)建模及智能控制。
劉海良(1989-),通信作者,男,碩士研究生,主要研究方向:無(wú)線網(wǎng)絡(luò)擁塞控制。E-mail:liuhlforever@163.com。
張曉琳(1966-),女,博士,教授,主要研究方向:數(shù)據(jù)庫(kù)理論與技術(shù)。