1 / 43

MobileSpaces: A Next-Generation Mobile Agent System

MobileSpaces: A Next-Generation Mobile Agent System. お茶の水女子大学理学部情報科学科 佐藤一郎 Email: ichiro@is.ocha.ac.jp. 概要. 階層化エージェントを利用した動的適応性・拡張性 1 階層化モーバイルエージェントとエージェント間移動 移動可能なソフトウェアコンポーネント 2 動的拡張性・適応性 動的URL ディレクトリサービス 3 ランタイムシステムの動的ローディング機構 XMLベースの転送・永続化 4 まとめ. 研究(過去). モバイルオブジェクトの実現システム

claral
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 動的拡張性・適応性 • 動的URL • ディレクトリサービス • 3 ランタイムシステムの動的ローディング機構 • XMLベースの転送・永続化 • 4 まとめ

  3. 研究(過去) • モバイルオブジェクトの実現システム • AgentSpace (慶大未来開拓の納品物、~1997) • 普通のモバイルエージェントシステム • 各種エージェント移動プロトコル • アプリケーションの探求・開発用 • マルチメディアへの応用(本当にできるの?) • MobileSpaces (IPA情報シーズ事業向け、~1998) • 階層化されたモバイルオブジェクト(エージェント) • モバイルエージェントの組織化

  4. 研究(現在~未来) • AgentSpace (仮称:AgentSpace2) • UI for Mobile Agents(in Real-World and Desktop) • セキュリティ • JDK1.2への対応 • MobileSpaces (全面的書き換え中、SMAF納品用?) • 階層化モバイルオブジェクト(エージェント) • 動的適応性・計算環境への適応性をもつ実現システム • 軽粒度モバイルエージェント(設計中) • アクティブネットワークのテストベッド(?) • プログラマブルパケットの記述言語

  5. 移動プログラムと動的拡張・適応 • 移動プログラムの適応性・拡張性 • 移動先の計算環境は多様 • 移動プログラムのライフタイムは長い • 実現システム(ランタイム)の適応性・拡張性 • 特定の動作環境(OS・ハード・プロトコル)を仮定 • 計算環境変化に適応できない

  6. 方針 • モバイルエージェントの実行システム(ランタイム)の再設計 • 目標: • 多様な計算環境への対応(Portability) • 計算環境変化への動的適応性(Adaptability) • 方針: • 計算環境への依存部分と非依存部分の分離 • モバイルエージェントの移動を通じて機能拡張 • エージェント移動として各種メカニズムを統一

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

  8. ランタイムシステムの構成 • ランタイムシステムの最小化 • 必須機能と動作環境非依存部分 → ランタイムシステム(コア) • 付加機能と動作環境依存部分   → モーバイルエージェント Mobile Agent Mobile Agent Mobile Agent アプリケー ション ・・・・・・ 付加的機能はモーバイルエージェントとして実現 エージェント移動によりシステム構成を動的に変更可能 モーバイル エージェント 付加機能1 モーバイル エージェント 付加機能n 動作環境 依存部分 ・・・・・・ 動作環境 非依存部分 最小のランタイムシステム

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

  10. ランタイムシステムの動的拡張 • モーバイルエージェントの移動により機能拡張を実現 新機能を実現する エージェントを移動 外部エージェント 外部エージェント コンピュータ間 移送用エージェント UDPを利用 内部 エージェント 内部 エージェント 永続化用 エージェント コンピュータ間 移送用エージェント TCPを利用 内部エー ジェント エージェント 実行制御 エージェント階層 構造管理・制御 エージェント直列 化(バイト列化) エージェント実行用 ランタイムシステム Java言語仮想機械 状態を保持しながらのエージェントの置換機構は未定提供

  11. エージェント移動としての計算 • 既存ランタイムシステムがエージェントに対して提供する操作は多様 • 例:コンピュータ間移動、永続化、生成、エージェント間通信など • → ×エージェントプログラムが複雑化 • モバイルエージェントの基本計算メカニズム → エージェント移動 • エージェント移動によりモバイルエージェントへの各種操作を統一化 移動 操作の対象となるエージェント ある操作を実演するエージェント

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

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

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

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

  16. 計算環境へ適応 • 計算環境に応じてサービス提供側エージェントを選択・移動 最適なエージェントを選択 UDP通信 エージェント TCP通信 永続化用 エージェント コンピュータ間 移送用エージェント UDPを利用 コンピュータ間 移送用エージェント TCPを利用 エージェント実行用ランタイムシステム Java言語仮想機械 • 問題: • サービス提供側エージェントの選択方法? • エージェント記述と計算環境の独立は?

  17. 計算環境へ適応 • 計算環境に応じてサービス提供側エージェントを選択・移動 • エージェント移動先指定に動的URLの導入 • 計算環境により移動先エージェント(サービス提供側)を変更 • ディレクトリサービスエージェントの導入 • サービス提供をする最適エージェントに移動

  18. 移動先の指定(1/2) • 移動先エージェントの指定:ローカル移動(エージェント階層内) go(“/agent1/agent2”); agent1内のagent2に移動 go(“../agent”); 親エージェント内のagentに移動 移動先エージェントの指定:コンピュータ間移動 name://some.where.com/agent1/agent2 機能提供用 エージェントの名前 IPアドレス エージェント階層 matp はHTTPをベースにした エージェント転送プロトコル go(“/tcpatp://some.where.com/agent1/agent2”); tcpatpエージェントに移動して、コンピュータ”some.where.com” の/agent1内のagent2への移動を依頼

  19. 移動先の指定(2/2) • 移動先エージェントの指定 go(“/tcpmatp://computer2/agent3”); tcpmatpエージェントに移動して、コンピュータ”computer2” の/agent3への移動を依頼 移動 移動 agent 2 データ伝送 agent 2 /agent 1 /tcpmatp /tcpmatp /agent 3 /udpmatp /udpmatp /file ランタイム ランタイム computer1 computer2 例: UDPによる移動: go(“udpmatp://computer2/agent3”); 例: 永続化: go(“file:///usr/tmp/agent.jar”);

  20. 動的URL • 計算環境により移動先エージェントを変更 • 移動先エージェントの指定に変数を導入 • 変数はOSなどの環境変数に対応 go(“$(transfer)://some.where.com/agent1/agent2”); go(“$(file)://some.where.com/directory/filename”); go(“/matp://$(homebase)/agent1/agent2”);

  21. 計算環境へ適応 • 環境変数に応じてサービス提供側エージェントを選択・移動 go(“$(transfer)://some.where.com/agent1/agent2”); エージェント URL変数 UDP通信 TCP通信 永続化用 エージェント (file) コンピュータ間 移送用エージェント UDPを利用 (udpmatp) コンピュータ間 移送用エージェント TCPを利用 (tcpmatp) エージェント実行用ランタイムシステム Java言語仮想機械

  22. ディレクトリサービス • 計算環境に応じてサービス提供側エージェントを指定 UDP通信 エージェント TCP通信 ディレクトリ サービス エージェント コンピュータ間 移送用エージェント UDPを利用 (udpmatp) コンピュータ間 移送用エージェント TCPを利用 (tcpmatp) エージェント実行用ランタイムシステム Java言語仮想機械

  23. ディレクトリサービス • ディレクトリサービスエージェント自体が移動し、 • 最適エージェントを選択 ディレクトリサービス エージェント エージェント 移動 UDP通信 エージェント TCP通信 エージェント ディレクトリ サービス エージェント コンピュータ間 移送用エージェント UDPを利用 (udpmatp) コンピュータ間 移送用エージェント TCPを利用 (tcpmatp) ディレクトリサービス エージェント エージェント実行用ランタイムシステム Java言語仮想機械

  24. XML(eXtensible Markup Language) • 位置付け • SGMLのサブセット。構造化文書 • 文書構成 • 文書型定義(DTD)、論理構造の2つからなる。 • タグによって文書の構造や属性を記述する。 • 特徴 • DTDで文書の構造や構文定義を行なうことで • タグを独自に定義できる。 • →  汎用的な移動形式を定義したDTDを設計

  25. XML化の例(Agent.xml) • <?xml version="1.0"?> • <!DOCTYPE AGENT SYSTEM "Agent.dtd"> • <CONTENT> • <AGENTNAME NAME="Editor.agent"/> • <RUNTIMEBASE • HREF="http://localhost:8080/agentspace.jar" /> • <MASYSTEM>AgentSpace</MASYSTEM> • <STATE> ..Base64でエンコードされたデータ.. </STATE> • <CODE>..Base64でエンコードされたエージェントデータ..</CODE> • </CONTENT> • : • :

  26. CONTENT MASYSTEM AGENTNAME NAME STATE RUNTIMEBASE HREF CODE DTDの例(Agent.dtd) • <?xml version="1.0"?> • <!ELEMENT CONTENT (ID | AGENTNAME | RUNTIMEBASE | • MASYSTEM | CODE)> • <!ELEMENT AGENTNAME EMPTY> • <!ATTLIST AGENTNAME NAME CDATA #REQUIRED> • <!ELEMENT RUNTIMEBASE EMPTY> • <!ATTLIST RUNTIMEBASE HREF CDATA #REQUIRED> • <!ELEMENT MASYSTEM (#PCDATA)> • <!ELEMENT STATE (#PCDATA)> • <!ELEMENT CODE (#PCDATA)> • : • :

  27. OS/ハードウェア OS/ハードウェア ネットワーク ランタイムシステムの動的ロード • XMLで指定されたURLに従って動的にダウンロード •    → エージェントは移動先に応じてオンデマンドに対応可能 エージェント エージェント エージェント ランタイムシステム A ランタイムシステム A ランタイムシステム A ダウンロード 指定されたURL先のコンピュータ 移動先コンピュータ ダウンロードのプロトコルにはHTTPを利用

  28. 現状 • Java言語(JDK1.1+Swing)上で実装 • ランタイムシステム(コア): • エージェントの階層化・移動機構 実装済み • 動的URL 実装済み(ライブラリのみ) • JDK1.2への対応 作業中 • セキュリティ機構 設計中 • システム補助用モバイルエージェント: • コンピュータ間転送エージェント(TCP版) 実装済み • 永続化エージェント(JAR版) 実装済み • XML化エージェント 実装済み(ライブラリのみ) • ディレクトリサービス機構 実装中 • 暗号化エージェント 設計中

  29. 課題 • モーバイルエージェントの置換・更新機構 • モーバイルエージェントプログラムのためのデザインパターン • スクリプティング言語による動作記述 • 耐故障性をもつエージェント移送用プロトコル • セキュリティ機構

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

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

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

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

  34. エージェント間通信 • 外側エージェントによりエージェント通信を実現 • ランタイムシステム自体はエージェント間通信を提供しない 内側エージェント(送信) 内側エージェント(受信) 通信サービス の呼び出し 内側エージェント のメソッド呼び出し 通信サービス 外側エージェント • エージェント間通信の方式は外側エージェントにより規定 • 非同期メッセージ通信、同期メソッド呼び出し、フューチャ通信 • マルチキャスト、KQML

  35. エージェントプログラム • Java言語で記述される能動的なプログラム Class Agent extends Ambient implements DefaultListener ... { public void create(URL url) { addContext(new SimpleContext()); addEventListener(this); getContext().go(“matp://computer2.com/Agent2”); } void destroy() {...} void enter() {...} void exit() {...} } method1() を実行 エージェント コンピュータ 移動 Agent 1 method2() を実行 移動 computer1.com エージェント エージェント Agent 2 コンピュータ computer2.com

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

  37. エージェントモデル • モーバイルエージェントの構成 • エージェントプログラム • イベントに対応したコールバックメソッドより構成 • エージェントコンテキスト • 内包エージェントが利用するサービス・リソース用メソッド • 内部エージェント • 0個以上のモーバイルエージェント 外部エージェント 内部エージェント エージェントコンテキスト エージェントプログラム サービス呼び出し エージェントコンテキスト コールバック メソッド呼び出し エージェントプログラム

  38. エージェントプログラム • Java言語で記述される能動的なプログラム Class Agent extends Ambient implements AmbientListener { public void create(URL url) { addChildrenContext(new DefaultContext()); 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

  39. 相違システム間のエージェント移動 • ①エージェントの実行状態やコードをデータ化(直列化) • ②直列化したエージェントを通信プロトコルにより転送 他のコンピュータに 移動・到着 他のコンピュータに 移動・到着 データ化された エージェント データ化された エージェント ランタイムシステム A ランタイムシステム B 不一致 OS/ハードウェア OS/ハードウェア 移動 移動 コンピュータA コンピュータB ネットワーク データ通信プロトコルにより転送 転送用データ形式はランタイムシステムに依存

  40. モーバイルエージェント • モーバイルエージェントの機能 • 自己完備の能動的プログラム • 他のエージェントの内包可能性 • エージェント階層内の自律的移動 • 移動時には実行状態及び内包エージェントも移動 • ただし、コンピュータ間移動や永続化、エージェント通信などの機能は、 • 各機能を実現するエージェントに移動して、機能を実現

  41. エージェント移動としての計算 • エージェント間移動を通じて各種機能を実現 • エージェントのコンピュータ間移動 • エージェントの永続化(ファイル化) • エージェントの生成・停止・複製 • エージェント間通信 • 各種機能を提供するエージェントに移動し、サービスを受ける Agent A 移動 ある機能を実演するエージェント

  42. 問題 • 既存のモバイルエージェントシステムの問題点 • ×特定の動作環境を仮定 • OS・ハードウェア • 通信プロトコル • → 相違な計算環境では稼働しない • ×計算環境変化に適応できない • → 拡張性・動的変更性の欠如

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

More Related