現在WWW(WorldWideWeb)の大衆化と、パソコンの値下がりや高性能化により、急激にインタ
ーネット人口が増えています。 接続媒体もコンピュータだけではなく携帯電話、PDA、エアコン、電子レンジなどの家電製品と
数多くのものがあります。さらに多くの人にとってインターネットは生活の一部になり、イン
ターネットに接続しない日は無いというぐらいインターネットは欠かせないものになっています。
さらにデータファイルのマルチメディア化により、ファイル容量は増える一方です。現在、こ
れらユーザーの増加や情報のマルチメディア化により通信量の増加が問題になっています。
現在最も主流のコンピュータシステムの形態はクライアント/サーバー型システムなのですが、ここ
に問題が出てきました。この形態は、情報の要求者(クライアント)が情報の提供者(サーバ
ー)に様々なサービス(Web,FTP,Print,etc)を要求し、サーバーがそれを処理をするコンピュ
ータシステムの形態です。そのためクライアントが急激に増加するにつれてサーバーへのクラ
イアントの集中によるサーバー側の処理量が増加し、サーバーに大きな負担を背負わすことに
なりました。そのためサーバーの処理能力を向上させる為にサーバーマシンの性能を上げざる
をえなくなり、非常に高価なサーバーを導入し、又サーバー管理者側のコストが拡大していっているのです。
このように、クライアント/サーバー型は、サービスの拡大という面で本質的な問題を
抱えています。
このクライアント/サーバー型システムの問題の解決策のひとつとして注目されているのがP2P
(Peer to Peer)型システムです。P2Pとはネットワークに接続されたコンピュータが対等な関係にあ
る状態のことで、各コンピュータをサービスを提供するサーバーとしても、サービスを受ける
クライアントとしても動作させることが出来る形態です。これにより、一台のコンピュータに
クライアントが集中することがなくなり、サーバーに負荷をかけずに情報の発信や取得が可能になります。
従来のクライント/サーバー型システムとは異なり、コンピュータ同士が連携して動作するように
設計されており、さらに特定の条件のもとではファイアーウォール内のコンピュータとも連携
できるように設計されているシステムもあります。これは、従来難しかった。ファイアーウォ
ール内からの情報提供も可能になるという特徴を持ちます。
さらに、コンピュータは、自分だけで情報を生み出すものではなく、人間との関わりで情報を蓄えていくものです。
サーバー上の情報は、大抵は、サーバーが生み出したものではなく、人間がサーバーに蓄えたものです。ネットワーク
上では、人間に近いノードの方が、情報の湧き出し点になるのです。クライアント/サーバー型システムの場合大抵はサーバーよりは人間(クライアント)
の方が多いのです。つまり、クライアント(端末)の方がサーバーよりも情報を持っているはずなのです。P2PではDNSのエントリ
も持たず、かつ、ファイアーウォールの内部で一時的なアドレスを割り当てられているようなノードたちに、DNSに登録
されたスタティックなノード達と同等の情報発信能力を与えようとするものなのです。そして、今まで表に出てこなかっ
た情報にも出会えることが出来るようになるのです。
今回の論文では、このように優れた可能性を持ったP2P技術を導入したソフトウェアについて調べたいと思います。
1つめは2年ほど前にファイル共有ソフトとして注目を集めたNapsterについて、2つめはNapsterとはまた違ったファイル
共有ソフト のGnutellaについて、3つめはGnutella技術の改良版であるGnutellaCloneのBearShareについて調べました。
Napsterは、米マサチューセッツ州ボストンにあるNortheastern Universityに通う学生だったシャウン・ファニング(Shawn
Fanning)氏が1999年1月に開発したP2Pタイプのファイル共有ソフトウェアで、個人が持つ音楽ファイルを複数メンバで共有し、ネットワーク上に存在するMP3データを検索可能にすることを目的としたものです。
ファイル共有ソフトとはインターネット上で個人個人間でファイルのやり取りをするソフトです。使用法は、使用者はまず自分で人にあげてもいいファイル(共有ファイル)を選んで共有ソフトに登録しておきます。もし何か欲しいファイルがあった場合共有ソフトで検索してそのファイルを持っている人を見付けます。その後は二人の間を直接接続してダウンロード(注1)するというふうに使います。
補足として、共有ファイルを選択せずに相手からもらうだけのユーザーがたまにいます。このようなユーザはDOM(Download
Only Member)と呼ばれ非常に嫌われます。
ここでNapsterのおおまかな動作の流れを説明します。Napster にはファイル管理やユーザーの入退出管理用の中央サーバーがあります。ユーザーはNapsterを使用する時は中央サーバーに接続します(図2-1)。
図2-1.Napsterにおける検索、ファイル交換のイメージ
1.Napster クライアントは Napster使用時に中央 サーバーに接続します
2.サーバー接続時にクライアントの所有ファイルリストの登録をします。接続後自由にファイルの検索が出来ます。処理はサーバーが行い結果をクライアントに返します
3.検索の結果、目的のファイルが見つかった場合、Napster クライアントは目的のファイルを持つ別の
Napster クライアントに直接接続し、ファイルを取得します
このようにNapsterを利用すれば、自分が持っている音楽ファイルをネット上の第三者に公開することが可能になり、あるいは逆に、ネット上の第三者が公開している音楽ファイルから目的の曲を検索し、それを手に入れることができるようになるのです。
(注1) ダウンロード、アップロードはクライアント/サーバー型システムにおいてクライアントとサーバーではっきりとした上下関係がある時のクライアントからみてのファイルの送信受信を表しています。P2Pでは全てのコンピュータが対等であるのでダウンロード、アップロードを使うのはおかしい(クライアントとサーバーの役割をしますが、その場合クライアント時はダウンロードになりサーバー時もダウンロードになります。)のですがNapsterや後で紹介するソフトウェアでファイル受信をダウンロード。ファイル送信をアップロードとしているので本論分でも同じ意味でダウンロード、アップロードを使っていきます。
1.ファイルのリスト管理やユーザーの入退出管理用の中央サーバーがあります。
Napsterを使用する時にはかならずNapsterサーバーに接続しなければなりません。
2.中央サーバーがファイルリストの管理をしているので、検索結果の出力がはやいです。
3.原則として、mp3, wma 形式のファイルしか共有できません。
4.中央サーバーが活動不能状態におちいるとログイン、ファイル検索ができなくなりNapsterは使用不能になります。
5.チャット機能があります。これにより、利用者同志で容易にコミュニケーションが取れます。
検索の結果、目的とするファイルが見つかった時のファイル提供ホストからどのように自分のところにダウンロードするかを説明します。以下の図は、一般的なダウンロード時の通信の様子をあらわしたものです。
@ユーザーがファイルのダウンロードを指示すると、ダウンロードを要求するコマンドがサーバに送られます。引数はファイルを提供している側のユーザー名とファイル名です。
Aサーバーはファイルを提供する側のユーザーに対して、ファイルのダウンロード要求が届いていることを通知します。
Bファイルをダウンロードする側に対し、ファイルを提供しているユーザー側のIPアドレスとリッスン(待ち受け)しているポート番号を返します(このポート番号は、最初にサーバにログインするときに、Napsterクライアント側からサーバに送信したものです)。
C受信側は受け取ったIPアドレスとポート番号に対して、直接TCP接続を試みます。実際のファイルのやりとりは、Napsterクライアント間で直接行います。
Dファイルの転送を要求します。
E提供している側からダウンロードしている側にファイルが転送されて完了となります。
このように、Napsterのサーバには検索用のファイル リストがあるだけで、実際の音楽ファイルそのものはNapsterのサーバに蓄えられているわけではなく、さらにNapsterのサーバを経由することもなく、ユーザー間で直接転送されています。
1999年に登場し瞬く間にユーザー数を増やし、最盛期では(2000年1月)には30億の音楽ファイルを一ヶ月で交換するほどまでになったNapsterですが、大きな障害がありました。Napsterで主にやりとりされていたMP3ファイルは著作権者が複製を禁止した音楽ファイルでした。これによりRIAA(全米レコード協会)は1999年の12月にカリフォルニア州連邦地裁にNapsterを著作権侵害により提訴しました。無料でMP3ファイルの交換を可能にするNapsterのサービスが、著作権違反につながる機器などの利用を禁止した「デジタルミレニアム著作権法」違反であるとRIAAは主張したのです。Napster側の主張はNapsterはあくまでファイル交換の仲介をしているだけで直接ファイルをサーバーに蓄えてるわけでもなく、経由することも無いので著作権には触れないとのことでした。しかし結果は、同社サイトへの複製が許可されていない楽曲の掲載を一切禁ずるという、業務差止めの仮処分命令が下されました。これによりNapsterがレコード会社から配信停止を求める通知を受けた音楽については、送信、頒布を禁止し、積極的に監視しなければならないと判断されることとなり、それまでやり取りされていた多くの音楽ファイルのやり取りが出来なくなりました。これによりユーザー数は激減しました。
現在Napsterの代用品としてNapsterクローンと呼ばれるソフトが登場しています。Napster互換サーバーを利用することにより、Napsterと同様の機能を提供することが可能です。さらにあらゆるファイル形式に対応していたり、ポート番号の変更が可能だったりと色々な機能が追加されています。Napster互換サーバーは個人でも立ち上げることが可能です。これによりサーバー数は日々変化し、全てのサーバーの活動を阻止することは非常に困難になっています。現在NapsterCloneで有名なのはWinMXです。
ファイル共有ソフトの問題点
不特定多数のユーザーと通信やファイルのやりとりができるファイル共有ソフトですが現時点で大きな問題があります。
・著作権侵害の温床となっている
データ化できるものは何でも共有でき、ユーザー1人1人が自由にファイルの送受信ができ、ファイルを管理する特定の人がいないという特徴が著作権侵害の大きな要因になっています。さらに検索がファイル名のみで行っているので著作権者が許可なく複製を禁じている有名な歌手の音楽ファイルや有名なソフトウェアが検索されやすいという理由も考えられます。
・ファイルとファイル名の整合性
ファイル検索をファイル名のみで行っているので、ファイル名が実際のファイル名と異なっていてもダウンロードしないと本物かどうかわりません。さらに、ファイルを管理するのはユーザー自身なので、悪意のあるユーザーがウイルスに感染したファイルを共有しばらまいても他ユーザーには分かりにくいという問題があります。
GnutellaとはNullsoft の Justin Frankel と Tom Pepper により2000年3月に開発されたP2Pタイプのファイル共有ソフトウェアの名前です。
Gnutella はクライアント/サーバーモデルではなく、分散環境で動作します。 各 Gnutella の動作しているホストは、近隣の他の Gnutella ホストと互いに 通信を取り合っています。この通信網を Gnutella ネットと呼びます。
1.Gnutellaには中央サーバ-が有りません。すべてのコンピューターが対等です。つまり、全てのGnutellaユーザーのコンピュータが壊れない限りGnutellaCloneは壊れません。ネットワークとしては非常に堅牢です。サーバーを必要としているネットワークではサーバーを破壊すればネットワークは動かなくなってしまいます。
2.Gnutella はファイルのDownloadやUploadをしていなくても常に他のGnutellaホストからの検索要求を処理するのでネットワーク帯域を多く消費します。それなので快適に使用するためには比較的高速な回線を必要とします。
3. Napsterが原則として mp3, wma 形式のファイルしか共有できないのに対して、Gnutella
ではあらゆるファイル形式を共有対象とします。(mpg, avi, jpg, gif, txt, zip...etc)
4 .開くポート(注1)をユーザが自由に変更することができます。
何かしらの理由で初期設定のポートが閉じられてしまっても、接続相手とポート番号を変更しておけばGnutellaを使用することができます。
5.検索時間はサーバーを使っての検索と違ってネットワークを介して多数のホストで分担するので、通信時間分だけサーバー使用方式より時間がかかります。
6.インスタントメッセージやチャット機能があります。これにより、利用者同志で気軽にコミュニケーションが取れます。
注1:ポートとはネットワークに接続するときに使用できる番号で、一般ユーザーは1024〜65535までのどれかを選ぶことができます。この番号はソフトウェアとソフトウェアを接続するインターフェースの意味になります。ポートにはソフトウェア(サービス)により使用する番号が決まっていて、WWW(WorldWideWeb)の場合80、FTP(FileTransferProtocol)の場合21となります。Gnutellaのポートの初期値は6346です。
初期Gnutellaでは、自動的にGnutellaネットを探して接続してくれませんでした。ですので、初めて使う人は既にGnutellaネットに接続している人のIPアドレスを教えてもらい、そこに接続することでGnutellaネットに接続しなければなりませんでした。つまり初心者はGnutellaネットに接続している知り合いがいないとGnutellaを使うことが出来ませんでした。
GnutellaCloneではこの問題は解決されて、Gnutellaネット内のホストを教えてくれるサーバーが設置されました。GnutellaCloneを使用する時は、まずそのサーバーに接続することによってGnutellaネット内のホストを教えてもらいGnutellaネットに接続することができるようになりました。このようにGnutellaにもサーバーは一応あります。しかし、このサーバーが使用不能になってもGnutellaはGnutellaネットに接続していれば検索もファイルのやりとりも可能であり、Gnutellaネットへの接続も他ユーザーのIPアドレスを知っていれば可能です。Napsterの場合、サーバーが活動不能になるとログインや検索、ファイルのやり取りはできなくなり使用不能になります。
さらに、GnutellaCloneではGnutellaClone起動中に検索要求や接続要求の処理をすると共にパケット中の発信者のIPアドレスを記録し現在接続可能なホストの管理をする機能もあります。これにより直接接続ホスト数が少なくなっても記録してあるホストに接続を試み、常に一定の接続ホスト数を維持することが可能です。
他のホストを見つける場合や、ファイル名検索を行なう場合、Gnutellaでは、自分が直接接続しているホスト(3台から6台程度の)に対して検索コマンドを送ります。するとそのコマンドを受け取ったホストは、自分の持っているファイル一覧から検索して結果を返すとともに、さらにそのコマンドを他のホストへも中継します。そして、それらの結果も同じように中継されながら返ってくるのです。これらはバケツリレー的にコマンドやその結果を送り、中継しているのです。
ただし単純にこの方法をインプリメントしてしまうと、どこまでもコマンドが送られて際限がなくなります。そこで中継を止めるための歯止めとして、各コマンドが通過できる最大ホスト数が決められています。今回私が調べたGnutellaCloneのBearShareの場合、パケットのTTL(Time
To Live:存続時間)は初期設定で5でした。これは自分が発行した検索用パケットは、高々5個のホスト
コンピュータを超えて(5レベルまで)、Gnutellaネット内の他のコンピュータに到達するということです。
各ホストから接続するホスト数も(初期値では)多くても6台に制限されているので、結局、1つのホストからは最大9330台(=6+36+216+1296+7776台)のホストと通信できることになります。もっとも実際にはホストの大半は重複していると思われるので、本当にユニークなホストの台数はもっと少ないはずです。そこで、各コマンドにはユニークなID(GUID、Globally
Unique IDentifier)を付けて、一度受けたコマンドは(GUIDが同じコマンドならば)、受け付けない(無視する)ようにしています。
Gnutellaネット全体で見ると、ユーザーからのコマンドの送信とそれにともなう何千ものコマンドの中継は頻繁に発生します。そのため各ホストでは、自分のコマンドの送受信だけでなく、他のユーザーのコマンドの中継も行なうことになり、ネットワークのトラフィックはNapsterなどよりもかなり多くなっています。
GnutellaでのファイルのダウンロードやアップロードではTCP接続を行います。ですので相手ホスト(もしくは自分)がファイアーウォール内にいるとTCP接続がファイアーウォールに阻まれ相手ホストと接続(自ホストに接続)することができずダウンロード(アップロード)ができません。(通常、ファイアーウォールの中から外へはTCP接続することができますが、ファイアーウォールの外から中へは接続することができません。)しかし、Gnutellaではファイアーウォール内のホストからのダウンロードを可能にする仕組みがあります。
今、 Gnutella ネットにおいて、ホスト A 、ホスト B、ホスト C がこの順番で接続しており、ホスト
C がファイアーウォールの中にあるとします(図3-3)。
BearShareは使いやすく設定も容易で、動作も軽快なので多くのユーザに使われているGnutellaCloneです。ただver.2.3.0から少々使いづらくなってしまいました。
・ 全てのファイル形式をサポートしています
・ インストールや設定、FAQなどの場合場合に対する説明書が充実。ただし英語です
・ 接続設定ウィザードがあります
・ 状態インディケータが光り、現在の状態がわかります
・ LimeWireと互換性がある。つまりBearshareはLimeWireユーザーともファイルの交換が出来ます
・ それぞれのページからファイルを再生する/開く/閲覧することができます
・自分の共有ファイルの変化に対する更新を自動的に行ってくれます
・ Gnutellaプロトコルを厳密に遵守しています
・インストール時一緒にスパイウェア(注1)もインストールします。インストールしないことも可能です
注1:スパイウェアとは、利用者に無断でパソコンから特定の場所に個人情報を送信するプログラムです。個人情報とは「OSの名称」「ソフトウェアの利用履歴(ダウンロード履歴)」などで、個人を特定するようなものではないようです。この情報は広告表示などのマーケティング用に使われるとのことですが、無断で行われていてよく解らないものなのでできるだけインストールしないようにしましょう。
・検索結果を検索ワードごとに表示できるようになりました
・最低ファイル容量を指定した検索ができるようになりました
・ 検索キーワードが検索結果表示画面で青色にハイライトされなくなりました
・MAX TTLの設定、MAX HOP数の設定が出来なくなりました。何故無くなったのかは不明です(ユーザーによる不必要なコマンドの到達ホスト数拡大を防ぐためかも知れません)。ちなみに前バージョンでの二つの値はMAX
TTLが5、MAX HOP数が7でした(MAX HOP数とは自分のところに来た他ホストのコマンドのHOP数を設定した数値以下しか通させない機能です。例えばMAX HOP数を7に設定していて、誰かが多くのホストを検索したいと思ってHOP数を10や20に設定しているのを自分のところで7に書き換えます。Gnutellaネット内での不要なコマンドの処理を無くす効果が有ります。ちなみに相手ホストを1回通過することを1HOP、2回通過することを2HOPと言います。)。
・ファイル形式を限定しての検索が出来るようになりました
・最低接続速度や最低ファイル容量を指定した検索ができなくなりました
・相手の サーバータイプ、ユーザエージェント、バージョンを表示しなくなりました
・ 検索結果やダウンロード、アップロード画面で相手ホスト名やIPアドレス、Originを表示しなくなりました
・ダウンロード、アップロード画面で全体での使用帯域幅を表示し、個別の使用帯域幅を表示しなくなりました
・その他いろいろ
ファイル形式ごとの検索ができるようになったのはいいけれど、相手ホストが表示されないのや相手ホストについて何も知れないのは不便だしつまらないです。個人的にOrigin部分が無くなったのが非常に残念です。ダウンロードやアップロードしていて色々な国の国旗が表示されるのが好きだったので。
ver2.3.0では使いづらくなっていたのですが、ver2.4.0では検索結果が分けて表示されるようになったので少し使いやすくなったと思います。
ver2.2.7でのOrigin表示画面
ホスト接続画面
LimeWireは、LimeWire LLCが開発するJavaで書かれたGnutellaCloneです。 起動してからのGnutellaネットワークへの接続も早く快適です。
LimeWireの特徴
・無制限同時検索が可能です
・カスタマイズできるスパムフィルターを実装しています
・T3回線からモデム回線まで、異なった回線スピードによる接続を自動的に調整します
・悪質なパケットをブロードキャストしたり、通過させたりしません
・参加ユーザの興味関心、コンピュータのパワー/帯域によって類似性のあるユーザ同士のオープンなコミュニティーに入れることが可能です
・アンチただ乗りユーザ機能 -- ファイルを一方的にダウンロードするようなユーザー(DOM)を排除することが出来ます。
・ライブラリ機能 -- 共有ファイルやダウンロードファイルを整理できます
・ホストの閲覧 -- そのホストが所有している全ての共有ファイルを閲覧することができます
01.ここに検索したい単語を入力します
02.検索ファイルの形式を選びます。初期設定ではAnyTypeになっています
03.検索中はライムが回転します
04.検索結果タブ。ここに検索結果とヒット数が表示されます
05.ダウンロードしやすさの指標です。星が多いほど良いです
06.同じもしくはほとんど同じファイルがヒットした場合グループ化されます。そのヒットの数を表示します
07.トグルアイコンをクリックすることによってグループ化された全ファイルを表示します
08.各分類のボタンを押すことによって結果を並び替えします。例えばSizeボタンを押すとファイルサイズの大きい順や小さい順になります
09.検索結果のIPアドレスが赤い場合、それはローカルアドレスであることを示し、相手はファイアーウォール内にいることを表しています。自分もファイアーウォール内にいる場合ファイルの交換は出来ません。例外として両者が同じファイアーウォール内にいる場合可能です
10.あるホストを選んでこのボタンを押すとそのホストが持っているファイルが全部表示されます
11.検索結果でのグループ化を行うかどうかを選択します
12.複数選択されたファイルを同時にダウンロードするかどうか選択できます
13.複数選択されたファイルからどれかを選んでダウンロードします。グループを選んだ場合、相手の回線速度の速い回線を選んでダウンロードします
14.ダウンロードするファイルの状況を示すウィンドウです
15.ファイルのサイズを表示します
16.ダウンロード要求のあったファイルの現在の状態を表示します
17.ダウンロードの進行状況を表示します
18.現在のダウンロードスピードを表示します
19.’KillDownload’ボタン。ダウンロードを途中で止めます
’ForceResume’ボタン。途中で接続が切れたのを接続が切れた時点から続けます
’ClearInactive’ボタン。接続が切れたファイルをウィンドウから消します
20.ダウンロード中のファイルのプレビュウをします
・Monitor画面
Xoloxは使いやすさ、信頼性、スピードを重視したGnutellaCloneです。
極限までシンプルなインターフェースになっており、初めて使う人でもすぐに活用できます。
Search画面
ダウンロード速度は相手ホストの回線速度に依存します
(速くなったり、遅くなったりしますが、結局はどんなに遅くてもダウンロードできます。)
さらに、オートリジューム機能があるので突然接続が切れても前回のところからダウンロードすることが可能です。
相手とつながらなくても、つながるまで接続を試みます。
欲しいファイルを複数のホストが持っている場合、Xoloxは複数のホストからそのファイルを部分的に、かつ同時にダウンロードが可能です。
これによってダウンロード速度は格段に速くなります。非常に便利です。
・すべてのファイルタイプに対応
・常時サーチ機能
GnutellaNetのネットワーク構成は、ホストが接続したり、切断したりで非常に速く変化します。そこでXoloxは、常時ホストの出入りをサーチして新しいホストが接続した場合そのホストの所持ファイルを調べ、今自分がダウンロードしているファイルが見つかった場合自動でダウンロードリストに追加します。それによって、ダウンロード速度が速くなります。
・エラー訂正機能
Xoloxはダウンロード時常に4[Kb]多くダウンロードし、今ダウンロードした部分と既にダウンロードした部分とで重複した部分をつくりだし、二つの部分が同じか見比べながらダウンロードします。これによりダウンロードを失敗することは減少するはずです。
・部分ダウンロード機能
ネットワーク内である一つの新しいファイルが共有できるようになった場合、それを持つホストには多くのリクエストがくるはずです。こうなるとそのホストは大変な負荷が掛かり大変です。
こういった時、Xoloxで部分ダウンロードが可能です。これは、そのファイルをダウンロード中のホストから途中のファイルを別のホストがダウンロードできる機能です。これにより完全なファイルを持つホストへの負荷の一極集中は防げます。(この機能はXoloxユーザー間のみに有効です。)
・アダルトコンテンツフィルター機能
GnutellaNetにはアダルトコンテンツもあります。これを嫌う人も多くいるはずです。そのためにアダルトコンテンツを検索結果から除外する機能です。この機能にパスワードをかけることも可能です。
・Socksをサポート
・ソフトにスパイウェアや広告は含まれていません
・検索時の検索条件にファイルタイプの選択しかない
・起動中にGnutellaNetとの接続を手動で切断できない。(手動で切断するには、終了させるしかない。)
残念なことにXoloxは開発者の意向により2001年の12月1日もって開発の停止、使用停止になりました。
現在は、公式サイトからXoloxをダウンロードしたり、最終公式配布のver 1.12を完全にではないですが使用することはできません。
Gnutella はファイルのDownloadやUploadをしていなくても常に他のGnutellaホストからの検索要求を処理するので常に帯域を使用しています。そこで、今回はBearShareを使って時間変化に対する使用帯域の推移を測定しました。さらに、BearShareには自分の回線品質をMODEM、ISDN、DSL/CABLE、T1、T3等と選べるので、もっとも低速なMODEM、自回線のDSL/CABLE、もっとも高速なT3の三っつの表示ごとでの時間変化に対する使用帯域やホスト数の推移を測定しました。これにより、帯域幅障害の問題が解決されているかがわかると思います。
・CPU:PentiumV 450[MHz]
・メモリ:128[MB]
・OS:Windows98
・BearShare ver2.4.0
・使用回線:フレッツADSL 最大速度下り1.5[Mbps]、上り512[Kbps]
推定最大スループット 1.27Mbps(159KB/s)
転送速度測定サイト:ブロードバンドスピードテスト http://speed.on.arena.ne.jp/
測定時刻 2002/01/15 05:03:38
・共有ファイル:コピーレフト(再配布可)のMP3ファイル125ファイル575[MB]
・測定ソフトウェア:SnifferPro ver4.50.04
・BearShareの設定は初期設定で測定しました。
こちらから直接接続するホスト数は最低で3[台]、最高で6[台]
他ホストからの接続要求を容認
同時UPLOAD可能最大ファイル数4ファイル、一人当たりの同時UPLOAD可能ファイル数1ファイル
・測定は使用帯域の測定を15秒間隔、ホスト数の測定を5分間隔で行い、BearShareのStatistics画面の値を参照しました。
測定結果
表1.自回線品質表示の違いによる測定結果MODEM | DSL | T3 | DSL(共有ファイル無し) | |
UPLOAD数 [回] | 2 | 3 | 3 | 0 |
DOWNLOAD数 [回] | 0 | 1 | 0 | 0 |
平均使用帯域 [KB/s] | 10.53 | 16.16 | 15.61 | 7.231 |
平均到達可能ホスト数 [台] | 253.4 | 2672 | 1828 | 1163 |
まず見てわかるのがUPLOAD数がMODEM、DSL、T3で違いがほとんどないのですが、平均使用帯域と平均到達可能ホスト数がMODEM表示時の場合、DSLやT3に比べて少ないということです。平均到達可能ホスト数に関しては特に少ないです。やはりこれは、帯域幅障害を起こさないためにモデム表示のホストはGnutellanネットのホスト数が少ない疎の部分に配置させられているのだと思います。平均到達可能ホスト数とは自分からの検索や接続等のコマンドが届くホストの数です。これが自分のGnutellaネットになります。
逆に、DSL、T3表示だと回線品質は高速とみなされGnutellaNetの密な部分に配置されているようです。これにより帯域幅障害への改良が施されているのがわかります。
さらにモデムに関してですが、平均使用帯域が10.53[kB/s]でていますが、モデムでの可能と思われる伝送速度は現在56Kモデムで最高で5[KB/s]ぐらいなので常時10.53[KB/s]やりとりするのは無理です。ですのでモデム使用者は直接接続ホスト数を1つか2つに減らすべきだということがわかります。
さらに使用帯域についてですが、DSL表示の共有無しでの平均使用帯域が7.231[KB/s]になっています。平均到達可能ホスト数は1828[台]とモデムの7倍以上のホスト接続数であるのに使用帯域がモデムよりも少ないことがわかります。モデム、DSL、T3の場合UPLOADやDOWNLOADでの使用帯域も含まれているので、検索処理や接続処理のみの値はもう少し少ないはずです。これらから、BearShareの初期設定では検索処理や接続処理などでの常時使用帯域は回線表示にかかわらず10[KB/s]付近の帯域を常時要すると思われます。
さらに図5-2、4、6の到達可能ホスト数のグラフをみるとホスト数が時間と共に上昇しているのがわかります。これはGnutellaNetの大きさが未だ最大ではないことを表していると思います。もし最大ならある値で一定になるはずだからです。では、GnutellaNetの最大値がいくつになるかというと、BearShareの初期値ではホストとの直接接続数は最低3[台]、最高6[台]です。さらにコマンドのTTLはver2.4.0では設定項目がなくなっているのでいくつか分かりませんが、ver2.3.0までの初期値では5でしたのでTTL5とすると、Gnutellaユーザーが全て初期値のまま使用しているとして考えるとGnutellaNetの最大値は9330台(=6+36+216+1296+7776台)になります。この値と測定値の平均値を比べてみると、測定値は最大値のMODEM
2.72[%]、DSL 28.6[%]、T3 19.6[%]しかでてないことが分かります。最大値はあくまで理論値であり実際にこの値がでるこはないと思いますがそれでも少し低すぎに思えます。モデムに関しては少なすぎで、検索結果もDSL、T3よりも著しく少ない結果しか出ないように思われます。
帯域幅障害の防止策でモデムはGnutellaネットのホスト数が疎の部分に配置されることがモデムを無視していることになっているのではないか、そうなるとGnutellaネットにモデムで接続する意味も失われるのではないか、という疑問を感じます。そこで次では、表示の違いによる検索結果の数を測定しようと思います。
MODEM | DSL | T3 | |
UPLOAD数 [回] | 2 | 2 | 3 |
DOWNLOAD数 [回] | 0 | 0 | 0 |
平均使用帯域 [KB/s] | 9.716 | 9.869 | 15.11 |
平均到達可能ホスト数 [台] | 1641 | 4279 | 1828 |
平均検索ヒットファイル数 [個] | 1431 | 1222 | 1429 |
本論文ではP2P技術やP2P技術をつかったソフトウェアについて調べてきました。NapsterやGnutellaにおける検索の仕方やファイルのダウンロードの流れ、そして特徴、利点欠点について。BearShareについても、特徴、利点欠点について調べました。そしてBearShare使用時の使用帯域幅の測定、検索ヒットファイル数の測定を行いました。
Napsterについて簡単にまとめると、Napsterはファイルのリスト管理やユーザーの入出管理用の中央サーバーがあり中央サーバーが使用不能になるとユーザーもNapsterを使用不能になります。
ユーザー、ファイルの管理や検索を中央サーバーが行っているので、ユーザー側での処理することはほとんどありません。ですので回線の品質によらず検索結果までは皆同じになります。
Gnutella、GnutellaCloneについて簡単にまとめると、Gnutellaには中央サーバーは無く、Gnutellaネット接続用のサーバーがあります。Gnutellaでは、このサーバーが使用不能になっても、ユーザーがGnutellaネットに接続していれば検索することもファイルを交換することも何の問題も無く可能です。Gnutellaネットの接続もGnutellaネットに接続しているホストのIPアドレスを1つ知っていれば可能です。
ホストの接続や検索をそれぞれのホスト1つづつが行うので、常時帯域を使用します。モデムなどの伝送速度の遅い回線を利用している人は常時使用帯域を少なくするために直接接続ホスト数を1つか2つにしなくてはならないので検索結果がDSL、T3などの高速回線に比べて少なくなります。
BearShareでの測定について簡単にまとめると、BearShareでは帯域幅障害を防ぐためにモデムなどの低速回線をGnutellaネットの疎の部分に配置します。疎の部分に配置されても、検索結果は中央部と大して変わりません。
直接接続ホスト数が同じであれば到達可能ホスト数に違いがあっても常時使用帯域はほとんど同じ値になります。
到達可能ホスト数を増やしたければ検索を行うことが有効です。検索は接続ホスト全部に行うので、他のホストに新たに接続されたホストもみつけだし接続します。
と以上の結果になりました。NapsterとGnutellaのどちらも利点、欠点があり使用するときは自分の環境にあったものを使うのがいいです。どちらもまだまだ改良の余地があり、特にGnutellaは独特な技術なので更なる改良を期待します。
しかし、どちらも本来の固定IPアドレスも無いような端末を見つけ出し、接続し、埋もれていた資源を有効活用するという目的は現時点で実現できていると思います。ただ、著作権侵害の温床になっているという大きな問題も抱えています。
今回測定で使用したコピーレフトのMP3ファイルは以下のサイトからのを使用しました。ありがとうございました。
1.Dan Friedman
http://www.boywithmachine.org/
2.steveharvey[double-h]
http://ishmail.prmsystems.com/hh.html
[1] 竹下隆史、村山公保、荒井透、苅田幸雄「マスタリングTCP/IP入門編」オーム社平成6年6月24日発行
[2] 井口圭一「ネットワーク管理者のためのNapster入門」
http://www.atmarkit.co.jp/fwin2k/experiments/napster_for_admin/napster_for_admin_1.html
[3] KIKI「Napsterの世界」
http://www.k-cable.ne.jp/ka/cable/napster.html
[4] 三浦佑樹「Napster問題について」
http://www.econ.hokudai.ac.jp/~takais/yuki.htm
[5] こば「Gnutella」
http://www.geocities.co.jp/SiliconValley-Bay/7325/
[6] 井口圭一「ネットワーク管理者のためのGnutella入門」
http://www.atmarkit.co.jp/fwin2k/experiments/gnutella_for_admin/gnutella_for_admin_1.html
[7] manuka「Gnutella とファイヤーウォール」
http://www.jnutella.org/docs/gnutella/Firewalls.html
[8] BearShare公式サイト
http://www.bearshare.com/index.htm
[9] Jnutella.org
http://www.jnutella.org/
[10] dex「スパイウェアについて」
http://www.sumomo.sakura.ne.jp/~fly/dlmaster/other/spyware.html
[11] OPENP2P.com
http://openp2p.com/
[12] LimeWire公式サイト
http://www.limewire.com/
[13] Xolox公式サイト
http://www.xolox.nl/