專利名稱:一種用于衛(wèi)星網(wǎng)絡(luò)的傳輸控制協(xié)議方法
技術(shù)領(lǐng)域:
本發(fā)明屬于計(jì)算機(jī)網(wǎng)絡(luò)和衛(wèi)星信道傳輸技術(shù)領(lǐng)域,涉及一種適合衛(wèi)星網(wǎng)絡(luò)的 TCP (Transmission Control Protocol)傳輸控制方法,主要用于解決衛(wèi)星通信數(shù)據(jù)傳輸, 以提高傳輸數(shù)據(jù)的效率,減少系統(tǒng)開(kāi)銷和網(wǎng)絡(luò)延遲。
背景技術(shù):
隨著互聯(lián)網(wǎng)的迅速發(fā)展以及信息全球化的加快,多媒體技術(shù)、通訊技術(shù)獲得了巨 大發(fā)展。與此同時(shí),各種新的業(yè)務(wù)需求如遠(yuǎn)程教育、電視會(huì)議、遠(yuǎn)程醫(yī)療的產(chǎn)生對(duì)網(wǎng)絡(luò)又提 出了新的要求,現(xiàn)有的地面網(wǎng)絡(luò)已不能完全滿足用戶的需求。交互的、高速的、和因特網(wǎng)相 結(jié)合的新一代衛(wèi)星通信網(wǎng)絡(luò)很好的解決了這些問(wèn)題。衛(wèi)星通信的面積廣、通信費(fèi)用與距離 無(wú)關(guān)、不受地面自然災(zāi)害影響等固有的優(yōu)點(diǎn),很好的適應(yīng)了當(dāng)前迅猛發(fā)展的互聯(lián)網(wǎng)業(yè)務(wù)需 求,同時(shí)這也使得對(duì)衛(wèi)星網(wǎng)絡(luò)協(xié)議的研究成為當(dāng)前的研究熱點(diǎn)。應(yīng)用需求的不斷變化給互聯(lián)網(wǎng)技術(shù)提出了巨大挑戰(zhàn),為了更有效地提供數(shù)據(jù)傳輸 業(yè)務(wù),減少與其他網(wǎng)絡(luò)協(xié)議的接口轉(zhuǎn)換,傳輸控制協(xié)議(Transmission ControlProtocol, TCP)在衛(wèi)星通信中受到了很大的關(guān)注。其中作為TCP協(xié)議核心的擁塞控制機(jī)制,是研究的 熱點(diǎn)問(wèn)題之一。網(wǎng)絡(luò)中如果通過(guò)路由器的流量過(guò)大就會(huì)引起網(wǎng)絡(luò)擁塞,即超過(guò)了路由器的 緩沖處理能力的時(shí)候,路由器就會(huì)丟棄數(shù)據(jù)包。發(fā)生丟包后,除了重傳丟失的數(shù)據(jù)包以外, TCP還會(huì)降低傳輸速率,以減少網(wǎng)絡(luò)中的數(shù)據(jù)流量,使路由器有足夠的時(shí)間來(lái)處理轉(zhuǎn)發(fā)數(shù) 據(jù),然后TCP逐漸增加傳輸速率來(lái)探測(cè)網(wǎng)絡(luò)的容量,避免擁塞再次發(fā)生。傳統(tǒng)的TCP應(yīng)用于地面有線網(wǎng)絡(luò)中性能很好,但是由于衛(wèi)星網(wǎng)絡(luò)所具有的大時(shí) 延、高誤碼率、鏈路不對(duì)稱等等與地面網(wǎng)絡(luò)相異的特點(diǎn),使得基于地面網(wǎng)絡(luò)的TCP協(xié)議并不 能很好的運(yùn)用于衛(wèi)星網(wǎng)路中。特別是地面有線網(wǎng)絡(luò)的誤碼率很低,丟包都默認(rèn)是鏈路擁塞 造成的,而衛(wèi)星網(wǎng)絡(luò)誤碼率較高,丟包可能是由于鏈路誤碼造成的,所以地面網(wǎng)絡(luò)中使用的 TCP擁塞控制會(huì)造成衛(wèi)星網(wǎng)絡(luò)吞吐量降低,不適合衛(wèi)星網(wǎng)絡(luò),如何提高TCP協(xié)議在衛(wèi)星網(wǎng)絡(luò) 中的性能成為重要的研究課題。當(dāng)前高速TCP擁塞控制是衛(wèi)星網(wǎng)絡(luò)研究的熱點(diǎn),其中的TCP ffestwood是代表之 一。TCP Westwood 算法(簡(jiǎn)稱 TCPW)是由 UCLA 大學(xué) High Performance InternetLab 實(shí) 驗(yàn)室提出的一種主要針對(duì)高誤碼率無(wú)線網(wǎng)絡(luò)、衛(wèi)星網(wǎng)絡(luò)等網(wǎng)絡(luò)的端到端的擁塞控制算法, 在原有TCP Reno基礎(chǔ)上修改而來(lái)的。它是基于帶寬估計(jì)開(kāi)發(fā)的,其主要思想是通過(guò)發(fā)送 端不斷檢測(cè)ACK的到達(dá)速率來(lái)進(jìn)行帶寬估計(jì)(BWE),然后當(dāng)擁塞發(fā)生時(shí),利用估計(jì)的帶寬 去調(diào)整窗口(cwnd)和慢啟動(dòng)門限(ssthresh),有效地利用了估計(jì)帶寬。擁塞控制機(jī)制為 AIAD (Additive Increase adaptive Decrease,力口性增力口適度減小)。
發(fā)明內(nèi)容
技術(shù)問(wèn)題本發(fā)明的目的是針對(duì)現(xiàn)有的為地面有線網(wǎng)絡(luò)設(shè)計(jì)的TCP擁塞控制不能 適應(yīng)衛(wèi)星網(wǎng)絡(luò)的需要的缺點(diǎn),提供一種用于衛(wèi)星網(wǎng)絡(luò)的TCP傳輸控制方法,從而提高衛(wèi)星網(wǎng)絡(luò)的吞吐量和公平性,減少系統(tǒng)開(kāi)銷和網(wǎng)絡(luò)延遲。本發(fā)明提出的方法可以在NS2網(wǎng)絡(luò)仿 真器中進(jìn)行仿真驗(yàn)證。技術(shù)方案為了實(shí)現(xiàn)本發(fā)明的目的,本發(fā)明提供了一種適合衛(wèi)星網(wǎng)絡(luò)的TCP傳輸 控制協(xié)議方法,該方法是一種在現(xiàn)有TCP ffestwood算法基礎(chǔ)上改進(jìn)的方法,通過(guò)改進(jìn)實(shí)現(xiàn) 了一種能夠提高衛(wèi)星網(wǎng)絡(luò)傳輸性能的算法TCPW_BS⑶。一、體系結(jié)構(gòu)TCPW基本的擁塞窗口動(dòng)態(tài)調(diào)整算法在慢啟動(dòng)階段和擁塞避免階段都與Reno相 同,沒(méi)有改變,基本思想是當(dāng)擁塞發(fā)生時(shí)用帶寬估計(jì)值(BWE)來(lái)調(diào)整擁塞窗口和慢啟動(dòng)門 限值,擁塞控制機(jī)制為AIAD (加性增加適度減小)。TCPW使用最廣泛的帶寬估計(jì)算法如下,其帶寬估計(jì)的采樣尺寸如圖1所示。bk = dk/ (t.-t^i)取樣(sample)BWEk = akBWEkA + (1 -ak)(bk +,_l)指數(shù)濾波器(exponential filter)
2r - At.cck = k + 濾波器權(quán)值(filter gain)其中BWEk :tk時(shí)刻濾波器過(guò)濾的可用估計(jì)帶寬;1/ X 濾波器的中斷頻率;A tk = tftH,其它參數(shù)意義同上。TCPW BE算法采用了適時(shí)變化的濾波器權(quán)值a k,提高了帶寬 估計(jì)的穩(wěn)定性,但是算法會(huì)過(guò)高估計(jì)網(wǎng)絡(luò)帶寬,而且當(dāng)有ACK壓縮發(fā)生時(shí),帶寬估計(jì)會(huì)不穩(wěn) 定,另外過(guò)高估計(jì)帶寬使得此算法占用過(guò)多的帶寬,對(duì)TCPReno不很友好。TCPW算法原理如圖2所示。本方法是在現(xiàn)有TCP ffestwood算法基礎(chǔ)上改進(jìn)的方 法。圖3給出了 TCPW-BS⑶算法的傳輸控制原理圖,其改進(jìn)實(shí)現(xiàn)方法為以下三點(diǎn)1.采用二分增長(zhǎng)的方法來(lái)快速搜索擁塞避免階段的最佳發(fā)送窗口,代替TCPW算 法中原有的線性增長(zhǎng)。本發(fā)明用最大窗口值maxw和最小窗口值minw來(lái)控制擁塞窗口 cwnd 的大小,定義目標(biāo)窗口 tarw為tarw = (maxw+minw)/2,用來(lái)作為下一個(gè)RTT后的擁塞窗口 的值;dist為目標(biāo)窗口和當(dāng)前窗口的差值;閾值smax用來(lái)限制初始時(shí)窗口增長(zhǎng)過(guò)大。當(dāng) dist > smax時(shí),即認(rèn)為目標(biāo)窗口與擁塞窗口的差值過(guò)大,則在下一個(gè)RTT后,將擁塞窗口 增加smax,即cwnd+ = smax ;當(dāng)dist < smax時(shí),在一個(gè)RTT之后將擁塞窗口增加dist,即 cwnd+ = dist。如果未發(fā)生丟包時(shí),令cwnd = tarw,并將最小窗口值更新為此時(shí)的窗口大 小,然后使用公式tarw= (maxW+minW)/2重新更新目標(biāo)窗口值。當(dāng)發(fā)生丟包后,令丟包前 的窗口大小為新的最大窗口值,并將最小窗口值更新為丟包后的窗口大小,此窗口值在改 進(jìn)TCPW算法中是通過(guò)帶寬估計(jì)值獲得的。同時(shí)使用公式tarw= (maxw+minw)/2更新目標(biāo) 窗口值。重復(fù)此過(guò)程,直至最大窗口和最小窗口的差值小于一預(yù)設(shè)的閾值smin;2.采取一種預(yù)測(cè)方案區(qū)分鏈路擁塞或鏈路誤碼。計(jì)算鏈路中正在傳輸?shù)臄?shù)據(jù)包的 個(gè)數(shù)paCketS_in_f light,然后與當(dāng)前擁塞窗口 cwnd進(jìn)行比較,如果大于當(dāng)前擁塞窗口,則 認(rèn)為丟包是擁塞造成的,從而進(jìn)入擁塞控制階段;否則,則認(rèn)為是誤碼等原因造成的丟包, 將窗口、慢啟動(dòng)門限值保持不變,繼續(xù)發(fā)送數(shù)據(jù)分組。消除衛(wèi)星網(wǎng)絡(luò)的無(wú)線鏈路高誤碼所引 起的擁塞窗口錯(cuò)誤變化;3.采用SACK選擇性確認(rèn)機(jī)制。在丟包時(shí)盡可能只重傳丟棄的分組,減小了 TCPW 算法在高誤碼率下發(fā)送的一次窗口數(shù)據(jù)出現(xiàn)多個(gè)分組丟棄的可能性,提高網(wǎng)絡(luò)的利用率。
二、方法流程現(xiàn)有標(biāo)準(zhǔn)的地面TCP協(xié)議采用三次握手方式建立連接,其核心擁塞控制機(jī)制一般 采用四種算法實(shí)現(xiàn)①慢啟動(dòng)(Slow-start)慢啟動(dòng)為發(fā)送方的TCP增加了擁塞窗口 (congestionwindow),記為cwnd。當(dāng)TCP連接建立時(shí),擁塞窗口被初始化為1個(gè)報(bào)文段,每 返回一個(gè)ACK,擁塞窗口 cwnd加l(Cwnd以字節(jié)為單位,但是這里以報(bào)文段大小為單位進(jìn)行 增加)。發(fā)送方開(kāi)始時(shí)發(fā)送一個(gè)報(bào)文段,然后等待ACK。當(dāng)收到該ACK時(shí),擁塞窗口從1增 加到2,即可以發(fā)送兩個(gè)報(bào)文段。當(dāng)收到這兩個(gè)報(bào)文段的ACK時(shí),擁塞窗口就增加為4。就 這樣呈指數(shù)增加,從1迅速增加到慢啟動(dòng)門限。②擁塞避免(Congestion avoidance)當(dāng)擁塞窗口 cwnd大于慢啟動(dòng)門限 ssthresh后,就采用擁塞避免機(jī)制,預(yù)防可能發(fā)生的擁塞。此時(shí)擁塞窗口增長(zhǎng)緩慢,要求每 次收到一個(gè)ACK確認(rèn)時(shí)將cwnd增加1/cwnd,即在每個(gè)往返時(shí)間RTT內(nèi)cwnd窗口線性增加 1,這是一種加性增長(zhǎng)(additive increase) 0慢啟動(dòng)和擁塞避免過(guò)程如圖1所示。③快速重傳(Fast retransmit)收到3個(gè)相同的ACK,判定數(shù)據(jù)分組丟失,這時(shí)進(jìn) 行快速重傳,把ssthresh設(shè)置為cwnd的一半,再把cwnd設(shè)置為ssthresh的值,重新進(jìn)入 擁塞避免階段。④快速恢復(fù)(Fast recover)當(dāng)收到3個(gè)重復(fù)ACK時(shí),把ssthresh設(shè)置為cwnd的 一半,把cwnd設(shè)置為ssthresh的值加3,然后重傳丟失的報(bào)文段,再收到重復(fù)的ACK時(shí),擁 塞窗口增加1。當(dāng)收到新的數(shù)據(jù)包的ACK時(shí),把cwnd設(shè)置為之前的ssthresh的值,再次進(jìn) 入擁塞避免狀態(tài)。對(duì)于每一個(gè)TCP連接包括接收窗口 rwnd,擁塞窗口 cwnd以及慢啟動(dòng)門限 ssthresh,其中接收窗口是接收端的流量控制,而擁塞窗口則是源于發(fā)送端的流量控制。一 般都認(rèn)為擁塞窗口大于接收窗口,即網(wǎng)絡(luò)的擁塞限制發(fā)送窗口的大小。根據(jù)擁塞窗口增長(zhǎng) 的模式不同,整個(gè)TCP連接可以劃分為慢啟動(dòng)和擁塞避免兩個(gè)階段。網(wǎng)絡(luò)發(fā)生擁塞時(shí),當(dāng)發(fā) 送端連續(xù)收到三個(gè)以上重復(fù)ACK確認(rèn)信號(hào)則認(rèn)為對(duì)應(yīng)分組丟失,此時(shí)啟動(dòng)快速重傳機(jī)制, 發(fā)送端不等重傳定時(shí)器超時(shí),直接重新傳送該分組。而快速恢復(fù)機(jī)制將cwnd和ssthresh都 減少一半。在成功重傳丟失的數(shù)據(jù)段后,進(jìn)入到擁塞避免階段。若出現(xiàn)多個(gè)數(shù)據(jù)丟失,cwnd 和ssthresh會(huì)重復(fù)減半。其避免了擁塞窗口重新從1開(kāi)始所導(dǎo)致的長(zhǎng)時(shí)間慢啟動(dòng)階段。TCPW算法中,在檢測(cè)到分組丟失后,根據(jù)帶寬估計(jì)來(lái)確定新的窗口門限值,不像 Reno那樣盲目降低窗口,消除了高誤碼率的影響,所以在誤碼較多的衛(wèi)星鏈路中TCPW能夠 獲得較好的性能。雖然TCPW能夠較好處理高誤碼率的影響,但是在長(zhǎng)時(shí)延的環(huán)境中,表現(xiàn) 較差。實(shí)驗(yàn)表明,隨著時(shí)延的增加,TCPW的吞吐量迅速下降,波動(dòng)幅度加大,在時(shí)延較小時(shí), 發(fā)生丟包后,TCPW通過(guò)處理可以及時(shí)調(diào)整窗口值來(lái)提高吞吐量,但是隨著時(shí)延的增大,往返 時(shí)延RTT的測(cè)量精度下降,導(dǎo)致性能下降。在慢啟動(dòng)和擁塞避免階段仍然采用Reno的標(biāo)準(zhǔn)窗口增加機(jī)制,但是這種機(jī)制沒(méi) 有考慮網(wǎng)絡(luò)的實(shí)際可用帶寬,沒(méi)有區(qū)分分組丟失原因,比較盲目。本發(fā)明基于TCPW算法提 出的TCPW-BS⑶算法克服了以上缺點(diǎn),使之能夠較好的應(yīng)用于衛(wèi)星網(wǎng)絡(luò)中,提高了傳輸性 能。本發(fā)明的具體方法流程如下
5
步驟1)建立連接,進(jìn)入監(jiān)聽(tīng)狀態(tài),等待發(fā)送端的連接請(qǐng)求,地面網(wǎng)絡(luò)的發(fā)送端發(fā) 出TCP連接請(qǐng)求,通過(guò)衛(wèi)星網(wǎng)絡(luò)鏈路的傳輸?shù)竭_(dá)接收端,根據(jù)三次握手的方式建立連接,
步驟2)傳輸數(shù)據(jù),步驟2. 1)慢啟動(dòng),當(dāng)TCP連接建立,擁塞窗口被初始化為1個(gè)報(bào)文段,每返回一個(gè) 石角認(rèn)字符 ACK (ACKnowledge Character,),擁塞窗口 cwnd (congestionwindow)力口 1,單位 是報(bào)文段;發(fā)送方開(kāi)始時(shí)發(fā)送一個(gè)報(bào)文段,然后等待確認(rèn)字符ACK確認(rèn),當(dāng)收到該確認(rèn)信號(hào) 時(shí),擁塞窗口從1增加到2,即可以發(fā)送兩個(gè)報(bào)文段;當(dāng)收到這兩個(gè)報(bào)文段的ACK確認(rèn)時(shí),擁 塞窗口就增加為4 ;就這樣呈指數(shù)增加,從1迅速增加到慢啟動(dòng)門限,慢啟動(dòng)階段的發(fā)送窗 口的增長(zhǎng)速率與數(shù)據(jù)往返時(shí)間RTT呈反比關(guān)系,即RTT越長(zhǎng),發(fā)送速率增長(zhǎng)越慢;步驟2. 2) 二分增長(zhǎng)探測(cè)擁塞窗口,當(dāng)擁塞窗口 cwnd大于慢啟動(dòng)門限 ssthresh(slow start thresh,)時(shí),采用二分增長(zhǎng)的方法來(lái)快速搜索該階段的最佳發(fā)送窗 口,而不是TCPW算法(TCP Westwood的簡(jiǎn)稱)中原有的線性增長(zhǎng);用最大窗口值maxw和最 小窗口值minw來(lái)控制擁塞窗口 cwnd的大小,定義目標(biāo)窗口 tarw為tarw= (maxw+minw)/2, 用來(lái)作為下一個(gè)RTT后的擁塞窗口的值;定義dist為目標(biāo)窗口和當(dāng)前窗口的差值,定義閾 值smax用來(lái)限制初始時(shí)窗口增長(zhǎng)過(guò)大,當(dāng)dist > smax時(shí),即認(rèn)為目標(biāo)窗口與擁塞窗口的 差值過(guò)大,則在下一個(gè)RTT后,將擁塞窗口增加smax,即cwnd+ = smax ;當(dāng)dist < smax時(shí), 在一個(gè)RTT之后將擁塞窗口增加dist,即cwnd+ = dist ;如果未發(fā)生丟包時(shí),令cwnd = tarw,并將最小窗口值更新為此時(shí)的窗口大小,然后使用公式tarw = (maxw+minw)/2重新 更新目標(biāo)窗口值;當(dāng)發(fā)生丟包后,令丟包前的窗口大小為新的最大窗口值,并將最小窗口值 更新為丟包后的窗口大小,此窗口值在改進(jìn)TCPW算法中是通過(guò)帶寬估計(jì)值獲得的;同時(shí)使 用公式tarw = (maxw+minw)/2更新目標(biāo)窗口值;重復(fù)此過(guò)程,直至最大窗口和最小窗口的 差值小于一預(yù)設(shè)的閾值smin ;這種窗口增長(zhǎng)比線性增長(zhǎng)快,可以快速達(dá)到最佳的發(fā)送窗口值,提高傳輸效率;步驟2. 3)傳輸中,若發(fā)生timeout超時(shí),根據(jù)體系結(jié)構(gòu)中講到的預(yù)測(cè)方案來(lái)判斷 是擁塞或誤碼造成超時(shí),該預(yù)測(cè)方案就是計(jì)算鏈路中正在傳輸?shù)臄?shù)據(jù)包的個(gè)數(shù)packet^ in_f light (當(dāng)前傳輸鏈路中的數(shù)據(jù)包 packets_in_f light = snd_nxt-snd_una_left_out, 其中snd_nxt為發(fā)送端下一個(gè)要發(fā)送的數(shù)據(jù)包序號(hào),sncLima為最早的還沒(méi)有被確認(rèn)的數(shù) 據(jù)包序號(hào),left_out為基于SACK (Selective Acknowledgment,選擇性確認(rèn))機(jī)制接收方通 告給發(fā)送方?jīng)]有收到的數(shù)據(jù)包數(shù)),然后與當(dāng)前擁塞窗口 cwnd進(jìn)行比較,若大于cwnd,則認(rèn) 為是網(wǎng)絡(luò)擁塞造成的,否則認(rèn)為是誤碼造成的,如果是擁塞造成超時(shí),那么就重傳期望的數(shù) 據(jù)包,令 ssthresh = (BTO*RTTmin)/seg_size,其中 BTO 為 TCPWestwood 算法估計(jì)可用帶 寬,RTTmin為測(cè)得的最小RTT,seg_size為報(bào)文段的大?。籧wnd = 1,然后重新回到慢啟動(dòng) 階段,否則各參數(shù)保持不變,繼續(xù)傳輸接下來(lái)的數(shù)據(jù)包;步驟2. 4)若收到三個(gè)重復(fù)的ACK,表示數(shù)據(jù)包丟失,同樣根據(jù)本發(fā)明提出的預(yù)測(cè) 方案判斷是擁塞或誤碼導(dǎo)致的丟包,如果是誤碼造成的,保持參數(shù)不變,繼續(xù)傳輸數(shù)據(jù)包, 如果是擁塞造成丟包,則進(jìn)入第4步快速重傳;步驟2. 5)快速重傳當(dāng)發(fā)送端檢測(cè)到三個(gè)重復(fù)ACK時(shí),令ssthresh = (BffE^RTTmin) /seg_size,如果 cwnd > ssthresh,則 cwnd = ssthresh,重傳丟失的數(shù)據(jù)包, 不需等到定時(shí)器超時(shí),接下來(lái)進(jìn)入第2步二分增長(zhǎng)探測(cè)窗口階段,而不是慢啟動(dòng)階段;
步驟3)拆除連接發(fā)送端發(fā)送連接結(jié)束數(shù)據(jù)包,等待對(duì)方的應(yīng)答,當(dāng)接收端收到 連接結(jié)束TCP數(shù)據(jù)包后,返回連接拆除確認(rèn)應(yīng)答數(shù)據(jù)包,拆除此次連接,進(jìn)入到監(jiān)聽(tīng)狀態(tài), 發(fā)送端接收到拆除應(yīng)答后,拆除連接。有益效果本發(fā)明提供了一種適合衛(wèi)星網(wǎng)絡(luò)的TCP傳輸 控制的新協(xié)議方法,主要 用于衛(wèi)星通信數(shù)據(jù)傳輸中,以提高傳輸數(shù)據(jù)的效率,減少系統(tǒng)開(kāi)銷和網(wǎng)絡(luò)延遲。下面我們給 出具體的說(shuō)明。TCPW-BS⑶算法在TCP Westwood這種高速TCP擁塞控制算法的基礎(chǔ)上,采用了二 分增長(zhǎng)的思想來(lái)快速搜索擁塞避免階段的最佳發(fā)送窗口,此外采取了一種計(jì)算鏈路中正在 傳輸?shù)臄?shù)據(jù)包的個(gè)數(shù),然后與當(dāng)前擁塞窗口進(jìn)行比較的方法區(qū)分鏈路擁塞和傳輸誤碼從而 有效解決了衛(wèi)星網(wǎng)絡(luò)的無(wú)線鏈路高誤碼所引起的擁塞窗口錯(cuò)誤變化,可以較大幅度的提高 衛(wèi)星網(wǎng)絡(luò)傳輸吞吐量,減小了系統(tǒng)開(kāi)銷。
圖ITCPW帶寬估計(jì)(BE)取樣尺寸,圖2TCPW算法慢啟動(dòng)和擁塞避免原理示意圖,圖3TCPW-BS⑶算法的具體擁塞控制原理圖,圖4衛(wèi)星網(wǎng)絡(luò)拓?fù)鋱D。
具體實(shí)施例方式為了方便描述,我們假定有如下應(yīng)用實(shí)例開(kāi)發(fā)一個(gè)衛(wèi)星網(wǎng)絡(luò)傳輸系統(tǒng),應(yīng)用的基 本要求是減小衛(wèi)星網(wǎng)絡(luò)高誤碼率大時(shí)延等特性對(duì)傳輸?shù)挠绊?,提高傳輸?shù)據(jù)的吞吐量。實(shí)施方案(1)開(kāi)發(fā)人員根據(jù)需求創(chuàng)建實(shí)現(xiàn)數(shù)據(jù)傳輸?shù)男l(wèi)星網(wǎng)絡(luò),生成數(shù)據(jù)傳輸?shù)母鱾€(gè)節(jié)占.
^ \\\ (2)開(kāi)發(fā)人員把數(shù)據(jù)的傳輸分解成由網(wǎng)絡(luò)的各個(gè)功能層分別來(lái)完成;(3)開(kāi)發(fā)人員根據(jù)衛(wèi)星網(wǎng)絡(luò)特點(diǎn)設(shè)計(jì)傳輸層的傳輸控制協(xié)議的算法;(4)開(kāi)發(fā)人員把傳輸控制協(xié)議具體算法在傳輸系統(tǒng)的各個(gè)節(jié)點(diǎn)中實(shí)現(xiàn)。本發(fā)明的特點(diǎn)是其可以在開(kāi)放源代碼的Linux操作系統(tǒng)中實(shí)現(xiàn),在開(kāi)放源代碼的 NS2網(wǎng)絡(luò)仿真軟件中仿真驗(yàn)證,具體方法流程如下步驟(1)建立連接進(jìn)入監(jiān)聽(tīng)狀態(tài),等待發(fā)送端的連接請(qǐng)求。地面網(wǎng)絡(luò)的發(fā)送端發(fā)出TCP連接請(qǐng)求,通 過(guò)衛(wèi)星網(wǎng)絡(luò)鏈路的傳輸?shù)竭_(dá)接收端,根據(jù)三次握手的方式建立連接。步驟⑵傳輸數(shù)據(jù)步驟(2.1)慢啟動(dòng)(Slow-start)當(dāng)TCP連接建立,擁塞窗口被初始化為1個(gè)報(bào)文段,每返回一個(gè)ACK確認(rèn)信號(hào),擁 塞窗口 cwnd加1 (cwnd以字節(jié)為單位,但是這里以報(bào)文段大小為單位進(jìn)行增加)。發(fā)送方開(kāi) 始時(shí)發(fā)送一個(gè)報(bào)文段,然后等待ACK確認(rèn)。當(dāng)收到該確認(rèn)信號(hào)時(shí),擁塞窗口從1增加到2,即 可以發(fā)送兩個(gè)報(bào)文段。當(dāng)收到這兩個(gè)報(bào)文段的ACK確認(rèn)時(shí),擁塞窗口就增加為4。就這樣呈 指數(shù)增加,從1迅速增加到慢啟動(dòng)門限。慢啟動(dòng)階段的發(fā)送窗口的增長(zhǎng)速率與數(shù)據(jù)往返時(shí)間(RTT)呈反比關(guān)系,即RTT越長(zhǎng),發(fā)送速率增長(zhǎng)越慢。步驟(2. 2) 二分增長(zhǎng)探測(cè)擁塞窗口當(dāng)擁塞窗口 cwnd大于ssthresh時(shí),采用二分增長(zhǎng)的方法來(lái)快速搜索該階段的最佳發(fā)送窗口,而不是TCPW算法中原有的線性增長(zhǎng)。用最大窗口值maxw和最小窗口值minw 來(lái)控制擁塞窗口 cwnd的大小,定義目標(biāo)窗口 tarw為tarw= (maxw+minw)/2,用來(lái)作為下一 個(gè)RTT后的擁塞窗口的值。定義dist為目標(biāo)窗口和當(dāng)前窗口的差值,定義閾值smax用來(lái) 限制初始時(shí)窗口增長(zhǎng)過(guò)大,當(dāng)dist > smax時(shí),即認(rèn)為目標(biāo)窗口與擁塞窗口的差值過(guò)大,則 在下一個(gè)RTT后,將擁塞窗口增加smax,即cwnd+ = smax ;當(dāng)dist < smax時(shí),在一個(gè)RTT 之后將擁塞窗口增加dist,即cwnd+ = dist。如果未發(fā)生丟包時(shí),令cwnd = tarw,并將最 小窗口值更新為此時(shí)的窗口大小,然后使用公式tarw = (maxw+minw)Λ重新更新目標(biāo)窗口 值。當(dāng)發(fā)生丟包后,令丟包前的窗口大小為新的最大窗口值,并將最小窗口值更新為丟包后 的窗口大小,此窗口值在改進(jìn)TCPW算法中是通過(guò)帶寬估計(jì)值獲得的。同時(shí)使用公式tarw =(maxw+minw)/2更新目標(biāo)窗口值。重復(fù)此過(guò)程,直至最大窗口和最小窗口的差值小于一 預(yù)設(shè)的閾值smin ;這種窗口增長(zhǎng)比線性增長(zhǎng)快,可以快速達(dá)到最佳的發(fā)送窗口值,提高傳輸效率。步驟(2.3)傳輸中,若發(fā)生timeout超時(shí),根據(jù)本發(fā)明提出的預(yù)測(cè)方案來(lái)判斷是 擁塞或誤碼造成超時(shí),計(jì)算鏈路中正在傳輸?shù)臄?shù)據(jù)包的個(gè)數(shù)paCketS_in_flight,packet、 in_f light = snd_nxt-snd_una-left_out,然后與當(dāng)前擁塞窗口 cwnd進(jìn)行比較,若大于 cwnd,則認(rèn)為是網(wǎng)絡(luò)擁塞造成的,否則認(rèn)為是誤碼造成的,如果是擁塞造成超時(shí),那么就重 傳期望的數(shù)據(jù)包,令 ssthresh = (BWE*RTTmin)/seg_size (而不是 cwnd/2,BffE 為 TCPW 算 法估計(jì)可用帶寬),cwnd = 1,然后重新回到慢啟動(dòng)階段,否則各參數(shù)保持不變,繼續(xù)傳輸接 下來(lái)的數(shù)據(jù)包。步驟(2. 4)若收到三個(gè)重復(fù)的ACK,表示數(shù)據(jù)包丟失,同樣根據(jù)本發(fā)明提出的預(yù)測(cè) 方案判斷是擁塞或誤碼導(dǎo)致的丟包,如果是誤碼造成的,保持參數(shù)不變,繼續(xù)傳輸數(shù)據(jù)包, 如果是擁塞造成丟包,則進(jìn)入第4步快速重傳。步驟(2. 5)快速重傳,當(dāng)發(fā)送端檢測(cè)到三個(gè)重復(fù)ACK時(shí),令ssthresh = (BffE^RTTmin) /seg_size (而不是 ssthresh = cwnd/2),如果 cwnd > ssthresh,貝cwnd = ssthresh,重傳丟失的數(shù)據(jù)包,不需等到定時(shí)器超時(shí),接下來(lái)進(jìn)入第2步二分增長(zhǎng)探測(cè)窗口 階段,而不是慢啟動(dòng)階段。步驟(3)拆除連接發(fā)送端發(fā)送連接結(jié)束數(shù)據(jù)包,等待對(duì)方的應(yīng)答,當(dāng)接收端收到連接結(jié)束TCP數(shù)據(jù) 包后,返回連接拆除確認(rèn)應(yīng)答數(shù)據(jù)包,拆除此次連接,進(jìn)入到監(jiān)聽(tīng)狀態(tài),發(fā)送端接收到拆除 應(yīng)答后,拆除連接。
權(quán)利要求
一種用于衛(wèi)星網(wǎng)絡(luò)的傳輸控制協(xié)議方法,其特征在于該傳輸控制方法的具體方法流程如下步驟1)建立連接,進(jìn)入監(jiān)聽(tīng)狀態(tài),等待發(fā)送端的連接請(qǐng)求,地面網(wǎng)絡(luò)的發(fā)送端發(fā)出TCP連接請(qǐng)求,通過(guò)衛(wèi)星網(wǎng)絡(luò)鏈路的傳輸?shù)竭_(dá)接收端,根據(jù)三次握手的方式建立連接,步驟2)傳輸數(shù)據(jù),步驟2.1)慢啟動(dòng),當(dāng)TCP連接建立,擁塞窗口被初始化為1個(gè)報(bào)文段,每返回一個(gè)確認(rèn)字符ACK,擁塞窗口cwnd加1,單位是報(bào)文段;發(fā)送方開(kāi)始時(shí)發(fā)送一個(gè)報(bào)文段,然后等待確認(rèn)字符ACK確認(rèn),當(dāng)收到該確認(rèn)信號(hào)時(shí),擁塞窗口從1增加到2,即可以發(fā)送兩個(gè)報(bào)文段;當(dāng)收到這兩個(gè)報(bào)文段的ACK確認(rèn)時(shí),擁塞窗口就增加為4;就這樣呈指數(shù)增加,從1迅速增加到慢啟動(dòng)門限,慢啟動(dòng)階段的發(fā)送窗口的增長(zhǎng)速率與數(shù)據(jù)往返時(shí)間RTT呈反比關(guān)系,即RTT越長(zhǎng),發(fā)送速率增長(zhǎng)越慢;步驟2.2)二分增長(zhǎng)探測(cè)擁塞窗口,當(dāng)擁塞窗口cwnd大于慢啟動(dòng)門限ssthresh時(shí),采用二分增長(zhǎng)的方法來(lái)快速搜索該階段的最佳發(fā)送窗口,用最大窗口值maxw和最小窗口值minw來(lái)控制擁塞窗口cwnd的大小,定義目標(biāo)窗口tarw為tarw=(maxw+minw)/2,用來(lái)作為下一個(gè)RTT后的擁塞窗口的值;定義dist為目標(biāo)窗口和當(dāng)前窗口的差值,定義閾值smax用來(lái)限制初始時(shí)窗口增長(zhǎng)過(guò)大,當(dāng)dist>smax時(shí),即認(rèn)為目標(biāo)窗口與擁塞窗口的差值過(guò)大,則在下一個(gè)RTT后,將擁塞窗口增加smax,即cwnd+=smax;當(dāng)dist<smax時(shí),在一個(gè)RTT之后將擁塞窗口增加dist,即cwnd+=dist;如果未發(fā)生丟包時(shí),令cwnd=tarw,并將最小窗口值更新為此時(shí)的窗口大小,然后使用公式tarw=(maxw+minw)/2重新更新目標(biāo)窗口值;當(dāng)發(fā)生丟包后,令丟包前的窗口大小為新的最大窗口值,并將最小窗口值更新為丟包后的窗口大小,此窗口值在改進(jìn)TCPW算法中是通過(guò)帶寬估計(jì)值獲得的;同時(shí)使用公式tarw=(maxw+minw)/2更新目標(biāo)窗口值;重復(fù)此過(guò)程,直至最大窗口和最小窗口的差值小于一預(yù)設(shè)的閾值smin;步驟2.3)傳輸中,若發(fā)生timeout超時(shí),根據(jù)體系結(jié)構(gòu)中講到的預(yù)測(cè)方案來(lái)判斷是擁塞或誤碼造成超時(shí),該預(yù)測(cè)方案就是計(jì)算鏈路中正在傳輸?shù)臄?shù)據(jù)包的個(gè)數(shù),然后與當(dāng)前擁塞窗口cwnd進(jìn)行比較,若大于cwnd,則認(rèn)為是網(wǎng)絡(luò)擁塞造成的,否則認(rèn)為是誤碼造成的,如果是擁塞造成超時(shí),那么就重傳期望的數(shù)據(jù)包,令ssthresh=(BWE*RTTmin)/seg_size,其中BWE為TCP Westwood算法估計(jì)可用帶寬,RTTmin為測(cè)得的最小RTT,seg_size為報(bào)文段的大?。籧wnd=1,然后重新回到慢啟動(dòng)階段,否則各參數(shù)保持不變,繼續(xù)傳輸接下來(lái)的數(shù)據(jù)包;步驟2.4)若收到三個(gè)重復(fù)的ACK,表示數(shù)據(jù)包丟失,同樣根據(jù)本發(fā)明提出的預(yù)測(cè)方案判斷是擁塞或誤碼導(dǎo)致的丟包,如果是誤碼造成的,保持參數(shù)不變,繼續(xù)傳輸數(shù)據(jù)包,如果是擁塞造成丟包,則進(jìn)入第4步快速重傳;步驟2.5)快速重傳當(dāng)發(fā)送端檢測(cè)到三個(gè)重復(fù)ACK時(shí),令ssthresh=(BWE*RTTmin)/seg_size,如果cwnd>ssthresh,則cwnd=ssthresh,重傳丟失的數(shù)據(jù)包,不需等到定時(shí)器超時(shí),接下來(lái)進(jìn)入第2步二分增長(zhǎng)探測(cè)窗口階段,而不是慢啟動(dòng)階段;步驟3)拆除連接發(fā)送端發(fā)送連接結(jié)束數(shù)據(jù)包,等待對(duì)方的應(yīng)答,當(dāng)接收端收到連接結(jié)束TCP數(shù)據(jù)包后,返回連接拆除確認(rèn)應(yīng)答數(shù)據(jù)包,拆除此次連接,進(jìn)入到監(jiān)聽(tīng)狀態(tài),發(fā)送端接收到拆除應(yīng)答后,拆除連接。
全文摘要
一種用于衛(wèi)星網(wǎng)絡(luò)的傳輸控制協(xié)議方法是一種在衛(wèi)星網(wǎng)絡(luò)傳輸層中進(jìn)行數(shù)據(jù)傳輸?shù)目刂品椒?,用?lái)在網(wǎng)絡(luò)中進(jìn)行傳輸?shù)牧髁靠刂坪筒铄e(cuò)控制,實(shí)現(xiàn)數(shù)據(jù)的高效傳輸,該方法主要針對(duì)擁塞控制中的擁塞避免進(jìn)行改進(jìn),用二分增長(zhǎng)來(lái)探測(cè)最佳發(fā)送窗口,然后通過(guò)計(jì)算當(dāng)前網(wǎng)絡(luò)中正在傳輸?shù)臄?shù)據(jù)包個(gè)數(shù)這種預(yù)測(cè)方法來(lái)進(jìn)行擁塞誤碼的區(qū)分,從而有效地解決了高誤碼率的問(wèn)題。同時(shí)采用了SACK選擇性確認(rèn)機(jī)制,丟包時(shí)盡可能只重傳丟棄的分組,減小了高誤碼率下發(fā)送的一次窗口數(shù)據(jù)出現(xiàn)多個(gè)分組丟棄的可能性,提高了網(wǎng)絡(luò)利用率。本發(fā)明用在高誤碼率大時(shí)延的衛(wèi)星網(wǎng)絡(luò)中,可以實(shí)現(xiàn)數(shù)據(jù)的高效傳輸。
文檔編號(hào)H04W80/06GK101854738SQ201010179728
公開(kāi)日2010年10月6日 申請(qǐng)日期2010年5月21日 優(yōu)先權(quán)日2010年5月21日
發(fā)明者葉曉國(guó), 孫力娟, 王汝傳, 肖甫, 謝銳, 郭劍, 黃海平 申請(qǐng)人:南京郵電大學(xué)