摘 要: 對象管理組織(Object Management Group,OMG)頒布的數(shù)據(jù)分發(fā)服務(wù)(Data Distribution Service,DDS)規(guī)范有兩種發(fā)送模式,一種為盡量發(fā)送,一種為可靠發(fā)送。在艦載信息系統(tǒng)中,DDS通常默認(rèn)為盡量發(fā)送模式,這并不能保證系統(tǒng)的可靠性。因此,針對DDS規(guī)范中可靠發(fā)送模型進行深入研究,分析可靠協(xié)議在正常狀況下及丟包狀況下的工作流程。根據(jù)可靠性的要求,通過配置相關(guān)QoS策略調(diào)整發(fā)送隊列和接收隊列的長度以及心跳檢測信號的發(fā)送頻率。最后,通過盡量發(fā)送和可靠發(fā)送兩種模式的性能測試比較說明各自所適用的情況。
關(guān)鍵詞: DDS規(guī)范;可靠發(fā)送;可靠協(xié)議;QoS策略
0 引言
對象管理組織(Object Management Group,OMG)于2004年12月發(fā)布了面向分布式實時系統(tǒng)的數(shù)據(jù)分發(fā)服務(wù)(Data Distribution Service,DDS)規(guī)范[1]。DDS有兩種發(fā)送模式:盡量發(fā)送和可靠發(fā)送[2]。在艦載信息系統(tǒng)中,盡量發(fā)送通常為默認(rèn)方式,這種方式無需確定樣本是否按順序傳遞也不需要重新發(fā)送樣本,而當(dāng)對數(shù)據(jù)樣本正確性要求較高時,這種方式并不再適用,此時需使用可靠發(fā)送模式??煽堪l(fā)送模式確保所有的樣本都被有序接收。本文將對可靠發(fā)送機制所使用的方法以及過程進行研究。
1 可靠發(fā)送模型
可靠發(fā)送意味著樣本確定到達并且按序發(fā)布。發(fā)送和接收隊列用來臨時緩存樣本,直到DDS確認(rèn)樣本已經(jīng)成功傳遞。在樣本已經(jīng)被所有可靠的訂閱者接收之后,DDS將發(fā)布隊列中的樣本移除。如果無序樣本到達,那么DDS將其緩存到數(shù)據(jù)讀取者(DR)的接收隊列中。
在發(fā)送樣本時,數(shù)據(jù)寫入者(DW)設(shè)置為等待空間狀態(tài),即當(dāng)發(fā)送隊列沒有可用的空間時,DW一直等待直到有可用的隊列空間。而如果將DW設(shè)置為非等待空間狀態(tài),即不論隊列溢出與否都一直發(fā)送數(shù)據(jù),那么舊的緩存樣本將會被推出隊列,DR將無法接收。
2 可靠協(xié)議
為了保證可靠發(fā)送,DDS執(zhí)行實時發(fā)布訂閱(Real-Time Publish-Subscribe,RTPS)協(xié)議。
可靠協(xié)議使用以下幾種類型的消息[3]:數(shù)據(jù)信息(Data)、心跳檢測信息(HB)、反饋信息(ACK/NACK)。
?。?)數(shù)據(jù)信息。格式為DATA(<樣本值>,<序列號>),例如DATA(A,1),表示樣本值為A,序列號為1。
?。?)心跳檢測信息。HB信息通知DR應(yīng)該接收了某序列號范圍內(nèi)的信息,要求DR發(fā)送相應(yīng)的響應(yīng)信息。
?。?)反饋信息。反饋信息用于向DW表明特定的信息已經(jīng)成功存儲到該DR的歷史中。DW可以通過反饋信息得知DR哪些信息丟失了。
2.1 正常狀況下的可靠協(xié)議
在樣本未丟失的情況下,當(dāng)調(diào)用寫函數(shù)(write())時,可靠協(xié)議工作流程如圖1所示。
在樣本被發(fā)送之前,將會在DW的發(fā)送序列中加上序列號(此例中為1)。一旦樣本被DR接收,DR就將信息存放于其接收隊列中,標(biāo)記為√。DR接收到的心跳檢測信號HB(1)為確認(rèn)自己是否已經(jīng)成功接收樣本(1,A),本例中為成功接收。DW接收到DR發(fā)的ACKNACK(2)信息后,確認(rèn)樣本(1,A)已經(jīng)被成功接收,也以√標(biāo)記。
2.2 丟包狀況下的可靠協(xié)議
假設(shè)樣本DATA(A,1)在發(fā)送過程中發(fā)生了丟包情況,當(dāng)DR收到下一個信號包(DATA(B,2);HB(1-2))時,由于心跳檢測HB(1-2)表明DR應(yīng)該已經(jīng)收到序列號為1-2的樣本,于是DR將會自檢是否已經(jīng)成功接收這些樣本,會發(fā)現(xiàn)序列號為1的樣本并沒有被成功接收。此時,DR將會發(fā)送ACKNACK(1)給DW,要求其重新發(fā)送樣本DATA(A,1)。該過程如圖2所示。
DR發(fā)送反饋信息ACKNACK(1)給DW之后,DW首先發(fā)送丟包的樣本A,然后發(fā)送樣本包C以及心跳包HB(1-3)。此時,DR自檢確認(rèn)之后,發(fā)送反饋信息。
實時發(fā)布訂閱協(xié)議中的確認(rèn)機制使得DW接收到相關(guān)的丟包信息,這樣使得每一個樣本都能成功被DR有序接收。
3 相關(guān)QoS策略
QoS是指一系列可控制DDS服務(wù)行為的特性集合,它由獨立的QoS策略組成,是DDS規(guī)范的最大亮點[4-5]??梢酝ㄟ^某些QoS策略的設(shè)置增加系統(tǒng)的可靠性。這里僅對發(fā)送隊列長度和接收隊列長度的相關(guān)QoS策略進行設(shè)置。
3.1發(fā)送隊列長度
設(shè)置歷史QoS策略可以調(diào)整DW發(fā)送隊列保存的樣本數(shù)以及DR接收隊列保存的樣本數(shù)[6]。
若DW沒有接收到DR發(fā)送的反饋信號,那么DW的發(fā)送隊列將會滿。此時,如果需要強可靠性數(shù)據(jù)通信,那么歷史策略的類型應(yīng)設(shè)置為“保留所有”,發(fā)送端需阻塞線程,等待直到發(fā)送隊列有空間再繼續(xù)寫樣本。如果歷史策略類型設(shè)置為“保留最新”,強可靠性通信將不能被保證。
若給出可靠性的要求,那么發(fā)送隊列的最小長度設(shè)置如下:
其中,R是發(fā)送樣本的速率,T是數(shù)據(jù)傳輸一周的時間,P是傳遞樣本過程中丟包的概率,Q是樣本成功發(fā)送的需求概率。
根據(jù)不同的網(wǎng)絡(luò)狀況,所得到的發(fā)送隊列最小長度如表1所示。
3.2 接收隊列長度
DR接收樣本時,樣本被保存在接收隊列中,只有當(dāng)操作“取”(take())將其取走后,樣本才會被移除出接收隊列[7]。DR的接收隊列長度應(yīng)大于DW發(fā)送隊列的長度,主要由資源限制QoS策略中的“隊列最大樣本數(shù)(max_samples,ms)”控制。一個DR可以與多個DW保持通信,DW的無序樣本也保存在DR的接收隊列中。為了防止某個DW的無序樣本占用過多的接收隊列資源,可以在DR的資源限制QoS策略中設(shè)置參數(shù)“DW最大樣本數(shù)(max_samples_per_remote_writer,mw)”,mw<=ms。
4 可靠發(fā)送與盡量發(fā)送性能測試
本測試采用由發(fā)布者發(fā)送數(shù)據(jù),在訂閱者接收到數(shù)據(jù)后立即返回數(shù)據(jù),再由發(fā)布者本身接收回告,取接收到回告時間與剛開始發(fā)送的時間差。
表2和表3分別表示盡量發(fā)送和可靠發(fā)送兩種模式下傳輸數(shù)據(jù)所需時間,表4為兩種發(fā)送模式丟包率的對比。
從以上結(jié)果可以看出,盡量發(fā)送模式比可靠發(fā)送模式傳輸數(shù)據(jù)所需的平均時間短,但是會產(chǎn)生丟包的情況;而可靠發(fā)送模式傳輸數(shù)據(jù)所需的平均時間較長,但是不會產(chǎn)生丟包的情況,確保每個數(shù)據(jù)樣本都能成功傳輸。
在實際應(yīng)用中,以艦載信息系統(tǒng)為例,二者應(yīng)相互結(jié)合使用。傳輸實時性較高以及周期性發(fā)送的數(shù)據(jù)(如武器傳感器數(shù)據(jù))時,發(fā)送模式應(yīng)為盡量發(fā)送;而對于控制命令(如開關(guān)機等一次性指令)則需要可靠發(fā)送。
5 結(jié)論
本文分析了可靠發(fā)送模型以及協(xié)議,設(shè)計并實現(xiàn)相關(guān)的QoS策略,通過盡量發(fā)送和可靠發(fā)送兩種模式的性能測試,分析了兩種發(fā)送模式所適用的情況。在進一步的工作中,將分析探討DDS在相關(guān)領(lǐng)域中的應(yīng)用及其他QoS策略的配置。
參考文獻
[1] GEIHS K. Middleware challenges ahead[J]. IEEE Computer, 2001,34(6):24-31.
[2] BARNETT D. RTI-time data distribution for Industrial Automation System. [EB/OL](2009-02-xx). [2015-04-28]. www.rti.com.
[3] 裘楷,沈棟,李娜,等.基于DCPS模型的數(shù)據(jù)分發(fā)服務(wù)DDS的研究[J].電子科技,2006(11):68-71.
[4] 張珺,尹遜和.基于RTIDDS的數(shù)據(jù)分發(fā)中間件的升級設(shè)計[J].北京交通大學(xué)學(xué)報,2011,35(5)31-37.
[5] Object Management Group. Data Distribution Service for real-time systems(Vision 1.2)[S]. 2007.
[6] 馮國良,谷青范.基于DDS的實時中間件的研究與設(shè)計[J].航空電子技術(shù),2011,42(3):41-46.
[7] 歐陽軍,蔡志明,王希敏.基于DDS中間件的性能測試[J].艦船電子工程,2011,31(11):136-139.
聯(lián)系客服