任金霞,王水泉,,溫春暉
?。ń骼砉ご髮W(xué) 電氣工程與自動(dòng)化學(xué)院,江西 贛州 34100)
摘要:互聯(lián)網(wǎng)的快速發(fā)展,,給人們生活帶來極大便捷,,同時(shí)也帶來了嚴(yá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í)間,,通過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ò)擁塞問題極其重要,。
TCP擁塞控制模型是基于1988年JACOBSON和KAREL提出的TCP Reno 模型,。TCP Westwood(TCPW)算法基本思想是通過監(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)階段沒有固定的慢啟動(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ù)提高鏈路帶寬利用率,,也就是說路由器隊(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算法主要思想是通過監(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)文段大小。
?。?)定時(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)閾值和擁塞窗口值,通過兩個(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í)間間隔),通過鏈路容量計(jì)算的ssthresh值為初始化慢啟動(dòng)提供準(zhǔn)確值,。由此可見,,該慢啟動(dòng)閾值不是一個(gè)常數(shù),隨連接狀態(tài)改變,。
此外,,本文提出了一種“快速啟動(dòng)”通過帶寬利用率增加擁塞窗口在慢啟動(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所示。
通過當(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為TCP發(fā)送端,節(jié)點(diǎn)R0,、R1為路由節(jié)點(diǎn),,D0、D1為TCP接收端,。節(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為無線連接。仿真時(shí)間設(shè)置為45 s,。
3.2實(shí)驗(yàn)結(jié)果及分析
改進(jìn)算法與TCPW和TCP NewReno的網(wǎng)絡(luò)吞吐量如圖3所示,。可見改進(jìn)算法在吞吐量上較TCPW和TCP NewReno都有一定的提高,。圖4是基于每個(gè)數(shù)據(jù)包傳輸時(shí)間延時(shí)的比較,,可以看出改進(jìn)算法縮短了延遲時(shí)間。圖5為網(wǎng)絡(luò)丟包變化隨仿真時(shí)間對(duì)比,,可以看出仿真剛開始一段時(shí)間改進(jìn)算法比TCPW算法丟包量大,,但在15 s后丟包數(shù)量略小于對(duì)比算法。
4結(jié)論
本文針對(duì)TCPW算法的不足之處,,提出了一種在慢啟動(dòng)和擁塞避免階段的改進(jìn)算法,,加快了慢啟動(dòng)進(jìn)程,在擁塞避免階段合理地設(shè)置擁塞窗口值和慢啟動(dòng)閾值。通過大量實(shí)驗(yàn)表明,,與原算法相比本文提出的算法在吞吐量,、丟包率、時(shí)延等各方面的性能都得到了提高,,優(yōu)于TCPW算法,,有一定的實(shí)用價(jià)值。
參考文獻(xiàn)
?。?] 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.
[3] 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.
?。?] 王志明, 曾孝平, 劉學(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.
[6] 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.
?。?] 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.