任棕詵 任雄偉
(海軍工程大學(xué)電子工程學(xué)院 武漢 430033)
DDS在分布式仿真中的應(yīng)用探討*
任棕詵 任雄偉
(海軍工程大學(xué)電子工程學(xué)院 武漢 430033)
分布式仿真規(guī)模不斷擴(kuò)大,仿真環(huán)境也日趨復(fù)雜,造成了網(wǎng)絡(luò)通信數(shù)據(jù)量的大幅度增加,需要一種高性能的實(shí)時(shí)通信技術(shù)來(lái)完成數(shù)據(jù)分發(fā)。傳統(tǒng)的基于客戶/服務(wù)器的通信模型已不能滿足實(shí)際需求,基于DDS的以數(shù)據(jù)為中心的通信模型逐漸成為發(fā)展方向。文中介紹了DDS的各要素,分析了DDS各方面的特性,并對(duì)RTI-DDS的應(yīng)用做出了具體描述。
數(shù)據(jù)分發(fā)服務(wù);分布式仿真;實(shí)時(shí)通信
Class NumberTP391.9
隨著分布式仿真中系統(tǒng)規(guī)模的擴(kuò)大與復(fù)雜性的提高,需要實(shí)時(shí)、頻繁地在系統(tǒng)內(nèi)部交換大量數(shù)據(jù)信息,這就造成了網(wǎng)絡(luò)數(shù)據(jù)量的大幅度增加,從而對(duì)系統(tǒng)的數(shù)據(jù)分發(fā)性能提出了更高要求。之前采用的高層體系結(jié)構(gòu)(HLA)以運(yùn)行支撐環(huán)境(RTI)為工作中心,存在性能瓶頸和可伸縮性問(wèn)題,不支持服務(wù)質(zhì)量(QoS),且發(fā)布/訂閱過(guò)于繁瑣,越來(lái)越不能滿足實(shí)際需求[1]。
與此同時(shí),另一種數(shù)據(jù)分發(fā)技術(shù)DDS獲得了極大成功。對(duì)象管理組織OMG于2004年發(fā)布了第一個(gè)以數(shù)據(jù)為中心的發(fā)布/訂閱通信模型——數(shù)據(jù)分發(fā)服務(wù)(DDS)規(guī)范,并在2007年1月推出了V1.2版[2]。DDS靈活的數(shù)據(jù)通信機(jī)制允許分布式的大量節(jié)點(diǎn)進(jìn)行異步的和實(shí)時(shí)的通信,極大地提高了通信效率,可以滿足分布式仿真對(duì)于數(shù)據(jù)分發(fā)高速、高效的要求[3]。
2.1 DDS規(guī)范
DDS主要包括主題(Topic)、域(Domain)和域成員(DomainParticipant)、發(fā)布者(Publisher)和數(shù)據(jù)寫入者(DateWriter)、訂閱者(Subscriber)和數(shù)據(jù)讀取者(DataReader)、監(jiān)聽器(Listener)、條件觸發(fā)器(StatusCondition)等要素[4]。下面給出簡(jiǎn)單介紹:
·主題:發(fā)布者與訂閱者之間通過(guò)主題(數(shù)據(jù)寫入者與數(shù)據(jù)讀取者的主題)進(jìn)行匹配,具有相同主題的發(fā)布者與訂閱者可以直接進(jìn)行點(diǎn)對(duì)點(diǎn)的數(shù)據(jù)傳輸,不需要中間媒介。
·域和域成員:DDS通過(guò)域來(lái)劃分邏輯網(wǎng)絡(luò),域名相同的應(yīng)用相互之間才能通信,這樣就可以在一個(gè)物理網(wǎng)絡(luò)上虛擬多個(gè)通信網(wǎng)絡(luò)(如圖1)。
圖1 多域系統(tǒng)
·發(fā)布者和數(shù)據(jù)寫入者:發(fā)布者將其數(shù)據(jù)寫入者組織起來(lái),由數(shù)據(jù)寫入者對(duì)數(shù)據(jù)進(jìn)行分發(fā)。
·訂閱者和數(shù)據(jù)讀取者:訂閱者用來(lái)組織數(shù)據(jù)讀取者,通過(guò)數(shù)據(jù)讀取者從網(wǎng)絡(luò)上獲得數(shù)據(jù)并傳遞給應(yīng)用。
·監(jiān)聽器:監(jiān)聽器為DDS中間件提供了一種通知應(yīng)用程序相關(guān)的異步事件的機(jī)制。
·條件觸發(fā)器:作為監(jiān)聽器的補(bǔ)充,提供了中間件與應(yīng)用程序之間的另一種同步通信模式,是基于等待的。
DDS標(biāo)準(zhǔn)化了數(shù)據(jù)交換的接口和行為,它描述了兩個(gè)層次的接口[5]:
1)以數(shù)據(jù)為中心的發(fā)布/訂閱DCPS層
DCPS是DDS的核心層,提供發(fā)布與訂閱數(shù)據(jù)的功能,使發(fā)布者能夠發(fā)布擁有的數(shù)據(jù),訂閱者能夠訂閱感興趣的數(shù)據(jù),建立一個(gè)不需要維護(hù)的、快捷的數(shù)據(jù)通道。
2)數(shù)據(jù)本地重構(gòu)DLRL層
DLRL是DDS的可選層,建立在DCPS與應(yīng)用層之間,以類的形式對(duì)DCPS層提供的服務(wù)進(jìn)行了封裝,DLRL層通過(guò)這些類讓應(yīng)用層可以快速地訪問(wèn)數(shù)據(jù)。
2.2 DDS的特性
DDS以數(shù)據(jù)為中心,它的數(shù)據(jù)對(duì)象存在于全局?jǐn)?shù)據(jù)空間中,通過(guò)全局?jǐn)?shù)據(jù)空間上與數(shù)據(jù)對(duì)應(yīng)的主題來(lái)關(guān)聯(lián)通信雙方(如圖2)。
圖2 DDS通信模型
DDS采用UDP/IP協(xié)議,支持一對(duì)一、一對(duì)多、多對(duì)多的通信,提供盡力傳輸(BEST_EFFORT)和可靠傳輸(RELIABLE)兩種傳輸服務(wù),當(dāng)應(yīng)用程序?qū)?shí)時(shí)性要求高時(shí)允許通過(guò)降低可靠性來(lái)縮短時(shí)延,這時(shí)就要用到盡力傳輸方式。由于DDS不需要中心服務(wù)器,可以直接使用P2P傳輸方式,消除掉網(wǎng)絡(luò)中轉(zhuǎn)引起的時(shí)延,與C/S模型相比大大提高了傳輸速度。另外,利用DDS進(jìn)行多點(diǎn)傳送,可以把單個(gè)數(shù)據(jù)包同時(shí)發(fā)送給多個(gè)分布式節(jié)點(diǎn),極大地提高了大型網(wǎng)絡(luò)的吞吐量[6]。
DDS擴(kuò)展性強(qiáng),可以方便地增加節(jié)點(diǎn),不會(huì)對(duì)系統(tǒng)造成什么影響;容錯(cuò)性好,即使個(gè)別節(jié)點(diǎn)發(fā)生故障,系統(tǒng)仍然可以運(yùn)轉(zhuǎn)。DDS具有高效的動(dòng)態(tài)配置能力,能快速發(fā)現(xiàn)新的節(jié)點(diǎn)及其主題,舊的或者失效的節(jié)點(diǎn)也容易去掉。當(dāng)一個(gè)域被分割時(shí),系統(tǒng)也可以很快重新組合成新域,然后各自獨(dú)立工作,修復(fù)后則能恢復(fù)如初,自愈能力很獨(dú)特。
DDS用QoS策略控制服務(wù)行為,保證服務(wù)質(zhì)量,它將資源的可用情況、提供方對(duì)資源的占有程度及請(qǐng)求方對(duì)資源的期待程度分別化為主題QoS、發(fā)布者QoS和訂閱者QoS。QoS參數(shù)虛擬了底層的通信機(jī)制,包括可靠性、等待時(shí)間、帶寬限制和資源限制等[7]。
發(fā)布者發(fā)布數(shù)據(jù),訂閱者訂閱數(shù)據(jù),不需要知道彼此的位置,只要兩者的QoS兼容且Topic一致就能建立連接,增加了通信的靈活性(如圖3)。
圖3 QoS對(duì)通信的影響
下面簡(jiǎn)單介紹五個(gè)重要的QoS參數(shù)[8]:
·History(歷史記錄):控制發(fā)送隊(duì)列中的數(shù)據(jù)總量,與Durability及Reliability相關(guān)聯(lián)。
·Durability(持續(xù)性):如果創(chuàng)建發(fā)布者時(shí)此屬性被選中,那么將在內(nèi)存中保存其發(fā)布數(shù)據(jù)的歷史記錄,保留的數(shù)據(jù)總量由History屬性控制。Durability允許后加入的訂閱者獲得在其創(chuàng)建之前已經(jīng)發(fā)送過(guò)的數(shù)據(jù)。
·Reliability(可靠性):如果創(chuàng)建發(fā)布者時(shí)此屬性被選中,發(fā)布者會(huì)發(fā)送所有的數(shù)據(jù)。如果由于通信錯(cuò)誤導(dǎo)致訂閱者不能接收到數(shù)據(jù),就會(huì)修復(fù)該錯(cuò)誤并重新發(fā)送數(shù)據(jù)。
·Deadline(時(shí)間限制):對(duì)于發(fā)布者而言,Deadline是發(fā)布者承諾更新數(shù)據(jù)的最大時(shí)間間隔;對(duì)于訂閱者而言,Deadline是期望從發(fā)布者得到更新數(shù)據(jù)的最大時(shí)間間隔。
·Liveliness(活躍性):用于檢測(cè)發(fā)布者的狀態(tài),甚至當(dāng)它沒有活躍地發(fā)送數(shù)據(jù)時(shí)也可以檢測(cè)。創(chuàng)建發(fā)布者時(shí)設(shè)定的Liveliness是發(fā)布者發(fā)出活躍信號(hào)的最大時(shí)間間隔。創(chuàng)建訂購(gòu)者時(shí)設(shè)定的Liveliness是訂閱者希望確認(rèn)發(fā)布者的存在的最大時(shí)間間隔。
RTI-DDS由Real-Time Innovations公司開發(fā)實(shí)現(xiàn)的,第一個(gè)支持DDS規(guī)范的商業(yè)產(chǎn)品(以前叫做NDDS)。RTI公司是DDS市場(chǎng)的領(lǐng)導(dǎo)公司,它實(shí)現(xiàn)了完整的DCPS和部分的DLRL,適用于Linux、Solaris、AIX、VxWorks、INTEGRITY、LynxOS、Windows等多種系統(tǒng)。
RTI-DDS不僅支持UDP,還支持TCP、共享內(nèi)存等多種通信方式。RTI-DDS采用分布對(duì)稱式的體系結(jié)構(gòu),所有節(jié)點(diǎn)都是完全對(duì)等的,避免了瓶頸問(wèn)題的出現(xiàn)[9]。
在分布式仿真中,以仿真引擎為數(shù)據(jù)源,將其與各平臺(tái)(包括飛機(jī)教控臺(tái)、艦艇教控臺(tái)、潛艇教控臺(tái)、兵力模擬系統(tǒng)等)相連接,平臺(tái)下設(shè)探測(cè)裝置、控制系統(tǒng)、武器等裝備模擬器,各節(jié)點(diǎn)裝備發(fā)布或者訂閱數(shù)據(jù)(如圖4)。
圖4 分布式仿真系統(tǒng)通信架構(gòu)
對(duì)這些數(shù)據(jù)類型的定義,RTI提供了三種方法[10]:
1)使用中間件內(nèi)嵌的數(shù)據(jù)類型,適用于簡(jiǎn)單的數(shù)據(jù)類型需求;
2)通過(guò)Code Generator(rtiddsgen)來(lái)定義,它可以在編譯時(shí)將描述性語(yǔ)言轉(zhuǎn)換成特定的編程語(yǔ)言;
3)在運(yùn)行時(shí)通過(guò)編程來(lái)定義,適用于有動(dòng)態(tài)數(shù)據(jù)描述需求以及數(shù)據(jù)改變頻繁或不能提前知道的應(yīng)用程序。
通過(guò)設(shè)定域,不僅單平臺(tái)的裝備可以通信,多個(gè)平臺(tái)的裝備之間也可以通信。一個(gè)訂閱者可以在全局?jǐn)?shù)據(jù)空間中找到多個(gè)相同主題,實(shí)現(xiàn)一對(duì)多的連接,一個(gè)連接失敗可以換用另一個(gè),大大降低了網(wǎng)絡(luò)延遲,圖4中的域0就是這種情況,指控模擬器可以訂閱由多個(gè)傳感器發(fā)布的主題為“目標(biāo)狀態(tài)”的數(shù)據(jù)。
發(fā)布方應(yīng)用程序與訂閱方應(yīng)用程序通過(guò)DDS中間件進(jìn)行交互,發(fā)布方按照以下步驟發(fā)送數(shù)據(jù)(以域1為例):
1)在火控模擬器上創(chuàng)建一個(gè)域成員;
2)通過(guò)域成員注冊(cè)用戶數(shù)據(jù)類型Command-DataType;
3)用注冊(cè)的數(shù)據(jù)類型名稱創(chuàng)建主題“控制命令”;
4)利用域成員創(chuàng)建一個(gè)發(fā)布者(可選);
5)通過(guò)發(fā)布者或域成員為主題創(chuàng)建一個(gè)數(shù)據(jù)寫入者;
6)將普通的數(shù)據(jù)寫入者映射成指定類型的數(shù)據(jù)寫入者CommandDataWriter;
7)將要發(fā)送的數(shù)據(jù)存儲(chǔ)在一個(gè)類型為CommandDataType的變量Command中;
8)調(diào)用CommandDataWriter的write(),將變量Command的值存儲(chǔ)在DDS內(nèi)部緩沖器中;
9)當(dāng)有匹配的數(shù)據(jù)讀取者時(shí),依據(jù)發(fā)布者和數(shù)據(jù)寫入者的QoS策略設(shè)定的標(biāo)準(zhǔn)發(fā)送數(shù)據(jù)。
類似地,訂閱方接收數(shù)據(jù)的步驟為:
1)在導(dǎo)彈模擬器上創(chuàng)建一個(gè)域成員;
2)通過(guò)域成員注冊(cè)用戶數(shù)據(jù)類型Command-DataType;
3)用注冊(cè)的數(shù)據(jù)類型名稱創(chuàng)建主題“控制命令”;
4)利用域成員創(chuàng)建一個(gè)訂閱者(可選);
5)通過(guò)訂閱者或域成員為主題創(chuàng)建一個(gè)數(shù)據(jù)讀取者;
6)將普通的數(shù)據(jù)讀取者映射成指定類型的數(shù)據(jù)讀取者CommandDataReader;
7)安裝監(jiān)聽器或者條件觸發(fā)器(可選);8)通過(guò)調(diào)用CommandDataReader的read()或take()訪問(wèn)接收隊(duì)列中的數(shù)據(jù)。
通過(guò)這種機(jī)制,各節(jié)點(diǎn)之間的通信得以建立,解決了分布式仿真的數(shù)據(jù)分發(fā)問(wèn)題。這種以數(shù)據(jù)為中心的通信模式能夠提供各種詳細(xì)的參數(shù),例如粒度、發(fā)布的速率、訂閱的速率、數(shù)據(jù)有效期等。這些QoS參數(shù)使得分布式仿真程序可以支持復(fù)雜多變的數(shù)據(jù)流要求,大大增加了通信的靈活性[11]。以水面艦艇為例,當(dāng)敵方發(fā)射導(dǎo)彈攻擊我艦時(shí),由于目標(biāo)速度較快,需要對(duì)目標(biāo)進(jìn)行實(shí)時(shí)跟蹤,這時(shí)就應(yīng)該把Deadline的值設(shè)小一點(diǎn),以便訂閱方快速接收更新的數(shù)據(jù),及時(shí)進(jìn)行反擊。
大規(guī)模的分布式仿真系統(tǒng)催生了對(duì)低延遲、高吞吐量數(shù)據(jù)分發(fā)的需求,而DDS作為專門為實(shí)時(shí)系統(tǒng)設(shè)計(jì)的中間件無(wú)疑是不錯(cuò)的選擇。
目前DDS已經(jīng)廣泛應(yīng)用到了美國(guó)陸、海、空、天各個(gè)領(lǐng)域,并發(fā)揮了重要作用。而國(guó)內(nèi)的相關(guān)研究與應(yīng)用范圍還很有限,下一步工作中應(yīng)通過(guò)實(shí)驗(yàn)測(cè)試一下DDS在不同網(wǎng)絡(luò)環(huán)境下的性能,以此來(lái)指導(dǎo)實(shí)際應(yīng)用。[1]康鳳舉,楊惠珍,高立娥,等.現(xiàn)代仿真技術(shù)與應(yīng)用[M].第2版.北京:國(guó)防工業(yè)出版社,2010:251-263.
[2]張大海,賴蘭劍,陳鼎才.DDS在分布式系統(tǒng)仿真中的應(yīng)用[J].計(jì)算機(jī)技術(shù)與發(fā)展,2011,21(3):250-253.
[3]程雄,向慧.對(duì)數(shù)據(jù)發(fā)布服務(wù)標(biāo)準(zhǔn)基本要素的研究[J].計(jì)算機(jī)與數(shù)字工程,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]張勝,許慶華,任建華.數(shù)據(jù)分發(fā)服務(wù)研究[A]//楊義先.2009年研究生學(xué)術(shù)交流會(huì)通信與信息技術(shù)論文集[C]//北京:國(guó)防工業(yè)出版社,2009:153-155.
[6]裘楷,沈棟,李娜,等.基于DCPS模型的數(shù)據(jù)分發(fā)服務(wù)DDS的研究[J].電子科技,2006(11):68-71.
[7]謝蓓,劉毅,曹萬(wàn)華,等.實(shí)時(shí)系統(tǒng)數(shù)據(jù)分布服務(wù)DDS技術(shù)綜述[J].艦船電子工程,2006(2):16-19.
[8]謝陽(yáng)杰,吳家鑄.數(shù)據(jù)分發(fā)服務(wù)DDS的研究[A].見:劉曉平.全國(guó)第19屆計(jì)算機(jī)技術(shù)與應(yīng)用(CACIS)學(xué)術(shù)會(huì)議論文集(上冊(cè))[C]//合肥:中國(guó)科學(xué)技術(shù)大學(xué)出版社,2008:38-43.
[9]盧傳富,蔡志明,夏學(xué)知.數(shù)據(jù)分發(fā)服務(wù)體系結(jié)構(gòu)的研究[J].計(jì)算機(jī)與數(shù)字工程,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和以數(shù)據(jù)為中心的通信方式[J].科技和產(chǎn)業(yè),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日
任棕詵,男,碩士研究生,研究方向:作戰(zhàn)系統(tǒng)工程。