朱曉攀, 陳 實
(1. 中國科學院國家空間科學中心, 北京 100190; 2. 中國科學院大學計算機與控制學院, 北京 100049)
在傳統大規模分布式仿真系統中往往包含多個子系統,各子系統又由多個功能模塊組成。一些功能模塊直接采用Windows平臺下的成熟商業軟件,一些則是基于Linux開源軟件二次開發得到,還有一些是根據用戶需求自主研發,這給系統集成帶來很大的挑戰。此外,當不同模塊間傳輸的圖像和數據量都很大時,如何將這些功能各異的模塊統一起來,并且實現不同模塊間數據的實時可靠[1]交互是實現分布式仿真系統的關鍵。在使用過程或未來設計中,各子系統有可能需要根據用戶需求做進一步的擴展,增加新的功能模塊,這對于分布式系統的靈活性也提出了較高的要求。
采用數據分發服務(data distributed service,DDS)來構建分布式仿真系統框架。該技術以數據為中心[2],采用發布/訂閱方式進行通信。相比于以對象為中心,采用客戶/服務器方式的公共對象請求代理體系結構(common object request broker architecture,CORBA)技術,DDS克服服務器端瓶頸制約的限制[3],提供20多種服務質量(quality of service,QoS) 策略[4],增強數據傳輸的魯棒性,能夠保證分布式系統之間實時、高效、可靠的數據交互能力。此外,DDS由于其容納異構能力強,能夠支持多種平臺、不同系統、各類語言開發的功能模塊,以DDS中間件[5]作為網絡通信的標準,支持隨時加入或退出的分布式仿真系統節點,具有很強的靈活性。這為未來整個分布式仿真系統的擴展升級提供了較好的支持。
因此,論文在DDS的基礎上構建像質處理提升仿真系統,確保不同平臺、不同編程語言、不同通信協議開發的模塊能夠“在合適的時間有效穩健地傳遞正確信息[6]”,使整個仿真系統可靠和高效的運行。
DDS最早應用于解決海軍艦船復雜網絡環境中大量軟件升級的兼容性問題,并于2003年被對象管理組織(object management group,OMG)接受,發布了《Data Distribution Service for Real-time Systems》規范。該規范標準化了分布式實時系統中數據發布、傳遞和接收的接口,并且定義了以數據為中心的發布/訂閱(data-centric publish-subscribe,DCPS) 機制[7],提供了一個與平臺無關的通信模型[8],使得DDS在大規模分布式系統集成方面有著特有的優勢。DDS通信模型如圖1所示。

圖1 DDS通信模型Fig.1 Communication model of DDS
DDS通信模型主要包括:數據發布者(Publisher)、數據訂閱者(Subscriber)、數據寫者(DataWriter)、數據讀者(DataReader)和主題(Topic)。Publisher可以創建并管理多個DataWriter,DataWriter向全局數據空間(global data space,GDS)發布數據并根據其類型差異標識不同的Topic,這樣就通過DataWriter和Publisher的協同來實現數據發布。Subscriber可以創建并管理多個DataReader,DataReader通過匹配GDS里面的Topic讀取所需要的信息,這樣就通過DataReader和Subscriber的協同來實現數據訂閱,從而通過發布/訂閱實現數據的分發、傳遞和接收。
目前,DDS被廣泛應用于各種分布式系統的構建。國外研究中,文獻[9]將DDS應用于分布式防空作戰模型的開發,對防空作戰指令進行主題化處理,通過仿真得出該模型在防空作戰領域具有很好的作戰效果;文獻[10]在原有的DDS模型中提出一種改進的自發現算法,能夠有效地消除數據信息報的局限性和隨機性,以減少網絡數據傳輸量,大幅度提高數據間首次可靠交付的能力。
國內研究中,文獻[11]將DDS技術用于飛行器測控系統,并通過加入數據過濾策略對DDS進行改進,豐富了原有的QoS策略,通過仿真論證,改進過的DDS很好地滿足了多任務、高實時的性能要求;文獻[12]基于DDS設計了船舶分布式通信系統,并通過引入3種結構,進行艦船模型多數量、交互信息多種類的仿真,可以證明DDS完全滿足船舶分布式通信對于實時性、高吞吐的要求。
總之,DDS由于在結構上靈活性、模塊上的異構性以及在數據傳輸方面高吞吐低時延[13]的特點,使其在分布式通信和仿真系統中得到廣泛應用。
像質處理提升仿真系統主要針對無人機、飛艇或衛星拍攝到的圖像進行仿真,并利用相關技術對仿真得到的圖像進行處理提升,最后從多個角度來對像質提升的結果進行評估,從而實現圖像仿真、處理提升、性能評估等功能為一體的全鏈路仿真處理。根據任務需求,像質處理提升仿真系統包含了多個子系統和功能模塊,不同模塊間需要實現海量圖像和數據的傳輸,在整個傳輸的過程中系統有如下需求:
(1) 按需分配。仿真系統包含了不同的子系統,子系統又由多個模塊組成,各個模塊對于數據的需求是不同的,在大量數據交互的同時需要保證接收到正確的數據。DDS通過創建發布者和訂閱者,并對不同數據標識唯一的主題,發布者將數據發送到GDS,訂閱者通過主題匹配在GDS查找到自己所需要的數據,實現數據的按需分配[14]。
(2) 實時性。仿真系統的各模塊處理之后所產生的數據一方面供其他模塊進行使用,另一方面也要快速地呈現在可視化界面上,整個過程需要在很短的時間內進行。DDS不存在服務器端瓶頸制約的影響,其豐富的QoS策略支持多點傳輸[15]、異步傳輸和并行處理,能夠在海量數據交互的同時,很好地保證整個運行過程的高實時性[16]。
(3) 可靠性。仿真系統包含了不同的子系統模塊,各模塊采用不同的處理平臺、操作系統、傳輸協議等,對于數據之間的可靠交互提出了很大的挑戰。DDS針對不同的情況制定了從發布到訂閱整個過程中不同類型的QoS策略,如Duration,Reliability等可以實現各節點之間的可靠通信。
(4) 擴展性。仿真系統在未來有可能會作進一步升級改造,添加一些新的功能模塊,需要具備較好的可擴展性。DDS具有優異的跨平臺特性,支持Windows、Linux、Andriod等操作系統之間的互聯、互通和互操作,支持區分服務(differentiated service,DiffServ)網絡[17]、軟件定義網絡[18](software defined network,SDN)和無線傳感器網絡[19]等多種形式,支持傳輸控制協議(transmission control protocol,TCP)和用戶數據報協議(user datagram protocol,UDP)等多種傳輸協議,支持多種數據類型,支持多種開發語言和處理器[20]。進行新的功能擴展時,只需要在原有的基礎上增加發布者和訂閱者以及相關的主題即可,不需要改變復雜的系統架構,從而保證系統的可擴展性。
(5) 高吞吐率。仿真系統設計時需要傳輸10 000×10 000 (286 MB)的超大圖像,同時又包含海量的文本數據,隨著頻繁的發布和訂閱,系統的并發數逐漸增多,響應時間不斷變長,對于吞吐率是一個很高的要求。DDS各分布式節點之間都是一個平等的關系[21],沒有服務器和客戶端之間的主從關系,沒有服務器端的瓶頸制約,可以實現任意兩點或多點之間的高吞吐[22]通信。
像質處理提升仿真系統設計了系統管控、圖像仿真、處理提升、性能評估、可視化5個子系統,各子系統又包含了一些功能模塊,整個分布式系統的組成如圖2所示,各子系統之間通過DDS中間件來進行通信,整個通信結構如圖3所示。

圖2 系統組成Fig.2 System configuration

圖3 基于DDS的通信結構Fig.3 DDS-based communication structure
(1) 系統管控:控制著其他所有子系統,負責人機交互的參數配置和模塊選擇,向其他子系統或功能模塊發布標識了不同主題的數據,同時訂閱其他子系統或功能模塊發布的數據。
(2) 系統可視化:將系統管控配置的參數和信息顯示出來,將圖像仿真、處理提升和性能評估3個子系統生成的數據結果展示出來,同時實時顯示系統運行狀態,便于用戶查看。
(3) 圖像仿真:集發布/訂閱功能為一體的子系統。該系統包含了大氣傳輸、光學系統、信號傳輸等多個功能模塊。這些功能模塊從系統管控訂閱所需數據,作進一步處理并發布數據供其他功能模塊使用,同時將運行狀態和結果發布給可視化模塊。
(4) 處理提升:集發布/訂閱功能為一體的子系統。該子系統包含基于小波變換和基于混合濾波算法等功能模塊。這些功能模塊從圖像仿真子系統訂閱所需的數據,作進一步處理并發布數據供其他系統使用,同時將運行狀態和結果發布給可視化模塊。
(5) 性能評估:集發布/訂閱功能為一體的子系統。該子系統又包含了圖像傳函、圖像信噪比、處理速度評估等功能模塊,這些功能模塊從處理提升子系統訂閱所需的數據,作進一步處理并發布數據供其他系統使用,同時將運行狀態和結果反饋到可視化。
整個分布式仿真系統在系統管控統一調度管理下運行,首先用戶從數據庫導入數據文件(即配置信息),通過系統管控的人機交互界面輸入相關參數,選擇需要運行的功能模塊,然后發布數據推進仿真流程,并實時地將運行結果展現在可視化界面上。整個系統的運行流程如圖4所示。

圖4 系統運行流程Fig.4 System running flow
(1) 圖像仿真、處理提升、性能評估3個子系統及其包含的功能模塊都可以在用戶界面進行選用。運行過程中,3個子系統按照圖4虛線箭頭所示是一個串行的關系,當有多幅圖像處理時系統可以并行執行。
(2) 圖像仿真、處理提升、性能評估3個子系統既是發布者也是訂閱者。在整個過程當中,一方面作為訂閱者,對所需主題數據進行實時監聽,通過主題匹配訂閱數據;另一方面又能及時地將處理過的數據發布出去,供其他系統使用。
在開源OpenDDS的基礎上進行二次開發,對相關函數進行封裝,形成了分布式仿真系統的通用接口。每一個分布式節點都可以進行發布和訂閱的相關操作,從而實現對某一主題數據的實時交互。在該通用接口里面,定義了一些數據類和函數,其接口的實現就是通過數據類和函數來完成的,以下是幾個重要的數據類和函數。
(1) Data類接口
Data(String from, int comret, int size, String parameters, int id, int count)
Data類里面定義了傳遞數據的發送方、命令結果、大小、傳遞參數、主題數據的id號和計數器6個參數,包含了主題數據的全部信息,是整個發布和訂閱過程傳遞的核心。
(2) DDSInterface類接口
該類繼承了DDS-DataReaderListenerLocalBase接口,負責完成訂閱方訂閱數據的具體實現。
(3) PubSub類接口
該類包含了以下函數:
① initial(String[] args)
該函數實現了對DDS的初始化,生成對應的發布方和訂閱方,完成通信所需的配置環境和文件,參數指定了系統的IP地址和端口號。
② createTopic(String topic)
該函數實現了對不同數據的主題創建,作為發布/訂閱過程傳遞和接收的命令標識,參數指定了主題名稱。
③ createPublisher()
該函數實現了對發布者的創建。
④ createSubscriber()
該函數實現了對訂閱者的創建。
⑤ createDataWriter(String topicName, boolean reliable)
該函數創建了一個數據寫者,是發布者發布主題的實現工具,參數指定了主題名,以及是否需要可靠傳輸。
⑥ createDataReader(String topicName, boolean realible)
該函數創建了一個數據讀者,是訂閱者訂閱主題的實現工具,參數指定了主題名、數據接口類以及是否需要可靠傳輸。
⑦ sendData(String topicName, Data data, int num, boolean reliable, boolean waitForAcks)
該函數實現了發布方對數據的發布,參數指定了發送數據的主題、發送的數據、數量以及是否需要可靠傳輸,是否需要應答。
⑧ receiveData(String topicName, Data data, int num)
該函數實現了訂閱方對數據的接收,參數指定了接收數據的主題、接收的數據以及個數。
⑨ cleanUp()
該函數在發布/訂閱完成后,負責關閉數據節點之間的通信通道,釋放掉占用的資源。
(4) QoS接口策略
setQoS(QoS_policy)
在DDS中間件中,發布訂閱雙方都支持多種QoS策略。如Duration策略為后期加入的DataReader提供連接DataWriter不同等級的權限,根據數據時間要求排出優先級,確保數據有序傳輸;DurabilityService策略針對不同的數據需求提供特定的服務類型,一方面保證數據的可靠存儲,另一方面又能夠及時清理多余數據保證運行內存;DeadLine策略支持在固定周期更新發布的數據,保證發布訂閱過程中數據的實時更新;Reliability策略提交歷史記錄中的所有數據,確保所有的數據能夠傳遞到目的節點。總之,DDS包含豐富的QoS策略能夠滿足用戶對于各種數據傳輸多樣化的需求。
圖1提供了DDS的通信模型,給出了發布/訂閱過程的概念實現,這里結合像質處理提升仿真系統,以圖像仿真子系統的大氣傳輸模塊為例,給出了發布方訂閱方的具體數據傳輸流程,如圖5所示。

圖5 發布/訂閱流程實現Fig.5 Realization of publishing/subscribing process
仿真系統中系統管控用來對整個系統的功能模塊選擇、參數配置以及運行控制進行操控,可視化界面是將仿真出來的結果和相關的參數顯示出來,而其他子系統集發布/訂閱功能為一體,訂閱相關主題進行二次處理并將處理過的數據進行發布供其他模塊使用,整個過程涉及到各子系統模塊不同主題的發布和訂閱。下面以系統管控和圖像仿真子系統的核心代碼為例,給出發布方和訂閱方的具體代碼實現,如表 1和表 2所示。

表1 系統管控通信代碼

表2 圖像仿真通信代碼
與傳統TCP/IP通信方式相比,DDS具有更豐富的QoS策略,因此在理論上DDS具有更好的傳輸性能。為了驗證DDS數據傳輸的性能,論文將DDS與傳統的TCP/IP協議進行了比較,參數設置如表 3所示。

表3 參數設置
根據系統設計設置一個發送節點和4個接收節點,發送節點和接收節點間通信距離大約為30 km,節點間通過帶寬為3.1 kHz的傳統電話信號進行數據的有線傳輸,傳輸數據為一組大小分別為10 MB,45 MB,99 MB,143 MB的圖像。發送節點采用兩種不同的傳輸協議(DDS和TCP/IP)發送圖像數據,并對其他4個節點的傳輸時延、吞吐率和丟包率進行歸一化處理,以多次測量的均值作為最終結果,具體結果如下。
(1) 傳輸時延:指發送節點從開始發送數據到接收節點完全收到所有數據所需要的時間。測試結果如圖6所示,可以看到,基于DDS和TCP/IP兩種協議的傳輸時延都隨著圖像增大而增大,但是基于TCP/IP的傳輸時延增幅較大且一直高于基于DDS的傳輸時延。

圖6 傳輸時延對比Fig.6 Comparison of transmission delay
(2) 吞吐率:指在單位時間內通過某個網絡傳輸的數據量單位。測試結果如圖7所示,基于DDS和TCP/IP兩種協議的吞吐率隨著圖像的增大保持相對平穩,但是基于DDS傳輸的吞吐率要比傳統TCP/IP傳輸協議的吞吐率高3倍左右。

圖7 吞吐率對比Fig.7 Comparison of throughput
(3) 丟包率:是指測試中所丟失數據包數量占所發送數據包總數的比率。通常,千兆網卡流量大于200 Mbps時,丟包率小于萬分之五是屬于正常范圍;百兆網卡在流量大于60 Mbps時,丟包率小于萬分之一屬于正常范圍。測試采用的Intel 1350-T2的全雙工千兆網卡,在吞吐率的測試中,基于DDS的傳輸流量為310 Mbps左右,基于TCP的傳輸流量為100 Mbps左右,如圖8所示的測試結果表明,在進行多次發包時基于DDS的丟包率遠遠低于萬分之五的標準,而且基于DDS的傳輸的丟包率只有TCP/IP傳輸協議的1/4左右。

圖8 丟包率對比Fig.8 Comparison of packet loss rate
像質處理提升仿真系統是整合了圖像仿真、處理提升、性能評估等子系統為一體的分布式仿真系統。經過第5.1節性能測試與驗證得出,DDS在圖像數據傳輸方面相比于傳統的TCP/IP具有更低的傳輸時延、丟包率和更高的吞吐率,因此采用基于DDS的原理來實現系統設計。
由于系統包含了海量的圖像數據同時為了測試各子系統功能的完備性,以其中一幅衛星拍攝到的原始圖像作為運行的示意,對其進行仿真作進一步的提升處理,然后通過不同的指標來進行評價。通過對各子系統處理得到的圖像與原始圖像進行對比,驗證DDS能夠很好地支持和實現各分布式子系統的功能。原始圖像如圖9所示。

圖9 原始圖像Fig.9 Original image
(1) 圖像仿真
圖像仿真子系統通過DDS訂閱系統管控發布的數據,對圖像做不同算法的仿真處理,并將處理過的數據標識不同主題發布到GDS,可視化子系統通過訂閱圖像仿真子系統模塊的主題將結果展現出來。如圖10所示,在可視化界面左半部分為原始圖像,右半部分為圖像仿真生成的圖像,從而實現圖像仿真的功能。

圖10 圖像仿真結果Fig.10 Image simulation result
(2) 處理提升
處理提升子系統通過DDS訂閱圖像仿真子系統發布的數據,對圖像做進一步的提升處理,并將處理過的數據標識不同主題發布到GDS,可視化子系統通過訂閱處理提升子系統模塊的主題將結果展現出來。如圖11所示,在可視化界面左半部分為原始圖像,右半部分為經過處理提升生成的圖像,從而實現處理提升的功能。

圖11 圖像處理提升結果Fig.11 Image quality improvement result
(3) 性能評估
性能評估子系統通過DDS訂閱處理提升子系統發布的數據,采用不同的評價指標進行評估,并將處理過的數據標識不同主題發布到GDS,可視化子系統通過訂閱性能評估子系統模塊的主題將結果展現出來。如圖12所示,圖像左上部分為原始圖像,右上部分為經過性能評估生成的圖像,從而實現性能評估的功能。

圖12 性能評估結果Fig.12 Performance evaluation result
本小節對仿真系統的網絡性能和模塊功能進行測試。通過與傳統TCP/IP協議在傳輸時延、吞吐率、丟包率3方面的比較,驗證了基于DDS的傳輸協議在傳遞相同圖像時具有更低的時延、丟包率和更高的吞吐率;通過對圖像仿真、處理提升、性能評估子系統的功能測試,驗證了DDS能夠很好地支撐分布式系統的仿真運行。
論文搭建了基于DDS的分布式仿真系統,該系統突破了傳統協議中服務器端的瓶頸制約,滿足了系統對于圖像數據的高吞吐和低時延傳輸需求。DDS所具有的各種QoS策略,也使得設計的分布式仿真系統具有高效、可靠、靈活、可擴展的特點。通過對仿真系統的性能和功能進行測試,證明了DDS協議能夠很好地解決分布式條件下高實時、高吞吐、低時延的圖像可靠傳輸問題,滿足像質處理提升仿真需求。
在未來工作中,針對DDS具有的綜合集成能力、異構系統接入能力、信息共享能力和實時數據傳遞能力,可以將DDS應用在航天、航空、電子、船舶等大規模分布式實時系統,通過分析眾多QoS策略在復雜網絡環境、不同開發語言、不同處理器、跨平臺方面對于數據傳輸性能的影響,設置最佳QoS策略,為后續復雜分布式系統的搭建和實現提供必要的基礎研究。