陳 宇,孟 新,卞春江,張 磊,周 海
(中國科學院空間科學與應(yīng)用研究中心,北京100190)
隨著航天技術(shù)的發(fā)展,研究并建設(shè)天地一體化航天互聯(lián)網(wǎng)勢在必行[1]?;ヂ?lián)網(wǎng)技術(shù)應(yīng)用于載人航天工程,能為長期留軌的航天員與地面工作人員、朋友、家人進行交流溝通提供更便捷的服務(wù),也為科學家在地面實驗室直接操作空間站上的儀器進行交互式的空間科學實驗操作提供了強有力的技術(shù)手段。目前地面互聯(lián)網(wǎng)上98%的數(shù)據(jù)傳輸使用TCP/IP協(xié)議棧,但由于衛(wèi)星網(wǎng)絡(luò)的一些特性,如傳播延時長、誤碼率高的和帶寬不對稱性等造成了基于地面網(wǎng)絡(luò)開發(fā)的TCP協(xié)議在空間鏈路中的性能嚴重下降[2]。為了解決該問題,空間數(shù)據(jù)系統(tǒng)咨詢委員會專為空間通信“量身定制”了空間通信協(xié)議傳輸協(xié)議SCPS-TP(Space Communications Protocol Specification-Transport Protocol,SCPS-TP)[3]。SCPS-TP 通過對 TCP 的擴展,提高了航天通信網(wǎng)空間鏈路中TCP協(xié)議的傳輸性能。
本文研究SCPS-TP對TCP的改進方法,搭建空間通信仿真環(huán)境,并對SCPS-TP和TCP在高誤碼高延時的仿真環(huán)境中的傳輸性能進行仿真和對比分析。
為了克服空間鏈路對TCP性能的影響,SCPSTP協(xié)議針對空間通信中誤碼率高、傳輸時延長、鏈路帶寬不對稱、間斷性連接等問題,改進了標準TCP協(xié)議中的部分機制。下面詳細介紹SCPS-TP改進方法。
在空間通信中,導(dǎo)致數(shù)據(jù)丟失的三個原因是網(wǎng)絡(luò)擁塞、誤碼、鏈路中斷。SCPS-TP提高TCP性能的關(guān)鍵在于識別數(shù)據(jù)丟失原因并進行相應(yīng)的處理操作。SCPS-TP對數(shù)據(jù)丟失原因的識別方法和相應(yīng)處理操作如下。
2.1.1 SCPS-TP對網(wǎng)絡(luò)擁塞的識別和處理
SCPS-TP利用RFC3168[4]定義的主動隊列管理(Active Queue Management,AQM)和顯式擁塞通知機制(explicit congestion notification,ECN)來識別網(wǎng)絡(luò)是否處于擁塞狀態(tài)。AQM檢查隊列是否將要溢出,以此判斷網(wǎng)絡(luò)是否即將發(fā)生擁塞。在擁塞即將出現(xiàn)時,ECN在尚未丟失數(shù)據(jù)報文的情況下通知SCPS-TP發(fā)送端網(wǎng)絡(luò)即將出現(xiàn)擁塞。ECN路由器在數(shù)據(jù)報文的IP首部中設(shè)置特殊標志并把該數(shù)據(jù)報文向前發(fā)送,在收到有特殊標志的數(shù)據(jù)報文后,接收端SCPS-TP利用ACK把擁塞信號回送到發(fā)送端SCPS-TP。收到該擁塞信號的SCPS-TP使用Vegas擁塞控制算法來降低丟包率并設(shè)置較大的通信窗口,快速恢復(fù)網(wǎng)絡(luò)。
2.1.2 SCPS-TP對誤碼的識別和處理
空間通信中導(dǎo)致數(shù)據(jù)丟失的主要原因是誤碼。SCPS-TP將數(shù)據(jù)丟失的默認處理方式設(shè)置為針對誤碼的處理方式。
SCPS-TP針對誤碼的識別和處理過程分為四個階段:識別、通知、響應(yīng)、終止識別??臻g鏈路的接收終點即地面接收器執(zhí)行下行鏈路的識別操作。地面接收器從鏈路層獲取接收到的受損幀的個數(shù)(如通過CRC校驗)。地面接收器維護一個最近接收分組目的地址的緩存器,并根據(jù)受損幀總數(shù)計算受損幀加權(quán)流動平均值。當該平均值超過門限值時,地面接收器進入鏈路出錯狀態(tài),接收器的網(wǎng)絡(luò)層調(diào)用空間網(wǎng)絡(luò)控制報文協(xié)議SCMP(類似于TCP/IP中的ICMP協(xié)議)向使用該空間鏈路的終端主機發(fā)送標示為“鏈路已出錯”的SCMP報文。終端主機接收到該SCMP報文后,立即通過ACK報文(報文首部包含鏈路出錯選項)向其對應(yīng)的SCPS-TP數(shù)據(jù)源發(fā)送數(shù)據(jù)損壞消息。當SCPS-TP數(shù)據(jù)源接收到該ACK后,不啟動擁塞控制,也不減小擁塞窗口,發(fā)送速率和重傳間隔時間保持不變,直到發(fā)送端接收到未帶有鏈路出錯信息的ACK時,進入終止識別階段。
2.1.3 SCPS-TP對鏈路中斷的識別和處理
在處理鏈路中斷過程中,有類似處理誤碼的四個階段:識別、通知、響應(yīng)、終止識別。識別鏈路中斷的方法,是和具體鏈路有關(guān)的。通常,地面站檢測到載波同步信號丟失或者檢測到接收信號強度低于某一門限值時,認為鏈路中斷。一旦地面站(或航天器)檢測到鏈路中斷,它會向鏈路同一側(cè)的所有主機發(fā)送“鏈路中斷”SCMP報文,它包括丟失包的SCPS-TP首部。發(fā)送端SCPS-TP對鏈路中斷信號的響應(yīng)是:進入持續(xù)模式,停止發(fā)送新數(shù)據(jù),停止重傳定時器,周期發(fā)送嗅探報文檢查鏈路是否恢復(fù)。SCPS-TP在收到鏈路恢復(fù)SCMP報文或者嗅探報文順利到達接收端并被確認時,回到正常工作模式。發(fā)送端SCPSTP會根據(jù)先前收到的鏈路中斷SCMP報文中的SCPS-TP首部中的序號,來決定數(shù)據(jù)流從何處恢復(fù)傳輸。
針對空間鏈路帶寬容量有限而使網(wǎng)絡(luò)性能受限的情況,SCPS-TP提供兩種改善機制:頭部壓縮技術(shù)和選擇性否定確認(SNACK)選項。
2.2.1 SCPS-TP頭部壓縮技術(shù)
SCPS-TP的頭部壓縮技術(shù)[6]在傳輸層實現(xiàn)端到端操作。SCPS-TP頭部壓縮將頭部減少了大約50%,極大節(jié)約了確認報文的開銷。SCPS-TP頭部壓縮技術(shù)將連接期間不變化的信息進行摘要處理。經(jīng)過壓縮的SCPS-TP頭部是可變長的,但必須包含連接標識符、用以指明哪些可選字段被使用和哪些標志位被置位的比特域,還要包含校驗和。SCPS-TP僅壓縮SCPS-TP頭部而不壓縮IP頭部。
2.2.2 SCPS-TP的SNACK選項
傳統(tǒng)的TCP使用ACK報文進行確認,一個ACK報文最多能夠識別接收緩沖區(qū)中的一個缺失數(shù)據(jù)塊。SNACK允許SCPS-TP接收方通知發(fā)送方在接收方隊列有一個或一個以上的缺失數(shù)據(jù)塊。這樣,SNACK選項可以加速丟失數(shù)據(jù)的重傳并避免了發(fā)送方達到窗口極限。
SCPS-TP中,通過兩個技術(shù)措施解決長往返延遲(RTT)對數(shù)據(jù)傳輸所帶來的影響:窗口縮放和定時器修改。
2.3.1 SCPS-TP的窗口縮放
窗口縮放功能[7]允許SCPS-TP處理多于64K字節(jié)的未收到應(yīng)答的數(shù)據(jù)。在數(shù)據(jù)丟失主要是由誤碼造成的情況下,采用更大的窗口尺寸有助于提高網(wǎng)絡(luò)性能,這樣就可以在恢復(fù)丟失期間不斷地傳送新的數(shù)據(jù)。
2.3.2 SCPS-TP的定時器修改
SCPS-TP修改了TCP定時器的超時時間,允許往返延遲從秒級增加到小時級,符合深層空間傳輸往返延時實際情況。在建立連接時,SCPS-TP將重傳定時器設(shè)置成一個合適的往返延時估計值,從而避免在連接的開始階段就出現(xiàn)多次重傳超時。另外,SCPS-TP協(xié)議利用TCP時間戳選項,有助于比較精確地估計在有分組丟失情況下的RTT值。
信道的寬度不對稱性導(dǎo)致反向鏈路上TCP的ACK報文擁塞,進而使TCP通信的鏈路利用率降低。SCPS-TP采用兩種改善方法:降低確認應(yīng)答頻率、速率控制。
2.4.1 降低確認應(yīng)答頻率
TCP協(xié)議規(guī)定每接收一個數(shù)據(jù)報文時向發(fā)送端至少回應(yīng)一個確認報文,并且規(guī)定當出現(xiàn)接收數(shù)據(jù)報文亂序時對每個數(shù)據(jù)報文立即給予確認,SCPS-TP取消了以上兩項規(guī)定,而是改成了SCPS-TP接收方以固定速率給予確認,減輕了對確認信道的帶寬壓力。
2.4.2 SCPS-TP的速率控制
SCPS-TP采用開環(huán)速率控制機制以避免過度占用鏈路帶寬。開環(huán)速率控制機制允許在每個端點上基于每個SCPS-TP連接,配置傳輸速率參數(shù)。該機制在整個傳輸過程中把分組的發(fā)送速率控制在用戶指定值并限制突發(fā)傳輸數(shù)據(jù)的尺寸。
為了進行協(xié)議性能驗證和比較,本文利用信道仿真器,對空間環(huán)境中的TCP和SCPS-TP通信進行仿真。如圖1所示,使用2臺主機和1臺信道仿真器搭建仿真環(huán)境,在不同誤碼和延時條件下對TCP協(xié)議和SCPS-TP協(xié)議的數(shù)據(jù)傳輸吞吐量進行測試,并進行比較分析。其中,兩臺主機安裝兩個應(yīng)用測試程序:用于測試TCP性能的測試工具Linux TTCP、用于測試SCPS-TP性能的測試工具SCPS TTCP。主機和信道仿真器配置百兆網(wǎng)卡。信道仿真器設(shè)置下行鏈路帶寬為100Mbps,上行鏈路帶寬為10Mbps。
圖1 SCPS-TP、TCP性能測試仿真環(huán)境
在測試中,使用測試工具利用SCPS-TP和TCP傳輸文件,文件大小為100M。兩臺主機上SCPS-TP參數(shù)配置見表1。
使用信道仿真器,測試SCPS-TP和TCP在不同延時和誤碼條件下的吞吐量,仿真結(jié)果列于表2。
通過表2中仿真結(jié)果可以看出:
(1)當誤碼率小于10-8并且單向延時小于5ms時,SCPS-TP和TCP的性能差別很小。
(2)當誤碼率大于10-7或單向延時大于5ms時,SCPS-TP的傳輸性能明顯優(yōu)于TCP。隨著誤碼率和傳輸時延的增大,SCPS-TP和TCP的傳輸性能差距加大,SCPS-TP的優(yōu)勢越來越明顯。
表1 SCPS-TP參數(shù)配置
表2 不同時延和誤碼率條件下的SCPS-TP和TCP吞吐量(單位:Mbps)
載人空間站和地面互聯(lián)網(wǎng)的連接方式分兩種情況:
(1)載人空間站和地面互聯(lián)網(wǎng)之間直接通信。載人空間站和地球之間距離為400km左右,傳輸單向延時為1.5ms。
(2)載人空間站和地面互聯(lián)網(wǎng)通過中繼星通信。中繼星和地球之間距離為36000km,載人空間站通過中繼星和地面互聯(lián)網(wǎng)通信的傳輸單向延時約為250ms。
從表2中單向時延1.5ms和單向時延250ms對應(yīng)數(shù)據(jù)可以看出,載人空間站接入地面互聯(lián)網(wǎng)時,SCPS-TP的傳輸性能明顯優(yōu)于TCP。
空間鏈路的高誤碼、高延時、不對稱等特性,導(dǎo)致TCP傳輸性能下降。SCPS-TP針對空間鏈路特性對TCP進行了改進,有效提高了TCP傳輸性能。本文利用信道仿真器搭建空間通信的仿真環(huán)境,測試SCPS-TP和TCP在高誤碼高延時的空間鏈路中的吞吐量性能。仿真結(jié)果表明在空間鏈路中SCPS-TP比TCP具有明顯優(yōu)勢。在空間站和地面互聯(lián)網(wǎng)之間通信環(huán)境中,在空間鏈路上使用SCPS-TP能夠很大程度增強傳輸性能,具體有兩種應(yīng)用方式:①地面終端和空間站終端安裝SCPS協(xié)議棧;②地面終端和空間站終端安裝TCP/IP協(xié)議棧,空間站和地面分別安裝TP-TCP協(xié)議轉(zhuǎn)換網(wǎng)關(guān),在兩個網(wǎng)關(guān)之間的空間鏈路傳輸層使用SCPS-TP。
綜上所述,SCPS-TP協(xié)議適用于空間鏈路傳輸。特別是在載人空間站與地面互聯(lián)網(wǎng)之間的空間通信中,在SCPS-TP協(xié)議的基礎(chǔ)上進行傳輸協(xié)議研究具有十分重要的意義。 ◇
[1]沈榮駿.我國天地一體化航天互聯(lián)網(wǎng)構(gòu)想.中國工程科學,2006年10月第8卷第10期.
[2]吳詩其,李興.衛(wèi)星通信導(dǎo)論.電子工業(yè)出版社,2002.
[3]CCSDS 714.0-B-2 Space Communications Protocol Specification(SCPS)—Transport Protocol(SCPS-TP).Recommendation for Space Data System Standards [S].Blue Book,Issue 2,Washington,DC:CCSDS,October 2006.
[4]K.Ramakrishnan.The Addition of Explicit Congestion Notification(ECN)to IP.IETF RFC3168,September 2001.
[5]Jacobson V.Congestion Avoidance and Control[C].Proceedings of ACM SIGCOMM’88,Stanford,CA,August 1988:314—329.
[6]Jacobson V.compressing TCP/IP Headers for Low-Speed Serial Links.RFC 1144 Berkeley:LBL,F(xiàn)ebruary 1990:4—12.
[7] Borman D.,Braden R.,Jacobson V..TCP extensions for high performance.IETF RFC l323,l992.