Peer-to-Peer Computing

Peer-to-Peer Computing
DEJAN S. MILOJICIC, VANA KALOGERAKI,
RAJAN LUKOSE, KIRAN NAGARAJA,
JIM PRUYNE, BRUNO RICHARD, SAMI
ROLLINS, and ZHICHEN XU
http://www.hpl.hp.com/techreports/2002/HPL-2002-57.pdf
Abstract
P2Pとは

分散して存在する資源を活用するシステムやアプリケーションの
一種
P2Pのメリット



中央点への依存の排除による規模性の向上
クライアントの直接通信によるコスト高なインフラの必要性の排
除
リソースの集約化
本論文はP2Pシステムとアプリケーションの重要事項と概
要について紹介


P2Pの詳細な概要やケーススタディを知らない人向け
代替手段との比較をしたい研究者、開発者等向け
1. INTRODUCTION
1. INTRODUCTION
P2Pはとても議論の余地のあるトピック


研究領域としてはまだ若い
そのため、このようなサーベイ論文が必要
本論文のゴール



何がP2Pで、何がP2Pでないか理解する
現在のP2Pの分析、具体例
今後のP2Pの可能性の分析
P2Pが可能にすること

価値のある外部性
 リソースを集合させることにより、全体で(単体では
出来なかった)素晴らしいことができる

低コスト、コスト共有
 既存のリソース、インフラの利用

匿名性・プライバシー
P2Pの問題

セキュリティ
P2Pが流行するきっかけ



Napsterで一躍有名に
分散協調手段として重要な技術に
P2Pを推進する会社が登場
 Intel, HP, Sony, Sun etc.

学会が登場
 International Workshop on P2P Computing etc.

大学のプロジェクトも登場
 Chord, OceanStore, PAST, CAN, FreeNet
P2Pの定義



システム間で直接コンピュータのリソースやサービス
を共有すること [p2pwg, 2001]
クライアントの限界無しに、インターネットに接続され
たデバイスを利用すること(?) [Veytsel, 2001]
3 keys requirements [Graham 2001]
 全てのノードはサーバの性質を持つ
 全てのノードはDNSから独立したアドレッシング
 全てのノードはあらゆる接続を共有する

独立した生存期間をもつシステム [Kindberg 2002]
著者の見識

P2Pとは
 P2P is about sharing. (resource, information)
 分散システム実装の一手段

Peerの定義:“ like each other”
 ある自律したpeerは他の自律したpeerに依存する
 peerは他のpeerを必ずしも信用できない
 規模や冗長性が必要
P2Pモデルについて


サーバ・クライアントの変
形として捉えられる
新しい考えではない
 UUCP, Switched networks
などの先駆けがあり
上から
1.
2.
3.
4.
マーケット
アプリケーション
テクノロジー
プラットフォーム
詳しい分類は2章で
P2Pの網羅すること





分散コンピューティング
コンテンツシェアリング
無線やハンドヘルドPCなどにおける通信の優位性
P2Pソフトウェアアーキテクチャ
P2Pアルゴリズム
P2Pでの新規性

Technology requirements
 スケール、アドホックな接続、セキュリティ

Architectural requirements
 多数のコンピュータでの動作を可能に
 新規システムなどでのスケーラビリティ
 プライバシーと匿名性

Economy requirements
 コスト
 利用の普及(品質保証か、ベストエフォートか)
P2Pの新規でない点









アプリケーション
スケーラビリティなどのための分散化
分散ステートマネージメント
非接続時の対応
分散スケジューリング
スケーラビリティ
アドホックネットワーク
E-Business
分散アルゴリズム
2. OVERVIEW
2. OVERVIEW
P2Pは他の単語と混同されやすい



Traditional distributed computing
Grid computing
Ad-Hoc Network
P2Pをより明確に定義するため、P2Pの
ゴール、単語、分類を紹介する
2.1. Goals
Cost sharing/reduction


集中型システムはコストが高い
P2Pはコストを各peerに分散できる
Improved scalability/reliability

信頼性のある中央サーバがいないので、
scalability/reliabilityを実現するアルゴリズムが必要
Resource aggregation and interoperability

多くのノードのリソースを集約することにより、多くの処
理が可能になる
Increased autonomy


分散システムのユーザは中央サーバに依ら
ず、自分達でなんとかしたい
ローカルにファイルをおきたい(Napsterなど)
 サーバのオペレータに見つからないため
Anonymity/privacy


クライアントサーバでは、クライアントのIPアド
レスでクライアントをある程度特定可能
P2Pではそのようなトラックが難しい
Dynamism

ノードの参加・離脱が動的
Enabling ad-hoc communication and
collaboration

既存のインフラに依らず、論理オーバレイを構
築可能
2.2. Terminology
Centralized systems

Single-unit solutions(スパコン、メインフレームなど)
Distributed Systems

ネットワークに接続した複数のコンポーネンツが、メッ
セージのみで協調するシステム
Client

要求を送るエンティティ(サーバ、プログラム、モジュー
ルなど)
Server

他のエンティティから要求を受け取るエンティティ
Client-Server model

Client と Serverのエンティティによって構成されるシ
ステム
Peer

システムにおいて、他のエンティティと似たようなエン
ティティ
P2P model


限られた通信で互いのpeerのリソース共有を可能と
する
通信制約のあるpeerの考慮、実インフラから独立した
naming、peerはserverの役割もかねる
Distributed computing


ネットワークに接続したコンピュータでタスクを共有す
るシステム [IEEE 1990]
Computing cluster, grids, global computing
systems
Grid computing


仮想の団体で、リソース共有や問題解決を図っていく
こと [Foster and Kesselmna 1999]
グローバルに計算リソースを共有するインフラ
Ad-hoc communication

固定されたインフラを持たないでコミュニケーションを
可能とするシステム
2.3. P2P Taxonomies
分類


Centralized Systems
Distributed Systems
Client-Server


Flat: 一つのサーバ、多くのクライアント。Webなど
Hierarchical: 複数の階層状のサーバ。DNSなど
Peer-to-Peer


Pure: 中央サーバなし。Gnutellaなど
Hybrid: 中央サーバあり。Napsterなど
 中央サーバはメタ情報(他のpeerの位置など)の伝達、セ
キュリティ目的(認証など)などを行う
P2Pシステムの分類

Platforms

JXTA, .NETなど
 Collaboration

Groove, Jabberなど
 Computing

SETI@HOME, Avakiなど
 File sharing

Napster, Gnutellaなど
P2Pアプリケーションの分類

Parallelizable
 Compute-intensive: peerごとのパラメータが違う
だけで、タスクは同じ。SETI@HOMEなど
 Componentized: peerごとのタスクが異なる

Content and file management
 Napster, OpenCOLAなど

Collaborative
 IM、Distributed PowerPointなど
P2Pターゲット環境について


Internet, Intranet, Ad-hoc Networkなど
最も一般的なのが家庭のネットワーク
 コンテンツシェアリングによく利用される
 P2Pコンピューティングも流行った



SETI@HOMEなど
IntranetではDataSynapseなど
Ad-Hoc Networkはまだこれから
P2Pマーケットの分類

Consumer
 パーソナルユース
 コンテンツシェアリング、IM、ゲームなど

Enterprise
 バイオ、金融、B2Bなどの用途:DataSynapseなど

Public
 情報共有、デジタル著作権管理、エンターテイメント
Nethisingheによる分類

@work, @play, @rest
3. COMPONENTS AND
ALGORITHMS
この章では以下の事柄を紹介


P2Pシステムのコンポーネント
P2Pで用いられるアルゴリズム
3.1. Infrastructure Components
5つのレイヤに分けられる

必ずしも厳密ではない
Communication

P2Pは幅広い通信の枠組みを提供する
 Peerがデスクトップだったり、PDAだったり

Peerの幅広い種類や行動を克服するのが重要
 あるコンピュータが突然電源OFF
 ダイヤルアップが突然切れる
Group Management


他のpeerの発見、ルーティング
対象とするpeerに応じて最適なアルゴリズムを
 無線端末はAd-Hocで発見、デスクトップはindexサーバで発見

ロケーション・ルーティングアルゴリズムは、メッセージ伝播のパ
スを最適化するのが重要
 例えば遅延などを考慮
Robustness

セキュリティ
 ユーザにとって負担にしかならない
 処理を集中化させるのが一番楽な実現手段

リソース集約
 ファイル、CPU、帯域、電池、ディスクスペース等

信頼性
 冗長性を持たせる



タスク:失敗したら他のマシンで再開、同タスクを複数のマシンで実行
ファイル:複数のマシンで保存
メッセージ:もう一度再送、別のパスで再送
Class-Specific




Scheduling 数値計算などのスケジューリング
Meta-data:共有ファイルの属性情報として
Messaging:他のノードのやりとり
Management:P2Pインフラの管理
Application-Specific

P2Pインフラの上に実現される
 Tools, Applications, Services

コラボレーションソフトの場合、カレンダー、ノート、
メール、チャットなど
3.2. Algorithms
Centralized directory model





Napsterが代表的
コンテンツに関する情報を中央サーバが一括管理
Peerの要求に応じて中央サーバはコンテンツを保持
するpeerを検索、peerの位置を伝達
Peer同士がコンテンツを直接交換
スケーラビリティに難がある
Flooded requests model




Gnutellaが代表的
要求をP2Pネットワークにフラッディング、TTLは大抵5
~9に制限
Peerに広帯域が必要、あまりスケールしない
SuperPeerを導入して、スケーラビリィを改善するシス
テムもある
Document routing model


FreeNetが代表的
仕組み





ノードのID:ランダムな値
コンテンツ:コンテンツ自体orコンテンツ名のハッシュ値
コンテンツはもっともIDが近いPeerが保存
コンテンツをルーティングするとき、コピーを保存
特徴
 大きなコミュニティで効率的
 前もってコンテンツのIDを知る必要あり

検索が難しい
 リンクが途絶えた島ができる可能性あり
Document routing model

4つの主要なアルゴリズム
 Chord, CAN, Tapestry, Pastry

ゴール
 コンテンツまでのホップ数を減らす
 ルーティング情報を減らす

それぞれ得意・不得意あり
 CANはルーティングテーブルが小さい


Peer参加・離脱時のルーティングテーブル更新量が小さい
代わりにサーチのパスが長くなりがち
 Tapestry・Pastryはホップ数・遅延減を目指している
Chord




1次元の円形ID空間
Peer ID=hash(IP address)
logNのルーティングテーブルを保持
P2Pネットワークに参加する場合
 Gateway peerにコンタクト
 そのサクセッサにルーティング
CAN



多次元ID空間
各peerは隣の次元をトラック
P2Pネットワークに参加する場合
 一つのID空間を選択し、分割
 隣のpeerの情報を更新
Tapestry・Pastry


Plaxton構造を持つ
ID=hash(IP Address)
4. CHARACTERISTICS
P2Pの特性












Decentralization
Scalability
Anonymity
Self-organization
Cost of ownership
Ad-hoc connectivity
Performance
Security
Transparency
Usability
Fault resilience
interoperability
4.1. Decentralization
従来のクライアントサーバ
モデル


アクセス権やセキュリティ
の管理等に最適
非能率、ボトルネック、リ
ソースの無駄使い
P2Pモデル


全てのピアが対等→全体
を知る者がいない
Napsterはファイルリストだ
けサーバが管理
4.2. Scalability
スケーラビリティを左右する事項

中心での作業量、ステート量、並行性、プログラミングモデルなど
ハイブリッドP2Pの具体例


Napster:600万人のユーザ
SETI@HOME:350万人のユーザ
ピュアP2P



Gnutella, FreeNet: フラッディングによる検索、スケーラビリティ
はそこまで優れていない
Chordなど:オブジェクトとノードをIDによってマッピング、オーバ
レイネットワークを形成、1014ものファイルを管理可能
もっと発展する余地あり
4.3. Anonymity
匿名の構成要素 [Dingledine 2000]

著者、発行者、読者、サーバ、ドキュメント、クエリ
匿名の種類 [Pfitzmann 1987]

送信者の匿名性、受信者の匿名性、相互の匿名性
匿名の度合い

Absolute privacy, beyond suspicion, probable
innocence, probably exposed
匿名を実現する技術

マルチキャスト、送信者のアドレス詐称、ID詐称、パス
の秘匿、エイリアス、非自主的なコンテンツ保管
マルチキャスト


受信者の秘匿に利用可
IP層でマルチキャストをサポートすること
送信者のアドレス詐称


UDPなどで送信者アドレスを詐称
プロトコルの変更必要、ISPによってははじかれる
ID詐称


コンテンツ保有ピアのID詐称
Freenetでは、キャッシュを持つIDもクエリに応答
パスの秘匿


プロキシによる送信者の秘匿、パスの持続にも利用できる
includeMix [Chaum 1981], Onion [Syverson 1997], Anonymizing,
Proxy [Gabber 1997], Crowds [Reiter 1998], Herdes [Shields
2000]
エイリアス


LPWA [Gabber 1999]
一種のプロキシ、アカウントの作成が必要
非自主的なコンテンツ保管

どのピアがどのコンテンツを保管しているか分からな
い
4.4. Self-Organization
Self-organizationの定義
P2Pシステムに不可欠

スケーラビリティ、失敗への弾力性、リソースへの接
続性
予想できない

システム数、ユーザ数、負荷
自動でメンテナンス、修復が必要
各ピアで分散して管理することも必要

一人でor一台のピアでするのは大変
OceanStore

インフラとしてTapestryを利用
Pastry



クエリはO(log 16N)で到達
ファイルレプリカは拡散される
負荷分散のため、ストレージはランダム
FastTrack

性能に優れたピアはスーパーノードになる
SearchLing


ネットワークに適するように
トラフィック↓、不到達情報↓
4.5. Cost of Ownership
コストを減らすことが重要


システムやコンテンツを保有するコスト
メンテナンスするコスト
当時、SETI@HOMEは世界最速スパコンよ
り高速、かつコストはそのスパコンの1%
Napster,Gnutellaはピアのディスクに保有
Parastic Grid

Ad-Hoc Networkの実装??
4.6. Ad-Hoc Connectivity
P2Pシステムでピアの違いや、参加離脱を吸収
する必要がある

分散コンピューティング:
 各ピアがシステムを実行できる時間はまちまち

コンテンツ共有:
 冗長性の確保により、アドホックの課題を減らす

コラボレーション:
 モバイル端末が多い(?)
 オフラインピアへの対応

他のピアがメッセージを保管、後に再送
4.7. Performance
パフォーマンスは以下の3つのリソース

Processing, storage, networking
中央管理モデルでは


単一故障点などの問題は残る
サーバを複数用意して解決する方法も [Yang 2001]
分散モデルでは


管理のためのメッセージが多く行き交う
帯域を消費してしまう
パフォーマンスを最適化する手法

Replication, Caching, Intelligent routing and
network organization
Replication



ピアが突然離脱しても平気
良いルーティングと組み合わせれば、コンテンツ送信の遅延を最
小限に可能
データ更新→レプリカも更新する必要あり
Caching


Freenetではコンテンツのホップ時にキャッシュ
トラフィック量↓、遅延↓、スループット↑
Intelligent routing and network organization

P2Pを引き出すには、社会的な動向(?)も必要
 Small-world:赤の他人でも、高々6ホップでたどり着く
 Power-law
 Good peers:興味の近いピア同士を近づける、メッセージ削減の効
果、ローカル情報だけでリンクを追加・削除可能
4.8. Security
Multi-key encryption


Publiusなどのファイル共有ソフトで利用される
一つの公開鍵と、複数の秘密鍵を利用する
Sandboxing



コードの安全性を検証
ソフトが読み書きできるローカルファイルを制
限
例:JavaのVM、Vmware、Internet
C++(icvm)
Digital Rights Management


P2Pではファイルのコピーが容易
ファイルに「透かし」や「埋め込み」を行う
Reputation and Accountability



「良い」&「使える」ピアの評価
たとえば、いいファイルをたくさん持っているなど
ただし、それが妥当とは限らない
Firewalls




P2Pではピア同士の直接通信が必要
FirewallやNATなどがそれを拒む
80番ポートが開いていることが多いので、それを利用
共にFirewall内のときは、中継ピアが必要
4.9. Transparency and
Usability
ユーザがシステム内部を気にすることなく、P2Pソ
フトを使えるようにするのが重要



Access, concurrency, replication, failure, mobility,
scaling
End-to-end address transparency(アドレスさえ知っ
ていれば通信可能)
Naming transparency (URL)
No configuration, no setup
自動認証、操作の代行など
ユーザインタフェース



Webブラウザ:コンテンツ共有など
目に見えない(プラットフォーム):.NETなど
ローカルにインストールされたソフト:分散コンピュー
ティング、Napsterなど
4.10. Fault Resilience
P2Pモデルの特徴




単一故障点は存在しない
しかし、ネットワーク切断・ピア群の分断・ピア
のエラーなどがある
Faultに対してベストエフォートに対応
各ピアで分散してfaultに対応するのが、クライ
アントサーバモデルとの大きな違い
例

Coda(P2Pではないが)
 オフラインノードに対応

Groove
 特別なノードを用意、アップデートや通信をキャッシュ

Freenet, Publius
 レプリケーションを利用

OceanStore
 2階層でレプリケーション
 場所が離れたところにレプリカがいくように

レプリケーションをとるのはファイルとは限らない
 ファイルシステムの拡張を
4.11. Interoperability
異なるP2Pソフト同士の相互運用性
実現するための要求事項



設計の重要性(利用するプロトコルなど)
要求やデータの交換手法
広告・セキュリティ・QoS・信頼性等の基準
手法


Standards IEEE, common specifications, common
source code, open-source, de facto standards
P2P Working Group等で推進の動き
P2Pプラットフォームの利用

JXTAなど
4.12. Summary
5. P2P SYSTEMS
この図の詳細な説明
5.1. Historical
初期の分散システムはP2Pモデル

タイムシェアリングシステム、ワークステーション
80年代後半~90年代前半

クライアントサーバ:技術に明るくないユーザが増加
初期のP2Pシステム


SMTP
Archie:FTPでのファイル検索機構→Napsterの先駆
P2Pの先駆け


AOLメッセンジャ、Napster
普及させるには初心者に適したインタフェースを
5.2. Distributed Computing
分散コンピューティングの先駆け

Beowulf project from NASA, MOSIX, Condor
グリッドコンピューティングの先駆け


I-WAY (アメリカの17の拠点を相互接続、Globus
Toolkit の先祖)
Global Grid form, Globus project
この文書では

Internetに接続した一般のPCの集合に基づくグリッド
コンピューティング=分散コンピューティングと定義
分散コンピューティング


RSA解読@distributed.net (1999)が世間一
般に認知された先駆け
SETI@HOMEは300万ノードで25TFlops達成
P2P?

厳密にはP2Pではない
 ピア同士は直接通信しない
 しかしPCのリソースを利用、匿名性という特性
 なので、我々はP2Pだと考えている
動作手順
1.
2.
3.
サーバはピア(クライアントソフト導入済)に仕事を渡
す
(スクリーンセーバのように)ピアは空いている時間
を見つけて仕事を実行
終わったら、サーバに返す
使われ方


ピア同士の通信はしない→線形代数問題といった
スパコンのような処理はできない
SPMD (Single Process Multiple Data)&マルチタス
ク
アプリケーション例

金融
 以前は、大銀行が夜中にメインフレームでシミュレーションを行う、と
いう形が一般だった
 P2Pへの以降により、15時間の計算が30分ですむようになったケー
スも

バイオ
 データが巨大(ヒトゲノムは300万シーケンス)
 以前はHigh Performance Clustering (HPC)を使っていた
 会社例:Platform Computing (LSF), Entropia, Avaki, Grid
Computing Bioinformatis
 プロジェクト例: Genome@home, Folding@home
ビジネスモデル


こなした計算数によってユーザに報酬をだす
成功例はなかなかない
5.3. File Sharing
P2Pファイル共有ソフトが提供するもの

ファイル交換場所
 ピアのストレージに保存、検索手段も提供

高有効性で安全なストレージ
 冗長化


匿名性
管理容易性
 分散していても高速検索(キャッシュなどにより)、ファイルを
取得してももともとどこにあったのか知らない、誰がファイル
に責任を持つのか?
技術





課題:帯域消費、セキュリティ、検索
モデル:中央ディレクトリ、リクエストフラッディング、ド
キュメントルーティング
現在(2002)は小さなファイル交換が主流
今後は大きなデータの交換が主流に
例:Xdegrees (M$に買収されました)
 XRNS (eXtensible Resource Name System) を提供:各ピア
のリソースにそれぞれ一意の名前をつける
アプリケーション例

Napster




P2Pで最初に有名になった
サーバでインデックス化、検索可能
他人にアップロード=自分の帯域が消費される
OpenNapが登場


open source のNapsterサーバ
サーバ同士の連携可能
 訴えられた→有料会員制へ、ルール作りを

Morpheus
 あらゆるファイルを検索可能
 多数のピアから同時にダウンロード可能
 自動レジューム機能

Kazaa
 スーパーノードの存在
 ファイルダウンロード後、メタデータを開き、次の検索に生かす
 MD5で整合性チェック
5.4. Collaboration
例

IM、チャット、ゲーム、ビジネス・教育・家庭などでの共有アプリケーショ
ンなど
イベントベース
技術的な課題

ロケーション
 Magiは中央サーバがピアのオンライン状況を把握
 NetMeetingを開始する場合、相手のIPアドレスを入力

失敗寛容性
 基本的にベストエフォート

リアルタイムの制約
 原因は下層のネットワーク
 DOOMなどのFPSは遅延に関してシビア、Internetではスケールしない
5.5. Platforms
P2Pシステムに必要なコンポーネントを提
供
例

.NET, JXTA, Groove, Magi
6. CASE STUDIES
8つのケーススタディ








Avaki
SETI@home
Groove
Magi
Freenet
Gnutella
JXTA
.NET
6.1. Avaki
種別

分散コンピューティング
歴史

Mentat → Legion(1994) → Avaki(2001)
 Legionはバージニア大学のプロジェクト
 1997年、ベンチャー企業Applied MetaComputingで登場
 2001年、Avaki Corporationとして再始動
ゴール


透過的な分散実行環境
高速実行
設計


ミドルウェア、OOP、異種機器の統合
3つの主要コンポーネント
 コアサービス:プロトコル処理(JXTAと相互運用可)、セキュリティ、分散ディ
レクトリ、発見、イベント通知など
 システムマネージメント:メタシステムの監視・制御、ポリシー管理
 アプリケーション
規模拡張性


管理ドメイン可のリソースは完全制御できる
統合されたファイルシステム
耐障害性


高速実行より耐障害性を重視(結果が重要だから)
ハードウェアトラブルを重視
実装


仮想化→オーバヘッドが生じる
一番の目標は実行時間↓
6.2. SETI@home
Search for Extraterrestrial Intelligence
種別

分散コンピューティング
ゴール

電波の解析、地球外生命体の発見
設計

二つのコンポーネント


データベースサーバ
クライアント:多くのプラットフォームに対応
耐障害性

チェックポイントアルゴリズム


10分おきに途中経過を保存
単純だが、オーバヘッドが少なく効果的
スケーラビリティ


水平:OK
垂直:ボトルネックあり、でも上手くいっている
教訓


実世界においてP2Pが役立っている
300万人もの貢献者
6.3. Groove
種別

コラボレーション
歴史

1997年、Ray Ozzieによって開発、2001年にリリース
ゴール


サーバを頼らないユーザ同士の直接通信
インターネット、イントラネットなど環境選ばず
アプリケーション



コミュニケーション:音声、IM、チャットなど
コンテンツ共有:ファイル、画像など
コラボレーション:カレンダー、共同ドローソフト
設計

システムサービス





セキュリティ:公開・秘密鍵の自動管理
ストレージ:XMLベース
同期:ローカルのファイルを同期
ピアの接続:自動化(帯域推測、ファイアウォール越え)
中央サービス
 ライセンス管理
 コンポーネント管理:適宜アップグレード
 使用状況:アプリケーションの使われ方の調査
耐障害性

ピアがオフライン時の遅延配送など
ビジネスモデル


ライセンス形式
Magiなどが対抗馬
6.4. Magi
種別

プラットフォーム
歴史



Project at the Univ. of California
Endeavors Technology (1998)
Tadpole Technology (2000)
ゴール


情報共有、メッセージング
クロスプラットフォーム
設計

実装手段
 Javaベース
 XML (micro-Apache)

コア






通信:HTTP経由
イベント:
仲間:リスト
アクセス:厳密なアクセスコントロール
plug-ableサービス:Magichat、MagiDAVなど
プロトコル
 HTTP1.1
 WebDAV
 Wf-XML:ワークフロー:リモートプロセスの監視と制御
スケーラビリティ


ピア発見にDDNSを利用
認証にCertificate Authorityを利用
対障害性


メッセージの遅延配信
他ピアのクラッシュは検地できない
実装


Java、Servlets、Tomcatなど
小型端末には好ましくない
教訓

汎用性の高い実装→高い相互運用性を実現
アプリケーション


コラボレーションがメイン
エンタープライズ向けに対応可能
6.5. FreeNet
種別

ファイル共有
歴史

Ian Clarke が開発 (1999) at the Univ. of
Edinburgh
ゴール

情報の保有と検索に匿名性を
設計


ファイルとファイルキーはペア
3つのファイルキー:ファイル識別用
 KSK (keyword-signed key)



記述ストリング(ファイル名のようなもの)を入力として作成した公開・秘密鍵
公開鍵はハッシュ化されてファイルキーになる
秘密鍵はファイル署名用
 SSK (signed-subspace key)




記述ストリングは重複することがあるため、ユーザ名による名前空間を追加する
ユーザごとに公開・秘密鍵を作成
その公開鍵と記述ストリングのハッシュをXOR演算し、それをさらにハッシュ
ファイル更新時に、ユーザの秘密鍵が必要になる
 CHK (content-hash key)

ファイルの中身をハッシュ化したもの
設計(続き)

検索
1.
2.
3.

挿入
1.
2.


リクエストを受け取ると、そのファイルキーに最も近いIDを持つピ
アに転送
見つかると、同じ経路でファイルを返す
ファイル転送中、各ピアはキャッシュする
同じIDのファイルがないかリクエストを出して検索(TTLが切れる
まで)
重複がなければファイルを挿入(このとき、ファイル格納ピアが自
分でないことをチェック)
結果的に、各ピアは似たキーのコンテンツばかり保有する
ピアの追加


ファイル挿入時とほぼ同じ
Freenet自身は、ランデブー機構を備えていない
6.6. Gnutella
種別

ファイル共有
歴史



AOLのNullsoft事業部の社員二人が密かに開発、公開
同日、Webページが削除された
しかし、Gnutellaプロトコルを元にクローンソフトが多数開発され
た
ゴール

純粋な分散ファイル共有手段の提供
設計



あくまでGnutellaとはプロトコル名
プロトコルは検索やファイル共有手法を提供
ランデブーはユーザに委ねる(Webなど)
スケーラビリティ


実はあまりスケールしない
1ピアあたり2ピアと接続、TTL=7の場合、128ノードしか検索できない
耐故障性


Gnutellaプロトコル自身は提供しない
要求が届かなかったら、ユーザ自身がリトライ
実装とパフォーマンス

多くのクローン、パフォーマンスはクローン次第?
 Limewire, ToadNode, BearShare

DL成功率、2000年:10%、2001年:25%以上
ビジネスモデル

企業のファイル共有用にGnutellaの開発をしているところも
教訓

モデル的に問題を抱えている
 非組織化、信頼性、スケーラビリティなど
6.7. JXTA
種別

プラットフォーム
歴史

2001年4月25日にSunが発表
ゴール



相互運用性
プラットフォーム独立性(プログラミング言語、システム、
ネットワーク)
偏在
設計

アプリケーションではなく、プラットフォームのみを提供
サービス

コア
 認証、ピア発見・管理、暗号化キット

オプション
 ネーミング、ルーティング、インデックス、検索

2002年の時点でサポート無し
 ファイアウォール、コンテンツリクエスト転送
アプリケーション


JXTA Shell
InstantP2P (チャット)
スケーラビリティ

ユニークIDの問題?(本当に世界でユニーク?)
実装

Solaris、Windows、Linuxなどで動作
ビジネスモデル


オープンソース
実際にアプリケーションが登場している
6.8. .NET My Services
種別

プラットフォーム
歴史

2000年6月に
Microsoftが発表
ゴール

あらゆるコンテキスト
からアクセス可能に
設計

サービスの分散化にフォーカス
 SOAP、UDDI(Webサービスのディレクトリ)、WSDL(Webサービスのプロトコ
ルフォーマットの定義)
セキュリティとプライバシ

パスポート




ユーザ認証に利用
シングルサインインを実現
1億6000万のアカウント(2001年7月時点)
パスポートに含まれる情報




パスポートユニークID (puid)
ユーザプロファイル
信用証明
お財布(オプション)
 PC環境以外でも利用可 (例:cHTML for I-mode)
スケーラビリティと耐故障性

コンポーネント&サービスの分散化で、どちらも向上
実装とパフォーマンス

基本的にWindows環境のみ
ビジネスモデル

MicrosoftはInternet、オープンソースを取り囲もうとしている
 XML, SOAP, WSDL, UDDI, C#
アプリケーション

Officeを.NETに移行中
教訓


パスポート:多くの人を集められる
アプリケーション:普及させるには魅力的なアプリケーションが重要
6.9. Summary
7. LESSONS LEARNED
7.1. Strengths and
Weaknesses
P2Pの

強み





状況によって強み





分散化
アドホック
コスト所有権
匿名性
スケーラビリティ
パフォーマンス
耐障害性
自律組織化
弱み
 セキュリティ
 相互運用性
7.2. Non-Technical Challenges
7.3. Implications for Users,
Developers, and IT
各立場からの比較


信頼性は中央集権型が強
い
周辺ソフトウェアや互換性
はクライアントサーバが強
い
 規格やソースコードがオー
プンであるから

標準化や管理はまだまだ
これから
8. SUMMARY AND FUTURE
WORK
まとめ
8.1. Final Thoughts on What
P2P Is
P2Pとは




概念である
モデルである
実装手段である
システムや環境の一部である
8.2. Why We Think P2P is
Important
スケーラビリティ
接続性、アドホック、分散化
8.3. P2P in the Future
アルゴリズム

これからよりスケーラビリティや匿名性に優れ
たアルゴリズムが出現するはず
アプリケーション

もっと便利なものが出るはず
プラットフォーム

P2Pシステムの間口をさらに広げてくれるはず
8.4. Summary
P2Pは研究対象としてだけではなく、今後
のソフトウェアの基盤としてさらに発展する
だろう