文獻(xiàn)標(biāo)識碼: A
文章編號: 0258-7998(2013)10-0102-03
TCP Westwood(TCPW)協(xié)議[1]是專門針對無線網(wǎng)絡(luò)應(yīng)用環(huán)境而提出的傳輸控制協(xié)議,它是在TCP Reno協(xié)議的基礎(chǔ)上修改而來的,。TCPW通過估算網(wǎng)絡(luò)的可用帶寬,,對擁塞窗口(cwnd)和慢啟動閾值(ssthresh)進(jìn)行優(yōu)化控制,在一定程度上改善了傳統(tǒng)TCP協(xié)議在發(fā)生數(shù)據(jù)丟包時所導(dǎo)致的網(wǎng)絡(luò)帶寬利用率下降的問題[2],。然而,,TCPW算法無法區(qū)分網(wǎng)絡(luò)丟包的原因,在高誤碼率,、頻繁移動的無線網(wǎng)絡(luò)環(huán)境下,,往往會由于較多的無線丟包而頻繁調(diào)用網(wǎng)絡(luò)擁塞控制算法,降低了網(wǎng)絡(luò)帶寬利用率[3],。
本文提出一種基于TCPW協(xié)議的改進(jìn)擁塞控制算法TCPW-J,該算法根據(jù)當(dāng)前網(wǎng)絡(luò)的帶寬估計值的變化情況來推斷網(wǎng)絡(luò)丟包發(fā)生的最可能原因,,使網(wǎng)絡(luò)控制協(xié)議能夠?qū)砣闆r作出更加準(zhǔn)確的判斷,減少在不必要情況下調(diào)用網(wǎng)絡(luò)擁塞控制算法的次數(shù)。經(jīng)過分析和仿真實驗的驗證,,表明TCPW-J能夠較為有效地判斷丟包的原因,,提高了TCPW算法對網(wǎng)絡(luò)帶寬的利用率。
1 TCPW-J算法
1.1 設(shè)計思想
網(wǎng)絡(luò)擁塞是一種持續(xù)過載的網(wǎng)絡(luò)狀態(tài),,網(wǎng)絡(luò)擁塞會導(dǎo)致數(shù)據(jù)包丟失,、時延增加、吞吐量下降等現(xiàn)象[4],?;谶@些因素,在網(wǎng)絡(luò)擁塞狀態(tài)下得到的帶寬估計值(BWE)比正常情況下的要小很多,。另一方面,,由于無線網(wǎng)絡(luò)誤碼率較高等原因而導(dǎo)致的數(shù)據(jù)丟包具有偶然性,并不影響往返時延(RTT),,因此發(fā)生無線丟包時,,所計算出來的BWE值相對于正常情況下并不會產(chǎn)生較大變化。
基于以上事實和分析,,提出的TCPW-J算法對BWE進(jìn)行持續(xù)觀測,,得到TCP連接在一段時間內(nèi)的BWE變化范圍,并劃分網(wǎng)絡(luò)擁塞情況等級,。根據(jù)計算的網(wǎng)絡(luò)擁塞等級,,推斷當(dāng)前網(wǎng)絡(luò)的擁塞情況,并做出恰當(dāng)?shù)恼{(diào)整,。
1.2 算法實現(xiàn)
TCPW-J算法持續(xù)計算BWE并記錄其最大和最小值,,得到BWE的變化范圍,即:
結(jié)合式(1),、式(2),,可以看出A∈[0,1]表示了當(dāng)前帶寬估計值與歷史變化情況相比的大小程度,間接地反映了網(wǎng)絡(luò)的擁塞情況,。式(2)中的A越小,,表明當(dāng)前網(wǎng)絡(luò)帶寬已經(jīng)處于較好的情況,網(wǎng)絡(luò)擁塞的可能性較小或趨于穩(wěn)定,;反之,,A越大則表明網(wǎng)絡(luò)擁塞的可能性越大或程度越高。這里將A劃分成三個等級,,其等級L越高則表明擁塞可能性越大,。
L=1 A∈[0,0.25]2 A∈(0.25,0.5]3 A∈(0.5,1]
根據(jù)上述劃分的擁塞等級范圍,對TCPW的擁塞控制算法進(jìn)行改進(jìn)。
新的擁塞控制算法用偽代碼描述如下:
(1) 收到新的ACK之后
if (L==1||L==2)
/*網(wǎng)絡(luò)擁塞可能性較小或輕度擁塞*/
if(cwnd>ssthresh) /*擁塞避免*/
cwnd=cwnd+1/cwnd;
else /*慢啟動*/
cwnd=cwnd+1;
endif
else /*網(wǎng)絡(luò)擁塞可能性較大*/
ssthresh=(BWE*RTTmin)/seg_size;
if(cwnd>ssthresh)
cwnd=cwnd+(1/cwnd)/2;
/*減慢cwnd增長速度*/
else
cwnd=cwnd+1;
endif
endif
(2) 收到重復(fù)的ACK之后
if(3 DUPACKs are received)
if (L==1) /*網(wǎng)絡(luò)擁塞可能性較小*/
快速重傳;
if(cwnd>ssthresh) /*擁塞避免*/
cwnd=cwnd+1/cwnd;
else /*保持慢啟動*/
cwnd=cwnd+1;
endif
else if(L==2) /*網(wǎng)絡(luò)擁塞呈現(xiàn)擁塞趨勢*/
快速重傳;
快速恢復(fù);
else if(L==3) /*網(wǎng)絡(luò)擁塞可能性較大*/
ssthresh=(BWE*RTTmin)/seg_size;
if(cwnd>ssthresh)
cwnd=ssthresh;
endif
endif
endif
2 仿真結(jié)果與分析
采用OPNET Modeler 14.5仿真平臺對New Reno,、TCPW以及TCP-J算法在混合鏈路上進(jìn)行仿真,如圖1所示,。
在圖1中模擬了一個作為數(shù)據(jù)源的服務(wù)器子網(wǎng)(Server Subnet),、一個數(shù)據(jù)訪問子網(wǎng)(Client Subnet)以及IP云(IP Cloud)作為兩者之間傳輸數(shù)據(jù)的混合鏈路。配置FTP服務(wù)用于模擬連續(xù)的TCP數(shù)據(jù)傳輸,,F(xiàn)TP文件大小為50 MB,,數(shù)據(jù)包延遲為0.1 s,兩個子網(wǎng)之間是瓶頸鏈路,,最大傳輸速率為10 Mb/s,,模擬時間為12 min。
2.1不同誤碼率下的吞吐量分析
表1中給出了三種算法分別在不同誤碼率環(huán)境下的吞吐量統(tǒng)計結(jié)果,??梢院芮逦乜吹剑谡`碼率較高的環(huán)境下,,TCPW-J的吞吐量明顯高于New Reno和TCPW算法,。而且隨著誤碼率的提高,TCPW-J相對于TCPW的吞吐量的提升更加明顯,,其原因在于TCPW-J算法能夠有效地區(qū)分擁塞丟包和無線丟包,,減少了不必要的擁塞窗口調(diào)整次數(shù),提高了帶寬的利用率,。
在測試友好性的過程中,建立兩個不同的TCP流,,分別運行New Reno和TCPW-J協(xié)議。表2給出了這兩種算法在不同誤碼率環(huán)境下的平均吞吐量對比結(jié)果,。從結(jié)果中可以看出,,TCPW-J對New Reno是友好的,。
本文在TCPW的基礎(chǔ)之上提出了改進(jìn)算法TCPW-J,,根據(jù)帶寬估計值BWE的變化情況劃分擁塞等級,以推測最可能導(dǎo)致丟包的原因,,區(qū)分無線丟包和擁塞丟包,。仿真實驗結(jié)果表明,TCPW-J算法在誤碼率較高的無線網(wǎng)絡(luò)環(huán)境下,,不僅表現(xiàn)出了更高的網(wǎng)絡(luò)帶寬利用率吞吐量,,而且保持了良好的公平性和友好性。
參考文獻(xiàn)
[1] CLAUDIO C, MARIO G, SAVERIO M, et al. TCP westwood: end-to-end congestion control for wired/wireless networks[J]. Wireless Networks Journal, 2002(8):467-469.
[2] LOW SH, PAGANINI F, DOYLE J C. Internet congestion control [J]. IEEE Control Systems Magazine, 2002,22(1):28-43.
[3] CHEN J, PAGANINI F, WANG R. Fluid-flow analysis of TCP westwood with RED[A]. Proceedings of the IEEE GLOBECOM 2003, 2003:4064-4068.
[4] (美)STEVENS W R著.TCP/IP詳解,,卷1:協(xié)議[M]. 范建華,等譯. 北京:機械工業(yè)出版社,,2000:226-243.
[5] JAIN R, CHIU D, HAWE W. A quantitative measure of fairness and discrimination for resource allocation in shared systems[Z]. DEC Research Report TR-301.1984.