JXTAの概要

山崎 弘貴,廣安 知之,三木 光範

ISDL Report   No. 20050918006

2005年 12月 23日

Abstract

本報告では,JXTAの概要について述べる.JXTAは2001年にSun Microsystemsによって開発されたP2Pプロトコルであり,P2Pモデルで必要となる様々な機能を提供している.本報告では,JXTAの概要について触れ,JXTAが優良なプロトコルであることを示す.

1  はじめに

現在,インターネットの普及により各端末がネットワークに接続してサービスを利用することが可能である.現在のインターネットサービスの通信モデルの殆どはクライアント・サーバモデルであり,クライアントはサーバを介してサービスを利用することができる.しかし,情報・コンピュータ資源の増大,帯域幅の拡大などインターネットの発展に伴い,クライアント・サーバモデルでは十分に活用できないのが現状である.そこでサーバへの依存性が低く,クライアント同士が直接通信を行うP2Pモデルが注目されている.しかしP2Pモデルにはクライアントの互換性や開発環境・プラットフォームに合わせた設計を行う必要がある.

本報告では,こうしたP2Pモデルの問題を解決するため,Sun Microsystemsによって開発されたP2PプロトコルであるJXTAについて,アーキテクチャやネットワーク・セキュリティ機構,JXTAアプリケーションの1つであるJXTA Shellについて説明する.

2  クライアント・サーバモデルとP2Pモデル

まず,現在のインターネットなどネットワークサービスの主流となっているクライアント・サーバモデルと近年注目されているP2Pモデルについて紹介する[1][2]

2.1  クライアント・サーバモデル

クライアント・サーバモデル(Fig.1)はサービスを利用するクライアントと,サービスを提供するサーバによって構成されるネットワークシステムである.クライアントはサーバに対して要求を出し,サーバから結果を受け取る処理を行う.それに対して,サーバは常にサービスを提供しており,クライアントからの要求を受け取り,その要求を処理して結果をクライアントに返す処理を行う.クライアントからの要求は,全てサーバを介して処理が行われるので,サーバへの負担が大きく,サーバが故障するとクライアントはサービスを利用することができなくなる.

non correlation image
Fig.1 : クライアント・サーバモデル(出典:自作)

2.2  P2Pモデル

P2P(Peer-to-Peer)はサービスの提供をネットワーク上のクライアント同士が分担し,クライアント同士が直接通信を行うシステムである.あるマシンに障害が生じてもサービスが停止することはなく,よりスケーラブルなサービスを提供することが可能である.また様々な通信チャネルを使用することによって,インターネット全体の仕様帯域幅を有効利用している.

P2Pには以下に示すHybridP2PとPureP2Pという2つのP2Pシステムが存在する.

3  JXTA

3.1  JXTAとは

JXTA[3][4]は2001年にSun Microsystemsによって開発されたP2Pプロトコルで,分散コンピューティングなどで様々な問題を解決するよう設計されたプラットフォームである.JXTAにはP2Pモデルでの情報検索やセキュリティなどの機能を実装されており,P2P型のアプリケーションを容易に開発できる環境を提供している.JXTAのプログラムはオープンソースであり,大学などの教育目的からビジネスへの適応まで,普及が期待されている.JXTAを利用できる言語はJavaの他,C/C++やPerlなどにも対応している.

"JXTA"という単語は「横に並べておく」という意味のjuxtaposeの短縮形である.P2Pは既存のクライアント・サーバモデルやWebベースのコンピューティングに並べておかれるもの,ということである.

3.2  Project JXTAの目的

Webサービスがコンテンツやデバイスの両方で拡大し続けるにつれ,P2Pコンピューティングも注目されてきている.従来のP2Pテクノロジーを利用したシステムとして,インターネットを通じてユーザ間での音楽データの共有を提供するNapster,総合的なファイルの共有を提供するGnutella,インスタントメッセージングを提供するAIM,分散コンピューティングのSETI@HOMEなどが存在する.こうしたシステムは異なるサービスではあるが,検索やファイル転送といった多くの共通する機能を有している.アプリケーションの開発は非効率であり,同様のインフラを繰り返し導入している.さらに多くのアプリケーションは特有であり,他のアプリケーションとの依存性が少ない.

Project JXTAの目的として,P2Pネットワークに必要とされる基本的な機能を持つプラットフォームを提供することにあり,以下に示す3つの目的Interoperability(相互運用性),Platform Independence(プラットフォームの独立性),Ubiquity(遍在性)をもとに設計されている.

3.3  JXTAの構成要素

JXTAネットワークはPeerと呼ばれるデバイスから構成されており,PeerはAdvertisementと呼ばれるXMLドキュメントを用いて,サービスを告知する.またPeerは互いにPipeを用いてMessageを送信する.こうしたJXTAの構成要素を以下に説明する.

3.4  JXTAアーキテクチャ

Project JXTAはP2Pソフトウェアのアークテクチャの分析を行った結果,JXTAのアーキテクチャはFig.4に示すような層状の構造をとり,大きく3層に分かれている.

non correlation image
Fig.4 : JXTAアーキテクチャ(出典:自作)

JXTA ServicesとJXTA Applicationsの境界は厳密でない.あるユーザにとってのアプリケーションは他のユーザからサービスとして認識することもありうる.JXTAシステムは開発者のニーズに合わせた種々のサービスやアプリケーションを選ぶことができるようにモジュール化されている.

3.5  JXTAプロトコル

Project JXTAはPeer間の通信のために一連のXMLメッセージやプロトコルを規定している.JXTAプロトコルはFig.5に示された6つから構成されている.JXTAプロトコルを定義することで,Javaといった特定のプログラミング環境に関わらず,また下層にどんなネットワークトランスポートが用いられていても,JXTAを利用することが可能である.各プロトコルの仕様を以下に説明する.

non correlation image
Fig.5 : JXTAプロトコル(出典:自作)

3.6  JXTAによる基本的な通信

JXTAネットワーク内での通信は3.3節で説明した構成要素を用いて通信を行っている.JXTAネットワークにおいてPeer同士がどのような過程を踏んで通信を行うかをFig.6に示す.

non correlation image
Fig.6 : JXTAの基本的な通信(出典:自作)
  1. Peer AはAdvertisementから入力Pipeを作成し,Messageの到着を待つ.
  2. Peer Bは同じAdvertisementを用いてPeer AにMessageを送るには出力Pipeが必要となる.そこでPeer BはPeer AのAdvertisementを照会するために,照会Messageを送信する.
  3. Peer Aは照会Messageに対して自分のAdvertisementを返答Messageで返す.
  4. Peer Bは応答MessageからAdvertisementを取り出し,その情報を用いて出力Pipeを作成する.以後,Peer Aにメッセージを送信することができる.

3.7  JXTAのネットワーク

ファイアウォールの内側にいるPeerは,ファイアウォールの外側にいるPeerに対して直接Messageを送信することができるが,ファイアウォールの外側にいるPeerはファイアウォールの内側にいるPeerに対して直接コネクションを確立することはできない.

JXTA Peerがファイアウォールを越えてお互いに通信を行うには,以下の条件を満たす必要がある.

non correlation image
Fig.7 : ファイアウォールを経由したMessageルーティング(出典:自作)

Fig.7はファイアウォールを経由する一般的なMessageルーティングの様子を示している.この場合,Peer AとPeer Bがメッセージを送受信したいのであるが,ファイアウォールにより直接通信することができない.そこでPeer Aがファイアウォールを越えることができるHTTPのようなプロトコルを用いて,Peer Cとのコネクションを確立する.次にPeer CがTCP/IPのようなプロトコルを用いてPeer Bとコネクションを確立する.こうしてPeer AとPeer Bとの間に仮想的なコネクションが確立される.

3.8  JXTAのセキュリティ

JXTAネットワークのような動的なP2Pネットワークは,異なるレベルでのリソースアクセスをサポートする必要がある.各Peerは他の信頼できるPeerが特定のタスクを実行することで得られる承認をもとに動作している.

セキュリティへの要求条件は以下に示す5つの項目がある.

XMLメッセージは,JXTAメッセージに対する信任状,証明書,要約,公開鍵などのメタデータを追記する機能を提供しており,上記の基本的なセキュリティをの要求条件を満たすことが可能である.メッセージの要約はメッセージがのデータが完全であることを保証したものである.

3.9  JXTA Shell

JXTAにはJXTA Shellと呼ばれるシェルの機能を提供している.JXTA ShellはJXTAプラットフォーム上に構築された重要なJXTAアプリケーションの1つであり,UNIX Shellと同様,コマンドラインのインターフェースを経由してJXTAプラットフォームへの対話的なアクセスを提供している.

大半のUNIX Shellはローカルマシンで実行するよう設計されているが,JXTA Shellはネットワーク環境で実行するよう設計されている.あるメッセージを生成するようなコマンドがPeer間でやり取りされると,リモートのPeer上である計算が行われ,結果が返答される.このようにJXTA Shellを用いることによって,コード・データの公開・検索・実行,PeerあるいはPeer Groupの発見,Pipeの作成,Messageの送受信を行うことができる.

4  まとめ

本報告では,P2Pネットワークに必要とされる基本的な機能を持つプラットフォームを提供するJXTAの概要について述べた.JXTAの利用により,相互運用性・プラットフォームの独立・遍在性の実現を目指している.また共通のプラットフォームを整備することで,P2Pテクノロジーを利用したアプリケーション同士の非依存性も解消できると考えられる.

Reference

[1]
林文梁,JXTAネットワークに対する動的ピアグループ操作の実装,電気通信大学 卒業論文,2005
http://almond.cs.uec.ac.jp/theses/paper/2004/undergraduate/lin.pdf
[2]
熊田直人,P2P フレームワーク JXTA を用いた進捗報告システムの設計,東海大学電子情報学部情報メディア学科,2005
http://www.cs.dm.u-tokai.ac.jp/~shide/2004/P2P/thesis.pdf
[3]
Li Gong,JXTA:A Network Programming Environment,Sun Microsystems,Inc., 2001
http://www.jxta.org/project/www/docs/JXTAnetworkProgEnv.pdf
[4]
Project JXTA v1.0: Java プログラマーズガイド
http://translation.jxta.org/ja/mirror/www/docs/jxtaprogguide_final.pdf


Copyright (C) 2005 Tomoyuki Hiroyasu, All rights reserved.
Copyright (C) 2005 Mitsunori Miki, All rights reserved.
Copyright (C) 2005 Hirotaka Yamazaki, All rights reserved.

No part of this document may be reproduced, copied, distributed,
transferred, modified, or transmitted, in any form or by any means,
without the prior written permission of the authors.
In no event shall the authors be liable for any damages caused in any way
out of the use of this document.

Back to Top