張連連,劉 鋒,孫 杰,葛 宇
(1.北京航空航天大學(xué) 電子信息工程學(xué)院,北京 100191;2.河北建筑工程學(xué)院 電氣工程學(xué)院,河北 張家口 075000)
TCP/IP[1]協(xié)議是當(dāng)前Internet 中最為廣泛使用的協(xié)議。但是,當(dāng)它運行在衛(wèi)星通信環(huán)境下時,卻面臨著諸如高誤碼率、長往返時延、非對稱信道、間歇性鏈路中斷等問題,大大影響其性能,阻礙了在衛(wèi)星數(shù)據(jù)傳輸中的應(yīng)用。在衛(wèi)星通信網(wǎng)絡(luò)中采用改進(jìn)的TCP/IP 協(xié)議以克服衛(wèi)星網(wǎng)絡(luò)的特性對傳輸性能的影響,是一種切實可行的方法。TCP 一般不能分辨數(shù)據(jù)包丟失的原因是由于不能區(qū)分鏈路誤碼和網(wǎng)絡(luò)擁塞,而將丟包現(xiàn)象都認(rèn)為是擁塞的信號。所以,當(dāng)有數(shù)據(jù)包因為傳輸中出錯而丟棄,即使沒有發(fā)生擁塞,TCP 也會縮減發(fā)送窗口。衛(wèi)星鏈路上出現(xiàn)的傳輸錯誤往往具有突發(fā)性,如果在一個RTT 內(nèi)出現(xiàn)突發(fā)錯誤導(dǎo)致多個數(shù)據(jù)包連續(xù)丟失,就會嚴(yán)重降低吞吐量[1]。TCP 提供了 SACK 機制、SNACK 機制以及CCSDS 提出的鏈路層TC 協(xié)議,均能夠?qū)φ`碼丟包進(jìn)行重傳。重復(fù)的重傳會導(dǎo)致TCP 窗口縮減、吞吐量降低、鏈路帶寬浪費的情況[2-6]。本文提出將傳輸層與鏈路層的差錯控制信息進(jìn)行跨層交互來有效地解決上述問題,由傳輸層將數(shù)據(jù)包序列號及連接號等信息通知鏈路層,鏈路層將相應(yīng)序列號數(shù)據(jù)包的重傳狀態(tài)通知傳輸層,使TCP 能夠區(qū)分當(dāng)前的超時與快速重傳是否必要,從而減少傳輸層不必要的重傳,提高其在高誤碼率環(huán)境下的性能。
鏈路層重傳機制會導(dǎo)致鏈路層提供的有序或亂序的幀分組發(fā)送對TCP 造成兩種影響:當(dāng)鏈路層提供的是有序的幀分組傳送時,幀分組在網(wǎng)絡(luò)中會產(chǎn)生較大的時延而使TCP 發(fā)生不必要的超時重傳;當(dāng)鏈路層提供的是亂序幀分組傳送時會產(chǎn)生幀分組重排序的問題,當(dāng)重排序長度超過3 個或多個RTT,就會引起TCP 發(fā)送端不必要的快速重傳。這兩種情況都會引起鏈路層和傳輸層啟動差錯恢復(fù)機制,導(dǎo)致鏈路層和傳輸層發(fā)生重傳競爭的問題。鏈路層會重傳一個或多個幀分組造成幀分組的時延,而同時,終端也會意識到數(shù)據(jù)包的丟失而錯誤地進(jìn)行相同數(shù)據(jù)包的TCP 端到端重傳,即偽重傳。這種現(xiàn)象會降低端到端的吞吐量且加大了傳輸層的響應(yīng)時間,這是因為兩層之間的差錯控制機制沒有進(jìn)行協(xié)調(diào)而導(dǎo)致的,因此會降低端到端的吞吐量且增加了高層的響應(yīng)時間,可通過跨層信息交互解決上述問題。
1)TCP 發(fā)送數(shù)據(jù)過程中將數(shù)據(jù)包相應(yīng)的序列號通告給IP 層。
2)IP 層將數(shù)據(jù)包序列號與IP 分片對應(yīng),同時通知鏈路層。
3)鏈路層將數(shù)據(jù)包序列號與數(shù)據(jù)幀對應(yīng)并存儲到列表中。
4)當(dāng)鏈路層發(fā)現(xiàn)數(shù)據(jù)幀丟失并重傳時把重傳的數(shù)據(jù)幀對應(yīng)的序列號、端口號以及重傳狀態(tài)(開始重傳、重傳成功、重傳失?。┩ㄖoTCP 發(fā)送端。
5)TCP 獲知鏈路層重傳狀態(tài)并維持一個鏈路層重傳狀態(tài)列表,并根據(jù)三種不同的重傳狀態(tài)分別進(jìn)行處理。當(dāng)獲知數(shù)據(jù)包重傳成功時從列表中刪除相應(yīng)數(shù)據(jù)信息;重傳失敗時則立即重傳相應(yīng)的數(shù)據(jù)包;開始重傳時則查找當(dāng)前鏈路層重傳狀態(tài)列表是否已經(jīng)存有重傳數(shù)據(jù)包的信息,若沒有則按序列號順序插入到列表中,如有則不做任何處理。
6)在標(biāo)準(zhǔn)TCP 中發(fā)送端發(fā)生重復(fù)ACK 或定時器超時事件時,檢查丟失的數(shù)據(jù)包是否存在于鏈路層重傳狀態(tài)列表中,如存在,則不做任何處理;如不存在,認(rèn)為是網(wǎng)絡(luò)擁塞的原因,按照TCP 原有的規(guī)則縮減擁塞窗口,并重傳丟失的包。
假設(shè)衛(wèi)星鏈路中丟幀率為pf,TCP 的單個數(shù)據(jù)包在CCSDS TC 鏈路層分為N個數(shù)據(jù)幀,則可以計算出鏈路中丟幀率與TCP 數(shù)據(jù)包丟包率的關(guān)系。
一個數(shù)據(jù)幀在第i次(i≥1)傳輸成功的概率p(i)為:
單個數(shù)據(jù)幀在最大重傳次數(shù)為M的情況下成功傳輸?shù)母怕蕄success為:
則TCP 數(shù)據(jù)包傳輸失敗的概率ppacket為:
TCP 吞吐量模型[7]采用式(4)計算:
式中:λ為 TCP 吞吐量;b為 TCP 估計的數(shù)據(jù)速率;rto 為超時重傳時間。當(dāng)鏈路層是有序的分組傳輸時,傳輸層rto 一般可認(rèn)為是4·rtt。TCP 的單個數(shù)據(jù)包在鏈路層分為N個數(shù)據(jù)幀,單個數(shù)據(jù)幀在最大重傳次數(shù)為M=4 時,可能會發(fā)生超時重傳,根據(jù)式(3)得到TCP 超時重傳事件發(fā)生的概率prto。
當(dāng)N取不同的數(shù)值,鏈路層最大重傳次數(shù)M分別為3,4,7 時,TCP 數(shù)據(jù)包傳輸失敗的概率ppacket與丟幀率的關(guān)系分別如圖1~圖3 所示。
圖1 M=3 時丟幀率與TCP 丟包概率之間的關(guān)系
從圖中可以看出,當(dāng)M越大時,TCP 數(shù)據(jù)包傳輸失敗的概率越小。在丟幀率較小的情況下,MAC 層的少次重傳已經(jīng)能夠滿足需求并不需要傳輸層進(jìn)行重傳,僅在丟幀率較高,MAC 層重傳不足以滿足數(shù)據(jù)包成功傳輸?shù)那闆r下,跨層信息交互機制才會起到作用。M分別為 3,4,7 時,當(dāng)丟幀率分別小于 0.05,0.1,0.2 時,TCP 丟包率基本可以認(rèn)為等于0。此時數(shù)據(jù)包的重傳都是由MAC 層完成的,否則數(shù)據(jù)包的重傳工作有部分由MAC層完成,其余部分由傳輸層完成。
圖2 M=4 時丟幀率與TCP 丟包概率之間的關(guān)系
圖3 M=7 時丟幀率與TCP 丟包概率之間的關(guān)系
當(dāng)鏈路層是無序的分組傳輸時,在傳輸速率較大的情況下,只要分組長度超過3,就會引起TCP 的快速重傳,引發(fā)不必要的窗口縮減,大大降低了TCP 的吞吐量。由于無序分組傳輸存在很多的不確定性,因此本文只分析了有序分組傳輸時的TCP 協(xié)議性能情況。
本文在OPNET[8]中實現(xiàn)了CCSDS 協(xié)議框架,在鏈路層使用了TC 協(xié)議,并設(shè)計實現(xiàn)了傳輸層與鏈路層之間的跨層信息交互機制,創(chuàng)建了衛(wèi)星接入場景如圖4 所示,包括地面站節(jié)點、地面接入節(jié)點、衛(wèi)星發(fā)射節(jié)點及配置節(jié)點,對鏈路層有序分組傳輸?shù)那闆r進(jìn)行了仿真驗證,對比了基于跨層信息交互機制的TCP 與標(biāo)準(zhǔn)TCP 的吞吐量。
在仿真場景中無線鏈路和有線網(wǎng)絡(luò)部分的往返傳播時延分別是50 ms和10 ms,無線鏈路帶寬為11 Mb/s,有線鏈路帶寬為100 Mb/s。仿真中運行的業(yè)務(wù)為衛(wèi)星向地面發(fā)送FTP 連續(xù)文件數(shù)據(jù)傳輸,文件大小為1 MB。仿真開始時間為200 s,仿真持續(xù)時間設(shè)置為3 600 s,且TCP 數(shù)據(jù)包在鏈路層不進(jìn)行分幀即N=1。從總吞吐量方面對基于跨層設(shè)計的TCP 和標(biāo)準(zhǔn)的TCP 進(jìn)行對比。設(shè)置鏈路層最大重傳次數(shù)分別為3,4,7,仿真結(jié)果如圖 5~圖8 所示。
圖4 衛(wèi)星接入仿真場景
圖5 跨層設(shè)計TCP 相對于標(biāo)準(zhǔn)TCP 吞吐量增長的百分比
圖 6 M=3 時 TCP 傳輸 1 MB 數(shù)據(jù)時間對比
從圖5 中可以看到,鏈路層重傳次數(shù)M分別為3,4,7 情況下基于跨層交互的TCP 相對于標(biāo)準(zhǔn)TCP 的吞吐量增長百分比情況。可以看出使用跨層機制的TCP 在丟幀率較高的情況下,能夠有效地提高TCP 的吞吐量,但在丟幀率較低的情況下對吞吐量影響不大。圖5結(jié)果與圖1~圖3 中的結(jié)果相吻合,從圖1~圖3 中可以看出在丟幀率較低的情況下,MAC 層的少次重傳已經(jīng)能夠滿足需求并不需要傳輸層進(jìn)行重傳,跨層信息交互機制并不能起到提高吞吐量的作用。僅在丟幀率較高,MAC 層重傳不足以滿足數(shù)據(jù)包成功傳輸?shù)那闆r下,跨層信息交互機制才會起到作用,能夠有效地提高吞吐量。從式(5)也可以看出,在丟幀率較低的情況下TCP 超時事件發(fā)生的概率也較低,所以跨層信息交互機制不能提高低丟幀率情況下的吞吐量。同時,從圖6~圖8 中可以看出,在丟幀率較高的情況下,使用跨層設(shè)計的TCP 傳輸1 MB數(shù)據(jù)的時間遠(yuǎn)低于標(biāo)準(zhǔn)的TCP。
圖 7 M=4 時 TCP 傳輸 1 MB 數(shù)據(jù)時間對比
圖 8 M=7 時 TCP 傳輸 1 MB 數(shù)據(jù)時間對比
鏈路層的重傳機制可以改善衛(wèi)星網(wǎng)絡(luò)中TCP 的性能,但需要避免引發(fā)TCP 偽重傳現(xiàn)象。本文提出基于跨層信息交互機制的改進(jìn)TCP 協(xié)議,通過鏈路層和傳輸層進(jìn)行差錯控制信息的協(xié)調(diào),避免了偽重傳現(xiàn)象的發(fā)生。雖然增加了發(fā)送端的復(fù)雜度,但是對丟幀率較高的衛(wèi)星網(wǎng)絡(luò)中TCP 的吞吐量有顯著的提高,且對中間節(jié)點和TCP 接收端的協(xié)議棧無特殊要求,兼容性好,容易實現(xiàn)。
注:本文通訊作者為葛宇。