モーバイルエージェント

Download Report

Transcript モーバイルエージェント

MobileSpaces: A Next-Generation
Mobile Agent System
お茶の水女子大学理学部情報科学科
佐藤一郎
Email: [email protected]
Ichiro Satoh
発表概要
1 既存のモーバイルエージェントシステムの問題点
2 階層化モーバイルエージェントとエージェント間移動
3 システム設計・実装
4 デモンストレーション
5 まとめ
モーバイルエージェントの階層構造・移動を導入したモーバイルエー
ジェントの実現システム及び応用システムを提案
• エージェントの合成手法の提供
• (複数または個別)エージェントの機能の動的変更・拡張
• 計算環境・リソースの相違への対応
• 計算環境への依存部分と非違損部分の分離
Ichiro Satoh
モーバイルエージェント
• エージェントは自律的に移動先(コンピュータ)を選択・移動
• 移動先において処理を継続
• エージェント間通信
プログラム移動
エージェント間通信
計算処理
ネットワーク
コンピュータA
コンピュータB
特徴:
• コンピュータ間通信回数の最小化
• コンピュータ間の非同期協調
• 負荷分散・耐故障性
Ichiro Satoh
研究背景(1/2)
次世代の分散システムとしてモーバイルエージェントが注目されている
モーバイルエージェントの応用:
古典的な分散検索jや負荷分散だけでなく、
•
•
•
•
•
•
•
通信プロトコルのトンネル化・カプセル化
遠隔フィルタリング
遠隔システム管理
耐故障性
ワークフロー・グループウェア
パーソナルアシスタント
簡易な分散プログラミング
Ichiro Satoh
研究背景(2/2)
数多くのモーバイルエージェントシステムが提案・実装
規格・標準化
Java言語によるもの
Mobile Agent Facility Specification (OMG社)
Voyager (ObjectSpace社)、
Mobile Agent Specification (FIPA)
Aglets (IBM社)、
Odessey (General Magic社)
Plangent (東芝)、
MOA (Open Group)、
Mole (Stuttgart大)、
AgentSpace (お茶大)、etc
しかし、問題も多い・・・
Java言語以外によるもの
Telescript (General Magic社)、
SafeTcl (Sun社)
Agent-Tcl (Dartmouth大)、etc
Ichiro Satoh
問題
既存のモーバイルエージェントシステムの問題:
• モーバイルエージェントの合成手法が欠如
– 大規模アプリケーションの開発が困難
• 特定の動作環境に依存
– 特定のOS/通信プロトコル以外では動作不能
• 移動先コンピュータの計算環境・リソースの相違
– 多様な計算環境・リソースを考慮したエージェントプログラムが必要
• セキュリティ
Ichiro Satoh
問題:プログラム粒度
既存のモーバイルエージェントシステム:
• 計算や移動の単位は単体エージェントのみ
• メッセージ通信によるエージェントの疎結合
問題:
複数エージェントのグループ化・合成手法が欠如
複数モーバイルエージェントによる大規模システム開発は困難
Ichiro Satoh
問題:動作環境への依存
既存のモーバイルエージェントシステムの問題点:
• 特定の動作環境を前提としたシステム構成
しかし、OS/ハードウェア、通信方式は多様性
解決策:
• エージェントプログラム:
→ 移動先の計算環境への動的適応性
• ランタイムシステム
→ 計算環境への依存部分と非依存部分を分離
Ichiro Satoh
方針(1/2)
モーバイルエージェントの基本計算メカニズムとして2つの概念を導入:
• モーバイルエージェントの階層化
他のモーバイルエージェントを入れ子状に内包可能
• エージェント間の移動
エージェントはコンピュータだけでなく、他のモーバイルエー
ジェントにも移動可能
Ichiro Satoh
方針(2/2)
• モーバイルエージェントの階層化
• モーバイルエージェント間移動
移動可能なプレース
Agent E
Agent C
Agent D
エージェント
間移動
Agent B
Agent A
Agent E
Agent C
エージェントの階層構造を
保持したまま移動
Agent D
エージェント
間移動
Agent A
Agent B
エージェントのプログラムコードと実行状態が移動し、
移動先で処理の継続が可能
Ichiro Satoh
エージェント階層化のメリット
エージェントの階層的構成・移動により
モーバイルエージェントの階層的合成
エージェントのグループ化・構造化、エージェント粒度の多様化
動的変更・拡張性をもつシステム構成
モーバイルエージェントによる各種機能・サービスの提供
エージェント移動として計算
各種操作をエージェントの移動として統一的に記述・実現
Ichiro Satoh
モーバイルエージェントの階層的合成
複数モーバイルエージェントよりシステム(モーバイルエージェント)を構成
c.f. コンポーネントウェア
モーバイルエージェントとして各種機能の実現
Mobile
Agent
機能1
Mobile
Agent
機能2
Mobile
Agent
Mobile
Agent
機能5
機能4
機能3
機能2
Mobile
Agent
Mobile
Agent
Mobile Agent
Computer
モーバイルエージェント合成体として構成された
システムまたはモーバイルエージェント
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
エージェント階層(1/3)
外側エージェントは内側エージェントに対して
• サービスを提供
各種アプリケーションの機能、
エージェント移動、永続化、エージェント間通信
• リソースを提供
ファイル、各種入出力、外部環境の情報・制御対象
Mobile Agent B
移動・通信・リソースの
サービス要求
Mobile Agent A
Ichiro Satoh
エージェント階層(2/3)
内側エージェントは一つ外側のエージェントのサービス・リソースを利用
Mobile Agent B
移動・通信・リソースの
サービス要求
移動
コールバック
Mobile Agent C
(サービス内容2を提供)
Mobile Agent A
(サービス内容2を提供)
他の外部エージェントに移動することにより
サービス内容を動的変更
外部エージェントが提供するサービスの例:
•エージェント移動、永続化、エージェント間通信
Ichiro Satoh
エージェント階層(3/3)
• 外側エージェントはすべての内側エージェントの実行を制御
• 外側エージェントは内側エージェントに対してコールバックメソッド
を呼び出す
他の外部エージェントに
移動することにより
コールバックの内容と
呼び出しタイミングを動的変更
Mobile Agent B
コールバック
Mobile Agent A
コールバックメソッドの種類・タイミングは外部エージェントにより規定
他の外部エージェントに移動 → コールバックの動的変更
Ichiro Satoh
エージェント環境
エージェントは一つ外側のエージェントにサービスを利用
Mobile Agent
外部エージェントにサービス要求
Mobile Agent
Mobile Agent
外部エージェントの外部エージェント
にサービスを直接要求はできない
(間接は可)
Ichiro Satoh
システム構成
•JavaTM言語(JDK1.1以上)上で実現(ハードウェア・OSに非依存)
モーバイル
エージェント
モーバイル
エージェント
モーバイル
エージェント
モーバイル
ト
エージェント
モーバイルエージェント
ランタイムシステム
モーバイル
エージェント
モーバイル
エージェント
移送中
エージェント
モーバイルエージェント
ランタイムシステム
Java言語仮想機械
バイト列化され
た実行状態
Java言語仮想機械
OS/ハードウェア
プログラム
コード
OS/ハードウェア
コンピュータA
移動
コンピュータB
ネットワーク
Ichiro Satoh
ランタイムシステムの構成
コンピュータ間移動、永続化、エージェント間通信等は
モーバイルエージェントにより実現
外部エージェント
外部エージェント
内部
内部
エージェント
エージェント
内部エー
永続化用
ジェント
エージェント
エージェント実行用
ランタイムシステム
コンピュータ間
コンピュータ間
移送用エージェント 移送用エージェント
UDPを利用
TCPを利用
エージェント
エージェント階層
エージェント直列
実行制御
構造管理・制御
化(バイト列化)
Java言語仮想機械
ランタイムシステムは階層構造管理と実行制御を実現
コンピュータ間移送や永続化は提供しない
Ichiro Satoh
エージェント移動(コンピュータ間)
他のコンピュータに移動するエージェントは、
1.転送エージェントに移動する
2.転送エージェントが移動先コンピュータに移送
転送エージェント
Agent A
転送エージェント
移動 (送信側)
(受信側)
Agent A
通信
Computer 1
Computer 2
エージェント移送プロトコルは転送エージェントにより規定
→ 転送エージェントの選択により移送方式の変更
Ichiro Satoh
エージェント移動(コンピュータ間)
コンピュータ間移動は転送エージェントにより実現
→ システムはコンピュータ間転送機能は提供しない
エージェント転送の方式は多様
→ 転送エージェントにより転送
→ エージェント転送方式を多様化・動的変更
→ 多様な通信伝送方式に対応
エージェント移送プロトコルは転送エージェントにより規定
→ 転送エージェントの選択により移送方式の変更
Ichiro Satoh
消滅・永続化
消滅するエージェントは消去エージェントに移動
Agent A
消去方式は
消去エージェントにより規定
移動
Agent B
消去エージェント
永続化するエージェントは永続化エージェントに移動
Agent A
Agent B
移動
永続化方式は
永続化エージェントにより規定
永続化エージェント
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
ランタイムシステムの構成
コンピュータ間移動、永続化、エージェント間通信等は
モーバイルエージェントにより実現
外部エージェント
内部
内部
エージェント
エージェント
内部エー
永続化用
ジェント
エージェント
エージェント実行用
ランタイムシステム
コンピュータ間移動
階層構造内の移動
外部エージェント
コンピュータ間
コンピュータ間
移送用エージェント 移送用エージェント
UDPを利用
TCPを利用
エージェント
エージェント階層
エージェント直列
実行制御
構造管理・制御
化(バイト列化)
バイト列化
Java言語仮想機械
ランタイムシステムは階層構造管理と実行制御を実現
コンピュータ間移送や永続化は提供しない
Ichiro Satoh
エージェントプログラム
• エージェントはJava言語により記述された能動的なプログラム
• 状態変化を通知するコールバックメソッドから構成
• 同一階層内の自律的な移動性
ただし、コンピュータ間移動や永続化、通信などの機能は、
各機能を実現するエージェントに移動して、機能を実現する
内部エージェント
外部エージェント
エージェントコンテキスト
エージェントプログラム
通信・リソースのサービス要求
エージェントコンテキスト:
内部エージェントへのサービス
エージェントコンテキスト
コールバック
メソッドモデル
エージェントプログラム
コールバックメソッドモデ
ル:
内包するエージェントへの
コールバックメソッドの
種類やタイミングを規定
Ichiro Satoh
エージェントプログラム
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
computer1.com 移動
エージェント
エージェント
method2()
を実行
Agent 2
コンピュータ
computer2.com
Ichiro Satoh
移動先の指定
移動先エージェントの指定
URL
name://some.where.com/agent1/agent2
機能提供用
IPアドレス
エージェント階層
エージェントの名前
移動先 matp://computer.com/Agent3
(= /matp#/computer.com/Agent3)
Agent 2
/Agent 1
/file
移動
matp はHTTPをベースにした
エージェント転送プロトコル
移動
データ伝送
/matp
/udpmatp
ランタイム
computer1
Agent 2
/matp
/udpmatp
/Agent 3
ランタイム
computer2
例: 永続化:
file://computer2.com/usr/tmp/agent.jar
Ichiro Satoh
コールバックメソッド
エージェント
エージェントプログラム
コールバック
メソッド1
内包エージェントに所定の状態変化
がおきたとき、コールバックメソッド
が呼び出される
メソッド2
メソッドn
コールバックモデル
コールバック
メソッド呼び出し
内包エージェントに対するコールバッ
ク呼び出しのメソッド種類とタイミング
を規定
エージェント毎に定義可能
コールバックモデル
....
エージェントプログラム
addCallbackModel(new
SimpleModel());
....
Ichiro Satoh
コールバックモデル
コールバックメソッドを遷移ラベルとする状態遷移モデル
永続化
suspend()
resume()
移動状態
(入る)
enter()
exit()
移動状態
(出る)
create()
destroy()
初期化
終了
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;
}
....
}
}
Ichiro Satoh
エージェントコンテキスト
エージェントコンテキストは内包エージェントに対してリソース獲得・通信などの
サービスを提供
内包エージェント
エージェントコンテキスト
エージェントプログラム
通信・リソースのサービス要求
エージェントコンテキスト
エージェントプログラム
public class SimpleContext
extends AmbientContext {
public AmbientIdentifier
getIdentifier(){
/* 識別子の獲得 */ }
public URL getURL() {
/* URLの獲得 */ }
public Enumeration getChildren() {
/* 内包エージェントのリスト(識別子)を獲得 */
public void migrate(AmbientIdentifier
aid,
URL url) {
/* 自分または内包エージェント(aid)を
urlに移動させる */ }
}
}
AmbientContext ac =
エージェントコンテキストは
new SimpleContext();
エージェント毎に定義可能
addChildrenContext(ac);
.....
removeChildrenContext(ac);
Ichiro Satoh
エージェントプログラム例
コールバックメソッド
生成直後、移動前後、終了直前にランタイムシステムより所定のコール
バックメソッドが呼び出される
移動中
arrive()
dispatch()
実行前
実行中
create()
停止
destroy()
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();
}
}
Ichiro Satoh
エージェント移動の特徴
エージェント移動では状態とコードの一括移送
•一回通信で移動可能
→ 高速なエージェント移動
c.f. 他のシステムの多くは複数回の通信が必要
•移動中エージェントは圧縮・暗号化
→通信速度及びセキュリティを確保
•移動後は通信切断が発生してもよい
→ 携帯端末や無線通信に対応
移動失敗時には複数回トライの後、移動元に戻る
Ichiro Satoh
実装・評価
実装
Java言語(JDK Ver.1.1以上)を利用
OS・コンピュータに非依存
Java言語の直列化機構の利用
性能評価(参考)
エージェント間移動:
移動時間(同一コンピュータ内)
移動時間(コンピュータ間)
0.02s
0.25s
PentiumII(400MHz, JDK1.1.6) x 2 Ethernet(100Base-TX)
Ichiro Satoh
関連研究
プロセス/オブジェクト移動システム:
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
Ichiro Satoh
課題
• モーバイルエージェントの置換・更新機構
• ディレクトリサービス・名前管理機構
• モーバイルエージェントプログラムのためのデザインパターン
• XMLベースのエージェント移送・永続化フォーマット
• スクリプティング言語による動作記述
• 耐故障性をもつエージェント移送用プロトコル
• セキュリティ機構
Ichiro Satoh
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>
Ichiro Satoh
ランタイムの動的ローディング
未知の言語処理系によるモーバイルエージェントが到着したとき、
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や動的ローディング機構を利用
Ichiro Satoh
Scripting言語
外側エージェントによる内側エージェントに対するカスタマイズ
•エージェント階層の設定
•内側エージェントに対するコールバックメソッド呼び出しの設定
•計算環境・リソース相違の吸収と動作の変更
Ichiro Satoh
Best Effort / Least Suffering
Migration
移動端末・無線通信ではネットワーク接続が切断が頻発
最善移動戦略:エージェントを最終移動先に可能な限り近づける
ネットワーク切断
コンピュータ
コンピュータ
コンピュータ
最小被害移動戦略:エージェントを移動を中止・引き返させる
Ichiro Satoh
セキュリティ
不正なエージェントから、いいホストをいかに守るか
認証機構、証明添付、etc
不正なホストから、いいエージェントをいかに守るか
現在、解決策なし
特定ホストや通信チャネルへの負荷集中をいかに避けるか
経済的なメタファ
Ichiro Satoh
まとめ
モーバイルエージェントの階層的構造化・移動を導入
• モーバイルエージェントのグループ化・合成手法
• 動的変更・拡張性をもつシステムを実現
• 各種操作をエージェント移動として統一的記述・実現
モーバイルエージェントシステムのダウンロード先:
http://islab.is.ocha.ac.jp
(ソース・実行プログラム)
ただし、エージェントの非階層化版(階層化版は10月以降を予定)
Ichiro Satoh
例:分散検索(リモートGrep)
相違のコンピュータ上のファイルを検索(Grep)するには?
•遠隔端末(Telnet)、しかし、常に利用可能とは限らない…
•ファイルの転送、しかし、巨大なファイルの場合は…
検索プログラム(Grep)自体を移動させる
Grepプログラム
(検索中)
Grepプログラム
(検索結果を保持)
Grepプログラムを
移動・検索させる
プログラム移動
コンピュータB
Grepプログラム
(移動中)
コンピュータC
コンピュータA
Grepプログラム
(検索結果を保持)
プログラム移動
Ichiro Satoh
例:電子メール
•モーバイルエージェントでは電子メールのデータだけでなく編集・観覧
ソフトウェアも転送可能
独自フォーマット
データを含むメール
メールの編集・観覧
プログラムも移動
任意フォーマットの
メールデータが
観覧・編集可能
エージェント
コンピュータA
メール編集・観覧
プログラム
メール編集・観覧
プログラム
エージェントの移動
コンピュータB
Ichiro Satoh
例:トンネル化エージェント
•通信において、エージェントを通信相手に移動させ、通信相手直接で
はなく、そのエージェント介してと通信
→ 独自通信プロトコルによる通信を実現
エージェント
A
エージェントエージェントの移動
B
コンピュータA
コンピュータB
エージェントAとBの間で通信
エージェント
A
コンピュータA
エージェント
B
エージェントAとBだけの
独自通信プロトコルでもよい
コンピュータB
Ichiro Satoh
例:デスクトップトランスポート
•データとソフトウェアをモーバイルエージェントとして一体化
•デスクトップ環境を他のコンピュータに移動・運用
デスクトップ環境も移動
コンピュータA
コンピュータB
ユーザ
ユーザの移動
ユーザ
Ichiro Satoh
コンピュータ間転送エージェント1
エージェントの移動は転送エージェントにより実現
永続化された
Agent A
永続化された
Agent A
Agent A
移動
移動
直列化
Computer 1
データ送信
通信
データ受信
Agent A
非直列化
転送エージェント
転送エージェント
(送信側)
(受信側)
Computer 2
転送プロトコルは転送エージェントにより規定
Ichiro Satoh
エージェントの主体的移動
エージェントはそれ自身(または外部エージェント)の移動要求で移動
隣接エージェントの移動要求によって移動することはない
移動
隣接エージェントから
移動要求
それ自身に移動要求
外部エージェントによる移動要求は特殊ケース
Ichiro Satoh
エージェントサービスと移動
外部エージェントの移動において、
内部エージェントが利用するサービスは変化しない
Agent D
移動
Agent D
Agent C
Agent C
Agent A
Agent B
サービス内容
変化の検知
移動エージェント(外側)
変化
可能(自身に移動要求)
移動エージェント(内側)
無変化
不可能
Ichiro Satoh
エージェント移動としての計算
各種機能を提供するエージェントに移動し、サービスを受ける
Agent A
移動
ある機能を実現するエージェント
エージェント間移動を通じて各種機能を実現
–
–
–
–
エージェントのコンピュータ間移動
エージェントの永続化・停止・暗号化
移動エージェントの現在位置へメッセージ・エージェントを回送
エージェント間通信、他
Ichiro Satoh