《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 模擬設(shè)計(jì) > 設(shè)計(jì)應(yīng)用 > 一種改進(jìn)的TCP Westwood算法
一種改進(jìn)的TCP Westwood算法
2015年微型機(jī)與應(yīng)用第15期
趙宇紅,劉海良,,張曉琳
(內(nèi)蒙古科技大學(xué) 信息工程學(xué)院,,內(nèi)蒙古 包頭 014010)
摘要: 無(wú)線網(wǎng)絡(luò)存在高誤碼率、帶寬變化大等特點(diǎn),,針對(duì)丟包類型多樣化,、擁塞控制中參數(shù)設(shè)置既盲目又單一化等問(wèn)題,提出了一種TCP Westwood(簡(jiǎn)稱TCPW)的改進(jìn)算法TCP-NW,,該算法根據(jù)網(wǎng)絡(luò)中帶寬的利用率來(lái)區(qū)分丟包類型并細(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的傳輸性能有較大的改善,。
Abstract:
Key words :

  摘  要無(wú)線網(wǎng)絡(luò)存在高誤碼率、帶寬變化大等特點(diǎn),,針對(duì)丟包類型多樣化,、擁塞控制中參數(shù)設(shè)置既盲目又單一化等問(wèn)題,提出了一種TCP Westwood(簡(jiǎn)稱TCPW)的改進(jìn)算法TCP-NW,,該算法根據(jù)網(wǎng)絡(luò)中帶寬的利用率來(lái)區(qū)分丟包類型并細(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的傳輸性能有較大的改善,。

  關(guān)鍵詞: 無(wú)線網(wǎng)絡(luò);帶寬估計(jì),;擁塞控制,;網(wǎng)絡(luò)仿真

0 引言

  隨著網(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ū)分丟包類型,,即擁塞丟包和無(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ū)分丟包類型并細(xì)化擁塞的不同場(chǎng)景,,并據(jù)此對(duì)CWND和SSTHRESH值進(jìn)行調(diào)整,。仿真實(shí)驗(yàn)表明該算法在一定程度上可以區(qū)分丟包類型及擁塞程度,較大程度上提高了TCP性能,。

1 TCPW擁塞控制算法分析

  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的賦值如下:

  1.png

  其中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è)方面:

 ?。?)TCPW算法無(wú)法區(qū)分丟包類型,。當(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ò)帶寬利用率大幅度下降,。

2 TCP-NW算法原理

  針對(duì)TCPW算法的不足,,提出了一種改進(jìn)算法TCP-NW,TCP-NW算法的步驟如下:

 ?。?)計(jì)算網(wǎng)絡(luò)帶寬估計(jì)值

  通過(guò)TCPW協(xié)議中的帶寬估計(jì)算法實(shí)時(shí)計(jì)算網(wǎng)絡(luò)中的帶寬估計(jì)值current_bwe,,引入一個(gè)變量bwe_max,用于保存此過(guò)程中的current_bwe的最大值,。

 ?。?)計(jì)算網(wǎng)絡(luò)帶寬利用率

  根據(jù)(1)中計(jì)算出的current_bwe和bwe_max的值,,計(jì)算出網(wǎng)絡(luò)中的帶寬利用率。計(jì)算公式如式(2)所示:

  2.png

  其中,,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ú)線丟包。

 ?。?)分別對(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)所示:

  3.png

  其中,α為當(dāng)前網(wǎng)絡(luò)的帶寬利用率,,計(jì)算公式如式(2),。

  式(3)雖然避免了在帶寬利用率較低時(shí)將SSTHRESH值過(guò)度減小的問(wèn)題,但是在帶寬利用率較高時(shí),,依然存在此問(wèn)題。為了解決此問(wèn)題,,將α值進(jìn)行細(xì)化,,重新計(jì)算公式如式(4)所示:

  4.png

  算法偽代碼如下:

  if(receive 3 dupacks){

  if(0<α≤1/4){

  null}

  if(1/4<α≤1/2){

  ssthresh=current_bwe*(1-α)/size/8;

  cwnd=ssthresh+3MSS,;

  }

  if(1/2<α≤1){

  ssthresh=1/2*current_bwe/size/8,;

  cwnd=ssthresh+3MSS;

  }}

 ?、赗TO(重傳計(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)所示:

  5.png

  算法偽代碼如下:

  if(RTO timeout){

  if(1/4<α<1/2){

  ssthresh=current_bwe*(1-α)/size/8;

  cwnd=1,;}

  if(α≤1/4){null,;}

  if(1/2<α<3/4){

  ssthresh=current_bwe*α/size/8;

  cwnd=1,;}

  if(3/4<α≤1){

  ssthresh=1/2*current_bwe*(1-α)/size/8,;

  cwnd=1;

  }}

3 TCP-NW算法的仿真實(shí)驗(yàn)結(jié)果分析

  3.1 仿真實(shí)驗(yàn)環(huán)境


001.jpg

  仿真網(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]。

  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í)延更小,。

003.jpg

  圖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)定性,。

004.jpg

  圖4中throughput-Reno、throughput-Westwood,、throughput-NW分別為T(mén)CP Reno,、TCP Westwood、TCP-NW 算法下得到的系統(tǒng)吞吐的大小,。通過(guò)仿真實(shí)驗(yàn)結(jié)果可以看出,,TCP-NW算法下的系統(tǒng)吞吐量最大。

  為了更好地驗(yàn)證TCP-NW算法對(duì)于丟包類型的區(qū)分,,分別在不同鏈路誤碼率實(shí)驗(yàn)環(huán)境下對(duì)TCP Reno,、TCP Westwood、TCP-NW三種算法進(jìn)行了平均吞吐量的對(duì)比,,如表1所示,。

005.jpg

  表1中分別為T(mén)CP-Reno、TCPW,、TCP-NW算法在無(wú)線丟包率分別為1%,、2%、3%,、4%的鏈路下的系統(tǒng)平均吞吐量,,從中可以看出TCP-NW算法不同鏈路丟包率的情況下平均吞吐量最高,并且隨著無(wú)線丟包率的升高,,TCP-NW平均吞吐量下降的程度最少,,說(shuō)明了TCP-NW算法在一定程度上可以區(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的傳輸性能,。

4 結(jié)論

  本文針對(duì)TCPW算法在無(wú)線網(wǎng)絡(luò)環(huán)境中存在的不足之處,,提出了一種改進(jìn)的TCP-NW擁塞控制算法。通過(guò)實(shí)時(shí)計(jì)算網(wǎng)絡(luò)中的可用帶寬,,根據(jù)帶寬的變化來(lái)區(qū)分不同的丟包類型以及在不同類型的丟包情況下對(duì)CWND和SSTHRESH值進(jìn)行調(diào)整,。通過(guò)仿真實(shí)驗(yàn)表明,與TCPW相比,,TCP-NW算法在端到端時(shí)延,、抖動(dòng)性、系統(tǒng)吞吐量等方面性能都有提升,,較大程度上提高了無(wú)線TCP的傳輸性能,。

參考文獻(xiàn)

  [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.


此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載,。