[P2P]ネットワーク負荷を意識したファイル共有
いろいろなブログで書かれているが、P2PにおいてISPのリソースをかなり消費している。そこで、自分のノードとネットワーク的に近いノードでファイル共有等が行われる事がネットワーク負荷の観点から望ましい。
以前、自分のブログでもそのようなネットワーク構成を意識したCDNを提案したが、今回は分散ハッシュを使ってもっとスマートにネットワーク情報を考慮したファイル共有を提案したい。
今、分散ハッシュを120bitとしよう。これを上位100bitと下位20bitにわける。上位100bitは通常の分散ハッシュのやり方通り、コンテンツの名前titleにおいてhash(title)を入れておく。
さて、下位20bitにはプロバイダ情報を入れておく。具体的にはネットワーク的に近ければ下位20bitのハッシュ値は近い事にする。例えば、同じISPで同じエリアであればハッシュ値は同じ、同じISPだがエリアが違う場合、ハッシュ値はお互い近く、国内ISPと国外ISPの接続であればハッシュ値は大きく違うようにハッシュ値の値を設計しておく。このハッシュ値の設計については、確かどこかの雑誌(INTERNET MAGAZINE?)に複数ISPのネットワーク関係が載っているので、それを使えばできるであろう。
このようにすれば、同じコンテンツを持っていても、検索結果はネットワーク的に近いノードとの通信へ誘導されることになる。ただし、この方法ではノードのISPによって検索しているコンテンツがあったりなかったりするので、それを考慮する必要がある。(最悪の場合、他のISPにはコンテンツがあっても検索できない)それを回避する方法を考えてみたが、例えばChordにおいてはハッシュ空間において右回りに近い順について複数ノードのIP情報があるので、同じISPにコンテンツがなくても検索要求を隣接ノードに投げる事で他のISPおける同じコンテンツの情報を入手する事が可能である。(それもネットワーク的に近い順に!)これでも最悪の場合はコンテンツ情報が入手できないことがあるが、そもそも120bitのハッシュ空間において、ノードの数は2^120よりずっと小さい事ので、そのような事態に陥る確率はかなり小さいだろう。
※あるコンテンツ名titleを要求するためには上位100bitをhash(title)に必ず下位20bitを自分のISPのハッシュ値を付けることが必要。
あるいはもっと単純に{hash(title),hash_ISP,Node_IP_Adress}をNode_ID=hash(title)に格納し、後はhash_ISPから一番ネットワークに近いノードを探索するということも考えられる。
いずれにせよ、ユーザの目でISP情報を追わなくても自動的にネットワークに近いところとファイル共有が可能となる。
今回のアイデアは不特定多数の通信よりも、むしろ全国的に事業を展開している会社内でのファイル共有等に使われるかもしれない。例えば、同事業所にあるファイルを優先的に取得することにより事業所間のネットワーク負荷を抑える事が可能である。
紹介したアイデアはまだ素案レベルを脱してははないが、今後ネットワークを意識した分散ハッシュの研究は盛んになる事だろう。
| 固定リンク
「P2P」カテゴリの記事
- WebRTCを実現するためにSTUNだけでなくTURNも必要な理由(2015.01.08)
- [P2P]P2Pストリーミングのサーベイ文書について(2014.11.09)
- Winnyの開発者、金子 勇氏の急逝を悼んで(2013.07.07)
- 「分散ハッシュシステムでのNAT超えの考察」に対する質問について(2012.12.16)
- [P2P]Websocketでブラウザ間P2P通信は実現できるか?(その2)(2011.11.20)
この記事へのコメントは終了しました。
コメント