馮劍塵 柳中華
(92493部隊 葫蘆島 125000)
基于OpenDDS的中間件實時通信機制擴展設計
馮劍塵 柳中華
(92493部隊 葫蘆島 125000)
在仿真試驗領域,隨著參試系統實時性和集成程度的提高,需對通信中間件軟件進行實時擴展改造,論文的目標是依托OpenDDS技術,對基于ACE結構的中間件進行實時通信機制擴展,使虛實合成試驗系統在傳輸中能夠快速高效地按需配置,提高中間件信息傳輸的實時性,擴展中間件軟件對實時仿真、試驗領域的支持。
DDS; 中間件; 實時通信機制擴展
Class Number TP391
在仿真、測試與虛擬試驗領域,伴隨著HLA、TENA等技術的廣泛應用,系統內部及系統間的信息傳輸對于實時性的要求越來越高,因此,建立實時性強、可靠性高、安全性好的信息傳輸中間件,提高系統互聯能力,滿足系統內各種信息交換和共享需求,并解決應用軟件之間的數據共享和集成問題是該領域亟待解決的問題。
本文的目標是依托DDS(Data Distribution Service)技術進行基于ACE架構的中間件實時通信機制擴展研究,提高中間件信息傳輸的實時性,擴展傳輸體系對實時仿真、試驗領域的支持。
DDS具有松散耦合、處理復雜數據流能力強、分發(fā)效率高、容錯性好以及動態(tài)可配置等特點。DDS定義了以數據為中心的發(fā)布/訂閱(Data Centric Publish-Subscribe,DCPS)機制[1],以數據為中心的發(fā)布/訂閱模型基于全局數據空間(Global Data Space)的概念,如圖1所示。
在DDS中所有對該空間中的數據感興趣的應用程序都可以接入。向這個數據空間提供信息的應用程序叫做發(fā)布者(Publisher),它公布自己所提供數據的屬性和類型;從數據空間中獲取數據的應用程序叫做訂閱者(Subscriber),它公布自己希望接收的數據的屬性和類型。發(fā)布者和訂閱者并不需要知道彼此的位置,只要它們數據的屬性和類型能夠成功匹配,它們之間就會成功建立一個數據收發(fā)通道。每當發(fā)布者將新數據發(fā)送到這個全局數據空間,中間件就會把信息轉發(fā)給所有感興趣的訂閱者,訂閱者就可以從全局數據空間中去獲取自己感興趣的數據[2]。
圖1 以數據為中心的發(fā)布/訂閱模型
2.1 DDS規(guī)范與體系結構
DDS規(guī)范包括域參與者、發(fā)布者、訂閱者、數據寫入者、數據讀取者、主題和QoS(Quality of Service)等,其體系結構如圖2所示。
圖2 DDS體系結構
DDS使用域來劃分數據通信的子空間,隸屬于同一個域的各個域參與者(Participant)可以互相通信,每個域參與者里面可以有一個或多個發(fā)布者或訂閱者,每個發(fā)布者里面可以有一個或多個數據寫入者(DataWriter),每個訂閱者里面也可以有一個或多個數據讀取者(DataReader)。數據寫入者通過數據通道將數據發(fā)送到相應的數據讀取者處,數據讀取者則從數據通道中獲取自己感興趣的數據,數據寫入者和數據讀取者通過主題(Topic)和QoS進行匹配和建立聯系,一般每個數據寫入者或數據讀取者只寫入或讀取一種類型的數據。
2.2 DCPS行為模式與QoS
DCPS行為模式包含發(fā)布操作和訂閱操作兩部分。發(fā)布操作定義了從應用更新數據到將數據分發(fā)到訂閱者的過程。訂閱操作定義了從接收數據到將數據傳遞到應用的過程。由于數據發(fā)布服務的目標是使應用能獲取正確數據,為了滿足應用對數據需求的多樣性,DCPS設計了兩級過濾機制:第一級是建立發(fā)布者和訂閱者間供需關系,發(fā)布者依據供需關系進行數據分發(fā);第二級是在訂閱過程中建立內容過濾機制,應用可通過過濾器(filter)獲取滿足特定要求的數據。
在DCPS行為模式中,QoS參數控制了DDS模型的底層的通信機制,并作為發(fā)布方和訂購方之間的協定來確定發(fā)布方服務方式、訂購方服務等級,并判斷提供者能否滿足要求,然后建立通信連接,或者給出不相容錯誤提示,提高通信質量。
3.1 DDS產品選擇
DDS自OMG發(fā)布相關標準以來己得到許多提供商和最終用戶的支持,目前已經有的發(fā)布的產品有[3]:
1) RTI DDS:由美國RTI公司開發(fā),目前全球范圍內超過500個項目的廣泛應用和部署,支持Windows、Linux、VxWorks等多種操作系統,由于是商用軟件,成本相對較高。
2) OpenSplice DDS:最初由Thales開發(fā),在2006年被PT(Prism Technologies)獲得,主要的應用在Tacticos項目(Thales的戰(zhàn)斗管理系統)。
3) OpenDDS:對象管理組織OMG的實時數據分發(fā)系統的C++開源實現。OpenDDS本身使用C++開發(fā),并通過JNDI技術兼容JMS標準。OpenDDS為了實現跨平臺特性而構建于ACE抽象層。
4) MilSoftDDS:土耳其的MILSOFT Software Technologies公司開發(fā)的DDS應用軟件。
由于基于ACE通訊框架的中間件與OpenDDS底層的ACE+TAO機制可以兼容[4~5]。此外,從商業(yè)角度考慮,采用OpenDDS這種免費開源的數據分發(fā)服務軟件也有利于系統接口和支撐軟件平臺的推廣應用。
3.2 DDS應用模式選擇
OpenDDS與現有中間件在功能上都位于負責信息傳輸的中間件層,應用OpenDDS有如下兩種應用模式[6]:
應用模式一:使用OpenDDS替代原有基于ACE架構中間件,資源直接調用OpenDDS進行數據傳輸。該模式應用時需要根據系統和資源的具體情況進行域、主題、訂閱/發(fā)布機制、數據寫入/讀取代碼的編寫。
應用模式二:使用OpenDDS作為原有中間件的一種底層通信機制,保留現有的訂閱/發(fā)布機制和標準接口服務,該模式需要對OpenDDS強數據類型進行通用化處理。
兩種應用模式下的中間件層次如圖3所示。
圖3 基于DDS的中間件應用模式
應用模式一下,直接應用OpenDDS替代中間件作為底層通信框架會使得中間件喪失靈活性、重用性和可擴展性,增大網絡開銷,不利于其發(fā)展和推廣應用。
應用模式二下,主要缺點是由于需要對OpenDDS強數據類型進行通用化處理,所以會犧牲一定的信息傳輸實時性,但具有以下優(yōu)點[7]:
1) 保持中間件接口不變,現有的各種資源無需做任何修改即可應用,繼承了現有平臺免編程系統構建的模式。
2) 現有的基于內容的訂閱/發(fā)布模式得以保留,支持對主題下的部分內容進行興趣訂閱,提高信息傳輸效率。
3) 現有的對象模型結構可繼續(xù)使用,支持繼承和組合關系。
綜上所述,本文采用應用模式二進行開發(fā),即在保留現有的訂閱/發(fā)布機制和標準接口服務的基礎上,使用OpenDDS作為原中間件的一種底層通信機制。
圖4給出了基于DDS的中間件通信框架,圖中陰影區(qū)域標出的為OpenDDS提供的功能模塊。
4.1 軟件總體結構
為保證原中間件通用接口不發(fā)生變化,采用插件模式引入DDS作為底層通信設施,每個系統應用(對應一個試驗方案文件)會產生一個插件實現文件(DLL格式)。同時,為保證原中間件不經過代碼編譯過程即可使用插件實現文件,插件的外部接口必須符合特定標準[8~9]。
圖4 基于OpenDDS的中間件通信框架
由于DDS在發(fā)布/訂閱、數據寫入和讀出過程中的強類型要求,即要求為每個數據結構產生對應的類型對象、數據讀對象和數據寫對象,因此根據每個試驗方案中的數據結構(對象模型)自動生成上述對應的對象代碼并自動進行后臺編碼編譯就是必須的要求。
基于上述要求,擴展改造的總體結構如圖5所示。
圖5 軟件總體結構
整個系統軟件由自動代碼生成模塊、自動代碼編譯模塊、DDS插件模板組成,最終目標文件是基于DDS的試驗方案運行插件(DLL)。在系統運行前,首先需要根據試驗方案文件(sys文件,由中間件生成)進行自動代碼生成,然后通過自動代碼編譯模塊加載生成的工程代碼和DDS插件模板,最終生成目標文件。
在系統運行中,軟件通過加載生成的基于DDS的試驗方案運行插件實現基于DDS的信息傳輸過程,在該過程中基于DDS的試驗方案運行插件需要通過加載試驗方案文件自動執(zhí)行聲明管理服務和對象管理服務。
4.2 DDS插件模板
圖6為DDS插件模板類圖,主要包括DDS試驗方案解析器、DDS服務器、DDS數據接收器和DDS數據管理器組成。
4.3 自動代碼生成模塊
自動代碼生成模塊根據平臺軟件生成的試驗方案文件(sys),生成DDS系統信息傳輸所需要的IDL文件、數據類型注冊代碼、數據寫入代碼和數據讀取代碼,圖7給出了自動代碼生成過程。
圖6 DDS插件模板類圖
圖7 自動代碼生成過程
4.4 自動代碼編譯模塊
DDS插件模板在經過自動代碼生成模塊處理后,生成若干分散的源文件和頭文件(包括IDL文件、DDS服務器類、DDS數據管理器類、DDS數據接收器類、DDS試驗方案解析器類、DDS服務接口文件等),若中間件直接調用生成的文件則需要其支持編譯模式。為保證中間件現有主程序不需要針對具體系統進行編譯,采用可動態(tài)加載的DLL模式封裝上述生成的文件。為將上述分散文件編譯為DLL,需要在自動代碼編譯模塊為其建立獨立的工程文件,配置編譯、目標參數等過程[10]。
整個軟件在應用時分為兩個模塊,一個是DDS自動代碼生成及自動代碼編譯模塊,該模塊是標準C語言接口的動態(tài)鏈接庫(DLL),提供由試驗方案文件生成對應的基于DDS的試驗方案插件的功能。另一個模塊即所生成的基于DDS的試驗方案插件(其存在形式也是標準C語言接口的動態(tài)鏈接庫),該模塊由中間件加載使用,支持底層為DDS的信息傳輸功能,整個系統的應用模式如圖8所示。
圖8 系統的應用模式
中間件實時通信機制擴展應在現有的體系結構下進行,以現有的試驗方案文件為運行支持文件,遵循免編程的系統構建方式。擴展后的中間件接口保持不變,能夠支持現有的基于ACE和新擴展的基于DDS的通信機制,能夠實現基于主題和基于內容的信息發(fā)布/訂閱功能,并通過可擴展的QoS策略控制信息傳遞質量。
1) 免編程基于DDS的信息交互機制,集自動代碼生成和自動代碼編譯于一體。在保證體系結構不變的條件下,徹底解決了DDS平臺的應用問題。
2) 多系統多實例并行運行,支持基于內容與基于主題的發(fā)布/訂閱模式,數據傳輸效率高,應用方便。
[1] 裘楷,沈棟,李娜,等.基于DCPS模型的數據分發(fā)服務DDS的研究[J].電子科技,2006,206(12):70-71.
[2] 姚兵,蔡婷,李峻林,等.基于DDS模型的數據分發(fā)中間件的設計與實現[J].計算機工程與設計,2009,30(3):620-621.
[3] OMG Data Distribution Service for Realtime Systems Version 1.2[R]. Feb,2007.
[4] TAO Developers Guide Excerpt Object Computing[R]. Nov,2007.
[5] OMG. Real-time CORBA Specification[R]. Version1.2, Jan,2005.
[6] 張大海,賴蘭劍,陳鼎才.DDS在分布式系統仿真中的應用[J].計算機技術與發(fā)展,2011,21(3):251-252.
[7] 歐陽軍,蔡志明,王希敏.基于DDS中間件的性能測試[J].2011,209(11):137-138.
[8] 胡鈺銑,王希敏.基于實時CORBA與DDS的發(fā)布/訂閱系統的設計與實現[D].武漢:海軍工程大學碩士學位論文,2007:78-87.
[9] 俞嶺,彭艦,劉錦德.CORBA中間件的實時擴展[J].計算機應用研究,2003,9:92-93.
[10] 費洪曉,歐陽偉.企業(yè)CORBA中間件的性能分析及優(yōu)化方法[J].計算機技術與發(fā)展,2009,19(3):13.
Design of Real-time Communication Mechanism of Middleware Based on OpenDDS
FENG Jianchen LIU Zhonghua
(No. 92493 Troops of PLA, Huludao 125000)
With real-time and integration degree of system improving in test range, the real-time performance on the middleware communications is needed to expand. This paper uses OpenDDS technique to expand the middleware based on the ACE structure, making the experimental system can be quickly and efficiently in the transmission of the virtual-real area, increasing the middleware information deliver efficiency, which expands support of realm in the emulation mode and test area for middleware based system structure.
DDS, middleware, real-time communication mechanism
2016年8月10日,
2016年9月30日
馮劍塵,男,碩士,高級工程師,研究方向:武器裝備試驗總體。柳中華,男,碩士,工程師,研究方向:導彈武器系統仿真。
TP391
10.3969/j.issn.1672-9730.2017.02.024