胡亞男,程健慶,何躍峰(江蘇自動(dòng)化研究所,江蘇 連云港 222061)
DDS可靠發(fā)送機(jī)制的研究
胡亞男,程健慶,何躍峰
(江蘇自動(dòng)化研究所,江蘇 連云港 222061)
對(duì)象管理組織(Object Management Group,OMG)頒布的數(shù)據(jù)分發(fā)服務(wù)(Data Distribution Service,DDS)規(guī)范有兩種發(fā)送模式,一種為盡量發(fā)送,一種為可靠發(fā)送。在艦載信息系統(tǒng)中,DDS通常默認(rèn)為盡量發(fā)送模式,這并不能保證系統(tǒng)的可靠性。因此,針對(duì)DDS規(guī)范中可靠發(fā)送模型進(jìn)行深入研究,分析可靠協(xié)議在正常狀況下及丟包狀況下的工作流程。根據(jù)可靠性的要求,通過配置相關(guān)QoS策略調(diào)整發(fā)送隊(duì)列和接收隊(duì)列的長度以及心跳檢測(cè)信號(hào)的發(fā)送頻率。最后,通過盡量發(fā)送和可靠發(fā)送兩種模式的性能測(cè)試比較說明各自所適用的情況。
DDS規(guī)范;可靠發(fā)送;可靠協(xié)議;QoS策略
對(duì)象管理組織(Object Management Group,OMG)于2004年 12月發(fā)布了面向分布式實(shí)時(shí)系統(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)對(duì)數(shù)據(jù)樣本正確性要求較高時(shí),這種方式并不再適用,此時(shí)需使用可靠發(fā)送模式??煽堪l(fā)送模式確保所有的樣本都被有序接收。本文將對(duì)可靠發(fā)送機(jī)制所使用的方法以及過程進(jìn)行研究。
可靠發(fā)送意味著樣本確定到達(dá)并且按序發(fā)布。發(fā)送和接收隊(duì)列用來臨時(shí)緩存樣本,直到DDS確認(rèn)樣本已經(jīng)成功傳遞。在樣本已經(jīng)被所有可靠的訂閱者接收之后,DDS將發(fā)布隊(duì)列中的樣本移除。如果無序樣本到達(dá),那么DDS將其緩存到數(shù)據(jù)讀取者(DR)的接收隊(duì)列中。
在發(fā)送樣本時(shí),數(shù)據(jù)寫入者(DW)設(shè)置為等待空間狀態(tài),即當(dāng)發(fā)送隊(duì)列沒有可用的空間時(shí),DW一直等待直到有可用的隊(duì)列空間。而如果將DW設(shè)置為非等待空間狀態(tài),即不論隊(duì)列溢出與否都一直發(fā)送數(shù)據(jù),那么舊的緩存樣本將會(huì)被推出隊(duì)列,DR將無法接收。
為了保證可靠發(fā)送,DDS執(zhí)行實(shí)時(shí)發(fā)布訂閱(Real-Time Publish-Subscribe,RTPS)協(xié)議。
可靠協(xié)議使用以下幾種類型的消息[3]:數(shù)據(jù)信息(Data)、心跳檢測(cè)信息(HB)、反饋信息(ACK/NACK)。
(1)數(shù)據(jù)信息。格式為 DATA(<樣本值>,<序列號(hào)>),例如DATA(A,1),表示樣本值為A,序列號(hào)為1。
(2)心跳檢測(cè)信息。HB信息通知DR應(yīng)該接收了某序列號(hào)范圍內(nèi)的信息,要求DR發(fā)送相應(yīng)的響應(yīng)信息。
(3)反饋信息。反饋信息用于向DW表明特定的信息已經(jīng)成功存儲(chǔ)到該DR的歷史中。DW可以通過反饋信息得知DR哪些信息丟失了。
2.1 正常狀況下的可靠協(xié)議
在樣本未丟失的情況下,當(dāng)調(diào)用寫函數(shù)(write())時(shí),可靠協(xié)議工作流程如圖1所示。
圖1 可靠協(xié)議
在樣本被發(fā)送之前,將會(huì)在DW的發(fā)送序列中加上序列號(hào)(此例中為1)。一旦樣本被DR接收,DR就將信息存放于其接收隊(duì)列中,標(biāo)記為√。DR接收到的心跳檢測(cè)信號(hào) 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收到下一個(gè)信號(hào)包(DATA(B,2);HB(1-2))時(shí),由于心跳檢測(cè)HB(1-2)表明DR應(yīng)該已經(jīng)收到序列號(hào)為1-2的樣本,于是DR將會(huì)自檢是否已經(jīng)成功接收這些樣本,會(huì)發(fā)現(xiàn)序列號(hào)為1的樣本并沒有被成功接收。此時(shí),DR將會(huì)發(fā)送ACKNACK(1)給DW,要求其重新發(fā)送樣本DATA(A,1)。該過程如圖2所示。
DR發(fā)送反饋信息ACKNACK(1)給DW之后,DW首先發(fā)送丟包的樣本A,然后發(fā)送樣本包C以及心跳包HB(1-3)。此時(shí),DR自檢確認(rèn)之后,發(fā)送反饋信息。
實(shí)時(shí)發(fā)布訂閱協(xié)議中的確認(rèn)機(jī)制使得DW接收到相關(guān)的丟包信息,這樣使得每一個(gè)樣本都能成功被DR有序接收。
圖2 丟包狀況下的可靠協(xié)議
QoS是指一系列可控制 DDS服務(wù)行為的特性集合,它由獨(dú)立的 QoS策略組成,是 DDS規(guī)范的最大亮點(diǎn)[4-5]??梢酝ㄟ^某些QoS策略的設(shè)置增加系統(tǒng)的可靠性。這里僅對(duì)發(fā)送隊(duì)列長度和接收隊(duì)列長度的相關(guān)QoS策略進(jìn)行設(shè)置。
3.1發(fā)送隊(duì)列長度
設(shè)置歷史QoS策略可以調(diào)整DW發(fā)送隊(duì)列保存的樣本數(shù)以及DR接收隊(duì)列保存的樣本數(shù)[6]。
若DW沒有接收到DR發(fā)送的反饋信號(hào),那么DW的發(fā)送隊(duì)列將會(huì)滿。此時(shí),如果需要強(qiáng)可靠性數(shù)據(jù)通信,那么歷史策略的類型應(yīng)設(shè)置為“保留所有”,發(fā)送端需阻塞線程,等待直到發(fā)送隊(duì)列有空間再繼續(xù)寫樣本。如果歷史策略類型設(shè)置為“保留最新”,強(qiáng)可靠性通信將不能被保證。
若給出可靠性的要求,那么發(fā)送隊(duì)列的最小長度設(shè)置如下:
其中,R是發(fā)送樣本的速率,T是數(shù)據(jù)傳輸一周的時(shí)間,P是傳遞樣本過程中丟包的概率,Q是樣本成功發(fā)送的需求概率。
根據(jù)不同的網(wǎng)絡(luò)狀況,所得到的發(fā)送隊(duì)列最小長度如表1所示。
3.2 接收隊(duì)列長度
DR接收樣本時(shí),樣本被保存在接收隊(duì)列中,只有當(dāng)操作“取”(take())將其取走后,樣本才會(huì)被移除出接收隊(duì)列[7]。DR的接收隊(duì)列長度應(yīng)大于 DW發(fā)送隊(duì)列的長度,主要由資源限制QoS策略中的“隊(duì)列最大樣本數(shù)(max_samples,ms)”控制。一個(gè)DR可以與多個(gè)DW保持通信,DW的無序樣本也保存在DR的接收隊(duì)列中。為了防止某個(gè)DW的無序樣本占用過多的接收隊(duì)列資源,可以在DR的資源限制QoS策略中設(shè)置參數(shù)“DW最大樣本數(shù)(max_samples_per_remote_writer,mw)”,mw<=ms。
表1 不同網(wǎng)絡(luò)狀況下的最小隊(duì)列長度
本測(cè)試采用由發(fā)布者發(fā)送數(shù)據(jù),在訂閱者接收到數(shù)據(jù)后立即返回?cái)?shù)據(jù),再由發(fā)布者本身接收回告,取接收到回告時(shí)間與剛開始發(fā)送的時(shí)間差。
表2和表3分別表示盡量發(fā)送和可靠發(fā)送兩種模式下傳輸數(shù)據(jù)所需時(shí)間,表4為兩種發(fā)送模式丟包率的對(duì)比。
表2 盡量發(fā)送模式
表3 可靠發(fā)送模式
表4 兩種發(fā)送模式丟包率對(duì)比
從以上結(jié)果可以看出,盡量發(fā)送模式比可靠發(fā)送模式傳輸數(shù)據(jù)所需的平均時(shí)間短,但是會(huì)產(chǎn)生丟包的情況;而可靠發(fā)送模式傳輸數(shù)據(jù)所需的平均時(shí)間較長,但是不會(huì)產(chǎn)生丟包的情況,確保每個(gè)數(shù)據(jù)樣本都能成功傳輸。
在實(shí)際應(yīng)用中,以艦載信息系統(tǒng)為例,二者應(yīng)相互結(jié)合使用。傳輸實(shí)時(shí)性較高以及周期性發(fā)送的數(shù)據(jù)(如武器傳感器數(shù)據(jù))時(shí),發(fā)送模式應(yīng)為盡量發(fā)送;而對(duì)于控制命令(如開關(guān)機(jī)等一次性指令)則需要可靠發(fā)送。
本文分析了可靠發(fā)送模型以及協(xié)議,設(shè)計(jì)并實(shí)現(xiàn)相關(guān)的QoS策略,通過盡量發(fā)送和可靠發(fā)送兩種模式的性能測(cè)試,分析了兩種發(fā)送模式所適用的情況。在進(jìn)一步的工作中,將分析探討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ā)中間件的升級(jí)設(shè)計(jì)[J].北京交通大學(xué)學(xué)報(bào),2011,35(5)31-37.
[5]Object Management Group.Data Distribution Service for real-time systems(Vision 1.2)[S].2007.
[6]馮國良,谷青范.基于DDS的實(shí)時(shí)中間件的研究與設(shè)計(jì)[J].航空電子技術(shù),2011,42(3):41-46.
[7]歐陽軍,蔡志明,王希敏.基于DDS中間件的性能測(cè)試[J].艦船電子工程,2011,31(11):136-139.
Research on reliable delivery model of DDS
Hu Yanan,Cheng Jianqing,He Yuefeng
(Jiangsu Automation Research Institute,Lianyungang 222061,China)
There′re two delivery models of data distuibution service(DDS)which is published by OMG,best-effort delivery model and reliable delivery model.DDS uses best-effort delivery by default in the communication system of warship.However,besteffort delivery can′t satisfy the reliability of communication.This paper researches on reliable delivery model and analyses how the reliable protocol of DDS works in nomal and sample-lost situations.Relative QoS policies are configured to set up sizes of sending queue and receiving queue and frequency of heartbeat messages.At last,the comparision of best-effort delivery and reliable delivery declares the situations which the two models apply to.
DDS standard;reliable delivery;reliable protocol;QoS policies
TP391.9
A
1674-7720(2015)22-0028-03
胡亞男,程健慶,何躍峰.DDS可靠發(fā)送機(jī)制的研究[J].微型機(jī)與應(yīng)用,2015,34(22):28-30.
2015-07-28)
胡亞男(1993-),女,碩士研究生,主要研究方向:DDS通信技術(shù)。
程健慶(1966-),男,研究員,主要研究方向:系統(tǒng)仿真。
何躍峰(1981-),男,高級(jí)工程師,主要研究方向:模型與軟件開發(fā)。