王路,胡月梅,劉立祥,胡曉惠
(1. 中國科學院 軟件研究所,北京 100190;2. 中國科學院 研究生院,北京 100049)
衛(wèi)星網(wǎng)絡(luò)[1]面臨著長延遲、動態(tài)拓撲、鏈路誤碼率高等挑戰(zhàn)。早在1976年,Gitman[2]發(fā)現(xiàn)在地面無線網(wǎng)絡(luò)中使用跳到跳重傳方式能夠比端到端重傳方式獲得更短的傳輸延遲和更高的帶寬利用率。近些年,出現(xiàn)了許多利用跳到跳機制保證無線傳感器網(wǎng)絡(luò)數(shù)據(jù)可靠性的傳輸協(xié)議,如 PSFQ[3]、OSDRMP[4]等。PSFQ (pump slowly, fetch quickly)協(xié)議中間節(jié)點參與數(shù)據(jù)分組的檢測和恢復,通過跳到跳的方式保證數(shù)據(jù)可靠交換。OSDRMP協(xié)議使用延遲的前向亂序重傳請求恢復丟失數(shù)據(jù)。文獻[5]對PSFQ進行改進,擴大傳感器節(jié)點緩存空間,使傳感器節(jié)點能夠同時傳輸多個數(shù)據(jù)分組。文獻[6]提出一種跳到跳傳輸控制協(xié)議協(xié)議體系,通過跳到跳確認信息保證數(shù)據(jù)可靠傳輸。DTSN[7]引入 ACK和NACK機制,保證數(shù)據(jù)可靠傳輸,并將數(shù)據(jù)緩存在中間節(jié)點,每個存儲丟失數(shù)據(jù)的節(jié)點均能夠重傳恢復丟失數(shù)據(jù),提高丟失數(shù)據(jù)的恢復效率。
目前,互聯(lián)網(wǎng)使用的傳統(tǒng)傳輸控制協(xié)議TCP[8,9]認為數(shù)據(jù)丟失即表示發(fā)生擁塞,需要減小發(fā)送窗口,這種擁塞檢測機制將鏈路誤碼造成的數(shù)據(jù)丟失錯誤地解釋為網(wǎng)絡(luò)發(fā)生擁塞,所以不適用于鏈路誤碼率較高的無線傳輸環(huán)境,并且TCP采用的擁塞避免、快速恢復等擁塞窗口調(diào)節(jié)方式在高帶寬網(wǎng)絡(luò)環(huán)境下很難達到高利用率。為解決TCP擁塞控制算法遇到的問題,已經(jīng)提出許多擁塞控制方法,如AQM/ECN[10]、XCP[11]、VCP[12]、MLCP[13]、BMCC[14]等。這些擁塞控制機制由網(wǎng)絡(luò)中間節(jié)點將網(wǎng)絡(luò)負載情況通過端到端確認信息傳遞給發(fā)送端,發(fā)送端根據(jù)接收信息調(diào)整發(fā)送速率。AQM/ECN通過在IP分組頭中加入2bit,用于標識網(wǎng)絡(luò)狀態(tài),成功地降低了網(wǎng)絡(luò)分組丟失率及隊列長度,但是窗口調(diào)節(jié)等方面與傳統(tǒng)TCP幾乎相同,在高帶寬情況下很難實現(xiàn)高帶寬利用率。為能夠達到帶寬的高利用率,XCP提出每個路由節(jié)點計算自身平均流速率并將該速率發(fā)送給發(fā)送端,發(fā)送端根據(jù)網(wǎng)絡(luò)中節(jié)點反饋信息調(diào)節(jié)發(fā)送速率。這種方式將擁塞控制交給整個網(wǎng)絡(luò)進行,發(fā)送端接收到精確的網(wǎng)絡(luò)內(nèi)部信息后,調(diào)整數(shù)據(jù)發(fā)送速率達到很好的網(wǎng)絡(luò)性能。但是 XCP需要在數(shù)據(jù)中加入較多比特傳遞中間節(jié)點信息,增加了控制信息對網(wǎng)絡(luò)資源的占用。VCP通過分析AQM/ ECN和XCP,提出中間節(jié)點計算負載并對負載分級,在ECN原有2bit的基礎(chǔ)上增加1bit傳遞負載信息。還有一些研究[15,16]將跳到跳思想引入擁塞控制,相鄰節(jié)點通過交換存儲空間、路由表等信息,降低網(wǎng)絡(luò)狀態(tài)反饋時延,鄰居節(jié)點快速調(diào)整發(fā)送速率,避免網(wǎng)絡(luò)擁塞,減少數(shù)據(jù)丟失量。
為滿足衛(wèi)星網(wǎng)絡(luò)需求,空間數(shù)據(jù)系統(tǒng)咨詢委員會(CCSDS, consultative committee for space data systems)制定了針對星際網(wǎng)絡(luò)的傳輸層協(xié)議標準SCPS-TP協(xié)議[17]。SCPS-TP協(xié)議針對星間鏈路特點對數(shù)據(jù)丟失原因進行分類,并引入TCP Vegas[18]擁塞控制機制及SNACK確認機制。
拓撲不斷變化的衛(wèi)星網(wǎng)絡(luò)往返時延抖動較大,導致無法準確測量往返時延。傳統(tǒng)的超時重傳依賴于往返時延測量的準確,造成不必要的數(shù)據(jù)重傳??焖僦貍鞣绞街饕槍蝹€數(shù)據(jù)分組丟失設(shè)計,無法有效恢復成段丟失數(shù)據(jù),同時快速重傳方式也不能適用于長延遲網(wǎng)絡(luò),原因是源端可能需要等待很長時間才能收到3個重復的ACK。所以傳統(tǒng)的數(shù)據(jù)重傳方式不適用于衛(wèi)星網(wǎng)絡(luò)??焖?、高效的跳到跳反饋有效地減少了高誤碼率帶來的負面影響,非常適用于衛(wèi)星網(wǎng)絡(luò)環(huán)境。但是目前跳到跳可靠傳輸機制主要針對地面無線網(wǎng)絡(luò)設(shè)計,使用較為單一確認機制,并沒有考慮衛(wèi)星網(wǎng)絡(luò)長延遲、動態(tài)拓撲導致數(shù)據(jù)成段丟失,以及由于衛(wèi)星移動、鏈路失效等原因造成數(shù)據(jù)無法通過跳到跳重傳恢復的情況。擁塞控制方面,顯示負載反饋擁塞控制算法能夠有效提高網(wǎng)絡(luò)帶寬資源利用率,但是這些機制均是建立在傳統(tǒng)的端到端可靠控制基礎(chǔ)上,這種端到端擁塞控制機制在長延遲、動態(tài)拓撲、誤碼率較高的衛(wèi)星網(wǎng)絡(luò)中,由于端到端之間的長延遲導致反饋到源端的信息可能已經(jīng)過期,無法反應網(wǎng)絡(luò)當前真實情況;而且在衛(wèi)星鏈路高誤碼率情況下,反饋信息可能在傳輸過程中已經(jīng)丟失。傳統(tǒng)的端到端擁塞控制機制產(chǎn)生的另外一個問題是由于端到端往返延遲的不同,造成各個數(shù)據(jù)流分配網(wǎng)絡(luò)帶寬資源的不公平。目前,采用跳到跳機制的擁塞控制算法,能夠加快網(wǎng)絡(luò)信息的反饋,但是主要為地面無線網(wǎng)絡(luò)設(shè)計,節(jié)點負載信息在相鄰節(jié)點間傳輸,相鄰節(jié)點能夠快速調(diào)節(jié)發(fā)送速率,但是源端對網(wǎng)絡(luò)中鄰居節(jié)點間的反饋信息反應較為遲鈍,不適用于長延遲、拓撲動態(tài)變化的衛(wèi)星網(wǎng)絡(luò)。為解決上述問題,本文提出一種基于跳到跳信息的適用于衛(wèi)星網(wǎng)絡(luò)的傳輸控制協(xié)議TPSN(transmission control protocol for satellite networks)。
為增強數(shù)據(jù)傳輸?shù)目煽啃?,提高發(fā)送端對網(wǎng)絡(luò)狀態(tài)反應靈敏度,TPSN協(xié)議使用跳到跳異步確認機制,快速恢復成段丟失數(shù)據(jù)。在此基礎(chǔ)上,使用端到端的基于檢測窗口的選擇性否定確認機制(SNACK),重傳通過跳到跳機制無法恢復的數(shù)據(jù),保證衛(wèi)星網(wǎng)絡(luò)中數(shù)據(jù)傳輸?shù)母呖煽啃?。為了能夠避免網(wǎng)絡(luò)擁塞,提高網(wǎng)絡(luò)資源利用率,保證不同數(shù)據(jù)流間的公平性,TPSN協(xié)議周期性地計算衛(wèi)星鏈路負載情況,并在跳到跳基礎(chǔ)上,采用一種快速、靈活的傳遞方式,將負載狀態(tài)信息傳遞至源端,源端根據(jù)負載情況調(diào)節(jié)發(fā)送速率。
協(xié)議處理流程如圖1所示。源端A向目的A'發(fā)送數(shù)據(jù),中間衛(wèi)星iN接收到數(shù)據(jù)后發(fā)送跳到跳確認消息,衛(wèi)星1iN-接收到跳到跳確認信息后重傳丟失數(shù)據(jù);負載信息借助于跳到跳機制反饋到源端A,源端A接收到網(wǎng)絡(luò)負載信息后調(diào)整數(shù)據(jù)發(fā)送速率;目的端 A'接收到數(shù)據(jù)后按照協(xié)議規(guī)定發(fā)送端到端SNACK信息,源端A接收到端到端SNACK信息后調(diào)整滑動窗口,并重傳丟失數(shù)據(jù)。TPSN協(xié)議主要工作在傳輸層和網(wǎng)絡(luò)層,其中端到端可靠性保證機制工作在傳輸層,跳到跳可靠性保證機制工作在網(wǎng)絡(luò)層,擁塞控制機制工作在傳輸層和網(wǎng)絡(luò)層,2層借助于跨層思想交互有用信息,共同保證數(shù)據(jù)可靠傳輸、避免網(wǎng)絡(luò)擁塞,提高網(wǎng)絡(luò)資源利用率。
圖1 協(xié)議處理原理
2.1.1 跳到跳異步確認重傳機制
衛(wèi)星網(wǎng)絡(luò)中,鏈路的高誤碼率、鏈路的頻繁切換經(jīng)常導致數(shù)據(jù)丟失,而且這種網(wǎng)絡(luò)環(huán)境下,鏈路錯誤會不斷累積。假設(shè)數(shù)據(jù)分組長度為Lbyte,誤碼率為p,數(shù)據(jù)分組通過一跳成功傳輸?shù)目赡苄詾椋瑪?shù)據(jù)分組通過n跳成功傳輸?shù)目赡苄匝杆贉p少為,所以隨著數(shù)據(jù)傳輸路徑經(jīng)過衛(wèi)星跳數(shù)增加即傳輸延遲加長,數(shù)據(jù)成功到達率呈指數(shù)衰減。跳到跳確認方式,能夠快速重傳丟失數(shù)據(jù),避免錯誤累積。同時中間衛(wèi)星參與可靠性保障,使數(shù)據(jù)分組的恢復重傳不需要等待2個端節(jié)點間的往返時間,中間衛(wèi)星即可快速恢復重傳丟失數(shù)據(jù)。定義N為數(shù)據(jù)傳輸鏈路上衛(wèi)星個數(shù)。假設(shè)一次重傳即能夠恢復丟失數(shù)據(jù),使用端到端數(shù)據(jù)確認重傳機制,丟失數(shù)據(jù)成功傳輸時間,當中間衛(wèi)星參與數(shù)據(jù)重傳,丟失數(shù)據(jù)成功傳輸時間,其中,M為數(shù)據(jù)傳輸過程中數(shù)據(jù)丟失次數(shù), Ti是數(shù)據(jù)跳到跳傳輸時延, Tj是丟失數(shù)據(jù)跳到跳傳輸延遲。由于M<N,所以數(shù)據(jù)確認與重傳過程,如圖2所示。綜上論述可以得到的結(jié)論是跳到跳機制非常適用于誤碼率高、鏈路頻繁切換、端到端延遲長的衛(wèi)星網(wǎng)絡(luò)。
圖2 跳到跳數(shù)據(jù)確認
為能夠快速恢復成段丟失數(shù)據(jù),減少跳到跳確認對網(wǎng)絡(luò)資源占用,確認信息采用異步跳到跳累積確認方式。累積確認能夠防止確認信息丟失,減少確認信息對網(wǎng)絡(luò)帶寬占用。為能夠恢復成段丟失數(shù)據(jù),確認信息包括標識數(shù)據(jù)接收情況的窗口位圖。窗口位圖由一系列比特組成,每個比特代表一個數(shù)據(jù)分組接收情況,當比特設(shè)置為1代表數(shù)據(jù)已正確接收,比特設(shè)置為0代表數(shù)據(jù)未能正確接收。由于采用跳到跳確認,丟失數(shù)據(jù)恢復頻率快,窗口位圖取值可以較小,此處窗口位圖設(shè)置為8bit。單跳衛(wèi)星間維護本地數(shù)據(jù)編號。確認信息包括衛(wèi)星地址、本地數(shù)據(jù)編號及 8bit窗口位圖。本地數(shù)據(jù)編號與8bit窗口位圖組合表明本地數(shù)據(jù)編號之前所有數(shù)據(jù)分組,包括數(shù)據(jù)本身及本地數(shù)據(jù)編號之后8個數(shù)據(jù)分組的接收情況。如(A, 18, 01101111),表示衛(wèi)星A已正確接收本地編號為 18之前所有數(shù)據(jù)分組,包括18號數(shù)據(jù)分組,以及20、21、23、24、25、26號數(shù)據(jù)分組,本地編號為 19、22的數(shù)據(jù)丟失。這種確認方式適用于高誤碼率情況下數(shù)據(jù)成段丟失情況,而且每個確認信息與傳統(tǒng)累積確認信息相比僅增加8bit,網(wǎng)絡(luò)負載較小。接收衛(wèi)星接收到數(shù)據(jù)后,填充窗口位圖,發(fā)送確認信息。跳到跳確認信息主要作為網(wǎng)絡(luò)中其他數(shù)據(jù)的附加信息傳輸,如路由信息、網(wǎng)絡(luò)管理信息等。雖然中間衛(wèi)星在接收到跳到跳確認消息前需要將數(shù)據(jù)緩存在存儲介質(zhì)中,但由于單跳往返時延(RTT)較小,收到確認信息后緩存數(shù)據(jù)能夠立即被釋放,因此數(shù)據(jù)發(fā)送隊列不會由于需要等待跳到跳確認信息而不斷增長。
跳到跳異步確認重傳機制采用2種數(shù)據(jù)重傳方式。第一種方式與傳統(tǒng)超時重傳相似,雖然傳統(tǒng)超時重傳方式不適用于衛(wèi)星網(wǎng)絡(luò)中端到端的超時重傳,但是由于相鄰衛(wèi)星之間鏈路狀態(tài)較為單一,所以可以用于跳到跳的數(shù)據(jù)重傳控制。衛(wèi)星通過跳到跳往返時延設(shè)置數(shù)據(jù)重傳時鐘,衛(wèi)星重傳超時數(shù)據(jù)。這種數(shù)據(jù)重傳方式數(shù)據(jù)恢復時間較長,針對這個問題,TPSN協(xié)議提出第二種數(shù)據(jù)重傳方式,由于2個相鄰衛(wèi)星間鏈路狀態(tài)較為單一,且跳到跳確認采用異步方式發(fā)送,TPSN協(xié)議認為接收到包含亂序信息的跳到跳確認信息即表明有數(shù)據(jù)分組丟失,當發(fā)送衛(wèi)星第一次接收到數(shù)據(jù)亂序信息后,立即重傳數(shù)據(jù),當?shù)诙位蛘吒啻问盏较嗤瑪?shù)據(jù)亂序信息時,為避免不必要的數(shù)據(jù)重傳,將根據(jù)鏈路分組丟失率判定是否重傳數(shù)據(jù)。
假設(shè) ()Ot是發(fā)送衛(wèi)星時刻t的數(shù)據(jù)發(fā)送速率,不包括重傳數(shù)據(jù); ( )It d+ 是接收衛(wèi)星時刻td+ 的數(shù)據(jù)接收速率,不包括重復數(shù)據(jù);d是數(shù)據(jù)單向傳輸時延是數(shù)據(jù)分組平均長度;pδ是時間間隔。為能夠恢復丟失數(shù)據(jù)分組,并且避免重復重傳數(shù)據(jù),數(shù)據(jù)重傳時間間隔RTΔ應滿足如下公式:
根據(jù)上述分析,發(fā)送方第二次或者更多次接收到同一數(shù)據(jù)亂序信息時,如果則重傳亂序數(shù)據(jù),其中,ΔN為上次重傳開始到目前為止發(fā)送端發(fā)送數(shù)據(jù)分組數(shù)量,不包括重傳數(shù)據(jù)。
2.1.2 基于檢測窗口的選擇否定應答
某些時間段內(nèi),對于拓撲結(jié)構(gòu)不斷變化的衛(wèi)星網(wǎng)絡(luò),2個端節(jié)點之間可能并不存在傳輸路徑,此時中間衛(wèi)星如果發(fā)生故障,數(shù)據(jù)可能無法通過中間衛(wèi)星進行恢復。為保證數(shù)據(jù)傳輸?shù)目煽啃?,引入端到端確認機制,并根據(jù)鏈路切換及高誤碼率特性,端節(jié)點確認信息采用選擇否定確認(SNACK)信息,告知源端目前已經(jīng)接收到數(shù)據(jù)信息以及需要重傳數(shù)據(jù)信息,如圖3所示。SNACK采用累積確認方式,確認信息長度為64bit,第一個32bit表示接收方希望接收到下一段數(shù)據(jù)編號 Nrcv_nxt,第二個32bit是 Nrcv_nxt-1開始向前32個數(shù)據(jù)段接收情況,格式如圖 4所示。每個SNACK數(shù)據(jù)每次可以確認 32段到數(shù)據(jù)接收情況。如(58,252.15.192.240),此處后32bit使用類似于IP每8bit計數(shù)方式,能夠表示26號到57號數(shù)據(jù)分組接收情況,其中有 3個缺口,長度分別為 6、6和 4,與26號數(shù)據(jù)偏移量分別為6、18和28。
圖3 端到端數(shù)據(jù)確認
圖4 SNACK格式
由于衛(wèi)星網(wǎng)絡(luò)端到端的長延遲以及動態(tài)拓撲導致較大端到端延遲抖動,數(shù)據(jù)往返時延(RTT)無法精確計算,所以源端不再設(shè)置超時重傳時鐘,端到端的數(shù)據(jù)重傳由SNACK控制完成。為保證源端及時重傳恢復跳到跳無法恢復的丟失數(shù)據(jù),減少端確認信息對反向鏈路資源的占用,適應帶寬不對稱鏈路特性,目的端在2種情況下發(fā)送端節(jié)點間確認信息:1)發(fā)現(xiàn)數(shù)據(jù)分組亂序;2)周期性發(fā)送端節(jié)點確認信息,目的是更新滑動窗口,并釋放已正確接收數(shù)據(jù)占用的資源。
方式 1 如果目的端每收到一個數(shù)據(jù)分組即檢測是否亂序,并發(fā)送確認信息,由于網(wǎng)絡(luò)數(shù)據(jù)突發(fā)特性,即短時間內(nèi)發(fā)送大量數(shù)據(jù),一旦發(fā)生數(shù)據(jù)丟失,會在短時間內(nèi)產(chǎn)生大量端節(jié)點間確認信息,這些確認信息可能指向同一范圍內(nèi)的丟失數(shù)據(jù),結(jié)果不僅產(chǎn)生大量冗余確認信息,而且發(fā)送端會不斷重傳未確認數(shù)據(jù)。為減小衛(wèi)星負擔,衛(wèi)星并不是每收到一個數(shù)據(jù)分組即檢測數(shù)據(jù)是否亂序。TPSN設(shè)置數(shù)據(jù)亂序檢測窗口 wchk_wnd,只有接收數(shù)據(jù)量達到窗口值時,接收衛(wèi)星才檢測數(shù)據(jù)是否亂序。采用固定窗口值的方式能夠緩解每個數(shù)據(jù)分組都檢測引起的壓力,但是并不能解決由于數(shù)據(jù)分組丟失造成的重復確認信息及冗余數(shù)據(jù)分組重傳。因此TPSN采用動態(tài)窗口值,變化方式采用乘性增、乘性減。根據(jù) 2.1.1節(jié)分析,當鏈路分組丟失率為 plost_rate情況下,發(fā)送端平均每發(fā)送個數(shù)據(jù)分組即重傳數(shù)據(jù)才可能保證數(shù)據(jù)可靠傳輸,所以檢測窗口 wchk_wnd初始值設(shè)置為當檢測到數(shù)據(jù)亂序時,為防止多次傳輸同一亂序數(shù)據(jù)信息,檢測窗口值翻倍,減慢數(shù)據(jù)檢測速率。當數(shù)據(jù)順序到達,則檢測窗口值 wchk_wnd乘性減為原先值的0.9倍,并保證不低于初始值,加快數(shù)據(jù)檢測速率。發(fā)送端重傳數(shù)據(jù)時間間隔同2.1.1節(jié)。
上述過程中,由于衛(wèi)星網(wǎng)絡(luò)動態(tài)拓撲特性,目的端需要正確判斷亂序是由于數(shù)據(jù)分組丟失,而不是路徑改變引起。目的端通過數(shù)據(jù)分組的生存時間TTL字段判斷數(shù)據(jù)分組亂序原因是數(shù)據(jù)分組丟失,而不是路徑改變。目的端接收順序到達數(shù)據(jù)后讀取分組頭TTL字段,并存儲在 T TLin-order中。如果后續(xù)接收到亂序數(shù)據(jù)的TTL字段等于或者小于 T TLin-order:
目的端認為接收亂序數(shù)據(jù)的原因是傳輸路徑發(fā)生改變。如果接收到的TTL不滿足式(2),即數(shù)據(jù)經(jīng)過更長路徑傳輸,則目的端認為數(shù)據(jù)丟失[19]。
方式 2 當數(shù)據(jù)一直順序接收時,按照方式 1不會發(fā)送端節(jié)點間確認信息,這時候需要周期性發(fā)送端節(jié)點間確認信息,目的是及時通報源端數(shù)據(jù)接收情況,更新滑動窗口,并釋放已經(jīng)正確接收數(shù)據(jù)占用的緩存。為及時調(diào)節(jié)滑動窗口,發(fā)送時間間隔由源端與目的端間的往返時間RTT和鏈路分組丟失率決定。假設(shè) pavg為平均數(shù)據(jù)分組長度,plost_rate為鏈路分組丟失率,Rrate為接收方平均接收數(shù)據(jù)速率,不包括重復數(shù)據(jù),則確認信息發(fā)送時間間隔為
2.2.1 鏈路負載計算
近期一些研究[12,13]中利用負載因子改進擁塞控制算法,但是只考慮了單路徑傳輸情況,即一個節(jié)點只有一個下一跳,負載計算不適用于節(jié)點存在多條路徑情況。TPSN對節(jié)點隊列進行管理,發(fā)送到不同下一跳節(jié)點的數(shù)據(jù)存放在不同鏈路隊列中,節(jié)點負載計算針對鏈路進行,每條鏈路都有對應的負載。如果負載計算針對節(jié)點進行,可能由于節(jié)點各鏈路帶寬不一致導致節(jié)點負載判斷失效。如圖 5所示,路徑1帶寬為30Mbit/s和20Mbit/s,路徑2帶寬為200Mbit/s,通過路徑1及路徑2數(shù)據(jù)流量均為30Mbit/s,容易判斷路徑1負載重,路徑2負載輕。如果按照文獻[12, 13]中的計算方法計算節(jié)點負載,則無法作出正確判斷。
圖5 負載計算
中間節(jié)點每隔時間tρ計算節(jié)點鏈路負載ρl。參考文獻[12, 13],ρl計算公式為
其中,與文獻[12, 13]對λl和q?l定義不同,此處λl指tρ時間內(nèi)進入節(jié)點從該鏈路傳輸?shù)臄?shù)據(jù)總量; q?l是在這段時間內(nèi)該鏈路的隊列長度平均值,以字節(jié)為單位;kq是系數(shù);γl是鏈路的目標使用率,取值接近于1; Cl是鏈路數(shù)據(jù)發(fā)送能力[12]。為了能夠更加充分地利用節(jié)點存儲空間,令 kq=0.8。平均隊列長度計算時間間隔取值為 tρ/ 20。
節(jié)點間通過使用發(fā)送窗口控制數(shù)據(jù)發(fā)送量,所以計算負載的時間間隔tρ應該由單跳節(jié)點間往返時延決定。由于網(wǎng)絡(luò)數(shù)據(jù)具有突發(fā)性,因此tρ取值應比節(jié)點間往返時間稍大才能反應網(wǎng)絡(luò)中數(shù)據(jù)流量情況,同時應該避免存儲數(shù)據(jù)隊列較長后才進行負載計算、通告工作。此處,其中D是往返時延的平均方差。
2.2.2 擁塞窗口的調(diào)節(jié)
TPSN根據(jù)網(wǎng)絡(luò)節(jié)點傳遞給發(fā)送方的負載情況調(diào)節(jié)擁塞窗口,窗口變化采用乘性增、線性增、對數(shù)增、乘性減方式進行調(diào)節(jié)。
當瓶頸節(jié)點鏈路傳回負載低于80%時,說明網(wǎng)絡(luò)空閑,發(fā)送方窗口采用乘性增長方式快速增長。
乘性增:
當瓶頸節(jié)點傳回負載大于80%時,系統(tǒng)已經(jīng)處于高利用率,發(fā)送方通過線性增、對數(shù)增、乘性減使窗口保持在較穩(wěn)定狀態(tài),確保資源的高利用率。當負載大于80%,低于95%時,擁塞窗口采用線性增長方式調(diào)節(jié);當負載大于95%,低于100%時,擁塞窗口減慢增長,采用對數(shù)增方式調(diào)節(jié);當負載大于100%時,發(fā)送方采用乘性減方式調(diào)整擁塞窗口。
線性增:
對數(shù)增:
乘性減:
其中,α取值為1,增長方式與TCP相同[8]。窗口乘性增長率δ由網(wǎng)絡(luò)剩余資源決定,網(wǎng)絡(luò)剩余資源可以表示為1-ρl,其中ρl是當前鏈路負載情況,則
其中,k是常量。源端接收到的負載并不是ρl的真實值,而是它的編碼,負載編碼見2.2.3節(jié)表1,而且負載信息借助于跳到跳確認機制在延遲較短的節(jié)點之間傳遞,對異常情況反映迅速,所以并不需要過于保守的窗口增長率[12]。當 k ≤ 1 /2時,TPSN協(xié)議能夠達到穩(wěn)定狀態(tài),證明詳見第3節(jié)性能分析,所以常量k=0.5,ρl=0.80,窗口增長率δ=0.125。由于加入[95%,100%)負載范圍,此處β=0.95,目的是使源端采用對數(shù)增、乘性減方式調(diào)節(jié)窗口,使得發(fā)送速率保持穩(wěn)定,并且充分利用網(wǎng)絡(luò)資源。
TPSN協(xié)議將鏈路負載分為4個級別,與文獻[12]相比,通過增加[95%,100%)負載范圍使得在高利用率情況下窗口變化更加平緩,配合上對數(shù)增和乘性減,能夠更長時間維持窗口穩(wěn)定,保證網(wǎng)絡(luò)資源利用率最大化。
2.2.3 動態(tài)快速負載傳遞
傳遞負載lρ真實值會占用較多網(wǎng)絡(luò)帶寬,為減少負載信息對網(wǎng)絡(luò)資源占用,網(wǎng)絡(luò)中傳遞的并不是負載真實值,而是采用分級編碼方式處理后的負載,如表1所示。
表1 負載編碼
衛(wèi)星網(wǎng)絡(luò)中使用傳統(tǒng)負載傳遞方式會造成反饋信息獲取不及時,發(fā)送方不能及時調(diào)整發(fā)送策略,傳統(tǒng)負載傳遞時間其中, Ti是單跳傳輸延遲,N是傳輸路徑上節(jié)點個數(shù),如圖6(a)所示。為能夠?qū)崿F(xiàn)數(shù)據(jù)傳輸路徑上的鏈路負載信息快速傳送至發(fā)送端,負載隨著節(jié)點間確認信息捎帶傳遞,基于跳到跳機制的負載反饋時間為 2 T1,其中 T1是源端與第一跳節(jié)點間鏈路延遲,如圖6(b)實線部分所示。負載反饋時間與單跳往返時間有關(guān),與端到端延遲無關(guān)。顯然,極大地減小鏈路信息反饋時延。中間節(jié)點在收到負載信息后會將自身的鏈路負載情況與接收到的負載進行比較,將較大負載值寫入數(shù)據(jù)捎帶至上一跳,傳遞至源端節(jié)點的負載表示該路徑上瓶頸鏈路的負載,發(fā)送端根據(jù)接收到負載信息調(diào)整擁塞窗口。同時跳到跳負載信息傳遞方式?jīng)]有傳統(tǒng)端到端方式需要端到端往返延遲的收斂過程,原因是一旦有數(shù)據(jù)傳輸就會有負載傳遞,即使是新加入數(shù)據(jù)流同樣能夠獲取最新的鏈路負載信息。
將負載信息捎帶于不斷傳遞給發(fā)送端的數(shù)據(jù)中,發(fā)送端不僅可以更快掌握數(shù)據(jù)傳輸路徑網(wǎng)絡(luò)狀況,同時避免了傳統(tǒng)端到端擁塞控制由于兩端節(jié)點往返時延不同產(chǎn)生的網(wǎng)絡(luò)資源分配不公平現(xiàn)象。如圖6(a)所示,傳統(tǒng)負載反饋信息均是由目的端發(fā)出,中間節(jié)點不更新負載信息,隨著兩端節(jié)點往返時延增大,負載反饋信息到達頻率減小,造成兩端節(jié)點距離遠的應用網(wǎng)絡(luò)資源占用率低,需要在發(fā)送端根據(jù)往返時間等信息對參數(shù)進行調(diào)整,才能保證各個應用間的公平性。借助于跳到跳機制傳遞負載信息,最新負載反饋信息不斷在各節(jié)點間傳送,發(fā)送端接收負載信息頻率與兩端節(jié)點往返時延無關(guān),只與單跳節(jié)點間往返時延相關(guān),當單跳節(jié)點間往返時延差別較小,不會產(chǎn)生由于端節(jié)點間往返時延不同造成的不公平現(xiàn)象,證明詳見第3節(jié)性能分析。
圖6 負載傳遞
文獻[12]中提出一種簡單的協(xié)議穩(wěn)定性分析數(shù)據(jù)模型。如圖7所示,TPSN協(xié)議模型中間節(jié)點根據(jù)t-RTTone_hop時刻發(fā)送數(shù)據(jù)計算鏈路負載ρl,并將負載傳回發(fā)送端,發(fā)送端在t時刻根據(jù)接收到的負載調(diào)整發(fā)送窗口。根據(jù) TPSN特點對文獻[12]中數(shù)據(jù)流分析模型進行調(diào)整:
其中,wconi(t)是數(shù)據(jù)流i的擁塞窗口,δ(ρl)、α和分別是乘性增、線性增和對數(shù)增系數(shù)。協(xié)議正常運行狀態(tài)下,窗口值大于1,,所以,式(9)可以簡化為
圖7 TPSN模型
為了能夠真實地模擬衛(wèi)星網(wǎng)絡(luò)環(huán)境,驗證協(xié)議性能,使用事件驅(qū)動的OMNeT++網(wǎng)絡(luò)仿真軟件建立衛(wèi)星網(wǎng)絡(luò)仿真驗證系統(tǒng),真實模擬衛(wèi)星網(wǎng)絡(luò)運行過程中網(wǎng)絡(luò)環(huán)境變化,對協(xié)議進行性能驗證與分析。
4.1.1 網(wǎng)絡(luò)模型
衛(wèi)星網(wǎng)絡(luò)拓撲采用銥星星座,主要參數(shù)如表 2所示。衛(wèi)星經(jīng)過極區(qū)時,星際鏈路會關(guān)閉。反向縫之間不存在星際鏈路。
4.1.2 節(jié)點模型
節(jié)點模型主要包括2類,一類是衛(wèi)星節(jié)點模型,另一類是地面節(jié)點模型。主要包括3個功能模塊,第1個是軌道鏈路模擬功能模塊,第2個是傳輸控制協(xié)議功能模塊,第3個是路由協(xié)議功能模塊。
表2 衛(wèi)星網(wǎng)絡(luò)拓撲主要參數(shù)
軌道鏈路模擬功能實現(xiàn)衛(wèi)星運動軌道以及衛(wèi)星鏈路模擬。傳輸控制協(xié)議功能模塊分別實現(xiàn)了本文提出的傳輸控制協(xié)議 TPSN、CCSDS制定的SCPS-TP協(xié)議、TCP協(xié)議以及VCP協(xié)議。路由協(xié)議功能模塊實現(xiàn)參考文獻[20, 21]中提出的基于地理位置信息的分布式路由算法。
4.1.3 仿真參數(shù)設(shè)置
每條鏈路帶寬設(shè)置為20Mbit/s,數(shù)據(jù)發(fā)送時間間隔滿足Poisson分布,數(shù)據(jù)分組長度為1KB。每條鏈路均維護一條先進先出隊列,隊列長度為200KB。數(shù)據(jù)通信均是由地面站發(fā)起,通過衛(wèi)星網(wǎng)絡(luò)傳輸信息到目的地面站。當衛(wèi)星高度為 780km時,衛(wèi)星軌道周期為1h40min,2h仿真時間能夠反應整個網(wǎng)絡(luò)變化過程對協(xié)議的影響,所以除特殊說明,仿真時間持續(xù)2h。由于仿真實驗在衛(wèi)星拓撲結(jié)構(gòu)中運行,端到端往返時延由實際運行狀態(tài)決定,所以通過設(shè)置不同端節(jié)點距離調(diào)整端節(jié)點間延遲。仿真過程中,2個端節(jié)點間經(jīng)過衛(wèi)星個數(shù)隨著運行時間推進會不斷發(fā)生變化。
4.2.1 窗口增長及鏈路利用率
首先,考慮協(xié)議對網(wǎng)絡(luò)資源的利用。如圖8所示,縱坐標為各時刻窗口值與目的端接收緩存比值,仿真時間持續(xù)120s,圖中顯示前50s窗口變化過程。各種情況下,TPSN擁塞窗口初始階段快速上升,穩(wěn)定后不因為距離、鏈路誤碼率等因素發(fā)生變化。對于 TCP,由于節(jié)點移動導致兩端節(jié)點間RTT發(fā)生變化,發(fā)送的數(shù)據(jù)可能因為距離增大導致確認信息反饋時延增加,造成TCP錯誤認為數(shù)據(jù)超時,重傳未確認數(shù)據(jù)、降低擁塞窗口,TCP規(guī)定在重傳數(shù)據(jù)確認到達之前不可以更新RTT[22],使得后續(xù)發(fā)送的數(shù)據(jù)分組仍然使用未更新的RTO,導致后續(xù)發(fā)送數(shù)據(jù)即使完全正常傳輸,由于RTT未能及時更新,TCP可能仍然錯誤認為數(shù)據(jù)需要超時重傳。當鏈路誤碼率增高后,情況更加惡劣,除了超時影響之外,還有數(shù)據(jù)分組丟失,導致TCP一直處于慢啟動階段,對網(wǎng)絡(luò)資源利用率很低。TCP在初始階段擁塞窗口會增長,但是當窗口增長到一定值后窗口開始下降,鏈路利用率降低。說明TCP不適用于高帶寬、拓撲結(jié)構(gòu)經(jīng)常發(fā)生變化的衛(wèi)星網(wǎng)絡(luò)。SCPS-TP采用TCP-Vegas擁塞控制方式,這種方式雖然不會將鏈路切換或鏈路誤碼導致的數(shù)據(jù)丟失誤判為鏈路擁塞,但是非常依賴于RTT的測量以及2個邊界值的選?。粩?shù)據(jù)確認采用SNACK方式,隨著兩端節(jié)點距離增加,RTT增大、鏈路誤碼率提升,SNACK反饋頻率會降低,并且反饋信息可能丟失,導致?lián)砣翱谠鲩L緩慢,數(shù)據(jù)發(fā)送量減少。針對上述問題,TPSN借助于跳到跳機制保證窗口的及時更新。VCP需要等待端到端負載信息才會對窗口進行調(diào)整,而且乘性增參數(shù)設(shè)置為0.062 5,取值非常保守,在長延時情況下窗口增長非常緩慢。鏈路資源利用率計算公式:其中,tinterval為采樣時間間隔, Nacked是時間tinterval內(nèi)被確認數(shù)據(jù)分組數(shù)量, pavg是數(shù)據(jù)分組平均長度,lrate是鏈路數(shù)據(jù)發(fā)送速率。
如圖9所示,對于 SCPS-TP當鏈路誤碼率為10-5時,由于擁塞窗口上升非常緩慢,鏈路利用率低。隨著誤碼率的降低,鏈路利用率立即恢復到很高水平。在鏈路誤碼率較低、端節(jié)點距離較短時,由于數(shù)據(jù)分組丟失較少及端節(jié)點延遲較小,VCP和TPSN協(xié)議利用率基本相同。但是SCPS-TP和VCP都存在相同問題,發(fā)送端均需要等待接收端確認信息,所以當距離增大到10 000km,由于往返時間加大,確認信息反饋緩慢,利用率會下降。對于SCPS-TP和VCP,隨著誤碼率上升,由于僅使用端確認保證機制,數(shù)據(jù)更容易丟失,利用率同樣下降。TPSN協(xié)議利用跳到跳確認機制使負載信息傳遞不再受端節(jié)點間距離的影響,能夠一直保持很高的鏈路利用率。
4.2.2 公平性及隊列穩(wěn)定性
圖8 擁塞窗口變化
圖9 利用率對比
傳統(tǒng)端到端的擁塞控制機制中往返時延RTT小的應用由于反饋迅速,首先搶占網(wǎng)絡(luò)資源,造成各種應用業(yè)務間網(wǎng)絡(luò)資源分配不公平。針對這種情況已經(jīng)有很多協(xié)議對其進行專門處理,主要處理方式是通過加入?yún)⒘繙p少由于RTT不同對窗口調(diào)整的影響。TPSN協(xié)議負載反饋無需等待目的端反饋信息,中間節(jié)點即將負載信息反饋至發(fā)送端,窗口變化頻率由單跳之間往返時間決定,與兩端節(jié)點距離無關(guān),所以不需要參數(shù)處理即能夠保證各應用數(shù)據(jù)流之間的公平性。公平性驗證的各節(jié)點拓撲如圖10所示,每加入一個新的目的節(jié)點,源節(jié)點分別為目的節(jié)點建立新的數(shù)據(jù)流。各目的節(jié)點與源端距離變化范圍是1 000km到10 000km。隨著具有不同端到端距離的數(shù)據(jù)流加入,各協(xié)議公平性變化如圖11所示。參考文獻[23],公平性計算公式為
其中,N是數(shù)據(jù)流總數(shù),ix是第i個數(shù)據(jù)流發(fā)送數(shù)據(jù)量。
圖10 公平性測試拓撲
圖11 公平性
由圖 11可以看出,隨著與目的節(jié)點距離不同的數(shù)據(jù)流數(shù)量增加,TCP和SCPS-TP公平性下降很快。VCP對RTT不同造成的不公平現(xiàn)象進行處理,公平性一直保持很好,僅略低于TPSN協(xié)議,但是隨著數(shù)據(jù)流個數(shù)增加和端節(jié)點間延遲增大,TPSN協(xié)議公平性優(yōu)勢逐漸體現(xiàn)出來,同時 VCP公平性處理與TPSN協(xié)議相比較復雜,增加了節(jié)點處理負擔,而TPSN協(xié)議從設(shè)計上保證各種不同RTT應用數(shù)據(jù)流的公平性,節(jié)點無需額外地處理開銷就能夠保證不同RTT節(jié)點間的公平性。
通過節(jié)點隊列變化情況說明協(xié)議在不同環(huán)境下的穩(wěn)定性。隊列長度取值是數(shù)據(jù)傳輸路徑上傳輸隊列長度,仿真中隊列采樣時間間隔為 0.1s,圖12中繪制的是傳輸路徑上最長的隊列長度,隨著端節(jié)點距離增大隊列長度略有增長,但是基本穩(wěn)定在15KB到20KB之間。這是因為TPSN協(xié)議通過使用擁塞控制以及靈活的確認機制,使TPSN協(xié)議節(jié)點發(fā)送隊列長度一直處于平穩(wěn)且較低水平。
圖12 TPSN協(xié)議隊列變化
4.2.3 有效傳輸率
本文通過計算數(shù)據(jù)有效傳輸率驗證TPSN協(xié)議對網(wǎng)絡(luò)資源的有效利用,有效傳輸率計算公式為
其中, Erate表示有效傳輸率, drcv表示接收方成功接收數(shù)據(jù)量,不包括重復數(shù)據(jù), dretrans表示重傳數(shù)據(jù)量。此處測試方法是發(fā)送方數(shù)據(jù)發(fā)送時間間隔為0.1s,當接收方接收到1 000個數(shù)據(jù)分組時,統(tǒng)計發(fā)送方重傳數(shù)據(jù)分組個數(shù),通過式(13)計算有效傳輸率。
由于VCP[12]沒有數(shù)據(jù)可靠性保證部分的描述,此處的比較對象是TPSN協(xié)議、TCP和SCPS-TP。
圖13 數(shù)據(jù)有效傳輸率
圖13 中橫坐標表示發(fā)送方與接收方之間距離,單位是km,縱坐標表示按照式(12)計算得到的有效傳輸率。由于TPSN協(xié)議采用跳到跳的確認方式,使各種丟失的數(shù)據(jù)在中間節(jié)點即能夠重傳恢復,減少源端對數(shù)據(jù)的重傳,距離、誤碼率因素不會影響TPSN協(xié)議對網(wǎng)絡(luò)資源的有效使用,而TCP由于并不針對長延遲、高誤碼率、拓撲不斷變化的無線網(wǎng)絡(luò)設(shè)計。如圖13(a)和圖13(b)所示,鏈路誤碼率處于 1 0-7和 1 0-6時,TCP有效傳輸率基本維持在50%的較低水平,原因是衛(wèi)星網(wǎng)絡(luò)環(huán)境下數(shù)據(jù)需要通過多跳移動節(jié)點轉(zhuǎn)發(fā),傳輸路徑狀態(tài)頻繁的變化,造成RTT的頻繁變化,導致TCP錯誤的超時和重傳,降低了鏈路的利用率;隨著誤碼率上升,網(wǎng)絡(luò)資源有效利用率基本保持不變,如圖 13(c)所示。當誤碼率較低時,如圖13(a)和圖13(b)所示,SCPS-TP與TPSN協(xié)議數(shù)據(jù)有效傳輸率基本相同。但是由于 SCPS-TP僅采用端節(jié)點間確認重傳方式,所以當鏈路誤碼率增加到 1 0-5,端節(jié)點距離增加到9 000km以上后,如圖13(c)所示,數(shù)據(jù)丟失量增大,發(fā)送端重傳數(shù)據(jù)量增大,數(shù)據(jù)有效傳輸率略有降低。
本文提出了一種基于跳到跳信息的適用于衛(wèi)星網(wǎng)絡(luò)的傳輸控制協(xié)議TPSN,該協(xié)議針對衛(wèi)星網(wǎng)絡(luò)高誤碼率、長延遲、拓撲變化、資源有限等特點設(shè)計了跳到跳累積確認機制,能夠快速恢復成段丟失數(shù)據(jù)。為能夠及時恢復跳到跳確認無法恢復的丟失數(shù)據(jù),減少控制信息對反向鏈路帶寬占用,設(shè)計了基于檢測窗口的選擇否定應答機制。
針對衛(wèi)星網(wǎng)絡(luò)環(huán)境可能出現(xiàn)的擁塞情況,本文在跳到跳機制的基礎(chǔ)上,設(shè)計了一種基于應用數(shù)據(jù)流的擁塞控制機制。這種方式能夠使發(fā)送方快速掌握傳輸路徑上實時狀態(tài),做出及時、正確的窗口調(diào)整,在長延遲、高誤碼率、拓撲經(jīng)常變化的無線環(huán)境下能夠充分利用網(wǎng)絡(luò)資源。
本文中跳到跳確認信息處于網(wǎng)絡(luò)層,如何更好地與路由協(xié)議合作,更加充分利用網(wǎng)絡(luò)資源是今后研究工作的重點。
[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.