[P2P]分散ハッシュとP2Pマルチキャスト
先日、オーバレイネットワークの統合分散環境という資料を紹介したが、この資料内で分散ハッシュを応用して簡単にP2Pマルチキャストができる方法が書いてあったので、噛み砕いて説明することにする。
さて、今ノードAがB、C,Dに対してP2Pマルチキャストをすると仮定する。このマルチキャストにIDを設定することにしよう。マルチキャストに振るユニークなIDをmulticast_IDとする。B,C,DはNode_ID=hash(multicast_ID)(これをノードPとしよう)にmulticast_IDと次ノードIPのペアを格納する。つまり、ノードPに格納するデータは{(multicast_ID,IPadress_A),(multicast_ID,IPadress_B),(multicast_ID,IPadress_C)}となる。
AがB,C,Dにマルチキャストする場合、A⇒Pにデータを投げる。Pはデータを複製してB,C、Dにデータをマルチキャストする。(もちろん、PからB,C,DのIPAdressを入手してAが直接B,C,Dにマルチキャストする事も可能)マルチキャスト先ノードの追加、離脱が簡単にできることがわかるだろう。
この方法が面白いところは、マルチキャストをツリー階層にすることが可能な事である。つまり、今はmulticast_IDを使ってA⇒P⇒B,C,Dとしたが、新たにmulticast_ID2(E,F,GへのマルチキャストのID)というものを設け、これをPに(multicast_ID,multicast_ID2)と登録すれば、Node_ID=hash(multicast_ID2)のノードをQとしてA⇒P⇒B,C,D,Qとなり、さらにQ⇒E,F,Gとすることが可能である。この考えをうまく使えば自律的にP2Pマルチキャストを制御すること(例えばノードの離脱に対して自律的にすみやかにマルチキャストのツリー構造復元する)も可能かもしれない。
分散ハッシュによるP2Pマルチキャストはノードの頻繁な離脱、参加にも耐え、また多くのノードが参加できる点で魅力的なモデルと思える。まだまだ研究する余地はあるだろう。
「P2P」カテゴリの記事
- [P2P]Websocketでブラウザ間P2P通信は実現できるか?(2011.10.30)
- TwitterをP2Pで実現する方法をもう少し考えてみる(2010.05.03)
- オフィスツアー(ビットメディア)を振り返る(2009.10.25)
- [開催日変更]オフィスツアー(株式会社ビットメディア)参加者募集のご案内(2009.08.14)
- [NAT]NAT越え入門1-NATとは何か?(2009.04.11)

Comments