(57)【要約】【課題】  ネットワーク分割が生じた際にも必要な情報を維持管理する。【解決手段】  Ｐ２Ｐネットワーク内に分散配置されたそれぞれのピアが分散ハッシュ表を管理する場合に、ピアとの接続を監視するアダプタ８２０（手段）を新設し、（１）アダプタ８２０がピアとの切断を検知したときにクライアントに対して切断を通知し、通知を受けたクライアントが再登録を行う、（２）ピアに切断を通知し、通知を受けたピアが再登録を行う、（３）アダプタ自身が再登録を行う、のいずれか一つを実行することで、ネットワーク分割が生じた場合にも分割後のネットワークで構成される分散ハッシュ表により必要な情報を維持管理する。【選択図】      図１
2006246225.tif 000002
【特許請求の範囲】
【請求項１】
複数の端末がネットワークを介して接続され、前記それぞれの端末上で動作する第１と第２のピアを含む複数のピアがハッシュ表の一部を保持して管理し、前記ピアが互いに通信して前記ハッシュ表の全体管理を行うと共に、前記ピアのそれぞれが、全てのピアで共通に保持するハッシュ関数と、前記ピアのそれぞれが担当するキーと、前記キーに対する値の組とを保持するハッシュ表と、任意のピアヘメッセージを送信するために必要な他のピアのアドレスとを保持して成る、Ｐ２Ｐネットワークシステムにおける分散ハッシュ表管理方法であって、
前記端末上で動作するクライアントが、あるキーと値の組を記憶し、前記クライアントと同一、もしくは他の端末上で動作する第１のピアに対して、前記キーと前記値と前記クライアントと同一の端末上で動作するアダプタのアドレスとを含む登録要求を送信するステップと、
前記登録要求を受信した第１のピアが、前記キーにハッシュ関数演算を実行して得られるハッシュ値に対応する第２のピアを決定し、前記決定された第２のピアに対し、前記キーと前記値と前記アダプタのアドレスと前記クライアントのアドレスとを含む登録要求を転送するステップと、
前記登録要求を転送された第２のピアが、自身で保持するハッシュ表に前記登録要求に含まれるキーと値の組を追加し、前記登録要求に含まれる前記アダプタのアドレスに対して、前記第２のピア自身のアドレスと前記登録要求に含まれる前記クライアントのアドレスと前記キーとを含む登録先通知を送信するステップと、
前記登録先通知を受信した前記アダプタが、前記登録先通知に含まれる前記第２のピアのアドレスと前記クライアントのアドレスと前記キーとを記憶し、前記第２のピアに対して接続確認を行い、切断を検知した場合、前記クライアントに対して前記キーを含む切断通知を送信するステップと、
前記切断通知を受信した前記クライアントが、前記通知されたキーについて記憶済みの前記キーと値とを再登録するステップと、
を有することを特徴とする分散ハッシュ表管理方法。
【請求項２】
複数の端末がネットワークを介して接続され、前記それぞれの端末上で動作する第１〜第３のピアを含む複数のピアがハッシュ表の一部を保持して管理し、前記ピアが互いに通信して前記ハッシュ表の全体管理を行うと共に、前記ピアのそれぞれが、全てのピアで共通に保持するハッシュ関数と、前記ピアのそれぞれが担当するキーと、前記キーに対する値の組とを保持するハッシュ表と、任意のピアヘメッセージを送信するために必要な他のピアのアドレスとを保持して成る、Ｐ２Ｐネットワークシステムにおける分散ハッシュ表管理方法であって、
前記端末上で動作するクライアントが、あるキーと値の組を記憶し、前記クライアントと同一、もしくは他の端末上で動作する第１のピアに対して、前記キーと前記値と前記クライアントと同一の端末上で動作するアダプタのアドレスとを含む登録要求を送信するステップと、
前記登録要求を受信した第１のピアが、前記キーにハッシュ関数演算を実行して得られるハッシュ値に対応する第２のピアを決定し、前記決定された第２のピアに対し、前記キーと値と前記アダプタのアドレスとを含む登録要求を転送するステップと、
前記第１のピアが、前記キーと値とを記憶し、前記キーと、自身のアドレスを含む登録元通知を前記アダプタに送信するステップと、
前記登録要求を転送された第２のピアが、自身で保持するハッシュ表に、前記登録要求に含まれるキーと値の組を追加し、前記登録要求に含まれるアダプタに対し、自身のアドレスと前記登録要求に含まれるキーから成る登録先通知を送信するステップと、
前記登録元通知を受信したアダプタが、前記登録元通知に含まれるキーと前記第１のピアのアドレスとの組を記憶するステップと、
前記登録先通知を受信したアダプタが、前記登録先通知に含まれる前記第２のピアのアドレスとキーとを記憶し、前記第２のピアに対して接続確認を行い、切断を検知した場合には前記キーに対して記憶済みの第１のピアに対して切断通知を送信するステップと、
前記切断通知を受信した第１のピアが、前記通知されたキーにハッシュ関数を演算して得られるハッシュ値に対応する第３のピアを決定し、前記第３のピアに対して記憶済みのキーと値の登録要求を送信するステップと、
を有することを特徴とする分散ハッシュ表管理方法。
【請求項３】
複数の端末がネットワークを介して接続され、前記それぞれの端末上で動作する第１と第２のピアを含む複数のピアがハッシュ表の一部を保持して管理し、前記ピアが互いに通信して前記ハッシュ表の全体管理を行うと共に、前記ピアのそれぞれが、全てのピアで共通に保持するハッシュ関数と、前記ピアのそれぞれが担当するキーと、前記キーに対する値の組とを保持するハッシュ表と、任意のピアヘメッセージを送信するために必要な他のピアのアドレスとを保持して成る、Ｐ２Ｐネットワークシステムにおける分散ハッシュ表管理方法であって、
前記端末上で動作するクライアントが、あるキーと値の組を記憶し、前記クライアントと同一、もしくは他の端末上で動作する第１のピアに対して、前記キーと前記値と前記クライアントと同一の端末上で動作するアダプタのアドレスとを含む登録要求を送信するステップと、
前記登録要求を受信した第１のピアが、前記キーにハッシュ関数演算を実行して得られるハッシュ値に対応する第２のピアを決定し、前記決定された第２のピアに対し、前記キーと値と前記アダプタのアドレスと、自身のアドレスを含む登録要求を転送すると共に、前記キーと値を記憶するステップと、
前記登録要求を転送された第２のピアが、自身で保持するハッシュ表に前記登録要求に含まれる前記キーと値の組を追加し、前記アダプタに対して自身のアドレスと前記登録要求に含まれる前記第１のピアのアドレスとキーから成る登録先通知を送信するステップと、
前記当録先通知を受信したアダプタが、前記登録先通知に含まれる前記第１のピアのアドレスと、前記第２のピアのアドレスとキーとを記憶し、前記第２のピアに対して接続確認を行い、切断を検知した場合に前記登録要求に含まれる前記第１のピアに対し、前記キーを含む切断通知を送信するステップと、
切断通知を受信した前記第２のピアが、前記通知されたキーに対し、記憶済みのキーと値を再登録するステップと、
を有することを特徴とする分散ハッシュ表管理方法。
【請求項４】
複数の端末がネットワークを介して接続され、前記それぞれの端末上で動作する第１〜第３のピアを含む複数のピアがハッシュ表の一部を保持して管理し、前記それぞれのピアが互いに通信して前記ハッシュ表の全体管理を行うと共に、前記ピアのそれぞれが、全てのピアで共通に保持するハッシュ関数と、前記ピアのそれぞれが担当するキーと、前記キーに対する値の組とを保持するハッシュ表と、任意のピアヘメッセージを送信するために必要な他のピアのアドレスとを保持して成る、Ｐ２Ｐネットワークシステムにおける分散ハッシュ表管理方法であって、
前記端末上で動作するクライアントが、あるキーと値の組を記憶し、前記クライアントと同一、もしくは他の端末上で動作する第１のピアに対して、前記キーと前記値と前記クライアントと同一の端末上で動作するアダプタのアドレスとを含む登録要求を送信するステップと、
前記登録要求を受信した第１のピアが、前記キーにハッシュ関数演算を実行して得られるハッシュ値に対応する第２のピアを決定し、前記決定された第２のピアに対し、前記キーと値と前記アダプタのアドレスを含む登録要求を転送するステップと、
前記登録要求を転送された第２のピアが、自身で保持するハッシュ表に前記登録要求に含まれるキーと値の組を追加し、前記登録要求に含まれる前記アダプタのアドレスに対し、前記第２のピア自身のアドレスと前記登録要求に含まれるキーと値を含む登録先通知を送信するステップと、
前記登録先通知を受信したアダプタが、前記登録先通知に含まれる前記第２のピアのアドレスと前記キーと値を記憶すると共に、前記第２のピアに対して接続確認を行い、切断を検知した場合に、前記記憶したキーと値と自身のアドレスとを含む登録要求を前記キーにハッシュ関数演算を実行して得られるハッシュ値に対応する第３のピアに送信するステップと、
を有することを特徴とする分散ハッシュ表管理方法。
【請求項５】
複数の端末がネットワークを介して接続され、前記それぞれの端末上で動作する第１と第２のピアを含む複数のピアがハッシュ表の一部を保持して管理し、前記それぞれのピアが互いに通信して前記ハッシュ表の全体管理を行う、Ｐ２Ｐネットワークシステムにおける分散ハッシュ表管理装置であって、
全てのピアで共通に保持するハッシュ関数と、前記ピアのそれぞれが担当するキーと、前記キーに対する値の組とを保持するハッシュ表と、任意のピアヘメッセージを送信するために必要な他のピアのアドレスとを保持する記憶手段と、
あるキーと値の組を記憶し、自身と同一もしくは他の端末上で動作する第１のピアに対して、前記キーと前記値と自身と同一の端末上で動作するアダプタのアドレスとを含む登録要求を送信する、前記端末上で動作するクライアント機能実行手段と、
前記登録要求を受信し、前記キーにハッシュ関数演算を実行して得られるハッシュ値に対応する第２のピアを決定し、前記決定された第２のピアに対して、前記キーと前記値と前記アダプタのアドレスと前記クライアントのアドレスとを含む登録要求を転送するピア機能実行手段と、
前記登録要求を転送された第２のピアにより、自身が保持するハッシュ表に前記登録要求に含まれるキーと値の組が追加され、送信される、前記第２のピア自身のアドレスと前記登録要求に含まれる前記クライアントのアドレスと前記キーとを含む登録先通知を受信し、前記登録先通知に含まれる前記第２のピアのアドレスと前記クライアントのアドレスと前記キーとを記憶し、前記第２のピアに対して接続確認を行い、切断を検知した場合、前記クライアントに対して前記キーを含む切断通知を送信するアダプタ機能実行手段とを備え、
前記クライアント機能実行手段は、前記アダプタ機能実行手段から前記切断通知を受信し、前記通知されたキーについて既に記憶済みの前記キーと値とを再登録することを特徴とする分散ハッシュ表管理装置。
【請求項６】
複数の端末がネットワークを介して接続され、前記それぞれの端末上で動作する第１〜第３のピアを含む複数のピアがハッシュ表の一部を保持して管理し、前記それぞれのピアが互いに通信して前記ハッシュ表の全体管理を行う、Ｐ２Ｐネットワークシステムにおける分散ハッシュ表管理装置であって、
全てのピアで共通に保持するハッシュ関数と、前記ピアのそれぞれが担当するキーと、前記キーに対する値の組とを保持するハッシュ表と、任意のピアヘメッセージを送信するために必要な他のピアのアドレスとを保持する記憶手段と、
あるキーと値の組を記憶し、自身と同一もしくは他の端末上で動作する第１のピアに対して、前記キーと前記値と自身と同一の端末上で動作するアダプタのアドレスとを含む登録要求を送信する、前記端末上で動作するクライアント機能実行手段と、
前記登録要求を受信し、前記キーにハッシュ関数演算を実行して得られるハッシュ値に対応する第２のピアを決定し、前記決定された第２のピアに対し、前記キーと値と前記アダプタのアドレスとを含む登録要求を転送すると共に、前記キーと値とを記憶し、前記記憶されたキーと、自身のアドレスを含む登録元通知を前記アダプタに送信するピア機能実行手段と、
前記登録要求を転送された第２のピアにより、自身が保持するハッシュ表に前記登録要求に含まれるキーと値の組が追加され、送信される、前記第２のピア自身のアドレスと前記キーとを含む登録先通知を受信し、前記登録先通知に含まれる前記第２のピアのアドレスとキーとを記憶し、前記第２のピアに対して接続確認を行い、切断を検知した場合に前記キーに対応して記憶済みの第１のピアに対し切断通知を送信するアダプタ機能実行手段とを備え、
前記切断通知を受信した第１のピアにおいて、前記通知されたキーにハッシュ関数を演算して得られるハッシュ値に対応する第３のピアが決定され、前記決定された第３のピアに対して記憶済みのキーと値の登録要求が送信されることを特徴とする分散ハッシュ表管理装置。
【請求項７】
複数の端末がネットワークを介して接続され、前記それぞれの端末上で動作する第１と第２のピアを含む複数のピアがハッシュ表の一部を保持して管理し、前記それぞれのピアが互いに通信して前記ハッシュ表の全体管理を行う、Ｐ２Ｐネットワークシステムにおける分散ハッシュ表管理装置であって、
全てのピアで共通に保持するハッシュ関数と、前記ピアのそれぞれが担当するキーと、前記キーに対する値の組とを保持するハッシュ表と、任意のピアヘメッセージを送信するために必要な他のピアのアドレスとを保持する記憶手段と、
あるキーと値の組を記憶し、自身と同一もしくは他の端末上で動作する第１のピアに対して、前記キーと前記値と自身と同一の端末上で動作するアダプタのアドレスとを含む登録要求を送信する、前記端末上で動作するクライアント機能実行手段と、
前記登録要求を受信し、前記キーにハッシュ関数を演算して得られるハッシュ値に対応する第２のピアを決定し、前記決定された第２のピアに対し、前記キーと値と前記アダプタのアドレスと、自身のアドレスを含む登録要求を転送すると共に、前記キーと値を記憶するピア機能実行手段と、
前記登録要求が転送された第２のピアにより、自身で保持するハッシュ表に前記登録要求に含まれる前記キーと値の組が追加され、送信される、前記第２のピアのアドレスと前記登録要求に含まれる前記第１のピアのアドレスとキーから成る登録先通知を受信し、前記登録先通知に含まれる前記第２のピアのアドレスと、前記登録要求の前記第１のピアのアドレスとキーとを記憶すると共に、前記第２のピアに対して接続確認を行い、切断を検知した場合に前記登録要求に含まれる前記第１のピアに対し、前記キーを含む切断通知を送信するアダプタ機能実行手段とを備え、
前記切断通知を受信した前記第２のピアにおいて、前記通知されたキーに対し既に記憶済みのキーと値が再登録されることを特徴とする分散ハッシュ表管理装置。
【請求項８】
複数の端末がネットワークを介して接続され、前記それぞれの端末上で動作する第１〜第３のピアを含む複数のピアがハッシュ表の一部を保持して管理し、前記それぞれのピアが互いに通信して前記ハッシュ表の全体管理を行う、Ｐ２Ｐネットワークシステムにおける分散ハッシュ表管理装置であって、
全てのピアで共通に保持するハッシュ関数と、前記ピアのそれぞれが担当するキーと、前記キーに対する値の組とを保持するハッシュ表と、任意のピアヘメッセージを送信するために必要な他のピアのアドレスとを保持する記憶手段と、
あるキーと値の組を記憶し、自身と同一もしくは他の端末上で動作する第１のピアに対して、前記キーと前記値と自身と同一の端末上で動作するアダプタのアドレスとを含む登録要求を送信する、前記端末上で動作するクライアント機能実行手段と、
前記登録要求を受信し、前記キーにハッシュ関数演算を実行して得られるハッシュ値に対応する第２のピアを決定し、前記決定された第２のピアに対し、前記キーと値と前記アダプタのアドレスを含む登録要求を転送するピア機能実行手段と、
前記登録要求が転送された第２のピアにおいて、自身で保持するハッシュ表に前記登録要求に含まれるキーと値の組が追加され、送信される、前記第２のピア自身のアドレスと前記登録要求に含まれるキーと値を含む登録先通知を受信し、前記登録先通知に含まれる前記第２のピアのアドレスとキーと値を記憶すると共に、前記第２のピアに対して接続確認を行い、切断を検知した場合に、前記記憶したキーと値と自身のアドレスとを含む登録要求を前記キーにハッシュ関数演算を実行して得られるハッシュ値に対応する第３のピアに送信するアダプタ手段と、
を備えたことを特徴とする分散ハッシュ表管理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の端末がネットワークを介して接続され、前記それぞれの端末上で動作する複数のピアがハッシュ表の一部を保持して管理し、ピア同士が互いに通信してハッシュ表の全体管理を行う、Ｐ２Ｐネットワークシステムにおける分散ハッシュ管理方法および装置に関する。
【背景技術】
【０００２】
Ｐ２Ｐ（Pear to Pear）ネットワークシステムでは分散ハッシュ表を用いてネットワークのルーティングを高速に実現することが行われている。
ネットワークトポロジが変化した場合でも上記した分散ハッシュ表を用いた検索を可能とする提案がなされている（例えば、非特許文献１参照）。具体的に、あるキーに対応するピアがネットワークから離脱したと仮定した場合、そのキーに対応するピアが、離脱すると仮定したピアが保持しているハッシュ表の複製を保持することで、任意のピアがネットワークから離脱した際にも分散ハッシュでの検索が可能となる。
【非特許文献１】「Robert Morris他著、Distributed Data Storage for P2P and Ad-hoc Networks、NTT Technical Review Vol.1 No.6、pp.29-36、2003年９月」
【０００３】
上記した非特許文献１には、あるキーに対するピア（node）を、「各ピアのアドレスにハッシュ関数を適応したハッシュ値がキーのハッシュ値よりも大きい中で最も小さいピア」として、あるキーと値の組の複製をそのキーのハッシュ値よりも大きいハッシュ値を持ついくつかのピアに持たせる方式が開示されている。
これにより、あるピアがネットワークから離脱した場合に、あるキーに対応する値を検索する場合には、そのピアが存在しない状態でそのキーに対応することになるピアが、そのキーと値との組の複製を保持しているため、検索を実行することが可能となる。
【０００４】
例えば、図８に示すＰ２Ｐネットワーク１を考える。Ｐ２Ｐネットワーク１では、端末１０〜８０が無線リンクで接続されており、互いに通信が可能である。各端末１０〜８０上では、分散ハッシュ表を管理するオブジェクトであるピアと、分散ハッシュ表のクライアントであるアプリケーションとが動作している。具体的に、図９に示されるように、端末１０では、ピア１１０とアプリケーション５１０が動作してものとする。また、各端末１０〜８０上のピアはＰ２Ｐネットワーク１を通して互いに通信可能である。
なお、端末１０〜８０では、それぞれ、ピア１１０〜１８０（図示せず）、およびアプリケーション５１０〜５８０（図示せず）が動作しているものとする。
【０００５】
ここで、Ｐ２Ｐネットワーク１上において図１０に示すようなChordリング１００を用いて分散ハッシュ表を管理することを考える。Chordリング１００の円周は０〜２５５までの値に対応している。今、ピア１１０〜１８０のアドレスにハッシュ関数Ｈを適応した結果の値が、それぞれ、０、３２、６４、９６、１２８、１６０、１９２、２２４だったとする。
ここで、ピアのアドレスとはそのピアが存在する端末のＩＰアドレスとメッセージを待ち受けるポート番号の組などで表せる。この時、ピア１１０は、２２５〜２５５、および０に対応するハッシュ値に対して、ピア１２０は、１〜３２に対応するハッシュ値に対して、ピア１３０は、３３〜６４に対応するハッシュ値に対して、ピア１４０は、６５〜９６に対応するハッシュ値に対して、ピア１５０は、９７〜１２８に対応するハッシュ値に対して、ピア１６０は、１２９〜１６０に対応するハッシュ値に対して、ピア１７０は、１６１〜１９２に対応するハッシュ値に対して、ピア１８０は、１９３〜２２４に対応するハッシュ値に対して、それぞれ責任を持つことになる。図１１は、この時の各ピアの関係をChordリング上で表現したものである。例えば、ピア１７０は、区間１９０に対応するハッシュ値に対して責任を持つ。
【０００６】
図１２は、ピア１７０が保持する情報を表した図である。図１２において、ピア１７０は、ハッシュ関数Ｈを適用した値が区間１９０に入るキーとそれに対する値の組を保存したハッシュ表２７０、Chordリング上で自身の次に来るピア１８０のアドレスとそのハッシュ値、自身のアドレスのハッシュ値に２８を法として、Chordリングのサイズの１／２および１／４上である２７および２６を加算した値に責任を持つピアである、ピア１３０およびピア１１０のアドレスとそのハッシュ値を保存したフィンガーテーブル６７０、Chordリング上で自身の直前のピアであるピア１６０のアドレスとそのハッシュ値とそれが保持するハッシュ表であるハッシュ表２６０の複製、とを保持する。
なお、他のピアも同様に関連するハッシュ表、先行ピアのアドレス、フィンガーテーブル、直前ピアのアドレスとハッシュ表の複製を保持する。例えばハッシュ表２７０の複製はピア１８０が保持する。
【０００７】
次に、登録処理の様子を説明する。アプリケーション５７０がキーＫに対する値Ｖを登録する場合、端末７０上のピア１７０にＫとＶの登録を依頼する。ピア１７０はキーＫにハッシュ関数Ｈを適用したＨ(Ｖ)を計算する。ここではＨ（Ｖ）＝２８だったと仮定する。
ピア１７０は、自身が責任を持つ区間１９０および先行ピアであるピア１８０が責任を持つ１９３〜２２４に２８が入らないため、２８を法として２８を超えない中で自身がアドレスを保持する最大のハッシュ値に対するアドレスを持つピアに登録要求を転送する。ここではハッシュ値０となるピア１１０が該当する。登録要求を受けたピア１１０は、やはり白身が責任を持つ２２５〜２５５、および０には２８が入らないが、先行ピアであるピア１２０が責任を持つ１〜３２に２８が入るため、ピア１２０に登録要求を転送する。ピア１２０は、自身が保持するハッシュ表にＫとＶの組を登録する。
【０００８】
検索の場合はアプリケーションがピアにキーを提示し、ピアは登録の場合と同様にそのキーに責任を持つピアに検索要求を転送していく。
ここで、各ピアはChordリング上で自身の直前のピアとの接続性を確認する。接続性の確認は、例えば定期的にパケットを送って、応答が返るかどうかで判断すれば良い。例えば、端末６０がＰ２Ｐネットワーク１から離脱して図１３に示すＰ２Ｐネットワーク２のようになった場合、Chordリング１００は、図１４に示すChordリング１０５になり、ピア１７０は区間２９０である、１２９〜１９２に責任を持つようになる。この区間のハッシュ表は、ハッシュ表２７０と、ハッシュ表２６０の複製から構築することが出来る。
【発明の開示】
【発明が解決しようとする課題】
【０００９】
上記したように、従来の分散ハッシュ管理方式では、一つあるいは複数の端末の離脱のみを考慮し、残った端未聞で離脱前と同様の情報を管理できるようにしていたため、ネットワークが分割して二つのサブネットワークに分かれた際に、両者のサブネットワークで必要な情報を離脱前と同様に管理することができないといった不都合があった。
【００１０】
上記した不都合について図を参照しながら説明する。図８で示したＰ２Ｐネットワーク１において、端末２０ではピア１２０とアプリケーション５２０とオブジェクト７００とオブジェクト７１０が動作している。ここで、アプリケーション５２０がオブジェクト７００とオブジェクト７１０のＩＤをキーとして、それらのアドレスを値として登録する場合を考える。
オブジェクト７００のＩＤのハッシュ値は１８０、オブジェクト７１０のＩＤのハッシュ値は２００とすれば、最終的にオブジェクト７００のＩＤとアドレス情報はピア１７０に、オブジェクト７１０のＩＤとアドレス情報はピア１８０にそれぞれ登録される。
【００１１】
図1６は、Ｐ２Ｐネットワーク１において、端末４０と端末５０の間のリンクが切断され、ネットワーク３とネットワーク４に分割された様子を示している。この時、それぞれのネットワークでは、図１７に示されるようなChordリング３００とChordリング４００が構成される。
ここで、例えばピア１８０が保持するハッシュ表は、ピア１１０が複製を持つため、どちらのネットワークでも維持管理することが可能である。例えば、端末１０〜４０上のアプリケーションは、上記したオブジェクト７１０のＩＤからアドレスを解決してオブジェクト７１０と通信することが可能である。
一方、ピア１７０が保持するハッシュ表の複製はピア１８０しか持っていないため、Ｐ２Ｐネットワーク３で構成されるChordリング３００では維持管理することができない。例えば、端末１０〜４０上のアプリケーションは、上記したオブジェクト７００のＩＤからアドレスを解決することができず、オブジェクト７００と通信することができない。
【００１２】
本発明は、上記事情に基づいてなされたものであり、登録元に近いオブジェクトが登録先との接続を監視し、切断を検知したときに再登録を行うことにより、ネットワーク分割が生じた際にも必要な情報を維持管理することのできる、Ｐ２Ｐネットワークシステムにおける分散ハッシュ管理方法および装置を提供することを目的とする。
【課題を解決するための手段】
【００１３】
上記した課題を解決するために本発明は、複数の端末がネットワークを介して接続され、前記それぞれの端末上で動作する第１と第２のピアを含む複数のピアがハッシュ表の一部を保持して管理し、前記ピアが互いに通信して前記ハッシュ表の全体管理を行うと共に、前記ピアのそれぞれが、全てのピアで共通に保持するハッシュ関数と、前記ピアのそれぞれが担当するキーと、前記キーに対する値の組とを保持するハッシュ表と、任意のピアヘメッセージを送信するために必要な他のピアのアドレスとを保持して成る、Ｐ２Ｐネットワークシステムにおける分散ハッシュ表管理方法であって、前記端末上で動作するクライアントが、あるキーと値の組を記憶し、前記クライアントと同一、もしくは他の端末上で動作する第１のピアに対して、前記キーと前記値と前記クライアントと同一の端末上で動作するアダプタのアドレスとを含む登録要求を送信するステップと、前記登録要求を受信した第１のピアが、前記キーにハッシュ関数演算を実行して得られるハッシュ値に対応する第２のピアを決定し、前記決定された第２のピアに対し、前記キーと前記値と前記アダプタのアドレスと前記クライアントのアドレスとを含む登録要求を転送するステップと、前記登録要求を転送された第２のピアが、自身で保持するハッシュ表に前記登録要求に含まれるキーと値の組を追加し、前記登録要求に含まれる前記アダプタのアドレスに対して、前記第２のピア自身のアドレスと前記登録要求に含まれる前記クライアントのアドレスと前記キーとを含む登録先通知を送信するステップと、前記登録先通知を受信した前記アダプタが、前記登録先通知に含まれる前記第２のピアのアドレスと前記クライアントのアドレスと前記キーとを記憶し、前記第２のピアに対して接続確認を行い、切断を検知した場合、前記クライアントに対して前記キーを含む切断通知を送信するステップと、前記切断通知を受信した前記クライアントが、前記通知されたキーについて記憶済みの前記キーと値とを再登録するステップと、を有することを特徴とする。
【００１４】
また、本発明は、複数の端末がネットワークを介して接続され、前記それぞれの端末上で動作する第１〜第３のピアを含む複数のピアがハッシュ表の一部を保持して管理し、前記ピアが互いに通信して前記ハッシュ表の全体管理を行うと共に、前記ピアのそれぞれが、全てのピアで共通に保持するハッシュ関数と、前記ピアのそれぞれが担当するキーと、前記キーに対する値の組とを保持するハッシュ表と、任意のピアヘメッセージを送信するために必要な他のピアのアドレスとを保持して成る、Ｐ２Ｐネットワークシステムにおける分散ハッシュ表管理方法であって、前記端末上で動作するクライアントが、あるキーと値の組を記憶し、前記クライアントと同一、もしくは他の端末上で動作する第１のピアに対して、前記キーと前記値と前記クライアントと同一の端末上で動作するアダプタのアドレスとを含む登録要求を送信するステップと、前記登録要求を受信した第１のピアが、前記キーにハッシュ関数演算を実行して得られるハッシュ値に対応する第２のピアを決定し、前記決定された第２のピアに対し、前記キーと値と前記アダプタのアドレスとを含む登録要求を転送するステップと、前記第１のピアが、前記キーと値とを記憶し、前記キーと、自身のアドレスを含む登録元通知を前記アダプタに送信するステップと、前記登録要求を転送された第２のピアが、自身で保持するハッシュ表に、前記登録要求に含まれるキーと値の組を追加し、前記登録要求に含まれるアダプタに対し、自身のアドレスと前記登録要求に含まれるキーから成る登録先通知を送信するステップと、前記登録元通知を受信したアダプタが、前記登録元通知に含まれるキーと前記第１のピアのアドレスとの組を記憶するステップと、前記登録先通知を受信したアダプタが、前記登録先通知に含まれる前記第２のピアのアドレスとキーとを記憶し、前記第２のピアに対して接続確認を行い、切断を検知した場合には前記キーに対して記憶済みの第１のピアに対して切断通知を送信するステップと、前記切断通知を受信した第１のピアが、前記通知されたキーにハッシュ関数を演算して得られるハッシュ値に対応する第３のピアを決定し、前記第３のピアに対して記憶済みのキーと値の登録要求を送信するステップと、を有することを特徴とする。
【００１５】
また、本発明は、複数の端末がネットワークを介して接続され、前記それぞれの端末上で動作する第１と第２のピアを含む複数のピアがハッシュ表の一部を保持して管理し、前記ピアが互いに通信して前記ハッシュ表の全体管理を行うと共に、前記ピアのそれぞれが、全てのピアで共通に保持するハッシュ関数と、前記ピアのそれぞれが担当するキーと、前記キーに対する値の組とを保持するハッシュ表と、任意のピアヘメッセージを送信するために必要な他のピアのアドレスとを保持して成る、Ｐ２Ｐネットワークシステムにおける分散ハッシュ表管理方法であって、前記端末上で動作するクライアントが、あるキーと値の組を記憶し、前記クライアントと同一、もしくは他の端末上で動作する第１のピアに対して、前記キーと前記値と前記クライアントと同一の端末上で動作するアダプタのアドレスとを含む登録要求を送信するステップと、前記登録要求を受信した第１のピアが、前記キーにハッシュ関数演算を実行して得られるハッシュ値に対応する第２のピアを決定し、前記決定された第２のピアに対し、前記キーと値と前記アダプタのアドレスと、自身のアドレスを含む登録要求を転送すると共に、前記キーと値を記憶するステップと、前記登録要求を転送された第２のピアが、自身で保持するハッシュ表に前記登録要求に含まれる前記キーと値の組を追加し、前記アダプタに対して自身のアドレスと前記登録要求に含まれる前記第１のピアのアドレスとキーから成る登録先通知を送信するステップと、前記当録先通知を受信したアダプタが、前記登録先通知に含まれる前記第１のピアのアドレスと、前記第２のピアのアドレスとキーとを記憶し、前記第２のピアに対して接続確認を行い、切断を検知した場合に前記登録要求に含まれる前記第１のピアに対し、前記キーを含む切断通知を送信するステップと、切断通知を受信した前記第２のピアが、前記通知されたキーに対し、記憶済みのキーと値を再登録するステップと、を有することを特徴とする。
【００１６】
また、本発明は、複数の端末がネットワークを介して接続され、前記それぞれの端末上で動作する第１〜第３のピアを含む複数のピアがハッシュ表の一部を保持して管理し、前記それぞれのピアが互いに通信して前記ハッシュ表の全体管理を行うと共に、前記ピアのそれぞれが、全てのピアで共通に保持するハッシュ関数と、前記ピアのそれぞれが担当するキーと、前記キーに対する値の組とを保持するハッシュ表と、任意のピアヘメッセージを送信するために必要な他のピアのアドレスとを保持して成る、Ｐ２Ｐネットワークシステムにおける分散ハッシュ表管理方法であって、前記端末上で動作するクライアントが、あるキーと値の組を記憶し、前記クライアントと同一、もしくは他の端末上で動作する第１のピアに対して、前記キーと前記値と前記クライアントと同一の端末上で動作するアダプタのアドレスとを含む登録要求を送信するステップと、前記登録要求を受信した第１のピアが、前記キーにハッシュ関数演算を実行して得られるハッシュ値に対応する第２のピアを決定し、前記決定された第２のピアに対し、前記キーと値と前記アダプタのアドレスを含む登録要求を転送するステップと、前記登録要求を転送された第２のピアが、自身で保持するハッシュ表に前記登録要求に含まれるキーと値の組を追加し、前記登録要求に含まれる前記アダプタのアドレスに対し、前記第２のピア自身のアドレスと前記登録要求に含まれるキーと値を含む登録先通知を送信するステップと、前記登録先通知を受信したアダプタが、前記登録先通知に含まれる前記第２のピアのアドレスと前記キーと値を記憶すると共に、前記第２のピアに対して接続確認を行い、切断を検知した場合に、前記記憶したキーと値と自身のアドレスとを含む登録要求を前記キーにハッシュ関数演算を実行して得られるハッシュ値に対応する第３のピアに送信するステップと、を有することを特徴とする。
【００１７】
また、本発明は、複数の端末がネットワークを介して接続され、前記それぞれの端末上で動作する第１と第２のピアを含む複数のピアがハッシュ表の一部を保持して管理し、前記それぞれのピアが互いに通信して前記ハッシュ表の全体管理を行う、Ｐ２Ｐネットワークシステムにおける分散ハッシュ表管理装置であって、全てのピアで共通に保持するハッシュ関数と、前記ピアのそれぞれが担当するキーと、前記キーに対する値の組とを保持するハッシュ表と、任意のピアヘメッセージを送信するために必要な他のピアのアドレスとを保持する記憶手段と、あるキーと値の組を記憶し、自身と同一もしくは他の端末上で動作する第１のピアに対して、前記キーと前記値と自身と同一の端末上で動作するアダプタのアドレスとを含む登録要求を送信する、前記端末上で動作するクライアント機能実行手段と、前記登録要求を受信し、前記キーにハッシュ関数演算を実行して得られるハッシュ値に対応する第２のピアを決定し、前記決定された第２のピアに対して、前記キーと前記値と前記アダプタのアドレスと前記クライアントのアドレスとを含む登録要求を転送するピア機能実行手段と、前記登録要求を転送された第２のピアにより、自身が保持するハッシュ表に前記登録要求に含まれるキーと値の組が追加され、送信される、前記第２のピア自身のアドレスと前記登録要求に含まれる前記クライアントのアドレスと前記キーとを含む登録先通知を受信し、前記登録先通知に含まれる前記第２のピアのアドレスと前記クライアントのアドレスと前記キーとを記憶し、前記第２のピアに対して接続確認を行い、切断を検知した場合、前記クライアントに対して前記キーを含む切断通知を送信するアダプタ機能実行手段とを備え、前記クライアント機能実行手段は、前記アダプタ機能実行手段から前記切断通知を受信し、前記通知されたキーについて既に記憶済みの前記キーと値とを再登録することを特徴とする。
【００１８】
また、本発明は、複数の端末がネットワークを介して接続され、前記それぞれの端末上で動作する第１〜第３のピアを含む複数のピアがハッシュ表の一部を保持して管理し、前記それぞれのピアが互いに通信して前記ハッシュ表の全体管理を行う、Ｐ２Ｐネットワークシステムにおける分散ハッシュ表管理装置であって、全てのピアで共通に保持するハッシュ関数と、前記ピアのそれぞれが担当するキーと、前記キーに対する値の組とを保持するハッシュ表と、任意のピアヘメッセージを送信するために必要な他のピアのアドレスとを保持する記憶手段と、あるキーと値の組を記憶し、自身と同一もしくは他の端末上で動作する第１のピアに対して、前記キーと前記値と自身と同一の端末上で動作するアダプタのアドレスとを含む登録要求を送信する、前記端末上で動作するクライアント機能実行手段と、前記登録要求を受信し、前記キーにハッシュ関数演算を実行して得られるハッシュ値に対応する第２のピアを決定し、前記決定された第２のピアに対し、前記キーと値と前記アダプタのアドレスとを含む登録要求を転送すると共に、前記キーと値とを記憶し、前記記憶されたキーと、自身のアドレスを含む登録元通知を前記アダプタに送信するピア機能実行手段と、前記登録要求を転送された第２のピアにより、自身が保持するハッシュ表に前記登録要求に含まれるキーと値の組が追加され、送信される、前記第２のピア自身のアドレスと前記キーとを含む登録先通知を受信し、前記登録先通知に含まれる前記第２のピアのアドレスとキーとを記憶し、前記第２のピアに対して接続確認を行い、切断を検知した場合に前記キーに対応して記憶済みの第１のピアに対し切断通知を送信するアダプタ機能実行手段とを備え、前記切断通知を受信した第１のピアにおいて、前記通知されたキーにハッシュ関数を演算して得られるハッシュ値に対応する第３のピアが決定され、前記決定された第３のピアに対して記憶済みのキーと値の登録要求が送信されることを特徴とする。
【００１９】
また、本発明は、複数の端末がネットワークを介して接続され、前記それぞれの端末上で動作する第１と第２のピアを含む複数のピアがハッシュ表の一部を保持して管理し、前記それぞれのピアが互いに通信して前記ハッシュ表の全体管理を行う、Ｐ２Ｐネットワークシステムにおける分散ハッシュ表管理装置であって、全てのピアで共通に保持するハッシュ関数と、前記ピアのそれぞれが担当するキーと、前記キーに対する値の組とを保持するハッシュ表と、任意のピアヘメッセージを送信するために必要な他のピアのアドレスとを保持する記憶手段と、あるキーと値の組を記憶し、自身と同一もしくは他の端末上で動作する第１のピアに対して、前記キーと前記値と自身と同一の端末上で動作するアダプタのアドレスとを含む登録要求を送信する、前記端末上で動作するクライアント機能実行手段と、前記登録要求を受信し、前記キーにハッシュ関数を演算して得られるハッシュ値に対応する第２のピアを決定し、前記決定された第２のピアに対し、前記キーと値と前記アダプタのアドレスと、自身のアドレスを含む登録要求を転送すると共に、前記キーと値を記憶するピア機能実行手段と、前記登録要求が転送された第２のピアにより、自身で保持するハッシュ表に前記登録要求に含まれる前記キーと値の組が追加され、送信される、前記第２のピアのアドレスと前記登録要求に含まれる前記第１のピアのアドレスとキーから成る登録先通知を受信し、前記登録先通知に含まれる前記第２のピアのアドレスと、前記登録要求の前記第１のピアのアドレスとキーとを記憶すると共に、前記第２のピアに対して接続確認を行い、切断を検知した場合に前記登録要求に含まれる前記第１のピアに対し、前記キーを含む切断通知を送信するアダプタ機能実行手段とを備え、前記切断通知を受信した前記第２のピアにおいて、前記通知されたキーに対し既に記憶済みのキーと値が再登録されることを特徴とする。
【００２０】
また、本発明は、複数の端末がネットワークを介して接続され、前記それぞれの端末上で動作する第１〜第３のピアを含む複数のピアがハッシュ表の一部を保持して管理し、前記それぞれのピアが互いに通信して前記ハッシュ表の全体管理を行う、Ｐ２Ｐネットワークシステムにおける分散ハッシュ表管理装置であって、全てのピアで共通に保持するハッシュ関数と、前記ピアのそれぞれが担当するキーと、前記キーに対する値の組とを保持するハッシュ表と、任意のピアヘメッセージを送信するために必要な他のピアのアドレスとを保持する記憶手段と、あるキーと値の組を記憶し、自身と同一もしくは他の端末上で動作する第１のピアに対して、前記キーと前記値と自身と同一の端末上で動作するアダプタのアドレスとを含む登録要求を送信する、前記端末上で動作するクライアント機能実行手段と、前記登録要求を受信し、前記キーにハッシュ関数演算を実行して得られるハッシュ値に対応する第２のピアを決定し、前記決定された第２のピアに対し、前記キーと値と前記アダプタのアドレスを含む登録要求を転送するピア機能実行手段と、前記登録要求が転送された第２のピアにおいて、自身で保持するハッシュ表に前記登録要求に含まれるキーと値の組が追加され、送信される、前記第２のピア自身のアドレスと前記登録要求に含まれるキーと値を含む登録先通知を受信し、前記登録先通知に含まれる前記第２のピアのアドレスとキーと値を記憶すると共に、前記第２のピアに対して接続確認を行い、切断を検知した場合に、前記記憶したキーと値と自身のアドレスとを含む登録要求を前記キーにハッシュ関数演算を実行して得られるハッシュ値に対応する第３のピアに送信するアダプタ手段と、を備えたことを特徴とする。
【発明の効果】
【００２１】
本発明によれば、Ｐ２Ｐネットワーク内に分散配置されたそれぞれのピアが分散ハッシュ表を管理する場合に、ピアとの接続を監視するアダプタ（機能実行手段）を新設し、（１）アダプタがピアとの切断を検知したときにクライアントに対して切断を通知し、通知を受けたクライアントが再登録を行う、（２）ピアに切断を通知し、通知を受けたピアが再登録を行う、（３）アダプタ自身が再登録を行う、のいずれか一つを実行することで、ネットワーク分割が生じた場合にも分割後のネットワークで構成される分散ハッシュ表により必要な情報を維持管理することを可能にする。
【００２２】
このことにより、ネットワークトポロジが変化しても登録した情報の検索が可能となり、分散ハッシュ表を用いることでＰ２Ｐネットワークにおけるルーティングの高速化を実現できる。
本発明は、特に、分割が発生するネットワークで分散ハッシュ表を利用してある端末上のオブジェクトのＩＤとアドレスの組を登録する場合に、ネットワーク分割時にも分散ハッシユ表を利用して同じネットワークに存在するオブジェクトのＩＤからそのオブジェクトのアドレスを確実に解決した場合に顕著な効果が得られる。
【発明を実施するための最良の形態】
【００２３】
以下、本発明実施形態にかかわる分散ハッシュ管理方法および装置について、図１〜図７を参照しながら詳細に説明する。
【００２４】
図１は、本発明実施形態にかかわる分散ハッシュ管理装置を含むＰ２Ｐネットワークシステムのシステム構成の一例を示す図である。
図１に示されるように、Ｐ２Ｐネットワークシステムは、端末１０〜８０が無線リンクを介して接続されており、互いに通信が可能である。各端末１０〜８０のそれぞれでは、オブジェクト、ならびに分散ハッシュ表を管理するオブジェクトであるピアと、分散ハッシュ表のクライアントであるアプリケーションの他に、本発明により付加されるアダプタとが動作している。なお、比較対照の意味で図１５に従来における端末２０のオブジェクトを示す。アダプタは、後述するように他の端末１０〜８０上で動作するピアとの接続性を監視し、当該ピアの切断が検知されたときにクライアント（アプリケーション５２０、５２５）に対して切断を通知し、自身がキーの再登録を行うか、もしくはクライアントか通知を受けたピアに対して再登録を行わせる機能を持つ。
また、各端末１０〜８０上のピアはＰ２Ｐネットワーク１を通して互いに通信可能である。
【００２５】
具体的に、端末２０上では、ピア１２０と、分散ハッシュ表のクライアントであるアプリケーション５２０、５２５と、オブジェクト７００、７１０、７２０と、アダプタ８２０が示されている。
なお、本発明の分散ハッシュ表管理装置は、端末１０〜８０のそれぞれに実装され、また、上記したピア１２０、クライアント（アプリケーション５２０、５２５）、アダプタ８２０のそれぞれは、いずれも端末２０上で動作するプログラムであり、端末２０に実装されるＣＰＵがそのプログラムを逐次読み出し実行することにより、請求項に示す、ピア機能実行手段、クライアント機能実行手段、アダプタ機能実行手段のそれぞれとして機能する。
【００２６】
（第１の実施形態）
図２は、本発明の第１の実施形態にかかわる分散ハッシュ表管理装置の動作を説明するために引用した動作シーケンス図である。
以下、図２に示す動作シーケンス図を参照しながら本発明の第１の実施形態にかかわる分散ハッシュ表管理装置の動作について詳細に説明する。ここでは、本発明の分散ハッシュ表管理装置として端末２０が例示されており、当該端末２０上でアダプタ８２０、ピア１２０、アプリケーション５２０、５２５、そして、オブジェクト７００、７１０、７２０が動作するものとする。また、ここでは、Chordリングを用いて分散管理表を管理することとし、アプリケーション５２０がオブジェクト７１０のＩＤをキーに、アドレスを値にして、また、アプリケーション５２５がオブジェクト７２０のＩＤをキーに、アドレスを値にして登録する場合のシーケンスを示した。
【００２７】
アプリケーション５２０とアプリケーション５２５は、何らかの形でアダプタ８２０のアドレスおよびピア１２０のアドレスを知っているものとする。例えば、ユーザがキーボードから入力して通知しても良い。
まず、アプリケーション５２０はピア１２０にオブジェクト７１０のＩＤをキーに、アドレスを値にした登録要求を送信する（Ｓ９００）。この時、アダプタ８２０のアドレスも登録要求に含める。ピア１２０は、オブジェクト７１０のＩＤにハッシュ関数を適用（ハッシュ演算）し、登録要求の転送先を決定する。ここでは、ピア１７０に決定されたものとし、ピア１２０は、アプリケーション５２０のアドレスとオブジェクト７１０のＩＤとアドレスとアダプタ８２０のアドレスを含んだ登録要求をピア１７０に転送する（S９０２）。
【００２８】
ピア１７０は、登録要求に含まれたオブジェクト７１０のＩＤとアドレスの組を自身のハッシュ表に登録するとともに、アプリケーション５２０のアドレスとピア１７０のアドレスとオブジェクト７１０のＩＤを含んだ登録先通知をアダプタ８２０へ送信する（Ｓ９０４）。
アダプタ８２０は、ピア１７０のアドレスとアプリケーション５２０のアドレスとオブジェクト７１０のＩＤの組を記憶しておく。その後、アダプタ８２０は、一定時間ごとに接続確認をピア１７０に対して送信するとともに（Ｓ９０６）、タイマを設定する（Ｓ９０８）。ピア１７０が接続確認を受け取ると、接続応答を返送する（Ｓ９１０）。アダプタ        ８２０は，タイマがタイムアウトする前に接続応答を受信した場合、ピア１７０に接続していると判断する。
【００２９】
次に、アプリケーション５２５がピア１２０にオブジェクト７２０のＩＤをキーに、アドレスを値にした登録要求を送信する（Ｓ９０１）。この時、アダプタ８２０のアドレスも登録要求に含める。ピア１２０は、オブジェクト７２０のＩＤにハッシュ関数を適用し、登録要求の転送先を決定する。
ここでは、ピア１７０に決定されたものとし、ピア１２０はアプリケーション５２５のアドレスとオブジェクト７２０のＩＤとアドレスとアダプタ８２０のアドレスを含む登録要求をピア１７０に転送する（Ｓ９０３）。
【００３０】
ピア１７０は、登録要求に含まれたオブジェクト７２０のＩＤとアドレスの組を自身のハッシュ表に登録するとともに、アプリケーション５２５のアドレスとピア１７０のアドレスとオブジェクト７２０のＩＤを含む登録先通知をアダプタ８２０へ送信する（Ｓ９０５）。
アダプタ８２０は、既にピア１７０のアドレスを記憶しているため、ピア１７０のアドレスに対してアプリケーション５２５のアドレスとオブジェクト７２０のＩＤの組を追加して記憶しておく。図３に、このとき、アダプタ８２０が保持するテーブルのデータ構造の一例を示す。
【００３１】
図３において、上記したテーブルは、登録先ピア管理表１０００と、登録元情報管理表１０１０から成り、端末１０〜８０のそれぞれに実装される記憶装置（請求項に示す記憶部）に割り付けられ記憶される。
アダプタ８２０は、登録先ピア管理表１０００において、自身が受信した登縁先通知の送信元ピアのアドレスと、そのピアに対する登録元情報管理表へのポインタを記憶する。例えば、一つのエントリとしてピア１７０のアドレスと登録元情報管理表１０１０へのポインタが記憶されている。登録元情報管理表１０１０には、ピア１７０へ転送された登録要求の送信元とキーであるアプリケーション５２０とオブジェクト７１０のＩＤ、およびアプリケーション５２５とオブジェクト７２０のＩＤが記憶されている。
【００３２】
次に、図１６に示したようにネットワークが分割されたとする。その後、アダプタ８２０は、接続確認を送信するとともに（Ｓ９１２）、タイマを設定するが（Ｓ９１４）、接続確認はピア１７０に届かないため、接続応答を受け取る前にタイマがタイムアウトし（Ｓ９１６）、アダプタ８２０は、ピア１７０との接続が切断されたと判断する。
なお、タイムアウトした場合に接続応答を何度か再送し、何度か連続してタイムアウトした場合に初めて切断と判断しても良い。また、アダプタ８２０が定期的に接続確認を送信するのではなく、登録先通知を送ったピア１７０が定期的に接続確認をアダプタ８２０に送信しても良い。アダプタ８２０は、登録先通知を受信した際に送信元ピアのアドレスを覚えておき、一定時間内に送信元ピア１７０から接続確認を受信しないことが何度か続いたら、送信元ピア１７０との接続が切断されたと判断する。
【００３３】
ピア１７０との切断を検知したアダプタ８２０は、登録先ピア管理表１０００を辿って登録元情報管理表１０１０を検索し、そこに記憶したエントリから、オブジェクト７１０のＩＤを含んだ切断通知をアプリケーション５２０に、オブジェクト７２０のＩＤを含んだ切断通知をアプリケーション５２５に、それぞれ送信する（Ｓ９１８、Ｓ９１９）。
アプリケーション５２０は再びピア１２０にオブジェクト７１０のＩＤをキーに、アドレスを値にした登録要求を送信する（Ｓ９２０）。このとき、ピア１２０は、オブジェクト７１０のＩＤにハッシュ関数を適用し、登録要求の転送先を決定する。
【００３４】
ここでは、ネットワーク分割後はピア１１０に決定されるものとし、ピア１２０は、オブジェクト７１０のＩＤとアドレスとアプリケーション５２０のアドレスとアダプタ８２０のアドレスを含んだ登録要求をピア１１０に転送する（Ｓ９２２）。ピア１１０がこの登録要求に含まれるオブジェクト７１０のＩＤとアドレスの組を自身のハッシュ表に登録するとともに、ピア１１０のアドレスとアプリケーション５２０のアドレスとオブジェクト７１０のＩＤを含んだ登録先通知をアダプタ８２０へ送信する（Ｓ９２４）。
【００３５】
一方、アプリケーション５２５も再びピア１２０にオブジェクト７２０のＩＤをキーに、アドレスを値にした登録要求を送信する（Ｓ９３０）。ピア１２０は、オブジェクト７２０のＩＤにハッシュ関数を適用し、登録要求の転送先を決定する。
ここではネットワーク分割後はピア１１０に決定されるものとし、ピア１２０は、オブジェクト７２０のＩＤとアドレスとアプリケーション５２５のアドレスとアダプタ８２０のアドレスを含んだ登録要求をピア110に転送する（Ｓ９３２）。ピア１１０が登録要求に含まれたオブジェクト７２０のＩＤとアドレスの組を自身のハッシュ表に登録するとともに、ピア１２０のアドレスとアプリケーション５２５のアドレスとオブジェクト７２０のＩＤを含んだ登録先通知をアダプタ８２０へ送信し（Ｓ９３４）、以降は上記と同様の処理を続ける。
【００３６】
（第２、第３の実施形態）
図４は、本発明の第２、第３の実施形態にかかわる分散ハッシュ表管理装置の動作を説明するために引用した動作シーケンス図である。
以下、図４に示す動作シーケンス図を参照しながら本発明の第２、第３の実施形態にかかわる分散ハッシュ表管理装置の動作について詳細に説明する。ここで説明する本発明実施形態においてもChordに適用し、アプリケーション５２０がオブジェクト７１０のＩＤをキーに、アドレスを値にして登録する場合のシーケンスを示した。
【００３７】
まず、アプリケーション５２０は、何らかの形でアダプタ８２０のアドレスおよびピア１２０のアドレスを知っているものとする。例えば、ユーザがキーボードから人力して通知しても良い。
アプリケーション５２０は、ピア１２０にオブジェクト７１０のＩＤをキーに、アドレスを値にした登録要求を送信する（Ｓ９５０）。この時、アダプタ８２０のアドレスも登録要求に含める。
ピア１２０は、オブジェクト７１０のＩＤにハッシュ関数を適用し、登録要求の転送先を決定する。ここでは、ピア１７０に決定されたものとし、ピア１２０は、オブジェクト７１０のＩＤとアドレスとアダプタ８２０のアドレスを含んだ登録要求をピア１７０に転送する（Ｓ９５２）。
【００３８】
次に、ピア１２０は、オブジェクト７１０のＩＤとアドレスの組を記憶しておく。更に、ピア１２０は、オブジェクト７１０のＩＤとピア１２０のアドレスを含んだ登録元通知をアダプタ８２０に送信する（Ｓ９５４）。なお、第３の実施形態の場合は、ステップＳ９５２の登録要求にピア１２０のアドレスも含め、登録元通知の送信は行わない。
ピア１７０は、登録要求に含まれたオブジェクト７１０のＩＤとアドレスの組を自身のハッシュ表に登録するとともに、ピア１７０のアドレスとオブジェクト７１０のＩＤを含んだ登録先通知をアダプタ８２０へ送信する（Ｓ９５６）。なお、第３の実施形態の場合は、ステップＳ９５６の登録先通知にピア１２０のアドレスも含める。
【００３９】
続いて、アダプタ８２０は、ピア１２０から送信された登録元通知を受信し（Ｓ９５４）、この登録元通知に含まれるオブジェクト７１０のＩＤとピア１２０のアドレスの組を記憶しておく。ここで、第２の実施形態の場合は、ステップＳ９５４の登録元通知の送信は行われない。
アダプタ８２０は、ピア１７０から送信された登録先通知に含まれるピア１７０のアドレスを記憶する（Ｓ９５６）。なお、第３の実施形態の場合、Ｓ９５６において登録先通知に含まれるオブジェクト７１０のＩＤから先に記憶したオブジェクト７１０のＩＤと、ピア１２０のアドレスの組と関連付けておく。なお、第３の実施形態の場合、Ｓ９５６における登録先通知には、オブジェクト７１０のＩＤとピア１７０のアドレスとピア１２０のアドレスが含まれているため、これらを関連付けておく。
【００４０】
図５は、上記した第２、第３の実施形態にかかわるアダプタ８２０が保持するテーブルのデータ構造の一例を示す。
図５において、上記したテーブルは、登録先ピア管理表１０００と、登録元情報管理表１０２０から成り、端末１０〜８０のそれぞれに実装される記憶装置（請求項に示す記憶部）に割り付けられ記憶される。例えば、アダプタ８２０は、登録先ピア管理表１０００のピア１７０に関するエントリからポインタが設定された登録元情報管理表１０３０において、オブジェクト７１０のＩＤとピア１２０のアドレスを記憶しておく。
その後、アダプタ８２０は一定時間ごとに接続確認をピア１７０に送信するとともにタイマを設定する（Ｓ９５８、Ｓ９６０）。ピア１７０が接続確認を受け取ると接続応答を返送する（Ｓ９６２）。アダプタ８２０は、タイマがタイムアウトする前に接続応答を受信した場合はピア１７０と接続していると判断する。
【００４１】
次に、図１６に示されるようにネットワークが分割されたとする。その後、アダプタ８２０は、接続確認を送信するとともに（Ｓ９６４）、タイマを設定するが（Ｓ９６６）、接続確認はピア１７０に届かないため、接続応答を受け取る前にタイマがタイムアウトし（Ｓ９６８）、アダプタ８２０は、ピア１７０との接続が切断されたと判断する。
【００４２】
ピア１７０との切断を検知したアダプタ８２０は、登録先ピア管理表１０００を辿って登録元情報管理表１０２０を検索し、そこに記憶したエントリから、オブジェクト７１０のＩＤを含んだ切断通知をピア１２０に送信する（Ｓ９７０）。
ピア１２０は、切断通知に含まれたオブジェクト７１０のＩＤから、以前に記憶したオブジェクト７１０のＩＤとアドレスの組を取り出し、オブジェクト７１０のＩＤにハッシュ関数を適用し、登録要求の転送先を決定する。
【００４３】
第２の実施形態によれば、ネットワーク分割後はピア１１０に決定されるものとし、ピア１２０は、オブジェクト７１０のＩＤとアドレスとを含む登録要求をピア１１０に送信する（Ｓ９７２）。この時にピア１２０がアダプタ８２０にピア１２０のアドレスとオブジェクト７１０のＩＤを含んだ登録元通知を送信しても良い。
なお、第３の実施形態によれば、ステップＳ９７２において登録要求にピア１２０のアドレスも含める。
【００４４】
一方、登録要求を受信したピア１１０は、当該登録要求に含まれたオブジェクト７１０のＩＤとアドレスの組を自身のハッシュ表に登録するとともに、ピア１１０のアドレスとオブジェクト７１０のＩＤを含む登録先通知をアダプタ８２０へ送信する（Ｓ９７４）。なお、第３の実施形態によれば、ステップＳ９７４における登録先通知にピア１２０のアドレスも含める。以降は上記と同様の処理を続ける。
【００４５】
（第４の実施形態）
図６は、本発明の第４の実施形態にかかわる分散ハッシュ表管理装置の動作を説明するために引用した動作シーケンス図である。
以下、図６に示す動作シーケンス図を参照しながら本発明の第４の実施形態にかかわる分散ハッシュ表管理装置の動作について詳細に説明する。ここで説明する本発明実施形態においてもChordに適用した場合において、アプリケーション５２０がオブジェクト７１０のＩＤをキーに、アドレスを値にして登録する場合のシーケンスを示した。
【００４６】
まず、アプリケーション５２０は、何らかの形でアダプタ８２０のアドレスを知っており、また、アダプタ８２０は、何らかの形でピア１２０のアドレスを知っているものとする。例えば、ユーザがキーボードから入力して通知しても良い。
アプリケーション５２０は、ピア１２０にオブジェクト７１０のＩＤをキーに、アドレスを値にした登録要求を送信する（Ｓ１０５０）。この時、アダプタ８２０のアドレスも登録要求に含める。ピア１２０は、オブジェクト７１０のＩＤにハッシュ関数を適用し、登録要求の転送先を決定する。本実施形態によれば、ピア１７０に決定されたものとし、ピア１２０はオブジェクト７１０のＩＤとアドレスとアダプタ８２０のアドレスを含んだ登録要求をピア１７０に転送する（Ｓ１０５２）。
【００４７】
ピア１７０は、登録要求に含まれたオブジェクト７１０のＩＤとアドレスの組を自身のハッシュ表に登録するとともに、ピア１７０のアドレスとオブジェクト７１０のＩＤとアドレスを含んだ登録先通知をアダプタ８２０へ送信する（Ｓ１０５６）。
アダプタ８２０は、ピア１７０から送信された登録先通知に含まれたピア１７０のアドレスとオブジェクト７１０のＩＤとアドレスを関連付けて記憶しておく。
【００４８】
図７は、上記した第４の実施形態にかかわるアダプタ８２０が保持するテーブルのデータ構造の一例を示す。
図７において、上記したテーブルは、登録先ピア管理表１０００と、登録情報管理表１０３０から成り、端末１０〜８０のそれぞれに実装される記憶装置（請求項に示す記憶部）に割り付けられ記憶される。例えば、アダプタ８２０は、登録先ビア管理表１０００のピア１７０に関するエントリからポインタが設定された登録情報管理表１０３０において、オブジェクト７１０のＩＤとアドレスの組を記憶しておく。その後、アダプタ８２０は、一定時間ごとに接続確認をピア１７０に送信するとともに（Ｓ１０５８）、タイマを設定する（Ｓ１０６０）。
ピア１７０が接続確認を受け取ると（Ｓ１０５８）、接続応答を返送する（Ｓ１０６２）。アダプタ８２０は、タイマがタイムアウトする前に接続応答を受信した場合は、ピア１７０と接続していると判断する。
【００４９】
次に、図1６に示されるようにネットワークが分割されたとする。その後、アダプタ８２０は、接続確認を送信するとともに（Ｓ１０６４）、タイマを設定するが（Ｓ１０６６）、上記した接続確認はピア１７０に届かないため、接続応答を受け取る前にタイマがタイムアウトし（Ｓ１０６８）、アダプタ８２０は、ピア１７０との接続が切断されたと判断する。
ピア１７０との切断を検知したアダプタ８２０は、登録先ピア管理表１０００を辿って登録情報管理表１０３０を検索し、そこに記憶したエントリから、オブジェクト７１０のＩＤとアドレスとアダプタ８２０のアドレスを含んだ登録要求をピア１２０に送信する（Ｓ１０７０）。
【００５０】
ピア１２０は、登録要求に含まれるオブジェクト７１０のＩＤにハッシュ関数を適用し、登録要求の転送先を決定する。ここでは、ネットワーク分割後はピア１１０に決定されるものとし、ピア１２０は、オブジェクト７１０のＩＤとアドレスとアダプタ８２０のアドレスを含んだ登録要求をピア１１０に送信する（Ｓ１０７２）。
登録要求受信したピア１１０は、登録要求に含まれたオブジェクト７１０のＩＤとアドレスの組を自身のハッシュ表に登録するとともに、オブジェクト７１０のＩＤとアドレスを含んだ登録先通知をアダプタ８２０へ送信する（Ｓ１０７４）。以降は、上記と同様の処理を続ける。
【００５１】
なお、上記した第１〜第４の実施形態によれば、アダプタ８２０とクライアント（アプリケーション５２０）を別のプログラムモジュールとして説明したが、一個のプログラムに実装しても良い。また、アダプタ８２０とピア１２０を一個のプログラムに実装しても良い。更に、クライアントごとに異なるアダプタ８２０を利用しても良い。
【００５２】
以上説明のように本発明によれば、あるクライアントが分散ハッシュに登録した場合に、登録先ピアからアダプタに登録先通知が送信され、その後アダプタが接続を確認する。そして、ネットワークが分割されて登録先との通信ができなくなった場合に、（１）アダプタがそのことを検出してクライアントに通知し、クライアントが再登録を行う（実施形態１）、（２）ピアに通知してピアが再登録を行う（実施形態２、３）、（３）アダプタ８２０自身が再登録を行う（実施形態４)、のうちのいずれかを実行することで、分割後のネットワーク上で構成される分散ハッシュ表に正しく登録され、分割後のネットワーク上で必要な情報を維持管理することを実現するものである。
従って、本発明は、分割が発生するネットワークで分散ハッシュ表を利用してある端末上のオブジェクトのＩＤとアドレスの組を登録する場合に、ネットワーク分割時にも分散ハッシュ表を利用して同じネットワークに存在するオブジェクトのＩＤからそのオブジェクトのアドレスを確実に解決したい場合に効果が得られる。
【００５３】
なお、上記した、クライアント機能実行手段（アプリケーション５２０、５２５）と、ピア機能実行手段（１２０）と、アダプタ機能実行手段（８２０）のそれぞれで実行される手順をコンピュータ読取り可能な記録媒体に記録し、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによって本発明の分散ハッシュ表管理装置が実現されるものとする。ここでいうコンピュータシステムとは、ＯＳや周辺機器等のハードウェアを含むものである。
【００５４】
また、「コンピュータシステム」は、ＷＷＷシステムを利用している場合であれば、ホームページ提供環境（あるいは表示環境）も含むものとする。
また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことをいう。
また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル（差分プログラム）であっても良い。
【００５５】
以上、この発明の実施形態につき、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【図面の簡単な説明】
【００５６】
【図１】本発明実施形態にかかわる分散ハッシュ管理装置を含むＰ２Ｐネットワークシステムのシステム構成の一例を示す図である。
【図２】本発明の第１の実施形態にかかわる分散ハッシュ表管理装置の動作を説明するために引用した動作シーケンス図である。
【図３】本発明の第１の実施形態においてアダプタが保持するテーブルのデータ構造の一例を示す図である。
【図４】本発明の第２、第３の実施形態にかかわる分散ハッシュ表管理装置の動作を説明するために引用した動作シーケンス図である。
【図５】本発明の第２、第３の実施形態においてアダプタが保持するテーブルのデータ構造の一例を示す図である。
【図６】本発明の第４の実施形態にかかわる分散ハッシュ表管理装置の動作を説明するために引用した動作シーケンス図である。
【図７】本発明の第４の実施形態においてアダプタが保持するテーブルのデータ構造の一例を示す図である。
【図８】従来技術におけるＰ２Ｐネットワークシステムの一例を示す図である。
【図９】従来技術における端末上のオブジェクトを示す図である。
【図１０】従来技術におけるChordリングの一例を示す図である。
【図１１】従来技術におけるChordリング場でのピアの関係を示す図である。
【図１２】従来技術におけるピアが保持する情報を示す図である。
【図１３】端末が離脱した際のネットワーク構成の一例を示す図である。
【図１４】端末が離脱した際のChordリングの一例を示す図である。
【図１５】従来技術における端末上のオブジェクトを示す図である。
【図１６】ネットワークが分割された際のネットワーク構成の一例を示す図である。.
【図１７】ネットワーク分割時のChordリングの一例を示す図である。
【符号の説明】
【００５７】
１０〜８０…端末、１２０…ピア（ピア機能実行手段）、５２０、５２５…アプリケーション（クライアント機能実行手段）、７００、７１０、７２０…オブジェクト、８２０…アダプタ（アダプタ機能実行手段）、１０００…登録先ビア管理表（記憶手段）、１０１０、１０２０…登録元情報管理表（記憶手段）、１０３０…登録情報管理表（記憶手段）
【図１】
2006246225.tif 000003
【図２】
2006246225.tif 000004
【図３】
2006246225.tif 000005
【図４】
2006246225.tif 000006
【図５】
2006246225.tif 000007
【図６】
2006246225.tif 000008
【図７】
2006246225.tif 000009
【図８】
2006246225.tif 000010
【図９】
2006246225.tif 000011
【図１０】
2006246225.tif 000012
【図１１】
2006246225.tif 000013
【図１２】
2006246225.tif 000014
【図１３】
2006246225.tif 000015
【図１４】
2006246225.tif 000016
【図１５】
2006246225.tif 000017
【図１６】
2006246225.tif 000018
【図１７】
2006246225.tif 000019