晉良銀 黎明 茍江 趙斌 何娣
摘要:將ICE中間件的雙向連接機制引入衛(wèi)星空地通信系統(tǒng)中,并給出了一種基于ICE雙向連接的衛(wèi)星空地通信系統(tǒng)設計方案,討論了ICE中間件相關概念,介紹了ICE的雙向連接功能及原理。在衛(wèi)星通信網絡環(huán)境下進行設計、實現與測試,并分析了系統(tǒng)測試結果,測試結果表明ICE雙向連接可以解決衛(wèi)星空地鏈路單向連接的問題。
關鍵詞:ICE中間件;雙向連接;機載客艙系統(tǒng);單向連接
中圖分類號:TP393文獻標志碼:A文章編號:1008-1739(2019)09-69-3
0引言
目前,機載客艙系統(tǒng)與地面航空公司空地通信主要有ATG和衛(wèi)星通信等方式,本文僅討論衛(wèi)星通信鏈路下機載客艙系統(tǒng)與地面的空地通信。在應用中,客艙系統(tǒng)通過衛(wèi)星接入公網與航空公司進行通信,通信協(xié)議采用TCP/IP。航空公司的服務器具有公網IP地址,但衛(wèi)星通信系統(tǒng)分配給客艙系統(tǒng)的地址是私有IP。在初始化狀態(tài)下,客艙系統(tǒng)可以向航空公司發(fā)起連接請求,但航空公司卻無法主動向客艙系統(tǒng)發(fā)起應用連接。因此,客艙系統(tǒng)與地面的航空公司間的空地通信存在單向連接問題。
基于ICE中間件的雙向連接機制提供了一種新的思路。ICE中間件通過雙向連接機制首先由機載客艙系統(tǒng)向航空公司發(fā)起并建立連接,ICE保持并維護此連接,航空公司利用該連接可以向機載端發(fā)送消息。針對上述分析,設計了一種基于ICE雙向連接的衛(wèi)星空地通信系統(tǒng)方案,并給出其在衛(wèi)星通信環(huán)境下的測試結果。
1 ICE中間件
ICE中間件是ZeroC公司開發(fā)的一款開源面向對象的簡單高效的中間件平臺[1],借鑒了CORBA,DCOM,SOAP等中間件的優(yōu)點,并解決了這些中間件的應用局限[5]。ICE提供了建立面向對象的客戶/服務端應用程序所需要的工具、API和類庫,使得分布式客戶/服務端應用程序的建立變得簡單[6]。而且ICE應用適合在異種環(huán)境中使用,客戶端和服務端可以使用不同的編程語言來實現,同時它可以運行在不同的操作系統(tǒng)平臺以及不同的硬件架構上,有效地解決了C/S模式兼容性差、開發(fā)成本高以及開發(fā)周期長等問題[7]。ICE支持多種網絡信息交互技術(TCP/UDP、SSL、通過插件功能擴展協(xié)議)。
2 ICE雙向連接
ICE連接通常允許請求僅在一個方向上流動。如果應用程序的設計要求服務器向客戶端進行回調,則服務器通常會建立與該客戶端的新連接以發(fā)送回調請求,該請求過程如圖1所示。
但是在實際的網絡環(huán)境中,網絡限制通常會阻止服務器創(chuàng)建與客戶端的單獨連接,例如當客戶端位于防火墻后面,如圖2所示。
在這種情況下,防火墻會阻止任何直接與客戶端建立連接的嘗試。此時,雙向連接提供了一種解決方案。請求可以在雙向連接上雙向流動,使服務器能夠通過客戶端到服務器的現有連接向客戶端發(fā)送回調請求。有2種方式使用雙向連接:①使用ICE的Glacier功能,在這種情況下,雙向連接被自動使用;②手動配置雙向連接,使用ICE雙向連接的手動配置方式解決衛(wèi)通空地單向連接的問題。
3系統(tǒng)設計與測試
3.1系統(tǒng)架構
基于ICE雙向連接的衛(wèi)星空地通信系統(tǒng)架構示意圖如圖3所示。系統(tǒng)中的各功能模塊采用分布式部署,主要由3部分組成:模擬機載客艙系統(tǒng)的客戶端(Client)、模擬地面航空公司的服務器端(Server)以及衛(wèi)星通信設備。地面服務器端的IP地址是公網地址,而機載客戶端的IP地址是衛(wèi)星通信系統(tǒng)分配的私網地址。因此,在實際通信中,Client可以訪問到Server,但Server無法訪問Client。針對上述問題,本文引入ICE雙向連接機制實現空地之間的雙向通信。
3.2 ICE安裝及開發(fā)環(huán)境配置
該系統(tǒng)的Client與Server應用在Centos7 64位操作系統(tǒng)下開發(fā)并運行。ICE版本為3.5.1。Client與Server分別安裝在2臺不同的筆記本上。Client模擬機載客艙系統(tǒng)端(以下統(tǒng)稱機載端)使用衛(wèi)星通信系統(tǒng)分配的私有網IP地址,Server模擬航空公司地面端(以下統(tǒng)稱地面端)使用公網IP地址。地面端與機載端網絡配置如圖4所示。
Server的網絡配置包括3項內容。TCP表示ICE通信遵循的TCP/IP協(xié)議;-h 218.104.XXX.XXX表示Server的IP地址為218.104.XXX.XXX;-p 10000表示Server監(jiān)聽端口為10000。機載端的網絡配置如圖5所示。
Client的網絡配置包括三項內容。TCP表示ICE通信遵循的TCP/IP協(xié)議;-h 218.104.XXX.XXX表示Server的IP地址為218.104.XXX.XXX;-p 10000表示Client向Server的10000端口發(fā)送消息。
3.3 ICE客戶端開發(fā)
客戶端實現雙向連接需要執(zhí)行以下步驟:
①創(chuàng)建一個對象適配器接收回調請求;②使用對象適配器注冊回調對象;③激活對象適配器;④代理對象調用ICE_getconnection函數,獲得連接對象。用獲得的連接對象,調用Setadapter函數,傳遞給回調對象適配器;⑤向服務器傳遞回調對象的身份Identity。
據上述步驟,客戶端程序的主要代碼如下:
CallbackSenderPrx server=CallbackSenderPrx::checkedCast(communicator()->propertyToProxy("CallbackSender.Proxy")); ICE::ObjectAdapterPtr adapter=communicator()->createObject-Adapter("");
ICE::Identity ident;
ident.name = ICEUtil::generateUUID();
ident.category = "";
CallbackReceiverPtr cr = new CallbackReceiverI;
adapter->add(cr, ident);
adapter->activate();
server->ICE_getConnection()->setAdapter(adapter);
server->addclient(ident);
communicator()->waitForShutdown().
3.4 ICE服務器端開發(fā)
服務器端實現雙向連接需要執(zhí)行以下步驟:
①創(chuàng)建一個對象適配器用于調用客戶端的回調函數;②使用對象適配器注冊請求對象;③激活對象適配器;④在請求對象中完成客戶端與服務器的連接,以及完成服務器端調用客戶端的回調函數。
根據上述步驟,服務器端程序的主要代碼如下:
Ice::ObjectAdapterPtr adapter= communicator()->createObjectAdapter("Callback.server");
CallbackSenderIPtr sender= new CallbackSenderI(communicator());
adapter->add(sender,communicator()->stringToIdentity("sender"));
adapter->activate(). 3.5測試結果
(1)首先啟動模擬地面航空公司的Server;
(2)啟動模擬機載客艙系統(tǒng)的Client。
Client啟動后運行結果如圖6所示。圖6中列出了Client接收請求和發(fā)送應答的信息參數,本文僅對Client接收請求中部分重要參數進行簡要分析。Message Type為0表示Client接收到一條請求消息;Compression Status為0表示消息不壓縮;Message Size為105表示消息占用105Byte;request id為4表示當前請求的標示為4;Identity表示Server的UUID;Operation為Callback表示操作類型為回調操作;Receive Callback#后的字符串是Client接收Server利用雙向連接發(fā)送的信息。Client接收到Server發(fā)送的“This is a String Sending Test!”字符串。Server調用Client的回調函數成功。
(3)分析上述在衛(wèi)星通信網絡環(huán)境下的測試結果可知:①Server與Client啟動正常;②Server與Client雙向連接建立成功;③Server利用ICE雙向連接功能向Client發(fā)送消息成功。
4結束語
本文討論了ICE中間件相關概念,介紹了ICE的雙向連接功能及原理。通過分析機載客艙系統(tǒng)與航空公司間的衛(wèi)星空地通信鏈路單向連接問題,提出了一種基于ICE中間件的衛(wèi)星空地通信系統(tǒng)的設計方案。該設計方案依托ICE中間件的雙向連接機制,實現了具有公有IP地址的地面端向具有私有IP地址的機載端發(fā)送消息,成功解決了目前衛(wèi)通空地通信鏈路單向連接的問題。在衛(wèi)星通信網絡環(huán)境下進行了實驗與測試,系統(tǒng)測試結果驗證了方案的正確性。
參考文獻
[1]陳增孝,裘雪紅.面向對象的ICE中間件系統(tǒng)設計[J].電子元器件應用,2008,10(8):16-18,21.
[2]江卓逞,黃瑋.曾加剛.基于ICE中間件的分布式應用開發(fā)研究[J].信息與電腦(理論版),2017(9):38-40.
[3]姜邵巍,朱建良,吳永勝.一種改進的ICE中間件負載均衡算法[J].中國電子科學研究院學報,2016,11(3):263-267.
[4]李雪玲.基于ICE中間件的應用系統(tǒng)通信框架設計[J].軟件導刊,2017,16(1):91-93.
[5] Leader-us.ZeroC Ice權威指南[M].北京:電子工業(yè)出版社, 2015.
[6]王晨,賈卓生.基于ICE中間件的分布式網管系統(tǒng)的研究與設計[J].中國科技信息,2007(9):110-112.
[7]張俊軍,章旋.ICE中間件技術及其應用研究[J].計算機與現代化,2012(5):192-194.
[8]陶雪蓮,周俊.基于ICE中間件的分布式衛(wèi)星地面測試系統(tǒng)研究[J].信息通信,2014(2):23-25.