亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于數(shù)據(jù)分發(fā)服務(wù)的航天器軟件通信框架設(shè)計(jì)

        2021-04-28 08:39:48葉曉楓楊志剛楊培堯張亞航陳琦
        航天器工程 2021年2期
        關(guān)鍵詞:路由表發(fā)布者服務(wù)端

        葉曉楓 楊志剛 楊培堯 張亞航 陳琦

        (北京空間飛行器總體設(shè)計(jì)部,北京 100094)

        當(dāng)前航天器軟件的進(jìn)程間通信過(guò)程主要依靠基于星內(nèi)路由的航天器軟件通信框架實(shí)現(xiàn)。該框架中最核心的部分是“路由進(jìn)程”,該進(jìn)程負(fù)責(zé)所有其他進(jìn)程數(shù)據(jù)的轉(zhuǎn)發(fā)。該框架具體的通信方式是:發(fā)送進(jìn)程將數(shù)據(jù)發(fā)送至路由進(jìn)程,路由進(jìn)程再將數(shù)據(jù)轉(zhuǎn)發(fā)至接收進(jìn)程。路由進(jìn)程接管了所有的底層網(wǎng)絡(luò)協(xié)議,因此解決了早期應(yīng)用程序開(kāi)發(fā)嚴(yán)重依賴(lài)底層協(xié)議的問(wèn)題。例如,某衛(wèi)星平臺(tái)利用基于星內(nèi)路由的框架進(jìn)行進(jìn)程間通信,在星內(nèi)軟件建立了鏈路層和網(wǎng)絡(luò)層,通信過(guò)程通過(guò)點(diǎn)到點(diǎn)的“軟總線(xiàn)”方式(路由方式)完成,即所有的數(shù)據(jù)包匯聚至路由進(jìn)程,路由進(jìn)程根據(jù)數(shù)據(jù)包的應(yīng)用過(guò)程標(biāo)識(shí)(APID)查找路由表,將其轉(zhuǎn)發(fā)至相應(yīng)的接收進(jìn)程。該通信方式使得應(yīng)用程序與底層協(xié)議隔離,簡(jiǎn)化了軟件開(kāi)發(fā)過(guò)程。

        在這種基于星內(nèi)路由的星務(wù)軟件分層體系結(jié)構(gòu)中,遙測(cè)鏈路、遙控鏈路和1553B總線(xiàn)鏈路等鏈路層協(xié)議都由網(wǎng)絡(luò)層路由接管,并以軟件構(gòu)件的形式存在[1]。所有類(lèi)型的數(shù)據(jù)包均需要先發(fā)送至路由進(jìn)程,路由進(jìn)程再根據(jù)數(shù)據(jù)包的類(lèi)型選擇相應(yīng)的鏈路層協(xié)議,將數(shù)據(jù)包轉(zhuǎn)發(fā)至相應(yīng)的接收進(jìn)程,形成一種“沙漏式”的通信架構(gòu)。這種通信方式的優(yōu)勢(shì)在于應(yīng)用程序的開(kāi)發(fā)者不需要關(guān)注與數(shù)據(jù)的接收方使用何種底層協(xié)議通信,只需調(diào)用一個(gè)統(tǒng)一的發(fā)送數(shù)據(jù)的函數(shù)即可實(shí)現(xiàn)數(shù)據(jù)的發(fā)送。該方式使軟件開(kāi)發(fā)過(guò)程更簡(jiǎn)單,并減小了不同模塊之間的耦合度,同時(shí)提高了代碼的質(zhì)量和復(fù)用性,但是這種通信方式依然存在一些不足之處。

        (1)目前基于星內(nèi)路由的軟件通信框架使用靜態(tài)路由表確定每種數(shù)據(jù)包的目的地,路由表需要在編碼階段固定在代碼中,程序運(yùn)行期間無(wú)法更改,并且每種數(shù)據(jù)的接收進(jìn)程數(shù)量不能超過(guò)一個(gè)固定值,所以通信過(guò)程缺乏靈活性;此外,路由表龐大而復(fù)雜,需要手動(dòng)配置,配置過(guò)程繁瑣且容易出錯(cuò),這直接影響了軟件的開(kāi)發(fā)效率和質(zhì)量。

        (2)基于星內(nèi)路由的軟件通信框架僅實(shí)現(xiàn)了簡(jiǎn)單的數(shù)據(jù)轉(zhuǎn)發(fā)功能,無(wú)法對(duì)復(fù)雜的通信過(guò)程進(jìn)行配置,難以滿(mǎn)足未來(lái)高質(zhì)量復(fù)雜通信的需要,例如無(wú)法實(shí)現(xiàn)感知通信節(jié)點(diǎn)是否在線(xiàn)的心跳機(jī)制,以及數(shù)據(jù)的可靠傳輸?shù)取?/p>

        針對(duì)這些不足,本文以數(shù)據(jù)分發(fā)服務(wù)(Data Distribution Service, DDS[2])為基礎(chǔ),提出了一種基于衛(wèi)星數(shù)據(jù)分發(fā)服務(wù)(Satellite-based DDS,S-DDS)的航天器軟件通信框架。S-DDS框架利用DDS強(qiáng)大的數(shù)據(jù)分發(fā)能力和服務(wù)質(zhì)量(Quality of Service, QoS)策略,在使航天器軟件的通信過(guò)程滿(mǎn)足了航天器軟件對(duì)高質(zhì)量復(fù)雜通信業(yè)務(wù)需求的同時(shí),更為靈活便捷。同時(shí),S-DDS引入了動(dòng)態(tài)路由表,通過(guò)動(dòng)態(tài)路由算法實(shí)現(xiàn)數(shù)據(jù)的分發(fā),各個(gè)進(jìn)程可以在運(yùn)行過(guò)程中隨時(shí)修改路由表內(nèi)各項(xiàng)關(guān)鍵數(shù)據(jù),這優(yōu)化了軟件開(kāi)發(fā)方式,提高了軟件開(kāi)發(fā)效率和軟件質(zhì)量。

        1 DDS技術(shù)概述

        DDS是對(duì)象管理組織(Object Management Group, OMG)的有關(guān)分布式實(shí)時(shí)系統(tǒng)中數(shù)據(jù)發(fā)布的一個(gè)規(guī)范,該規(guī)范標(biāo)準(zhǔn)化了分布式實(shí)時(shí)系統(tǒng)中數(shù)據(jù)發(fā)布、傳遞和接收的接口和行為,定義了以數(shù)據(jù)為中心的發(fā)布-訂閱機(jī)制,提供了一個(gè)與平臺(tái)無(wú)關(guān)的數(shù)據(jù)模型[3]。目前DDS已廣泛應(yīng)用于國(guó)防、民航、工業(yè)控制等領(lǐng)域,成為分布式實(shí)時(shí)系統(tǒng)中數(shù)據(jù)發(fā)布-訂閱的標(biāo)準(zhǔn)解決方案[4]。

        DDS包含兩層:底層的數(shù)據(jù)中心發(fā)布訂閱(Data-Centric Publish-Subscribe, DCPS)層和可選的高層數(shù)據(jù)本地重構(gòu)(Data Local Reconstruction Layer, DLRL)層。其中DCPS層負(fù)責(zé)高效地將數(shù)據(jù)發(fā)送到適當(dāng)?shù)慕邮照?;DLRL層將收到的數(shù)據(jù)進(jìn)行簡(jiǎn)單整合,使應(yīng)用程序能夠更容易地訪(fǎng)問(wèn)數(shù)據(jù)[5]。DDS基于“全局?jǐn)?shù)據(jù)空間(Global Data Space, GDS)”的概念,所有有關(guān)該空間中數(shù)據(jù)的應(yīng)用程序都可以接入[6],其通信模型如圖1所示[7]。

        圖1 DDS通信模型Fig.1 Communications model of DDS

        在DDS中,所有的數(shù)據(jù)都帶有一個(gè)主題(Topic),主題用以區(qū)分各種不同類(lèi)型的數(shù)據(jù),是實(shí)現(xiàn)發(fā)布應(yīng)用和訂閱應(yīng)用之間數(shù)據(jù)傳輸?shù)幕緟?shù)[8],這些數(shù)據(jù)也稱(chēng)為消息(Message),所有消息構(gòu)成了DDS的全局?jǐn)?shù)據(jù)空間;所有的數(shù)據(jù)對(duì)象(消息)都存在于此空間中,分布式節(jié)點(diǎn)通過(guò)簡(jiǎn)單的讀、寫(xiě)操作便可以訪(fǎng)問(wèn)這些數(shù)據(jù)對(duì)象[9]。全局?jǐn)?shù)據(jù)空間是一個(gè)邏輯概念,并非存在于某個(gè)特定的中心節(jié)點(diǎn)中,實(shí)際上DDS常應(yīng)用于分布式場(chǎng)景,全局?jǐn)?shù)據(jù)空間往往分散于各個(gè)分布式節(jié)點(diǎn)中。在通信網(wǎng)絡(luò)中,每一個(gè)通信節(jié)點(diǎn)都是一個(gè)參與者(Participant),其中發(fā)送數(shù)據(jù)的節(jié)點(diǎn)稱(chēng)為發(fā)布者(Publisher),接收數(shù)據(jù)的節(jié)點(diǎn)稱(chēng)為訂閱者(Subscriber),一個(gè)節(jié)點(diǎn)可以既是發(fā)布者又是訂閱者。發(fā)布者(訂閱者)發(fā)布(訂閱)的消息都帶有主題,一個(gè)發(fā)布者(訂閱者)可以同時(shí)發(fā)布(訂閱)一個(gè)或多個(gè)主題的消息,一個(gè)主題的消息也可以被一個(gè)或多個(gè)發(fā)布者(訂閱者)發(fā)布(訂閱)。主題、參與者、發(fā)布者、訂閱者統(tǒng)稱(chēng)為實(shí)體(Entity)。此外,DDS規(guī)范還列舉并正式定義了一整套全面的QoS策略,利用QoS可以很好地配置和利用系統(tǒng)資源,支持復(fù)雜多變的數(shù)據(jù)流要求[10]。

        2 S-DDS框架設(shè)計(jì)

        DDS本身只是解決分布式系統(tǒng)中通信實(shí)時(shí)性問(wèn)題的標(biāo)準(zhǔn),它并沒(méi)有指明具體如何實(shí)現(xiàn)。實(shí)際上,實(shí)現(xiàn)DDS標(biāo)準(zhǔn)的各種DDS產(chǎn)品中,既有分布式結(jié)構(gòu)的產(chǎn)品,也有聯(lián)邦式和集中式結(jié)構(gòu)的產(chǎn)品[11]??紤]到集中式結(jié)構(gòu)能夠方便地對(duì)通信過(guò)程進(jìn)行管理控制,且可以保證數(shù)據(jù)分發(fā)的正確性,同時(shí)能夠兼容目前的航天器軟件架構(gòu),本文將S-DDS設(shè)計(jì)為集中式結(jié)構(gòu),包括服務(wù)端和客戶(hù)端兩部分。其中服務(wù)端為S-DDS服務(wù)器進(jìn)程,它負(fù)責(zé)數(shù)據(jù)的分發(fā),并對(duì)通信過(guò)程進(jìn)行管控;各個(gè)參與通信的應(yīng)用進(jìn)程為客戶(hù)端,客戶(hù)端使用S-DDS中間件(以構(gòu)件形式存在)參與通信。

        本文依據(jù)DDS標(biāo)準(zhǔn)設(shè)計(jì)的S-DDS架構(gòu)如圖2所示,整體架構(gòu)采用集中式的客戶(hù)-服務(wù)器模式設(shè)計(jì)。在S-DDS中,每個(gè)應(yīng)用進(jìn)程都是一個(gè)參加者,參與者可以創(chuàng)建發(fā)布者或訂閱者,用以發(fā)布或訂閱消息;每種類(lèi)型的消息都使用APID作為其主題,消息經(jīng)發(fā)布者發(fā)布后先傳輸至服務(wù)端,服務(wù)端再根據(jù)消息的主題和相關(guān)的QoS策略分發(fā)至相應(yīng)的訂閱者。

        注:IO為輸入輸出。

        在S-DDS框架中,S-DDS服務(wù)器取代了之前基于星內(nèi)路由架構(gòu)的路由進(jìn)程,作為消息傳遞的中心節(jié)點(diǎn),發(fā)布者發(fā)布的所有消息都需要先發(fā)送至S-DDS服務(wù)器,再由S-DDS服務(wù)器分發(fā)至相應(yīng)的訂閱者。采用這種集中式結(jié)構(gòu)可以兼容當(dāng)前航天器的星載軟件架構(gòu),對(duì)數(shù)據(jù)進(jìn)行方便地管理。在這種方式下,對(duì)于全局信息(例如參與者、主題等)由于只有一份拷貝,因此不存在數(shù)據(jù)一致性問(wèn)題[12]。同時(shí)集中式結(jié)構(gòu)也便于維護(hù)通信網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu),因?yàn)樵诩惺浇Y(jié)構(gòu)中,只有服務(wù)端需要維護(hù)一個(gè)表示通信網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)的數(shù)據(jù)結(jié)構(gòu)(例如路由表),而客戶(hù)端則無(wú)需關(guān)心和維護(hù)網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu),這大幅降低了開(kāi)發(fā)難度。

        此外,S-DDS各種實(shí)體的創(chuàng)建和刪除均由服務(wù)端負(fù)責(zé),客戶(hù)端只需調(diào)用相關(guān)接口,向服務(wù)端發(fā)送創(chuàng)建或刪除實(shí)體的數(shù)據(jù)包,服務(wù)端便在遠(yuǎn)端創(chuàng)建或刪除相應(yīng)的實(shí)體,并向客戶(hù)端返回操作結(jié)果。這樣設(shè)計(jì)的目的是方便對(duì)通信網(wǎng)絡(luò)中所有的實(shí)體進(jìn)行統(tǒng)一地管理,同時(shí)客戶(hù)端只需進(jìn)行接口調(diào)用、無(wú)需在本地創(chuàng)建實(shí)體,所以S-DDS可以運(yùn)行在性能極低的嵌入式設(shè)備上。

        2.1 服務(wù)端設(shè)計(jì)

        服務(wù)端是S-DDS通信的核心,所有消息均需經(jīng)服務(wù)端分發(fā)。服務(wù)端在收到不同的消息時(shí),需要根據(jù)消息的類(lèi)型采取不同的處理方式;在數(shù)據(jù)分發(fā)的過(guò)程中,服務(wù)端還需要保證數(shù)據(jù)分發(fā)的正確性和高效性,這是服務(wù)端設(shè)計(jì)的重點(diǎn)。

        服務(wù)端采用動(dòng)態(tài)路由的方式確定每種數(shù)據(jù)的目的地,其內(nèi)部維護(hù)了一張動(dòng)態(tài)路由表,用以表示主題與訂閱者之間的邏輯關(guān)系。服務(wù)端在收到客戶(hù)端發(fā)送的消息之后,會(huì)根據(jù)消息的類(lèi)型進(jìn)行相應(yīng)的處理,服務(wù)端處理一次消息的流程如圖3所示。服務(wù)端在接收到消息之后,先解析消息的主題和發(fā)布者,判斷消息的類(lèi)型,根據(jù)不同的類(lèi)型采取不同的操作。

        (1)如果是創(chuàng)建實(shí)體類(lèi)型的消息,則在服務(wù)端創(chuàng)建相應(yīng)的實(shí)體(例如創(chuàng)建參與者),如果創(chuàng)建成功則向發(fā)布者返回創(chuàng)建成功的信息,否則返回創(chuàng)建失敗的信息(例如參與者數(shù)量達(dá)到上限會(huì)導(dǎo)致創(chuàng)建失敗)。

        (2)如果是刪除實(shí)體類(lèi)型的消息,服務(wù)端則刪除相應(yīng)的實(shí)體(例如刪除參與者),如果刪除成功則向發(fā)布者返回刪除成功的信息,否則返回刪除失敗的信息(例如待刪除的實(shí)體未被創(chuàng)建則會(huì)導(dǎo)致刪除失敗)。

        (3)如果是普通類(lèi)型的消息,服務(wù)端先查找路由表,判斷主題是否在路由表中(即主題是否已經(jīng)注冊(cè)),如果已經(jīng)注冊(cè)則根據(jù)路由表將消息分發(fā)至相應(yīng)的訂閱者,否則向發(fā)布者返回主題未注冊(cè)的錯(cuò)誤信息。

        圖3 服務(wù)端處理消息的流程圖Fig.3 Flow chart of messages handling process of the server

        在上述服務(wù)的處理消息流程中,最關(guān)鍵的是查找訂閱了某個(gè)主題的訂閱者的信息,如何根據(jù)消息主題快速查找相應(yīng)的訂閱者是本文的研究重點(diǎn)之一。本文設(shè)計(jì)了一種動(dòng)態(tài)路由算法,它能夠快速地確定每個(gè)數(shù)據(jù)包的目的地,適應(yīng)嵌入式設(shè)備低性能的特點(diǎn),該算法描述如下。

        S-DDS服務(wù)器創(chuàng)建一個(gè)索引表IndexTable,其中的每一項(xiàng)對(duì)應(yīng)一個(gè)主題(即消息的APID),例如0x64的主題對(duì)應(yīng)于IndexTable[100];同時(shí)創(chuàng)建一個(gè)主題表TopicTable,用于存儲(chǔ)已發(fā)布的主題和訂閱了該主題的訂閱者的信息,如圖4所示。初始時(shí)將IndexTable和TopicTable的每一項(xiàng)均設(shè)置為默認(rèn)值,表示無(wú)該主題的消息發(fā)布,也沒(méi)有相關(guān)的訂閱者。當(dāng)創(chuàng)建某個(gè)主題時(shí),先在TopicTable中添加該主題(即APID)至一個(gè)值為默認(rèn)值的數(shù)組位置中,并在該位置創(chuàng)建一個(gè)空鏈表(鏈表用于存儲(chǔ)訂閱該主題的訂閱者的信息,包括服務(wù)類(lèi)型、進(jìn)程號(hào)、QoS策略等),然后將IndexTable的對(duì)應(yīng)項(xiàng)設(shè)置為T(mén)opicTable中存儲(chǔ)該主題的項(xiàng)的索引;例如當(dāng)創(chuàng)建APID為0x64的主題時(shí),假設(shè)此時(shí)已有10個(gè)主題發(fā)布,則將Router Table的第11項(xiàng),即TopicTable[10]設(shè)置為0x64,并創(chuàng)建一個(gè)空鏈表,同時(shí)設(shè)置Index ̄Table[100]為10。

        圖4 動(dòng)態(tài)路由表示意圖Fig.4 Diagram of dynamic routing table

        當(dāng)某一主題的消息到來(lái)時(shí),該算法可以以O(shè)(1)的時(shí)間復(fù)雜度確定有哪些訂閱者訂閱了該主題的消息。例如,服務(wù)端在收到主題為0x12的消息時(shí),先查找IndexTable[0x12]的值,發(fā)現(xiàn)其值為8,則直接查找TopicTable[8]即可獲取訂閱了0x12主題的消息的訂閱者,然后將消息分發(fā)至相應(yīng)的訂閱者即可。此外,動(dòng)態(tài)路由表可以在程序運(yùn)行期間動(dòng)態(tài)地進(jìn)行修改,使得通信過(guò)程十分靈活;例如在程序運(yùn)行期間,如果某個(gè)訂閱者訂閱了某一主題的消息,則只需在主題表中相應(yīng)主題的訂閱者鏈表增加該訂閱者節(jié)點(diǎn)即可。與之前的靜態(tài)路由方式相比,動(dòng)態(tài)路由方式無(wú)需在編碼階段對(duì)主題與其訂閱者進(jìn)行硬編碼,可以很好地支持通信節(jié)點(diǎn)的增加和刪除,為各個(gè)應(yīng)用程序提供了動(dòng)態(tài)加入和退出通信網(wǎng)絡(luò)的能力。

        2.2 客戶(hù)端設(shè)計(jì)

        在S-DDS中,客戶(hù)端是實(shí)際參與通信的進(jìn)程,客戶(hù)端使用S-DDS中間件進(jìn)行通信,其中客戶(hù)端在調(diào)用創(chuàng)建實(shí)體的方法時(shí),并不是在本地創(chuàng)建相應(yīng)的實(shí)體,而是向服務(wù)端發(fā)送創(chuàng)建實(shí)體的請(qǐng)求,實(shí)體由服務(wù)端創(chuàng)建,服務(wù)端在創(chuàng)建完成后向客戶(hù)端發(fā)送創(chuàng)建是否成功的響應(yīng)。這樣設(shè)計(jì)的目的是:①便于對(duì)通信過(guò)程進(jìn)行管理;②減小客戶(hù)端的內(nèi)存開(kāi)銷(xiāo),可以兼容低性能的設(shè)備。

        S-DDS中間件以構(gòu)件化的方式設(shè)計(jì),即將S-DDS的各種實(shí)體封裝為各種“類(lèi)”,并將各種“類(lèi)”統(tǒng)一在一個(gè)頭文件中供外部使用。S-DDS涉及的實(shí)體有參與者、主題、發(fā)布者、訂閱者等,這些實(shí)體的屬性、方法以及它們之間的關(guān)系如圖5所示。

        注:圖中的線(xiàn)段表示實(shí)體間的關(guān)系,箭頭表示組合關(guān)系,箭頭旁的數(shù)字表示數(shù)量,例如Participant和ParticipantType的箭頭表示一個(gè)參與者包含一個(gè)參與者類(lèi)型,Participant和Publisher的箭頭表示一個(gè)參與者能夠創(chuàng)建多個(gè)發(fā)布者(*號(hào)表示多個(gè))。

        客戶(hù)端使用S-DDS中間件進(jìn)行通信的步驟如下。

        (1)創(chuàng)建參與者,并設(shè)置參與者的類(lèi)型(ParticipantType)和QoS。

        (2)參與者調(diào)用CreatePublisher()方法創(chuàng)建發(fā)布者,或調(diào)用CreateSubscriber()方法創(chuàng)建訂閱者,同時(shí)將發(fā)布者或訂閱者與主題綁定。

        (3)發(fā)布者調(diào)用SendData()方法發(fā)送數(shù)據(jù)。

        (4)訂閱者調(diào)用ListenOn()方法監(jiān)聽(tīng)(接收)數(shù)據(jù)。

        以上接口簡(jiǎn)單易用,適合于航天器的軟件開(kāi)發(fā),并能滿(mǎn)足航天器軟件進(jìn)程間通信的需要,方便應(yīng)用程序開(kāi)發(fā)者學(xué)習(xí)使用。

        2.3 QoS設(shè)計(jì)

        S-DDS依照DDS標(biāo)準(zhǔn),設(shè)計(jì)了QoS策略,各個(gè)實(shí)體通過(guò)QoS策略的設(shè)置能夠滿(mǎn)足復(fù)雜的通信需要,從而解決當(dāng)前進(jìn)程間通信過(guò)程過(guò)于簡(jiǎn)單的問(wèn)題。QoS策略的設(shè)計(jì)并不是嚴(yán)格地從屬于服務(wù)端設(shè)計(jì)或客戶(hù)端設(shè)計(jì),而是需要客戶(hù)端與服務(wù)端共同實(shí)現(xiàn),以下是S-DDS提供的QoS策略。

        (1)心跳機(jī)制。該QoS針對(duì)參與者,有兩種選擇,即使用心跳機(jī)制和不使用心跳機(jī)制。參與者如果選擇了使用心跳機(jī)制,則在實(shí)體被創(chuàng)建之后,便開(kāi)始周期性地向服務(wù)端發(fā)送心跳數(shù)據(jù)包,服務(wù)端維護(hù)參與者的心跳計(jì)數(shù),在收到心跳數(shù)據(jù)包后會(huì)根據(jù)其來(lái)源重置對(duì)應(yīng)參與者的心跳計(jì)數(shù)。一旦心跳計(jì)數(shù)為零則認(rèn)為該參與者已經(jīng)掉線(xiàn),此時(shí)服務(wù)端會(huì)清空對(duì)應(yīng)參與者的所有信息,客戶(hù)端必須重新連線(xiàn)并創(chuàng)建參與者等實(shí)體才能繼續(xù)通信。

        (2)可靠傳輸。該QoS針對(duì)主題,有兩種選擇,即不可靠傳輸與可靠傳輸。如果某一主題選擇了不可靠傳輸方式,則該主題的訂閱者在收到消息后不發(fā)送確認(rèn)數(shù)據(jù)包;而如果該主題選擇了可靠傳輸方式,則相應(yīng)的訂閱者在收到消息后需要發(fā)送確認(rèn)數(shù)據(jù)包;發(fā)布者如果在規(guī)定時(shí)間內(nèi)未收到確認(rèn)數(shù)據(jù)包,則認(rèn)為訂閱者未成功接收消息,需要重新發(fā)送消息。

        3 S-DDS框架仿真與分析

        本文對(duì)S-DDS框架進(jìn)行了仿真,模擬實(shí)際星載軟件的進(jìn)程間通信過(guò)程,結(jié)果表明:在S-DDS中應(yīng)用程序僅需編寫(xiě)少量的代碼就能實(shí)現(xiàn)進(jìn)程間通信,大幅簡(jiǎn)化了開(kāi)發(fā)過(guò)程,同時(shí)通信過(guò)程由靜態(tài)方式變?yōu)閯?dòng)態(tài)方式,更加靈活便捷。此外,S-DDS提供的QoS策略能夠滿(mǎn)足復(fù)雜的通信需要,提升了進(jìn)程間通信的可配置性。

        3.1 動(dòng)態(tài)路由

        本文設(shè)計(jì)了兩個(gè)示例進(jìn)程(參與者)進(jìn)行通信,模擬實(shí)際的數(shù)據(jù)收發(fā)過(guò)程;其中進(jìn)程1發(fā)送數(shù)據(jù)(發(fā)布者),進(jìn)程2接收數(shù)據(jù)(訂閱者);通信過(guò)程產(chǎn)生的數(shù)據(jù)包以每個(gè)字節(jié)對(duì)應(yīng)兩個(gè)十六進(jìn)制字符的形式輸出至屏幕上,結(jié)果如圖6所示(圖6標(biāo)明了部分具有重要含義的字節(jié))。仿真結(jié)果表明:各個(gè)數(shù)據(jù)包的出現(xiàn)順序與客戶(hù)端使用S-DDS中間件進(jìn)行通信的步驟相同,并且各個(gè)數(shù)據(jù)包的格式正確,發(fā)布與訂閱的數(shù)據(jù)內(nèi)容(即“AA”)一致,由此驗(yàn)證了S-DDS通信過(guò)程的正確性。

        在目前基于星內(nèi)路由的航天器軟件通信框架中,通信過(guò)程需要在靜態(tài)路由表中配置,靜態(tài)路由表龐大復(fù)雜,配置繁瑣且易產(chǎn)生錯(cuò)誤,同時(shí)數(shù)據(jù)接收方在編碼階段即固定,不可動(dòng)態(tài)地更改,通信過(guò)程不靈活。而在S-DDS中應(yīng)用程序完全不需要配置路由表,僅需編寫(xiě)簡(jiǎn)單、少量的代碼即可實(shí)現(xiàn)進(jìn)程間通信的功能,且數(shù)據(jù)接收方(訂閱者)可以在運(yùn)行期間動(dòng)態(tài)變更。因此在S-DDS中,進(jìn)程間通信過(guò)程更加靈活便捷,并且S-DDS避免了繁瑣的配置路由表的過(guò)程,降低了開(kāi)發(fā)過(guò)程中產(chǎn)生錯(cuò)誤的可能性,并使軟件開(kāi)發(fā)過(guò)程更簡(jiǎn)單高效。

        圖6 S-DDS通信過(guò)程的數(shù)據(jù)包Fig.6 Data package of S-DDS communications process

        3.2 心跳機(jī)制

        針對(duì)心跳機(jī)制的驗(yàn)證,本文設(shè)計(jì)了2個(gè)進(jìn)程使用S-DDS通信,2個(gè)進(jìn)程均將QoS策略設(shè)置為使用心跳機(jī)制,定時(shí)向S-DDS服務(wù)端發(fā)送心跳數(shù)據(jù)包,同時(shí)人為地使某個(gè)進(jìn)程在通信過(guò)程中掉線(xiàn),模擬實(shí)際通信過(guò)程中進(jìn)程出現(xiàn)故障的情況;當(dāng)服務(wù)端檢測(cè)到有進(jìn)程掉線(xiàn)時(shí),輸出進(jìn)程掉線(xiàn)的信息。本文抓取了與心跳機(jī)制相關(guān)的數(shù)據(jù)包,將每個(gè)數(shù)據(jù)包以十六進(jìn)制字符串的形式輸出至屏幕,數(shù)據(jù)包的每個(gè)字節(jié)的含義與3.1節(jié)相同,結(jié)果如圖7所示。仿真結(jié)果表明:當(dāng)將參與者的QoS設(shè)置為使用心跳機(jī)制后,參與者會(huì)定期向S-DDS服務(wù)端發(fā)送心跳數(shù)據(jù)包,表明自己在線(xiàn),如果服務(wù)端長(zhǎng)時(shí)間未收到參與者的心跳數(shù)據(jù)包,則認(rèn)為其掉線(xiàn),這與方案設(shè)計(jì)相吻合。

        目前基于星內(nèi)路由的航天器軟件框架并不提供心跳機(jī)制策略,路由進(jìn)程無(wú)法對(duì)其他參與通信的進(jìn)程進(jìn)行監(jiān)聽(tīng),難以感知進(jìn)程是否在線(xiàn),而S-DDS提供了QoS策略支持心跳監(jiān)聽(tīng)的機(jī)制,當(dāng)需要對(duì)參與通信的進(jìn)程進(jìn)行監(jiān)聽(tīng)時(shí),客戶(hù)端只需調(diào)用S-DDS中間件即可實(shí)現(xiàn)心跳監(jiān)聽(tīng)的功能,因此與基于星內(nèi)路由的航天器軟件框架相比,S-DDS能對(duì)復(fù)雜的進(jìn)程間通信過(guò)程進(jìn)行配置,滿(mǎn)足復(fù)雜的進(jìn)程間通信需要。

        圖7 S-DDS心跳數(shù)據(jù)包Fig.7 Heartbeat data package of S-DDS

        3.3 可靠傳輸

        針對(duì)可靠傳輸機(jī)制的驗(yàn)證,本文設(shè)計(jì)了兩個(gè)進(jìn)程使用S-DDS進(jìn)行通信,其中進(jìn)程1為發(fā)布者、進(jìn)程2為訂閱者,發(fā)布者(訂閱者)發(fā)布(訂閱)的主題的QoS策略設(shè)置為使用可靠傳輸機(jī)制。與3.1節(jié)類(lèi)似,本文以十六進(jìn)制字符串的形式在屏幕上輸出每個(gè)數(shù)據(jù)包的各個(gè)字節(jié),且各個(gè)字節(jié)的含義與3.1節(jié)相同,其結(jié)果如圖8所示;在通信過(guò)程中,人為地使某次消息在被收到后不回復(fù)應(yīng)答,模擬實(shí)際通信過(guò)程中訂閱者未收到數(shù)據(jù)的情況。由圖8可以看出,當(dāng)QoS策略設(shè)置為可靠通信后,訂閱者在收到數(shù)據(jù)時(shí)會(huì)回復(fù)確認(rèn),當(dāng)訂閱者未收到數(shù)據(jù)時(shí)發(fā)布者會(huì)重發(fā)數(shù)據(jù),與設(shè)計(jì)方案相符。

        注:ack指確認(rèn)。

        在目前的基于星內(nèi)路由的軟件框架中,路由進(jìn)程僅能實(shí)現(xiàn)簡(jiǎn)單的數(shù)據(jù)包轉(zhuǎn)發(fā)功能,并不提供對(duì)可靠通信的支持,如果需要實(shí)現(xiàn)消息的可靠傳輸,則各個(gè)相關(guān)的應(yīng)用程序均需實(shí)現(xiàn)可靠傳輸?shù)耐ㄐ胚壿嫞@造成了各個(gè)應(yīng)用程序出現(xiàn)重復(fù)功能的代碼,且各段代碼質(zhì)量參差不齊,難以對(duì)軟件質(zhì)量進(jìn)行統(tǒng)一把控。而S-DDS通過(guò)QoS策略為可靠通信提供支持,客戶(hù)端僅需調(diào)用S-DDS中間件,編寫(xiě)少量代碼設(shè)置相關(guān)的QoS策略即可實(shí)現(xiàn)可靠通信的功能,這不僅能夠滿(mǎn)足復(fù)雜的通信需要,也降低了軟件開(kāi)發(fā)的工作量,提高了代碼的可復(fù)用性,有利于提升代碼質(zhì)量、提高軟件可靠性。

        4 結(jié)論

        本文針對(duì)現(xiàn)有航天器星務(wù)軟件通信框架的不足之處,利用數(shù)據(jù)分發(fā)服務(wù)DDS,提出了一種基于數(shù)據(jù)分發(fā)服務(wù)的航天器軟件通信框架S-DDS;同時(shí)對(duì)S-DDS進(jìn)行了仿真驗(yàn)證,分析所得具體結(jié)論如下。

        (1)S-DDS采用集中式的客戶(hù)-服務(wù)器模式實(shí)現(xiàn),各應(yīng)用程序是客戶(hù)端,S-DDS服務(wù)器是服務(wù)端,客戶(hù)端使用S-DDS中間件進(jìn)行通信,采用集中式結(jié)構(gòu)可以兼容當(dāng)前航天器軟件通信框架,便于管理通信過(guò)程,同時(shí)能夠降低開(kāi)發(fā)難度。

        (2)S-DDS實(shí)現(xiàn)了航天器軟件的進(jìn)程間通信功能,各進(jìn)程通過(guò)數(shù)據(jù)包交互,取代傳統(tǒng)的函數(shù)調(diào)用方式通信,這減小了模塊之間的耦合度,使代碼更易于更改、升級(jí)和維護(hù),為未來(lái)戰(zhàn)場(chǎng)多變的衛(wèi)星應(yīng)用場(chǎng)景,提供更加實(shí)時(shí)的應(yīng)對(duì)手段。

        (3)S-DDS采用動(dòng)態(tài)路由方式分發(fā)數(shù)據(jù),與目前的靜態(tài)路由方式相比,進(jìn)程間通信的過(guò)程更加靈活便捷,并且無(wú)需對(duì)路由表進(jìn)行繁瑣的手工配置,減少了軟件開(kāi)發(fā)的工作量,同時(shí)減小了配置出錯(cuò)的可能性,提高了軟件質(zhì)量。

        (4)S-DDS提供心跳機(jī)制、可靠傳輸?shù)萉oS策略,實(shí)現(xiàn)了更加強(qiáng)大的通信功能,應(yīng)用程序可以使用QoS對(duì)通信過(guò)程進(jìn)行配置,從而滿(mǎn)足復(fù)雜的通信需要。

        猜你喜歡
        路由表發(fā)布者服務(wù)端
        基于OSPF特殊區(qū)域和LSA的教學(xué)設(shè)計(jì)與實(shí)踐
        云存儲(chǔ)中基于相似性的客戶(hù)-服務(wù)端雙端數(shù)據(jù)去重方法
        新時(shí)期《移動(dòng)Web服務(wù)端開(kāi)發(fā)》課程教學(xué)改革的研究
        基于NDN的高效發(fā)布/訂閱系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
        組播狀態(tài)異常導(dǎo)致故障
        在Windows Server 2008上創(chuàng)建應(yīng)用
        廣告發(fā)布者的著作權(quán)審查義務(wù)問(wèn)題研究
        加權(quán)映射匹配方法的站內(nèi)搜索引擎設(shè)計(jì)
        基于新路由表的雙向搜索chord路由算法
        BGP創(chuàng)始人之一Tony Li:找到更好的途徑分配互聯(lián)網(wǎng)地址
        欲女在线一区二区三区| 欧美aa大片免费观看视频| 97夜夜澡人人爽人人喊中国片| 丝袜足控一区二区三区 | 少妇高潮惨叫久久久久电影69| 成人毛片av免费| 国产亚洲情侣一区二区无| 久草视频这里有精品| 激情亚洲的在线观看| 琪琪av一区二区三区| 一区二区二区三区亚洲| 久久久久久人妻无码| 亚洲精品国产suv一区88| 大伊香蕉在线精品视频75| 色婷婷狠狠97成为人免费| 丰满人妻被猛烈进入中文字幕护士 | 无码日韩AⅤ一区二区三区| 国产精品女丝袜白丝袜| 精品人妻少妇丰满久久久免| 久久久久av综合网成人| 亚洲国产av无码专区亚洲av| 国产自偷亚洲精品页65页| 国产一区二区欧美丝袜| 麻豆成人久久精品二区三区91| 亚洲美女自拍偷拍视频| 国产三级久久久精品麻豆三级| 91国视频| 欧美日韩亚洲国产无线码| 久久精品亚洲精品国产区| 天堂中文最新版在线中文| 丁香综合网| 经典亚洲一区二区三区| 亚洲精品无码不卡在线播he | 亚洲精品第一国产综合亚av| 三级网址在线| 成人性生交c片免费看| 刚出嫁新婚少妇很紧很爽| 插b内射18免费视频| 欧美日韩人妻| 少妇人妻中文字幕在线| 亚洲精品国偷拍自产在线|