MobileSpaces: A Next-Generation Mobile Agent System お茶の水女子大学理学部情報科学科 佐藤一郎 Email: [email protected] Ichiro Satoh 概要 階層化エージェントを利用した動的適応性・拡張性 1 階層化モーバイルエージェントとエージェント間移動 移動可能なソフトウェアコンポーネント 2 動的拡張性・適応性 動的URL ディレクトリサービス 3 ランタイムシステムの動的ローディング機構 XMLベースの転送・永続化 4 まとめ Ichiro Satoh 研究(過去) モバイルオブジェクトの実現システム AgentSpace (慶大未来開拓の納品物、~1997) • 普通のモバイルエージェントシステム • 各種エージェント移動プロトコル • アプリケーションの探求・開発用 • マルチメディアへの応用(本当にできるの?) MobileSpaces (IPA情報シーズ事業向け、~1998) • 階層化されたモバイルオブジェクト(エージェント) • モバイルエージェントの組織化 Ichiro Satoh 研究(現在~未来) AgentSpace (仮称:AgentSpace2) • UI for Mobile Agents (in Real-World and Desktop) • セキュリティ • JDK1.2への対応 MobileSpaces (全面的書き換え中、SMAF納品用?) • 階層化モバイルオブジェクト(エージェント) • 動的適応性・計算環境への適応性をもつ実現システム 軽粒度モバイルエージェント(設計中) • アクティブネットワークのテストベッド(?) • プログラマブルパケットの記述言語 Ichiro Satoh 移動プログラムと動的拡張・適応 移動プログラムの適応性・拡張性 移動先の計算環境は多様 移動プログラムのライフタイムは長い 実現システム(ランタイム)の適応性・拡張性 特定の動作環境(OS・ハード・プロトコル)を仮定 計算環境変化に適応できない Ichiro Satoh 方針 モバイルエージェントの実行システム(ランタイム)の再設計 目標: • 多様な計算環境への対応(Portability) • 計算環境変化への動的適応性(Adaptability) 方針: • 計算環境への依存部分と非依存部分の分離 • モバイルエージェントの移動を通じて機能拡張 • エージェント移動として各種メカニズムを統一 Ichiro Satoh 動的変更・拡張性をもつシステム構成 モバイルエージェントにより、動的な適応・拡張性をもつシステムを実現 → 機能更新・拡張用エージェントをシステムに移動 エージェントの置換・拡張 新機能 機能変更・拡張 用エージェント エージェント の移動 ネットワーク エージェント移動による オンラインバージョンアップ Mobile Agent 機能1 Mobile Agent 機能2 Mobile Agent 機能4 機能3 機能2 Mobile Agent Mobile Agent 機能5 Mobile Agent Mobile Agent Computer Ichiro Satoh ランタイムシステムの構成 ランタイムシステムの最小化 必須機能と動作環境非依存部分 → ランタイムシステム(コア) 付加機能と動作環境依存部分 アプリケー Mobile Mobile ション Agent Agent 動作環境 依存部分 付加機能1 動作環境 非依存部分 ・・・・・・ モーバイル エージェント → モーバイルエージェント Mobile Agent モーバイル ・・・・・・ 付加的機能はモーバイル エージェントとして実現 エージェント 付加機能n エージェント移動によりシス テム構成を動的に変更可能 最小のランタイムシステム Ichiro Satoh ランタイムシステムの構成 コンピュータ間移動、永続化、エージェント間通信等は モバイルエージェントにより実現 外部エージェント 外部エージェント 内部 内部 エージェント エージェント 内部エー 永続化用 ジェント エージェント エージェント実行用 ランタイムシステム コンピュータ間 コンピュータ間 移送用エージェント 移送用エージェント UDPを利用 TCPを利用 エージェント エージェント階層 エージェント直列 実行制御 構造管理・制御 化(バイト列化) 最小化された ランタイム Java言語仮想機械 ランタイムシステムは階層構造管理と実行制御を実現 コンピュータ間移送や永続化は提供しない Ichiro Satoh ランタイムシステムの動的拡張 モーバイルエージェントの移動により機能拡張を実現 新機能を実現する 外部エージェント 外部エージェント 内部 内部 エージェント エージェント エージェントを移動 移送用エージェント 内部エー 永続化用 ジェント エージェント エージェント実行用 ランタイムシステム コンピュータ間 UDPを利用 コンピュータ間 移送用エージェント TCPを利用 エージェント エージェント階層 エージェント直列 実行制御 構造管理・制御 化(バイト列化) Java言語仮想機械 状態を保持しながらのエージェントの置換機構は未定提供 Ichiro Satoh エージェント移動としての計算 既存ランタイムシステムがエージェントに対して提供する操作は多様 例:コンピュータ間移動、永続化、生成、エージェント間通信など → ×エージェントプログラムが複雑化 モバイルエージェントの基本計算メカニズム → エージェント移動 エージェント移動によりモバイルエージェントへの各種操作を統一化 移動 操作の対象となるエージェント ある操作を実演するエージェント Ichiro Satoh エージェント階層(1/2) • モーバイルエージェントの階層化 • モーバイルエージェント間移動 移動可能なソフトウェア コンポーネント Agent E Agent C Agent D エージェント 間移動 Agent B Agent A Agent E Agent C エージェントの階層構造を 保持したまま移動 Agent D エージェント 間移動 Agent A Agent B エージェントのプログラムコードと実行状態が移動し、 移動先で処理の継続が可能 Ichiro Satoh エージェント階層(2/2) 内側エージェントは一つ外側のエージェントの操作・リソースを利用 外側エージェントはすべての内側エージェントを制御可能 Mobile Agent B 移動・通信・リソースの 操作を提供 移動 コールバック Mobile Agent C (操作内容2を提供) Mobile Agent A (操作内容2を提供) 他の外部エージェントに移動することにより 操作・リソース内容を動的変更 外部エージェントが提供する操作の例: •エージェント移動、永続化、エージェント間通信 Ichiro Satoh 例:エージェントのコンピュータ間移動 他のコンピュータに移動するエージェントは、 1.転送エージェントに移動する 2.転送エージェントが移動先コンピュータに移送 転送エージェント Agent A 転送エージェント 移動 (送信側) (受信側) Agent A 通信 Computer 1 Computer 2 エージェント移送プロトコルは転送エージェントにより規定 → 転送エージェントの選択により移送方式の変更 Ichiro Satoh ランタイムシステムの動作 コンピュータ間移動、永続化、エージェント間通信等は モバイルエージェントにより実現 TCPを利用した 外部エージェント 内部 内部 エージェント エージェント 内部エー 永続化用 ジェント エージェント エージェント実行用 ランタイムシステム コンピュータ間移動 階層構造内の移動 外部エージェント コンピュータ間 コンピュータ間 移送用エージェント 移送用エージェント UDPを利用 TCPを利用 エージェント エージェント階層 エージェント直列 実行制御 構造管理・制御 化(バイト列化) バイト列化 Java言語仮想機械 ランタイムシステムは階層構造管理と実行制御を実現 コンピュータ間移送や永続化は提供しない Ichiro Satoh 計算環境へ適応 計算環境に応じてサービス提供側エージェントを選択・移動 最適なエージェントを選択 UDP通信 TCP通信 エージェント 永続化用 エージェント コンピュータ間 コンピュータ間 移送用エージェント 移送用エージェント UDPを利用 TCPを利用 エージェント実行用ランタイムシステム Java言語仮想機械 問題: • サービス提供側エージェントの選択方法? • エージェント記述と計算環境の独立は? Ichiro Satoh 計算環境へ適応 計算環境に応じてサービス提供側エージェントを選択・移動 • エージェント移動先指定に動的URLの導入 計算環境により移動先エージェント(サービス提供側)を変更 • ディレクトリサービスエージェントの導入 サービス提供をする最適エージェントに移動 Ichiro Satoh 移動先の指定(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への移動を依頼 Ichiro Satoh 移動先の指定(2/2) 移動先エージェントの指定 go(“/tcpmatp://computer2/agent3”); tcpmatpエージェントに移動して、コンピュータ”computer2” の/agent3への移動を依頼 agent 2 /agent 1 /file 移動 移動 データ伝送 /tcpmatp /udpmatp ランタイム computer1 agent 2 /tcpmatp /udpmatp /agent 3 ランタイム computer2 例: UDPによる移動: go(“udpmatp://computer2/agent3”); 例: 永続化: go(“file:///usr/tmp/agent.jar”); Ichiro Satoh 動的URL 計算環境により移動先エージェントを変更 • 移動先エージェントの指定に変数を導入 • 変数はOSなどの環境変数に対応 go(“$(transfer)://some.where.com/agent1/agent2”); go(“$(file)://some.where.com/directory/filename”); go(“/matp://$(homebase)/agent1/agent2”); Ichiro Satoh 計算環境へ適応 環境変数に応じてサービス提供側エージェントを選択・移動 go(“$(transfer)://some.where.com/agent1/agent2”); UDP通信 URL変数 エージェント TCP通信 永続化用 エージェント (file) コンピュータ間 コンピュータ間 移送用エージェント 移送用エージェント UDPを利用 TCPを利用 (udpmatp) (tcpmatp) エージェント実行用ランタイムシステム Java言語仮想機械 Ichiro Satoh ディレクトリサービス 計算環境に応じてサービス提供側エージェントを指定 UDP通信 TCP通信 エージェント ディレクトリ サービス コンピュータ間 コンピュータ間 移送用エージェント 移送用エージェント UDPを利用 エージェント (udpmatp) TCPを利用 (tcpmatp) エージェント実行用ランタイムシステム Java言語仮想機械 Ichiro Satoh ディレクトリサービス ディレクトリサービスエージェント自体が移動し、 最適エージェントを選択 ディレクトリサービス エージェント エージェント 移動 UDP通信 TCP通信 エージェント ディレクトリ サービス コンピュータ間 コンピュータ間 エージェント 移送用エージェント 移送用エージェント UDPを利用 エージェント (udpmatp) TCPを利用 (tcpmatp) ディレクトリサービス エージェント エージェント実行用ランタイムシステム Java言語仮想機械 Ichiro Satoh XML(eXtensible Markup Language) 位置付け SGMLのサブセット。構造化文書 文書構成 文書型定義(DTD)、論理構造の2つからなる。 タグによって文書の構造や属性を記述する。 特徴 DTDで文書の構造や構文定義を行なうことで タグを独自に定義できる。 → 汎用的な移動形式を定義したDTDを設計 Ichiro Satoh 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> : : Ichiro Satoh 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)> CONTENT <!ELEMENT CODE (#PCDATA)> AGENTNAME : : MASYSTEM NAME RUNTIMEBASE HREF STATE CODE Ichiro Satoh ランタイムシステムの動的ロード XMLで指定されたURLに従って動的にダウンロード → エージェントは移動先に応じてオンデマンドに対応可能 エージェント エージェント エージェント ランタイムシステム A ランタイムシステム A ダウンロード OS/ハードウェア OS/ハードウェア 指定されたURL 先のコンピュータ 移動先コンピュータ ダウンロードのプロトコルにはHTTPを利用 ネットワーク Ichiro Satoh 現状 Java言語(JDK1.1+Swing)上で実装 ランタイムシステム(コア): • エージェントの階層化・移動機構 • 動的URL • JDK1.2への対応 • セキュリティ機構 実装済み 実装済み(ライブラリのみ) 作業中 設計中 システム補助用モバイルエージェント: • コンピュータ間転送エージェント(TCP版) • 永続化エージェント(JAR版) • XML化エージェント • ディレクトリサービス機構 • 暗号化エージェント 実装済み 実装済み 実装済み(ライブラリのみ) 実装中 設計中 Ichiro Satoh 課題 • モーバイルエージェントの置換・更新機構 • モーバイルエージェントプログラムのためのデザインパターン • スクリプティング言語による動作記述 • 耐故障性をもつエージェント移送用プロトコル • セキュリティ機構 Ichiro Satoh 移動エージェントへの移動・通信 エージェントの移動後も継続してアクセス Agent A 移動 移動 エージェントAは 他のエージェント/ コンピュータに移動 Agent A エージェントAは もとの位置には存在しない 移動したエージェントAに移動・通信するには Ichiro Satoh 移動先への回送 移動先への回送(転送)エージェント(Alias/Short Cutエージェント) Agent A 移動 Agent A 移動 Agent Aへ 回送エージェント 移動 移動先に回送 Agent Aへの 回送エージェント エージェントAは 他のエージェント/ コンピュータに移動 エージェントAは 移動先への回送用 エージェント を移動元を残す エージェントA (回送エージェント)に 到着したエージェントは 移動先に自動回送される Ichiro Satoh 回送エージェント エージェント移動先へのメッセージ/エージェントの移動 回送(転送)エージェントにより移動先に移送 Agent A 移動先に経路に 従って回送 移動先に 直接回送 移動 回送エージェントの存在期間も エージェントにより規定 移動 Agent Aへの Agent Aへの フォワーダー フォワーダー 移動先への回送方法は回送(転送)エージェントにより規定 → 回送方法の多様化・動的変更 Ichiro Satoh 消滅・永続化 消滅するエージェントは消去エージェントに移動 Agent A 消去方式は 消去エージェントにより規定 移動 Agent B 消去エージェント 永続化するエージェントは永続化エージェントに移動 Agent A Agent B 移動 永続化方式は 永続化エージェントにより規定 永続化エージェント Ichiro Satoh エージェント間通信 外側エージェントによりエージェント通信を実現 ランタイムシステム自体はエージェント間通信を提供しない 内側エージェント(送信) 内側エージェント(受信) 通信サービス の呼び出し 通信サービス 内側エージェント のメソッド呼び出し 外側エージェント エージェント間通信の方式は外側エージェントにより規定 • 非同期メッセージ通信、同期メソッド呼び出し、フューチャ通信 • マルチキャスト、KQML Ichiro Satoh エージェントプログラム 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 computer1.com 移動 エージェント エージェント method2() を実行 Agent 2 コンピュータ computer2.com Ichiro Satoh エージェント移動(コンピュータ間) コンピュータ間移動は転送エージェントにより実現 → システムはコンピュータ間転送機能は提供しない エージェント転送の方式は多様 → 転送エージェントにより転送 → エージェント転送方式を多様化・動的変更 → 多様な通信伝送方式に対応 エージェント移送プロトコルは転送エージェントにより規定 → 転送エージェントの選択により移送方式の変更 Ichiro Satoh エージェントモデル モーバイルエージェントの構成 • エージェントプログラム イベントに対応したコールバックメソッドより構成 • エージェントコンテキスト 内包エージェントが利用するサービス・リソース用メソッド 内部エージェント 外部エージェント • 内部エージェント 0個以上のモーバイルエージェント エージェントコンテキスト エージェントプログラム コールバック メソッド呼び出し サービス呼び出し エージェントコンテキスト エージェントプログラム Ichiro Satoh エージェントプログラム 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 computer1.com 移動 エージェント エージェント method2() を実行 Agent 2 コンピュータ computer2.com Ichiro Satoh 相違システム間のエージェント移動 ①エージェントの実行状態やコードをデータ化(直列化) ②直列化したエージェントを通信プロトコルにより転送 他のコンピュータに 移動・到着 ランタイムシステム A 他のコンピュータに 移動・到着 データ化された エージェント データ化された エージェント 不一致 OS/ハードウェア コンピュータA ランタイムシステム B OS/ハードウェア 移動 移動 データ通信プロトコルにより転送 コンピュータB ネットワーク 転送用データ形式はランタイムシステムに依存 Ichiro Satoh モーバイルエージェント モーバイルエージェントの機能 • • • • 自己完備の能動的プログラム 他のエージェントの内包可能性 エージェント階層内の自律的移動 移動時には実行状態及び内包エージェントも移動 ただし、コンピュータ間移動や永続化、エージェント通信などの機能は、 各機能を実現するエージェントに移動して、機能を実現 Ichiro Satoh エージェント移動としての計算 エージェント間移動を通じて各種機能を実現 – – – – エージェントのコンピュータ間移動 エージェントの永続化(ファイル化) エージェントの生成・停止・複製 エージェント間通信 各種機能を提供するエージェントに移動し、サービスを受ける Agent A 移動 ある機能を実演するエージェント Ichiro Satoh 問題 既存のモバイルエージェントシステムの問題点 ×特定の動作環境を仮定 – OS・ハードウェア – 通信プロトコル → 相違な計算環境では稼働しない ×計算環境変化に適応できない → 拡張性・動的変更性の欠如 Ichiro Satoh システム構成 •JavaTM言語(JDK1.1以上)上で実現(ハードウェア・OSに非依存) モーバイル エージェント モーバイル エージェント モーバイル エージェント モーバイル ト エージェント モーバイルエージェント ランタイムシステム モーバイル エージェント モーバイル エージェント 移送中 エージェント モーバイルエージェント ランタイムシステム Java言語仮想機械 バイト列化され た実行状態 Java言語仮想機械 OS/ハードウェア プログラム コード OS/ハードウェア コンピュータA 移動 コンピュータB ネットワーク Ichiro Satoh
© Copyright 2025 ExpyDoc