任金霞,王水泉,溫春暉
(江西理工大學(xué) 電氣工程與自動(dòng)化學(xué)院,江西 贛州 34100)
一種改進(jìn)的TCPW算法在擁塞控制中的應(yīng)用*
任金霞,王水泉,溫春暉
(江西理工大學(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í)間,通過NS-2仿真結(jié)果表明改進(jìn)算法在吞吐量、延時(shí)及丟包率等方面都有一定的改善。
慢啟動(dòng);擁塞避免;擁塞控制;吞吐量
隨著互聯(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ò)的吞吐量。
擁塞控制的研究目的不是完全避免擁塞,而是研究怎樣的擁塞程度是合適的。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.1 TCPW原理
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ì)帶寬[5-6],當(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]
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í)。
(1)發(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.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è)鏈路帶寬。
(1)
其中,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=ELC*RTTmin
(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 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所示。 圖1 改進(jìn)擁塞避免算法流程圖 通過當(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.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。 圖2 網(wǎng)絡(luò)仿真拓?fù)鋱D 3.2 實(shí)驗(yàn)結(jié)果及分析 改進(jìn)算法與TCPW和TCP NewReno的網(wǎng)絡(luò)吞吐量如圖3所示??梢姼倪M(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ì)比算法。 圖3 吞吐量對(duì)比圖 圖4 網(wǎng)絡(luò)延時(shí)對(duì)比變化 圖5 丟包對(duì)比圖 本文針對(duì)TCPW算法的不足之處,提出了一種在慢啟動(dòng)和擁塞避免階段的改進(jìn)算法,加快了慢啟動(dòng)進(jìn)程,在擁塞避免階段合理地設(shè)置擁塞窗口值和慢啟動(dòng)閾值。通過大量實(shí)驗(yàn)表明,與原算法相比本文提出的算法在吞吐量、丟包率、時(shí)延等各方面的性能都得到了提高,優(yōu)于TCPW算法,有一定的實(shí)用價(jià)值。 [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. [2] AFANSYEV A, TILLEY N, REIHER P, et al. Host-to-host 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. [4] 王志明, 曾孝平, 劉學(xué),等. 一種異構(gòu)網(wǎng)絡(luò)TCP擁塞控制算法[J]. 電子與信息學(xué)報(bào), 2016, 38(4)780-786. [5] GRIECO L A, MASCOLO S. TCP Westwood and easy RED to improve fairness in high-speed networks[C]. Proceedings of the 7th IFIP/IEEE International Workshop on Protocols for High SpeedNetworks.Springer-Verlag, 2002:130-146. [6] PARVEZ N, MAHANTI A, WILLIAMSON C. TCP NewReno: slow-but-steady 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. [8] 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. An improved TCPW algorithm applied in congestion control Ren Jinxia,Wang Shuiquan,Wen Chunhui (School of Electrical Engineering Automation, Jiangxi University of Science and Technology, Ganzhou 341000, China) The rapid development of Internet brings great convenience to human life, at the same time, brings serious problem—the network congestion. TCP Westwood(TCPW) is based on the end-to-end congestion control mechanism of bandwidth estimation, and maintains the method that TCP Reno in the slow start initialization phase sets the slow start threshold. This paper proposes an improved slow start algorithm to reduce the time during slow start phase, and uses a new mechanism to set the cwnd and ssthresh values in congestion avoidance phase. The NS-2 simulation results imply that the improved algorithm performance in the aspects of throughput,network delay, losses rates and so on has been improved. slow start;congestion avoidance;congestion control;throughput 江西省自然科學(xué)基金項(xiàng)目(20151BAB207041) TP393 A 10.19358/j.issn.1674- 7720.2017.04.019 任金霞,王水泉,溫春暉.一種改進(jìn)的TCPW算法在擁塞控制中的應(yīng)用[J].微型機(jī)與應(yīng)用,2017,36(4):63-65. 2016-09-18) 任金霞(1970-),通信作者,女,碩士,副教授,主要研究方向:智能控制、機(jī)器學(xué)習(xí)。E-mail:dxzghyqq@sina.com。 王水泉(1991-),男,碩士研究生,主要研究方向:計(jì)算機(jī)網(wǎng)絡(luò)、優(yōu)化算法。 溫春暉(1992-),男,碩士研究生,主要研究方向:智能優(yōu)化算法。3 仿真實(shí)驗(yàn)及結(jié)果分析
4 結(jié)論