• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于DDS的可靠通信方法的分析和研究

      2018-08-21 09:24:48李海浩顧濱兵劉艷平
      微型電腦應(yīng)用 2018年8期
      關(guān)鍵詞:快照次序隊(duì)列

      李海浩, 顧濱兵, 劉艷平

      (91404部隊(duì),秦皇島 066000)

      0 引言

      DDS(Data Distribution Service)數(shù)據(jù)分發(fā)服務(wù)是對象管理組織OMG對分布式實(shí)時系統(tǒng)中數(shù)據(jù)分布的一種規(guī)范,是以數(shù)據(jù)為中心的發(fā)布/訂閱數(shù)據(jù)通信模型[1-2]。應(yīng)用DDS進(jìn)行通信,具有低延遲、高吞吐量、可控通信性能、多種通信方式的優(yōu)點(diǎn)[3],其中可靠性通信方式應(yīng)用最為廣泛,也是DDS應(yīng)用通信的優(yōu)勢所在[4]。怎樣應(yīng)用DDS進(jìn)行可靠性通信,是DDS應(yīng)用開發(fā)的重點(diǎn)和難點(diǎn)[5]。

      1 DDS技術(shù)應(yīng)用

      DDS技術(shù)作為系統(tǒng)的數(shù)據(jù)傳輸基礎(chǔ)機(jī)制,已經(jīng)在國外裝備軟件研發(fā)中廣泛,例如美國海上戰(zhàn)爭中心(NSWC)高性能分布式計(jì)算系統(tǒng)(HiPer-D),美國海軍LPD-17艦內(nèi)廣域網(wǎng)絡(luò),TACTICOS等等。隨著國內(nèi)的航空、國防、分布仿真、工業(yè)自動化等多個領(lǐng)域的快速發(fā)展,DDS技術(shù)已經(jīng)在國內(nèi)得到一定程度的應(yīng)用[6-7]。DDS技術(shù)較傳統(tǒng)的TCP、UDP通信技術(shù)和CORBA規(guī)范[8]具有較大的優(yōu)勢,因此DDS技術(shù)越來越多的應(yīng)用到各領(lǐng)域。不同通信方式在資源、應(yīng)用、效率等方面的對邊,如表1所示[9-10]。

      與傳統(tǒng)通信技術(shù)相比較,DDS技術(shù)具有高傳輸效率、網(wǎng)絡(luò)資源利用率,可靠傳輸Qos策略[11],實(shí)時應(yīng)用場景等優(yōu)勢。雖然TCP和CORBA同樣具有可靠傳輸功能,但其可靠傳輸無法與網(wǎng)絡(luò)資源利用率、Qos策略相輔相成,達(dá)到最優(yōu)的利用效率。因此對DDS可靠通信方式的研究,能夠更加深入的了解和掌握該技術(shù)的原理和應(yīng)用[12]。

      表1 不同通信方式的優(yōu)劣比較

      2 可靠通信的概述

      不同數(shù)據(jù)的通信對可靠性的要求不同,比如:信號數(shù)據(jù)的單獨(dú)樣本可以丟掉,因?yàn)楫?dāng)下一個值發(fā)送時前面的值就會消失;而命令數(shù)據(jù)的每個樣本必須被接收,并必須有次序的接收。DDS為了滿足不同需求,在可靠通信中提出了高效通信模式和可靠通信模式[13]。

      2.1 高效通信模式

      高效通信模式不對發(fā)送次序和重發(fā)丟失樣本進(jìn)行管理,忽略丟失的樣本數(shù)據(jù)以支持最新的樣本數(shù)據(jù),不算真正意義的可靠通信[14]。

      2.2 可靠通信模式

      可靠通信模式是保證數(shù)據(jù)讀取者能夠按照數(shù)據(jù)寫入者發(fā)送數(shù)據(jù)的順序讀取所有數(shù)據(jù)[15]。為了實(shí)現(xiàn)可靠通信,用于臨時存儲樣本的發(fā)送隊(duì)列和接收隊(duì)列的設(shè)置是至關(guān)重要的。發(fā)送隊(duì)列用于存儲數(shù)據(jù)寫入者發(fā)送的最后X個樣本數(shù)據(jù)。當(dāng)樣本數(shù)據(jù)被所有可靠訂閱確認(rèn)后,DDS便從發(fā)送隊(duì)列中移除該樣本數(shù)據(jù);當(dāng)樣本數(shù)據(jù)沒有被所有可靠訂閱確認(rèn)時,在堵塞周期(后面章節(jié)將進(jìn)行詳細(xì)說明)結(jié)束后,DDS也會在發(fā)送隊(duì)列中移除該樣本。接收隊(duì)列用于存儲數(shù)據(jù)讀取者期望接收的X個樣本數(shù)據(jù),當(dāng)一個無序的樣本數(shù)據(jù)達(dá)到后,DDS會將該樣本數(shù)據(jù)存儲到接收隊(duì)列中,等待樣本數(shù)據(jù)連續(xù)后,才會將連續(xù)的樣本數(shù)據(jù)提交給數(shù)據(jù)讀取者。

      3 通信過程

      DDS通過執(zhí)行一個可靠的協(xié)議來完成發(fā)布端和訂閱端之間的可靠通信,協(xié)議承認(rèn)應(yīng)用程序之間的水平信息,并能夠監(jiān)視連接的活躍性,該協(xié)議稱為實(shí)時發(fā)布訂閱協(xié)議,簡稱RTPS協(xié)議[16]。其通過相關(guān)參數(shù)信息的配置,調(diào)衡應(yīng)用程序之間的行為來平衡反應(yīng)時間、敏感度、活躍性、吞吐量和資源利用,相關(guān)參數(shù)信息主要包含數(shù)據(jù)信息(DATA)、心跳信息(HB)和承認(rèn)信息(ACKNACK),下面對具體實(shí)現(xiàn)過程進(jìn)行簡要介紹。

      數(shù)據(jù)信息包含數(shù)據(jù)對象的值快照和數(shù)據(jù)次序號,值快照為通信具體內(nèi)容,DDS應(yīng)用次序號來識別數(shù)據(jù)寫入者,每次數(shù)據(jù)寫入者的write()被調(diào)用時,次序號由數(shù)據(jù)寫入者重新賦值,數(shù)據(jù)信息使用DATA(,)表示。例如:DATA(A,1),A代表數(shù)據(jù)對象的值快照,1表示次序號。

      心跳信息包含應(yīng)接收數(shù)據(jù)的次序號信息,通過與數(shù)據(jù)讀取者通信,確認(rèn)數(shù)據(jù)讀取者是否接收到所有應(yīng)接收到的值快照,使用HB()表示。例如:HB(1)和HB(1-3)分別表示數(shù)據(jù)讀取者應(yīng)該接收到次序號為1和次序號為1、2、3的值快照,要求數(shù)據(jù)讀取者確認(rèn)。

      承認(rèn)信息包含未接收到數(shù)據(jù)的次序號信息,向數(shù)據(jù)寫入者反饋數(shù)據(jù)讀取者應(yīng)接收但未接收到數(shù)據(jù)的次序號,使用ACKNACK()表示。例如:ACKNACK(1)和ACKNACK(1-3)分別表示數(shù)據(jù)讀取者應(yīng)接收但未接收到值快照的次序號為1和1、2、3,要求數(shù)據(jù)寫入者重新發(fā)送。

      DDS可以使用一個網(wǎng)絡(luò)數(shù)據(jù)包手機(jī)多個上述信息,以便提供更高性能的通信。該可靠協(xié)議的應(yīng)用原理,如圖1所示。

      當(dāng)應(yīng)用程序調(diào)用數(shù)據(jù)寫入者write()操作時,RTPS協(xié)議將多個子信息集合成為一個網(wǎng)絡(luò)數(shù)據(jù)包,數(shù)據(jù)包包括數(shù)據(jù)值和指定的次序號,存儲在數(shù)據(jù)寫入者的發(fā)送隊(duì)列中。數(shù)據(jù)包接收后,放置在數(shù)據(jù)讀取者的接收隊(duì)列中,通過次序號,數(shù)據(jù)讀取者可以判斷是否錯過相關(guān)數(shù)據(jù)值,該數(shù)據(jù)值是否立即應(yīng)用。當(dāng)數(shù)據(jù)讀取者確認(rèn)接收到HB(1)的相關(guān)數(shù)據(jù)后,以ACKNACK(2)回復(fù),表示承認(rèn)接收到次序號為2以前的數(shù)據(jù)值。當(dāng)數(shù)據(jù)寫入者接收到該承認(rèn)信息后,便將次序號為1數(shù)據(jù)進(jìn)行√標(biāo)記,表示該數(shù)據(jù)值已被承認(rèn)接收,并在發(fā)送隊(duì)列中刪除該數(shù)據(jù)。

      圖1 RTPS可靠通信協(xié)議應(yīng)用原理

      上述過程是數(shù)據(jù)未丟失的應(yīng)用原理,當(dāng)數(shù)據(jù)丟失時,RTPS可靠通信協(xié)議應(yīng)用原理,如圖2所示。

      圖2 RTPS可靠通信協(xié)議應(yīng)用原理

      具體流程如下所示:

      (1)假定包含DATA(A,1)的信息被網(wǎng)絡(luò)丟棄,數(shù)據(jù)讀取者沒有接收到DATA(A,1)的承認(rèn)信息,所以繼續(xù)發(fā)送[DATA(B,2);HB(1-2)],表示數(shù)據(jù)讀取者應(yīng)該接收到DATA(A,1)和DATA(B,2),并將DATA(A,1)和DATA(B,2)加入X標(biāo)簽,表示未收到承認(rèn)信息。

      (2)數(shù)據(jù)讀取者接收到信息(DATA(B,2);HB(1-2))后,會判斷到未接收到DATA(A,1)數(shù)據(jù),在接收到隊(duì)列中將DATA(B,2)的數(shù)據(jù)加入X標(biāo)簽,標(biāo)記它沒有傳遞給應(yīng)用程序,然后發(fā)送ACKNACK(1)請求數(shù)據(jù)DATA(A,1)數(shù)據(jù)。

      (3)數(shù)據(jù)寫入者收到ACKNACK(1)后,立即發(fā)送DATA(A,1),并繼續(xù)發(fā)送[DATA(C,3);HB(1-3)]。

      (4)數(shù)據(jù)讀取者接收到DATA(A,1)后,將DATA(A,1)和DATA(B,2)提交給應(yīng)用程序,并發(fā)送ACKNACK(3)承認(rèn)信息;當(dāng)接收到[DATA(C,3);HB(1-3)]后,立即發(fā)送ACKNACK(4),并將DATA(C,3)提交給應(yīng)用程序。

      (5)寫入者接收到ACKNACK(3)后,DATA(A,1)和DATA(B,2)在發(fā)送隊(duì)列中刪除。在準(zhǔn)備但未發(fā)出DATA(C,3)時,接收到ACKNACK(4),讀取者便不再發(fā)送DATA(C,3),并準(zhǔn)備發(fā)送其他數(shù)據(jù),并將DATA(C,3)在發(fā)送隊(duì)列中刪除。

      在這個過程中,寫入者確認(rèn)發(fā)送隊(duì)列最靠前的數(shù)據(jù)被接收后,將數(shù)據(jù)進(jìn)行√標(biāo)注并在隊(duì)列中刪除;讀取者確認(rèn)接收隊(duì)列最靠前的數(shù)據(jù)都已接收后,將數(shù)據(jù)進(jìn)行√標(biāo)注并在隊(duì)列中刪除。

      RTPS協(xié)議中重要特征是ACKNACK信息只作為對HB信息的直接響應(yīng)而發(fā)送,方便寫入者更好的控制這些“管理”信息。如果寫入者了解它即將發(fā)送DATA的信息鏈,便可以收集它們,包含到一個HB中進(jìn)行發(fā)送,從而最小化了ACKNACK的傳輸。

      4 可靠協(xié)議的設(shè)置

      4.1 可靠協(xié)議的激活

      成功部署DDS通信組件后,通過修正寫入者和讀取者的可靠傳輸?shù)腝os策略來實(shí)現(xiàn)可靠協(xié)議的激活,具體代碼如下:

      DataWriter:

      writer_qos.reliability.kind = DDS_RELIABLE_RELIABILITY_QOS;

      DataReader:

      writer_qos.reliability.kind = DDS_RELIABLE_RELIABILITY_QOS;

      4.2 發(fā)送隊(duì)列

      數(shù)據(jù)寫入者的發(fā)送隊(duì)列用于存儲它寫入的每個樣本,樣本將在它被所有可靠的數(shù)據(jù)讀取者承認(rèn)(通過ACKNACK)后移除。數(shù)據(jù)讀取者可以請求數(shù)據(jù)寫入者重發(fā)一個丟失的樣本,樣本仍然在發(fā)送隊(duì)列里可用,它將被重發(fā),樣本不在發(fā)送隊(duì)列里時,寫入者會請求應(yīng)用程序重發(fā)該樣本。針對實(shí)時的ACKNACK請求,寫入者將定期向它的可靠讀取者發(fā)送心跳。

      寫入者與讀取者進(jìn)行一對一通信時,發(fā)送隊(duì)列可以被該讀取者獨(dú)享。寫入者與讀取者進(jìn)行一對多或多對多通信時,發(fā)送隊(duì)列將同時處理多個讀取者的ACKNACK,當(dāng)一個或幾個讀取者獲取的數(shù)據(jù)丟包時,發(fā)送隊(duì)列會用于處理相關(guān)ACKNACK,導(dǎo)致占用較多的隊(duì)列資源,甚至出現(xiàn)發(fā)送隊(duì)列堵塞現(xiàn)象,影響寫入者與其他讀取者之間的通信。為了解決該問題,DDS提供了兩種模式:嚴(yán)格可靠和非嚴(yán)格可靠。兩種模式是通過歷史記錄策略(history Qos)中kind參數(shù)判斷,當(dāng)kind設(shè)置為keep_all時,采用嚴(yán)格可靠模式;設(shè)置為keep_last時,采用非嚴(yán)格可靠模式。嚴(yán)格可靠模式能夠保證數(shù)據(jù)通信的嚴(yán)格可靠,當(dāng)發(fā)送隊(duì)列堵塞后,寫入者不再發(fā)送數(shù)據(jù),直到發(fā)送隊(duì)列中再次具有可用空間。非嚴(yán)格模式下在一定程度上能夠保障數(shù)據(jù)通信的可靠性,但嚴(yán)格的可靠無法保證,發(fā)送隊(duì)列中數(shù)據(jù)的預(yù)期生命期限(由Lifespan策略決定)結(jié)束后,無論是否有對應(yīng)ACKNACK未處理,該數(shù)據(jù)都將被清除出發(fā)送隊(duì)列,會保證發(fā)送隊(duì)列不再堵塞。

      發(fā)送隊(duì)列的深度一般受應(yīng)用程序參數(shù)(如發(fā)送速率)、頻道參數(shù)(如端到端延遲和數(shù)據(jù)包丟失的可能性)以及服務(wù)要求質(zhì)量(如樣本丟失的最大可接受的可能性)等因素影響。在進(jìn)行數(shù)據(jù)傳輸時,在假定單獨(dú)的數(shù)據(jù)丟失是不相關(guān)的情況下,可通過一個簡單模型對最小深度值進(jìn)行計(jì)算,如式(1)。

      (1)

      其中R表示發(fā)送樣本的速率;T表示來回的傳遞時間;p表示往返中樣本丟失的概率;Q表示最終被成功傳遞的要求概率。

      下面列出一般情況下,發(fā)送隊(duì)列所要求的最小值,如表1所示。

      表1 發(fā)送隊(duì)列在一般情況下的最小值列表

      4.3 接收隊(duì)列

      數(shù)據(jù)讀取者通過接收隊(duì)列存儲接收到的樣本,同時等待接收丟失的樣本,當(dāng)接收隊(duì)列空間不足時,數(shù)據(jù)讀取者便會拒絕無序樣本的接收,當(dāng)丟失樣本接收后,再次要求重發(fā)拒絕接收的樣本。

      假定兩個數(shù)據(jù)讀取者與同一數(shù)據(jù)寫入者進(jìn)行交互,接收隊(duì)列大小的不同,在一定程度上影響了數(shù)據(jù)的傳輸效率,如圖3所示。

      數(shù)據(jù)讀取者將以較少操作和較短時間接收所有樣本。

      數(shù)據(jù)讀取者將以較多操作和較長時間實(shí)現(xiàn)同樣樣本的接收,特別是樣本4不在重新發(fā)送給其他具有較大接收隊(duì)列的數(shù)據(jù)讀取者。在可靠傳輸模式下,為了避免接收隊(duì)列較少而導(dǎo)致的多操作、低效率,DDS會自動動態(tài)調(diào)整接收隊(duì)列大小。如圖4所示。

      當(dāng)傳輸過程為非可靠傳輸時,接收隊(duì)列中樣本數(shù)量達(dá)到隊(duì)列深度時,新的樣本將會替代最舊的樣本,即使被替換樣本還沒有被確認(rèn)。

      圖3 數(shù)據(jù)接收效果(大接收隊(duì)列)

      圖4 數(shù)據(jù)接收效果(小接收隊(duì)列)

      4.4 消息風(fēng)暴

      數(shù)據(jù)寫入者向數(shù)據(jù)讀取者發(fā)送DATA和HB,數(shù)據(jù)讀取者回饋DATA的接收和丟失的ACKNACK,當(dāng)一個數(shù)據(jù)寫入者與大量的數(shù)據(jù)讀取者進(jìn)行交互時,會出現(xiàn)大量的ACKNACK發(fā)送給同一數(shù)據(jù)寫入者,這樣便會產(chǎn)生信息風(fēng)暴。DDS通過數(shù)據(jù)讀取協(xié)議Qos策略解決該問題,通過設(shè)置數(shù)據(jù)讀取者的響應(yīng)時間區(qū)間,在一定程度上避免信息風(fēng)暴的產(chǎn)生。具體參數(shù)過程如下:

      reader_qos.protocol.rtps_reliable_reader.min_heartbeat_response_delay.sec="minX"

      reader_qos.protocol.rtps_reliable_reader.max_heartbeat_response_delay.sec="maxY"

      其中:minX為延遲響應(yīng)最小時間;

      maxY為延遲響應(yīng)最大時間。

      響應(yīng)時間區(qū)間的設(shè)置,數(shù)據(jù)讀取者在區(qū)間內(nèi)隨機(jī)選取時間進(jìn)行響應(yīng)。當(dāng)兩個參數(shù)都設(shè)置為0時,將迫使數(shù)據(jù)讀取者立即響應(yīng),可應(yīng)用在需最快補(bǔ)充丟失樣本的數(shù)據(jù)讀取者。

      5 總結(jié)

      DDS作為一種先進(jìn)的數(shù)據(jù)傳輸技術(shù)以及開放統(tǒng)一的標(biāo)準(zhǔn)[17],能夠很好的保障實(shí)時數(shù)據(jù)傳輸和跨平臺的應(yīng)用,其在美國和歐洲的國防、民航等領(lǐng)域已經(jīng)得到廣泛應(yīng)用。隨著我國大型水面艦艇和航空領(lǐng)域的快速發(fā)展,DDS技術(shù)已經(jīng)在國內(nèi)展開應(yīng)用,加強(qiáng)對該技術(shù)的研究,適應(yīng)當(dāng)今通信技術(shù),可更好更快的完成相關(guān)裝備的研制和試驗(yàn)??煽客ㄐ攀荄DS技術(shù)的核心技術(shù),且在通信應(yīng)用中使用最為廣泛,最能體現(xiàn)DDS通信的優(yōu)勢和特點(diǎn),對DDS可靠通信技術(shù)的研究,能夠更好地了解和掌握DDS通信技術(shù)。

      猜你喜歡
      快照次序隊(duì)列
      《漢紀(jì)》對漢帝功業(yè)次序的重構(gòu)及其意義
      EMC存儲快照功能分析
      天津科技(2022年5期)2022-05-31 02:18:08
      隊(duì)列里的小秘密
      基于多隊(duì)列切換的SDN擁塞控制*
      軟件(2020年3期)2020-04-20 00:58:44
      在隊(duì)列里
      豐田加速駛?cè)胱詣玉{駛隊(duì)列
      生日謎題
      創(chuàng)建磁盤組備份快照
      數(shù)據(jù)恢復(fù)的快照策略
      一張“快照”搞定人體安檢
      岫岩| 沙河市| 阜康市| 璧山县| 文昌市| 宿迁市| 手游| 桃园市| 保山市| 金乡县| 措美县| 达孜县| 安平县| 邯郸县| 含山县| 察雅县| 湘潭市| 泰兴市| 政和县| 丁青县| 黎城县| 涞水县| 广宗县| 随州市| 开封县| 镇平县| 包头市| 麻阳| 安徽省| 扬州市| 云林县| 霍城县| 安远县| 榆中县| 彭泽县| 杨浦区| 侯马市| 霍邱县| 同心县| 乡城县| 塔城市|