japan.internet.comに新しいコラムが掲載されました。
前回まで、 3回にわたってオーバーレイネットワークの説明をしてきました。 P2P テクノロジーが構築する、フラットでフレキシブルなアプリケーションレイヤのネットワークに、可能性を感じていただけたでしょうか。
オーバーレイネットワークに限らず、技術の話をする際には常にレイヤを意識することが重要です。
エンジニア同士で議論をしていて、つい収拾がつかなくなってしまう原因が、実は単に、お互いの想定しているレイヤが異なっているだけ、ということも多いものです(しかもそれに気づかない)。事前にレイヤを限定してから議論を開始することは、エンジニアのコミュニケーションスキルの中でも重要だと筆者は思っています。
■P2P システムの分類
さて今回と次回は、オーバーレイネットワークの「実装」の方を見ていきたいと思います。お決まりと言っていいかもしれませんが、「分類」をしながら見ていくことにします。分類は以下の2つの観点から行います。
* データの探索方法による分類
* 扱うデータによる分類
分類を行うことにより、一口に P2P と言っても、実装レベルでは相当異なることが理解できると思います。 P2P テクノロジーと呼ばれる技術は実にたくさんあるため、レイヤと同様、カテゴリに分類しておくと、全体を体系的に理解するのに役立ちます。
今回はまず探索方法による分類に基づいた解説を行います。
■データの探索方法による分類
データの探索方法による分類は、 P2P の基礎とも言える分類方法です。
クライアント/サーバー型のシステムでは、データはサーバーに存在することになっていますので、データの「場所」を探す行為は必要ありませんでした。
ところが P2P のシステムではデータは各ピアが保持しています。つまりどこか固定的な場所にデータがまとまっているわけではないのです。そのため、データを要求するノードはデータの取得を開始する前に、何らかの方法でデータの所在情報を得る必要があります。それが「データ探索」です。 P2P アプリケーションは、探索方法にそれぞれ様々な工夫を凝らしています。
探索方法による分類は、 P2P の入門や解説で必ずと言っていいほど示されるので、見慣れている方も多いと思います。ここで今一度、タイプ別に特徴と利点、そして欠点を把握しておきましょう。今回は Skype が採用している、スーパーノード型ハイブリッド P2P も分類に加えましたので、チェックしてみてください。
(1)ハイブリッド P2P
クライアント/サーバーと P2P のハイブリッドという意味です。データの所在情報は固定的なサーバーが一手に引き受けています。各ノードは「あらかじめ知っている(predefined な)」サーバーに問い合わせることで、データの場所を知ります。
データの探索を行うサーバーのことをインデックスサーバーといいます。インデックスサーバーはデータの所在情報のみを扱います。データの実体はピア同士でやり取りする点が、クライアント/サーバー型との違いです。
[長所]
シンプル。システムを管理・制御しやすい。
[短所]
探索情報だけとはいえシステムに中心を持つため、スケーラビリティや耐障害性が十分に発揮されない。
(2)ピュア P2P
探索情報を持つインデックスサーバーすら持たず、純粋にピアのみでシステムを形成するのが、ピュア P2P です。探索方法はピア同士の助け合いによって実現します。
通常ピュア P2P では、各ピアは近接ピアと定常的な接続をメッシュ状に張っています。探索には、「フラッディング」呼ばれるバケツリレーに似た手法を使うのが一般的です。各ピアが発行した探索クエリをお互いに伝搬し、見つかった場合は、その結果を再び逆伝搬してもらうことでデータの所在を知ります。
[長所]
純粋な P2P が実現できるため、スケーラビリティ、耐障害性、アドホック性ともに高い。
[短所]
実装が複雑になる。ノード数が増えた場合に、探索クエリによる帯域消費が増大する。耐障害性が高いことの裏返しとして、一度機能すると駆逐することが難しい。
(3)スーパーノード型ハイブリッド P2P
KaZaA や Skype で採用されているのが、このスーパーノード型のハイブリッドです。
データの探索は、一般のノードよりも高スペックのスーパーノードと呼ばれるノード群が担当します。インデックスサーバーとの違いは、スーパーノードが固定的ではなく、全体のノード数に応じて自律的に数を調整し、スケーラビリティと冗長性を持っている点です。
ピュア P2P では、自分に関係のない探索クエリの伝搬であってもボランティア参加する必要があり、自分のことだけで精一杯な低スペック PC にはつらい状況もありました(ある意味平等とも言えます)。
スーパーノード型では、一般のノードは探索のボランティアに参加する必要がないため、低スペック PC のリソースが自分以外の処理のために消費されて困る、ということが起きません。
[長所]
ハイブリッド P2P のよさとピュア P2P の良さを併せ持つ。
[短所]
探索データの分散化など、実装が難しくなる。ノード数がある程度の規模になるまでは安定しない可能性がある。
以上、今回はデータ探索方法による P2P の分類を行いました。それぞれの長所と短所を理解して、 P2P 技術を活用していただければ幸いです。
次回は別の切り口として、 P2P アプリケーションが「扱うデータの種類」による分類を行う予定です。(執筆:岩田真一