《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信與網(wǎng)絡(luò) > 設(shè)計(jì)應(yīng)用 > TCP-BM:一種適用于異構(gòu)網(wǎng)絡(luò)的TCP協(xié)議改進(jìn)策略*
TCP-BM:一種適用于異構(gòu)網(wǎng)絡(luò)的TCP協(xié)議改進(jìn)策略*
胡飛飛, 李 云, 劉期烈
重慶郵電大學(xué)無線信息網(wǎng)絡(luò)研究中心, 重慶 400065
摘要: 針對(duì)異構(gòu)網(wǎng)絡(luò)中的擁塞控制問題進(jìn)行了研究,以傳統(tǒng)的TCP Reno協(xié)議為基礎(chǔ)提出一種改進(jìn)算法TCP-BM。利用往返時(shí)延值將慢啟動(dòng)階段分為三個(gè)部分;利用往返時(shí)延值將擁塞避免階段分為正增長和負(fù)增長兩個(gè)過程。網(wǎng)絡(luò)發(fā)生丟包后,通過往返時(shí)延值與歷史記錄的比較以及估計(jì)的帶寬值的比較,區(qū)分丟包原因,從而對(duì)擁塞窗口和慢啟動(dòng)閾值采取不同調(diào)整策略。仿真驗(yàn)證證明,改進(jìn)后的TCP算法性能優(yōu)于傳統(tǒng)的TCP Reno協(xié)議。
中圖分類號(hào): TP393.04
文獻(xiàn)標(biāo)識(shí)碼: A
TCP-BM:a kind of TCP protocol improvement over heterogeneous network
HU Fei Fei, LI Yun, LIU Qi Lie
Research Center for Wireless Information Networks, Chongqing University of Posts and Telecommunications,Chongqing 400065, China
Abstract: Researching the congestion control of heterogeneous networks, a new TCP algorithm named TCP based Measurement is proposed based on the traditional TCP Reno Protocol. It uses the RTT to divide the slow start stage into three parts firstly;and then divide the avoiding congestion stage into two processes: positive and negative. After the packet lost in the network, it can distinguish the lose reason by comparing the latest RTT with the historic record and by estimating the bandwith, then it will change the value of the congestion window and the slow start threshold differently. The simulation results prove that the improved that TCP algorithm performs better than the traditional TCP Reno Protocol.
Key words : heterogeneous network; TCP; congestion control; RTT

    隨著通信網(wǎng)絡(luò)的不斷發(fā)展,不同類型的網(wǎng)絡(luò)并存成為目前通信領(lǐng)域的一種普遍現(xiàn)象,有線/無線混合網(wǎng)絡(luò)成為目前通信研究的一個(gè)熱點(diǎn),通常情況下這種有線/無線混合網(wǎng)絡(luò)被稱為異構(gòu)網(wǎng)絡(luò)。異構(gòu)網(wǎng)絡(luò)的整體性能受TCP協(xié)議算法的影響,所以提高TCP協(xié)議性能對(duì)提高異構(gòu)網(wǎng)絡(luò)的整體性能來說是非常必要的。目前應(yīng)用最廣泛的TCP協(xié)議是TCP Reno協(xié)議,它是為有線網(wǎng)絡(luò)設(shè)計(jì)的,在有線網(wǎng)絡(luò)環(huán)境中性能表現(xiàn)良好。由于異構(gòu)網(wǎng)絡(luò)中有著較高的誤碼率,較大的帶寬延時(shí)積,鏈路帶寬不對(duì)稱等特性,使得傳統(tǒng)的TCP Reno協(xié)議應(yīng)用在異構(gòu)網(wǎng)絡(luò)環(huán)境中性能低下。因此如何提高異構(gòu)網(wǎng)絡(luò)下的TCP性能已經(jīng)成為了一個(gè)研究熱點(diǎn)[1-3]。
    目前改善TCP協(xié)議在異構(gòu)網(wǎng)絡(luò)環(huán)境下的性能的方法主要分為以下三類:鏈路層方法、分離連接方法和端到端方法。
    鏈路層方法是通過本地重傳和前向糾錯(cuò)屏蔽發(fā)送端與鏈路相關(guān)的丟包。但由于鏈路層協(xié)議與高層協(xié)議都有獨(dú)立的差錯(cuò)控制功能,存在一定的重復(fù)性,相互競(jìng)爭(zhēng)會(huì)降低無線信道的利用率,導(dǎo)致端到端吞吐量下降。代表性協(xié)議是Snoop[4]。
    分離鏈接方法是在基站處將TCP連接分成有線連接和無線連接兩部分:有線連接部分使用傳統(tǒng)的TCP協(xié)議,無線連接部分使用改進(jìn)的TCP協(xié)議。它破壞了端到端的TCP語義連接性。代表性協(xié)議是Indirect-TCP[5]。
    端到端方法只修改TCP發(fā)送端和接收端的協(xié)議,保證了端到端的TCP語義連接性。代表性協(xié)議是TCP Westwood[6]。該協(xié)議在發(fā)端監(jiān)視收到的ACK數(shù)據(jù)流,并以此來估計(jì)當(dāng)前鏈路的可用帶寬。一旦丟包,發(fā)端將利用估計(jì)的帶寬對(duì)慢啟動(dòng)閾值和擁塞窗口進(jìn)行適當(dāng)設(shè)置,保證了網(wǎng)絡(luò)的快速恢復(fù)并可更有效地避免擁塞。
    本文提出了一種適用于異構(gòu)網(wǎng)絡(luò)的TCP算法TCP -BM(TCP Based Measurement),其基本思想是利用往返時(shí)延RTT來控制擁塞窗口的增長速度,使發(fā)送窗口穩(wěn)定在一個(gè)比較理想的狀態(tài),在網(wǎng)絡(luò)發(fā)生丟包后,通過對(duì)RTT的實(shí)時(shí)分析判斷出丟包原因,從而采取相應(yīng)的控制措施。
1 傳統(tǒng)TCP Reno協(xié)議及分析
1.1 TCP Reno協(xié)議流程

    TCP Reno協(xié)議包括慢啟動(dòng)、擁塞避免、快速重傳和快速恢復(fù)4個(gè)階段:
    (a)慢啟動(dòng)階段:TCP將擁塞窗口值設(shè)為1,發(fā)送端每收到一個(gè)新的ACK就把擁塞窗口值增加一個(gè),即W=W+1,W表示擁塞窗口;
    (b)擁塞避免階段:發(fā)送端每收到一個(gè)新的ACK就把擁塞窗口值增加擁塞窗口值的倒數(shù),即W=W+1/W;
    (c)丟包標(biāo)志為3個(gè)重復(fù)ACK:發(fā)送端重傳丟失的包,并且在窗口范圍內(nèi)繼續(xù)發(fā)送新的數(shù)據(jù)包,此后發(fā)送端每收到1個(gè)重復(fù)的ACK就將擁塞窗口值增加1;
    (d)丟包標(biāo)志為計(jì)時(shí)器超時(shí):發(fā)送端重傳丟失的包,然后將慢啟動(dòng)閾值設(shè)為當(dāng)前窗口的一半,將擁塞窗口設(shè)為1。
    因?yàn)門CP協(xié)議是端到端的協(xié)議,因此這里的說明只涉及發(fā)送端和接收端。在連接開始時(shí),發(fā)送端執(zhí)行(a), 直到擁塞窗口值大于(或等于)慢啟動(dòng)閾值或者出現(xiàn)丟包:(1)如果是出現(xiàn)丟包,發(fā)送端執(zhí)行策略與丟包標(biāo)志相關(guān),如果丟包標(biāo)志為3個(gè)重復(fù)ACK,則發(fā)送端執(zhí)行(c), 直到發(fā)送端收到新的ACK為止,然后發(fā)送端TCP將擁塞窗口和慢啟動(dòng)閾值都設(shè)為快速重傳前擁塞窗口值的一半,重新開始擁塞避免階段;如果丟包標(biāo)志為計(jì)時(shí)器超時(shí),則發(fā)送端執(zhí)行(d),重新開始慢啟動(dòng)階段;(2)如果是擁塞窗口大于(或等于)慢啟動(dòng)閾值,則發(fā)送端執(zhí)行(b),該策略一直持續(xù)到出現(xiàn)丟包為止,一旦出現(xiàn)丟包,發(fā)送端執(zhí)行策略同慢啟動(dòng)階段出現(xiàn)丟包時(shí)采取的策略一樣。
1.2 TCP Reno協(xié)議分析
    快速恢復(fù)算法避免了在快速重傳之后通道為空的現(xiàn)象,從而避免了在單個(gè)報(bào)文丟失后重新開始慢啟動(dòng)階段。TCP發(fā)送端在每個(gè)往返時(shí)延內(nèi)最多重傳1個(gè)包,因此在只有1個(gè)數(shù)據(jù)包丟失的情況下,該協(xié)議性能最佳。當(dāng)1個(gè)窗口中有2個(gè)報(bào)文丟失時(shí),在TCP發(fā)送端快速重傳和快速恢復(fù)就將被執(zhí)行2次,因?yàn)樵诳焖倩謴?fù)階段窗口的調(diào)整策略為ssthresh=cwnd/2,cwnd=ssthresh,因此慢啟動(dòng)閾值和擁塞窗口都將被減小2次,這是不必要的。當(dāng)有更多數(shù)據(jù)包丟失時(shí),根據(jù)Reno協(xié)議TCP發(fā)送端就必須等待重發(fā)計(jì)時(shí)器超時(shí)才能恢復(fù)。
2 TCP-BM協(xié)議
    該算法的基本思想是在慢啟動(dòng)階段根據(jù)網(wǎng)絡(luò)的實(shí)時(shí)狀況來合理地調(diào)節(jié)擁塞窗口的增長速度;將擁塞避免過程分為正增長過程和負(fù)增長過程,從而使發(fā)送窗口穩(wěn)定在比較理想的狀態(tài)而有預(yù)見性地避免擁塞。在網(wǎng)絡(luò)發(fā)生丟包后,通過對(duì)RTT的實(shí)時(shí)分析以及估計(jì)的帶寬判斷出丟包原因,從而采取不同的恢復(fù)措施。下面詳細(xì)介紹TCP-BM協(xié)議的幾個(gè)階段,未說明部分沿用傳統(tǒng)的TCP Reno協(xié)議。
2.1慢啟動(dòng)階段
  開始時(shí)數(shù)據(jù)量較少,對(duì)帶寬的利用率較低,因此可以使擁塞窗口較快地增長;當(dāng)擁塞窗口增大到一定程度時(shí),減小其增長速度,使其相對(duì)緩慢并且平滑地增加;最后當(dāng)擁塞窗口的大小接近于慢啟動(dòng)閾值時(shí),再次減小其增加速度,使其更加緩慢且平滑地接近于慢啟動(dòng)閾值。算法描述如下:
    If (cwnd<ssthresh)
        If (cwnd*(1+(double)(rtt/rttmin)) <ssthresh)
            cwnd+=(double)(rtt/rttmin);
            else if (2*cwnd < ssthresh)
            cwnd+=1;
        else cwnd+=(double)(rttmin/ rtt)
其中,cwnd表示擁塞窗口;ssthresh表示慢啟動(dòng)閾值,rtt表示當(dāng)前的往返時(shí)延值,它反映當(dāng)前的網(wǎng)絡(luò)狀態(tài);rttmin表示往返時(shí)延歷史數(shù)據(jù)中的最小值,它反映歷史上網(wǎng)絡(luò)的最好狀態(tài)。在連接開始時(shí),擁塞窗口大小設(shè)為1,以后每收到一個(gè)ACK,擁塞窗口就增加(double)(rtt/rttmin);擁塞窗口增大到一定程度時(shí)降低其增長速度,變?yōu)槊渴盏揭粋€(gè)ACK,擁塞窗口就增加1;最后當(dāng)擁塞窗口接近于慢啟動(dòng)閾值時(shí),擁塞窗口以更緩慢的方式進(jìn)行增長,cwnd+=(double)(rttmin/rtt), 直到擁塞窗口大于(或等于)慢啟動(dòng)閾值或者出現(xiàn)丟包為止。
2.2 擁塞避免階段
    當(dāng)擁塞窗口大于(或等于)慢啟動(dòng)閾值后,TCP發(fā)送端發(fā)送的數(shù)據(jù)量已經(jīng)向網(wǎng)絡(luò)所能容忍的一個(gè)限度靠近,此時(shí)不能再使擁塞窗口像慢啟動(dòng)階段那樣快速地增長,因此利用往返時(shí)延值將此階段分為正增長和負(fù)增長2個(gè)階段,使傳輸過程能更長時(shí)間地穩(wěn)定在該階段。算法描述如下:
    if((rtt/rttmin)< A
        cwnd = cwnd + B1*increment;
  else
    cwnd = cwnd - B2*increment;
    令T=rtt/rttmin,則T表示當(dāng)前往返時(shí)延值是往返時(shí)延歷史數(shù)據(jù)中的最小值的多少倍,即當(dāng)前的網(wǎng)絡(luò)狀態(tài)比歷史上網(wǎng)絡(luò)的最好狀態(tài)差多少;A表示擁塞閾值,即當(dāng)前往返時(shí)延值達(dá)到往返時(shí)延歷史數(shù)據(jù)中的最小值的A倍時(shí),網(wǎng)絡(luò)將趨于擁塞。在擁塞避免階段,如果T&ge;A,則說明網(wǎng)絡(luò)趨于擁塞,此時(shí)TCP發(fā)送端不宜再增加擁塞窗口,相反,TCP發(fā)送端將減小擁塞窗口以避免擁塞,擁塞窗口減小策略為cwnd=cwnd-B2*increment,B2>0;如果T<A,說明網(wǎng)絡(luò)還沒有趨于擁塞,此時(shí)TCP發(fā)送端可以增加擁塞窗口大小,進(jìn)一步提高網(wǎng)絡(luò)帶寬利用率,擁塞窗口增加策略為cwnd=cwnd+B1*increment,B1>0; B1、B2為調(diào)整因子,B1用來增加擁塞窗口的大小,過大會(huì)使擁塞窗口增長過快,容易導(dǎo)致?lián)砣麃G包,過小則無法充分利用網(wǎng)絡(luò)資源;B2用來減小擁塞窗口的大小,有預(yù)見性地避免擁塞。B1、B2相互制約,使得擁塞窗口在增大到一定程度以后開始減小,這樣可以使擁塞窗口維持在一個(gè)理想的發(fā)送狀態(tài),而使網(wǎng)絡(luò)不至于發(fā)生擁塞。經(jīng)過多次仿真分析A取1.5,B1取1,B2取0.5能達(dá)到較好的性能。
2.3快速重傳和快速恢復(fù)
  網(wǎng)絡(luò)發(fā)生丟包后,TCP發(fā)送端采取快速重傳措施,重傳丟失的報(bào)文,然后根據(jù)丟包標(biāo)志的不同,通過比較最新的往返時(shí)延值和前一次的往返時(shí)延值以及估計(jì)的帶寬值來區(qū)分丟包原因,從而采取不同的控制措施。算法描述如下:
    If (dupacks)
        if(rtt>=lastrtt&&bw2<bw1)
            ssthresh= cwnd /2, cwnd =ssthresh;
    if (timeout)
        ssthresh=cwnd/2,cwnd=1;
其中,dupacks表示3個(gè)重復(fù)ACK的情況,lastrtt表示上一次的往返時(shí)延值,bw2和bw1分別表示第二個(gè)重復(fù)ACK時(shí)的測(cè)量帶寬和第三個(gè)重復(fù)ACK時(shí)的測(cè)量帶寬(bw1=d/(t2-t1),bw2=d/(t3-t2),d表示ACK所確認(rèn)的報(bào)文段的長度,t1表示第一個(gè)重復(fù)ACK到來的時(shí)間,t2表示第二個(gè)重復(fù)ACK到來的時(shí)間,t3表示第三個(gè)重復(fù)ACK到來的時(shí)間),timeout表示計(jì)時(shí)器超時(shí)的情況。當(dāng)丟包標(biāo)志為dupacks時(shí),如果rtt&ge;lastrtt并且bw2<bw1,則認(rèn)為是網(wǎng)絡(luò)擁塞導(dǎo)致丟包,因此需要減小擁塞窗口和慢啟動(dòng)閾值,調(diào)整策略與傳統(tǒng)的TCP Reno協(xié)議方法相同;否則就認(rèn)為是無線誤碼導(dǎo)致網(wǎng)絡(luò)丟包,對(duì)慢啟動(dòng)閾值和擁塞窗口值不做調(diào)整。當(dāng)丟包標(biāo)志為timeout時(shí),因?yàn)橛?jì)時(shí)器超時(shí)是比3個(gè)重復(fù)ACK更嚴(yán)重的情況,所以此處沿用傳統(tǒng)的方法對(duì)擁塞窗口和慢啟動(dòng)閾值進(jìn)行調(diào)整,其調(diào)整策略見算法描述。
3 性能分析
    在ns-2[7]仿真平臺(tái)上進(jìn)行仿真,其網(wǎng)絡(luò)拓?fù)淙鐖D1所示。網(wǎng)絡(luò)拓?fù)溆?段鏈路和4個(gè)節(jié)點(diǎn)組成,其中S表示TCP發(fā)送端,R表示路由器,BS表示基站,D表示TCP接收端,有線部分包括從發(fā)送端到路由器,從路由器到基站兩部分,最后一段為無線部分。其中發(fā)送端與路由器之間的有線鏈路帶寬為100 Mb/s,延遲為1 ms,路由器與基站之間的有線鏈路帶寬為100 Mb/s, 延遲為49 ms,基站與接收端之間的無線鏈路帶寬為1 Mb/s,延遲為0.01 ms。數(shù)據(jù)包的大小采用固定長度,其值設(shè)為1 000 byte,無線誤碼率設(shè)為0,仿真時(shí)間設(shè)為200 s,且只采用一個(gè)FTP數(shù)據(jù)流,該數(shù)據(jù)流在10 s開始,在200 s結(jié)束。

    在上述仿真環(huán)境下比較TCP-BM協(xié)議和TCP Reno協(xié)議擁塞窗口隨時(shí)間的變化情況,結(jié)果如圖2所示。


    圖2中,橫軸表示時(shí)間,單位為s,縱軸表示擁塞窗口大小,單位為packet。從圖2中不難看出,在整個(gè)200 s的仿真過程中,TCP Reno協(xié)議的擁塞窗口大小隨時(shí)間的變化非常劇烈,而TCP-BM協(xié)議的擁塞窗口的大小除了出現(xiàn)少數(shù)幾次較為劇烈的波動(dòng)之外,其余時(shí)間變化則較為平緩。對(duì)仿真追蹤所得到的實(shí)驗(yàn)數(shù)據(jù)進(jìn)行統(tǒng)計(jì)分析,TCP Reno協(xié)議的擁塞窗口最小值為1,最大值為26,且變化頻繁,變化范圍集中在10~18;而TCP-BM協(xié)議的擁塞窗口最小值為1,且只出現(xiàn)了屈指可數(shù)的幾次,最大值為21,穩(wěn)定之后變化范圍集中在13~17。
    對(duì)擁塞窗口值在時(shí)間上進(jìn)行平均,TCP Reno協(xié)議的擁塞窗口平均值大小為13.10,而TCP-BM協(xié)議的擁塞窗口平均值大小為14.03,這說明TCP-BM協(xié)議發(fā)送量比TCP Reno協(xié)議有明顯增加,這必將會(huì)導(dǎo)致業(yè)務(wù)吞吐量的提高。
    對(duì)擁塞窗口值的方差在時(shí)間上進(jìn)行平均可得TCP Reno協(xié)議的擁塞窗口值的平均方差大小為28.86,而TCP-BM協(xié)議的擁塞窗口值的平均方差為1.72,這表明了TCP-BM協(xié)議的擁塞窗口變化情況要比改進(jìn)前緩和得多,說明了TCP-BM協(xié)議的帶寬利用率較為穩(wěn)定。
    對(duì)TCP Reno協(xié)議和TCP-BM協(xié)議吞吐量變化情況進(jìn)行比較,結(jié)果如圖3所示。

    圖3中,橫軸表示時(shí)間,單位為s,縱軸表示吞吐量,單位為kb/s。從圖3中可以明顯看出,TCP-BM協(xié)議的吞吐量比TCP Reno協(xié)議有明顯的提高。對(duì)仿真數(shù)據(jù)進(jìn)行統(tǒng)計(jì)分析可知,TCP Reno協(xié)議的吞吐量從零開始,然后急劇增加,增加到500 kb/s左右后發(fā)生波動(dòng),且波動(dòng)幅度較大,60 s后趨于穩(wěn)定,最終穩(wěn)定在540 kb/s左右;TCP-BM協(xié)議的吞吐量從零開始,然后急劇增加,增加到600 kb/s左右開始緩慢地上升,分別在50 s和145 s左右時(shí)出現(xiàn)2次相對(duì)大的波動(dòng),這是因?yàn)槌霈F(xiàn)了計(jì)時(shí)器超時(shí)的情況。圖2中TCP-BM的擁塞窗口波動(dòng)也可以說明這一問題。最終其吞吐量穩(wěn)定在644 kb/s左右,TCP-BM協(xié)議的吞吐量比TCP Reno協(xié)議提高了大約19.3%。
    最后對(duì)丟包率進(jìn)行統(tǒng)計(jì)分析,對(duì)上述仿真結(jié)果進(jìn)行計(jì)算可得,TCP Reno協(xié)議的丟包率為1.65%,而TCP-BM協(xié)議的丟包率為0.21%,對(duì)其進(jìn)行比較可發(fā)現(xiàn),TCP-BM協(xié)議的丟包率比TCP Reno協(xié)議的丟包率減小了1.44%,這也從一定程度上說明了TCP-BM協(xié)議的吞吐量比TCP Reno協(xié)議的吞吐量有所提高。
    在傳統(tǒng)的TCP Reno協(xié)議的基礎(chǔ)上提出了一種適用于異構(gòu)網(wǎng)絡(luò)的TCP擁塞控制協(xié)議,該協(xié)議在慢啟動(dòng)階段根據(jù)往返時(shí)延值適當(dāng)調(diào)整擁塞窗口的增長速度,在擁塞避免階段利用當(dāng)前的往返時(shí)延與往返時(shí)延的歷史最小值的比值來控制擁塞窗口的增加與減小,不但能充分利用網(wǎng)絡(luò)資源,并且在一定程度上可以有預(yù)見性地避免擁塞,當(dāng)網(wǎng)絡(luò)發(fā)生丟包后,通過比較當(dāng)前的往返時(shí)延值與歷史記錄以及比較測(cè)量的帶寬,從而區(qū)分丟包原因,對(duì)擁塞窗口和慢啟動(dòng)閾值采取不同調(diào)整策略。經(jīng)過仿真驗(yàn)證,改進(jìn)后的TCP算法性能優(yōu)于傳統(tǒng)的TCP Reno協(xié)議。下一步工作是要進(jìn)一步改進(jìn)該算法,使之適用于更復(fù)雜的網(wǎng)絡(luò)環(huán)境。
參考文獻(xiàn)
[1]     曲大鵬,黃東軍. 一種新的適用于異構(gòu)網(wǎng)絡(luò)的TCP算法[J]. 計(jì)算機(jī)應(yīng)用, 2007,27(10):2437.
[2]    葛鴿,張國清.一種適用于異構(gòu)網(wǎng)絡(luò)的TCP協(xié)議設(shè)計(jì)及其仿真[J].系統(tǒng)仿真學(xué)報(bào),2004,16(12):2875.
[3]     葉進(jìn),王建新,龔皓. 無線/有線網(wǎng)絡(luò)中基于自適應(yīng)丟包區(qū)分的TCP改進(jìn)[J].通信學(xué)報(bào),2007,28(5):15-16.
[4]     BAL K H, SASHA S, KATE R H. Improving reliable  transport and handoff performance in cellular wireless networks[J]. ACM,Wireless Networks, 1995,1(4):469-481.
[5]     BAKER A, BADRINATH B R. I-TCP: Indirect TCP for mobile hosts[A]. In the Proceedings of the 15th International Conference on Distributed Computing Systems,1995:136-143.
[6]     CASETTI C, GERLA M, MASCOLO S, et al. TCP Westwood: Bandwidth estimation for enhanced transport over  wireless links[A]. In Proceedings of ACM Modicums, 2001:287-297.
[7]     The network simulator - ns-2 [EB/OL]. http://www.isi.edu/nsnam/ns/

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。