中國空間技術研究院,北京 100094
隨著寬帶IP業務的發展,容量提升已經成為衛星通信的重要目標。多年來衛星通信多數采用高軌衛星彎管[1]轉發的方式,難以實現對地球的全面覆蓋,且延時較高,系統容量難以滿足當前的帶寬需求。低軌移動衛星(Low Earth Orbit,LEO)星座[2]能夠有效解決覆蓋率問題,而如何實現星座內網絡的互聯互通成為星座建設的主要問題[3]。銥星一代系統使用“電路交換”的方式進行組網[4],但ATM等2層交換控制機制復雜[5],且難以與地面IP網絡進行融合,因此不是星座組網的最優選擇。美國IRIS(Internet Protocol Routing in Space)于2009年將Cisco18400空間路由器搭載在Intelsat-14衛星上,并對其功能進行了在軌測試驗證。Cisco18400是針對高軌衛星設計的星間IP路由器,其鏈路時延和誤碼率較高,帶寬相對較低,且由于星上直接對IP包進行路由處理轉發的復雜度較高,其吞吐量僅為250Mbit/s[6]。而低軌網絡能夠實現更高的帶寬和較低的時延,但由于星上計算及存儲資源有限,星間網絡與地面網絡條件相差較大,如何在支持IP數據包的同時實現對其高速路由成為低軌衛星路由器設計的關鍵問題[7-10]。
低軌移動星座拓撲具有高度可預測性[11],其星間網絡常用基于快照的路由協議[12],對應的星載路由器主要執行2層交換功能,只存儲星座周期內所有快照對應的轉發表,執行查表及交換轉發的功能。這種基于快照的路由協議對應的路由器設計實際上不具備3層路由的功能,難以適應突發的鏈路故障,容易造成丟包。而地面網絡常用的路由器架構是針對每個到達的數據包進行路由計算與查找,其處理能力較弱,吞吐量低,且頻繁調用星上計算資源,不適用于低軌移動星座網絡的星載路由器設計。
針對低軌移動星座網絡進行星載路由器設計時,應充分考慮星間網絡的特點,即網絡拓撲變化的周期性和可預測性,以及星間鏈路較高的吞吐率、較長的時延和較大的誤碼率,且要求路由器能夠支持低軌星間鏈路較大的帶寬需求[13]。本文提出一種高速星載路由器設計方案,面向非連接的星間網絡,盡可能減少路由次數,利用轉發表進行直接轉發,從而最大化利用轉發資源,提高轉發速率,降低路由計算速率對轉發平面速率的限制,節省星上計算資源,降低數據在星上的傳輸時延。同時借鑒地面路由器架構,允許控制平面進行動態路由計算,避免星間鏈路突發故障引起的丟包。支持2層源路由,針對重要數據幀采用控制機制簡單地快速交換。此外,路由器數據平面采用基于共享內存的交換單元設計,與高速輸入/輸出接口連接,進一步提高數據交換速率。
星地一體化網路分為空間段、用戶端和地面段,如圖1所示。其中空間段的星間網絡由各衛星上的核心路由器組成,是一個自治子網,網絡內節點距離近,其能夠支持的帶寬遠高于高軌星間鏈路。低軌星座應能覆蓋整個地球表面,但其網絡節點數卻遠小于地面網絡,意味著其數據帶寬應遠高于地面網絡鏈路。因此要求星載路由器具有5~10 Gbit/s的數據吞吐量[14],包括高速星間鏈路、饋電鏈路及與星內其他設備進行通信的所有帶寬。其中星間鏈路帶寬要求應高于100 Mbit/s,饋電鏈路應高于500 Mbit/s,從而滿足大數據量的傳輸需求,有效承載地面網絡數據。在傳輸上支持QoS(Quality of Service)[15]。星載路由器具有有限的計算資源和存儲資源,但星間網絡的拓撲結構具有周期性及高度可預測性,因此能夠允許“一次路由,多次交換”的實現,即在一段時間拓撲保持不變時,路由器無需重復計算路由,只需根據轉發表進行2層轉發,從而實現路由和交換資源的最大化利用。此外,考慮到衛星網與地面網絡的融合,要求星載路由器能夠支持無連接的IP路由。

圖1 星地組網結構示意Fig.1 Satellite-terrestrial integrated network
與地面路由器類似地,星載路由器根據功能分為兩個平面(見圖2):控制平面、數據平面。控制平面功能主要包括:1)與其他路由器交換拓撲信息,進行網絡拓撲信息的維護;2)運行路由協議,根據當前網絡拓撲及本星連接狀態進行路由表的更新和維護;3)對交換單元進行配置和管理;4)對控制平面與數據平面間的接口進行管理。

圖2 星載路由器功能需求Fig.2 Function requirements for onboard satellite router
數據平面功能包括:1)數據包轉發和調度管理,對數據包的操作需要在每個數據包的到來和發送時執行;2)對高速輸入/輸出接口進行管理,設置相應的緩存區域;3)讀取輸入接口接收的數據包幀頭,并對數據包進行分類。基于分類結果,數據包被丟棄或依據不同優先級進行處理轉發,實現數據平面的QoS保障;4)滿足重要報文ARQ[16](Automatic Repeat-reQuest)服務需求;5)支持2層路徑路由(源路由);6)支持2層自定義幀格式。
基于共享內存的高速星載路由器結構設計如圖3所示。其中控制單元功能主要由CPU實現,由于控制單元功能不需要在每個數據包到來時執行一次,因此對控制平面的速率要求比較寬松,且通常由軟件實現其功能。查找轉發功能主要在數據平面實現,為了實現數據的高速轉發,選用抗輻照的FPGA作為交換單元。
由于低軌移動星座的規律性運行,其所組成的星間網絡雖然是高度動態變化的,但是其拓撲變化是可預測的。因此可以由地面對單周期內全網路徑選擇進行預測,將拓撲快照與對應的路由表共同預置在控制平面中。當前網絡拓撲與快照相符時,數據平面只需根據當前路由表進行數據包的轉發。由于CPU路由計算速率相對較低,這樣能夠最大化利用FPGA的交換速率。
星載路由器工作過程為:
1)CPU接收網絡內其他節點廣播的鏈路信息,組成完整的網絡拓撲信息,與預置的網絡拓撲信息對比。相同時,直接使用預置的路由表進行轉發表配置;不同時,采用動態路由方法進行路由表計算。路由表每次更新時,CPU需對FPGA中的轉發表進行配置。
2)數據包進入自治網絡后,在自治網絡邊緣路由器進行封裝。在各星載路由器上,FPGA對數據包進行流分類和分組處理。目的地址為本星的捕獲幀經捕獲模塊傳輸給CPU;中繼轉發幀如果有標簽堆疊,則依照標簽中的地址進行轉發,同時彈出下一跳標簽;如果沒有標簽堆疊,則查詢轉發表確定其控制信息,將數據包生存時間(TTL, Time to Live)減1,并計算其新的頭部校驗和。
3)如圖3所示,要轉發的報文入隊調度后保存在共享存儲單元中的虛擬輸出隊列[17](VoQ, Virtual output Queue),經出隊調度和總線仲裁模塊取出到發送輪詢模塊,由天線接口單元轉發,或由星內設備接口發送至其他星內設備。

圖3 星載路由器設計架構Fig.3 Architecture for onboard satellite router
星載路由器僅在網絡拓撲因鏈路故障發生變化時進行路由計算,消除了其對交換速率的限制,同時支持2層路徑路由(源路由)。路由器具有鏈路故障時進行路由重計算的功能,CPU主要執行3層路由功能。將單個周期所有網絡拓撲快照及其所對應的路由表預置在CPU中。路由器自身連接的鏈路信息,及其他節點廣播的網絡拓撲信息通過FPGA發送到CPU,CPU維護網絡鏈路連接狀態數據庫,當數據庫與快照中的鏈路狀態不同時采用動態路由方法,計算動態路由表,并對FPGA中的轉發表進行重新配置。相鄰路由器之間定時進行HELLO信令交互,確認自身鏈路通斷情況,并將CPU所維護的鏈路狀態數據庫以鏈路狀態通告信令的形式向全網廣播。
路由器支持兩種轉發方式:其一是端到端的通信,需在路由器內進行查表轉發;其二是針對時延敏感型報文,采用路徑路由(源路由)的方法,令數據包按照規劃路徑進行轉發。源路由方法借鑒MPLS“轉發標記報文”[18]的思想,在進入自治網絡前為該數據包幀頭添加堆疊首部,即數據包將在自治網絡內經過的節點地址,堆疊首部由地面站計算配置星間網絡內的路由器交換單元直接讀取標簽棧頂地址進行轉發,不需查詢轉發表。每經過一跳,路由器需剝離一層標簽。經過路由器的數據包格式如圖4所示,其中棧層數表示是否存在標簽堆疊及其個數。

圖4 2層自定義幀格式Fig.4 Self-defining frame format in switch layer
路由器在星間網絡中的2層交換采用自定義幀格式,如圖4所示。將地面以太網數據幀封裝在凈荷數據單元,對星間網絡內的衛星節點及下傳數據所用的地面站進行獨立編址,并對星上不同端口進行端口號命名。數據幀在星間網絡內傳輸時,只需查詢自定義幀中的幀頭控制字。同時針對不同業務類型進行優先級劃分,利用隊列調度算法、源路由及ARQ機制提供面向DiffServ[16](Differentiated Services)的QoS保證。
此外,通過將地面網絡數據幀完整封裝進凈荷數據單元的方式,路由器能夠兼容地面的IP網絡。地面網絡數據幀最大長度為1500字節,圖4所示2層幀格式設計能夠使凈荷數據單元完整包含一個地面以太網絡數據幀。因此可以將星間網絡視為骨干網絡,不同區域的地面網絡視為不同的子網。地面網關作為網絡邊界節點,對數據包進行“封裝”或“拆包”。在數據幀進入星間骨干網前對其依照圖4所示格式添加幀頭;對經由星間網絡路由進入地面子網的數據幀進行幀頭的刪除,不影響數據包在地面IP網絡的繼續傳輸。
FPGA轉發表單元需保存3張面向不同報文類型的轉發表(見表1):單播轉發表、組播轉發表及邏輯-物理端口映射表。FPGA中的流分類處理模塊根據數據包幀頭中的目的地址決定需要查詢的轉發表,并將指令碼發送到分組處理模塊執行。

表1 FPGA轉發表分類
路由器交換單元常見的有總線型、共享內存型[19]、Cross-bar空分結構型。其中總線型無法實現同時讀寫,導致交換速率較慢;Cross-bar型能夠實現同時讀寫,可以完全避免數據阻塞,但構造的復雜度較高,需要專門的端口交換單元;在基于共享存儲的路由器中,所有輸入/輸出端口均訪問同一個存儲單元,是一種輸出緩存機制,能夠在吞吐量和延遲方面達到最優的性能,但當數據量過大超出其所能承受的吞吐量時,可能會發生數據阻塞的現象。
基于路由器數據交換的速率需求,選擇共享內存型交換單元,使用片外SDRAM作為存儲單元。同一時間片內,允許所有輸入端口寫入,同時允許輸出端口進行讀取。
隊列及調度模塊結構如圖5所示。

圖5 隊列及調度模塊結構Fig.5 Structure of queue scheduling model
路由器發送數據采用基于優先級的DWRR[20]調度方式,在保證優先級的同時支持帶寬預留,滿足不同業務的QoS需求。隊列管理模塊根據優先級信息在片外SDRAM中為每個端口分別構造相應的虛輸出隊列(VoQ)。隊列管理模塊在設計時應保持公平與高效,不應出現某一隊列占用所有存儲資源,使其他隊列無法及時存儲的情況。因此,需要為每個輸出隊列設置最小存儲容量和最大存儲容量的限制。出隊時,隊列管理通過與調度模塊交互信息保證高優先級的分組先出隊,同時要求確保各個輸出端口數據輸出的公平性。
入隊調度流程為:調度模塊檢測到控制信息FIFO非空,讀取控制信息FIFO,并分析讀取到的控制信息。向隊列管理模塊發送入隊請求,調度模塊反饋隊列管理模塊發送的入隊信息,數據信息FIFO將數據幀搬移到總線仲裁模塊。
出隊調度流程為:出隊調度從發送調度FIFO中讀取到要出隊數據的隊列號,并發送該隊列數據的出隊請求到隊列管理模塊,隊列管理模塊返回出隊信息。出隊調度與緩存管理和查詢模塊配合,得到出隊數據幀在SDRAM中的具體地址,將出隊結果存入結果信息FIFO,傳遞給總線仲裁模塊,由總線仲裁模塊將待出隊的數據幀從SDRAM中取出。
入隊及出隊調度流程如圖6所示。

圖6 入隊/出隊調度流程Fig.6 Input/Output queue scheduling process
此外,共享存儲單元的SDRAM同時也執行重要數據幀的ARQ(Automatic Repeat Request)功能。由于星間網絡是一個無連接的網絡,且傳播時延較大。利用ARQ功能的“確認-重發”機制,僅針對優先級較高的重要信令數據幀執行功能,從而保證重要的信令報文能夠準確到達,同時防止大量優先級較低的數據包占用存儲資源。其具體工作流程為:衛星A路由器收到高優先級信令消息,查詢其幀頭目標地址為B路由器,此時A路由器將復制一份該信令存儲到SDRAM中,同時將該數據包發到B路由器。B路由器收到A發送的信令后,對其發送響應。A收到響應后將刪除SDRAM中的備份數據包,如果超時未收到響應,則重發該數據包。
路由器與星內其他設備直接通信的接口速率通常在100 Mbit/s之內。在用于星載處理設備間高速數據傳輸的總線協議中,Spacewire[21]能夠達到單向200 Mbit/s的全雙工傳輸速率,速率可調,允許鏈路層流量控制。與地面網絡的以太網接口相比,其速率仍然較低,但其具有針對星上數據傳輸的標準成熟的協議及接口芯片,故其在星上的可用性及可擴張性遠優于以太網接口。因此,為了支持與星載設備系統的集成與測試[4],路由器選用Spacewire接口作為和星內其他設備通信的高速接口。此外,L波段鏈路作為用戶鏈路,其帶寬要求相對較低,通常在100 Mbit/s以內。路由器設計8路100 Mbit/s的Spacewire接口,其中1路作為用戶鏈路天線接口,7路連接到星內其他設備。根據星間網絡場景需求,星間鏈路帶寬要求通常為200~400 Mbit/s,饋電鏈路與地面站通信時,其帶寬要求比星間鏈路更高,通常在1 Gbit/s以內。Serdes接口支持高速傳輸,最高能達到2.5 Gbit/s的速率。為了向后兼容星間激光鏈路的數據傳輸需求,路由器采用標準Serdes芯片經串并轉換后與交換單元連接,作為星間鏈路及饋電鏈路的高速輸入輸出接口。其中4條星間鏈路的業務速率設計為500 Mbit/s,兩條饋電鏈路業務速率設計為1 Gbit/s。

圖7 星載路由器接口單元Fig.7 Interface unit of onboard satellite router
路由器共享內存單元的SDRAM應支持同一時間片內,一次分組的同時讀寫。接口最大速率為4.8 Gbit/s,故要求SDRAM總線速率大于9.6 Gbit/s??紤]到SDRAM工作頻率為100 MHz,采用160位SDRAM總線(有效位寬128位)能夠實現12.8 GHz的總線帶寬,滿足輸入/輸出接口的交換要求。
路由器測試設備由PXIE工控機與控制計算機組成,其中PXIE工控機用于實現基于FPGA的數據包收發與統計功能,控制計算機運行測試設備控制軟件,負責對PXIE工控機進行配置管理,并顯示測試結果。測試系統組成原理框圖如圖8所示。

圖8 路器測試系統原理框圖Fig.8 Test system of onboard satellite router
針對路由器接口單元進行測試時,需先配置靜態轉發表。目的地址1~13輸出端口1~14;目的地址221對應的輸出端口為所有端口(1~14);目的端口號0對應的輸出端口為1。
對其單播、組播、任播功能進行測試。
(1)單播測試
測試設備向14個端口各發送1條單播流量,幀長為100字節,幀間隔1 000 ns,對應接口速率98 Mbit/s。其中,端口1發送流量目的地址為1,端口2發送流量目的地址為2,端口14發送流量目的地址為0,其測試拓撲如圖9(a)所示。
(2)組播測試
測試設備端口1向路由器各端口發送1條組播流量,幀長100字節,幀間隔1 000 ns,對應接口速率98 Mbit/s,其測試拓撲如圖9(b)所示。
(3)任播測試
測試設備端口1發送1條幀長100字節,幀間隔1 000 ns的流量,其測試拓撲如圖9(c)所示,通過測試路由器FPGA內部捕獲標志是否置1判斷功能是否正常。

圖9 轉發功能測試拓撲Fig.9 Test topology of forwarding function


續圖9Fig.9 Continued
(4)本星測試
測試設備端口1發送1條流量,幀長100字節,幀間隔1 000 ns,目的地址為255(本星地址),目的端口號為7(Spacewire端口)。
功能測試結果如表2所示。

表2 單播、組播、任播轉發測試結果
測試設備向路由器14個端口分別發送單播流量,幀長為100字節,接口速率為線速率,針對不同接口速率需求對測試設備發送速率進行設置,同時路由器向測試設備端口發送同樣速率的流量,進行雙向收發線速率測試,測試結果如表3所示。
由于各端口均為雙向收發,其總吞吐量能夠達到9.6 Gbit/s,其中業務鏈路(包括星間鏈路、饋電鏈路和用戶鏈路)端口能夠實現5.1 Gbit/s吞吐量。

表3 接口線速率測試
本文針對低軌移動星座的應用場景,提出了一種高速星載路由器設計架構,結合星間網絡路由的特點和需求,給出了一種能夠最大化利用交換速率資源,且具有高速輸入/輸出接口的星載路由器設計方案,經實例測試驗證,
1)與Cisco18400星載路由器相比,吞吐率顯著提高,實現交換資源的充分利用;
2)支持標簽堆疊的源路由方式,提供面向DiffServ的QoS保障;
3)同時支持動態路由和靜態路由,有效減少了路由計算對CPU計算資源的消耗;
4)標準Spacewire接口便于與星內其他設備集成;
5)為星座組網相應的載荷工程實現奠定了技術基礎。