摘要:該文研究和分析了移動Agent系統中常見的四個通信技術問題。這四個問題分別是:移動Agent的命名,移動Agent的定位,移動Agent的消息處理及移動Agent通信可靠性。
關鍵詞:移動Agent;命名機制;定位機制;消息傳遞;通信失效
中圖分類號:TP393 文獻標識碼:A 文章編號:1009-3044(2009)05-1057-03
Research and Analysis of the Mobile Agent Communication Technology
FAN Bin, LIU Xin, LI Wei-hua
(Shenyang Institute of Engineering,Shenyang 110136,China)
Abstract: Research and Analysis of the four useful communication technology problems about mobile agent system. These four problems are: naming for mobile agents, locating for mobile agents, producing messages about mobile agents and high-reliability model for mobile agent communication.
Key words: mobile agent; naming method; locating method; message delivery; communicating invalidation
1 引言
移動Agent系統主要從“如何支持移動”的角度來設計通信機制。在傳統的分布式計算環境中,計算實體一旦被創建,他們的位置便固定下來,在整個生命期內不會改變,發送方只需得到接收方的當前位置即可始終與之通信。在基于移動Agent的計算環境中,由于移動Agent的位置可能經常變動,因此Agent之間進行通信需要考慮四個問題:
1) 移動Agent的命名;2) 移動Agent的定位;3) 移動Agent的消息處理;4) 移動Agent通信可靠性。
2 移動Agent系統的命名
2.1 命名的必要性
在設計一個移動Agent系統時要綜合考慮許多方面的問題,其中,命名是移動Agent系統的一個十分重要的問題,它關系到整個系統的靈活性、有效性和可擴展性。
2.2 對移動Agent的命名及名字解析機制的研究與分析
目前大多數移動Agent系統的命名是基于主機名加端口號,并通過DNS(Domain Name System,域名系統)解析。如美國Darmouth College的Agent TCL[1]和IBM的Aglets[2]就是使用這樣的名字。
在這樣的系統中,當一個Agent遷移之后,它的名字也要跟著改變,這使得應用程序在跟蹤Agent時變得很復雜。因此,最好是能在應用層上提供一個位置透明的名字。達到這樣要求的方法有兩種:一是為遠端的實體提供一個本地的Agent,該Agent封裝了它們的實際位置。當實體移動時,系統負責更新它們的位置信息,由此在應用層上提供了位置透明性。如Voyager Info-Systems的Voyager[3]就是使用這種方法來為Agent命名的。另一種方法是使用全局的、與位置無關的名字,即使實體的位置發生了改變,它的名字也不發生變化。這就需要提供一個名字服務,將命名實體象征性的名字映射到它的實際位置上。在美國Minnesota大學計算機系開發的基于Java的移動Agent系統Ajanta中,所有的實體都是采用的這種全局一致的名字。顯然,使用第二種命名方法對移動對象的跟蹤和通信完全可以實現位置透明性,極大地方便了移動Agent系統通信模型等的建立。因此可見,使用全局的、與位置無關的名字是解決移動Agent系統中名字解析問題的理想選擇。
3 移動Agent的定位
3.1 移動Agent定位機制的研究
由于移動Agent可根據特定的任務和路線,在不同的主機上靈活遷移,這種位置上的不確定性也造成了移動Agent定位的困難。一般來說,定位移動Agent可有3種機制[4]:
1) 使用日志:移動Agent會在它訪問過的每臺主機上留下跟蹤信息,這些信息指明了Agent移動的下一站,通過跟蹤這些信息可以定位Agent。那些無效了的Agent的跟蹤信息會被垃圾收集程序依據一定的過期時間或Agent發出的通告自動收集??梢酝ㄟ^沿路跟蹤和重定向兩種方法來使用跟蹤信息定位Agent。
2) 蠻力搜索:在多個目的地中搜索Agent,以便將其定位。搜索可以在多個目的地中并行或順序展開。
3) 注冊:Agent在一個預定義的名字服務器中更新它的位置信息。該名字服務器允許Agent進行注冊、注銷或定位。別的Agent用這個名字服務器來定位這個Agent。在實際應用中,進行通信的Agent須事先約定一個名字服務器。如果每一個Agent服務器都相應有一個名字服務器的話,就可以簡化約定的達成。當多個Agent來自同一臺源主機或到達同一臺目的主機,它們只需簡單地共享與它們的源主機或目的主機相聯系的缺省名字服務器就可以了,無需事先交換名字服務器的地址。
3.2 移動Agent定位機制的分析
通過上面的介紹可知:使用日志的方法需要知道Agent的源主機或其訪問過的任意一臺主機。蠻力搜索方法易于在應用中實現,且獨立于外部機制,如跟蹤信息或名字服務器。而應用注冊方法的一個典型場合是多個Agent同時就一個任務被分配到多個地點工作,若它們之間需要通信的話,只需共享源主機的名字服務器就可以了。
因此,對于不同的系統,我們可以依據系統的安全和性能的需要來具體選擇使用哪種定位機制。
4 移動Agent的消息傳送機制
目前許多移動Agent系統均提供了與其它移動Agent的遠程通信機制,在現有的移動Agent系統中,Agent間的消息傳遞機制按照實現方法一般可分為[5]:廣播法,鏈狀追蹤法,基站法和集中注冊法。下面分別加以介紹和分析。
4.1 廣播法
發送消息的Agent從其根節點開始發送,按照某種規則(如深度優先、廣度優先) 向網絡中所有可能接收消息的Agent所在的主機進行廣播。接收Agent當前所在的主機發現消息的接收對象正運行在自己的Agent環境中,則接收該消息并將其轉交給目標Agent,而其余主機不接收該消息。
廣播法的工作原理如圖1所示:
對于局域網來說,廣播法不失為一種簡單的消息傳遞機制,其最大的優點就是算法簡單、通信速度快。但對于廣域網來說,發送方很難預先知道接收Agent的移動路線,這就造成了其難以克服的弱點。因此可知,廣播法只能適用于小規模的應用,而不適宜在大規模的應用中(如Internet環境下)。
4.2 鏈狀追蹤法
移動Agent每當移動到一臺新的主機N,就把其新的地址通知給上一次所逗留的主機P,這樣P就會為該Agent生成一個記錄項,記錄項中會包含該Agent的ID和一個指向主機N的指針。通過這種方式就會形成一條從Agent的初始主機到當前所在主機的指針鏈,這樣發送方只要根據接收Agent的ID找到其初始主機,然后沿著這一指針鏈即可找到目的Agent并將消息傳遞給它。
鏈狀追蹤法的原理如圖2所示。
與廣播法類似,鏈狀追蹤法的優點也是算法直接、實現簡單、運行開銷小。但它的缺點也是很明顯的:通信效率低下、響應速度緩慢;消息的傳遞存在路由迂回問題;系統的容錯性和健壯性較差;可能會無端占用了主機的資源。
4.3 基站法
在基站法中,在整個移動Agent環境中設置一臺專用的主機作為基站(Home),所有的移動Agent都要在創建它的Home中注冊,每次遷移成功時,移動Agent都要向Home發送其新位置,因此Home始終知道移動Agent當前所在的位置。當移動Agent之間進行通信時,消息首先發送到Home主機上,Home主機根據其記錄的移動Agent的當前所在主機地址將消息轉發目標Agent。
基站法的原理如圖3所示。
該算法實現簡單且遷移和消息發送的開銷不大,實現了分布式處理,具有較好的健壯性和可擴展性,其缺點在于:①在移動Agent生命周期內必須保證基站主機的長久連接,容易產生Home通信瓶頸問題;②每次遷移和定位移動Agent都要與基站通信,對Home的依賴性性很強;③不支持Agent遷移的異步運行。
4.4 集中注冊法
與基站法相似,在集中注冊法中,整個移動Agent環境中也需要特殊的設置一臺主機作為專用的通信服務器(Communicator),所有移動Agent的ID及其當前位置都記錄于該服務器中。當移動Agent遷移成功時,需要立刻向Communicator注冊其當前位置。當移動Agent之間進行通信時,對于通信發起方,其直接將接收方的ID和待發送消息發送至Communicator,由Communicator轉交給通信接收方。若通信接收方當前正處于遷移狀態,則將該消息暫存于消息隊列中,直至通信接收方完成遷移并向Communicator注冊,之后Communicator將保存的所有消息都轉發給通信接收方。
集中注冊法的工作原理如圖4所示。
通過分析可知,該方法有以下優點:①集中注冊法的通信效率較高;②專用服務器的引入實現了移動Agent之間的透明的通信;③減少了通信失效現象的發生。其缺點是:由于Communicator的使用,形成了限制系統性能的瓶頸,因為系統中所有的通信都必須通過服務器才能實現,所以這種集中式的通信方式必然會造成服務器的負擔極重,一旦服務器出現異常情況,則必然導致整個系統陷入癱瘓。
5 通信失效問題
5.1 通信失效的定義
一般而言,移動Agent系統通過消息交換以實現Agent間通信[6]。但在移動Agent的通信環境中,由于Agent的自主移動特性,常會導致消息被發送到某一網絡節點但接收者己經離開而無法收到該消息。這種因為通信主體物理位置發生變化而造成的通信不正?,F象,我們稱為移動通信失效[7]。
通信失效與網絡和節點故障無關,是純粹由Agent的移動造成的,它使得協作中的Agent不能及時得到協同信息,從而導致協作的失敗甚至造成整個系統的崩潰,是移動Agent系統的致命缺陷。
5.2 通信失效解決方法的研究與分析
產生通信失效的原因在于,移動Agent在通信過程中位置發生了變化,造成發送方獲得的是一個失效的地址。目前對于通信失效問題的解決有三種方案:鴕鳥法、預防法和檢測法。
其中,鴕鳥法忽略問題的存在,不采取任何措施,無法提供可靠的通信,故很少被采用。
預防法被目前各種移動Agent通信算法普遍采用,具體可以分為兩種,即同步法和Home存儲轉發法。同步法采用同步通信的方法從結構上避免通信失效的發生,雖能徹底解決通信失效問題,但代價太高,不僅會增加因同步帶來的通信開銷,而且會破壞移動Agent的自由移動性,屬于“移動受限通信方式”。文獻[8]的算法屬于此類。Home存儲轉發法要求Home緩存所有的消息,然后再通過Push或Pull的方式轉發給移動Agent。該方法雖然沒有限制移動Agent的自由移動,屬上“自由移動通信方式”,但卻大大增加了Home的通信負擔,使之成為系統性能的瓶頸,而且系統的通信總流量會加倍,造成通信延退較大。文獻[9]的算法屬于此類。
檢測法是在通信失效發生后,采取其他方法最終將消息正確地傳遞給目標。檢測法采用異步通信的方法,對移動Agent的移動不加任何限制,通信開銷少,效率高,設計合理的情況下還可以解決消息追擊問題。文獻[10]使用了檢測法。
綜上所述,采用預防法控制復雜,代價高昂,效率低下;檢測法既符合移動Agent自由移動的天性,又能保證通信的可靠性。
6 結論
隨著Internet的發展,移動Agent作為Internet和移動計算應用與發展的催生物得到了越來越多的人的關注。而通信又是移動Agent系統的重要組成部分,為了能夠有效的實現Agent之間的通信,有必要解決好通信過程中常見的通信技術問題。
參考文獻:
[1] Darmoulh College.Agent-TCL[DB/OL].http://www.cs. darmoulh.edu,2000-10-22.
[2] IBM.Aglets Workbench[DB/OL].http: //www.trl.ibm.co.jp/aglets,1999-10-22.
[3] ObjectSpace.VoyagerCoreTechnology[DB/OL].http://www.objectspace.com/voyager,2000.
[4] 黃萍,曹陽.移動Agent系統中命名和尋址方案的分析與設計[J]. 武漢大學學報(理學版), 2002, 48(1): 55-58.
[5] 褚永麗.一種高效可靠的移動Agent 通信模型[D].長春:東北師范大學,2005.
[6] Tanenbaum AS, Van Steen M. Distributed Systems Principles and Paradigms[J].Prentice Hall Inc.,2002.57-66.
[7] Tao XP.Research on Internet based mobile Agent technology and application [D].Nanjing: Nanjing University,2001 (in Chinese with English abstract).
[8] 孫艷,劉弘.一種改進的移動Agent通信算法[J].信息技術與信息化,2006(4):104-105.
[9] 王繼曾,滿自斌.基于郵箱的移動Agent通信機制的改進算法[J].微計算機信息,2007,23(6):238-240.
[10] 李濤,李慧,等.一種Internet環境下移動Agent通信機制[J].微電子學與計算機,2005(07):42-45.