李欣宇
(中國西南電子技術(shù)研究所 通信部,四川 成都610036)
SCA是一個(gè)基于CORBA的規(guī)范[1],也是軟件無線電事實(shí)上的標(biāo)準(zhǔn),基于SCA開發(fā)的通信系統(tǒng)具有可移植性好、互操作性強(qiáng)、易于重用等特點(diǎn)[2]。然而,在某個(gè)基于SCA的通信系統(tǒng)的研制過程中,基于CORBA的SCA架構(gòu)無法滿足實(shí)時(shí)性較高的應(yīng)用,同時(shí)也存在著冗余度大、單個(gè)軟件組件無法在運(yùn)行時(shí)故障重構(gòu)等問題。DDS是由對象管理組織發(fā)布的和CORBA處于同一層次且兼容的規(guī)范[3],它可以滿足以數(shù)據(jù)為中心的實(shí)時(shí)系統(tǒng)的需求[4]。本文利用CORBA和DDS互補(bǔ)兼容的特點(diǎn),提出了一種將DDS集成到SCA架構(gòu)中的方案,并通過工程實(shí)踐表明該方案能很好地彌補(bǔ)SCA架構(gòu)存在的不足。
2000年之前,美軍大多數(shù)舊電臺系統(tǒng)不具備可重用性,新波形的引進(jìn)常常導(dǎo)致舊設(shè)備的直接淘汰,造成了資源的嚴(yán)重浪費(fèi)。為了解決這個(gè)問題,美國的聯(lián)合編程辦公室 為 聯(lián) 合 戰(zhàn) 術(shù) 無 線 電 系 統(tǒng) (joint tactical radio system,JTRS)發(fā)布了軟件通信體系結(jié)構(gòu) (software communication architecture,SCA)規(guī)范。SCA通過公共對象請求代理體系結(jié)構(gòu) (common object request broker architecture,CORBA)定義了一個(gè)統(tǒng)一的開發(fā)標(biāo)準(zhǔn)框架和通用結(jié)構(gòu),使得通信系統(tǒng)開發(fā)的軟件和硬件可以分離,它的宗旨是:通過在同一硬件平臺上加載不同的波形組件以實(shí)現(xiàn)不同的功能,也可根據(jù)特定的需要對系統(tǒng)進(jìn)行部分升級,從而最大化地利用系統(tǒng)資源,目前最新的版本是2012年發(fā)布的4.0版本[5]。SCA將硬件描述為抽象的類,當(dāng)設(shè)備不斷變化時(shí),也能對千差萬別的硬件進(jìn)行統(tǒng)一的描述;SCA將各種波形軟件模塊化,以組件的方式描述波形應(yīng)用中不同軟件的層次??梢?,SCA是一個(gè)開放的、標(biāo)準(zhǔn)的平臺,隔離了底層硬件與波形組件,讓系統(tǒng)重用和升級變得簡單,減少了支持和操作成本。從理論上看起來一切都很美好,但是從我們工程實(shí)踐來看,基于SCA構(gòu)建的通信系統(tǒng)存在一些不足,讓我們從一個(gè)實(shí)例的介紹開始。
在基于SCA的通信系統(tǒng)中,雖然很多功能都是用軟件實(shí)現(xiàn)的,但也需要一個(gè)硬件平臺作為軟件的載體,當(dāng)然也包括了用于收、發(fā)信號的射頻前端。圖1為一個(gè)基于SCA的超短波數(shù)傳通信系統(tǒng)的架構(gòu)。在這個(gè)平臺上,通過加載不同的波形組件,可以實(shí)現(xiàn)最小頻移鍵控 (minimum shift keying,MSK)、直接序列擴(kuò)頻 (direct sequence spread spectrum,DS)和 跳 頻 (frequency-h(huán)opping spread spectrum,F(xiàn)H)3種波形應(yīng)用。發(fā)射信號時(shí),數(shù)據(jù)源經(jīng)過編碼處理后,依次通過D/A轉(zhuǎn)換、上變頻,最后通過射頻前端發(fā)送;接收信號時(shí),會先由射頻前端進(jìn)行射頻處理,依次經(jīng)過下變頻,中頻處理和A/D變換完成從模擬信號到數(shù)字信號的處理環(huán)節(jié),最后進(jìn)行軟件部分的信號處理。SCA核心框架可以加載、部署波形組件的硬件平臺主要是現(xiàn)場可編程門陣列 (field-programmable gate array,F(xiàn)PGA)、數(shù)字信號處理器 (digital signal processor,DSP)和通用處理器 (general purpose processor,GPP)。在此平臺上用FPGA實(shí)現(xiàn)信號的處理,主要包括數(shù)字下變頻、擴(kuò)頻、解擴(kuò)等功能;運(yùn)算速率較大的一些組件,比如編解碼器和快速傅里葉變換等會被加載到DSP上;實(shí)現(xiàn)各個(gè)波形組件管理和控制功能的核心框架、協(xié)議處理以及人機(jī)界面等運(yùn)算量不大的組件則放在GPP上運(yùn)行。FPGA、DSP、GPP節(jié)點(diǎn)間通過帶寬為4G的RapidIO高速總線互聯(lián),CORBA總線采用e*ORB。
圖1 超短波通信系統(tǒng)架構(gòu)
以運(yùn)行FH波形應(yīng)用為例,F(xiàn)H波形一共有3個(gè)軟件組件,需要部署在FPGA、DSP、GPP上,名字分別為FNode,DNode,GNode。按照SCA的要求,這3個(gè)組件均實(shí)現(xiàn)了Resource接口,并且通過擴(kuò)展Port類實(shí)現(xiàn)了FH波形需要的API函數(shù)。根據(jù)SCA標(biāo)準(zhǔn),波形組件的啟動是在ApplicationFactory的create函數(shù)中實(shí)現(xiàn),流程如圖2所示。
圖2 波形啟動流程
我們對FH波形的功能、性能以及系統(tǒng)架構(gòu)進(jìn)行了綜合評測,總結(jié)出基于SCA的通信系統(tǒng)有以下不足:
(1)系統(tǒng)耦合性高、冗余度大:SCA組件間的數(shù)據(jù)交互全部基于CORBA遠(yuǎn)程函數(shù)調(diào)用[6],需要命名服務(wù)器才能完成通信,任何兩個(gè)節(jié)點(diǎn)之間在啟動通信之前均需要在命名服務(wù)器上去取得對方的對象引用并保存到本地程序空間,當(dāng)增加一個(gè)節(jié)點(diǎn)時(shí),系統(tǒng)的耦合性呈指數(shù)級的增長。
(2)實(shí)時(shí)性不高:CORBA通信需要在硬件總線上實(shí)現(xiàn)GIOP (general inter-ORB protocol)和IIOP (internet inter-ORB protocol)的協(xié)議棧,這會占用較大的軟件開銷,在實(shí)時(shí)性要求較高的場合效果并不好。例如,在圖1所示的環(huán)境上測試,發(fā)現(xiàn)其數(shù)據(jù)通信時(shí)延達(dá)到25ms,無法滿足FH波形的要求。
(3)無法運(yùn)行時(shí)重構(gòu),靈活性較差:SCA要求所有的波形組件作為一個(gè)整體安裝、創(chuàng)建、運(yùn)行,如果一個(gè)波形的某一個(gè)組件損壞,整個(gè)應(yīng)用將不能正常運(yùn)行,必須要由操作員進(jìn)行釋放、卸載整個(gè)應(yīng)用,然后再安裝、創(chuàng)建新的應(yīng)用并啟動新應(yīng)用的邏輯處理[7]。
(4)組件之間同步耗費(fèi)較多的開銷:如圖2所示,核心框架調(diào)用getPort和connectPort均是為了建立組件之間的同步連接,當(dāng)組件較多時(shí),過程會更復(fù)雜,開銷更大,拖慢波形啟動的速度。
有沒有解決這些問題的方法?在回答這個(gè)問題之前,我們先介紹一下 DDS (data distribution service)技術(shù)的特點(diǎn),并與CORBA技術(shù)做一個(gè)比較。
DDS是一套互聯(lián)、互通協(xié)議規(guī)范和應(yīng)用編程接口,它定義了一種以數(shù)據(jù)為中心的發(fā)布/訂閱機(jī)制,數(shù)據(jù)由應(yīng)用方發(fā)布,對該數(shù)據(jù)感興趣的遠(yuǎn)程應(yīng)用訂閱數(shù)據(jù)。數(shù)據(jù)對象用“主題”進(jìn)行標(biāo)識,由接口定義語言 (interface definition language,IDL)定義,如圖3所示。通過這種發(fā)布/訂閱機(jī)制,DDS構(gòu)建了一個(gè)共享的 “全局?jǐn)?shù)據(jù)空間”,系統(tǒng)中的各個(gè)節(jié)點(diǎn)都掛載在此 “全局?jǐn)?shù)據(jù)空間”上,通過DDS規(guī)定的標(biāo)準(zhǔn)接口完成數(shù)據(jù)的交互,DDS有效的降低了系統(tǒng)各種組件之間的耦合性,很容易構(gòu)建一個(gè)以數(shù)據(jù)為中心、可擴(kuò)展、與平臺和位置無關(guān)的網(wǎng)絡(luò)。每一個(gè)發(fā)布者均有一個(gè)與之關(guān)聯(lián)的數(shù)據(jù)寫入者,發(fā)布者的作用是發(fā)布寫入者寫入的數(shù)據(jù)。訂閱者主要負(fù)責(zé)接收發(fā)布的數(shù)據(jù)并使數(shù)據(jù)能被數(shù)據(jù)讀入者處理。主題用于聯(lián)系發(fā)布和訂閱,是通信雙方聯(lián)系的唯一紐帶。
圖3 DDS系統(tǒng)架構(gòu)
通過比較分析,在數(shù)據(jù)通信這個(gè)層面上DDS相對于CORBA有以下優(yōu)勢:
(1)降低系統(tǒng)的冗余度,提高了靈活性:在CORBA結(jié)構(gòu)中,各個(gè)通信節(jié)點(diǎn)是一種緊耦合的結(jié)構(gòu),任一通信節(jié)點(diǎn)均要保留遠(yuǎn)程通信對象的引用才能完成通信,使得整個(gè)系統(tǒng)結(jié)構(gòu)比較復(fù)雜。而在DDS網(wǎng)絡(luò)中,各個(gè)節(jié)點(diǎn)之間是松耦合的關(guān)系,參與通信的節(jié)點(diǎn)并不知道對方的信息,節(jié)點(diǎn)之間的通信僅僅需要一個(gè)主題就能完成。
(2)提高通信效率,降低網(wǎng)絡(luò)延遲:CORBA是C/S(client/server)的通信模式,客戶端向服務(wù)器端請求數(shù)據(jù),在網(wǎng)絡(luò)中需要一個(gè)數(shù)據(jù)中心服務(wù)器來處理并提供數(shù)據(jù)。在這種網(wǎng)絡(luò)方式下,當(dāng)多個(gè)節(jié)點(diǎn)需要同時(shí)發(fā)送數(shù)據(jù)時(shí)它們會并行的向服務(wù)器發(fā)起數(shù)據(jù)請求,服務(wù)器需要耗費(fèi)較長的時(shí)間來處理這些請求,使系統(tǒng)的負(fù)擔(dān)增加,造成了網(wǎng)絡(luò)延遲。DDS網(wǎng)絡(luò)的節(jié)點(diǎn)之間是一種對等網(wǎng)的關(guān)系,不需要中心服務(wù)器的連接,而且DDS底層協(xié)議棧并不復(fù)雜,不需要太大的軟件開銷,這大大提高了通信的效率和實(shí)時(shí)性。
(3)提供質(zhì)量服務(wù) (quality of service,Qos):CORBA僅有有限的定制能力,而DDS提供23個(gè)Qos。通過使用DDS的Qos可以在不產(chǎn)生額外工作的前提下實(shí)現(xiàn)對數(shù)傳過程以及對整個(gè)網(wǎng)絡(luò)的控制,為上層應(yīng)用提供極大的方便[8]。
簡而言之,SCA是一套接口,運(yùn)行規(guī)范和規(guī)則的定義,通過這些定義實(shí)現(xiàn)了軟件模塊化、可移植和可重用[9]。而DDS是一套在分布式系統(tǒng)中數(shù)據(jù)交互的標(biāo)準(zhǔn),具有發(fā)布主題數(shù)據(jù),訂閱主題數(shù)據(jù)等功能。SCA的特色是可以通過加載不同的軟件組件而在同一硬件平臺上實(shí)現(xiàn)不同的波形,但是因?yàn)槠浠贑ORBA,在數(shù)據(jù)通信這個(gè)層面上的效果并不好。而DDS正是為了解決數(shù)據(jù)通信問題而提出的一個(gè)規(guī)范,它屏蔽通信網(wǎng)絡(luò)的底層細(xì)節(jié),提供一個(gè)平臺無關(guān)、位置無關(guān)、高效、靈活的模型。因此從本質(zhì)上講,SCA和DDS是兩項(xiàng)互補(bǔ)的技術(shù)。SCA提供在硬件平臺上加載、管理各個(gè)波形組件的方法,而DDS為各個(gè)波形組件提供了簡單、高效的數(shù)傳服務(wù)。它們解決的是系統(tǒng)中不同方面的問題,而兩者又都具有平臺無關(guān)、語言無關(guān)、接口用IDL描述等特點(diǎn)。因此新的軟件方案在保證SCA兼容的前提下,采用 “各取所長”的原則,用DDS的優(yōu)勢來彌補(bǔ)SCA的不足。系統(tǒng)軟件設(shè)計(jì)的總體思路是:波形組件的部署、加載和運(yùn)行完全遵守SCA規(guī)范,各個(gè)波形組件之間的數(shù)據(jù)通信不用CORBA而采用DDS。為后續(xù)描述方便,簡稱引入DDS之前的方案為舊版方案,引入DDS之后的為新版方案。
在舊版方案中,基于SCA的通信系統(tǒng)的軟件設(shè)計(jì)包括核心框架設(shè)計(jì)和基于CORBA的波形組件API設(shè)計(jì),在新版方案中變?yōu)楹诵目蚣茉O(shè)計(jì)和基于DDS的接口設(shè)計(jì)兩部分。
3.1.1 核心框架設(shè)計(jì)
新版方案保持了原有核心框架接口和域描述文件格式的不變,加載各個(gè)波形組件的流程和規(guī)則也與舊版方案一致。區(qū)別在于波形組件的構(gòu)成,各個(gè)繼承自Resource的波形組件不再實(shí)現(xiàn)getPort接口即不再對外提供實(shí)現(xiàn)數(shù)據(jù)交互功能的Port對象,同時(shí)去掉SAD (software assembly descriptor)文件中描述各個(gè)波形組件間連接信息的內(nèi)容即刪除connection標(biāo)簽,因此,核心框架加載波形應(yīng)用時(shí)將只加載并運(yùn)行各個(gè)波形組件,不會去建立波形組件之間的連接,也不會處理波形組件之間的數(shù)據(jù)同步,和數(shù)傳相關(guān)的工作都由DDS完成,軟件架構(gòu)如圖4所示。
圖4 新版方案架構(gòu)
3.1.2 DDS接口設(shè)計(jì)
組件的接口設(shè)計(jì)對于實(shí)現(xiàn)基于SCA的系統(tǒng)來說是一個(gè)比較關(guān)鍵的工作。新版方案的核心框架只負(fù)責(zé)軟件的加載和部署,因此在DDS接口設(shè)計(jì)中,需要完成接口定義、波形組件間的連接建立和數(shù)據(jù)同步這三方面的工作。
(1)接口定義
雖然SCA和DDS都是采用IDL來描述接口,但SCA的接口基于CORBA函數(shù)調(diào)用,而DDS是一種消息中間件,它只能定義消息結(jié)構(gòu),無法定義組件之間的函數(shù)接口。新版方案采用主題+I(xiàn)DL的方式解決了這個(gè)問題,函數(shù)接口是由 “函數(shù)名+參數(shù)”定義的,CORBA函數(shù)名正好對應(yīng)到DDS的主題,CORBA函數(shù)的參數(shù)對應(yīng)到DDS主題標(biāo)識的IDL數(shù)據(jù)。以設(shè)置請求發(fā)送 (request to send,RTS)的CORBA接口為例,其定義為:
新版方案將這個(gè)接口的主題定義為 “setRts”,其對應(yīng)的IDL定義為:
在新版方案中,將舊版方案中所有用來數(shù)傳通信的CORBA接口全部以這種方式替換為DDS接口。因?yàn)檫@些DDS接口都是在各個(gè)組件的代碼中實(shí)現(xiàn),并不牽涉到SCA架構(gòu),所以這不會影響到系統(tǒng)的SCA兼容性。
(2)組件之間連接建立
DDS的組件之間是位置無關(guān)的,數(shù)據(jù)交互是用 “主題”這個(gè)紐帶來實(shí)現(xiàn)即組件間的連接是DDS中間件去完成的,因此新版方案不用考慮這個(gè)問題。
(3)組件之間數(shù)據(jù)同步
因?yàn)樾掳娣桨傅暮诵目蚣芾餂]有實(shí)現(xiàn)波形組件之間的數(shù)據(jù)同步,即有可能出現(xiàn)這種情況:當(dāng)數(shù)據(jù)發(fā)送方先啟動,接收方隨后才啟動,這時(shí)就無法保證數(shù)傳過程的完整。DDS提供了一個(gè)質(zhì)量服務(wù)DurabilityQos解決了這個(gè)問題,它通過網(wǎng)絡(luò)存儲的方式保證后加入網(wǎng)絡(luò)的節(jié)點(diǎn)能接收到之前在網(wǎng)絡(luò)中發(fā)送的數(shù)據(jù)。圖5描述了DurabilityQos的一個(gè)典型應(yīng)用,可見通過使用DurabilityQos可以很容易地解決組件間的數(shù)據(jù)同步的問題。
圖5 DurabilityQos
新版方案中啟動波形的流程如圖6所示。
相對于舊版方案,新版方案有以下幾方面的改進(jìn):
(1)啟動波形的步驟減少:核心框架只需要完成波形組件加載、部署、啟動即可,無需花費(fèi)時(shí)間去完成波形組件之間連接的建立、數(shù)據(jù)的同步,這些事情都交給DDS中間件去完成了。
(2)冗余度降低:組件間采用DDS,可直接進(jìn)行點(diǎn)到點(diǎn)的通信,不需要開啟任何第三方服務(wù)器。相對于CORBA通信需要建立連接,開啟命名服務(wù),新版方案降低了系統(tǒng)的冗余度。
圖6 新版方案波形加載
(3)單個(gè)波形組件可重構(gòu):在新版方案中,波形組件和核心框架之間只有加載的接口。每個(gè)波形組件啟動后,組件只需通過 “主題”就可以完成通信功能,因此當(dāng)某一個(gè)波形組件故障時(shí),可以通過人工重啟的方式完成重構(gòu)[10]。而在舊版方案中,無法實(shí)現(xiàn)單個(gè)組件模塊的重構(gòu)。
在舊版方案環(huán)境的基礎(chǔ)上添加DDS中間件就構(gòu)成了新版方案的測試環(huán)境,DDS產(chǎn)品使用的是RTI-DDSv4.5。我們還是用FH波形作為測試用例,在波形加載速度、數(shù)傳時(shí)延、可重構(gòu)性等方面對新版方案和舊版方案進(jìn)行了綜合的評測和對比,其結(jié)果表明新版方案優(yōu)于舊版方案,見表1。
表1 對比結(jié)果
本文首先說明了在工程實(shí)踐中基于SCA構(gòu)建的通信系統(tǒng)存在的不足之處,即冗余度大、實(shí)時(shí)性低、無法故障恢復(fù)。然后介紹了造成這些短板的原因是組件之間采用CORBA進(jìn)行數(shù)據(jù)通信。接著討論了DDS技術(shù),并把DDS和CORBA做了詳細(xì)的比較,指出DDS在數(shù)據(jù)通信這個(gè)層面上優(yōu)于CORBA,分析了將DDS技術(shù)引入SCA框架的可行性。最后介紹了新版方案,并通過測試和比較證明了新版方案優(yōu)于舊版方案。
本文的創(chuàng)新點(diǎn)在于:在完全保持SCA規(guī)范兼容的前提下,用DDS來實(shí)現(xiàn)波形組件間的通信,提高了系統(tǒng)的實(shí)時(shí)性、靈活性和可靠性。
:
[1]Modular software-programmable radio consortium [R].Software Communication Architecture (Version2.2.2). Washington,JTRS Joint Program Office,2006.
[2]CHENG Feifei.Development of DSSS waveform based on software communication architecture [J].Telecommunication Engineer,2008,49 (4),65-69 (in Chinese). [陳飛飛.基于SCA的直接序列擴(kuò)頻通信波形的設(shè)計(jì)與實(shí)現(xiàn) [J].電訊技術(shù),2009,49 (4):65-69.]
[3]Object Management Group (OMG).Data distribution service for real-time system specification [S].Version1.2,2007.
[4]YAO Bin.Design and implementation of data distribution service based on DDS [J].Computer Engineering and Design,2009,30(3):619-625 (in Chinese).[姚兵.基于 DDS模型的數(shù)據(jù)分發(fā)中間件的設(shè)計(jì)與實(shí)現(xiàn) [J].計(jì)算機(jī)工程與設(shè)計(jì),2009,30(3):619-625.]
[5]Modular software-programmable radio consortium.software communication architecture (version4.0)[R].Washington,JTRS Joint Program Office,2012.
[6]LI Yaping.Application of CORBA technology for SCA system[J].Computer Engineering and Design,2008,29 (16),4200-4203 (in Chinese).[李雅萍.CORBA技術(shù)在SCA系統(tǒng)中的 應(yīng) 用 [J]. 計(jì) 算 機(jī) 工 程 與 設(shè) 計(jì),2008,29 (16):4200-4203.]
[7]ZHONG Pengfei.A runtime self-refactoring and compatible extension solution of SCA reference [J].Micro Computer Information,2009,25 (1-3):116-118 (in Chinese). [鐘鵬飛.一種運(yùn)行時(shí)可重構(gòu)的SCA規(guī)范兼容擴(kuò)展方案 [J].微計(jì)算機(jī)信息,2009,25 (1-3):116-118.]
[8]YANG Chuanshun.Research on quality of service of real-time data distribution system [J].Computer Technology and Development,2011,21 (5):231-234 (in Chinese).[楊傳順.實(shí)時(shí)數(shù)據(jù)分發(fā)系統(tǒng)的服務(wù)質(zhì)量控制的研究 [J].計(jì)算機(jī)技術(shù)與發(fā)展,2011,21 (5):231-234.]
[9]ZHAO Qiuming.Study of minimum core framework based on software communication architecture [J].Computer Measurement & Control,2010,18 (5):1145-1147 (in Chinese).[趙秋明.基于SCA的小型化核心框架研究 [J].計(jì)算機(jī)測量與控制,2010,18 (5):1145-1147.]
[10]YANG Shuhui.Research on correctness preservation during system reconfiguration in data distribution service for real-time system(DDS)[J].Ship Electronic Engineering,2009,29 (1):5-8(in Chinese).[楊曙輝.實(shí)時(shí)數(shù)據(jù)分發(fā)服務(wù)系統(tǒng)重構(gòu)正確性保證研究 [J].艦船電子工程,2009,29 (1):5-8.]