(57)【要約】【課題】リソースが小さくてもアドレス情報の検索処理スピードに影響を与えることなくＰ２Ｐネットワークのアプリケーションを利用可能とする。【解決手段】リソースの小さいネットワーク端末が、Ｐ２Ｐネットワーク内の他のノードに対して自己のアドレス情報をルーティング情報として通知しないように制御を行う制御手段を備える。【選択図】図６
2009157575.tif 000002
【特許請求の範囲】
【請求項１】
ピアツーピア・ネットワーク内の他のノードからルーティング情報を取得して自己のルーティングテーブルを生成するルーティングテーブル生成手段と、
前記生成したルーティングテーブルに記述されているノードを介して、目的データを所有しているデータ所有ノードのアドレス情報を取得するアドレス取得手段と、
前記取得したアドレス情報を用いて前記データ所有ノードから前記目的データを取得するデータ取得手段と、を備えたネットワーク端末において、
ピアツーピア・ネットワーク内の他のノードに対して自己のアドレス情報をルーティング情報として通知しないように制御を行う第１の制御手段を備えることを特徴とするネットワーク端末。
【請求項２】
目的データを特定するデータ特定情報と該目的データを所有しているデータ所有ノードを特定するノード特定情報とを対応付けた第１テーブル、及び、前記ノード特定情報と該ノード特定情報で特定されるデータ所有ノードのアドレス情報とを対応付けた第２テーブルが前記ピアツーピア・ネットワークのノードにより管理され、
前記第１テーブルを保持するノードに自己が所有する目的データのデータ特定情報と自己のノード特定情報とを送信し、前記第２テーブルを保持するノードに自己のノード特定情報と自己のアドレス情報とを送信するように制御を行う第２の制御手段を備えることを特徴とする請求項１に記載のネットワーク端末。
【請求項３】
前記第２テーブルは、前記ノード特定情報に対応付けて、前記アドレス情報に加えて該データ所有ノードの状態を示すノード状態情報を記述したものであり、
前記第２の制御手段は、前記第２テーブルを保持するノードに自己のノード特定情報と自己のアドレス情報と自己のノード状態情報とを送信するように制御を行う
ことを特徴とする請求項２に記載のネットワーク端末。
【請求項４】
前記アドレス取得手段は、
目的データを特定するデータ特定情報が記述された前記第１テーブルを保持するノードから、該データ特定情報と対応するノード特定情報を取得する第１取得手段と、
前記取得したノード特定情報が記述された前記第２テーブルを保持するノードから、該ノード特定情報と対応するアドレス情報を取得する第２取得手段と、からなる
ことを特徴とする請求項２または請求項３に記載のネットワーク端末。
【請求項５】
前記第２取得手段は、前記第１取得手段により取得したノード特定情報が記述された第２テーブルを保持するノードから、該ノード特定情報と対応するアドレス情報及びノード状態情報を取得し、
前記データ取得手段は、前記取得したノード状態情報に基づいて選択したデータ所有ノードから目的データを取得する
ことを特徴とする請求項４に記載のネットワーク端末。
【請求項６】
ピアツーピア・ネットワーク内の他のノードからルーティング情報を取得して自己のルーティングテーブルを生成し、前記生成したルーティングテーブルに記述されているノードを介して、目的データを所有しているデータ所有ノードのアドレス情報を取得し、前記取得したアドレス情報を用いて前記データ所有ノードから前記目的データを取得するネットワーク端末のコンピュータに、
ピアツーピア・ネットワーク内の他のノードに対して自己のアドレス情報をルーティング情報として通知しないように制御を行うステップを実行させるコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ピアツーピア・ネットワークのノードとして用いられるネットワーク端末及び該ネットワーク端末のコンピュータプログラムに関する。
【背景技術】
【０００２】
近年、ピアツーピア・ネットワークを利用した様々なアプリケーション（ファイル共有やインターネット電話等）が普及してきている。ピアツーピア（Ｐｅｅｒ  ｔｏ  Ｐｅｅｒ；以下、Ｐ２Ｐと略す）は多数のネットワーク端末（ノード）が対等の立場で接続されたネットワークの形態であり、Ｐ２Ｐネットワークを構成する各ノードは、ネットワークの管理をするサーバを介在させることなく相互に通信を行う。
【０００３】
Ｐ２Ｐネットワークにおいて、あるノードＡがあるデータＸを他のノードＢから取得する際の通信手順を簡単に説明する。どのノードがどんなデータを所有しているかの情報は、Ｐ２Ｐネットワークに参加している各ノードが分散して管理する分散ハッシュテーブルに記述されている。ノードＡは、目的のデータＸを特定する情報として例えばデータＸのファイル名をハッシュしてハッシュ値を計算する。このハッシュ値から、データＸに関する情報が記述された分散ハッシュテーブルを管理しているノード（ノードＰとする）がどれであるかを知ることができる。ノードＡは、目的のデータＸを所有しているノードＢのアドレス情報に対する問い合わせを、自分のルーティングテーブルを参照してノードＰに近いノードへ送る（アドレス情報の検索）。この問い合わせを受けたノードは、自分がノードＰであればノードＢのアドレス情報をノードＡへ返し、自分がノードＰでなければ、自分のルーティングテーブルを参照してよりノードＰに近いノードへノードＡからの問い合わせを転送する。こうして問い合わせが繰り返し転送され、最終的に、ノードＰが持っているノードＢのアドレス情報がノードＡによって取得されることとなる。ノードＡは、このようにして検索されたノードＢのアドレス情報を用いて、ノードＢからデータＸを取得することができる。
【非特許文献１】Ion Stoica, Robert Morris, David Karger, M. Frans Kaashoek, Hari Balakrishnan （2001）. “Chord: A scalable peer-to-peer lookup service for internet applications”. ACM SIGCOMM Computer Communication Review 31 （4）: 149 - 160.
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ところで、Ｐ２Ｐネットワークに参加しているノード即ちネットワーク端末には、通信速度やＣＰＵ処理速度が高速（リソースが大きい）なものと低速（リソースが小さい）なものとが混在することがある（リソースが大きいネットワーク端末の例として、ブロードバンド回線に接続されたパソコンがあり、リソースが小さいネットワーク端末の例として、携帯電話端末（インターネット接続機能を有する）がある）。このような状況では、ノードが目的のデータを所有しているノードのアドレス情報を検索する際、アドレス情報の問い合わせが転送される経路上にリソースの小さいノードが存在していると、アドレス情報の検索の処理が遅くなってしまうという問題がある。
【０００５】
なお、この問題に対応するための方法として、従来、Ｐ２Ｐネットワークの構造を、スーパーノードと呼ばれるリソースの大きいノードの下にリソースの小さいノードをぶら下げた階層構造とする方法が知られている。しかしながら、この方法では、スーパーノードに障害が発生した場合に、そのスーパーノードにぶら下がっている全てのノードに影響が及んでしまい、また、スーパーノードの負荷が大きくなってしまう、ということが問題になる。
【０００６】
本発明は上記の点に鑑みてなされたものであり、その目的は、リソースが小さくてもアドレス情報の検索処理スピードに影響を与えることなくＰ２Ｐネットワークのアプリケーションを利用することが可能なネットワーク端末、及び該ネットワーク端末のコンピュータプログラムを提供することにある。
【課題を解決するための手段】
【０００７】
本発明は上記の課題を解決するためになされたものであり、ピアツーピア・ネットワーク内の他のノードからルーティング情報を取得して自己のルーティングテーブルを生成するルーティングテーブル生成手段と、前記生成したルーティングテーブルに記述されているノードを介して、目的データを所有しているデータ所有ノードのアドレス情報を取得するアドレス取得手段と、前記取得したアドレス情報を用いて前記データ所有ノードから前記目的データを取得するデータ取得手段と、を備えたネットワーク端末において、ピアツーピア・ネットワーク内の他のノードに対して自己のアドレス情報をルーティング情報として通知しないように制御を行う第１の制御手段を備えることを特徴とする。
【０００８】
また、本発明は、上記のネットワーク端末において、目的データを特定するデータ特定情報と該目的データを所有しているデータ所有ノードを特定するノード特定情報とを対応付けた第１テーブル、及び、前記ノード特定情報と該ノード特定情報で特定されるデータ所有ノードのアドレス情報とを対応付けた第２テーブルが前記ピアツーピア・ネットワークのノードにより管理され、前記第１テーブルを保持するノードに自己が所有する目的データのデータ特定情報と自己のノード特定情報とを送信し、前記第２テーブルを保持するノードに自己のノード特定情報と自己のアドレス情報とを送信するように制御を行う第２の制御手段を備えることを特徴とする。
【０００９】
また、本発明は、上記のネットワーク端末において、前記第２テーブルは、前記ノード特定情報に対応付けて、前記アドレス情報に加えて該データ所有ノードの状態を示すノード状態情報を記述したものであり、前記第２の制御手段は、前記第２テーブルを保持するノードに自己のノード特定情報と自己のアドレス情報と自己のノード状態情報とを送信するように制御を行うことを特徴とする。
【００１０】
また、本発明は、上記のネットワーク端末において、前記アドレス取得手段は、目的データを特定するデータ特定情報が記述された前記第１テーブルを保持するノードから、該データ特定情報と対応するノード特定情報を取得する第１取得手段と、前記取得したノード特定情報が記述された前記第２テーブルを保持するノードから、該ノード特定情報と対応するアドレス情報を取得する第２取得手段と、からなることを特徴とする。
【００１１】
また、本発明は、上記のネットワーク端末において、前記第２取得手段は、前記第１取得手段により取得したノード特定情報が記述された第２テーブルを保持するノードから、該ノード特定情報と対応するアドレス情報及びノード状態情報を取得し、前記データ取得手段は、前記取得したノード状態情報に基づいて選択したデータ所有ノードから目的データを取得することを特徴とする。
【００１２】
また、本発明は、ピアツーピア・ネットワーク内の他のノードからルーティング情報を取得して自己のルーティングテーブルを生成し、前記生成したルーティングテーブルに記述されているノードを介して、目的データを所有しているデータ所有ノードのアドレス情報を取得し、前記取得したアドレス情報を用いて前記データ所有ノードから前記目的データを取得するネットワーク端末のコンピュータに、ピアツーピア・ネットワーク内の他のノードに対して自己のアドレス情報をルーティング情報として通知しないように制御を行うステップを実行させるコンピュータプログラムである。
【発明の効果】
【００１３】
本発明によれば、ネットワーク端末（リソースの小さいネットワーク端末であるとする）のアドレス情報がルーティング情報として他のノードに通知されないので、当該ネットワーク端末が他のノードのルーティングテーブルに掲載されることはなく、各ノードがデータ所有ノードのアドレス情報を取得する際にリソースの小さいノードを介した検索が行われないこととなる。これにより、アドレス情報の検索処理スピードが低下することを防ぐことができる。また、当該ネットワーク端末自体は、ルーティングテーブル生成手段とアドレス取得手段とデータ取得手段とを用いて目的データを取得することができる。
【発明を実施するための最良の形態】
【００１４】
以下、図面を参照しながら本発明の実施形態について詳しく説明する。
（第１の実施形態）
図１は、本発明の一実施形態によるネットワーク端末が適用されるピアツーピア・ネットワーク（Ｐ２Ｐネットワーク）を示す図である。Ｐ２Ｐネットワークに参加する各ノードＮには、ノード固有の識別ＩＤ（例えばＩＰアドレスやＭＡＣアドレス等）を所定のハッシュ関数でハッシュした値がノードＩＤとして付与される。本実施形態では、ノードを管理する分散ハッシュテーブルとしてＣｈｏｒｄを用いる。Ｃｈｏｒｄは、ハッシュ関数に例えばＳＨＡ−１（Ｓｅｃｕｒｅ  Ｈａｓｈ  Ａｌｇｏｒｉｔｈｍ  １）を使用してノードＩＤを２１６０ビットのハッシュ空間にマッピングするが、図１では簡単化のため、ハッシュ空間が２４ビットであるとし、ノードＩＤが０から１５までの１６通りであるとしている。
【００１５】
図１のＰ２Ｐネットワークは、通信速度やＣＰＵ処理速度が高速なノード即ちリソースの大きいノードである、ブロードバンド回線に接続されたパソコンと、通信速度やＣＰＵ処理速度が低速なノード即ちリソースの小さいノードである、インターネット接続機能を有する携帯電話端末と、からなるものである。図１において、Ｐ２Ｐネットワークに実際に参加しているノードは、二重丸で示したノードＩＤ０，２，６，９，１１，１３，１４の各ノードである（それぞれを以下ではノード０，ノード２，ノード６，…のように記す）。
【００１６】
図１のＣｈｏｒｄによるＰ２Ｐネットワークでは、Ｐ２Ｐネットワーク内のノードが所有しているデータに関する情報が、次のようにして複数のノードにより分散管理される。即ち、ノードが所有するデータを特定する情報、例えばそのデータのファイル名をハッシュしてハッシュ値を求める。このハッシュ値は０から１５までのいずれかの値をとる。各ノードは、データのハッシュ値が「自分の１つ前のノードＩＤ＋１」から「自分のノードＩＤ」までの範囲にあるデータに関する情報を、分散ハッシュテーブルにより管理する。図１の例では、ノード６はハッシュ値が３から６までのデータに関する情報を管理し、ノード９はハッシュ値が７から９までのデータに関する情報を管理することになる。例えば、「バラ」というファイル名のデータに関する情報は、ファイル名「バラ」のハッシュ値が３であるとすると、ノード６によって管理される。
【００１７】
図２は、ノード６とノード９が持つ分散ハッシュテーブルの一例をそれぞれ示したものである。分散ハッシュテーブルは、ハッシュ値と、ファイル名をハッシュすると当該ハッシュ値になるデータに関する情報と、が対応付けられて記述されたテーブルである。本実施形態では、「データに関する情報」は当該データを所有するノードのアドレス情報、例えばＩＰアドレスである。図２の例では、ノード６の分散ハッシュテーブルには、ハッシュ値が３であるファイル名「バラ」のデータを所有するノード１３のＩＰアドレス「ｍｍｍ．ｍｍｍ．ｍｍｍ．ｍｍｍ」と、ハッシュ値が５であるファイル名「ヒマワリ」のデータを所有するノード２のＩＰアドレス「ｂｂｂ．ｂｂｂ．ｂｂｂ．ｂｂｂ」と、が記述されており、また、ノード９の分散ハッシュテーブルには、ハッシュ値が８であるファイル名「チューリップ」のデータを所有するノード２のＩＰアドレス「ｂｂｂ．ｂｂｂ．ｂｂｂ．ｂｂｂ」が記述されている。
【００１８】
このようにしてＰ２Ｐネットワーク内のノードが所有しているデータに関する情報が分散ハッシュテーブルを用いて管理されているので、例えば、ノード９がファイル名「バラ」のデータを取得するには、ファイル名「バラ」をハッシュしてハッシュ値３を求め、このハッシュ値３を担当するノード６から目的のデータを所有しているノード１３のＩＰアドレス「ｍｍｍ．ｍｍｍ．ｍｍｍ．ｍｍｍ」を取得して、取得したＩＰアドレスを用いてノード１３からファイル名「バラ」のデータを取得する、という手順を実行すればよい。
【００１９】
ここで、Ｃｈｏｒｄを用いたＰ２Ｐネットワークでは、上記のようにあるノードが目的のデータを所有しているノードのＩＰアドレスを取得する際に、各ノードは次のようなルーティングテーブルを利用してルーティングを実施、つまり必要なＩＰアドレスを検索する。即ち、各ノードは、次式
ｎｅｘｔ（Ｚ），但しＺ＝（自分のノードＩＤ＋２ｉ）  ｍｏｄ  ２ｍ  …（１）
を満たすノードについてのルーティング情報（ノードＩＤとＩＰアドレスの組）をルーティングテーブルとして持っている。ここで、ｎｅｘｔ（）はノードＩＤの数値が大きくなる方向で次に存在するノードのノードＩＤを与える関数、ｉは０≦ｉ＜ｍを満たす整数、ｍはハッシュ空間の大きさを２ｍビットとしたときのｍ、Ａ  ｍｏｄ  ＢはＡをＢで割った余り、をそれぞれ意味する。各ノードは、自分が持つこのようなルーティングテーブルの中から、知りたいＩＰアドレスを管理しているノードのノードＩＤを超えずにそのノードＩＤに一番近いノードＩＤを有するノードを選び、選んだノードに対して当該ＩＰアドレスの問い合わせを行う。この問い合わせを各ノードが順次転送していくことで、知りたいＩＰアドレスを管理しているノードに辿り着くことができる。
【００２０】
具体例で説明する。図３及び図４は、図１のＰ２Ｐネットワークにおいて、それぞれノード９とノード２が持つルーティングテーブルを示したものである。ノード９については、Ｚ＝１０，１１，１３，１であるので、ｎｅｘｔ（Ｚ）＝１１，１３，２となる。つまり、ノード９はノード１１，１３，及び２のルーティング情報をルーティングテーブルとして持つ。また、ノード２については、Ｚ＝３，４，６，１０であるので、ｎｅｘｔ（Ｚ）＝６，１１となる。つまり、ノード２はノード６及び１１のルーティング情報をルーティングテーブルとして持つ。
【００２１】
したがって、ノード９がノード６にＩＰアドレスを問い合わせる際のルーティング手順は図５のようになる。図５において、ノード９は、自分のルーティングテーブル（図３）からノード６に一番近いノードであるノード２を選んで、ノード２へＩＰアドレスの問い合わせを送信する。この問い合わせを受け取ったノード２は、自分のルーティングテーブル（図４）からノード６に一番近いノード、つまりノード６を選んで、ノード６へＩＰアドレスの問い合わせを送信する。これにより、ノード６から、問い合わせされたノード１３のＩＰアドレスがノード９へ送信され、必要なＩＰアドレスの検索が完了する。ノード９は、こうして検索されたＩＰアドレスを用いて、ノード１３からファイル名「バラ」のデータを取得することができる。
【００２２】
さて、上述したＰ２Ｐネットワークにおいて、通常、新たにノードがＰ２Ｐネットワークに参加する際には、当該新たに参加するノードが他のノードと同様Ｐ２Ｐネットワークのノードとして機能することができるように、ルーティングテーブルや分散ハッシュテーブルの更新が行われる（後述の図６参照）。
【００２３】
しかし、本発明に係るネットワーク端末は、Ｐ２Ｐネットワークに参加する際に、自分のアドレス情報をＰ２Ｐネットワーク内の他のノードにルーティング情報として通知しないように制御を行う。これにより、当該ネットワーク端末はＰ２Ｐネットワーク内のどのノードのルーティングテーブルにも掲載されることがないこととなる。したがって、当該ネットワーク端末がリソースの小さいネットワーク端末（例えば携帯電話端末）であるとすると、あるノードがＩＰアドレスの検索をする際にリソースの小さいノードを介した検索が行われることがないので、リソースの小さいノードがボトルネックとなって検索の処理が遅延してしまうことを防ぐことができる。
【００２４】
本発明に係るネットワーク端末がＰ２Ｐネットワークに参加する際の動作を、図６に示すフローチャートに沿って説明する。
まず、ネットワーク端末は、ＩＰアドレスやＭＡＣアドレス等の固有の識別ＩＤをハッシュ関数でハッシュし、自分のノードＩＤを求める（ステップＳ１０１）。ここでは、ノードＩＤが「４」と計算されたとする。ネットワーク端末（ノード４）は、既にＰ２Ｐネットワークに参加しているいずれか１つのノード（このノードのアドレス情報を知っているものとする）を介してルーティング情報を収集し、自分のルーティングテーブルを生成する（ステップＳ１０２）。具体的には、収集したルーティング情報を基に、上式（１）に従ってｎｅｘｔ（Ｚ）＝６，９，１３を計算し、ノード６，９，及び１３のルーティング情報を記述したルーティングテーブルを生成する。
【００２５】
ネットワーク端末（ノード４）は、次に、自分が携帯電話端末（リソースの小さいノード）であるか否かを判断する（ステップＳ１０３）。例えば、ネットワーク端末（ノード４）はメモリに自分のノードの種別（携帯電話端末であるかパソコンであるか等）を表す情報を記憶しておき、この情報を読み出すことによって上記判断を行う。なお、ノードの種別を表す情報に代えて、Ｐ２Ｐネットワークへの接続方式によって変わる通信速度の情報に基づいて、自分がリソースの小さいノードであるか否かを判断するようにしてもよい。
【００２６】
自分が携帯電話端末ではない場合、ネットワーク端末（ノード４）は、他のノードに対して自分のノードＩＤとＩＰアドレスをルーティング情報として通知する（ステップＳ１０４）。ノード４であるネットワーク端末のルーティング情報が通知されることにより、例えばノード２については上式（１）はｎｅｘｔ（Ｚ）＝４，６，１１となるので、ノード２のルーティングテーブルは、新たに参加するノード４のルーティング情報が含まれるように更新される。
【００２７】
続いてネットワーク端末（ノード４）は、Ｐ２Ｐネットワークへ参加したことにより自分が分散ハッシュテーブルとして管理すべき情報を、現在当該情報を管理しているノードから引き継ぐ（ステップＳ１０５）。具体的に、ノード４が管理すべき情報は、現在ノード６が管理しているハッシュ値が３から４までのデータに関する情報であるので、ノード４は、これらの情報をノード６から受け取って、分散ハッシュテーブルとして管理を行う。また、このとき、ノード６の分散ハッシュテーブルは、ハッシュ値が３から４に該当する情報が削除されるように更新される。
【００２８】
一方、自分が携帯電話端末である場合、ネットワーク端末（ノード４）は、上記のステップＳ１０４及びステップＳ１０５を実行しない。このため、ノード４のルーティング情報は他のいずれのノードのルーティングテーブルにも掲載されないこととなり、また、ノード４は分散ハッシュテーブルを全く管理しないこととなる。
【００２９】
次に、上記のようにノード４が新たにＰ２Ｐネットワークに参加した後におけるＩＰアドレスの検索動作を具体的に説明する。図７は、ノード１１がファイル名「チューリップ」のデータを取得する際にＩＰアドレスを問い合わせるルーティング手順を示したものである。ここで、ノード１１のルーティングテーブルには、ノード４の参加前においてはノード１３，０，及び６が掲載されている（式（１）より）。また、ファイル名「チューリップ」のデータに関する情報は、ノード９により管理されている（図２参照）
【００３０】
まずノード４が携帯電話端末ではなかった場合（図７（Ａ））、上述したステップＳ１０４に従って、ノード１１のルーティングテーブルは、ノード４がＰ２Ｐネットワークへ参加したことによってノード１３，０，及び４が掲載されるように更新される。よって、ノード１１は、目的のデータのファイル名「チューリップ」のハッシュ値が８であるので、ノード４へＩＰアドレスの問い合わせを送信する。この問い合わせを受信したノード４は、上述したステップＳ１０１で生成したルーティングテーブルに従って、ＩＰアドレスの問い合わせをノード６へ転送する。ノード６は、自分のルーティングテーブル（ノード９，１１，及び１４が掲載されている）に従ってノード９へＩＰアドレスの問い合わせを渡す。これによりノード９からファイル名「チューリップ」のデータを所有しているノードのＩＰアドレス（ノード２のＩＰアドレス「ｂｂｂ．ｂｂｂ．ｂｂｂ．ｂｂｂ」）がノード１１へ送信される。このように、ＩＰアドレスの問い合わせはノード１１→ノード４→ノード６→ノード９という経路で送られるが、新たにＰ２Ｐネットワークに参加したノード４はリソースが大きいので、遅延等は生じない。
【００３１】
一方ノード４が携帯電話端末であった場合（図７（Ｂ））、ノード１１のルーティングテーブルは更新されないので、ノード１１は、ＩＰアドレスの問い合わせをノード６へ送信する。この問い合わせを受信したノード６は、上記の場合と同様に自分のルーティングテーブルに従ってノード９へＩＰアドレスの問い合わせを渡す。このように、ＩＰアドレスの問い合わせは、ノード１１→ノード６→ノード９という経路で送られる。したがって、新たにＰ２Ｐネットワークに参加したリソースの小さいノード４を経ないこととなるため、この場合も、ＩＰアドレスの検索に遅延等が生じることがない。
【００３２】
（第２の実施形態）
次に、本発明の第２の実施形態を説明する。
本実施形態では、Ｐ２Ｐネットワーク内のノードが所有しているデータに関する情報を、第１の分散ハッシュテーブルと第２の分散ハッシュテーブルとによって管理する。第１の分散ハッシュテーブルは、ハッシュ値と、ファイル名をハッシュすると当該ハッシュ値になるデータを所有するノードのノードＩＤと、が対応付けられて記述されたテーブルである。第２の分散ハッシュテーブルは、ノードＩＤのハッシュ値と、当該ノードＩＤのノードのアドレス情報と、が対応付けられて記述されたテーブルである。なお、第２の分散ハッシュテーブルは、ノードＩＤのハッシュ値ではなく、ノードＩＤ自体と当該ノードＩＤのノードのアドレス情報とを対応付けて記述したテーブルとしてもよい。
【００３３】
図８は、第１の分散ハッシュテーブルと第２の分散ハッシュテーブルの一例を示したものである。図８の例では、ノード６についての第１の分散ハッシュテーブルと、ノード１１についての第２の分散ハッシュテーブルとを示している。ノード６の第１の分散ハッシュテーブルには、ハッシュ値が３であるファイル名「バラ」のデータを所有するノード１３のノードＩＤ「１３」と、ハッシュ値が５であるファイル名「ヒマワリ」のデータを所有するノード２のノードＩＤ「２」と、が記述されている。ノード１１の第２の分散ハッシュテーブルには、ノードＩＤ「１３」のハッシュ値（このハッシュ値を１０とする）に対応させて、当該ノードＩＤを有するノード１３のＩＰアドレス「ｍｍｍ．ｍｍｍ．ｍｍｍ．ｍｍｍ」が記述されている。
【００３４】
このような第１及び第２の分散ハッシュテーブルを用いて、例えばノード９がファイル名「バラ」のデータを取得するには、次の２段階の手順をとる。まず第１段階として、ノード９は、ファイル名「バラ」をハッシュしてハッシュ値３を求め、このハッシュ値３を図８の第１の分散ハッシュテーブルにより管理するノード６から、目的のデータを所有しているノード１３のノードＩＤ「１３」を取得する。次に第２段階として、ノード９は、取得したノードＩＤ「１３」をハッシュしてハッシュ値１０を求め、このハッシュ値１０を図８の第２の分散ハッシュテーブルにより管理するノード１１から、ノード１３のＩＰアドレス「ｍｍｍ．ｍｍｍ．ｍｍｍ．ｍｍｍ」を取得する。これにより、ノード９は、取得したＩＰアドレスを用いてノード１３からファイル名「バラ」のデータを取得することができる。
【００３５】
ここで、本実施形態において、あるノードが目的のデータを所有しているノードのＩＰアドレスを上記の第１及び第２段階に従って取得する際、各段階で必要なノードＩＤとＩＰアドレスを検索するルーティングの手順は、前述した第１の実施形態と同じであり、前述の式（１）に基づくルーティングテーブルを用いる。図９は、上記の第１及び第２段階それぞれのルーティング手順を示したものである。
【００３６】
図９（Ａ）の第１段階では、ノード９は、自分のルーティングテーブル（図３）からノード６に一番近いノードであるノード２を選んで、ノード２へノードＩＤの問い合わせを送信する。この問い合わせを受け取ったノード２は、自分のルーティングテーブル（図４）からノード６に一番近いノード、つまりノード６を選んで、ノード６へノードＩＤの問い合わせを送信する。これにより、ノード６から、問い合わせされたノード１３のノードＩＤがノード９へ送信され、必要なノードＩＤの検索が完了する。
【００３７】
図９（Ｂ）の第２段階では、ノード９は、自分のルーティングテーブル（図３）からノード１１に一番近いノード、つまりノード１１を選んで、ノード１１へＩＰアドレスの問い合わせを送信する。これにより、ノード１１から、問い合わせされたノード１３のＩＰアドレスがノード９へ送信され、必要なＩＰアドレスの検索が完了する。ノード９は、こうして検索されたＩＰアドレスを用いて、ノード１３からファイル名「バラ」のデータを取得することができる。
【００３８】
上述した第１及び第２の分散ハッシュテーブルを構築するため、ネットワーク端末は、Ｐ２Ｐネットワークに参加して自分が所有するデータを他のノードと共有する際に、当該データのファイル名のハッシュ値を担当するノードに当該ハッシュ値と自分のノードＩＤとを送信し（送信されたハッシュ値とノードＩＤは対応付けられて第１の分散ハッシュテーブルに記述される）、自分のノードＩＤのハッシュ値を担当するノードに当該ハッシュ値と自分のＩＰアドレスとを送信する（送信されたハッシュ値とＩＰアドレスは対応付けられて第２の分散ハッシュテーブルに記述される）。ＩＰアドレスが変更された際には、再度あらためて、自分のノードＩＤのハッシュ値を担当するノードに当該ハッシュ値と変更後の自分のＩＰアドレスとを送信する。これにより、例えばネットワーク端末が携帯電話端末であり、電波状況の悪化により回線が一時切断されその後再接続されたような場合に、再接続の前後でＩＰアドレスが変化したとしても、そのネットワーク端末が所有しているデータを他のノードがアクセスして取得することが可能である。
【００３９】
（第３の実施形態）
次に、本発明の第３の実施形態を説明する。
本実施形態では、前述した第２の分散ハッシュテーブルに、ノードＩＤのハッシュ値と対応付けて、当該ノードＩＤのノードのアドレス情報に加えて更に当該ノードの状態に関する情報を記述する。図１０は、本実施形態における第１及び第２の分散ハッシュテーブルの一例を示したものである。図１０の例では、ノード６についての第１の分散ハッシュテーブルと、ノード１１についての第２の分散ハッシュテーブルと、ノード０についての第２の分散ハッシュテーブルとを示しており、「ノードの状態に関する情報」として回線品質情報と更新日時情報を用いている。
【００４０】
ノード６の第１の分散ハッシュテーブルには、ハッシュ値が３であるファイル名「バラ」のデータを所有している２つのノード、ノード１３とノード２のそれぞれのノードＩＤ「１３」及び「２」が記述されている。ノード１１の第２の分散ハッシュテーブルには、ノードＩＤ「１３」のハッシュ値（このハッシュ値を１０とする）に対応させて、当該ノードＩＤを有するノード１３のＩＰアドレス「ｍｍｍ．ｍｍｍ．ｍｍｍ．ｍｍｍ」と、当該ノード１３の回線品質情報と、更新日時情報と、が記述されている。また、ノード０の第２の分散ハッシュテーブルには、ノードＩＤ「２」のハッシュ値（このハッシュ値を１５とする）に対応させて、当該ノードＩＤを有するノード２のＩＰアドレス「ｂｂｂ．ｂｂｂ．ｂｂｂ．ｂｂｂ」と、当該ノード２の回線品質情報と、更新日時情報と、が記述されている。更新日時情報は、当該ノードについてＩＰアドレスと回線品質情報とを更新した日時を表すものである。
【００４１】
本実施形態のネットワーク端末は、Ｐ２Ｐネットワークに参加して自分が所有するデータを他のノードと共有する際に、当該データのファイル名のハッシュ値を担当するノードに当該ハッシュ値と自分のノードＩＤとを送信（第２の実施形態と同様）し、自分のノードＩＤのハッシュ値を担当するノードに対しては、当該ハッシュ値と自分のＩＰアドレスと回線品質情報とを送信する（送信されたハッシュ値とＩＰアドレスと回線品質情報が第２の分散ハッシュテーブルに記述される際に更新日時情報も記述される）。自分のＩＰアドレスと回線品質情報の送信は、例えば１０分おき等、定期的に行うようにすることが好ましい。
【００４２】
このような第２の分散ハッシュテーブルを用いて、例えばノード９がファイル名「バラ」のデータを取得する手順は、第２の実施形態と同様の第１及び第２段階に従う。
即ち、第１段階では、ノード９は、ファイル名「バラ」をハッシュしてハッシュ値３を求め、このハッシュ値３を図１０の第１の分散ハッシュテーブルにより管理するノード６から、目的のデータを所有しているノード１３及びノード２のノードＩＤ「１３」，「２」を取得する。
【００４３】
第２段階では、ノード９は、第１段階で取得したノードＩＤ「１３」をハッシュしてハッシュ値１０を求め、このハッシュ値１０を図１０の第２の分散ハッシュテーブルにより管理するノード１１から、ノード１３のＩＰアドレス「ｍｍｍ．ｍｍｍ．ｍｍｍ．ｍｍｍ」と回線品質情報と更新日時情報とを取得するとともに、同じく第１段階で取得したノードＩＤ「２」をハッシュしてハッシュ値１５を求め、このハッシュ値１５を図１０の第２の分散ハッシュテーブルにより管理するノード０から、ノード２のＩＰアドレス「ｂｂｂ．ｂｂｂ．ｂｂｂ．ｂｂｂ」と回線品質情報と更新日時情報とを取得する。
【００４４】
そして、ノード９は、このようにして求めたファイル名「バラ」のデータを所有するノード１３とノード２という２つのノードのうち、それぞれの回線品質情報や更新日時情報を適宜考慮していずれかを選択し、選択したノードからそのＩＰアドレスを用いてファイル名「バラ」のデータを取得する。なお、回線品質が良好で更新日時が新しいノードを選択することが好ましい。このように同じデータを所有するノードが複数ある場合に、ノードの状態を考慮して最適なノードからデータを取得することが可能である。
【００４５】
以上、図面を参照してこの発明の一実施形態について詳しく説明してきたが、具体的な構成は上述のものに限られることはなく、この発明の要旨を逸脱しない範囲内において様々な設計変更等をすることが可能である。
【００４６】
例えば、分散ハッシュテーブルとしてＣｈｏｒｄを用いる実施形態を説明したが、本発明は分散ハッシュテーブルの種類を特に限定するものではない。また、ルーティング手順も上述した式（１）に基づくルーティングテーブルを用いるものに限定されず、例えば、各ノードが隣り合ったノードのルーティング情報をルーティングテーブルとして持ち、順次隣のノードへＩＰアドレス等の問い合わせを転送するというルーティング手順としてもよい。
【００４７】
また、本発明においてネットワーク端末は、Ｐ２Ｐネットワークに参加できる通信機能を有する端末を意味し、携帯電話端末の他、例えばＰＨＳ（Ｐｅｒｓｏｎａｌ  Ｈａｎｄｙｐｈｏｎｅ  Ｓｙｓｔｅｍ）端末やＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔｓ）端末、パソコン（ダイヤルアップ接続の場合等）などを含むものとする。また、これらネットワーク端末は、ＣＰＵ等の処理装置とＲＯＭ等の記憶装置を備えるものであり、上記説明した各機能を実現するためのコンピュータプログラムをＲＯＭ等に記憶させておき、ＣＰＵ等がこのコンピュータプログラムを読み出して実行することによって、本発明に係るネットワーク端末を構成するようにしてもよい。
【００４８】
また、本発明はＰ２Ｐネットワークにおいて、ファイル共有やインターネット電話に限られずその他のアプリケーションにも広く適用可能であることは言うまでもない。
【図面の簡単な説明】
【００４９】
【図１】本発明の一実施形態によるネットワーク端末が適用されるＰ２Ｐネットワークを示す図である。
【図２】第１の実施形態においてノード６とノード９が持つ分散ハッシュテーブルの一例を示した図である。
【図３】第１の実施形態においてノード９が持つルーティングテーブルを示した図である。
【図４】第１の実施形態においてノード２が持つルーティングテーブルを示した図である。
【図５】第１の実施形態においてノード９がノード６にＩＰアドレスを問い合わせる際のルーティング手順を示した図である。
【図６】ネットワーク端末がＰ２Ｐネットワークに参加する際の動作を示すフローチャートである。
【図７】第１の実施形態において、ノード４が新たにＰ２Ｐネットワークに参加した後にノード１１がＩＰアドレスを問い合わせるルーティング手順を示した図である。
【図８】第２の実施形態において第１の分散ハッシュテーブルと第２の分散ハッシュテーブルの一例を示した図である。
【図９】第２の実施形態においてノード９がノードＩＤとＩＰアドレスを問い合わせる際のルーティング手順を示した図である。
【図１０】第３の実施形態において第１の分散ハッシュテーブルと第２の分散ハッシュテーブルの一例を示した図である。
【符号の説明】
【００５０】
Ｎ…ノード（ネットワーク端末）
【図１】
2009157575.tif 000003
【図２】
2009157575.tif 000004
【図３】
2009157575.tif 000005
【図４】
2009157575.tif 000006
【図５】
2009157575.tif 000007
【図６】
2009157575.tif 000008
【図７】
2009157575.tif 000009
【図８】
2009157575.tif 000010
【図９】
2009157575.tif 000011
【図１０】
2009157575.tif 000012