1 / 51

MobileSpaces: A Next-Generation Mobile Agent System

MobileSpaces: A Next-Generation Mobile Agent System. お茶の水女子大学理学部情報科学科 佐藤一郎 Email: ichiro@is.ocha.ac.jp. 発表概要. 1 既存のモーバイルエージェントシステムの問題点 2 階層化モーバイルエージェントとエージェント間移動 3 システム設計・実装 4  デモンストレーション 5 まとめ モーバイルエージェントの階層構造・移動を導入したモーバイルエージェントの実現システム及び応用システムを提案 エージェントの合成手法の提供

yakov
Download Presentation

MobileSpaces: A Next-Generation Mobile Agent System

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. MobileSpaces: A Next-Generation Mobile Agent System お茶の水女子大学理学部情報科学科 佐藤一郎 Email: ichiro@is.ocha.ac.jp

  2. 発表概要 • 1 既存のモーバイルエージェントシステムの問題点 • 2 階層化モーバイルエージェントとエージェント間移動 • 3 システム設計・実装 • 4  デモンストレーション • 5 まとめ • モーバイルエージェントの階層構造・移動を導入したモーバイルエージェントの実現システム及び応用システムを提案 • エージェントの合成手法の提供 • (複数または個別)エージェントの機能の動的変更・拡張 • 計算環境・リソースの相違への対応 • 計算環境への依存部分と非違損部分の分離

  3. モーバイルエージェント • エージェントは自律的に移動先(コンピュータ)を選択・移動 • 移動先において処理を継続 • エージェント間通信 プログラム移動 エージェント間通信 計算処理 ネットワーク コンピュータB コンピュータA • 特徴: • コンピュータ間通信回数の最小化 • コンピュータ間の非同期協調 • 負荷分散・耐故障性

  4. 研究背景(1/2) • 次世代の分散システムとしてモーバイルエージェントが注目されている • モーバイルエージェントの応用: • 古典的な分散検索jや負荷分散だけでなく、 • 通信プロトコルのトンネル化・カプセル化 • 遠隔フィルタリング • 遠隔システム管理 • 耐故障性 • ワークフロー・グループウェア • パーソナルアシスタント • 簡易な分散プログラミング

  5. 研究背景(2/2) • 数多くのモーバイルエージェントシステムが提案・実装 • Java言語によるもの • Voyager (ObjectSpace社)、 • Aglets (IBM社)、 • Odessey (General Magic社) • Plangent (東芝)、 • MOA (Open Group)、 • Mole (Stuttgart大)、 • AgentSpace (お茶大)、etc • Java言語以外によるもの • Telescript (General Magic社)、 • SafeTcl (Sun社) • Agent-Tcl (Dartmouth大)、etc • 規格・標準化 • Mobile Agent Facility Specification (OMG社) • Mobile Agent Specification (FIPA) しかし、問題も多い・・・

  6. 問題 • 既存のモーバイルエージェントシステムの問題: • モーバイルエージェントの合成手法が欠如 • 大規模アプリケーションの開発が困難 • 特定の動作環境に依存 • 特定のOS/通信プロトコル以外では動作不能 • 移動先コンピュータの計算環境・リソースの相違 • 多様な計算環境・リソースを考慮したエージェントプログラムが必要 • セキュリティ

  7. 問題:プログラム粒度 • 既存のモーバイルエージェントシステム: • 計算や移動の単位は単体エージェントのみ • メッセージ通信によるエージェントの疎結合 • 問題: 複数エージェントのグループ化・合成手法が欠如 • 複数モーバイルエージェントによる大規模システム開発は困難

  8. 問題:動作環境への依存 • 既存のモーバイルエージェントシステムの問題点: • 特定の動作環境を前提としたシステム構成 • しかし、OS/ハードウェア、通信方式は多様性 • 解決策: • エージェントプログラム: • → 移動先の計算環境への動的適応性 • ランタイムシステム • → 計算環境への依存部分と非依存部分を分離

  9. 方針(1/2) • モーバイルエージェントの基本計算メカニズムとして2つの概念を導入: • モーバイルエージェントの階層化 • 他のモーバイルエージェントを入れ子状に内包可能 • エージェント間の移動 • エージェントはコンピュータだけでなく、他のモーバイルエージェントにも移動可能

  10. 方針(2/2) • モーバイルエージェントの階層化 • モーバイルエージェント間移動 移動可能なプレース Agent E Agent C Agent D エージェント 間移動 Agent B Agent A エージェントの階層構造を 保持したまま移動 Agent E Agent C Agent D エージェント 間移動 Agent B Agent A エージェントのプログラムコードと実行状態が移動し、 移動先で処理の継続が可能

  11. エージェント階層化のメリット • エージェントの階層的構成・移動により • モーバイルエージェントの階層的合成 • エージェントのグループ化・構造化、エージェント粒度の多様化 • 動的変更・拡張性をもつシステム構成 • モーバイルエージェントによる各種機能・サービスの提供 • エージェント移動として計算 • 各種操作をエージェントの移動として統一的に記述・実現

  12. モーバイルエージェントの階層的合成 • 複数モーバイルエージェントよりシステム(モーバイルエージェント)を構成 • c.f.コンポーネントウェア • モーバイルエージェントとして各種機能の実現 Mobile Agent Mobile Agent Mobile Agent Mobile Agent 機能5 機能2 機能3 機能4 機能1 機能2 Mobile Agent Mobile Agent Mobile Agent Computer モーバイルエージェント合成体として構成された システムまたはモーバイルエージェント

  13. 動的変更・拡張性をもつシステム構成 • モーバイルエージェントにより、動的な適応・拡張性をもつシステムを実現 • → 機能更新・拡張用エージェントをシステムに移動 エージェントの置換・拡張 ネットワーク エージェント の移動 Mobile Agent Mobile Agent Mobile Agent Mobile Agent 機能5 機能2 新機能 機能3 機能4 機能1 機能変更・拡張 用エージェント 機能2 Mobile Agent Mobile Agent Mobile Agent エージェント移動による オンラインバージョンアップ Computer • 動的な適応性・拡張性をもつ • モーバイルエージェントによる応用システム • モーバイルエージェントの実現システム(ランタイム)

  14. エージェント階層(1/3) • 外側エージェントは内側エージェントに対して • サービスを提供 • 各種アプリケーションの機能、 • エージェント移動、永続化、エージェント間通信 • リソースを提供 • ファイル、各種入出力、外部環境の情報・制御対象 Mobile Agent B 移動・通信・リソースの サービス要求 Mobile Agent A

  15. エージェント階層(2/3) • 内側エージェントは一つ外側のエージェントのサービス・リソースを利用 Mobile Agent B 移動 移動・通信・リソースの サービス要求 コールバック Mobile Agent C (サービス内容2を提供) Mobile Agent A (サービス内容2を提供) 他の外部エージェントに移動することにより サービス内容を動的変更 • 外部エージェントが提供するサービスの例: • エージェント移動、永続化、エージェント間通信

  16. エージェント階層(3/3) • 外側エージェントはすべての内側エージェントの実行を制御 • 外側エージェントは内側エージェントに対してコールバックメソッド • を呼び出す 他の外部エージェントに 移動することにより コールバックの内容と 呼び出しタイミングを動的変更 Mobile Agent B コールバック Mobile Agent A コールバックメソッドの種類・タイミングは外部エージェントにより規定 他の外部エージェントに移動 → コールバックの動的変更

  17. エージェント環境 • エージェントは一つ外側のエージェントにサービスを利用 MobileAgent 外部エージェントにサービス要求 Mobile Agent 外部エージェントの外部エージェントにサービスを直接要求はできない (間接は可) Mobile Agent

  18. システム構成 • JavaTM言語(JDK1.1以上)上で実現(ハードウェア・OSに非依存) モーバイル エージェント モーバイル エージェント モーバイル エージェント モーバイル エージェント ト モーバイル エージェント モーバイル エージェント モーバイルエージェント ランタイムシステム モーバイルエージェント ランタイムシステム 移送中 エージェント バイト列化され た実行状態 Java言語仮想機械 Java言語仮想機械 プログラム コード OS/ハードウェア OS/ハードウェア コンピュータA コンピュータB 移動 ネットワーク

  19. ランタイムシステムの構成 • コンピュータ間移動、永続化、エージェント間通信等は • モーバイルエージェントにより実現 外部エージェント 外部エージェント 内部 エージェント 内部 エージェント 永続化用 エージェント コンピュータ間 移送用エージェント UDPを利用 コンピュータ間 移送用エージェント TCPを利用 内部エー ジェント エージェント 実行制御 エージェント階層 構造管理・制御 エージェント直列 化(バイト列化) エージェント実行用 ランタイムシステム Java言語仮想機械 ランタイムシステムは階層構造管理と実行制御を実現 コンピュータ間移送や永続化は提供しない

  20. エージェント移動(コンピュータ間) • 他のコンピュータに移動するエージェントは、 • 1.転送エージェントに移動する • 2.転送エージェントが移動先コンピュータに移送 転送エージェント (送信側) 転送エージェント (受信側) Agent A 移動 Agent A 通信 Computer 1 Computer 2 エージェント移送プロトコルは転送エージェントにより規定 → 転送エージェントの選択により移送方式の変更

  21. エージェント移動(コンピュータ間) • コンピュータ間移動は転送エージェントにより実現 • → システムはコンピュータ間転送機能は提供しない • エージェント転送の方式は多様 • → 転送エージェントにより転送 • → エージェント転送方式を多様化・動的変更 • → 多様な通信伝送方式に対応 エージェント移送プロトコルは転送エージェントにより規定 → 転送エージェントの選択により移送方式の変更

  22. 消滅・永続化 • 消滅するエージェントは消去エージェントに移動 消去方式は 消去エージェントにより規定 Agent A 移動 Agent B 消去エージェント 永続化するエージェントは永続化エージェントに移動 Agent A 永続化方式は 永続化エージェントにより規定 移動 永続化エージェント Agent B

  23. 移動エージェントへの移動・通信 • エージェントの移動後も継続してアクセス Agent A 移動 エージェントAは 他のエージェント/ コンピュータに移動 Agent A 移動 エージェントAは もとの位置には存在しない 移動したエージェントAに移動・通信するには

  24. 移動先への回送 • 移動先への回送(転送)エージェント(Alias/Short Cutエージェント) Agent A エージェントAは 他のエージェント/ コンピュータに移動 移動 Agent A エージェントAは 移動先への回送用 エージェント を移動元を残す 移動 Agent Aへ 回送エージェント 移動先に回送 移動 エージェントA (回送エージェント)に 到着したエージェントは 移動先に自動回送される Agent Aへの 回送エージェント

  25. 回送エージェント • エージェント移動先へのメッセージ/エージェントの移動 • 回送(転送)エージェントにより移動先に移送 Agent A 移動先に経路に 従って回送 移動先に 直接回送 移動 回送エージェントの存在期間も エージェントにより規定 移動 Agent Aへの フォワーダー Agent Aへの フォワーダー 移動先への回送方法は回送(転送)エージェントにより規定 → 回送方法の多様化・動的変更

  26. コンピュータ間移動 階層構造内の移動 バイト列化 ランタイムシステムの構成 • コンピュータ間移動、永続化、エージェント間通信等は • モーバイルエージェントにより実現 外部エージェント 外部エージェント 内部 エージェント 内部 エージェント 永続化用 エージェント コンピュータ間 移送用エージェント UDPを利用 コンピュータ間 移送用エージェント TCPを利用 内部エー ジェント エージェント 実行制御 エージェント階層 構造管理・制御 エージェント直列 化(バイト列化) エージェント実行用 ランタイムシステム Java言語仮想機械 ランタイムシステムは階層構造管理と実行制御を実現 コンピュータ間移送や永続化は提供しない

  27. エージェントプログラム • エージェントはJava言語により記述された能動的なプログラム • 状態変化を通知するコールバックメソッドから構成 • 同一階層内の自律的な移動性 • ただし、コンピュータ間移動や永続化、通信などの機能は、 • 各機能を実現するエージェントに移動して、機能を実現する 外部エージェント 内部エージェント エージェントコンテキスト エージェントコンテキスト: 内部エージェントへのサービス     エージェントプログラム 通信・リソースのサービス要求 エージェントコンテキスト コールバックメソッドモデル: 内包するエージェントへの コールバックメソッドの 種類やタイミングを規定           エージェントプログラム コールバック メソッドモデル

  28. エージェントプログラム • Java言語で記述される能動的なプログラム Class Agent extends Ambient implements SimpleAmbient { public void create(URL url) { addChildrenContext(new SimpleContext()); addCallbackModel(new SimpleModel()); Route route = new Route(); route.set(“matp://computer1.com/Agent1”, “method1”); route.set(“matp://computer2.com/Agent2”, “method2”); getContext().go(route); } void method1() {...} void method2() {...} } method1() を実行 エージェント コンピュータ 移動 Agent 1 method2() を実行 移動 computer1.com エージェント エージェント Agent 2 コンピュータ computer2.com

  29. 移動先の指定 • 移動先エージェントの指定 URL name://some.where.com/agent1/agent2 機能提供用 エージェントの名前 IPアドレス エージェント階層 移動先 matp://computer.com/Agent3 (= /matp#/computer.com/Agent3) matp はHTTPをベースにした エージェント転送プロトコル 移動 移動 Agent 2 データ伝送 Agent 2 /Agent 1 /matp /matp /Agent 3 /udpmatp /udpmatp /file ランタイム ランタイム computer1 computer2 例: 永続化: file://computer2.com/usr/tmp/agent.jar

  30. .... addCallbackModel(new SimpleModel()); .... コールバックメソッド エージェント 内包エージェントに所定の状態変化がおきたとき、コールバックメソッドが呼び出される エージェントプログラム コールバック メソッド1 メソッド2 メソッドn コールバックモデル 内包エージェントに対するコールバック呼び出しのメソッド種類とタイミングを規定 エージェント毎に定義可能 コールバック メソッド呼び出し エージェントプログラム   コールバックモデル

  31. コールバックモデル • コールバックメソッドを遷移ラベルとする状態遷移モデル class SimpleModel implements AmbientModel { public Message setCallback(AmbientEvent e) { if (e.getID() == AmbientEvent.CREATE) { msg.setName(new Message("create")); return msg; } if (e.getID() == AmbientEvent.ENTER) { msg.setName(new Message("enter")); return msg; } if (e.getID() == AmbientEvent.EXIT) { msg.setName(new Message("exit")); return msg; } if (e.getID() == AmbientEvent.SUSPEND) { msg.setName(new Message("suspend")); return msg; } .... } } 永続化 suspend() resume() enter() 移動状態 (出る) 移動状態 (入る) exit() create() destroy() 初期化 終了

  32. エージェントコンテキスト     エージェントプログラム AmbientContext ac = new SimpleContext(); addChildrenContext(ac); ..... removeChildrenContext(ac); エージェントコンテキスト • エージェントコンテキストは内包エージェントに対してリソース獲得・通信などのサービスを提供 public class SimpleContext extends AmbientContext { public AmbientIdentifier getIdentifier(){ /* 識別子の獲得 */ } public URL getURL() { /* URLの獲得 */ } public Enumeration getChildren() { /* 内包エージェントのリスト(識別子)を獲得 */ } public void migrate(AmbientIdentifier aid, URL url) { /* 自分または内包エージェント(aid)を urlに移動させる */ } } 内包エージェント 通信・リソースのサービス要求 エージェントコンテキスト エージェントプログラム エージェントコンテキストは エージェント毎に定義可能

  33. エージェントプログラム例 • コールバックメソッド • 生成直後、移動前後、終了直前にランタイムシステムより所定のコールバックメソッドが呼び出される public class HelloWorld extends Agent { public HelloWorld() {} public void create() { add(new Label("Hello World")); show(); } public void arrive() { show(); } public void dispatch(URL url) { dispose(); } public void destroy() { dispose(); } } 移動中 dispatch() arrive() 実行前 実行中 停止 create() destroy()

  34. エージェント移動の特徴 • エージェント移動では状態とコードの一括移送 • 一回通信で移動可能 • → 高速なエージェント移動 • c.f. 他のシステムの多くは複数回の通信が必要 • 移動中エージェントは圧縮・暗号化 • →通信速度及びセキュリティを確保 • 移動後は通信切断が発生してもよい  • → 携帯端末や無線通信に対応 • 移動失敗時には複数回トライの後、移動元に戻る

  35. 実装・評価 • 実装 • Java言語(JDK Ver.1.1以上)を利用 • OS・コンピュータに非依存 • Java言語の直列化機構の利用 • 性能評価(参考) • エージェント間移動: • 移動時間(同一コンピュータ内)0.02s • 移動時間(コンピュータ間)0.25s • PentiumII(400MHz, JDK1.1.6) x 2 Ethernet(100Base-TX)

  36. 関連研究 • プロセス/オブジェクト移動システム: • Aperios(SonyCSL)、DEMOS/MP、Emerald(ワシントン大), etc. • 既存のモーバイルエージェントシステム • 非Java言語によるシステム • Telescript (General Magic社)、Agent-Tcl (Dartmouth大)、 • Safe-Tcl (Sun社)、etc • Java言語によるシステム • Aglets (IBM社)、Vogayer (ObjectStore社)、Mole (Shuttgart大)、 • Odessey(General Magic社)、Plangent (東芝)、etc

  37. 課題 • モーバイルエージェントの置換・更新機構 • ディレクトリサービス・名前管理機構 • モーバイルエージェントプログラムのためのデザインパターン • XMLベースのエージェント移送・永続化フォーマット • スクリプティング言語による動作記述 • 耐故障性をもつエージェント移送用プロトコル • セキュリティ機構

  38. XMLエージェント転送フォーマット • XMLデータとしてエージェントを転送・永続化 <MOBILEAGENT> <LANGUAGE NAME=“MobileSpaces”/> <SENDER>“islab.is.ocha.ac.jp”</SENDER> <RUNTIMEBASE HREF=“www.is.ocha.ac.jp/mobilespaces/runtime.class LANGUAGE=“Java”/> <STATE>...BASE64 Encoded Serialized Agent..</STATE> <CODE> <CODE NAME=“Editor.class”>..BASE64 Encoded Class..</CODE> <CODE NAME=“Dialog.class”>..BASE64 Encoded Class..</CODE> </CODE> <PROPERTY> ... </PROPERTY> </MOBILEAGENT>

  39. ランタイムの動的ローディング • 未知の言語処理系によるモーバイルエージェントが到着したとき、 • XMLのタグ情報をもとにランタイムを動的にローディング <MOBILEAGNET> <LANGUAGE NAME=“MobileSpaces”/> <SENDER>“islab.is.ocha.ac.jp”</SENDER> <RUNTIMEBASE HREF=“www.is.ocha.ac.jp/mobilespaces/runtime.class LANGUAGE=“Java”/> <STATE> ... 移動プログラムのランタイムを移動先に事前配布する必要はない Plug-Inや動的ローディング機構を利用

  40. Scripting言語 • 外側エージェントによる内側エージェントに対するカスタマイズ • エージェント階層の設定 • 内側エージェントに対するコールバックメソッド呼び出しの設定 • 計算環境・リソース相違の吸収と動作の変更

  41. Best Effort / Least Suffering Migration • 移動端末・無線通信ではネットワーク接続が切断が頻発 • 最善移動戦略:エージェントを最終移動先に可能な限り近づける ネットワーク切断 コンピュータ コンピュータ コンピュータ 最小被害移動戦略:エージェントを移動を中止・引き返させる

  42. セキュリティ • 不正なエージェントから、いいホストをいかに守るか • 認証機構、証明添付、etc • 不正なホストから、いいエージェントをいかに守るか • 現在、解決策なし • 特定ホストや通信チャネルへの負荷集中をいかに避けるか • 経済的なメタファ

  43. まとめ • モーバイルエージェントの階層的構造化・移動を導入 • モーバイルエージェントのグループ化・合成手法 • 動的変更・拡張性をもつシステムを実現 • 各種操作をエージェント移動として統一的記述・実現 • モーバイルエージェントシステムのダウンロード先: • http://islab.is.ocha.ac.jp (ソース・実行プログラム) • ただし、エージェントの非階層化版(階層化版は10月以降を予定)

  44. 例:分散検索(リモートGrep) • 相違のコンピュータ上のファイルを検索(Grep)するには? • 遠隔端末(Telnet)、しかし、常に利用可能とは限らない… • ファイルの転送、しかし、巨大なファイルの場合は… • 検索プログラム(Grep)自体を移動させる Grepプログラム (検索中) Grepプログラム (検索結果を保持) プログラム移動 Grepプログラムを 移動・検索させる コンピュータB Grepプログラム (移動中) コンピュータC コンピュータA Grepプログラム (検索結果を保持) プログラム移動

  45. 例:電子メール • モーバイルエージェントでは電子メールのデータだけでなく編集・観覧ソフトウェアも転送可能 独自フォーマット データを含むメール 任意フォーマットの メールデータが 観覧・編集可能 メールの編集・観覧 プログラムも移動 エージェント メール編集・観覧 プログラム コンピュータA メール編集・観覧 プログラム エージェントの移動 コンピュータB

  46. 例:トンネル化エージェント • 通信において、エージェントを通信相手に移動させ、通信相手直接ではなく、そのエージェント介してと通信 • → 独自通信プロトコルによる通信を実現 エージェントの移動 エージェント A エージェント B コンピュータA コンピュータB エージェントAとBの間で通信 エージェント A エージェント B コンピュータA エージェントAとBだけの 独自通信プロトコルでもよい コンピュータB

  47. 例:デスクトップトランスポート • データとソフトウェアをモーバイルエージェントとして一体化 • デスクトップ環境を他のコンピュータに移動・運用 デスクトップ環境も移動 コンピュータA コンピュータB ユーザの移動 ユーザ ユーザ

  48. コンピュータ間転送エージェント1 • エージェントの移動は転送エージェントにより実現 永続化された Agent A 永続化された Agent A 移動 Agent A 移動 Agent A データ受信 非直列化 直列化 データ送信 通信 転送エージェント (受信側) 転送エージェント (送信側) Computer 1 Computer 2 転送プロトコルは転送エージェントにより規定

  49. エージェントの主体的移動 • エージェントはそれ自身(または外部エージェント)の移動要求で移動 • 隣接エージェントの移動要求によって移動することはない 移動 隣接エージェントから移動要求 それ自身に移動要求 外部エージェントによる移動要求は特殊ケース

  50. サービス内容 変化の検知 移動エージェント(外側) 変化 可能(自身に移動要求) 移動エージェント(内側) 無変化 不可能 エージェントサービスと移動 • 外部エージェントの移動において、 • 内部エージェントが利用するサービスは変化しない 移動 Agent D Agent D Agent C Agent C Agent A Agent B

More Related