任金霞,,王水泉,溫春暉
?。ń骼砉ご髮W(xué) 電氣工程與自動(dòng)化學(xué)院,,江西 贛州 34100)
摘要:互聯(lián)網(wǎng)的快速發(fā)展,給人們生活帶來(lái)極大便捷,,同時(shí)也帶來(lái)了嚴(yán)重的問(wèn)題——網(wǎng)絡(luò)擁塞,。TCPW是一種基于端到端帶寬估計(jì)的擁塞控制機(jī)制,沿用了TCP Reno在慢啟動(dòng)初始化階段設(shè)置慢啟動(dòng)閾值方法,。提出了一種慢啟動(dòng)改進(jìn)算法,,在擁塞避免階段采用一種新的機(jī)制設(shè)置cwnd和ssthresh值,減少了慢啟動(dòng)時(shí)間,,通過(guò)NS2仿真結(jié)果表明改進(jìn)算法在吞吐量,、延時(shí)及丟包率等方面都有一定的改善。
關(guān)鍵詞:慢啟動(dòng),;擁塞避免,;擁塞控制;吞吐量
中圖分類號(hào):TP393文獻(xiàn)標(biāo)識(shí)碼:ADOI: 10.19358/j.issn.1674-7720.2017.04.019
引用格式:任金霞,,王水泉,,溫春暉.一種改進(jìn)的TCPW算法在擁塞控制中的應(yīng)用[J].微型機(jī)與應(yīng)用,2017,36(4):63-65.
0引言
隨著互聯(lián)網(wǎng)技術(shù)的迅速發(fā)展,,盡管當(dāng)前網(wǎng)絡(luò)帶寬不斷提高,,新的互聯(lián)網(wǎng)應(yīng)用程序的涌現(xiàn),導(dǎo)致網(wǎng)絡(luò)流量劇增以致網(wǎng)絡(luò)發(fā)生擁塞,,延時(shí),、吞吐量及其他網(wǎng)絡(luò)質(zhì)量指數(shù)下降,網(wǎng)絡(luò)資源利用率降低,,難以保證網(wǎng)絡(luò)參數(shù),。所以解決網(wǎng)絡(luò)擁塞問(wèn)題極其重要。
TCP擁塞控制模型是基于1988年JACOBSON和KAREL提出的TCP Reno 模型,。TCP Westwood(TCPW)算法基本思想是通過(guò)監(jiān)測(cè)發(fā)送端接收確認(rèn)應(yīng)答速率的端到端帶寬估計(jì)機(jī)制[1] ,。TCPW保留了基本的TCP控制協(xié)議的原則[2]和流控制、擁塞控制及錯(cuò)誤控制機(jī)制,。流控制用于限制傳輸速率使其與接收端緩存大小相匹配,。擁塞控制限制發(fā)送速率與鏈路容量相一致。因此,,TCP利用擁塞窗口值(cwnd)控制發(fā)送端報(bào)文段數(shù)量的傳送,。TCP連接建立后進(jìn)入慢啟動(dòng)階段[3],在這個(gè)階段發(fā)送端的擁塞窗口值呈指數(shù)增加,,直至增加到預(yù)設(shè)值慢啟動(dòng)閾值(ssthresh),。此后,進(jìn)入擁塞避免階段,,在此期間發(fā)送端線性增加擁塞窗口值,。丟包發(fā)生后,慢啟動(dòng)閾值設(shè)置為當(dāng)前擁塞窗口值的一半重新進(jìn)入慢啟動(dòng),。由于慢啟動(dòng)階段沒(méi)有固定的慢啟動(dòng)閾值,,當(dāng)其設(shè)置太小時(shí),發(fā)送端很快停止擁塞窗口指數(shù)增長(zhǎng),,需要用很長(zhǎng)時(shí)間才能達(dá)到最優(yōu)的擁塞窗口值,。
本文提出了一種改進(jìn)的慢啟動(dòng)算法,發(fā)送端可以快速增加擁塞窗口值,,縮短慢啟動(dòng)時(shí)間,。在擁塞避免階段根據(jù)帶寬估計(jì)的變化,設(shè)置不同的擁塞窗口值,,從而提高網(wǎng)絡(luò)的吞吐量,。
1TCPW算法原理分析
擁塞控制的研究目的不是完全避免擁塞,,而是研究怎樣的擁塞程度是合適的。TCP是可靠的數(shù)據(jù)傳輸協(xié)議[4],,采用分組交換技術(shù)提高鏈路帶寬利用率,,也就是說(shuō)路由器隊(duì)列緩存如果是滿的,則網(wǎng)絡(luò)利用率最高,,但傳輸延遲大,;隊(duì)列始終是空的或者不滿,導(dǎo)致網(wǎng)絡(luò)帶寬利用率低,,傳輸延遲小,。所以擁塞控制的目標(biāo)是實(shí)現(xiàn)網(wǎng)絡(luò)利用率和傳輸延遲的綜合性能指標(biāo)的最優(yōu)化,提高網(wǎng)絡(luò)的整體性能,,保證網(wǎng)絡(luò)的長(zhǎng)期穩(wěn)定性和魯棒性,。
1.1TCPW原理
TCPW是基于帶寬估計(jì)擁塞,不接收網(wǎng)絡(luò)的任何顯式擁塞反饋,。由源端決定數(shù)據(jù)發(fā)送速率,,逐漸增加數(shù)據(jù)發(fā)送速率,直到反饋信號(hào)表明達(dá)到了網(wǎng)絡(luò)容量,。當(dāng)丟包發(fā)生后,,發(fā)送端基于帶寬估計(jì)值重新設(shè)置擁塞窗口值和慢啟動(dòng)閾值。
1.2端到端的帶寬估計(jì)
TCPW算法主要思想是通過(guò)監(jiān)測(cè)發(fā)送端ACK確認(rèn)應(yīng)答的接收速率實(shí)時(shí)估計(jì)帶寬[56],,當(dāng)發(fā)送端在t2接收到一個(gè)ACK應(yīng)答時(shí)表明相應(yīng)的數(shù)據(jù)字節(jié)數(shù)d2已經(jīng)被TCP連接的接收端成功接收,。這種帶寬估計(jì)算法如下:
BWE=αbk-1+(1-α)[(bk+bk-1)/2]
其中,bk為樣本帶寬,,bk=dk/Δtk;Δtk=tk-tk-1;tk,、tk-1分別為第k、k-1個(gè)ACK到達(dá)時(shí)刻,;α=(2l-Δtk)(2l+Δtk);l為低通濾波截止頻率,。
1.3擁塞窗口值和慢啟動(dòng)閾值設(shè)置
假設(shè)發(fā)送端帶寬估計(jì)值為BWE,TCPW在慢啟動(dòng)階段和擁塞避免階段保持和TCP Reno一致,,分別為指數(shù)和線性增加[7],。在如下情況網(wǎng)絡(luò)發(fā)生丟包:(1)發(fā)送端收到三個(gè)重復(fù)ACK應(yīng)答;(2)定時(shí)器超時(shí)。
?。?)發(fā)送端收到三個(gè)重復(fù)ACK應(yīng)答后算法如下:
if receiving 3ACKS
set ssthresh=(BWE*RTTmin)/seg_size
and if (cwnd>ssthresh)
then set cwnd=ssthresh
enter congestion phase
其中seg_size為報(bào)文段大小,。
(2)定時(shí)器超時(shí)算法
TCP擁塞控制算法的基礎(chǔ)設(shè)計(jì)理念[8]是基于端到端,。網(wǎng)絡(luò)被視為“黑箱”TCP源端,。
2算法的改進(jìn)
2.1慢啟動(dòng)改進(jìn)算法
作為擁塞控制算法的重要部分,慢啟動(dòng)可以有效控制初始化連接時(shí)發(fā)送端的數(shù)據(jù)包發(fā)送數(shù)量,。本文采用一種新的方法在慢啟動(dòng)初始化階段設(shè)置慢啟動(dòng)閾值和擁塞窗口值,通過(guò)兩個(gè)連續(xù)應(yīng)答所確認(rèn)的字節(jié)數(shù)探測(cè)鏈路帶寬,。
其中,,ELC為鏈路容量,Acked為每一個(gè)應(yīng)答所確認(rèn)的數(shù)據(jù)包數(shù)量,,Δtk=tk-tk-1為兩個(gè)應(yīng)答之間的時(shí)間間隔,。每接收到一個(gè)新的應(yīng)答時(shí)采用移動(dòng)平均法更新ELC,計(jì)算如式(2)所示:
ELC=(1-α)ELCi+αELCi-1(2)
α=0.9
慢啟動(dòng)閾值設(shè)置如式(3)所示:
ssthresh=ELCRTTmin(3)
其中,RTT為往返時(shí)延(從發(fā)送端發(fā)送數(shù)據(jù)到發(fā)送端接收到確認(rèn)應(yīng)答的時(shí)間間隔),,通過(guò)鏈路容量計(jì)算的ssthresh值為初始化慢啟動(dòng)提供準(zhǔn)確值。由此可見(jiàn),,該慢啟動(dòng)閾值不是一個(gè)常數(shù),,隨連接狀態(tài)改變。
此外,,本文提出了一種“快速啟動(dòng)”通過(guò)帶寬利用率增加擁塞窗口在慢啟動(dòng)階段發(fā)送新的報(bào)文段前,,檢查當(dāng)前擁塞窗口值和上一個(gè)RTT。算法描述如下:
if last RTT<RTTest && cwnd<ssthresh
then cwnd=cwnd+(ssthresh DIV cwnd)
else cwnd=cwnd+1
其中,,RTTest為往返時(shí)延估計(jì)值,。
2.2擁塞避免算法改進(jìn)
在TCP擁塞控制中,擁塞窗口值是決定字節(jié)數(shù)發(fā)送速率的重要因素,。連接建立時(shí)設(shè)置為最大報(bào)文段(MSS),,每收到一個(gè)ACK應(yīng)答,擁塞窗口值倍增,,直到cwnd>ssthresh進(jìn)入擁塞避免階段,。在擁塞避免階段每收到一個(gè)ACK應(yīng)答擁塞窗口值,cwnd=cwnd+1/cwnd,,直到擁塞發(fā)生,。本文提出的改進(jìn)算法流程圖如圖1所示。
通過(guò)當(dāng)前時(shí)刻帶寬估計(jì)值與前一時(shí)刻帶寬估計(jì)值之比預(yù)測(cè)網(wǎng)絡(luò)狀態(tài),,動(dòng)態(tài)設(shè)置擁塞窗口值,,調(diào)整數(shù)據(jù)包發(fā)送速率。算法描述如下:
congestion avoidance
slow start is
over(cwnd>ssthresh)
every ACK;
estimate BWE=ELC;
set BWE=BWcurrent;
BWr=BWcurrent/BWprevious;
if(BWr>1.5)
cwnd=cwnd+1/cwnd;
else if (BWr<1)
cwnd=cwnd;
until (timeout or3ACKS)
BWcurrent為接收到新的ACK的當(dāng)前帶寬,,BWprevious為接收到新的ACK之前的帶寬值,。
3仿真實(shí)驗(yàn)及結(jié)果分析
3.1實(shí)驗(yàn)環(huán)境設(shè)置
混合網(wǎng)絡(luò)環(huán)境下仿真拓?fù)浣Y(jié)構(gòu)如圖2所示,節(jié)點(diǎn)S0,、S1為T(mén)CP發(fā)送端,,節(jié)點(diǎn)R0、R1為路由節(jié)點(diǎn),,D0,、D1為T(mén)CP接收端。節(jié)點(diǎn)S0與R1,、S1與R0,、R2與D0,、R2與D1之間鏈路延時(shí)為3 ms,帶寬為20 Mb/s,R0與R1之間為瓶頸鏈路,,鏈路時(shí)延為10 ms,、帶寬為5 Mb/s,R2與D1為無(wú)線連接,。仿真時(shí)間設(shè)置為45 s,。
3.2實(shí)驗(yàn)結(jié)果及分析
改進(jìn)算法與TCPW和TCP NewReno的網(wǎng)絡(luò)吞吐量如圖3所示??梢?jiàn)改進(jìn)算法在吞吐量上較TCPW和TCP NewReno都有一定的提高,。圖4是基于每個(gè)數(shù)據(jù)包傳輸時(shí)間延時(shí)的比較,可以看出改進(jìn)算法縮短了延遲時(shí)間,。圖5為網(wǎng)絡(luò)丟包變化隨仿真時(shí)間對(duì)比,,可以看出仿真剛開(kāi)始一段時(shí)間改進(jìn)算法比TCPW算法丟包量大,但在15 s后丟包數(shù)量略小于對(duì)比算法,。
4結(jié)論
本文針對(duì)TCPW算法的不足之處,,提出了一種在慢啟動(dòng)和擁塞避免階段的改進(jìn)算法,加快了慢啟動(dòng)進(jìn)程,,在擁塞避免階段合理地設(shè)置擁塞窗口值和慢啟動(dòng)閾值,。通過(guò)大量實(shí)驗(yàn)表明,與原算法相比本文提出的算法在吞吐量,、丟包率,、時(shí)延等各方面的性能都得到了提高,優(yōu)于TCPW算法,,有一定的實(shí)用價(jià)值,。
參考文獻(xiàn)
[1] MASCOLO S, CASETTI C, GERLA M, et al. TCP Westwood: bandwidth estimation for enhanced transport over wireless links[C]. International Conference on Mobile Computing and NETWORKING, 2001:287-297.
?。?] AFANSYEV A, TILLEY N, REIHER P, et al. Hosttohost congestion control for TCP[J]. IEEE Communications Surveys & Tutorials, 2010, 12(3):304-342.
?。?] MASCOLO S, VACIRCA F. The effect of reverse traffic on the performance of new tcp congestion control algorithm[J]. Pfldnet’06 Nara, 2006, 129(5):219-224.
[4] 王志明, 曾孝平, 劉學(xué),等. 一種異構(gòu)網(wǎng)絡(luò)TCP擁塞控制算法[J]. 電子與信息學(xué)報(bào), 2016, 38(4)780-786.
?。?] GRIECO L A, MASCOLO S. TCP Westwood and easy RED to improve fairness in highspeed networks[C]. Proceedings of the 7th IFIP/IEEE International Workshop on Protocols for High SpeedNetworks.SpringerVerlag, 2002:130-146.
?。?] PARVEZ N, MAHANTI A, WILLIAMSON C. TCP NewReno: slowbutsteady or impatient[J]. IEEE International Conference on Communications, 2006,ICC’06,2006, 2(2):716-722.
[7] GAMBHAVA B, KOTHARI N J, DASGUPTA K S. Analysis of RTO caused by retransmission loss to combat channel noise[J]. International Journal of Computer Applications, 2010, 1(8):5-9.
?。?] KALRA S, KALRA B, AGRAWAL N, et al. Updated congestion control algorithm for TCP throughput improvement in wired and wireless network[J]. Global Journal of Computer Science&Technology,2010(4):248-252.