摘要:由于互聯(lián)網(wǎng)中大量異構(gòu)網(wǎng)絡(luò)的存在,導(dǎo)致網(wǎng)絡(luò)的傳輸性能大大降低。為此,首先分析了異構(gòu)網(wǎng)絡(luò)中TCP的性能特點(diǎn),其次詳細(xì)介紹了如何通過增加PEP(performance enhancement proxies)的方法來改善異構(gòu)網(wǎng)絡(luò)的傳輸性能。
關(guān)鍵詞:異構(gòu)網(wǎng)絡(luò); 性能擴(kuò)展代理; 提前應(yīng)答; 往返延遲
中圖分類號:TP393.01文獻(xiàn)標(biāo)志碼:A
文章編號:1001-3695(2007)12-0324-03
0引言
隨著因特網(wǎng)的快速發(fā)展,其應(yīng)用范圍越來越廣。但是傳輸距離、延遲、有效帶寬不同,導(dǎo)致很多結(jié)構(gòu)不相同的局域網(wǎng)要進(jìn)行互聯(lián)。這種結(jié)構(gòu)的網(wǎng)絡(luò)稱為異構(gòu)網(wǎng)絡(luò),如衛(wèi)星網(wǎng)絡(luò)、無線網(wǎng)絡(luò)、QoS網(wǎng)絡(luò)等。異構(gòu)網(wǎng)絡(luò)進(jìn)行互聯(lián)時,傳輸性能將大大下降。為了提高網(wǎng)絡(luò)的傳輸性能,本文首先分析在異構(gòu)網(wǎng)絡(luò)中TCP的性能,然后介紹一種通過路由器支持的動態(tài)擁塞控制方法來改善TCP的性能。其中特別使用了性能擴(kuò)展代理[1]。
1傳統(tǒng)TCP的問題
為了描述異構(gòu)網(wǎng)絡(luò)中TCP的性能指標(biāo),本文采用如圖1所示的網(wǎng)絡(luò)結(jié)構(gòu),并用NS2模擬軟件進(jìn)行模擬。
圖1中,在A與C、D與B之間的連接模擬本地可達(dá)的網(wǎng)絡(luò),并且它們固定為10 Mbps的帶寬和10 ms的延遲。C與D之間的連接模擬因特網(wǎng)中的異構(gòu)網(wǎng)絡(luò),并且它擁有不同的延遲(由參數(shù)d確定)和1 Mbps的帶寬,因此它是這個網(wǎng)絡(luò)的連接瓶頸。假設(shè)從A到B之間是一個長的TCP數(shù)據(jù)流,使用標(biāo)準(zhǔn)的TCP配置,如TCP NewReno,窗口大小為20,初始擁塞窗口為1,每個連接等待隊(duì)列大小為50。本文將比較B點(diǎn)的吞吐量。
首先來看在延遲與帶寬均不同的情況下TCP的性能。從圖2可以看到,隨著延遲的增加,吞吐量越來越低。這是因?yàn)橐坏┭舆t變高,要達(dá)到有效帶寬所允許的最大吞吐量,在瓶頸連接處就需要較大的TCP窗口和較大的緩存。從圖2中還可以看到,隨著延遲時間變大,慢啟動的時間也變長,從而導(dǎo)致TCP的性能下降。這是非常重要的,因?yàn)樵谝粋€TCP連接中,慢啟動時間對吞吐量影響很大,特別是在Web通信中。較大的時延將嚴(yán)重影響TCP性能。
圖2所示的模擬結(jié)果說明,延遲和帶寬這兩個參數(shù)將嚴(yán)重影響網(wǎng)絡(luò)的吞吐量,從而導(dǎo)致TCP的性能下降。其原因在于TCP端到端的控制模型。標(biāo)準(zhǔn)的TCP使用定時的ACK包來估計(jì)當(dāng)前可用的帶寬,并且使用加性增長和乘性減少的方法來對發(fā)送方的窗口大小作出反應(yīng)。假如給標(biāo)準(zhǔn)TCP一個小的緩存,這種方法將變得無效,因?yàn)榫彺娴姆磻?yīng)時間可能會比帶寬的變化速度還要慢,其結(jié)果將使TCP的性能下降。
2新的體系結(jié)構(gòu)解決方法
為了改善性能,提高吞吐量,可以通過在異構(gòu)網(wǎng)絡(luò)的邊緣路由器上設(shè)置PEP來控制TCP的數(shù)據(jù)流量(圖3)。其基本思路就是利用PEP來監(jiān)控網(wǎng)絡(luò)中通過其TCP數(shù)據(jù)流中的ACK包。在PEP處故意加快或減慢ACKs的發(fā)送,從而改變發(fā)送方數(shù)據(jù)包的發(fā)送速度,使控制循環(huán)(發(fā)送方到PEP再到發(fā)送方)縮短以達(dá)到更好的擁塞控制并提高吞吐量。
2.1在PEP下的擁塞控制
如果假設(shè)網(wǎng)絡(luò)擁塞通常發(fā)生在不同網(wǎng)絡(luò)的邊界處, PEP便可以控制所有經(jīng)過PEP的數(shù)據(jù)流,并且通過產(chǎn)生提前應(yīng)答來達(dá)到提高吞吐量的目的。通常情況下,當(dāng)接收方接收到一個數(shù)據(jù)包時,會給發(fā)送方發(fā)送一個ACK表示接收到數(shù)據(jù);發(fā)送方只有在接收到ACK后才可能繼續(xù)發(fā)送下一個數(shù)據(jù)包。但是如果采用了PEP,每當(dāng)有數(shù)據(jù)通過PEP時,它就會相應(yīng)地產(chǎn)生一個premature ACK返回給發(fā)送方;發(fā)送方在接收到premature ACK后,就可以發(fā)送下一個數(shù)據(jù)包,從而縮短了RTT的時間,增加了發(fā)送數(shù)據(jù)包的數(shù)量,提高了吞吐量。
當(dāng)使用premature ACK技術(shù)時,恢復(fù)那些被PEP確認(rèn)過但可能丟失的包便成了PEP要解決的問題。因此,PEP必須要為那些已經(jīng)被提前確認(rèn)過但相應(yīng)真實(shí)的ACK還沒有從接收方回到PEP的包提供一個緩存。當(dāng)真實(shí)的ACK到達(dá)時,PEP必須從緩存中清除相應(yīng)的數(shù)據(jù)包,并且丟棄這個真實(shí)的ACK(因?yàn)榘l(fā)送方已經(jīng)提前接收到了premature ACK)。同時也要注意其他可能引起丟包的情況,如超時重傳。此外,PEP必須控制premature ACK的發(fā)送速度,以防止發(fā)送方發(fā)包的速度過快而導(dǎo)致PEP的緩存溢出。
在PEP中設(shè)置一個緩存來存儲每一個通過PEP的數(shù)據(jù)包,并且通過設(shè)置一個閾值(watermark)來表示緩存的狀態(tài)。 這個狀態(tài)信息將被用于控制TCP數(shù)據(jù)流中的ACK。當(dāng)一個TCP數(shù)據(jù)流首次啟動時,PEP便相應(yīng)地設(shè)定緩存的最大值和watermark的初始值。當(dāng)一個TCP數(shù)據(jù)報(bào)文段到達(dá)邊緣路由器時,PEP將根據(jù)當(dāng)前緩存大小和watermark來做以下工作:
a)如果當(dāng)前緩存中數(shù)據(jù)包的數(shù)量小于watermark,PEP將拷貝這個報(bào)文段,并將其存入緩存;同時向發(fā)送方發(fā)送一個premature ACK,并將這個報(bào)文段標(biāo)志為packed。
b)如果當(dāng)前緩存中數(shù)據(jù)包的數(shù)量大于或等于watermark,但是小于最大的緩存大小,PEP也將拷貝這個報(bào)文段,并將其存入緩存,但是不產(chǎn)生premature ACK,并將這個報(bào)文段標(biāo)志為stored。
c)如果當(dāng)前緩存中數(shù)據(jù)包的數(shù)量大于或等于最大緩存大?。ㄈ缇彺嬉褲M),PEP什么也不做(如讓這個報(bào)文段就像沒有PEP一樣通過)。
當(dāng)一個真實(shí)的ACK返回到PEP時,相應(yīng)的數(shù)據(jù)報(bào)文段將從緩存中取出并清除掉。如果這個數(shù)據(jù)報(bào)文段已經(jīng)標(biāo)志為packed,路由器便丟棄這個ACK包。另外,由于這樣會縮短緩存長度,一些之前已經(jīng)被標(biāo)志為stored的報(bào)文段可能會下降且低于watermark。PEP將為這些報(bào)文段產(chǎn)生新的premature ACK,并且將它們的標(biāo)志從stored改為packed。這就是說,PEP向發(fā)送方發(fā)出提示以發(fā)送更多的數(shù)據(jù)。
2.2閾值
從以上的討論中可以看出,watermark在PEP的擁塞控制中是一個很重要的變量。Watermark是該方法設(shè)計(jì)中一個很重要的點(diǎn)。Watermark將PEP緩存分成兩部分。當(dāng)可用緩存長度下降到低于watermark時,表示TCP發(fā)送方發(fā)送速度過慢。因此,在這種情況下,PEP總是產(chǎn)生premature ACK。當(dāng)可用緩存長度上升大于watermark時,表示TCP發(fā)送方發(fā)送速度過快。此時,PEP便抑制premature ACK的發(fā)送。當(dāng)真實(shí)的ACK到來時,這些之前被抑制的premature ACK便可以被釋放。這樣,PEP便能夠使用TCP發(fā)送方的自同步(self-clocking)來控制它的發(fā)送速度。
在某種意義上,watermark決定了發(fā)送方向接收方發(fā)送數(shù)據(jù)的速度。由于這個最佳速度是基于當(dāng)前可用帶寬的,watermark必須是動態(tài)的,不能固定不變。例如,緩存長度低于watermark并且可用帶寬下降,由于固定的watermark,PEP將仍然發(fā)送premature ACK來促使發(fā)送方發(fā)送更多的數(shù)據(jù),這將導(dǎo)致緩存溢出和擁塞;如果可用帶寬上升,但是watermark沒有相應(yīng)地作出改變,盡管網(wǎng)絡(luò)中可以傳輸更多的數(shù)據(jù),PEP可能還是會抑制發(fā)送premature ACK,這將導(dǎo)致吞吐量達(dá)不到最大。
總結(jié)這個體系結(jié)構(gòu),PEP擁塞控制要優(yōu)于傳統(tǒng)TCP的擁塞控制。當(dāng)在異構(gòu)網(wǎng)絡(luò)中發(fā)生擁塞時,傳統(tǒng)TCP中端節(jié)點(diǎn)發(fā)現(xiàn)有效帶寬變化要很長一段時間,而PEP擁塞控制就是要利用premature ACK來縮短TCP控制循環(huán)的反饋時間以避免產(chǎn)生該問題。
3模擬結(jié)果
筆者已經(jīng)在NS2中實(shí)現(xiàn)了PEP體系結(jié)構(gòu)。模擬設(shè)置除了將PEP代理置于節(jié)點(diǎn)C之外與圖1的結(jié)構(gòu)一樣。C是異構(gòu)網(wǎng)絡(luò)的邊緣路由器。在為新的模擬過程采集完數(shù)據(jù)之后,筆者將其與先前沒有PEP時的情況作了比較,并將這些數(shù)據(jù)做成了圖表,如圖4所示。標(biāo)有“TCP”的曲線代表先前模擬過程所得的數(shù)據(jù),標(biāo)有“PEP”的曲線代表新的有PEP的模擬過程所得到的數(shù)據(jù)。
圖4比較了標(biāo)準(zhǔn)TCP和有PEP存在時的網(wǎng)絡(luò)基本吞吐量。結(jié)果表明有PEP存在時的吞吐量要比標(biāo)準(zhǔn)TCP的吞吐量提高了約100%。其原因首先在于premature ACK機(jī)制。在這個網(wǎng)絡(luò)模擬中,PEP收到發(fā)送方的數(shù)據(jù)報(bào)文段用了10 ms。所以每隔20 ms,一個premature ACK就可以回到發(fā)送方使其擁塞窗口加倍,然而標(biāo)準(zhǔn)TCP將花費(fèi)220 ms或者420 ms來收到第一個ACK并使其擁塞窗口加倍。其次,在TCP傳輸中,PEP將調(diào)整watermark的值以改變緩存長度從而使發(fā)送方加快或減慢數(shù)據(jù)的發(fā)送速度,以達(dá)到最大的吞吐量。標(biāo)準(zhǔn)的TCP不能預(yù)先確定高的延遲,并且當(dāng)有足夠帶寬時發(fā)送速度仍然很低,從而使吞吐量也低。
4結(jié)束語
國內(nèi)外也有很多方法來處理TCP的性能問題。它們大多是通過采用一種新的TCP機(jī)制(如TCP擴(kuò)展[2]和新的算法[3])或者是一種不合理的配置(如極大的窗口大?。﹣韺CP進(jìn)行修改。但是這些方法最大的缺點(diǎn)在于一開始就要搞清楚中間網(wǎng)絡(luò)的狀態(tài)并作出合理的配置。本文首先說明了在帶寬不同和延遲差距增大情況下TCP的性能,然后介紹了一種新的基于PEP的方法,使用了premature ACK和動態(tài)watermark機(jī)制來確保發(fā)送方與接收方之間數(shù)據(jù)流的傳輸速度,從而提高了網(wǎng)絡(luò)吞吐量。通過模擬試驗(yàn)可以得出,在TCP的傳輸中,PEP更加適合于帶寬和延遲不同的異構(gòu)網(wǎng)絡(luò)。
參考文獻(xiàn):
[1]BORDER J, KOJO M, GRINER J, et al. RFC 3135, Performance enhancing proxies[S].2000.
[2]JACBSON V, BRADEN R, BORMAN D. IETF RFC 1323, TCP ex-
tensions for high performance[S].1992.
[3]FLOYD S, HENDERSON T. IETF RFC 2582, The NewReno modification to TCP’s fast recovery algorithm[S]. 1999.
[4]TANENBAUM A S.計(jì)算機(jī)網(wǎng)絡(luò)[M].3版.北京:清華大學(xué)出版社,1998:259-432.
[5]徐雷鳴,龐博,趙耀.NS與網(wǎng)絡(luò)模擬[M].北京:人民郵電出版社,2003.
[6]STEVENS W R. TCP/IP詳解 卷1:協(xié)議[M].北京:機(jī)械工業(yè)出版社,2002:223-359.
[7]ALLMAN M, DAWKINS S, GLOVER D, et al. RFC 2760, Ongoing TCP research rebated to satellites[S]. 2000.
[8]DUTTA D, ZHANG Y. An active proxy based architecture for TCP in heterogeneous variable bandwidth networks[C]//IEEE Global Telecommunications Conference. San Antonio: IEEE Press, 2001:2316-2320.
[9]OSADA S, YOKOHIRA T, WANG H, et al. Performance improvement of TCP using performance enhancing proxies-effect of premature ACK transmission timing on throughput[C]//Proc of the 6th Asia-Pacific Symposium on Information and Telecommunication Technologies(APSITT). 2005:7-12.
“本文中所涉及到的圖表、注解、公式等內(nèi)容請以PDF格式閱讀原文”