呂 鴻,戶江民,付林強,楊 曉
(重慶金美通信有限責任公司,重慶400030)
RTI DDS是由Real-Time Innovation公司開發(fā)實現(xiàn)的,這也是第一個支持DDS規(guī)范的商業(yè)產(chǎn)品。DDS針對實時系統(tǒng)的數(shù)據(jù)發(fā)布/訂閱需求設計,支持多種數(shù)據(jù)分發(fā)模式和數(shù)據(jù)分發(fā)策略,其前身為美國RTI公司的NDDS產(chǎn)品,由于美國軍方對裝備技術(shù)開放性的強制要求,RTI公司2003年將NDDS接口公開后提交到OMG組織,最終于2004年發(fā)布了DDS標準,同年6月,美國國防部信息技術(shù)標準局選定DDS作為GIG的強制性數(shù)據(jù)發(fā)布/訂閱規(guī)范,作為以數(shù)據(jù)為中心進行系統(tǒng)集成的實時數(shù)據(jù)總線標準。目前被廣泛應用于任務要求十分苛刻的場合,包括:作戰(zhàn)管理、航空航天、美國國家鐵路網(wǎng)、空中交通流量控制、交通流量監(jiān)控、金融交易處理以及工業(yè)自動化等。RTI DDS實現(xiàn)了完整的DCPS,不支持DLRL,它獨立于操作系統(tǒng)和編程語言,極大地方便了不同系統(tǒng)之間的通訊。系統(tǒng)設計者通過可擴展的傳輸框架結(jié)構(gòu)連接多個物理端點,傳輸方式包括以太網(wǎng)絡、共享內(nèi)存、背板或其他連接方式[1]。
DDS標準規(guī)范了實時分布式系統(tǒng)中數(shù)據(jù)發(fā)布、傳遞和接收的接口和行為,定義了以數(shù)據(jù)為中心的發(fā)布/訂閱機制。DDS規(guī)范使用UML語言描述服務,提供了一個與平臺無關(guān)的數(shù)據(jù)模型(這個模型能夠映射到各種具體的平臺和編程語言)[2]。DDS標準簡化了實時分布式系統(tǒng)中數(shù)據(jù)高效、可靠地發(fā)布,它主要應用在要求高性能、可預見性和對資源有效使用的關(guān)鍵任務領(lǐng)域[3]。
圖1 DDS 總線模型[4]Fig.1 DDSbus model
應用程序在處理以數(shù)據(jù)為中心的分布式系統(tǒng)時,DDS標準中間件可以幫助用戶使用更加簡單的編程模型[5],不需要開發(fā)特定的事件/消息機制或手動創(chuàng)建封裝的CORBA對象來獲取遠程數(shù)據(jù)。應用程序可以使用一個簡單的主題(Topic)名稱來指定它想要讀或?qū)懙臄?shù)據(jù),以及使用以數(shù)據(jù)為中心的API來直接讀寫數(shù)據(jù)。DDS中以數(shù)據(jù)為中心的發(fā)布/訂閱(DCPS)模型構(gòu)建了一個共享的“全局數(shù)據(jù)空間”的概念,所有的數(shù)據(jù)對象都存在于此空間中,分布式節(jié)點通過簡單的讀、寫操作便可以訪問這些數(shù)據(jù)對象[6]。實際上,數(shù)據(jù)并非存在于所有計算機的地址空間中,它僅存在于那些對它感興趣的應用程序的本地緩存中。
本文通過對RTIDDS進行充分的分析研究,將其應用到業(yè)務管理與資源優(yōu)化系統(tǒng)中,利用DDS的總線功能,將系統(tǒng)消息擴展到DDS總線上,本文對DDS的設計、實現(xiàn)原理、最終結(jié)果等進行了詳細介紹。
業(yè)務管理與資源優(yōu)化系統(tǒng)是某戰(zhàn)術(shù)網(wǎng)絡中用來實現(xiàn)對當前戰(zhàn)術(shù)網(wǎng)絡的業(yè)務進行管理,并實時監(jiān)控網(wǎng)絡的資源利用情況,根據(jù)實際資源使用的使用情況,對網(wǎng)絡資源進行優(yōu)化。通信業(yè)務管理與資源優(yōu)化軟件采用模塊化設計架構(gòu),業(yè)務管理中心與界面視圖解耦。后臺通信服務與戰(zhàn)術(shù)網(wǎng)絡中的交換設備之間利用專用協(xié)議進行通信,從戰(zhàn)術(shù)網(wǎng)絡交換設備上收集設備當前的業(yè)務狀態(tài)和網(wǎng)絡資源利用狀態(tài),并將收集到的數(shù)據(jù)通過定義好的端口推送給前臺界面。前臺界面為一圖形化操作界面,主要用來展現(xiàn)網(wǎng)絡當前的網(wǎng)絡資源利用情況,同時對網(wǎng)絡資源的利用進行調(diào)整命令的下發(fā)。其軟件模型如圖2所示。
圖2 業(yè)務管理與資源優(yōu)化系統(tǒng)模型Fig.2 Business management and resource optimization system model
在該系統(tǒng)中,前臺模塊與后臺通信服務采用Socket進行通信,已經(jīng)實現(xiàn)很好的解耦合,由于網(wǎng)絡資源利用情況是網(wǎng)絡中一個非常重要的信息,各使用終端都想及時掌握這一情況,并根據(jù)網(wǎng)絡信道資源利用情況來展開下一步的工作部署。但是由于目前的系統(tǒng)設計為單點對應設計,一個前臺模塊對應一個后臺服務,無法將結(jié)果同時展現(xiàn)給多個關(guān)注者,為了實現(xiàn)能夠同時將網(wǎng)絡資源使用結(jié)果展現(xiàn)給多個關(guān)注者,引入成熟的DDS中間件,利用DDS將消息拓展到多個前臺同時使用。
接口標準化:RTI DDS產(chǎn)品符合對象管理組織(OMG)的數(shù)據(jù)分發(fā)服務DDS標準,DDS提供了軟件應用編程接口的標準。
QoS保障:DDS在為實時系統(tǒng)應用開發(fā)者提供高級抽象的同時,還能控制部署實時系統(tǒng)所需的QoS(Quality of Service)策略。RTI DDS還允許應用預分配資源、提高可靠性和實時確定性。
軟件的前臺操作界面與后臺通信服務采用Socket進行通信,因此在操作界面和通信服務之間引入DDS。DDS數(shù)據(jù)服務總線同時對應一個后臺處理模塊和多個操作界面前臺操作界面,實現(xiàn)將后臺數(shù)據(jù)實時拓展同步到多前臺界面的功效。如果要在另一臺計算機平臺上實現(xiàn)前臺操作界面的部署,只需要在該計算機上配置好DDS拓展服務和前臺操作界面,前臺操作界面采用原有的通信方式與DDS之間進行信息交互,DDS拓展服務則與其它計算機上DDS拓展服務進行實時協(xié)作通信,形成一條可靠高效的信息數(shù)據(jù)總線,如圖3所示。
圖3 業(yè)務管理與資源優(yōu)化DDS拓展Fig.3 Business management and resource optimization of DDSdevelopment
從圖3的軟件架構(gòu)圖可知,DDS利用自身的通信功能將特有的數(shù)據(jù)同步到所有已部署DDS拓展服務的計算機終端上。但從前臺界面與后臺處理服務的關(guān)系上看,為保證原有系統(tǒng)地完整性,在引入DDS拓展服務之后,前臺操作界面與后臺通信服務仍采用原來的通信方法和通信協(xié)議,不做任何業(yè)務代碼的修改,只需要在后臺通信服務模塊中修改通信的端口號,將其掛接到DDS服務上。如圖4所示,在加入DDS之前后臺通信服務利用9800端口發(fā)送信息給前臺操作界面,前臺操作界面利用9801端口發(fā)送信息給后臺通信服務;在加入DDS拓展服務之后,DDS拓展服務接替了原后臺通信服務的端口,利用9800端口發(fā)送信息給前臺操作界面,監(jiān)聽9801端口,截獲前臺發(fā)送給后臺通信服務的信息。另外新建立一個9803端口,用來監(jiān)聽后臺通信服務發(fā)送的信息,同時利用9802端口將前臺操作界面發(fā)送的信息轉(zhuǎn)發(fā)給后臺通信服務。DDS拓展服務的模塊設計如圖5所示。
圖4 DDS拓展接口Fig.4 DDSexpansion interface
圖5 DDS拓展服務模型Fig.5 DDSexpanded - service model
DDS模塊截取資源管理服務模塊的UDP信息,將該信息以數(shù)據(jù)流的方式直接公布到DDS總線上,在其他終端上的DDS參與者監(jiān)聽到該信息時,接收該信息,同時將該信息以數(shù)據(jù)流的方式通過Socket還原發(fā)送給前臺界面,保證了前臺模塊與資源服務模塊之間的原有通信方式。
DDS參與者設計時采用了兩個Socket,分別用于與前臺模塊通信和與資源管理服務模塊通信,當前臺Socket監(jiān)聽到前臺的UDP命令時,本模塊從Socket中收下所有的數(shù)據(jù),利用前臺DDS發(fā)布者將該數(shù)據(jù)發(fā)布到DDS總線上,前臺DDS監(jiān)聽者如果從DDS總線上監(jiān)聽到消息,則將該消息利用Socket進行信息還原,發(fā)送給資源管理服務模塊;反之,當資源管理服務Socket監(jiān)聽到資源管理服務模塊的消息時,本模塊從Socket中收下所有數(shù)據(jù),利用資源管理DDS發(fā)布者將該數(shù)據(jù)發(fā)布到DDS總線上,資源管理服務DDS監(jiān)聽者如果從DDS總線上監(jiān)聽到信息,則將該消息利用Socket進行信息還原,發(fā)送給前臺模塊。
DDS拓展服務的設計遵循獨立通用的原則。該模塊設計時屏蔽內(nèi)部實現(xiàn)的賦值細節(jié),對外提供了一個監(jiān)聽接口和一個發(fā)布接口。監(jiān)聽接口用于監(jiān)聽程序監(jiān)聽總線上所有感興趣的數(shù)據(jù),一旦監(jiān)聽數(shù)據(jù)更新,DDS拓展服務會同步更新所有監(jiān)聽者的數(shù)據(jù),監(jiān)聽程序即可實時自動更新人機界面顯示;發(fā)布接口用于終端軟件將自身的重要信息發(fā)布到數(shù)據(jù)總線上,供其他對該信息感興趣的終端使用。該模塊是一個通用的模塊,除了可用于本項目之外,還可以用于其它類似的軟件系統(tǒng)中,使一對一的信息通信輕松擴展為一對多、多對多的通信。
利用一個試驗環(huán)境來測試驗證DDS拓展在業(yè)務管理與資源優(yōu)化系統(tǒng)中的應用成效。網(wǎng)絡環(huán)境如圖6所示。該測試環(huán)境利用6臺戰(zhàn)術(shù)通信交換機進行搭建,在其中一臺戰(zhàn)術(shù)交換機上的用戶端口上配置一臺服務器(管理中心),在該計算機終端使用網(wǎng)段內(nèi)拓展連接了6臺客戶端,在核心IP為2.0.0.6的交換機下也掛6臺客戶端,由此來檢驗DDS拓展服務能否實時可靠地將網(wǎng)絡資源利用情況的數(shù)據(jù)同步到整個網(wǎng)系中的多個前臺操作界面。
圖6 戰(zhàn)術(shù)網(wǎng)絡測試環(huán)境Fig.6 Tactical network test environment
針對上述試驗環(huán)境,有1個服務器與12個客戶端需要部署。服務器與客戶端的軟件部署稍有不同,其具體部署如下:DDS拓展后,將該軟件的服務器部署在管理中心上,而其他終端上部署客戶端。實現(xiàn)一個服務,多個前臺界面的效果。
圖7 軟件組成Fig.7 Software composition
如圖7所示,本軟件分為三個部分,“業(yè)務管理與資源優(yōu)化服務”實現(xiàn)與交換網(wǎng)絡的業(yè)務配置和管理功能;“DDS拓展服務”用于將資源優(yōu)化服務和前臺界面的數(shù)據(jù)通過DDS數(shù)據(jù)總線進行拓展,保證多個前臺能夠和資源優(yōu)化服務通信;“前臺界面”實現(xiàn)對業(yè)務管理和資源優(yōu)化的所有功能的界面展現(xiàn)。服務器上需要部署所有部件,客戶端上只需部署“DDS拓展服務”和“前臺界面”。
如圖6所示試驗環(huán)境的域1與域2不在同一個局域網(wǎng)內(nèi),對于跨域通信需要做如下配置:首先在服務器端PC機所在環(huán)境變量中增加一個DDS的查找節(jié)點信息,變量名為 NDDS_DISCOVERY_PEERS,變量值為 1@builtin.udpv4://10.0.1.10,2@builtin.udpv4://127.0.0.1。其中 10.0.1.10 用于指向客服端7的IP地址,便于DDS在跨路由時與遠端節(jié)點通信[6]。其次,在客服端7的PC機上也要配置同樣一條環(huán)境變量,只是該項配置的IP地址指向服務器的計算機IP地址,其環(huán)境變量值為:1@builtin.udpv4://10.0.0.5,2@builtin.udpv4://127.0.0.1。
在驗證時使用了13臺計算機,一臺計算機上運行服務端和客服端,在其它12臺機器上運行客服端。業(yè)務管理與資源優(yōu)化服務器端的后臺服務實時監(jiān)控搭建網(wǎng)絡中的信道資源利用情況,當檢測到網(wǎng)絡信道資源利用情況發(fā)生變化時,將該數(shù)據(jù)通過DDS拓展服務同步更新所有的前臺監(jiān)控界面,本實驗過程中通過人為調(diào)整網(wǎng)絡信道的資源利用率來觀察客戶端終端軟件界面上的結(jié)果顯示是否同步。
分別實現(xiàn)了多臺計算機在同一個局域網(wǎng)內(nèi)、跨路由情景下的各種驗證,通過觀察比對所有客戶端終端上的資源數(shù)據(jù)能夠保持實時同步,其相關(guān)效果圖如圖8所示。
圖8 信道資源利用預警Fig.8 Signal warning map channel resource utilization
當從一個點 2.0.0.1 向另一個點2.0.0.2 發(fā)送指定大小的數(shù)據(jù)量時,使發(fā)送信到的資源利用達到50% ~70%之間,此時在12臺客戶端界面上能夠同時反映出該鏈路提示橙色預警。繼續(xù)加大點2.0.0.1向點 2.0.0.2 發(fā)送的數(shù)據(jù)量,使其信道占用提升到大于70%,讓其信道提示紅色預警,此時所有在線的12臺客戶端前臺程序也能夠?qū)崟r同步告警信息,并正確顯示。
通過本試驗分析可以看出,DDS拓展服務能夠?qū)崟r可靠地將數(shù)據(jù)擴展到數(shù)據(jù)總線上,各客戶端能夠?qū)崟r從總線上提取數(shù)據(jù)并在人機界面上展現(xiàn)出來。
業(yè)務管理與資源優(yōu)化服務系統(tǒng)是一套已運用于戰(zhàn)術(shù)網(wǎng)絡中的資源管理軟件,為了保證整個軟件的可靠性在原系統(tǒng)上進行設計升級是一個不明智的選擇。在本項目中可靠、高效地引入DDS拓展服務,既保留了原有系統(tǒng)完整性、可靠性,又在使用功能上進行了提升。這主要得益于DDS的諸多優(yōu)點:由于RTI DDS的發(fā)布/訂閱結(jié)構(gòu)直接和易于理解,開發(fā)者可以將大量的時間集中用于他們的應用而不是在通訊結(jié)構(gòu)上。由于RTI DDS的一致性,模塊化和開放的API接口,用戶可以快速入門使用,不需要對網(wǎng)絡編程。RTI DDS具有無與倫比的可靠性。它支持可掌控的數(shù)據(jù)傳輸并包括很多用戶可配置的QoS策略,這些策略使得設計者能夠更加靈活地應用。RTI對DDS規(guī)范的實現(xiàn)中選擇P2P的結(jié)構(gòu),消除了所有中心服務端可能的死機或崩潰,沒有單點失敗的可能。由于DDS實例不共享地址空間,應用程序之間相互隔離,可以避免內(nèi)存崩潰。在業(yè)務管理與資源應用中引入DDS拓展服務只是牛刀小試,DDS能夠在更多的項目中展現(xiàn)其強大的功能。
[1] OMG.Data Distribution Service for Real- time Systems,version 1.2.[EB/OL].(2007-1-1)[2014 -11 -3].http://www.omg.org/spec/DDS/1.2.
[2] OMG.Data Distribution Service for Real-time Systems Specification version 1.1[EB/OL].(2005 - 12 - 4)[2014 -11 -5].http://www.omg.org/spec/DDS/.
[3] SCHNEIDER S,F(xiàn)ARABAUGH B.Using the DDSStandard for High Reliability Applications[R].Real- Time Innovation,Inc.2004.
[4] RTI.RTI DDS User Manual[EB/OL].[2014 - 11 -13].http://www.rti.org,2011.
[5] 楊震,陽洋.基于DDS規(guī)范的戰(zhàn)場信息分發(fā)中間件平臺研究[J].通信技術(shù),2009,42(12):185 -187.
Yang Zhen,Yang Yang.Study On BattleField Information Distribution Middleware Platform Based on DDS.Communication technology.2009,42(12):185-187.
[6] GERARDOPC.Data-Distribution Service(DDS):Architectural Update[R].OMG.2004.