陳瓊冰,白 勇,宗 亮
(海南大學(xué) 信息科學(xué)技術(shù)學(xué)院,海南 ???70228)
隨著衛(wèi)星組網(wǎng)技術(shù)的發(fā)展,衛(wèi)星網(wǎng)絡(luò)已經(jīng)逐漸成為互聯(lián)網(wǎng)不可缺少的一個(gè)部分。衛(wèi)星融合網(wǎng)絡(luò)通過(guò)衛(wèi)星網(wǎng)關(guān)與其他無(wú)線網(wǎng)絡(luò)連接用來(lái)支持新的服務(wù)。例如,海洋漁業(yè)船舶之間建立的移動(dòng)自組織網(wǎng)絡(luò)通過(guò)衛(wèi)星網(wǎng)關(guān)與衛(wèi)星網(wǎng)絡(luò)連接。衛(wèi)星網(wǎng)絡(luò)在與地面網(wǎng)絡(luò)連接,形成一個(gè)異構(gòu)融合網(wǎng)絡(luò)[1-2],它可以支持船舶與船舶之間以及船舶與陸地之間的通信。
傳統(tǒng)的TCP 協(xié)議并不適合衛(wèi)星網(wǎng)絡(luò)的特點(diǎn)。目前,適用于衛(wèi)星網(wǎng)絡(luò)的傳輸層協(xié)議已成為世界各國(guó)的研究熱點(diǎn)[3-6]。傳輸控制協(xié)議(TCP)為應(yīng)用層提供可靠的數(shù)據(jù)流傳輸,TCP協(xié)議最初設(shè)計(jì)主要考慮地面有線網(wǎng)絡(luò)。當(dāng)TCP 協(xié)議應(yīng)用在衛(wèi)星網(wǎng)絡(luò)時(shí),衛(wèi)星網(wǎng)絡(luò)的特點(diǎn)使得TCP 協(xié)議傳輸性能面臨新的挑戰(zhàn)。首先,網(wǎng)絡(luò)長(zhǎng)時(shí)延的出現(xiàn)主要是由于衛(wèi)星鏈路的長(zhǎng)傳播時(shí)延,當(dāng)一個(gè)連接傳輸通過(guò)衛(wèi)星網(wǎng)絡(luò)時(shí),發(fā)送一個(gè)數(shù)據(jù)包的往返時(shí)間一般會(huì)超過(guò)500 ms。其次,高的比特錯(cuò)誤率導(dǎo)致網(wǎng)絡(luò)出現(xiàn)隨機(jī)丟包。如果沒(méi)有對(duì)隨機(jī)丟包信息進(jìn)行區(qū)分,TCP 將每個(gè)隨機(jī)丟包作為擁塞控制指示,并在TCP 發(fā)送端將減小其滑動(dòng)窗口大小,以避免擁塞崩潰,從而大幅度地減少了TCP 整體吞吐量。第三,移動(dòng)終端的移動(dòng)性可能會(huì)造成網(wǎng)絡(luò)間歇性中斷,這是由于信號(hào)的堵塞、干擾以及衛(wèi)星網(wǎng)關(guān)的掛起。這種間歇性中斷導(dǎo)致數(shù)據(jù)包的丟失,TCP 仍然認(rèn)為是網(wǎng)絡(luò)擁塞的征兆并減少擁塞窗口來(lái)限制數(shù)據(jù)發(fā)送到網(wǎng)絡(luò)中。此外,TCP 會(huì)對(duì)重傳超時(shí)計(jì)算器(RTO)采用指數(shù)退避算法,當(dāng)重傳超時(shí)計(jì)算器到期就會(huì)增大一倍的時(shí)間。頻繁的丟失導(dǎo)致非常小的滑動(dòng)窗口以及很大的RTO,這意味著每次試探網(wǎng)絡(luò)連接時(shí)有較少量的數(shù)據(jù)被發(fā)送到網(wǎng)絡(luò)和較長(zhǎng)的時(shí)間間隔。
為了處理衛(wèi)星網(wǎng)絡(luò)的上述負(fù)面特點(diǎn),近年來(lái),許多學(xué)者提出了用于改衛(wèi)星網(wǎng)絡(luò)TCP 性能的方案,所提出的解決方案大致可以分為以下3 類:端到端的改進(jìn)方案、鏈路層改進(jìn)方案以及TCP 分離連接改進(jìn)方案。具體來(lái)說(shuō),為了解決長(zhǎng)時(shí)延問(wèn)題,可以在發(fā)送端增加擁塞窗口的初始值,使得網(wǎng)絡(luò)更快地進(jìn)入擁塞避免階段。為了解決隨機(jī)丟包和間歇性中斷問(wèn)題,例如采用M-TCP,Veno 以及Vegas,M-TCP 的半分離思想能夠很好解決間歇性中斷的問(wèn)題。當(dāng)移動(dòng)終端移動(dòng)中斷時(shí),發(fā)送方不會(huì)遭受擁塞控制的影響。TCP Vegas 通過(guò)估計(jì)瓶頸鏈路中緩存器的數(shù)據(jù)包,并選擇最小的RTT 為基準(zhǔn)來(lái)算出網(wǎng)絡(luò)可以容納的最佳吞吐量。TCP Veno 采用與類似Vegas 方式來(lái)估計(jì)網(wǎng)絡(luò)中的積壓報(bào)文,并且可區(qū)分隨機(jī)丟包和擁塞丟包,對(duì)于擁塞丟包,TCP Veno 采用標(biāo)準(zhǔn)Reno 算法。對(duì)于隨機(jī)丟包,增加一個(gè)保守分方式。
在現(xiàn)有提高TCP 性能的方法中,仍缺乏一種可以同時(shí)解決高比特錯(cuò)誤率引起的隨機(jī)丟包和移動(dòng)終端間歇性中斷的技術(shù)方案。本文提出了TCP M-Veno 方法來(lái)實(shí)現(xiàn)這個(gè)雙重任務(wù)。該算法在發(fā)送端提出一種自適應(yīng)與網(wǎng)絡(luò)時(shí)延的方法來(lái)解決衛(wèi)星網(wǎng)絡(luò)的長(zhǎng)時(shí)延。在網(wǎng)關(guān)結(jié)M-TCP(可以處理移動(dòng)終端的頻繁中斷)和Veno(可以區(qū)分隨機(jī)丟包和擁塞丟包)的優(yōu)勢(shì)來(lái)解決異構(gòu)衛(wèi)星網(wǎng)絡(luò)移動(dòng)終端間歇性中斷。
M-TCP[7]是標(biāo)準(zhǔn)TCP 的一個(gè)改進(jìn)版本,M-TCP 把連接區(qū)分為無(wú)線連接和有線連接。當(dāng)出現(xiàn)連接中斷時(shí),M-TCP 生成的保持?jǐn)?shù)據(jù)包迫使發(fā)送端進(jìn)入保持狀態(tài)。在保持狀態(tài),發(fā)送端不會(huì)執(zhí)行重傳超時(shí),也不會(huì)以指數(shù)形式后退重傳定時(shí)器,并且保持擁塞窗口的大小。因此,當(dāng)連接恢復(fù)時(shí),發(fā)送端能以一個(gè)較大的傳輸速率傳輸數(shù)據(jù),從而提高TCP 傳輸性能。
圖1 是一個(gè)簡(jiǎn)單的M-TCP 網(wǎng)絡(luò)模型,TCP 連接在協(xié)議網(wǎng)關(guān)被分離,在協(xié)議網(wǎng)關(guān)中與服務(wù)器連接通信的被叫做SHTCP,接收來(lái)自服務(wù)器端的數(shù)據(jù)包,它通過(guò)這些數(shù)據(jù)包將MTCP 客戶交付給移動(dòng)終端(MH)。GW 與TCP 客戶端連接,稱為M-TCP,接收由移動(dòng)端MH 發(fā)送的確認(rèn)數(shù)據(jù)包。當(dāng)移動(dòng)終端短暫中斷或數(shù)據(jù)包在MH 和SH 丟失時(shí)協(xié)議需要發(fā)送端不觸發(fā)擁塞控制算法。在標(biāo)準(zhǔn)的TCP 版本中只有當(dāng)一個(gè)新的ACK 中rwnd 的值為0 才能迫使發(fā)送端進(jìn)入保持狀態(tài)。MTCP 通過(guò)保存最新的ACK 數(shù),每次確認(rèn)ack-1 個(gè)數(shù)據(jù)包,當(dāng)移動(dòng)端數(shù)據(jù)包丟失或中斷時(shí),利用最后一個(gè)ACK 生成一個(gè)保持?jǐn)?shù)據(jù)包發(fā)送給發(fā)送端,迫使發(fā)送端進(jìn)入保持狀態(tài)。
TCP Veno 通過(guò)使用與TCP Vegas[8]相類似的機(jī)制估計(jì)當(dāng)前連接所處的狀態(tài),判斷數(shù)據(jù)包的丟失是擁塞丟包還是隨機(jī)丟包。如果當(dāng)連接處于擁塞階段,TCP Veno 認(rèn)為是由于網(wǎng)絡(luò)擁塞引起的丟包,而其他的階段認(rèn)為是隨機(jī)丟包。
圖1 M-TCP 網(wǎng)絡(luò)結(jié)構(gòu)
1.2.1 TCP Veno 狀態(tài)區(qū)分原理
TCP Veno 主要根據(jù)源端期望發(fā)送速率和實(shí)際發(fā)送速率來(lái)區(qū)分丟包情況
其中,BaseRTT 為測(cè)量到的最小RTT。cwnd 為當(dāng)前TCP的擁塞窗口。定義Diff 為二者之差,N 為報(bào)文積壓數(shù)
TCP Veno 設(shè)置一個(gè)門(mén)限值β(β 一般取3),通過(guò)比較N和β 來(lái)區(qū)分連接所處的狀態(tài)。當(dāng)N≤β 時(shí),則認(rèn)為連接處于正常工作狀態(tài),此時(shí)如果發(fā)生丟包均認(rèn)為是隨機(jī)丟包,而不是由于擁塞所致,故采用改進(jìn)的擁塞算法。如果N >β 時(shí),連接處于擁塞階段,Veno 認(rèn)為丟包是由于網(wǎng)絡(luò)發(fā)生了擁塞,相應(yīng)地采用Reno 的窗口調(diào)整算法。
1.2.2 TCP Veno 的擁塞控制機(jī)制
TCP Veno 在擁塞避免階段,TCP Veno 對(duì)原有的算法進(jìn)行改進(jìn)。考慮連接所處的狀態(tài),當(dāng)連接處于擁塞階段時(shí),降低窗口的增加速度,使TCP Veno 能更長(zhǎng)時(shí)間處于較大的窗口數(shù)目。因此,每收到2 個(gè)新的ACK 使擁塞窗口加1,提高了效率和吞吐量。在快速重傳和快速恢復(fù)階段,當(dāng)判定出網(wǎng)絡(luò)的丟包是隨機(jī)丟包時(shí),就設(shè)置擁塞窗口的閾值為ssthresh=cwnd×4/5 而不是原來(lái)的1/2;相反,當(dāng)網(wǎng)絡(luò)的狀態(tài)處于擁塞時(shí),就采用傳統(tǒng)的擁塞控制機(jī)制來(lái)處理丟包。TCP Veno 在擁塞避免階段區(qū)分了擁塞和非擁塞情況,并在快速重傳時(shí)區(qū)分隨機(jī)丟失和擁塞丟失的情況,前者能更長(zhǎng)時(shí)間處于較大的窗口數(shù)目,增加了吞吐量;后者保證了在隨機(jī)丟失時(shí),在一個(gè)高的閾值開(kāi)始擁塞避免,同樣提高了吞吐量。
傳統(tǒng)的TCP 擁塞控制應(yīng)用于異構(gòu)衛(wèi)星網(wǎng)絡(luò)時(shí)存在一些問(wèn)題。衛(wèi)星網(wǎng)絡(luò)的長(zhǎng)時(shí)延使得發(fā)送方cwnd 增長(zhǎng)過(guò)于緩慢,從而導(dǎo)致TCP 的帶寬利用率不高。高誤碼率導(dǎo)致高丟包率被TCP 發(fā)送端錯(cuò)誤的判斷為擁塞,從而進(jìn)行不必要的擁塞控制導(dǎo)致TCP 數(shù)據(jù)吞吐量不高。移動(dòng)終端的間歇性中斷也會(huì)導(dǎo)致發(fā)送方重復(fù)的發(fā)送不必要的數(shù)據(jù)報(bào),導(dǎo)致網(wǎng)絡(luò)發(fā)生擁塞。為了解決衛(wèi)星網(wǎng)絡(luò)中的高的隨機(jī)丟包率、長(zhǎng)的傳播時(shí)延以及同時(shí)存在終端間歇性中斷的情況,本文提出了一種TCP MVeno,M-Veno 算法結(jié)合了M-TCP 和TCP Veno 的優(yōu)勢(shì),當(dāng)移動(dòng)終端出現(xiàn)中斷時(shí)利用M-TCP 機(jī)制防止發(fā)送端觸發(fā)擁塞控制算法。為了進(jìn)一步減少長(zhǎng)時(shí)延和高BER 的影響,筆者對(duì)TCP Veno 進(jìn)行改進(jìn)使它適應(yīng)于長(zhǎng)時(shí)延的衛(wèi)星網(wǎng)絡(luò)。如圖2所示,TCP M-Veno 在服務(wù)器采用TCP Veno+算法,在協(xié)議網(wǎng)關(guān)實(shí)現(xiàn)M-TCP 機(jī)制。
圖2 TCP M-Veno 網(wǎng)絡(luò)結(jié)構(gòu)
TCP M-Veno 發(fā)送端的改進(jìn)是通過(guò)改進(jìn)TCP Veno,使之成為T(mén)CP Veno+。在發(fā)送端通過(guò)增加一個(gè)自適應(yīng)擁塞窗口增長(zhǎng)機(jī)制,主要是引入一個(gè)增益因子ρ 使它能夠適應(yīng)于衛(wèi)星鏈路的長(zhǎng)傳播時(shí)延。
2.1.1 增益因子ρ
在Veno 協(xié)議中,cwnd 以固定的速度增加。在慢啟動(dòng)階段,窗口依據(jù)數(shù)據(jù)包的確認(rèn)以固定增長(zhǎng)速度成倍增長(zhǎng)。當(dāng)進(jìn)入擁塞避免后,cwnd 以線性速度增加。在穩(wěn)定低延時(shí)的有線網(wǎng)絡(luò)以這種速度增加可以滿足網(wǎng)絡(luò)的需要。但是在衛(wèi)星網(wǎng)絡(luò),由于往返時(shí)間長(zhǎng),這樣增長(zhǎng)的速度是比較慢的。所以要想快速地達(dá)到較高的發(fā)送速率,使得在長(zhǎng)時(shí)延下的衛(wèi)星網(wǎng)絡(luò)能更快地達(dá)到比較高的發(fā)送速率。在TCP M-Veno 算法中引入一個(gè)增益變量ρ,用變量ρ 來(lái)反映網(wǎng)絡(luò)的傳輸情況和擁塞窗口的變化,變量ρ 的值計(jì)算如下
其中,sampleRTT 為平滑往返時(shí)間;ρ 的變化范圍為1 ~60。固定值60 是最大RTO 通過(guò)1 s 歸一化的最小推薦值。ρ下限設(shè)置為1,以確保TCP 使用標(biāo)準(zhǔn)算法用于與極短RTT 的連接。相反地,設(shè)置ρ 上限為60,以確保ρ 的值不會(huì)太大。變量ρ 能減緩長(zhǎng)傳播時(shí)間的消極影響并迅速地增加擁塞窗口,窗口的增加取決于變量ρ。因此,每接收一個(gè)ACK,擁塞窗口的增加速度要比傳統(tǒng)TCP 擁塞窗口的增加速度快。
2.1.2 自適應(yīng)擁塞窗口增長(zhǎng)機(jī)制
標(biāo)準(zhǔn)的TCP 協(xié)議擁塞窗口都是以固定速率增長(zhǎng),這種機(jī)制對(duì)于短時(shí)延的有線網(wǎng)絡(luò)效果很好。隨著往返時(shí)間RTT 的增加,完成慢開(kāi)始進(jìn)入擁塞避免所需要的時(shí)間越長(zhǎng)。所以這種增長(zhǎng)機(jī)制并不適用于長(zhǎng)時(shí)延的衛(wèi)星通信系統(tǒng)。因此,筆者的想法是當(dāng)往返時(shí)間越大,cwnd 的增加速度越快,cwnd 的增加速度能夠自適應(yīng)網(wǎng)絡(luò)傳輸時(shí)延。在默認(rèn)的TCP 實(shí)現(xiàn)中,當(dāng)延遲ACK 選項(xiàng)被啟用時(shí),擁塞窗口增長(zhǎng)可能不是指數(shù),因?yàn)樵摻邮掌骺梢匝舆t發(fā)送ACK 即用一個(gè)ACK 確認(rèn)一個(gè)以上的報(bào)文段。這種延遲確認(rèn)加劇長(zhǎng)傳播時(shí)延對(duì)GEO 衛(wèi)星網(wǎng)絡(luò)的影響。選擇增益因子ρ 的斷點(diǎn)為15,對(duì)應(yīng)于250 ms 的平滑往返時(shí)間。當(dāng)ρ >15 并且沒(méi)有出現(xiàn)丟包時(shí),擁塞窗口的增長(zhǎng)是以MSS 的整數(shù)倍增加,這樣能更好地利用網(wǎng)絡(luò)的可用帶寬。
2.1.3 慢啟動(dòng)和擁塞避免的改進(jìn)
經(jīng)過(guò)3 次握手完成后,基于當(dāng)前的cwnd 和flightsize(在網(wǎng)絡(luò)中未被確認(rèn)的總報(bào)文數(shù))將慢啟動(dòng)分為2 個(gè)階段,分段算法描述如下:
如果ρ <15,在慢啟動(dòng)階段cwnd 以1 倍的速度增加。當(dāng)ρ≥15,發(fā)送方?jīng)]有出現(xiàn)丟包,TCP 擁塞窗口是以/4 倍的速度增長(zhǎng)。2 個(gè)突然的報(bào)文段啟用延遲ACK 將導(dǎo)致傳送4 個(gè)連續(xù)的報(bào)文段,這樣可能導(dǎo)致微突發(fā)的傳輸情況。因此/4被選擇以適應(yīng)于衛(wèi)星鏈路長(zhǎng)時(shí)延而非線性增加。需要注意的是/4×MSS 值的范圍在(1 ~2)×MSS。最大值只有2×MSS 將防止大線速突發(fā)在TCP 發(fā)送端探測(cè)網(wǎng)絡(luò)時(shí),并建議以適應(yīng)延遲ACK 選項(xiàng)的連接開(kāi)始啟用。基于ρ(60)的最大值,為增量/4)×MSS 也保持適度的突發(fā)大小小于10 段與丟失段的概率很低。
如果cwnd <ssthresh,并且網(wǎng)絡(luò)中未被確認(rèn)的數(shù)大于rwnd/2,其擁塞窗口是以標(biāo)準(zhǔn)TCP 算法增長(zhǎng)。當(dāng)cwnd >ssthresh,并且TCP 在快速恢復(fù)或網(wǎng)絡(luò)中未確認(rèn)的數(shù)大于rwnd/2,TCP 擁塞窗口以線性增加。由于在擁塞避免階段線性增加比較保守,當(dāng)網(wǎng)絡(luò)中未被確認(rèn)的數(shù)小于rwnd/2 時(shí),擁塞窗口是以/2)×MSS 遞增。注意,如果/4)或/2)的值小于1,它被向上舍入為1。因此,在慢開(kāi)始階段,其cwnd 增加速度是在1 MSS 和/4)×MSS 之間變化,發(fā)送端平滑其傳輸速率,這樣比TCP Veno 能更好地使用網(wǎng)絡(luò)的可用帶寬。自適應(yīng)增加機(jī)制,TCP 發(fā)送端在慢開(kāi)始階段可以更快地獲得更高的傳輸速率,特別是在RTT 很大的GEO 衛(wèi)星鏈路的情況。
異構(gòu)衛(wèi)星網(wǎng)絡(luò)中船舶之間的移動(dòng)會(huì)導(dǎo)致TCP 間歇性中斷。中斷會(huì)引起發(fā)送方出現(xiàn)一系列的超時(shí),從而重傳所有認(rèn)為已經(jīng)丟失的數(shù)據(jù)包。并且會(huì)對(duì)發(fā)送方的重傳超時(shí)器進(jìn)行指數(shù)退避算法直到其到達(dá)64 s,嚴(yán)重影響了TCP 的數(shù)據(jù)吞吐量。為了解決這個(gè)問(wèn)題,筆者在網(wǎng)關(guān)實(shí)現(xiàn)M-TCP 算法,該算法在網(wǎng)關(guān)處分離為2 個(gè)TCP 鏈接,圖3 所示。發(fā)送方與網(wǎng)關(guān)之間使用Veno+算法,而在網(wǎng)關(guān)與移動(dòng)終端使用M-TCP算法。
圖3 TCP M-Veno 網(wǎng)關(guān)分離連接
網(wǎng)關(guān)實(shí)現(xiàn)的主要功能凍結(jié)TCP 發(fā)送方,讓它不會(huì)觸發(fā)擁塞控制算法。當(dāng)移動(dòng)終端恢復(fù)鏈接后,以保持狀態(tài)的發(fā)送速度繼續(xù)傳輸數(shù)據(jù)。當(dāng)終端發(fā)生中斷,發(fā)送方會(huì)收到網(wǎng)關(guān)的一個(gè)特殊確認(rèn)包,確認(rèn)包會(huì)把它的接收窗口設(shè)置為零,從而迫使發(fā)送方進(jìn)入保持狀態(tài)。在保持狀態(tài)時(shí),TCP發(fā)送方不會(huì)觸發(fā)擁塞控制算法并且凍結(jié)所有定時(shí)器。為了實(shí)現(xiàn)M-TCP,需要在網(wǎng)關(guān)分別處理發(fā)送方與移動(dòng)終端數(shù)據(jù)包。
基于北京市水土保持規(guī)劃管理的需要,北京市劃分了1 085條小流域,每條小流域都有其明確的邊界范圍。通過(guò)將治理措施與小流域及三道防線劃分?jǐn)?shù)據(jù)進(jìn)行疊加,可以檢查各項(xiàng)治理措施是否全部布設(shè)在小流域范圍內(nèi),并及時(shí)發(fā)現(xiàn)了未按照“生態(tài)修復(fù)區(qū)、生態(tài)治理區(qū)、生態(tài)保護(hù)區(qū)”三道防線規(guī)劃原則布設(shè)措施的現(xiàn)象。
2.2.1 處理來(lái)自發(fā)送方的數(shù)據(jù)
當(dāng)網(wǎng)關(guān)收到發(fā)送方的報(bào)文段后,轉(zhuǎn)發(fā)給移動(dòng)終端,但并不會(huì)對(duì)此包進(jìn)行確認(rèn)直到收到終端的確認(rèn)ACK。這樣做以確保TCP 端到端語(yǔ)義。當(dāng)移動(dòng)終端發(fā)生中斷,發(fā)送方會(huì)進(jìn)入保持狀態(tài),具體算法如下描述:
1)用W 表示網(wǎng)關(guān)的緩存大小,其接收窗口為w。毫無(wú)疑問(wèn),w 肯定要小于或等于W。假設(shè)移動(dòng)終端已經(jīng)確認(rèn)w'<w報(bào)文段,當(dāng)沒(méi)有中斷的情況下,網(wǎng)關(guān)只會(huì)確認(rèn)w'-1 個(gè)報(bào)文段。
2)當(dāng)確認(rèn)w'后移動(dòng)終端發(fā)生中斷。這時(shí)網(wǎng)關(guān)收不到移動(dòng)終端的確認(rèn)包,經(jīng)過(guò)一段時(shí)間后(這個(gè)時(shí)間可以自己根據(jù)網(wǎng)絡(luò)合理設(shè)置)網(wǎng)關(guān)如果還沒(méi)有收到確認(rèn),這時(shí)就判斷移動(dòng)終端已經(jīng)中斷。這時(shí)網(wǎng)關(guān)就會(huì)對(duì)w'發(fā)送一個(gè)特殊ACK 給發(fā)送方,這個(gè)確認(rèn)包把接收窗口設(shè)置為零,迫使發(fā)送方進(jìn)入保持狀態(tài)。在保持狀態(tài),發(fā)送方不會(huì)觸發(fā)擁塞控制算法,也不會(huì)利用指數(shù)退避算法重設(shè)超時(shí)時(shí)間間隔RTO。
3)當(dāng)移動(dòng)終端重新恢復(fù)鏈接。它會(huì)發(fā)送一個(gè)恢復(fù)包給網(wǎng)關(guān),收到恢復(fù)包后網(wǎng)關(guān)會(huì)發(fā)送一個(gè)確認(rèn)給發(fā)送方。收到網(wǎng)關(guān)的確認(rèn)后發(fā)送方會(huì)退出保持狀態(tài)并繼續(xù)發(fā)送數(shù)據(jù)。因此,在中斷期間,發(fā)送方從來(lái)就沒(méi)有發(fā)生超時(shí)和觸發(fā)慢開(kāi)始。
2.2.2 處理來(lái)自移動(dòng)端的數(shù)據(jù)
網(wǎng)關(guān)實(shí)現(xiàn)M-TCP 機(jī)制目的是當(dāng)終端中斷時(shí)使TCP 發(fā)送方不會(huì)觸發(fā)擁塞控制算法,并且能很快地從中斷恢復(fù)鏈接。設(shè)計(jì)M-TCP 協(xié)議能夠感知鏈路中斷使用的與用戶端基本上相同。在M-TCP 中檢測(cè)移動(dòng)終端的ACK,經(jīng)過(guò)一段時(shí)間還沒(méi)有收到ACK 流就會(huì)認(rèn)為鏈路已經(jīng)中斷,網(wǎng)關(guān)中M-TCP 可以感知到并且會(huì)做出相應(yīng)的措施,M-TCP 在網(wǎng)關(guān)所具有的功能如下描述:
1)當(dāng)出現(xiàn)超時(shí)。M-TCP 不會(huì)重傳丟失的報(bào)文段也不會(huì)減少擁塞窗口,而是進(jìn)入保持狀態(tài),直到移動(dòng)終端通知鏈路重新鏈接。
仿真中使用一個(gè)集成的海上異構(gòu)網(wǎng)絡(luò),模擬現(xiàn)實(shí)場(chǎng)景如圖4 所示。網(wǎng)絡(luò)模型是由地面網(wǎng)絡(luò)、衛(wèi)星網(wǎng)絡(luò)以及由船舶組成的移動(dòng)自組織網(wǎng)絡(luò)。移動(dòng)用戶可以通過(guò)衛(wèi)星連接地面網(wǎng)絡(luò)進(jìn)行遠(yuǎn)程通信,船舶用戶(客戶端)連接到第一個(gè)接入點(diǎn),然后連接到船載衛(wèi)星網(wǎng)關(guān),從地面服務(wù)器下載數(shù)據(jù)。地面網(wǎng)關(guān)與服務(wù)器之間的鏈路速率采用10 Mbit/s 鏈路。在所有仿真場(chǎng)景中,以太網(wǎng)鏈路是無(wú)差錯(cuò)的。衛(wèi)星網(wǎng)絡(luò)的下行鏈路數(shù)據(jù)速率為2 048 kbit/s。上行鏈路速率為256 kbit/s。上行鏈路與下行鏈路具有相同的傳播時(shí)延,設(shè)置為250 ms??蛻舳嗣? min 中斷30 s,衛(wèi)星鏈路的BER 是從10-9~10-5。在應(yīng)用層使用FTP 應(yīng)用程序。地面服務(wù)器發(fā)送一個(gè)50 Mbyte 大小的文件到移動(dòng)客戶端,在衛(wèi)星網(wǎng)關(guān)實(shí)現(xiàn)M-TCP 機(jī)制,在發(fā)送方實(shí)現(xiàn)TCP Veno+算法,比較TCP M-Veno,M-TCP,TCP Veno 和TCP NewReno 的傳輸性能。
圖4 網(wǎng)絡(luò)仿真場(chǎng)景
3.2.1 業(yè)務(wù)傳輸時(shí)間比較
從圖5 可以看出,完成下載響應(yīng)時(shí)間隨著B(niǎo)ER 的逐漸增大,不同的TCP 版本完成下載響應(yīng)時(shí)間逐漸增大,尤其是BER 從10-6變化到10-5的過(guò)程中,完成下載響應(yīng)時(shí)間急劇增加。BER 從10-9變化到10-6的過(guò)程中,4 種不同的TCP 版本完成下載的響應(yīng)時(shí)間維持在1.2×103到2.3×103這個(gè)區(qū)間,而且它們的區(qū)別不是很大。從10-6變化到10-5的過(guò)程中,從圖示可以看到,完成下載響應(yīng)的時(shí)間快速增加。在BER為10-5時(shí),TCP NewReno 完成下載響應(yīng)的時(shí)間最長(zhǎng),其次是M-TCP,TCP M-Veno 在4 種TCP 中性能最好(7.542×103s),比TCP Veno(8.936×103s)提高了大約18%。
3.2.2 TCP 平均吞吐量的比較
從圖6 可以看出,衛(wèi)星鏈路的吞吐量隨著B(niǎo)ER 的逐漸增大,不同的TCP 版本衛(wèi)星鏈路的吞吐量逐漸減小,BER 從10-9變化到10-7時(shí),4 種不同TCP 版本性能大體上近似,TCP M-Veno 與TCP Veno 性能相當(dāng),比其他2 種TCP 性能略好,BER 從10-7變化到10-5時(shí),4 種TCP 版本的吞吐量急劇下降,TCP M-Veno 的吞吐量比其他3 種TCP 版本都好。TCP M-Veno 衛(wèi)星下行鏈路的利用率從55%(BER 為10-9時(shí))變化到15%(BER 為10-6時(shí)),M-TCP 衛(wèi)星下行鏈路的利用率從48%(BER 為10-9時(shí))變化到12%(BER 為10-6時(shí))。
圖5 下載時(shí)間比較
圖6 平均吞吐量比較
衛(wèi)星融合網(wǎng)絡(luò)可成為互聯(lián)網(wǎng)應(yīng)用的一個(gè)重要組成部分,需要針對(duì)該網(wǎng)絡(luò)特點(diǎn)研究TCP 傳輸性能的提高方法。本文通過(guò)改進(jìn)和結(jié)合傳統(tǒng)的TCP Veno 和M-TCP 算法提出了TCP M-Veno 算法。TCP M-Veno 算法在發(fā)送端擁塞窗口的增加方面進(jìn)行改進(jìn),能夠自適應(yīng)傳播長(zhǎng)時(shí)延,并通過(guò)估算網(wǎng)絡(luò)中積壓數(shù)據(jù)包的數(shù)量來(lái)區(qū)分隨機(jī)丟包和擁塞丟包,從而減少了衛(wèi)星網(wǎng)絡(luò)高誤碼率的影響。另外,在衛(wèi)星網(wǎng)關(guān)實(shí)現(xiàn)M-TCP 機(jī)制來(lái)解決移動(dòng)終端間歇性中斷。總的來(lái)說(shuō),TCP M-Veno 算法在保持TCP 語(yǔ)義的基礎(chǔ)上可同時(shí)減少長(zhǎng)傳播時(shí)延、高誤碼率引起的隨機(jī)丟包和移動(dòng)終端的間歇性中斷對(duì)衛(wèi)星網(wǎng)絡(luò)TCP性能的不利影響。
[1]BAI Y,DU W.VoIP services for ocean fishery vessels over integrated wireless and wireline networks[C]//Proc. 2013 IEEE 24th International Symposium on Personal Indoor and Mobile Radio Communications(PIMRC).[S.l.]:IEEE Press,2013:3461-3465.
[2]DU W,ZHENG X M,BAI Y,et al. Integrated wireless networking architecture for maritime communications[C]// Proc. 2010 11th ACIS International Conference on Software Engineering Artificial Intelligence Networking and Parallel/Distributed Computing(SNPD).[S.l.]:IEEE Press,2010:134-138.
[3]ALLMAN M,GLOVER D,SANCHEZ L. Enhancing TCP over satellite links using standard mechanisms[S].1999.
[4]ALLMAN M,DAWKINS S,GLOVER D,et al. Ongoing TCP research related to satellites[S].2000.
[5]PENG F,CARDONA A S,SHAFIEE K,et al. TCP Performance Evaluation over GEO and LEO Satellite Links between Performance Enhancement Proxies[C]//Proc.Vehicular Technology Conference(VTC Fall).[S.l.]:IEEE Press,2012:1-5.
[6]PIROVANO A,GARCIA F. A new survey on improving TCP performances over geostationary satellite link[J].Network&Communication Technologies,2013,2(1):1-18.
[7]BROWN K,SINGH S. M-TCP:TCP for mobile cellular networks[J].ACM SIGCOMM Computer Communication Review,1997,27(5):19-43.
[8]王云濤,方建安,張曉輝,等. 基于TCP Vegas 的網(wǎng)絡(luò)擁塞控制改進(jìn)算法[J].計(jì)算機(jī)應(yīng)用研究,2009,26(12):4645-4647.