任棕詵 任雄偉
(海軍工程大學電子工程學院 武漢 430033)
DDS在分布式仿真中的應用探討*
任棕詵 任雄偉
(海軍工程大學電子工程學院 武漢 430033)
分布式仿真規模不斷擴大,仿真環境也日趨復雜,造成了網絡通信數據量的大幅度增加,需要一種高性能的實時通信技術來完成數據分發。傳統的基于客戶/服務器的通信模型已不能滿足實際需求,基于DDS的以數據為中心的通信模型逐漸成為發展方向。文中介紹了DDS的各要素,分析了DDS各方面的特性,并對RTI-DDS的應用做出了具體描述。
數據分發服務;分布式仿真;實時通信
Class NumberTP391.9
隨著分布式仿真中系統規模的擴大與復雜性的提高,需要實時、頻繁地在系統內部交換大量數據信息,這就造成了網絡數據量的大幅度增加,從而對系統的數據分發性能提出了更高要求。之前采用的高層體系結構(HLA)以運行支撐環境(RTI)為工作中心,存在性能瓶頸和可伸縮性問題,不支持服務質量(QoS),且發布/訂閱過于繁瑣,越來越不能滿足實際需求[1]。
與此同時,另一種數據分發技術DDS獲得了極大成功。對象管理組織OMG于2004年發布了第一個以數據為中心的發布/訂閱通信模型——數據分發服務(DDS)規范,并在2007年1月推出了V1.2版[2]。DDS靈活的數據通信機制允許分布式的大量節點進行異步的和實時的通信,極大地提高了通信效率,可以滿足分布式仿真對于數據分發高速、高效的要求[3]。
2.1 DDS規范
DDS主要包括主題(Topic)、域(Domain)和域成員(DomainParticipant)、發布者(Publisher)和數據寫入者(DateWriter)、訂閱者(Subscriber)和數據讀取者(DataReader)、監聽器(Listener)、條件觸發器(StatusCondition)等要素[4]。下面給出簡單介紹:
·主題:發布者與訂閱者之間通過主題(數據寫入者與數據讀取者的主題)進行匹配,具有相同主題的發布者與訂閱者可以直接進行點對點的數據傳輸,不需要中間媒介。
·域和域成員:DDS通過域來劃分邏輯網絡,域名相同的應用相互之間才能通信,這樣就可以在一個物理網絡上虛擬多個通信網絡(如圖1)。

圖1 多域系統
·發布者和數據寫入者:發布者將其數據寫入者組織起來,由數據寫入者對數據進行分發。
·訂閱者和數據讀取者:訂閱者用來組織數據讀取者,通過數據讀取者從網絡上獲得數據并傳遞給應用。
·監聽器:監聽器為DDS中間件提供了一種通知應用程序相關的異步事件的機制。
·條件觸發器:作為監聽器的補充,提供了中間件與應用程序之間的另一種同步通信模式,是基于等待的。
DDS標準化了數據交換的接口和行為,它描述了兩個層次的接口[5]:
1)以數據為中心的發布/訂閱DCPS層
DCPS是DDS的核心層,提供發布與訂閱數據的功能,使發布者能夠發布擁有的數據,訂閱者能夠訂閱感興趣的數據,建立一個不需要維護的、快捷的數據通道。
2)數據本地重構DLRL層
DLRL是DDS的可選層,建立在DCPS與應用層之間,以類的形式對DCPS層提供的服務進行了封裝,DLRL層通過這些類讓應用層可以快速地訪問數據。
2.2 DDS的特性
DDS以數據為中心,它的數據對象存在于全局數據空間中,通過全局數據空間上與數據對應的主題來關聯通信雙方(如圖2)。

圖2 DDS通信模型
DDS采用UDP/IP協議,支持一對一、一對多、多對多的通信,提供盡力傳輸(BEST_EFFORT)和可靠傳輸(RELIABLE)兩種傳輸服務,當應用程序對實時性要求高時允許通過降低可靠性來縮短時延,這時就要用到盡力傳輸方式。由于DDS不需要中心服務器,可以直接使用P2P傳輸方式,消除掉網絡中轉引起的時延,與C/S模型相比大大提高了傳輸速度。另外,利用DDS進行多點傳送,可以把單個數據包同時發送給多個分布式節點,極大地提高了大型網絡的吞吐量[6]。
DDS擴展性強,可以方便地增加節點,不會對系統造成什么影響;容錯性好,即使個別節點發生故障,系統仍然可以運轉。DDS具有高效的動態配置能力,能快速發現新的節點及其主題,舊的或者失效的節點也容易去掉。當一個域被分割時,系統也可以很快重新組合成新域,然后各自獨立工作,修復后則能恢復如初,自愈能力很獨特。
DDS用QoS策略控制服務行為,保證服務質量,它將資源的可用情況、提供方對資源的占有程度及請求方對資源的期待程度分別化為主題QoS、發布者QoS和訂閱者QoS。QoS參數虛擬了底層的通信機制,包括可靠性、等待時間、帶寬限制和資源限制等[7]。
發布者發布數據,訂閱者訂閱數據,不需要知道彼此的位置,只要兩者的QoS兼容且Topic一致就能建立連接,增加了通信的靈活性(如圖3)。

圖3 QoS對通信的影響
下面簡單介紹五個重要的QoS參數[8]:
·History(歷史記錄):控制發送隊列中的數據總量,與Durability及Reliability相關聯。
·Durability(持續性):如果創建發布者時此屬性被選中,那么將在內存中保存其發布數據的歷史記錄,保留的數據總量由History屬性控制。Durability允許后加入的訂閱者獲得在其創建之前已經發送過的數據。
·Reliability(可靠性):如果創建發布者時此屬性被選中,發布者會發送所有的數據。如果由于通信錯誤導致訂閱者不能接收到數據,就會修復該錯誤并重新發送數據。
·Deadline(時間限制):對于發布者而言,Deadline是發布者承諾更新數據的最大時間間隔;對于訂閱者而言,Deadline是期望從發布者得到更新數據的最大時間間隔。
·Liveliness(活躍性):用于檢測發布者的狀態,甚至當它沒有活躍地發送數據時也可以檢測。創建發布者時設定的Liveliness是發布者發出活躍信號的最大時間間隔。創建訂購者時設定的Liveliness是訂閱者希望確認發布者的存在的最大時間間隔。
RTI-DDS由Real-Time Innovations公司開發實現的,第一個支持DDS規范的商業產品(以前叫做NDDS)。RTI公司是DDS市場的領導公司,它實現了完整的DCPS和部分的DLRL,適用于Linux、Solaris、AIX、VxWorks、INTEGRITY、LynxOS、Windows等多種系統。
RTI-DDS不僅支持UDP,還支持TCP、共享內存等多種通信方式。RTI-DDS采用分布對稱式的體系結構,所有節點都是完全對等的,避免了瓶頸問題的出現[9]。
在分布式仿真中,以仿真引擎為數據源,將其與各平臺(包括飛機教控臺、艦艇教控臺、潛艇教控臺、兵力模擬系統等)相連接,平臺下設探測裝置、控制系統、武器等裝備模擬器,各節點裝備發布或者訂閱數據(如圖4)。

圖4 分布式仿真系統通信架構
對這些數據類型的定義,RTI提供了三種方法[10]:
1)使用中間件內嵌的數據類型,適用于簡單的數據類型需求;
2)通過Code Generator(rtiddsgen)來定義,它可以在編譯時將描述性語言轉換成特定的編程語言;
3)在運行時通過編程來定義,適用于有動態數據描述需求以及數據改變頻繁或不能提前知道的應用程序。
通過設定域,不僅單平臺的裝備可以通信,多個平臺的裝備之間也可以通信。一個訂閱者可以在全局數據空間中找到多個相同主題,實現一對多的連接,一個連接失敗可以換用另一個,大大降低了網絡延遲,圖4中的域0就是這種情況,指控模擬器可以訂閱由多個傳感器發布的主題為“目標狀態”的數據。
發布方應用程序與訂閱方應用程序通過DDS中間件進行交互,發布方按照以下步驟發送數據(以域1為例):
1)在火控模擬器上創建一個域成員;
2)通過域成員注冊用戶數據類型Command-DataType;
3)用注冊的數據類型名稱創建主題“控制命令”;
4)利用域成員創建一個發布者(可選);
5)通過發布者或域成員為主題創建一個數據寫入者;
6)將普通的數據寫入者映射成指定類型的數據寫入者CommandDataWriter;
7)將要發送的數據存儲在一個類型為CommandDataType的變量Command中;
8)調用CommandDataWriter的write(),將變量Command的值存儲在DDS內部緩沖器中;
9)當有匹配的數據讀取者時,依據發布者和數據寫入者的QoS策略設定的標準發送數據。
類似地,訂閱方接收數據的步驟為:
1)在導彈模擬器上創建一個域成員;
2)通過域成員注冊用戶數據類型Command-DataType;
3)用注冊的數據類型名稱創建主題“控制命令”;
4)利用域成員創建一個訂閱者(可選);
5)通過訂閱者或域成員為主題創建一個數據讀取者;
6)將普通的數據讀取者映射成指定類型的數據讀取者CommandDataReader;
7)安裝監聽器或者條件觸發器(可選);8)通過調用CommandDataReader的read()或take()訪問接收隊列中的數據。
通過這種機制,各節點之間的通信得以建立,解決了分布式仿真的數據分發問題。這種以數據為中心的通信模式能夠提供各種詳細的參數,例如粒度、發布的速率、訂閱的速率、數據有效期等。這些QoS參數使得分布式仿真程序可以支持復雜多變的數據流要求,大大增加了通信的靈活性[11]。以水面艦艇為例,當敵方發射導彈攻擊我艦時,由于目標速度較快,需要對目標進行實時跟蹤,這時就應該把Deadline的值設小一點,以便訂閱方快速接收更新的數據,及時進行反擊。
大規模的分布式仿真系統催生了對低延遲、高吞吐量數據分發的需求,而DDS作為專門為實時系統設計的中間件無疑是不錯的選擇。
目前DDS已經廣泛應用到了美國陸、海、空、天各個領域,并發揮了重要作用。而國內的相關研究與應用范圍還很有限,下一步工作中應通過實驗測試一下DDS在不同網絡環境下的性能,以此來指導實際應用。[1]康鳳舉,楊惠珍,高立娥,等.現代仿真技術與應用[M].第2版.北京:國防工業出版社,2010:251-263.
[2]張大海,賴蘭劍,陳鼎才.DDS在分布式系統仿真中的應用[J].計算機技術與發展,2011,21(3):250-253.
[3]程雄,向慧.對數據發布服務標準基本要素的研究[J].計算機與數字工程,2007,35(8):53-56.
[4]OMG.Data Distribution Service for Real-Time Systems Version 1.2[DB/OL].[2015-02-03].http://www.omg.org/spec/DDS.
[5]張勝,許慶華,任建華.數據分發服務研究[A]//楊義先.2009年研究生學術交流會通信與信息技術論文集[C]//北京:國防工業出版社,2009:153-155.
[6]裘楷,沈棟,李娜,等.基于DCPS模型的數據分發服務DDS的研究[J].電子科技,2006(11):68-71.
[7]謝蓓,劉毅,曹萬華,等.實時系統數據分布服務DDS技術綜述[J].艦船電子工程,2006(2):16-19.
[8]謝陽杰,吳家鑄.數據分發服務DDS的研究[A].見:劉曉平.全國第19屆計算機技術與應用(CACIS)學術會議論文集(上冊)[C]//合肥:中國科學技術大學出版社,2008:38-43.
[9]盧傳富,蔡志明,夏學知.數據分發服務體系結構的研究[J].計算機與數字工程,2008,36(5):67-69.
[10]Real-Time Innovations,Inc.RTI Connext DDS Core Libraries and Utilities User's Manual Version 5.1.0[EB/OL].[2015-02-03].http://community.rti.com.
[11]孫昊翔.DDS和以數據為中心的通信方式[J].科技和產業,2013,13(7):153-158.
Application of DDS in Distributed Simulation
REN Zongshen REN Xiongwei
(College of Electronics Engineering,Naval University of Engineering,Wuhan 430033)
The continuously extending scale of distributed simulation and increasingly sophisticated simulation environment cause the increase in network traffic data.As a result,a high performance real-time communication technology is in demand.Traditional communication models based on client/server cannot meet the actual demand now,data-centric communication model based on DDS gradually becomes development direction.This article introduces all elements of DDS,and analyzes the characteristics of DDS in all aspects,and makes a detailed description of the application of RTI-DDS.
DDS,distributed simulation,real-time communication
TP391.9DOI:10.3969/j.issn.1672-9730.2015.11.029
2015年5月14日,
2015年6月30日
任棕詵,男,碩士研究生,研究方向:作戰系統工程。