周 雋,劉海峰,林福良
(北京控制與電子技術研究所 信息系統工程重點實驗室,北京 100038)
隨著現代軍事科學技術的發展,指控系統的系統復雜度和研發規模迅速擴大,系統集成的難度和風險都在大幅度提高.DDS以數據為中心的發/訂閱模型很好的實現了分布式系統在空間、時間、數據流上的低耦合性為解決指控系統中各種異構節點的集成問題,以及指控系統的擴展性,抗毀傷能力的提高提供了良好的解決方案.然而指控系統作為一種特殊的實時分布式系統,其還存在網絡帶寬不一,帶寬較小且利用率低,信道傳輸不穩定,通信控制復雜等諸多特點.市面上完全按照標準DDS規范開發的商用實時數據分發服務系統軟件是無法滿足指控系統的需求的,必須對其提出一些改進才能滿足指控系統對數據分發服務的特殊需求.
傳統的網絡通信模型主要包括三種.
(1)點對點模型(如圖1):點對點模型是通信模型中最簡單的形式,其只支持一對一的連接通信,傳統的電話網絡是點對點模型的一個典型例子.該模型顯然無法滿足作戰指控系統中多節點間同時進行數據通信的需求.

圖1 點對點模型示意圖
(2)客戶端/服務器(C/S)模型:針對點對點模型的可擴展性差問題產生了客戶端/服務器模型,如圖2所示.客戶端/服務器模型指定一個特殊的服務器節點,它可以同時連接多個客戶端節點,是一個“多對一”的架構.C/S模型很好的解決了點對點模型的擴展性問題,但C/S模型存在單點失效和服務器瓶頸等問題,從而導致其無法滿足作戰指控系統對于大規模數據的實時的發送/接收以及對抗毀傷性強等要求.

圖2 客戶端/服務器模型示意圖
(3)發布/訂閱 (P/S)模型:如圖 3 所示,發布/訂閱模型是一種典型的分布式模型.該模型中各通信節點主要通過關聯主題(Topic,即數據的名稱和定義)來進行通信,各通信節點只需申明其要發布和訂閱的Topic即可進行通信,無需知道對方的其他信息,發布/訂閱的數據在發布者和訂閱者之間直接傳遞,省去了服務器節點.從而有效的降低了系統中各節點間的時間,空間,數據流的耦合度.能夠很好的滿足對數據具有高實時性,大數據量,可擴展性強等要求的網絡通信系統.

圖3 發布/訂閱模型示意圖
DDS規范是一個由對象管理組織(OMG)發布的基于發布/訂閱模型的分布式實時應用系統中數據傳輸的規格說明書.DDS規范描述了兩個獨立的層次接口:一層是低層的以數據為中心的發布/訂閱 (DCPS)層;另一層是一個高層的數據本地重構層 (DLRL),這一層是可選的.DCPS模型層是DDS規范的核心,為應用程序進行數據的發布/訂閱提供了基本的架構,以及確保數據能夠準確有效地傳輸給適當的接收者,并提供了一個與平臺無關的數據模型[2].
DCPS模型(如圖4)通過構建一個共享的“全局數據空間”的概念,所有的數據都存在于此空間中,各分布式節點通過簡單的讀,寫操作便可以訪問這些數據對象.DCPS模型中主要包括以下實體:Publisher(數據發布者),Subscriber(數據訂閱者),DataWriter(數據寫者),DataReader(數據讀者),Topic(主題).
Publisher是負責實際數據發布的DCPS對象.Publisher擁有和管理DataWriter.當應用程序想要發布數據時,就通過Publisher將數據通過相對應Topic的DataWriter進行數據的發布.一個Publisher可以擁有多個DataWriter,但一個DataWriter只能被一個Publisher所擁有,且一個DataWriter只能發布一種特定Topic的數據.
Subscriber是對發布者發布的數據進行實際接收的DCPS對象.Subscriber擁有和管理DataReader.一個Subscriber可以擁有多個不同Topic的DataReader,一個DataReader只能被一個Subscriber所擁有.當應用程序想要接收某個Topic的數據時就通過相應Topic的DataReader獲取接收到的數據.
Topic是發布和訂閱應用程序間互動的基本方法,在Publisher和Subcriber之間提供基本連接點.DataWriter對象和DataReader對象通過Topic進行關聯,每個DataReader和DataWriter只能關聯一種特定的Topic,且發布端的DataReader和訂閱端的DataWriter在發布和訂閱數據時必須是關聯相同的Topic.

圖4 以數據為中心發布/訂閱(DCPS)概念模型[3]
QoS(服務質量)用于發布/訂閱雙方詳細描述服務的行為.為滿足各種實體(包括Topic、DataWriter、DataReader、DomianParticipant、Publisher、Subscriber等)對通信服務質量的不同需求,以及保證通信雙方對服務質量的統一要求,DDS中引入了QOS服務模型.該模型中對不同的服務需求進行了建模,通過對各實體進行簡單的QOS設置,實現不同場景的通信訴求.QoS服務模型為數據傳輸的實時性、可靠性等提供了有效的支持.
基于標準的DDS規范開發的商業DDS產品,并不能很好的適應指控系統對數據分發服務的特殊要求,其主要存在如下問題:
(1)中間件龐大,復雜,帶寬利用率低,實時性差等問題,如Open Splice DDS軟件的代碼規模達到18 M,最大占有帶寬達到15 K,不能適用低帶寬網絡環境.
(2)對于不穩定信道,信息傳輸可靠性差,特別是傳輸數據量較大的情況,不能保證傳輸數據的可達性和完整性.
(3)不能支持異構網絡和大文件可靠傳輸.
(4)缺乏自主可控性,對跨平臺性的支持有限.
針對商用DDS軟件中包含的問題,需要有一個能夠滿足指控系統應用需求的DDS軟件中間件平臺就必須基于標準OMG DDS(V1.4)并針對指控系統的特殊需求對DDS標準規范進行精簡和拓展.為此以DCPS信息分發模型為基礎,并采用了以下幾種方法來滿足指控系統的特殊需求.
在整個指控系統中,各異構節點對數據傳輸的要求是不同的,有的傳輸要求時間的實時性和低延遲,對傳輸的可靠性要求不高;而有的場景要求較高的傳輸可靠性,即保證數據能夠完整的傳輸,而對于傳輸時間以及傳輸延遲沒有太高的要求.因此,需要根據網絡的不同狀況動態的進行QoS配置.
為了滿足不同傳輸場景的需求,對服務質量進行的不同等級的劃分,同時抽象出獨立的QoS策略對象,專門負責整個通信系統中不同節點、場景下通信質量的控制、調節.其實現機制就是:通過進行適當地參數設置可以自由的進行QoS切換.相關的QoS參數主要包括:
Reliability:數據的可靠性,數據傳輸可以在最可靠(RELIABLE確保所有數據按照順序被接收)與最高效(BEST_EFFORT不保證數據是否能被接收到,在沒有高可靠性需求的應用中減少額外的開銷)之間作選擇.
Durability:數據的持久度,發送的數據不被保存(VOLATILE)、保存在內存中(TRANSIENT_LOCAL)或永久性保存(PERSISTENT)在數據庫中.
History:數據的歷史記錄,全部保持(KEEP_ALL在可用資源的限制內,在隊列中保存所有的數據)或保持最后N個.
Ownership:數據的所有權,缺省情況下對于同一個主題,可以存在多個數據發送者.但主題所有權也可以設置為互斥,根據所有權的權重來仲裁哪個發布者具有主題所有權.高權重的發布者失效后,低權重的可以取得所有權.
Topic-Priority:發送優先級控制,不同主題的優先級發送控制.
指控系統的通信網絡復雜多變,由高/低帶寬、高/低延遲的網絡混合而成.節點之間需要進行狀態信息搜集以及控制信息交互,而受到網絡帶寬的影響,節點交互頻率應該是動態的.
為適應網絡的動態性,提出帶寬自適應的“心跳”信號機制監控網絡中各DDS節點的運行狀態,把新狀態提交給DDS應用實例.圖5給出了帶寬自適應心跳工作原理.所謂帶寬自適應的“心跳”信號是指各DDS節點根據網絡通信環境會產生(收到)不同頻率的“心跳”信號.局域網內的節點之間可以一秒產生若干次心跳,以便迅速發現故障、主備切換;而上下級通過無線窄帶跨網路由時可以間隔若干秒產生一次心跳,減少帶寬占用、防止故障誤判.通過“心跳”信號發現故障節點,進而通知DDS實例注銷與故障節點相關的發布、訂閱信息,必要時,進行節點切換.
為減少網絡中信息編碼的長度、減少數據發送量,以及提升編碼的可擴展性,該平臺針對不同的任務,設計了可擴展二進制變長消息協議.可擴展二進制變長消息編碼用多字節表示數字,值越小的數字使用越少的字節數,這種表示法既能減少用來表示數字的字節數,又可以減少發送數據量,從而提高傳輸速 度;此外,采用Key-value(鍵值)對的方法,將key和value編碼到二進制流中,解碼時可以忽略不認識的鍵值對,這樣可以將新的鍵值對插入不認識這些字段的程序消息中,以提升消息的可擴展性.

圖5 帶寬自適應“心跳”示意圖
圖6給出了可擴展二進制變長編碼的結構.消息中的每個字段都是由鍵/值對組成的.這是一個多字節的編碼方式.值用多個字節來表示,其中每個字節的高字節代表下一個字節是否屬于該數值,如果為1,則表示下一個字節也是該數值的一部分,為0表示當前字節是該數值的最后一個字節.另外,鍵用一個字節進行編碼,其中低3位代表了數據類型,而高5位則表示了數據的序號.

圖6 可擴展二進制變長編碼示意圖
這種編碼方式相對于固定長度的編碼方式可以有效的減少編碼的長度,從而起到壓縮數據的效果,間接的提升了數據的發送速度.另一方面,由于采用了鍵值對的形式,可以根據需求的不同,向消息中插入新定義的鍵值,舊的應用可以跳過不識別的新鍵值,這樣大大提高了擴展性和靈活性.
對于同一個數據發布者要發布的多個數據隊列,根據數據發送的QoS設置、數據類型等信息,產生多個(數量可配置)獨立的線程并發讀取消息隊列,使得數據在消息隊列中的等待時間進一步減少,如圖7所示.
此外,根據發送方和訂閱者對數據的QoS需求,設置多種優先級隊列,避免一個隊列的情況下,由于多個線程并發訪問而對采用的互斥鎖加鎖解鎖帶來的延遲.

圖7 多優先級隊列與多線程信息發送示意圖
在指控系統中對數據傳輸的時效性,可靠性有很高要求.為此當系統中某節點失效時必須能夠進行節點的無縫切換,信道中斷時能夠進行主備切換.此外,當數據傳輸丟失時,需要采取重傳等措施保證數據傳輸的可靠性.
戰場態勢瞬息萬變,只有掌握了最新的戰場信息,才能夠做出正確的指揮決策.因此指控系統對信息的時效性有較高要求.為了保證信息接收者能夠接收到有效的數據,即具有一定時效性的數據,以及信息接收者能夠保證接收到的數據仍然在其時效內提出了信息生命周期管理的方案(見圖8).數據時效性的判斷主要與QoS中的History參數設置的歷史數據數相關聯,每當應用程序有新的數據產生時,原有的根據History參數緩存的數據中最老的那個數據即被視為失效,不在保存在緩存中.
對于傳入發布者的數據,發布者在發送數據前對數據的時效性進行判斷,如果數據沒有失效,那么發送給相關的訂閱者;而對于已經失效的數據,則不發送.訂閱者接收到發布者發送的數據后,也會進行相應的數據時效性判斷,因為網絡傳輸時延、中斷等原因,訂閱者接收到的數據不一定具有時效性,因此也需要進行判定.在時效期內的數據提交給用戶,否則直接丟棄.

圖8 信息生命周期管理原理圖
在指控系統的通信中,對數據傳輸的可靠性是一個非常重要的指標,當數據出現錯誤或丟失時,能夠保證數據重傳.
數據發布者每發布一個新的數據包后,都會將該數據包插入數據傳輸通道的重發隊列中,以便數據丟失時進行數據重傳,且發布者周期性的發送心跳信號(HeartBeat)數據包來通知訂閱者,到目前為止已經發送的數據包的序列號范圍.訂閱者在接收到心跳信號數據包之后必須發送一個確認信號(Ack)數據包來響應該心跳信號,告訴發布者本方到目前為止的數據接收的情況,如果在心跳信號數據包所給出的序列號范圍內有數據丟失,則在確認信號數據包中的相應位置進行置位,請求丟包重傳.發布者在接收到訂閱者的確認信號數據包后,根據確認信號數據包內容確認數據是否被對方正確接收,如果所有的訂閱者都接收了,則將該數據包從重發隊列中刪除,如果有訂閱者沒有接收到該數據包而請求重傳,則在數據發布方的重發隊列中找到該數據包,重傳該數據包給相應訂閱者,直到該數據包被所有訂閱者確認接收才將其從發布方的重發隊列中刪除.或者因為網絡原因該數據包被重傳多次后,訂閱方仍然沒有接收到,而該數據包又在重發隊列中失效了,則發布者向訂閱者發送失效信號(GapMsg),來通知對方該數據包已經失效.訂閱者接收到該失效信號后,跳過對該數據包的處理,并對下一個到達的數據進行處理.具體過程如圖9所示.

圖9 丟包重傳示意圖
在指控系統中,由于通信信道的不穩定,以及需要傳輸大量數據時,往往會造成數據傳輸失敗或不完整.因此,可以引入間斷傳輸技術,當通信中斷時記錄中斷位置,而當通信恢復時,進行數據續傳,以支持數據傳輸的完整性.
當某個信道(如信道1)通信穩定時,利用該信道進行數據傳輸.然而,由于干擾等因素,造成信道不穩定或通信中斷時,需要搜索新的可用的其他信道(例如信道2),或者等待信道恢復,同時,記錄數據中斷位置.若信道恢復或搜索到新的信道,則利用新的信道或原信道繼續進行數據續傳,從而保證發布者能夠將數據完整的發送給感興趣的訂閱者.如圖10所示.
指控系統工作的環境復雜,以及通信過程經常受到各種干擾,造成通信信道的不穩定以及中斷,這就對數據能否順利發送給感興趣的接收者到來困難.因此本文采用了信道切換技術來保證數據的可達性.當信道平穩或滿足傳輸要求時,可以在該信道上進行數據傳輸.然而,當信道不穩定或中斷時,導致數據無法傳輸或傳輸中斷,此時,可切換到其他可用的信道繼續進行數據傳輸,從而保證數據能夠順利發送給接收者,示意圖見圖11.

圖10 斷點續傳原理示意圖
最后在以上各種應用設想的基礎上構建一個實現了上述設想的數據分發服務原型系統,并分別在安裝了Windows7和麒麟Linux操作系統的具有相同硬件條件的PC機上分別運行測試了該系統各項性能指標,通過與我單位原有應用系統(注:該系統使用TCP協議實現數據可靠傳輸)的各項指標進行對比發現數據分發服務方法的應用確實能夠有效的提高作戰指控系統的高效性、擴展性、可靠性等性能指標.兩種系統綜合對比結果如表1所示,并給出了該系統與現有系統在Win7 OS環境中不同網絡帶寬下傳輸不同大小數據的平均時延對比圖(如圖12所示).

圖11 信道切換示意圖

圖12 Win7下平均時延對比圖
本文在對OMG DDS規范中以數據為中心的發布/訂閱模型原理的研究基礎上,根據指控系統的特殊需求,針對商用DDS軟件:數據傳輸時效性,信息傳輸可靠性不足,對跨平臺性支持不足,缺乏自主可控性,帶寬利用率低,中間件規模龐大等不足.提出了應用帶寬自適應性機制適應網絡的動態性;可擴展二進制變長編碼技術來減少網絡中發送的數據量,從而提高傳輸效率;采用多線程信息發送及多優先級隊列減少數據在消息隊列中等待的時間;丟包重傳,斷點續傳,主備切換,信息生命周期管理進一步提高了數據傳輸的高效性和可靠性.
1任昊利,李旺龍,張少揚,等.數據分發服務—以數據為中心的發布/訂閱式通信.北京:清華大學出版社,2014.
2Data distribution service for real-time systems version 1.4.OMG Available Specification,2015.
3曹萬華,謝蓓,吳海昕,等.基于DDS的發布/訂閱中間件設計.計算機工程,2007,33(18):78-80,83.[doi:10.3321/j.issn:1002-8331.2007.18.026]