Peer_to_Peer
[Wikipedia|▼Menu]
□記事を途中から表示しています
[最初から表示]

そのためこれをオーバーレイマルチキャスト(英語版) (Overlay Multicast: OLM) あるいはアプリケーション層マルチキャスト (Application Layer Multicast: ALM) と呼ぶことがある[3]。後者の呼び方はIPマルチキャストがTCP/IPのレイヤーでのパケットの複製によりマルチキャストを行うのに対して、アプリケーション層でデータのコピーをしてマルチキャストを行う、という意味合いから来ている。
P2Pアプリケーションの分類

ピア間で何を行うか、という観点で、大きく以下の4つのタイプのアプリケーションに分けられる。
一対一通信型

放送型

オンデマンド型

分散型データ管理

複数の機能を併せ持ったアプリケーションも存在する。
一対一通信型

IP電話LINE電話Skypeに代表されるような、コンピューター間で一対一のコミュニケーションを行う使い方である。相手のIPアドレスを、電話番号やニックネームなどから見つけ出し(=IPアドレス解決と呼ぶ)、その後、ピアとピアが対等の立場で通信を行う。音声データであれば電話となり、映像データであればテレビ電話となる。インスタントメッセージやオンラインチャットもある。通常、アプリケーションの背後に特定の利用者がいることが想定されており、その人物に対して接続を行うような使い方が多い。この種のアプリケーションのほとんどには、相手がオンラインかどうかを認識する仕掛け(プレゼンス機能)が設けられている。

このタイプのアプリケーションでは、データは通常、リアルタイムでのストリーミングでやりとりされる。

P2P-SIPでは、SIP-URIからIPアドレスを知るためにP2P技術を利用しており、従来あったSIPサーバーを不要にできる。アドレス解決以外の、接続・切断のシグナリング、音声データのストリーミングに関しては、従来のSIPやRTP/RTCPの技術をそのまま利用している。

応用例:IP電話SkypeLINEMSN メッセンジャー、P2P-SIP、P2Pグループウェア
放送型

ノード間接続を、カスケード状に多段階層化して、配信ツリーを形成することで、放送型のサービスが実現できる。ツリーの根元のノードが、放送局となり、上流ノードから下流ノードへ、データをバケツリレーさせることで、全参加ノードに、ほぼ同時に同じデータを配信することが出来る。これにより、リアルタイムのストリーミング中継が可能となる。オーバーレイマルチキャストの配信ツリーの概念図

多くのP2P型放送システムでは、アドレス解決にハイブリッドP2P方式(後述)を採用しており、通常、チャンネル名でインデックスサーバーに問い合わせると、「あのノードの下流につながってストリームをもらいなさい」というようにノードを紹介してくれる。インデックスサーバーの役割を各ノードに分散させる(=ピュアP2P型OLM)ことも可能ではあるが、そのような実装例はまだ発表されていない。

上流ノードが脱退したときに、ストリームが途切れるが、内部にバッファを持つことで、一定時間は再生が途絶えないようにして、その間に、別の上流ノードを探し出して、再接続を行う。再接続の処理には時間がかかるため、通常、予備の上流ノードを用意しておく。再接続先候補のノードを、効率的に準備しておくために、様々な創意工夫が考案されている(詳細は、オーバーレイマルチキャストまたはアプリケーション層マルチキャストを参照)。

応用例:P2P放送(映像+音声、音声のみ); (PeerCast[4][5][6][7])
オンデマンド型

動画コンテンツの配信などでは、コンテンツを欲するノードが、当該コンテンツを持っているノードを探し出して、そこへデータを要求することで、保持ノードがそれに応じてデータを送信する(オンデマンド)、という一方向型の通信が行われる。言い換えると、持っている者から欲する者へ、という通信である。送信元は、使用しているコンピューターが複数ある場合、どれからでも良くて、不特定多数の中からアプリケーションまかせで選ばれる。送信元のIPアドレスは、コンテンツのタイトルなどを手がかりに、インデックスを検索して見つけ出し、コンテンツ保持ノードにデータ送信を要求することで、データ転送が開始される。

オンデマンド型のP2Pアプリケーションでは、配信効率を上げるために、コンテンツのコピー(レプリカ)を作ることが良く行われる。一度取得したコンテンツのコピーを保持して、他のノードに対して提供可能な状態にすることで、他の誰かが再度同じコンテンツをリクエストしたときに、負荷分散の効果が期待できるからである。これは特に、人気のあるコンテンツに対してのアクセス集中の緩和に効果的である。レプリカを作るアプリケーションでは、通常、レプリカをキャッシュフォルダー内に作り、古いレプリカから追い出すような実装になっていることが多い。

オンデマンド型のP2Pアプリケーションでは、データ全体を、一旦リクエストした端末までは持ってきてから利用する「ダウンロード方式」の実装がほとんどである。

応用例:P2Pコンテンツ配信、P2P掲示板、P2Pグループウェア、P2P分散ファイルシステム、無線のアドホックネットワーク、ゲームソフトのアップデート[8]
分散型データ管理

ビットコインRippleなどでは、通貨の取引履歴情報を、各ノードで分散して持つことによって、通常はサーバーで管理する台帳データの不正な改竄を防ぐことができるので、P2Pを利用している。これにより自分のノードの台帳データを改ざんしたとしても、他の多数のノードが正しいデータを保持していることにより、比較した際に改竄を検知することができる。
技術的な分類
インデックス情報の持ち方での分類

「こういうデータを持っているのは誰ですかね?」という問いに答えるためには、データを検索するための属性キーとデータのありかの対応表(インデックス)を持っている必要があるが、これをサーバーに集中して持たせる場合と、各ノードに分散して持たせる場合と、特定の選ばれたノードに分散して持たせる場合、の3種類が存在する。


ハイブリッドP2PハイブリッドP2Pの仕組み(図はBitTorrentのもの)。
欲しい情報となるキーファイルをサーバーに伝え、実際のデータはノード同士でやりとりを行う仕組み

ハイブリッドP2Pにおいては、インデックス情報を、中央のインデックスサーバーで一括して管理する。新しいデータを保持したノードは、自分が持っていることを、インデックスサーバーに申告しておく。データを欲するノードが、「このキーに対応する相手を教えて下さいな」とインデックスサーバーに問い合わせると、対応する相手のIPアドレスを教えてくれる。インデックスが膨大になると、スケーラビリティが無くなる点が、後述のピュアP2Pと比べて劣るが、通常規模のシステムであれば、この方式で事足りるケースが多い。インデックスサーバーがダウンすると、システム全体が停止するため、耐障害性の面では、ピュアP2Pに劣る。

BitTorrentNapsterWinMX、放送型P2P (オーバーレイマルチキャスト(英語版)) の多くは、この方式を採用している。


ピュアP2PピュアP2Pの仕組み。一切の処理をコンピューター同士が対等に通信を行うのが特徴である。

インデックス情報は、各ノードが少しずつ分散して持ち合う。自分の知っているノードに、「データを持っているのは誰ですかね?」というメッセージを投げると、そのノードが知っていれば回答が返り、知らなければ又聞きをしてくれる(メッセージを転送する)仕組みになっている。インデックスが膨大になっても破綻しないため、スケーラビリティが高い。メッセージ転送の方式により、非構造化タイプと構造化タイプの2つに分類できる(後述)。

GnutellaFreenet、OceanStore、WinnyShare は、この方式を採用している。

ピュアP2Pに参加する際には、既に参加しているノードのIP情報を何らかの形で知っている必要がある。このためには、常に活きているノード(コンタクトノード)を用意しておいて、参加時はいつもそこに接続するようにするか、あるいは、参加しているいくつかのノードの情報をサーバーに集めて、ここから知るように構成する。


スーパーノード型P2P

インデックス情報は、特定の選ばれたノード(スーパーノード)が分担して持つ。スーパーノードには、できるだけ安定な端末(ずっと電源が入っていて、通信回線も安定していて、帯域幅も太いようなノード)が選ばれる。スーパーノードは、一般のエンドユーザーの端末から能力に応じて選ばれるが、サービス提供者側が用意した端末であることも多い。

KaZaASkypeは、この方式を採用している。
ピュアP2Pの構造による分類

ピュアP2Pにおいては、インデックス情報も分散されて持たれるため、相手先IPアドレスの発見の仕組みは、検索メッセージを転送することで行われる。転送方式で、2種類に分類ができる。
非構造化オーバーレイ
問い合わせ元のノードは、キーに対応する相手を発見するために、手当たり次第に、自分が知っているノード(かつて通信をしたことがあるノードなど)に対して、「データを持っているのは誰ですかね?」というメッセージを投げつけ、受け取ったノードは、持っていれば返答し、持っていなければ検索メッセージをコピーして、他のノードに転送する方式。メッセージがネズミ算式に増えるので、フラッディング方式(洪水という意味)という別名が付いているが、メッセージが増えすぎないように、転送回数やメッセージの生存時間などで制限をかける必要がある。そのため、OLN上のどこかに相手が存在するにも関わらず、発見できない場合がある。
GnutellaFreenetWinnyShare などで実装されている。
構造化オーバーレイ
「データを持っているのは誰ですかね?」というメッセージを転送する際の、転送先を選ぶ方法をあらかじめ構造的に決めておいて、「キーに対応する相手」が確実に分かるようにした方式である。よく知られている方式として、DHT(Distributed Hash Table)、SkipGraphなどがある。検索メッセージの転送先の範囲が、キーに応じてだんだんと絞られていくように設計されている。概略イメージは、A県の中のB市の中のC町の中の田中さん、というように範囲を絞る形で、メッセージが転送される、と考えると理解がしやすい。DHTの実装例としては、Chord、CAN、Pastry、TapestryKademlia、OpenDHT、Overlay Weaverなどがよく知られている。
脚注[脚注の使い方]
出典^P2PSIP
^P2P@i
^アプリケーション層マルチキャスト
^PeerCastStation
^シェアキャスト
^「BBブロードキャスト
^UG live視聴ページ
^コナミのゲームソフト、METAL GEAR ONLINE 2のパッチ配布にはBitTorrentの技術を用いて行っている

関連項目


次ページ
記事の検索
おまかせリスト
▼オプションを表示
ブックマーク登録
mixiチェック!
Twitterに投稿
オプション/リンク一覧
話題のニュース
列車運行情報
暇つぶしWikipedia

Size:35 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)
担当:undef