錢宏文,朱江偉,吳翼虎,楊 旭,方 海,陳顯舟
(1.中國電子科技集團公司第五十八研究所,江蘇 無錫 214072;2.中國空間技術研究院西安分院,陜西 西安 710100)
隨著衛(wèi)星業(yè)務需求的不斷增長,對衛(wèi)星的靈活性提出了越來越高的要求,空間通信無線電系統(tǒng)(Space Telecommunication Radio System,STRS)架構標準采用開放式架構,軟件和硬件體系結構分離設計[1]?;赟TRS的衛(wèi)星任務系統(tǒng)能夠在衛(wèi)星發(fā)射后改變衛(wèi)星任務功能,使衛(wèi)星功能具備軟件定義能力,可以滿足衛(wèi)星多樣性的業(yè)務需求。
STRS 波形組件使用STRS 消息傳遞方法建立消息傳遞通道。STRS 基礎架構提供了兩種消息傳遞模式,一種是STRS 隊列,另一種是發(fā)布/訂閱模式[1]。分布式數(shù)據分發(fā)服務(Data Distribution Service,DDS)中間件遵循發(fā)布/訂閱設計模式[2]。本文利用DDS 的特點,將DDS 應用到STRS 架構中,實現(xiàn)STRS 系統(tǒng)通信中間件,滿足STRS 系統(tǒng)強實時性的要求,實現(xiàn)STRS 波形組件的分布式部署,很好地彌補了STRS 架構標準存在的不足。
STRS 架構標準采用模塊化和分層的設計思想,目的是提高波形應用設計的通用性和可移植性,分為硬件和軟件兩大體系結構[1]。
STRS 硬件架構如圖1 所示,由三大模塊組成,分別為通用處理模塊(General-purpose Processing Module,GPM)、信號處理模塊(Signal Processing Module,SPM)和射頻模塊(Radio Frequency Module,RFM)[1]。通用處理模塊是主要的控制模塊,信號處理模塊主要用于將接收到的數(shù)字信號轉換成數(shù)據分組或將數(shù)據分組轉換為數(shù)字信號并進行發(fā)送的信號處理,射頻模塊主要功能包括頻率轉換和增益控制、模數(shù)和數(shù)模轉換、輻射跟蹤等[3]。GPM、SPM 和RFM 3 個模塊共同組成了包括CPU、FPGA、DSP 等處理器的異構處理平臺。
圖1 STRS 硬件架構
STRS 軟件體系結構定義了運行時不同的波形應用程序軟件和操作環(huán)境之間的軟件接口層以及操作環(huán)境和硬件平臺之間的接口,由應用層、核心層和物理層組成[4]。
STRS 定義了統(tǒng)一的開發(fā)標準架構,使得軟硬件可分離,目的是:在不進行硬件平臺重新設計的情況下,在同一硬件平臺上加載不同的波形組件以實現(xiàn)不同的功能,也可根據特定的需求對系統(tǒng)進行局部或全局的動態(tài)重構,從而最大化地利用系統(tǒng)資源。從工程實踐來看,不采用通信中間件的STRS 存在以下不足:
(1)耦合度高:STRS 系統(tǒng)未明確說明如何實現(xiàn)消息傳遞,軟件開發(fā)人員大多數(shù)會首選手動編寫代碼的方式來實現(xiàn)波形組件應用程序間的數(shù)據交互,這樣每一個連接都需要開發(fā)人員來維護。每增加一個節(jié)點,系統(tǒng)的耦合性呈指數(shù)級增長。
(2)靈活性較差:STRS 要求所有的波形組件作為一個整體創(chuàng)建、運行,如果波形的某一個組件損壞,整個應用將不能正常運行,存在單點失敗的風險,必須要由管理員進行整套系統(tǒng)的卸載和重新部署。
(3)組件間同步耗時較長:為了建立組件之間的同步連接,當組件較多時,過程會更復雜,開銷更大,導致波形組件啟動較慢[5]。
將DDS 引入STRS 系統(tǒng),實現(xiàn)STRS 系統(tǒng)發(fā)布/訂閱方式的通信中間件。STRS 系統(tǒng)通信中間件屏蔽了底層傳輸控制協(xié)議/網際協(xié)議(Transmission Control Protocol/Internet Protocol,TCP/IP),通過簡單的編程就可以構建一個以數(shù)據為中心、可擴展、與位置無關的分布式網絡平臺[5],為STRS 系統(tǒng)各個波形組件提供了簡單、高效的消息傳遞服務。
DDS 使用操作系統(tǒng)適配層和網絡適配層來實現(xiàn)多個平臺的支持,操作系統(tǒng)適配層為DDS 提供運行時所需的內存申請、定時器、多線程等功能接口。不同的操作系統(tǒng)實現(xiàn)DDS 操作系統(tǒng)適配層的接口均不相同,如Linux、SYS/BIOS。DDS 操作系統(tǒng)適配層默認支持可移植操作系統(tǒng)接口(Portable Operating System Interface,POSIX),在支持POSIX 接口的環(huán)境中,只需要做細小的修改就可以實現(xiàn)DDS 操作系統(tǒng)適配層[6]。DDS 網絡適配層基于不同的操作系統(tǒng)提供的網絡編程接口實現(xiàn)[7],如Linux 操作系統(tǒng)下的Socket 接口、SYS/BIOS 操作系統(tǒng)下的網絡開發(fā)工具(Network Developer's Kit,NDK)等。
2.1.1 基于GPM 通用處理模塊的DDS 設計實現(xiàn)
GPM 模塊采用Xilinx 公司的系統(tǒng)級芯片(System on Chip,SoC)作為主處理器。在GPM 模塊運行Peta-Linux[8],提供了DDS 運行所需的POSIX 接口和網絡套接字Socket 接口,DDS 基于POSIX 和Socket 接口實 現(xiàn)操作系統(tǒng)適配層和網絡適配層,完成DDS 在GPM Peta-Linux 環(huán)境中的實現(xiàn)?;贕PM 通用處理模塊的DDS軟件基礎結構如圖2 所示。
圖2 基于GPM 模塊的DDS 軟件基礎結構
2.1.2 基于SPM 信號處理模塊的DDS 設計實現(xiàn)
SPM 模塊主處理器采用TI 公司多核DSP,在SPM模塊上運行多核SYS/BIOS。SYS/BIOS 提供了DDS 運行所需 的POSIX 接 口[9]和NDK[10],DDS 基 于POSIX 接口和NDK 組件實現(xiàn)操作系統(tǒng)適配層和網絡適配層,完成DDS 在SPM SYS/BIOS 中的實現(xiàn)[11]?;赟PM 模塊的DDS 軟件基礎結構如圖3 所示。
圖3 基于SPM 模塊的DDS 軟件基礎結構
2.1.3 基于RFM 射頻模塊的DDS 設計實現(xiàn)
RFM 模塊主要器件為Xilinx 公司的高端FPGA 芯片?;赗FM 模塊,使用FPGA 資源搭建MicroBlaze[12]軟核,PetaLinux 支持MicroBlaze,提供了對應的BSP[13]。PetaLinux 提供了DDS 運行所需的POSIX 接口和網絡套接 字Socket 接 口,DDS 基 于POSIX 和Socket 接口實現(xiàn)操作系統(tǒng)適配層和網絡適配層,完成DDS 在RFM 模塊PetaLinux 中的實現(xiàn)?;赗FM 模塊的DDS 軟件基礎結構如圖4 所示。
圖4 基于RFM 模塊的DDS 軟件基礎結構
基于STRS 的波形組件應用程序的軟件設計包括STRS 核心框架設計和基于DDS 的STRS 系統(tǒng)通信中間件的接口設計兩部分。
2.2.1 STRS 核心框架設計
基于STRS 系統(tǒng)通信中間件,STRS 核心框架加載波形應用程序時只加載并運行各個波形組件,不需要建立波形之間的通信鏈路,也不需要處理波形之間的數(shù)據同步,包括消息傳遞在內的工作都交由DDS 來完成?;贒DS 的STRS 軟件架構如圖5 所示。
圖5 基于DDS 的STRS 軟件架構
2.2.2 STRS 系統(tǒng)通信中間件接口設計
DDS 接口設計對于實現(xiàn)STRS 系統(tǒng)中的發(fā)布/訂閱通信方式來說是一項至關重要的工作。STRS 核心框架只負責波形組件的加載、部署和運行,因此在STRS 消息接口設計中,需要完成STRS 消息接口定義、波形組件間的通信鏈路建立和波形組件間的數(shù)據同步這三方面的工作。
(1)STRS 系統(tǒng)通信中間件接口定義
DDS 使用接口定義語言(Interface Definition Language,IDL)[2]進行數(shù)據結構的定義。根據波組件需要傳輸?shù)臄?shù)據類型以及業(yè)務,使用IDL 定義數(shù)據結構和主題,并使用DDS 代碼自動生成工具加載IDL 文件生成處理數(shù)據結構相關的代碼,通過對生成代碼的封裝來實現(xiàn)STRS 消息接口,通過這種方式實現(xiàn)STRS 中所有用來進行數(shù)據傳輸?shù)慕涌?。由于基于DDS 定義的STRS 系統(tǒng)通信中間件接口只是實現(xiàn)了系統(tǒng)內部的消息傳輸,并且都在各個組件的代碼中實現(xiàn),遵循STRS 架構標準,并不會影響到STRS 架構,完全兼容。
(2)波形組件間的通信鏈路建立
基于STRS 系統(tǒng)通信中間件實現(xiàn)的STRS 波形組件是位置無關的,波形組件之間的互聯(lián)互通通過“主題”+“數(shù)據結構”作為唯一標識。波形組件間的通信鏈路建立通過“發(fā)現(xiàn)”機制[14]來實現(xiàn),使用周期性的“心跳”來保證參與者的存活性,參與者在網絡上通過“心跳”周期性地宣告他們的存在。一旦兩個參與者相互發(fā)現(xiàn)后,一個可靠的通信鏈路建立。在STRS 系統(tǒng)的開發(fā)過程中無需考慮組件間的連接建立問題。
(3)波形組件間的數(shù)據同步
在進行波形組件的開發(fā)過程中,會遇到這樣的問題,先啟動訂閱端,再啟動發(fā)布端,往往訂閱端無法收到第一包數(shù)據,這時就無法保證數(shù)據的完整性。針對上述問題,STRS 系統(tǒng)通信中間件提供了解決方案,發(fā)布端提供了一個接口on_publication_matched,通過這個接口可以獲得當前與發(fā)布端建立通信鏈路的訂閱端的個數(shù),軟件開發(fā)者可以通過對與發(fā)布端建立通信鏈路的訂閱端的個數(shù)的判斷來決定是否開始發(fā)布數(shù)據,當訂閱端個數(shù)大于0 時開始發(fā)布數(shù)據,這樣訂閱端就會收到所有數(shù)據。這樣很容易地解決了波形組件間的數(shù)據同步問題,保證了數(shù)據的完整性。
2.2.3 STRS 系統(tǒng)通信中間件的性能測試
基于可重構綜合處理器平臺,使用STRS 系統(tǒng)通信中間件接口,在GPM 模塊和RFM 模塊之間進行STRS系統(tǒng)通信中間件接口的性能測試,包括:波形組件間的通信鏈路建立時間、丟包率和傳輸延時[15],測試結果如下。
(1)波形組件間的通信鏈路建立時間測試
構建一對一發(fā)布-訂閱場景,發(fā)布端mainPublisher 一直循環(huán)發(fā)送數(shù)據,訂閱端mainSubscriber 記錄時間T1后馬上使能,接收到第一包數(shù)據記錄時間T2,波形組件間的通信鏈路建立時間為T2-T1,測試結果顯示通信鏈路建立時間為420 ms。
(2)丟包率測試
丟包率表示在Best-effort QoS[16]的配置下,STRS 系統(tǒng)通信中間件接口的丟包情況。構建一對一發(fā)布-訂閱場景,發(fā)布端循環(huán)n次發(fā)布數(shù)據,訂閱端每收到一包數(shù)據記錄一次,根據收到的數(shù)據情況統(tǒng)計丟包率。實驗中分別測試了單包大小分別為1 KB、4 KB、16 KB、32 KB、64 KB、1 MB 的丟包率,均未出現(xiàn)丟包情況。
(3)傳輸延時測試
測試傳輸延時是為了證明STRS 體系架構對消息接口實時性的要求。基于STRS 系統(tǒng)通信中間件接口構建一對一請求-回復場景,回環(huán)測試,每次發(fā)布和訂閱數(shù)據使用信號量進行同步。實驗中分別測試了單包大小分別為1 KB、4 KB、16 KB、32 KB、64 KB、1 MB 的傳輸延時,測試結果如表1 所示。
表1 STRS 消息接口傳輸延時測試結果(μs)
STRS 系統(tǒng)通信中間件有如下優(yōu)點:
(1)提高通信效率,降低網絡延遲:STRS 系統(tǒng)中的所有波形組件之間是一種對等網的關系,不需要中心服務器的連接,不存在單點失敗風險,而且底層協(xié)議棧并不復雜,不需要太大的軟件開銷,這大大提高了通信的效率和實時性。
(2)降低系統(tǒng)的冗余度,提高了靈活性:各個波形組件之間是松耦合的關系,參與通信的節(jié)點并不知道對方的信息,節(jié)點之間的通信僅僅需要一個主題就能完成。
(3)單個波形組件可重構:在STRS 系統(tǒng)中,每個波形組件的加入和退出均不會影響整個系統(tǒng)的功能和業(yè)務。波形組件啟動后,組件間只需通過“主題”就可以完成數(shù)據交互,當某一個波形組件故障時,可以通過顯控軟件完成單個波形組件的重啟,進而實現(xiàn)單個組件模塊的重構。
(4)減少了組件間同步時間:STRS 系統(tǒng)通信中間件接口的性能測試結果表明STRS 系統(tǒng)中的各個波形組件啟動后,在極短的時間內就可完成相互發(fā)現(xiàn)和同步,所以,使用STRS 系統(tǒng)通信中間件極大地減少了組件間的同步時間。
本文首先介紹了STRS 架構標準,并根據工程實踐經驗總結出了目前不采用通信中間件STRS 系統(tǒng)中存在的問題,即耦合度高、實時性不強、靈活性較差、組件間同步耗時較長。重點介紹了基于DDS 的STRS 系統(tǒng)通信中間件的設計與實現(xiàn),最后對STRS 系統(tǒng)通信中間件接口進行了性能測試,證明了STRS 系統(tǒng)通信中間件的優(yōu)點。本文的創(chuàng)新點在于:基于STRS 硬件體系架構,在GPM、SPM 和RFM 3 種異構處理器平臺上基于DDS 完成了STRS 系統(tǒng)通信中間件的設計與實現(xiàn),并采用STRS系統(tǒng)通信中間件來實現(xiàn)波形組件間的通信,降低了系統(tǒng)的冗余度和復雜度,提高了系統(tǒng)的實時性、靈活性和可靠性。