王路,胡月梅,劉立祥,胡曉惠
(1. 中國科學院 軟件研究所,北京 100190;2. 中國科學院 研究生院,北京 100049)
衛星網絡[1]面臨著長延遲、動態拓撲、鏈路誤碼率高等挑戰。早在1976年,Gitman[2]發現在地面無線網絡中使用跳到跳重傳方式能夠比端到端重傳方式獲得更短的傳輸延遲和更高的帶寬利用率。近些年,出現了許多利用跳到跳機制保證無線傳感器網絡數據可靠性的傳輸協議,如 PSFQ[3]、OSDRMP[4]等。PSFQ (pump slowly, fetch quickly)協議中間節點參與數據分組的檢測和恢復,通過跳到跳的方式保證數據可靠交換。OSDRMP協議使用延遲的前向亂序重傳請求恢復丟失數據。文獻[5]對PSFQ進行改進,擴大傳感器節點緩存空間,使傳感器節點能夠同時傳輸多個數據分組。文獻[6]提出一種跳到跳傳輸控制協議協議體系,通過跳到跳確認信息保證數據可靠傳輸。DTSN[7]引入 ACK和NACK機制,保證數據可靠傳輸,并將數據緩存在中間節點,每個存儲丟失數據的節點均能夠重傳恢復丟失數據,提高丟失數據的恢復效率。
目前,互聯網使用的傳統傳輸控制協議TCP[8,9]認為數據丟失即表示發生擁塞,需要減小發送窗口,這種擁塞檢測機制將鏈路誤碼造成的數據丟失錯誤地解釋為網絡發生擁塞,所以不適用于鏈路誤碼率較高的無線傳輸環境,并且TCP采用的擁塞避免、快速恢復等擁塞窗口調節方式在高帶寬網絡環境下很難達到高利用率。為解決TCP擁塞控制算法遇到的問題,已經提出許多擁塞控制方法,如AQM/ECN[10]、XCP[11]、VCP[12]、MLCP[13]、BMCC[14]等。這些擁塞控制機制由網絡中間節點將網絡負載情況通過端到端確認信息傳遞給發送端,發送端根據接收信息調整發送速率。AQM/ECN通過在IP分組頭中加入2bit,用于標識網絡狀態,成功地降低了網絡分組丟失率及隊列長度,但是窗口調節等方面與傳統TCP幾乎相同,在高帶寬情況下很難實現高帶寬利用率。為能夠達到帶寬的高利用率,XCP提出每個路由節點計算自身平均流速率并將該速率發送給發送端,發送端根據網絡中節點反饋信息調節發送速率。這種方式將擁塞控制交給整個網絡進行,發送端接收到精確的網絡內部信息后,調整數據發送速率達到很好的網絡性能。但是 XCP需要在數據中加入較多比特傳遞中間節點信息,增加了控制信息對網絡資源的占用。VCP通過分析AQM/ ECN和XCP,提出中間節點計算負載并對負載分級,在ECN原有2bit的基礎上增加1bit傳遞負載信息。還有一些研究[15,16]將跳到跳思想引入擁塞控制,相鄰節點通過交換存儲空間、路由表等信息,降低網絡狀態反饋時延,鄰居節點快速調整發送速率,避免網絡擁塞,減少數據丟失量。
為滿足衛星網絡需求,空間數據系統咨詢委員會(CCSDS, consultative committee for space data systems)制定了針對星際網絡的傳輸層協議標準SCPS-TP協議[17]。SCPS-TP協議針對星間鏈路特點對數據丟失原因進行分類,并引入TCP Vegas[18]擁塞控制機制及SNACK確認機制。
拓撲不斷變化的衛星網絡往返時延抖動較大,導致無法準確測量往返時延。傳統的超時重傳依賴于往返時延測量的準確,造成不必要的數據重傳。快速重傳方式主要針對單個數據分組丟失設計,無法有效恢復成段丟失數據,同時快速重傳方式也不能適用于長延遲網絡,原因是源端可能需要等待很長時間才能收到3個重復的ACK。所以傳統的數據重傳方式不適用于衛星網絡。快速、高效的跳到跳反饋有效地減少了高誤碼率帶來的負面影響,非常適用于衛星網絡環境。但是目前跳到跳可靠傳輸機制主要針對地面無線網絡設計,使用較為單一確認機制,并沒有考慮衛星網絡長延遲、動態拓撲導致數據成段丟失,以及由于衛星移動、鏈路失效等原因造成數據無法通過跳到跳重傳恢復的情況。擁塞控制方面,顯示負載反饋擁塞控制算法能夠有效提高網絡帶寬資源利用率,但是這些機制均是建立在傳統的端到端可靠控制基礎上,這種端到端擁塞控制機制在長延遲、動態拓撲、誤碼率較高的衛星網絡中,由于端到端之間的長延遲導致反饋到源端的信息可能已經過期,無法反應網絡當前真實情況;而且在衛星鏈路高誤碼率情況下,反饋信息可能在傳輸過程中已經丟失。傳統的端到端擁塞控制機制產生的另外一個問題是由于端到端往返延遲的不同,造成各個數據流分配網絡帶寬資源的不公平。目前,采用跳到跳機制的擁塞控制算法,能夠加快網絡信息的反饋,但是主要為地面無線網絡設計,節點負載信息在相鄰節點間傳輸,相鄰節點能夠快速調節發送速率,但是源端對網絡中鄰居節點間的反饋信息反應較為遲鈍,不適用于長延遲、拓撲動態變化的衛星網絡。為解決上述問題,本文提出一種基于跳到跳信息的適用于衛星網絡的傳輸控制協議TPSN(transmission control protocol for satellite networks)。
為增強數據傳輸的可靠性,提高發送端對網絡狀態反應靈敏度,TPSN協議使用跳到跳異步確認機制,快速恢復成段丟失數據。在此基礎上,使用端到端的基于檢測窗口的選擇性否定確認機制(SNACK),重傳通過跳到跳機制無法恢復的數據,保證衛星網絡中數據傳輸的高可靠性。為了能夠避免網絡擁塞,提高網絡資源利用率,保證不同數據流間的公平性,TPSN協議周期性地計算衛星鏈路負載情況,并在跳到跳基礎上,采用一種快速、靈活的傳遞方式,將負載狀態信息傳遞至源端,源端根據負載情況調節發送速率。
協議處理流程如圖1所示。源端A向目的A'發送數據,中間衛星iN接收到數據后發送跳到跳確認消息,衛星1iN-接收到跳到跳確認信息后重傳丟失數據;負載信息借助于跳到跳機制反饋到源端A,源端A接收到網絡負載信息后調整數據發送速率;目的端 A'接收到數據后按照協議規定發送端到端SNACK信息,源端A接收到端到端SNACK信息后調整滑動窗口,并重傳丟失數據。TPSN協議主要工作在傳輸層和網絡層,其中端到端可靠性保證機制工作在傳輸層,跳到跳可靠性保證機制工作在網絡層,擁塞控制機制工作在傳輸層和網絡層,2層借助于跨層思想交互有用信息,共同保證數據可靠傳輸、避免網絡擁塞,提高網絡資源利用率。

圖1 協議處理原理
2.1.1 跳到跳異步確認重傳機制
衛星網絡中,鏈路的高誤碼率、鏈路的頻繁切換經常導致數據丟失,而且這種網絡環境下,鏈路錯誤會不斷累積。假設數據分組長度為Lbyte,誤碼率為p,數據分組通過一跳成功傳輸的可能性為,數據分組通過n跳成功傳輸的可能性迅速減少為,所以隨著數據傳輸路徑經過衛星跳數增加即傳輸延遲加長,數據成功到達率呈指數衰減。跳到跳確認方式,能夠快速重傳丟失數據,避免錯誤累積。同時中間衛星參與可靠性保障,使數據分組的恢復重傳不需要等待2個端節點間的往返時間,中間衛星即可快速恢復重傳丟失數據。定義N為數據傳輸鏈路上衛星個數。假設一次重傳即能夠恢復丟失數據,使用端到端數據確認重傳機制,丟失數據成功傳輸時間,當中間衛星參與數據重傳,丟失數據成功傳輸時間,其中,M為數據傳輸過程中數據丟失次數, Ti是數據跳到跳傳輸時延, Tj是丟失數據跳到跳傳輸延遲。由于M<N,所以數據確認與重傳過程,如圖2所示。綜上論述可以得到的結論是跳到跳機制非常適用于誤碼率高、鏈路頻繁切換、端到端延遲長的衛星網絡。

圖2 跳到跳數據確認
為能夠快速恢復成段丟失數據,減少跳到跳確認對網絡資源占用,確認信息采用異步跳到跳累積確認方式。累積確認能夠防止確認信息丟失,減少確認信息對網絡帶寬占用。為能夠恢復成段丟失數據,確認信息包括標識數據接收情況的窗口位圖。窗口位圖由一系列比特組成,每個比特代表一個數據分組接收情況,當比特設置為1代表數據已正確接收,比特設置為0代表數據未能正確接收。由于采用跳到跳確認,丟失數據恢復頻率快,窗口位圖取值可以較小,此處窗口位圖設置為8bit。單跳衛星間維護本地數據編號。確認信息包括衛星地址、本地數據編號及 8bit窗口位圖。本地數據編號與8bit窗口位圖組合表明本地數據編號之前所有數據分組,包括數據本身及本地數據編號之后8個數據分組的接收情況。如(A, 18, 01101111),表示衛星A已正確接收本地編號為 18之前所有數據分組,包括18號數據分組,以及20、21、23、24、25、26號數據分組,本地編號為 19、22的數據丟失。這種確認方式適用于高誤碼率情況下數據成段丟失情況,而且每個確認信息與傳統累積確認信息相比僅增加8bit,網絡負載較小。接收衛星接收到數據后,填充窗口位圖,發送確認信息。跳到跳確認信息主要作為網絡中其他數據的附加信息傳輸,如路由信息、網絡管理信息等。雖然中間衛星在接收到跳到跳確認消息前需要將數據緩存在存儲介質中,但由于單跳往返時延(RTT)較小,收到確認信息后緩存數據能夠立即被釋放,因此數據發送隊列不會由于需要等待跳到跳確認信息而不斷增長。
跳到跳異步確認重傳機制采用2種數據重傳方式。第一種方式與傳統超時重傳相似,雖然傳統超時重傳方式不適用于衛星網絡中端到端的超時重傳,但是由于相鄰衛星之間鏈路狀態較為單一,所以可以用于跳到跳的數據重傳控制。衛星通過跳到跳往返時延設置數據重傳時鐘,衛星重傳超時數據。這種數據重傳方式數據恢復時間較長,針對這個問題,TPSN協議提出第二種數據重傳方式,由于2個相鄰衛星間鏈路狀態較為單一,且跳到跳確認采用異步方式發送,TPSN協議認為接收到包含亂序信息的跳到跳確認信息即表明有數據分組丟失,當發送衛星第一次接收到數據亂序信息后,立即重傳數據,當第二次或者更多次收到相同數據亂序信息時,為避免不必要的數據重傳,將根據鏈路分組丟失率判定是否重傳數據。
假設 ()Ot是發送衛星時刻t的數據發送速率,不包括重傳數據; ( )It d+ 是接收衛星時刻td+ 的數據接收速率,不包括重復數據;d是數據單向傳輸時延是數據分組平均長度;pδ是時間間隔。為能夠恢復丟失數據分組,并且避免重復重傳數據,數據重傳時間間隔RTΔ應滿足如下公式:

根據上述分析,發送方第二次或者更多次接收到同一數據亂序信息時,如果則重傳亂序數據,其中,ΔN為上次重傳開始到目前為止發送端發送數據分組數量,不包括重傳數據。
2.1.2 基于檢測窗口的選擇否定應答
某些時間段內,對于拓撲結構不斷變化的衛星網絡,2個端節點之間可能并不存在傳輸路徑,此時中間衛星如果發生故障,數據可能無法通過中間衛星進行恢復。為保證數據傳輸的可靠性,引入端到端確認機制,并根據鏈路切換及高誤碼率特性,端節點確認信息采用選擇否定確認(SNACK)信息,告知源端目前已經接收到數據信息以及需要重傳數據信息,如圖3所示。SNACK采用累積確認方式,確認信息長度為64bit,第一個32bit表示接收方希望接收到下一段數據編號 Nrcv_nxt,第二個32bit是 Nrcv_nxt-1開始向前32個數據段接收情況,格式如圖 4所示。每個SNACK數據每次可以確認 32段到數據接收情況。如(58,252.15.192.240),此處后32bit使用類似于IP每8bit計數方式,能夠表示26號到57號數據分組接收情況,其中有 3個缺口,長度分別為 6、6和 4,與26號數據偏移量分別為6、18和28。

圖3 端到端數據確認

圖4 SNACK格式
由于衛星網絡端到端的長延遲以及動態拓撲導致較大端到端延遲抖動,數據往返時延(RTT)無法精確計算,所以源端不再設置超時重傳時鐘,端到端的數據重傳由SNACK控制完成。為保證源端及時重傳恢復跳到跳無法恢復的丟失數據,減少端確認信息對反向鏈路資源的占用,適應帶寬不對稱鏈路特性,目的端在2種情況下發送端節點間確認信息:1)發現數據分組亂序;2)周期性發送端節點確認信息,目的是更新滑動窗口,并釋放已正確接收數據占用的資源。
方式 1 如果目的端每收到一個數據分組即檢測是否亂序,并發送確認信息,由于網絡數據突發特性,即短時間內發送大量數據,一旦發生數據丟失,會在短時間內產生大量端節點間確認信息,這些確認信息可能指向同一范圍內的丟失數據,結果不僅產生大量冗余確認信息,而且發送端會不斷重傳未確認數據。為減小衛星負擔,衛星并不是每收到一個數據分組即檢測數據是否亂序。TPSN設置數據亂序檢測窗口 wchk_wnd,只有接收數據量達到窗口值時,接收衛星才檢測數據是否亂序。采用固定窗口值的方式能夠緩解每個數據分組都檢測引起的壓力,但是并不能解決由于數據分組丟失造成的重復確認信息及冗余數據分組重傳。因此TPSN采用動態窗口值,變化方式采用乘性增、乘性減。根據 2.1.1節分析,當鏈路分組丟失率為 plost_rate情況下,發送端平均每發送個數據分組即重傳數據才可能保證數據可靠傳輸,所以檢測窗口 wchk_wnd初始值設置為當檢測到數據亂序時,為防止多次傳輸同一亂序數據信息,檢測窗口值翻倍,減慢數據檢測速率。當數據順序到達,則檢測窗口值 wchk_wnd乘性減為原先值的0.9倍,并保證不低于初始值,加快數據檢測速率。發送端重傳數據時間間隔同2.1.1節。
上述過程中,由于衛星網絡動態拓撲特性,目的端需要正確判斷亂序是由于數據分組丟失,而不是路徑改變引起。目的端通過數據分組的生存時間TTL字段判斷數據分組亂序原因是數據分組丟失,而不是路徑改變。目的端接收順序到達數據后讀取分組頭TTL字段,并存儲在 T TLin-order中。如果后續接收到亂序數據的TTL字段等于或者小于 T TLin-order:

目的端認為接收亂序數據的原因是傳輸路徑發生改變。如果接收到的TTL不滿足式(2),即數據經過更長路徑傳輸,則目的端認為數據丟失[19]。
方式 2 當數據一直順序接收時,按照方式 1不會發送端節點間確認信息,這時候需要周期性發送端節點間確認信息,目的是及時通報源端數據接收情況,更新滑動窗口,并釋放已經正確接收數據占用的緩存。為及時調節滑動窗口,發送時間間隔由源端與目的端間的往返時間RTT和鏈路分組丟失率決定。假設 pavg為平均數據分組長度,plost_rate為鏈路分組丟失率,Rrate為接收方平均接收數據速率,不包括重復數據,則確認信息發送時間間隔為

2.2.1 鏈路負載計算
近期一些研究[12,13]中利用負載因子改進擁塞控制算法,但是只考慮了單路徑傳輸情況,即一個節點只有一個下一跳,負載計算不適用于節點存在多條路徑情況。TPSN對節點隊列進行管理,發送到不同下一跳節點的數據存放在不同鏈路隊列中,節點負載計算針對鏈路進行,每條鏈路都有對應的負載。如果負載計算針對節點進行,可能由于節點各鏈路帶寬不一致導致節點負載判斷失效。如圖 5所示,路徑1帶寬為30Mbit/s和20Mbit/s,路徑2帶寬為200Mbit/s,通過路徑1及路徑2數據流量均為30Mbit/s,容易判斷路徑1負載重,路徑2負載輕。如果按照文獻[12, 13]中的計算方法計算節點負載,則無法作出正確判斷。

圖5 負載計算
中間節點每隔時間tρ計算節點鏈路負載ρl。參考文獻[12, 13],ρl計算公式為

其中,與文獻[12, 13]對λl和q?l定義不同,此處λl指tρ時間內進入節點從該鏈路傳輸的數據總量; q?l是在這段時間內該鏈路的隊列長度平均值,以字節為單位;kq是系數;γl是鏈路的目標使用率,取值接近于1; Cl是鏈路數據發送能力[12]。為了能夠更加充分地利用節點存儲空間,令 kq=0.8。平均隊列長度計算時間間隔取值為 tρ/ 20。
節點間通過使用發送窗口控制數據發送量,所以計算負載的時間間隔tρ應該由單跳節點間往返時延決定。由于網絡數據具有突發性,因此tρ取值應比節點間往返時間稍大才能反應網絡中數據流量情況,同時應該避免存儲數據隊列較長后才進行負載計算、通告工作。此處,其中D是往返時延的平均方差。
2.2.2 擁塞窗口的調節
TPSN根據網絡節點傳遞給發送方的負載情況調節擁塞窗口,窗口變化采用乘性增、線性增、對數增、乘性減方式進行調節。
當瓶頸節點鏈路傳回負載低于80%時,說明網絡空閑,發送方窗口采用乘性增長方式快速增長。
乘性增:

當瓶頸節點傳回負載大于80%時,系統已經處于高利用率,發送方通過線性增、對數增、乘性減使窗口保持在較穩定狀態,確保資源的高利用率。當負載大于80%,低于95%時,擁塞窗口采用線性增長方式調節;當負載大于95%,低于100%時,擁塞窗口減慢增長,采用對數增方式調節;當負載大于100%時,發送方采用乘性減方式調整擁塞窗口。
線性增:

對數增:

乘性減:

其中,α取值為1,增長方式與TCP相同[8]。窗口乘性增長率δ由網絡剩余資源決定,網絡剩余資源可以表示為1-ρl,其中ρl是當前鏈路負載情況,則

其中,k是常量。源端接收到的負載并不是ρl的真實值,而是它的編碼,負載編碼見2.2.3節表1,而且負載信息借助于跳到跳確認機制在延遲較短的節點之間傳遞,對異常情況反映迅速,所以并不需要過于保守的窗口增長率[12]。當 k ≤ 1 /2時,TPSN協議能夠達到穩定狀態,證明詳見第3節性能分析,所以常量k=0.5,ρl=0.80,窗口增長率δ=0.125。由于加入[95%,100%)負載范圍,此處β=0.95,目的是使源端采用對數增、乘性減方式調節窗口,使得發送速率保持穩定,并且充分利用網絡資源。
TPSN協議將鏈路負載分為4個級別,與文獻[12]相比,通過增加[95%,100%)負載范圍使得在高利用率情況下窗口變化更加平緩,配合上對數增和乘性減,能夠更長時間維持窗口穩定,保證網絡資源利用率最大化。
2.2.3 動態快速負載傳遞
傳遞負載lρ真實值會占用較多網絡帶寬,為減少負載信息對網絡資源占用,網絡中傳遞的并不是負載真實值,而是采用分級編碼方式處理后的負載,如表1所示。

表1 負載編碼
衛星網絡中使用傳統負載傳遞方式會造成反饋信息獲取不及時,發送方不能及時調整發送策略,傳統負載傳遞時間其中, Ti是單跳傳輸延遲,N是傳輸路徑上節點個數,如圖6(a)所示。為能夠實現數據傳輸路徑上的鏈路負載信息快速傳送至發送端,負載隨著節點間確認信息捎帶傳遞,基于跳到跳機制的負載反饋時間為 2 T1,其中 T1是源端與第一跳節點間鏈路延遲,如圖6(b)實線部分所示。負載反饋時間與單跳往返時間有關,與端到端延遲無關。顯然,極大地減小鏈路信息反饋時延。中間節點在收到負載信息后會將自身的鏈路負載情況與接收到的負載進行比較,將較大負載值寫入數據捎帶至上一跳,傳遞至源端節點的負載表示該路徑上瓶頸鏈路的負載,發送端根據接收到負載信息調整擁塞窗口。同時跳到跳負載信息傳遞方式沒有傳統端到端方式需要端到端往返延遲的收斂過程,原因是一旦有數據傳輸就會有負載傳遞,即使是新加入數據流同樣能夠獲取最新的鏈路負載信息。
將負載信息捎帶于不斷傳遞給發送端的數據中,發送端不僅可以更快掌握數據傳輸路徑網絡狀況,同時避免了傳統端到端擁塞控制由于兩端節點往返時延不同產生的網絡資源分配不公平現象。如圖6(a)所示,傳統負載反饋信息均是由目的端發出,中間節點不更新負載信息,隨著兩端節點往返時延增大,負載反饋信息到達頻率減小,造成兩端節點距離遠的應用網絡資源占用率低,需要在發送端根據往返時間等信息對參數進行調整,才能保證各個應用間的公平性。借助于跳到跳機制傳遞負載信息,最新負載反饋信息不斷在各節點間傳送,發送端接收負載信息頻率與兩端節點往返時延無關,只與單跳節點間往返時延相關,當單跳節點間往返時延差別較小,不會產生由于端節點間往返時延不同造成的不公平現象,證明詳見第3節性能分析。

圖6 負載傳遞
文獻[12]中提出一種簡單的協議穩定性分析數據模型。如圖7所示,TPSN協議模型中間節點根據t-RTTone_hop時刻發送數據計算鏈路負載ρl,并將負載傳回發送端,發送端在t時刻根據接收到的負載調整發送窗口。根據 TPSN特點對文獻[12]中數據流分析模型進行調整:

其中,wconi(t)是數據流i的擁塞窗口,δ(ρl)、α和分別是乘性增、線性增和對數增系數。協議正常運行狀態下,窗口值大于1,,所以,式(9)可以簡化為


圖7 TPSN模型
為了能夠真實地模擬衛星網絡環境,驗證協議性能,使用事件驅動的OMNeT++網絡仿真軟件建立衛星網絡仿真驗證系統,真實模擬衛星網絡運行過程中網絡環境變化,對協議進行性能驗證與分析。
4.1.1 網絡模型
衛星網絡拓撲采用銥星星座,主要參數如表 2所示。衛星經過極區時,星際鏈路會關閉。反向縫之間不存在星際鏈路。
4.1.2 節點模型
節點模型主要包括2類,一類是衛星節點模型,另一類是地面節點模型。主要包括3個功能模塊,第1個是軌道鏈路模擬功能模塊,第2個是傳輸控制協議功能模塊,第3個是路由協議功能模塊。

表2 衛星網絡拓撲主要參數
軌道鏈路模擬功能實現衛星運動軌道以及衛星鏈路模擬。傳輸控制協議功能模塊分別實現了本文提出的傳輸控制協議 TPSN、CCSDS制定的SCPS-TP協議、TCP協議以及VCP協議。路由協議功能模塊實現參考文獻[20, 21]中提出的基于地理位置信息的分布式路由算法。
4.1.3 仿真參數設置
每條鏈路帶寬設置為20Mbit/s,數據發送時間間隔滿足Poisson分布,數據分組長度為1KB。每條鏈路均維護一條先進先出隊列,隊列長度為200KB。數據通信均是由地面站發起,通過衛星網絡傳輸信息到目的地面站。當衛星高度為 780km時,衛星軌道周期為1h40min,2h仿真時間能夠反應整個網絡變化過程對協議的影響,所以除特殊說明,仿真時間持續2h。由于仿真實驗在衛星拓撲結構中運行,端到端往返時延由實際運行狀態決定,所以通過設置不同端節點距離調整端節點間延遲。仿真過程中,2個端節點間經過衛星個數隨著運行時間推進會不斷發生變化。
4.2.1 窗口增長及鏈路利用率
首先,考慮協議對網絡資源的利用。如圖8所示,縱坐標為各時刻窗口值與目的端接收緩存比值,仿真時間持續120s,圖中顯示前50s窗口變化過程。各種情況下,TPSN擁塞窗口初始階段快速上升,穩定后不因為距離、鏈路誤碼率等因素發生變化。對于 TCP,由于節點移動導致兩端節點間RTT發生變化,發送的數據可能因為距離增大導致確認信息反饋時延增加,造成TCP錯誤認為數據超時,重傳未確認數據、降低擁塞窗口,TCP規定在重傳數據確認到達之前不可以更新RTT[22],使得后續發送的數據分組仍然使用未更新的RTO,導致后續發送數據即使完全正常傳輸,由于RTT未能及時更新,TCP可能仍然錯誤認為數據需要超時重傳。當鏈路誤碼率增高后,情況更加惡劣,除了超時影響之外,還有數據分組丟失,導致TCP一直處于慢啟動階段,對網絡資源利用率很低。TCP在初始階段擁塞窗口會增長,但是當窗口增長到一定值后窗口開始下降,鏈路利用率降低。說明TCP不適用于高帶寬、拓撲結構經常發生變化的衛星網絡。SCPS-TP采用TCP-Vegas擁塞控制方式,這種方式雖然不會將鏈路切換或鏈路誤碼導致的數據丟失誤判為鏈路擁塞,但是非常依賴于RTT的測量以及2個邊界值的選取;數據確認采用SNACK方式,隨著兩端節點距離增加,RTT增大、鏈路誤碼率提升,SNACK反饋頻率會降低,并且反饋信息可能丟失,導致擁塞窗口增長緩慢,數據發送量減少。針對上述問題,TPSN借助于跳到跳機制保證窗口的及時更新。VCP需要等待端到端負載信息才會對窗口進行調整,而且乘性增參數設置為0.062 5,取值非常保守,在長延時情況下窗口增長非常緩慢。鏈路資源利用率計算公式:其中,tinterval為采樣時間間隔, Nacked是時間tinterval內被確認數據分組數量, pavg是數據分組平均長度,lrate是鏈路數據發送速率。

如圖9所示,對于 SCPS-TP當鏈路誤碼率為10-5時,由于擁塞窗口上升非常緩慢,鏈路利用率低。隨著誤碼率的降低,鏈路利用率立即恢復到很高水平。在鏈路誤碼率較低、端節點距離較短時,由于數據分組丟失較少及端節點延遲較小,VCP和TPSN協議利用率基本相同。但是SCPS-TP和VCP都存在相同問題,發送端均需要等待接收端確認信息,所以當距離增大到10 000km,由于往返時間加大,確認信息反饋緩慢,利用率會下降。對于SCPS-TP和VCP,隨著誤碼率上升,由于僅使用端確認保證機制,數據更容易丟失,利用率同樣下降。TPSN協議利用跳到跳確認機制使負載信息傳遞不再受端節點間距離的影響,能夠一直保持很高的鏈路利用率。
4.2.2 公平性及隊列穩定性

圖8 擁塞窗口變化

圖9 利用率對比
傳統端到端的擁塞控制機制中往返時延RTT小的應用由于反饋迅速,首先搶占網絡資源,造成各種應用業務間網絡資源分配不公平。針對這種情況已經有很多協議對其進行專門處理,主要處理方式是通過加入參量減少由于RTT不同對窗口調整的影響。TPSN協議負載反饋無需等待目的端反饋信息,中間節點即將負載信息反饋至發送端,窗口變化頻率由單跳之間往返時間決定,與兩端節點距離無關,所以不需要參數處理即能夠保證各應用數據流之間的公平性。公平性驗證的各節點拓撲如圖10所示,每加入一個新的目的節點,源節點分別為目的節點建立新的數據流。各目的節點與源端距離變化范圍是1 000km到10 000km。隨著具有不同端到端距離的數據流加入,各協議公平性變化如圖11所示。參考文獻[23],公平性計算公式為

其中,N是數據流總數,ix是第i個數據流發送數據量。

圖10 公平性測試拓撲

圖11 公平性
由圖 11可以看出,隨著與目的節點距離不同的數據流數量增加,TCP和SCPS-TP公平性下降很快。VCP對RTT不同造成的不公平現象進行處理,公平性一直保持很好,僅略低于TPSN協議,但是隨著數據流個數增加和端節點間延遲增大,TPSN協議公平性優勢逐漸體現出來,同時 VCP公平性處理與TPSN協議相比較復雜,增加了節點處理負擔,而TPSN協議從設計上保證各種不同RTT應用數據流的公平性,節點無需額外地處理開銷就能夠保證不同RTT節點間的公平性。
通過節點隊列變化情況說明協議在不同環境下的穩定性。隊列長度取值是數據傳輸路徑上傳輸隊列長度,仿真中隊列采樣時間間隔為 0.1s,圖12中繪制的是傳輸路徑上最長的隊列長度,隨著端節點距離增大隊列長度略有增長,但是基本穩定在15KB到20KB之間。這是因為TPSN協議通過使用擁塞控制以及靈活的確認機制,使TPSN協議節點發送隊列長度一直處于平穩且較低水平。

圖12 TPSN協議隊列變化
4.2.3 有效傳輸率
本文通過計算數據有效傳輸率驗證TPSN協議對網絡資源的有效利用,有效傳輸率計算公式為

其中, Erate表示有效傳輸率, drcv表示接收方成功接收數據量,不包括重復數據, dretrans表示重傳數據量。此處測試方法是發送方數據發送時間間隔為0.1s,當接收方接收到1 000個數據分組時,統計發送方重傳數據分組個數,通過式(13)計算有效傳輸率。
由于VCP[12]沒有數據可靠性保證部分的描述,此處的比較對象是TPSN協議、TCP和SCPS-TP。

圖13 數據有效傳輸率
圖13 中橫坐標表示發送方與接收方之間距離,單位是km,縱坐標表示按照式(12)計算得到的有效傳輸率。由于TPSN協議采用跳到跳的確認方式,使各種丟失的數據在中間節點即能夠重傳恢復,減少源端對數據的重傳,距離、誤碼率因素不會影響TPSN協議對網絡資源的有效使用,而TCP由于并不針對長延遲、高誤碼率、拓撲不斷變化的無線網絡設計。如圖13(a)和圖13(b)所示,鏈路誤碼率處于 1 0-7和 1 0-6時,TCP有效傳輸率基本維持在50%的較低水平,原因是衛星網絡環境下數據需要通過多跳移動節點轉發,傳輸路徑狀態頻繁的變化,造成RTT的頻繁變化,導致TCP錯誤的超時和重傳,降低了鏈路的利用率;隨著誤碼率上升,網絡資源有效利用率基本保持不變,如圖 13(c)所示。當誤碼率較低時,如圖13(a)和圖13(b)所示,SCPS-TP與TPSN協議數據有效傳輸率基本相同。但是由于 SCPS-TP僅采用端節點間確認重傳方式,所以當鏈路誤碼率增加到 1 0-5,端節點距離增加到9 000km以上后,如圖13(c)所示,數據丟失量增大,發送端重傳數據量增大,數據有效傳輸率略有降低。
本文提出了一種基于跳到跳信息的適用于衛星網絡的傳輸控制協議TPSN,該協議針對衛星網絡高誤碼率、長延遲、拓撲變化、資源有限等特點設計了跳到跳累積確認機制,能夠快速恢復成段丟失數據。為能夠及時恢復跳到跳確認無法恢復的丟失數據,減少控制信息對反向鏈路帶寬占用,設計了基于檢測窗口的選擇否定應答機制。
針對衛星網絡環境可能出現的擁塞情況,本文在跳到跳機制的基礎上,設計了一種基于應用數據流的擁塞控制機制。這種方式能夠使發送方快速掌握傳輸路徑上實時狀態,做出及時、正確的窗口調整,在長延遲、高誤碼率、拓撲經常變化的無線環境下能夠充分利用網絡資源。
本文中跳到跳確認信息處于網絡層,如何更好地與路由協議合作,更加充分利用網絡資源是今后研究工作的重點。
[1] FARSEROTU J, PRASAD R. A survey of future broadband multimedia satellite systems, issues and trends[J]. IEEE Communications Magazine, 2000, 38(6): 128-133.
[2] GITMAN I. Comparison of hop-by-hop and end-to-end acknowledgement schemes in computer communication networks[J]. IEEE Transactions on Communication, 1976, 24(11): 1258-1262.
[3] WAN C Y, CAMPBELL A T, KRISHNAMURTHY L. Pump-slowly,fetch-quickly (PSFQ): a reliable transport protocol for sensor networks[J]. IEEE Journal on Selected Areas in Communication, 2005,23(4): 862-872.
[4] DATTA D, KUNDU S. Reliable and efficient data transfer in wireless sensor networks via out-of-sequence forwarding and delayed request for missing packets[A]. Proceedings of the International Conference on Information Technology[C]. Las Vegas, NV, IEEE Computer Society, 2007. 128-133.
[5] PARAMASIVAN B, KRISHNAN R S. An enhanced reliability scheme for wireless sensor networks using PSFQ[A]. International Symposium on Ad Hoc and Ubiquitous Computing[C]. Surathkal,2006. 106-111.
[6] HEIMLICHER S, BAUMANN R, MAY M, et al. The transport layer revisited[A]. Proceedings of 2nd IEEE International Conference on Communication Systems, Software and Middleware[C]. Bangalore,2007.
[7] FRANCISCO R, ANTONIO G, PAULO R P, et al. Performance evaluation of DTSN in wireless sensor networks[A]. Proceedings of the 4th EuroNGI Workshop on Wireless and Mobility[C]. Barcelona,Spain, 2008.
[8] JACOBSON V. Congestion avoidance and control[A]. Proceedings of SIGCOMM[C]. Stanford, CA, USA, 1988.
[9] POSTEL J. Transmission Control Protocol[S]. RFC 793, 1981.
[10] ATHURALIYA S, LI V, LOW S. REM: active queue management[J].IEEE Network, 2001, 15(3): 48-53.
[11] KATABI D, HANDLEY M, ROHRS C. Congestion control for high bandwidth-delay product networks[A]. Proceedings of ACM SIGCOMM[C]. Pittsburgh, PA, 2002.
[12] XIA Y, SUBRAMANIAN L, STOICA I. One more bit is enough[J]. IEEE/ACM Transactions on Networking, 2008, 16(6):1281-1294.
[13] QAZI A, ZNATI T. On the design of load factor based congestion control protocols for next-generation networks[A]. IEEE INFOCOM[C].Phoenix, AZ, 2008.
[14] QAZI A, ZNATI T, ANDREW L L H. Congestion control using efficient explicit feedback[A]. IEEE INFOCOM[C]. Rio de Janeiro,2009.
[15] DANIEL S. Hop-by-Hop Transport Control for Multi-hop Wireless Networks[D]. England: Brigham Young University, 2007.
[16] YUNG Y, SANJAY S. Hop-by-hop control over wireless multi-hop networks[J]. IEEE/ACM Transactions on Networking, 2007, 15(1):133-144.
[17] Recommendation for space data system standards: SCPS-TP[EB/OL].http://public.ccsds.org/publications/archive, 2006.
[18] GRIECO L A, MASCOLO S. Performance evaluation and comparison of Westwood+, New Reno, and Vegas TCP congestion control[J].ACM SIGCOMM Computer Communication Review, 2004, 34(2):25-38.
[19] TARIK T, DAISUKE M, ABBAS J, et al. Explicit load balancing technique for NGEO satellite IP networks with on-board processing capabilities[J]. IEEE/ACM Transactions on Networking, 2009, 17(1):281-291.
[20] EKICI E, LAN F A, MICHEAL D B. A distributed routing algorithm for datagram traffic in LEO satellite networks[J]. IEEE/ACM Transactions on Networking, 2001, 9(2): 137-147.
[21] SVIGEL J A, MOHORCIC M, KANDUS G. Routing in ISL networks considering empirical IP traffic[J]. IEEE Journal on Selected Areas in Communications, 2004, 22(2): 261-272.
[22] KARN C P. Improving round-trip time estimates in reliable transport protocols[J]. ACM SIGCOMM Computer Communication Review,1995, 25(1): 66-74.
[23] CHIU D, JAIN R. Analysis of the increase and decrease algorithms for congestion avoidance in computer networks[J]. Computer Networks and ISDN Systems, 1989, 17(1): 1-14.