P2P技術
P2P技術
P2P(Peer to Peer)とは
Peer(ピア)とは「対等な対象」という意味であり、ネットワーク上のコンピュータを指します。
P2P(Peer to Peer)とは、対等な動作をするコンピュータによる主従関係がないシステムモデルです。
サービス提供者となるサーバは存在せずに、対等な役割として各ピアが状況に応じてサービスの提供者と利用者になります。
なお、P2Pとは対照的なシステムモデルが「クライアント/サーバ方式」です。
「クライアント/サーバ方式」ではサービスを提供する側(サーバ)とサービスを受け取る側(クライアント)が役割として明確に分かれます。
ノードとは
P2Pシステムにおける接続ネットワークは、「ノード(節)」と「リンク(結線)」による網目状の構造となるため、コンピュータであるピアを「ノード」と呼びます。
また、P2Pのピアはサーバとクライアントの両方の動作をすることから、「サーバント」と呼ばれることもあります。
P2Pでは、サービスを提供するために必要なリソース(ファイルなど)は、各ノードが分散して保持しています。
P2Pの特徴
コンピュータやネットワークによる障害に強い
クライアント/サーバ型システムは、サーバが停止するとシステム全体が利用できなくなります。
一方、P2P型システムは、システム内の一部のノードが停止しても、他のノードが生存していればサービスを継続できるので、故障に強いといえます
また、P2P型システムはサーバの機能を各ノードが分散して維持しているので、システムの特定の部分に負荷が集中することがなく、トラフィックの急増にも耐えることができます。
データの管理や同期が困難である
サービスを提供するためのリソース(情報)がネットワーク内に分散しているため、データの一元管理が困難となります。
リソースが分散しているため、データの一貫性(ある情報の変更点を他の情報に対してマージさせるなど)を短時間で同期させることが困難となります。
また、システム内の情報やノードを全て把握することが困難であるため、運用中のシステム全体を停止することができないといえます。
P2Pの構成技術
ノードの検索
P2Pシステムではサービスを利用するためには、サービスを構成する他のノードと接続する必要があります。
クライアント/サーバシステムであれば、常に特定のサーバに接続すればサービスを開始できますが、P2Pシステムではサービスを構成するノードを検索する仕組みが必須となります。
ノードの検索手法は大きく分けて2つあります。
- ノード検索用のサーバを設置して、ノードの検索のみクライアント/サーバ方式を併用する手法です。
- サービスを構成するネットワーク上のいずれかのノードをなんらかの方法(Web上の掲示板やBBSなど)で発見して、そのあとは別のノードを紹介させることで接続していくという手法です。
リソースの検索
ネットワークに参加しているノード数が多くなれば、システム上で利用するリソース数も幾何級数的に増加します。
ノード間で効率よくリソースを検索できるかどうかは性能や使いやすさに大きく影響します。
リソース検索手法は大きく分けて2つあります。
- リソース検索用のサーバを設置して、ノードの検索のみクライアント/サーバ方式を併用する手法です。
- リソースの検索にP2P的なメカニズムを採用し、複数のノードが協調して検索処理を行う手法です。
リソースの転送
検索により発見されたリソースは要求元のノードに転送します。
転送方式は、匿名性や通信信頼性など考慮して様々な手法から最適な方法を選択する必要があります。
初期のP2Pファイル共有ソフトでは、ノード同士が直接接続してHTTPやFTPでファイルを転送する方法が一般的でした。
その後のファイル共有ソフトでは、ブロック転送や多重転送など様々な手法が導入されています。
Napster(ファイル共有ソフト)の仕組み
Napsterは1999年、米国マサチューセッツ州ボストンのNorth Eastern Universityの学生「Shawn Fanning」が開発したソフトウェアです。
Napsterは、キーワードでファイルを検索して、発見したファイルをダウンロードするというファイル共有ソフトの先駆的なソフトウェアといえます。
ノード検索
Napsterでは、ノード管理にクライアント/サーバシステムを採用しており、サーバ側は動作中のノードを把握しています。
ユーザーはソフトウェア起動時にノード情報をファイル共有システムの管理サーバに送信してから処理を開始します。
ファイル検索
Napsterでは、ファイル検索処理においてクライアント/サーバシステムを採用しています。
ユーザがファイルを公開すると、そのファイルのインデックス情報(ファイル名、サイズやノード情報など)はシステム管理サーバに集約されます。
ユーザはサーバに問い合わせることで、他ユーザが持つファイルを検索することができます
ファイル転送
ファイル検索時に取得した情報を用いて、ノード同士が直接接続し、ファイルをダウンロードします
P2Pファイル共有ソフトのノードはファイルをダウンロードするだけでなく、接続を受け付けてアップロードも行います。
問題点
Napsterは、クライアント/サーバ方式とP2P方式を組み合わた「ハイブリッド型P2P方式」です。
中央サーバがダウンするとシステム全体が動作不能となります。
Gnutella(ファイル共有ソフト)の仕組み
Gnutellaは、2000年にNullsoftのJustin FrankelとTom Pepperにより開発されたファイル共有ソフトウェアです。
Gnutellaは特定サーバを用意せずに、ノードやファイルの検索処理に純粋なP2P方式(ピュアP2P)を採用していました。
ノード検索
Gnutellaは、ノードの発見にP2P方式を利用しています。
初回起動時に、シード情報(いずれかのノードのアドレス)を設定し、数珠つなぎ式にさらに別ノードの情報をやりとりすることで他ノードを発見します。
ピュアP2Pでは、自ノードに他ノードが接続したときに、自分が保持している別ノードの情報を教えることとなります。
ファイル検索
Gnutellaの検索では、ファイルの発見にP2P方式を利用しています。
あるノードが隣接ノードに検索を依頼すると、その依頼はさらに隣接するノードへと伝播していきます。
検索時に一意となるIDを割り当て、各ノードはIDを確認して同じ検索依頼が何度も同じ経路をたどらないように転送します。
ファイル転送
P2P方式を採用しており、ノード同士による通信でファイルを転送します。
問題点
Gnutellaの検索方式はノード毎に検索依頼の伝播するという擬似的なブロードキャストを行っているため、検索不可能なファイルを存在させないためには、検索の問い合わせを全ノードに到達させる必要があります。
しかし、すべてのノードからの問い合わせをすべてのノードに伝播させれば、検索パケットによるネットワークトラフィックが増大してしまい、システムとしての処理能力が低下してしまいます。
派生ソフトウェアでは以下のような対応を行っています。
WinMX(ファイル共有ソフトウェア)のWPNでは、検索サーバをP2P方式でつなげて検索能力を向上しています。
ノードの親子関係を導入することで、検索処理を上位の階層に依頼する。
Freenetについて
Freenetは、アイルランドの Ian Clarkeによる
「A Distributed Decentralised Information Storage and Retrieval System:非集中
分散型の情報の保存と検索のシステム」で提唱された概念です。
Freenetは情報に匿名性を保持するために、ファイルを断片化して無作為にネットワーク内に拡散します。