李 康,閆 妍,吳曉斌
(航空工業(yè)西安航空計算技術(shù)研究所 陜西 西安 710065)
目前機載航電系統(tǒng)已經(jīng)從分立式、聯(lián)合式逐步轉(zhuǎn)變?yōu)橐跃C合核心處理機(integrated core processor,ICP)為核心的綜合化模塊化航空電子結(jié)構(gòu),網(wǎng)絡傳輸介質(zhì)由單一傳輸介質(zhì)轉(zhuǎn)變?yōu)槎喾N傳輸介質(zhì)的集成,處于不同功能單元上的分布式機載軟件之間的通信關(guān)系變得越來越復雜,系統(tǒng)復雜度越來越高[1-2]。 傳統(tǒng)的機載通信中間件大多針對某一特定類型的傳輸介質(zhì),例如光纖、1394 總線等,這些傳輸介質(zhì)可能是由多個廠商提供的硬件設備,采用不同的操作系統(tǒng),具有特定的數(shù)據(jù)傳輸標準,提供給應用軟件的接口也各不相同,無法做到傳輸介質(zhì)對應用軟件的透明化,而且通信關(guān)系大多需要靜態(tài)配置,嚴重缺乏靈活性。
對象管理組織(object management group, OMG)制定的數(shù)據(jù)分發(fā)服務(data distribution service,DDS)標準定義了以數(shù)據(jù)為中心的發(fā)布/訂閱機制,提供了一個與平臺無關(guān)的數(shù)據(jù)通信模型,并且支持豐富的服務質(zhì)量策略(quality of service,QoS)控制發(fā)布/訂閱通信,指定所需要的數(shù)據(jù)傳輸?shù)馁|(zhì)量行為,能最大化滿足用戶對通信質(zhì)量的需求[3]。 DDS 具有低時延、高吞吐量、松耦合等優(yōu)點,主要應用在要求高性能、強實時、資源限制的關(guān)鍵領(lǐng)域[5-6]。因此,本文以DDS 為基礎(chǔ),結(jié)合機載分布式應用軟件的實際需求,設計并實現(xiàn)出一種數(shù)據(jù)發(fā)布訂閱服務軟件,并在航電系統(tǒng)仿真環(huán)境下對軟件進行系統(tǒng)的功能和性能驗證。
如圖1 所示,數(shù)據(jù)發(fā)布訂閱服務軟件架構(gòu)分為接口層、核心層、適配層[7-9]。
圖1 軟件架構(gòu)
接口層向應用軟件提供統(tǒng)一的滿足未來機載能力環(huán)境(future airborne capacity environment, FACE)中間件標準v2.1 的傳輸服務段(transport services segment, TSS)接口,包括初始化、創(chuàng)建連接、刪除連接、獲取連接參數(shù)、發(fā)送消息、接收消息和注冊回調(diào)函數(shù),以支持應用軟件以輪詢和回調(diào)兩種方式接收數(shù)據(jù)。
核心層提供以數(shù)據(jù)為中心的發(fā)布/訂閱通信,支持基于主題進行數(shù)據(jù)通信,并支持多種QoS 策略,包括有效性、截止期、基于時間過濾、歷史數(shù)據(jù)、資源限制、可靠性、持久化、所有權(quán)和所有權(quán)強度。 此外,核心層支持自發(fā)現(xiàn)機制,用于發(fā)布/訂閱通信時寫者和讀者的動態(tài)組網(wǎng)。
操作系統(tǒng)和網(wǎng)絡適配分別屏蔽操作系統(tǒng)和網(wǎng)絡環(huán)境的差異,向應用軟件提供統(tǒng)一的操作系統(tǒng)和網(wǎng)絡通信接口,支持常用的Windows、Linux 以及國產(chǎn)天脈操作系統(tǒng),支持機載常用的光纖總線、1394 總線以及用戶數(shù)據(jù)報協(xié)議(user datagram protocol,UDP)網(wǎng)絡,同時支持用戶自行擴展操作系統(tǒng)適配和網(wǎng)絡插件。
對機載航電系統(tǒng)來說,數(shù)據(jù)通信通常采用靜態(tài)配置方式,即相關(guān)的配置數(shù)據(jù)在軟件實際部署前已經(jīng)由系統(tǒng)綜合人員預先確定下來。 數(shù)據(jù)發(fā)布訂閱服務軟件根據(jù)用戶提供的配置數(shù)據(jù)完成發(fā)布/訂閱服務初始化,如圖2 所示,配置數(shù)據(jù)包括傳輸服務配置、連接配置以及QoS 配置。
圖2 配置結(jié)構(gòu)圖
傳輸服務配置:處于不同功能單元上的分布式應用節(jié)點對應一份傳輸服務配置,由節(jié)點ID 唯一標識;發(fā)布/訂閱服務需要對每種發(fā)布/訂閱消息建立虛擬的連接,由用戶指定所有需要處理的發(fā)布/訂閱消息對應的連接信息,包括連接的總個數(shù)和每個連接具體的配置。
連接配置:航電系統(tǒng)基于主題進行數(shù)據(jù)傳輸,每個連接處理一種基于主題的發(fā)布/訂閱消息,通過主題ID 唯一標識,根據(jù)連接方向確定該主題為發(fā)布主題還是訂閱主題;由用戶確定該連接對應的消息類型、能夠傳輸?shù)淖畲笙㈤L度,以及本條消息相關(guān)的QoS 配置。
QoS 配置:設置本條發(fā)布/訂閱消息具體的QoS 策略,包括9 種具體的策略,用戶根據(jù)網(wǎng)絡帶寬、可靠傳輸、等待時間、資源配置等進行個性化配置。
DDS 標準定義了6 類實體對象完成發(fā)布/訂閱通信,包括域參與者、發(fā)布者、訂閱者、主題、數(shù)據(jù)寫者和數(shù)據(jù)讀者。 域參與者屬于某個通信域,包括若干個發(fā)布者、訂閱者和主題,負責創(chuàng)建、刪除和管理這些實體;發(fā)布者負責發(fā)送數(shù)據(jù),并創(chuàng)建、刪除和管理數(shù)據(jù)寫者;訂閱者負責接收數(shù)據(jù),并創(chuàng)建、刪除和管理數(shù)據(jù)讀者;主題定義數(shù)據(jù)寫者和數(shù)據(jù)讀者相互通信時消息的數(shù)據(jù)結(jié)構(gòu),每個數(shù)據(jù)寫者和數(shù)據(jù)讀者必須與一個主題綁定。 數(shù)據(jù)寫者為應用軟件提供發(fā)送接口,負責將應用數(shù)據(jù)放入發(fā)送緩沖區(qū);數(shù)據(jù)讀者為應用軟件提供接收接口,負責從接收緩沖區(qū)讀取數(shù)據(jù);基于DDS 通信,只有處于同一個域的實體才可以通過主題進行通信,不同域的實體不能通信。 此外,6 類實體對象都具有各自的QoS 策略,共計22 種QoS 策略。
由于機載嵌入式環(huán)境下的計算資源、網(wǎng)絡帶寬等限制以及具體的使用場景,對DDS 標準進行裁剪和自主化定制:
(1)機載嵌入式環(huán)境下不再區(qū)分通信域,所有分布式應用均默認處于一個域,可以直接通過主題進行數(shù)據(jù)傳輸;
(2)主題不再作為實體對象,只作為消息的標識,且不再由主題定義消息的數(shù)據(jù)結(jié)構(gòu),由系統(tǒng)綜合人員通過接口控制文件(interface control document,ICD)進行定義;
(3)將DDS 標準規(guī)定的6 類實體裁剪到3 類,包括參與者、寫者和讀者。 每個寫者和讀者必須與一個主題綁定。 參與者與機載分布式應用一一對應,負責創(chuàng)建、刪除和管理寫者和讀者;寫者為應用軟件提供發(fā)送接口,維護發(fā)送緩沖區(qū),負責將應用數(shù)據(jù)放入發(fā)送緩沖區(qū)并發(fā)送主題數(shù)據(jù);讀者為應用軟件提供接收接口,維護接收緩沖區(qū),負責接收主題數(shù)據(jù)并放入接收緩沖區(qū)。
(4)將QoS 策略裁剪到9 種,且只與寫者/讀者綁定,每個寫者/讀者均需要配置自身的QoS 策略,用來對寫者和讀者之間的發(fā)布/訂閱通信進行控制。
裁剪和自主化定制后的發(fā)布/訂閱模型圖如圖3 所示,該模型相比于DDS 標準的發(fā)布/訂閱模型具有以下優(yōu)點:
圖3 基于主題的發(fā)布/訂閱模型圖
(1)將主題與ICD 綁定,大幅度提高航電系統(tǒng)集成人員的可操作性,減少應用軟件數(shù)據(jù)結(jié)構(gòu)定義的冗余;
(2)簡化數(shù)據(jù)發(fā)送和接收涉及的數(shù)據(jù)結(jié)構(gòu),縮短DDS協(xié)議包頭長度,減少軟件自身及網(wǎng)絡傳輸占用的內(nèi)存;
(3)優(yōu)化發(fā)送、接收和自發(fā)現(xiàn)流程,減少內(nèi)存拷貝次數(shù),縮減數(shù)據(jù)發(fā)送和接收的協(xié)議處理時間,提高動態(tài)組網(wǎng)效率。
數(shù)據(jù)發(fā)布訂閱服務軟件狀態(tài)包括初始化、就緒、匹配及停止4 種,各狀態(tài)間的轉(zhuǎn)換關(guān)系如圖4 所示。
圖4 軟件狀態(tài)轉(zhuǎn)換圖
(1)系統(tǒng)上電,操作系統(tǒng)啟動后,軟件處于初始化狀態(tài);
(2)根據(jù)應用軟件傳入的傳輸服務配置進行初始化,記錄配置數(shù)據(jù)并申請所需的系統(tǒng)資源,如果初始化成功則軟件處于就緒狀態(tài),此時等待遠程主題上線;如果初始化失敗則軟件轉(zhuǎn)入停止狀態(tài);
(3)如果通過自發(fā)現(xiàn)完成主題發(fā)現(xiàn),判斷遠程主題上線,則軟件處于匹配狀態(tài),此時已建立數(shù)據(jù)傳輸通道,用戶可以通過寫者和讀者發(fā)送和接收消息;
(4)如果連接中斷導致遠程主題下線,則軟件回到就緒狀態(tài),此時需要重新等待遠程主題上線;
(5)如果初始化失敗或者運行過程中系統(tǒng)掉電或崩潰,軟件停止工作,不再提供服務。
3.3.1 航電系統(tǒng)應用軟件發(fā)送主題消息的詳細流程如下:
(1)應用軟件調(diào)用初始化接口完成數(shù)據(jù)發(fā)布訂閱服務初始化,并調(diào)用創(chuàng)建連接接口創(chuàng)建主題對應的寫者/讀者,此后參與者開始接收消息;
(2)數(shù)據(jù)發(fā)布訂閱服務軟件在航電系統(tǒng)內(nèi)通過自發(fā)現(xiàn)機制動態(tài)組網(wǎng),完成參與者和主題的自發(fā)現(xiàn);
(3)應用軟件調(diào)用獲取連接參數(shù)接口獲取連接id,此時根據(jù)連接對應的主題id 檢索參與者的本地寫者表,如果不存在該主題返回錯誤;如果存在該主題返回其對應的連接id;
(4)應用軟件調(diào)用發(fā)送消息接口,由主題對應的寫者發(fā)送消息;
(5)編者將用戶消息放入發(fā)送緩沖區(qū),并檢索遠程讀者表,如果存在已經(jīng)建立自發(fā)現(xiàn)的遠程讀者,則通過網(wǎng)絡向這些遠程讀者發(fā)送用戶消息,否則,忽略本條主題消息。
3.3.2 航電系統(tǒng)應用軟件接收主題消息的詳細流程如下:
(1)應用軟件調(diào)用初始化接口完成數(shù)據(jù)發(fā)布訂閱服務初始化,并調(diào)用創(chuàng)建連接接口創(chuàng)建主題對應的寫者/讀者,此后參與者開始接收消息;
(2)數(shù)據(jù)發(fā)布訂閱服務軟件在航電系統(tǒng)內(nèi)通過自發(fā)現(xiàn)機制動態(tài)組網(wǎng),完成參與者和主題的自發(fā)現(xiàn);
(3)參與者收到主題消息,首先檢索參與者的本地讀者表,如果不存在該主題,直接忽略本條主題消息;如果存在該主題,再檢索該主題的遠程寫者表,若存在且遠程寫者已上線,則放入接收緩沖區(qū),否則,忽略本條主題消息;
(4)應用軟件調(diào)用獲取連接參數(shù)接口獲取連接id,此時根據(jù)連接對應的主題id 檢索參與者的本地讀者表,如果不存在該主題返回錯誤;如果存在該主題返回其對應的連接id;
(5)應用軟件調(diào)用接收消息接口,從主題對應的讀者接收緩沖區(qū)讀取消息。
數(shù)據(jù)發(fā)布訂閱服務軟件已經(jīng)在航電系統(tǒng)地面仿真環(huán)境下完成系統(tǒng)集成和功能、性能測試。 硬件環(huán)境為ICP 的通用輸入輸出(general process input/output, GPIO)模塊,軟件環(huán)境包括國產(chǎn)天脈1、天脈3 嵌入式操作系統(tǒng),網(wǎng)絡環(huán)境包括光纖通道(fibre channel,F(xiàn)C)總線和UDP 網(wǎng)絡,測試情況如表1 所示。
表1 數(shù)據(jù)發(fā)布訂閱服務軟件測試
通過以上測試結(jié)果可以看出,數(shù)據(jù)發(fā)布訂閱服務軟件發(fā)布/訂閱功能正常,時延及吞吐量性能滿足要求,且長時間運行仍能保持穩(wěn)定狀態(tài),充分證明設計方案的可行性。
本文在DDS 的基礎(chǔ)上,根據(jù)機載嵌入式環(huán)境限制及需求,設計了一種航電系統(tǒng)數(shù)據(jù)發(fā)布訂閱服務軟件,支持以數(shù)據(jù)為中心的基于主題的發(fā)布/訂閱通信,為應用軟件屏蔽操作系統(tǒng)和網(wǎng)絡差異,提供統(tǒng)一的傳輸服務端接口,大大提高了機載分布式應用軟件的可移植性。 同時基于主題的發(fā)布/訂閱服務增加了機載分布式節(jié)點的網(wǎng)絡靈活性,滿足機載分布式應用的低時延、高可靠性、松耦合的要求。 在下一步研究工作中,將進一步擴展支持的QoS 策略,優(yōu)化數(shù)據(jù)通信過程,同時擴展傳輸服務以支持其他通信模式。