階層化モバイルエージェントによる動的適応性

Download Report

Transcript 階層化モバイルエージェントによる動的適応性

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