(57)【要約】【課題】  モビリティチャーンを処理するための改善された方法を提供する。【解決手段】  各ノードが自己のＩＰアドレスを変更可能な構造化ピアツーピアシステムにおいてモビリティチャーンを処理するための方法であって、変更され得るＩＰアドレスと、変更されることのない一意なネーミング識別子とにより、前記ピアツーピアシステム内のノードを特定するステップと、各ノードの一意なネーミング識別子に基づいて、前記構造化ピアツーピアシステムにおける各ノードの位置を各ノードに対して割り当てるステップと、前記ノードが前記ピアツーピアシステムを一時的に離脱した後に戻った場合、前記構造化ピアツーピアシステム内の自己の位置に戻り、前記ピアツーピアシステム内のメンバに対して該ノードの新たなＩＰアドレスを通知するステップと  を含む方法。【選択図】  図４Ｂ
2007174672.tif 000002
【特許請求の範囲】
【請求項１】
あるノードが自己のＩＰアドレスを変更可能な構造化ピアツーピアシステムにおいてモビリティチャーンを処理するための方法であって、
変更され得るＩＰアドレスと、変更されることのない一意なネーミング識別子とにより、前記ピアツーピアシステム内の各ノードを特定するステップと、
各ノードの一意なネーミング識別子に基づいて、前記構造化ピアツーピアシステムにおける各ノードの位置を各ノードに対して割り当てるステップと、
あるノードが前記ピアツーピアシステムを一時的に離脱した後に前記ピアツーピアシステムに戻る場合、前記構造化ピアツーピアシステム内の自己の位置に戻り、前記ピアツーピアシステム内のメンバノードに対して該ノードの新たなＩＰアドレスを通知するステップと、
前記ピアツーピアシステム内の他のノードに対して、システムに戻った前記ノードのアドレス変更についての通知の送信が完了するまで、該ノードを指し示すフィンガーテーブル内のエントリの使用をサスペンドするよう通知するステップと
を含む方法。
【請求項２】
あるノードがそのＩＰアドレスの変更により前記構造化ピアツーピアシステムから離脱する場合に、タイマーを所定の時間にセットするステップと、
前記所定の時間内に前記ノードが前記ピアツーピアシステムに戻る場合、前記構造化ピアツーピアシステム内の自己の位置に戻り、前記ピアツーピアシステム内のメンバノードに対して前記ノードの新たなＩＰアドレスを通知するステップと
を更に含む請求項１に記載の方法。
【請求項３】
前記ノードにアクセスしたノードを記録するアクセスログテーブルを管理するステップと、
前記ピアツーピアシステムを離脱した前記ノードが前記システムに戻った場合に、前記アクセスログテーブル内のノードに対して、前記戻ったノードの新たなＩＰアドレスを通知するステップと
を更に含む請求項１または２に記載の方法。
【請求項４】
前記アクセスログテーブルは、前記離脱したノードにアクセスした全てのノードと、自己のフィンガーテーブル内に前記離脱したノードを有する全てのノードとを含むものである、請求項１〜３のいずれか一項に記載の方法。
【請求項５】
離脱するノードに保存されているキーを別のノードへと複製するステップと、
前記キーを対象とするクエリに対して、前記キーが複製されたノードが補助的に応答するステップと
を更に含む請求項１〜４のいずれか一項に記載の方法。
【請求項６】
ノードＢのプレデセサがノードＡであり、ノードＢのサクセサがノードＣである場合に、
前記ノードＢのキーを前記ノードＣへ複製し、前記ノードＣが、複製されたキーに対するセカンダリキーハンドラとして機能することを前記ノードＣに通知するステップと、
前記ノードＢが前記システムを離脱している間、前記ノードＣ内のキーを対象とするクエリに対して前記ノードＡが前記ノードＣの受信アクセスハンドラであることを前記ノードＡに通知するステップと
を更に含む請求項１〜５のいずれか一項に記載の方法。
【請求項７】
前記キーは、クエリを行ったノードが離脱したノードの代わりに通信する１つ以上のノードのアドレスを含んだ値を伴うものである、請求項５または６に記載の方法。
【請求項８】
あるノードが自己のＩＰアドレスを変更可能な構造化ピアツーピアシステムにおいてモビリティチャーンを処理するための装置であって、
変更され得るＩＰアドレスと、変更されることのない一意なネーミング識別子とにより、前記ピアツーピアシステム内の各ノードを特定する特定ユニットと、
各ノードの一意なネーミング識別子に基づいて、前記構造化ピアツーピアシステムにおける各ノードの位置を各ノードに対して割り当てる割り当てユニットと、
あるノードが前記ピアツーピアシステムを一時的に離脱した後に前記ピアツーピアシステムに戻る場合、前記構造化ピアツーピアシステム内の自己の位置に戻ることを可能にし、前記ピアツーピアシステム内のメンバノードに対して該ノードの新たなＩＰアドレスを通知するリターンユニットと、
前記ピアツーピアシステム内の他のノードに対して、システムに戻った前記ノードのアドレス変更についての通知の送信が完了するまで、該ノードを指し示すフィンガーテーブル内のエントリの使用をサスペンドするよう通知する通知ユニットと
を備える装置。
【請求項９】
あるノードが自己のＩＰアドレスの変更を理由にシステムから離脱する場合に、タイマーを所定の時間にセットするタイミングユニットを更に備え、
前記リターンユニットは、前記所定の時間内に前記ノードがシステムに戻る場合、前記構造化ピアツーピアシステム内における自己の位置に戻ることを可能にし、前記ピアツーピアシステム内のメンバノードに対し前記ノードの新たなＩＰアドレスを通知するものである、
請求項８に記載の装置。
【請求項１０】
前記ノードにアクセスしたノードを記録するアクセスログテーブルを管理する管理ユニットと、
前記ピアツーピアシステムを離脱した前記ノードが前記システムに戻る場合に、前記アクセスログテーブル内のノードに対して、前記戻ったノードの新たなＩＰアドレスを通知する通知ユニットと
を更に備える請求項８または９に記載の装置。
【請求項１１】
前記アクセスログテーブルは、離脱した前記ノードにアクセスした全てのノードと、離脱した前記ノードを自己のフィンガーテーブル内に有する全てのノードとを含むものである、請求項８〜１０のいずれか一項に記載の装置。
【請求項１２】
前記ノードに保存されているキーを、前記キーを対象とするクエリに対して補助的に応答する別のノードへと複製する複製ユニットを更に備える請求項８〜１１のいずれか一項に記載の装置。
【請求項１３】
ノードＢのプレデセサがノードＡであり、ノードＢのサクセサがノードＣである場合に、
前記ノードＢのキーを前記ノードＣへ複製し、前記ノードＣが、複製されたキーに対するセカンダリキーハンドラとして機能することを前記ノードＣに通知する複製ユニットと、
前記ノードＢが前記システムを離脱している間、前記ノードＣ内のキーを対象とするクエリに対して、前記ノードＡが前記ノードＣの受信アクセスハンドラとして機能することを前記ノードＡに通知する通知ユニットと
を更に備える請求項８〜１２のいずれか一項に記載の装置。
【請求項１４】
前記キーは、クエリを行ったノードが離脱したノードの代わりに通信する１つ以上のノードのアドレスを含んだ値を伴うものである、請求項８〜１４のいずれか一項に記載の装置。
【請求項１５】
コンピュータ上で、請求項１〜７のいずれか一項に記載の方法を実行可能にするコンピュータ実行可能なコードを含むコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ピアツーピアルックアップシステム、特に構造化ピアツーピアルックアップシステムに対するモビリティチャーン（離脱）処理（ｍｏｂｉｌｉｔｙ  ｃｈｕｒｎ  ｈａｎｄｌｉｎｇ）のための方法および装置に関する。
【背景技術】
【０００２】
ピアツーピアルックアップシステムは、あるオブジェクトのキーに基づいて該オブジェクトの位置を解決するための分散型システムである。構造化ピアツーピアルックアップシステムは、オーバーレイトポロジーおよびデータ配置が厳重に制御されたピアツーピアルックアップシステムである。この構造化ピアツーピアルックアップシステムは、Ｃｈｏｒｄという名前のシステムとして既に実現されており、非特許文献１に記載されている。
【０００３】
以下、図１を参照して、Ｃｈｏｒｄなどの構造化ピアツーピアルックアップシステムの基本的な動作について説明する。
【０００４】
図１は、ノードＮ１〜Ｎ５１から成るリング型ネットワークを示している。ここで各ノードは、２つの近傍、つまりプレデセサ（ｐｒｅｄｅｃｅｓｓｏｒ）とサクセサ（ｓｕｃｃｅｓｓｏｒ）とを有している。Ｃｈｏｒｄは、オブジェクトを検索するためにいわゆる分散ハッシュテーブル（ＤＨＴ：ｄｉｓｔｒｉｂｕｔｅｄ  ｈａｓｈ  ｔａｂｌｅ）を利用する。このため各オブジェクトは、キーと呼ばれるｍビットの識別子が割り当てられる。このキーは、ＳＨＡ−１などのハッシュ関数によって構成されるとｍビットの識別子となる。さらに、リング内の各ノードのＩＰアドレスも、同様にハッシュ関数によって構成される、対応するｍビットの識別子を有する。ハッシュ関数は、ＩＰアドレスを対応するｍビットの識別子へと変換し、ノード識別子を構成する。オブジェクトは（キー、値）のペアによって特定される。ここで、キーはオブジェクトの識別子であり、値は、該オブジェクトが位置するノードのＩＰアドレスである。Ｃｈｏｒｄリング内にシステマティックに分散している、これら（キー、値）のペアにより、オブジェクトが検索される。識別子の長さがｍであるとすると、識別子は識別子円において２mを法として順序付けがなされる。
【０００５】
（キー、値）のペアの分散化は、以下のように実行される。各ノードは、該ノードの識別子とそのプレデセサの識別子との間の範囲内にあるキーを受け持つ。言い換えると、あるノードは、そのプレデセサのノード識別子よりも大きく、かつ最大でも該ノードのノード識別子と同じ大きさのキーを伴った（キー、値）のペアが割り当てられる。この様子を図１に概略的に示している。この図によれば、識別子５１を有するノード（ノードＮ５１）は、キーＫ４９とＫ５０とＫ５１とを受け持つことがわかる。
【０００６】
サーチリクエストを発行することによりあるオブジェクトを検索する場合、該オブジェクトが保存されているノードを見つける必要がある。そのため、該オブジェクトに対応する（キー、値）のペアが保存されているノードを検索する必要がある。これは、サーチリクエストをリング内のノードに沿って送信することにより実行できる。しかしながら、このようなアプローチは、大規模な構造に拡張することはできない。
【０００７】
この手順を改善するために、各ノードは、別のルーティング情報、すなわち最大でｍ個のエントリを有するテーブルであるいわゆるフィンガーテーブルを含んでいる。該テーブル内のノードｎにおける第ｉ番目のエントリは、識別子円内でｎから少なくとも２i-1だけ進んだ先にある最初のノードｓの識別子を含んでいる。つまり、
ｓ＝ｓｕｃｃｅｓｓｏｒ（ｎ＋２i-1）、ここで１≦ｉ≦ｍ（全ての計算は２mを法とする）。
【０００８】
ノードｓは、ノードｎの第ｉ番目のフィンガーと呼ばれ、ｎ．ｆｉｎｇｅｒ［ｉ］と表される。
【０００９】
したがってフィンガーテーブルは、あるキーに対するサーチクエリを、隣接するサクセサをバイパスし、フィンガーテーブルにより特定される有力なターゲットに向けてどのように効率よく転送するかをノードに指示するスキップリストと見なすことができる。図１には、ノードＮ８（ノード識別子８）に対するフィンガーテーブルが示されている。
【００１０】
最初のフィンガーは、（８＋２0）ｍｏｄ２6＝９だけ進んだ先にある最初のノード１４を示している。
同様にノード８の最後のフィンガーは、（８＋２5）ｍｏｄ２6＝４０だけ進んだ先にある最初のノード４２を示している。フィンガーテーブルのエントリは、ノード識別子とそれに対応するＩＰアドレスとを含んでいる。
【００１１】
あるサーチリクエストによりあるキーを検索する場合、該リクエストを処理するノードとそのサクセサとの間に該キーが存在するかどうかをチェックする。存在しない場合、該リクエストは、検索されるキーに対応する、直近の先行ノード（ｃｌｏｓｅｓｔ  ｐｒｅｃｅｄｉｎｇ  ｎｏｄｅ）に向けて転送される。
【００１２】
図２は、キーＫ５４に対するサーチリクエストが、ノードＮ８に到達した場合または該ノードにより発行された場合の様子を示している。キーＫ５４は、Ｎ８とそのサクセサＮ１４との間には存在していない。したがって、該サーチリクエストはノード４２に向けて転送される。このノード４２は、該検索されるキーに最も近い識別子を有するノードであって、かつ該検索されるキーの後続のノードではないノードである。次にノードＮ４２が自己のフィンガーテーブルをチェックし、該フィンガーテーブルにおいて、検索されるキーＫ５４に先行する最大のノードとしてノードＮ５１を検出する。続いてノードＮ５１は、自己のサクセサＮ５６が検索されるキーＫ５４の後続であることを検出し、ノードＮ８に向けてノード５６を検索結果として返却する。続いてノードＮ８は、ノードＮ５６に保存されているキーＫ５４と、Ｋ５４に対応するオブジェクトが実際に保存されているノードを示す、対応するＩＰアドレスとを取得するためにノードＮ５６と直接通信する。
【００１３】
したがって、検索するキーに等しいかまたは該検索キーより大きなＩＤを有するノードに最も近い先行ノードであるノードを検索することにより、キーの検索が行われる。この最も近い先行ノードは、そのサクセサノードが該検索するキーを保存していることから、クエリを導くことのできるノードとして該サクセサノードを返却する。
【００１４】
図１に示されているリングは必ずしも静的なものではなく、ノードがリングに参加（ｊｏｉｎ）したりリングから離脱（ｌｅａｖｅ）したりする。この様子は図３に概略的に示されている。図３（ａ）は、ノードＮ２１がノードＮ３２の前にある状態を示している。図３（ｂ）に示されているように、識別子Ｎ２６が割り当てられた新たなノードがリングに参加しようとしている。その新たなノードの識別子はノードＮ２１とノードＮ３２との間に位置付けられるので、ノードＮ２６はそれらの間の位置においてリングに参加する。Ｋ２４などのキーは、その識別子によれば新たなノードＮ２６に位置すべきものなのでノードＮ２６に向けて転送される。転送が完了すると（図３（ｃ）参照）、ノードＮ２６はノードＮ３２に通知し、キーＫ２４はノードＮ３２から削除される。
【００１５】
同様に、ノードＮ２６がリングから離脱する場合、時間が許せば、離脱するノードのキーはそのサクセサに転送される。
【００１６】
ピアツーピアルックアップシステムの基本的な特徴は、ノードが独立して参加および離脱をすることができるということである。これは、構造化されていないシステムよりも構造化システムに対して多くの影響を与える。システムが理想的な状態にあれば、リッチな構造はスケーラブルで決定論的なキーの検索を可能にするが、継続的に発展しているシステムは、ほぼ決して理想的な状態に戻ることはない。ノードの参加および離脱のプロセスが継続的である場合、チャーン（変動、離脱）は、ピアツーピアルックアップシステム、特に構造化システムにとって基本的な問題である。
【００１７】
構造化システムにおいてチャーンを処理するためのいくつかの研究がなされている。理論的な研究が非特許文献２に記載されている。研究に基づいたシミュレーションは非特許文献３および非特許文献４に記載されている。
【００１８】
非特許文献４では、有線アクセスノードを含む、基礎となるシステムから無線アクセスノードを含む、基礎となるシステムに至るまで、主な利用シナリオの変化の動向が指摘されている。ＨＳＩＡＯらは、モビリティチャーンをノードの移動によるチャーンとして定義し、通常のチャーンをノードの参加および離脱によるチャーンとして定義している。ここで基礎となるネットワークは個別のモビリティ管理機能を全く持っていないという想定のもとで、ＨＳＩＡＯらは、モビリティチャーンが通常のチャーン処理手順を使用して処理される場合のシステム性能を広範囲にわたって評価している。
【００１９】
Ｃｈｏｒｄと呼ばれるシステムによって行われ、非特許文献１にも記載されている、ノードの参加および離脱を処理するための、従来のチャーン処理手順について以下詳しく説明する。
最初にノードの参加を処理するための手順について説明する。
【００２０】
１．参加
あるノードがシステムに参加する際、最初にそのノードについてのシステム内の識別子が、基本となるハッシュ関数としてＳＨＡ−１を用いて、そのノードのＩＰアドレスをハッシュすることにより選択される（図３の例では識別子は２６である）。次にノードのサクセサ（図３（ａ）におけるノードＮ３２）が、以下の３つの手順のうちの第３番目の手順を利用して見出される。この第３番目の手順は、第１番目および第２番目の手順によってサポートされる。
【表１】
2007174672.tif 000003
【００２１】
ここで、ノードはサイクルではなく付属物としてシステムに参加している（図３（ｂ））。この時点でノードはキーを受け持っていない。次に安定化の手順が定期的または必要と認められるときに呼び出される。新たに参加したノードは、以下の疑似コードで書かれた２つの手順のうちの最初の手順を実行することにより、そのサクセサに自身がプレデセサになったことを通知する。このとき、新たに参加したノードに属することになるキーは、該新たに参加したノードにおいて複製される（図３（ｃ））。続いて、新たに参加したノードのプレデセサは、以下の疑似コードで書かれた２つの手順のうちの第２番目の手順を実行することにより、自己のサクセサが新たに参加したノードであることを認識する。またこの手順により、新たに参加したノードに対して自身がそのプレデセサであることが通知される（図３（ｄ））。
【表２】
2007174672.tif 000004
【００２２】
新たに参加したノードはいまやシステム内のサイクルに取り込まれている（ｅｎｃｏｍｐａｓｓｅｄ）。一方でフィンガーテーブルとサクセサリストとを作成する手順が、以下のように定期的に呼び出される。
【表３】
2007174672.tif 000005
【００２３】
ここで、新たに参加したノードにおいて複製されたキーは、そのサクセサから削除される。
次に、ノードがシステムを離脱する際の手順について説明する。
【００２４】
２．離脱
本目的のため、Ｃｈｏｒｄは、ノードが新たなプレデセサを受け入れることを可能にする以下のような手順を有する。
【表４】
2007174672.tif 000006
サクセサも以下のようにチェックされる。
【表５】
2007174672.tif 000007
【００２５】
Ｃｈｏｒｄシステムは、ノードが（非自発的に）離脱するための手順として、ノードが離脱した後システムを維持するために定期的に呼び出される上記手順１と２以外の手順は全く有していない。これらの手順は、離脱が行われたときにネットワークを安定化させることから、「安定化手順」（ｓｔａｂｉｌｉｚａｔｉｏｎ  ｐｒｏｃｅｄｕｒｅ）と呼ばれる。しかしながら、これらは離脱が一時的なものである場合があるという点を考慮していない。
次に、ノードが自発的に離脱する場合について説明する。
【００２６】
３．ノードの自発的な離脱
ノードが自発的に離脱する方法においては、離脱するノードは、離脱前に自己のキーをサクセサに対し転送するとともに、自己のプレデセサとサクセサとに対し離脱する旨を通知する。
【００２７】
【非特許文献１】ＳＴＯＩＣＡ，  Ｉ．，  ＭＯＲＲＩＳ，  Ｒ．，  ＬＩＢＥＮ−ＮＯＷＥＬＬ，  Ｄ．，  ＫＡＲＧＥＲ，  Ｄ．  Ｒ．，  ＫＡＡＳＨＯＥＫ，  Ｍ．  Ｆ．，  ＤＡＢＥＫ，  Ｆ．，  ＡＮＤ  ＢＡＬＡＫＲＩＳＨＮＡＮ，  Ｈ．  Ｃｈｏｒｄ：  Ａ  Ｓｃａｌａｂｌｅ  Ｐｅｅｒ−ｔｏ−Ｐｅｅｒ  Ｌｏｏｋｕｐ  Ｐｅｒｖｉｃｅ  ｆｏｒ  Ｉｎｔｅｒｎｅｔ    Ａｐｐｌｉｃａｔｉｏｎｓ．    ＩＥＥＥ／ＡＣＭ    ＴＲＡＮＳＡＣＴＩＯＮＳ  ＮＥＴＷＯＲＫＩＮＧ，  ＶＯＬ．  １１，  ＮＯ．  １，  Ｆｅｂｒｕａｒｙ  ２００３
【非特許文献２】ＬＩＢＥＮ−ＮＯＷＥＬＬ，  Ｄ．，  ＢＡＬＡＫＲＩＳＨＮＡＮ，  Ｈ．，  ＡＮＤ  ＫＡＲＧＥＲ，  Ｄ．  Ａｎａｌｙｓｉｓ  ｏｆ  ｔｈｅ  Ｅｖｏｌｕｔｉｏｎ  ｏｆ  Ｐｅｅｒ−ｔｏ−Ｐｅｅｒ  Ｓｙｓｔｅｍｓ，  ｉｎ  Ｐｒｏｃ．  ＡＣＭ  ＰＯＤＣ  ２００２，  Ｊｕｌｙ  ２００２
【非特許文献３】ＲＨＥＡ，  Ｓ．，  ＧＥＥＬＳ，  Ｄ．，  ＲＯＳＣＯＥ，  Ｔ．，  ＡＮＤ  ＫＵＢＩＡＴＯＷＩＣＺ，  Ｊ．  Ｈａｎｄｌｉｎｇ  Ｃｈｕｒｎ  ｉｎ  ａ  ＤＨＴ．  Ｉｎ  Ｐｒｏｃ．  ＵＳＥＮＩＸ’０４，  Ｊｕｎｅ  ２００４
【非特許文献４】ＨＳＩＡＯ，  Ｈ．  Ｃ．，  ＡＮＤ  ＫＩＮＧ，  Ｃ．  Ｔ．  Ｍｏｂｉｌｉｔｙ  Ｃｈｕｒｎ  ｉｎ  ＤＨＴｓ．  Ｉｎ  Ｐｒｏｃ．  ＩＥＥＥ  ＩＣＤＣＳＷ’０５，  Ｊｕｎｅ  ２００５
【発明の開示】
【発明が解決しようとする課題】
【００２８】
しかし例えばＣｈｏｒｄシステムで採用されている、上述した従来のチャーン処理手順は、モビリティチャーンを処理するには効果的ではない。
【００２９】
ノードがシステムに接続した状態を継続しながらもシステムからの一時的な離脱に伴い、そのアドレスを頻繁に変更するというシナリオがいくつか存在する。このようなシナリオの例として、ノードが移動する（ｎｏｍａｄｉｃ）シナリオ、例えばＷＬＡＮホットスポットにおいてＩＰアドレスを割り当てるためにＤＨＣＰを使用するシナリオ、またはノードにもともと割り当てられていたＩＰアドレスをＮＡＴが変換するシナリオなどがある。以下の説明では、これらのシナリオをモビリティシナリオと呼び、モビリティシナリオによって引き起こされるチャーンをモビリティチャーンと呼ぶことにする。
【００３０】
ノードのシステムへの「参加」とシステムからの「離脱」とを処理する既存の通常のチャーン処理手順は、現実のノード参加と現実のノード障害とノードの自発的な離脱とに関する限りうまく機能する。しかしながら、ノードがモビリティシナリオで動作し、自発的な離脱の準備をするのに十分な時間がない場合には問題が生じる。既存のシステムにおいて、このノードの挙動は頻繁な障害および参加であると見なされ、チャーンを引き起こす。このモビリティチャーンを処理するための従来の手順ではシステムへの負荷が増え、非効率的である。そのため構造化システムは不安定になり、その結果システムはもはや効率的ではなくなり、極端な場合にはシステムが破綻する。
【００３１】
以上のことから本発明の目的は、モビリティチャーンを処理するための改善された方法を提供することにある。
【課題を解決するための手段】
【００３２】
一実施形態によれば、モビリティチャーンは他のタイプのチャーンとは区別され、他のタイプのチャーンとは異なる方法で別個に処理される。これによりモビリティチャーンを隠すこと（ｈｉｄｉｎｇ）でシステムを安定化させることができる。
【００３３】
例えば、ノードは、実際にはシステムを離脱せずに、またはシステムを離脱するつもりがないにも関わらず自己のＩＰアドレスを変更している場合がある。それゆえ、こうしたケースをシステムの通常の離脱とは異なる方法で処理することは有利である。
【００３４】
一実施形態によれば、あるノードが自己のＩＰアドレスを変更可能な構造化ピアツーピアシステムにおいてモビリティチャーンを処理するための方法であって、変更され得るＩＰアドレスと、変更されることのない一意なネーミング識別子とにより、前記ピアツーピアシステム内の各ノードを特定するステップと、各ノードの一意なネーミング識別子に基づいて、前記構造化ピアツーピアシステムにおける各ノードの位置を各ノードに対して割り当てるステップと、あるノードが前記ピアツーピアシステムを一時的に離脱した後に前記ピアツーピアシステムに戻る場合、前記構造化ピアツーピアシステム内の位置に戻り、前記ピアツーピアシステム内のメンバノードに対して該ノードの新たなＩＰアドレスを通知するステップと、前記ピアツーピアシステム内の他のノードに対して、システムに戻った前記ノードがＩＰアドレスの変更についての通知を送信し終えるまで、該ノードを指し示すフィンガーテーブル内のエントリの使用をサスペンドするよう通知するステップとを含む方法が提供される。
【００３５】
この実施形態によれば、基礎となるネットワークがモビリティ管理機能を全く有していないという想定のもとでも、モビリティチャーンを処理し、モビリティチャーンを隠すことでシステムを安定化させる方法が提案される。これにより、既存の構造化ピアツーピアルックアップシステムの改善がもたらされる。
【００３６】
前記ピアツーピアシステム内の他のノードに対して、ノードのアドレスの変更についての通知の送信が完了するまで、そのノードを指し示すフィンガーテーブル内のエントリの使用をサスペンドすることが通知される。これにより、そのノードに向けてクエリを送ろうとしているあるノードがそのクエリを何度も再送したり、タイムアウトが何度も起きたりするような状況が回避される。その結果、ノードはフィンガーテーブル内で前記ノードを指し示すものから１レベルを除いたエントリを使用する。これらのタイムアウトは検索時間を長くする。この実施形態では、フィンガーテーブル内の不完全なエントリはサスペンドされ、これによりノードはフィンガーテーブル内の適切なエントリを迅速に選択し、これらタイムアウトを回避することができる。
【００３７】
一実施形態によれば、前記方法は、あるノードがそのＩＰアドレスの変更により前記構造化ピアツーピアシステムから離脱する場合に、タイマーを所定の時間にセットするステップと、前記所定の時間内に前記ノードが前記ピアツーピアシステムに戻る場合に、前記構造化ピアツーピアシステム内の位置に戻り、前記ピアツーピアシステム内のメンバノードに対して前記ノードの新たなＩＰアドレスを通知するステップと  を更に含む。
【００３８】
これは、モビリティチャーンは通常は一時的な現象であることと、モビリティチャーンにより離脱したノードは適切な時間内に戻るはずであり、もしそうでなければ、その離脱は一時的なものではなく永続的なものであると見なすことができることとを考慮している。
【００３９】
一実施形態によれば、前記方法は、前記ノードにアクセスしたノードを記録するアクセスログテーブルを管理するステップと、前記ピアツーピアシステムを離脱した前記ノードが前記システムに戻った場合に、前記アクセスログテーブル内のノードに対して、前記戻ったノードの新たなＩＰアドレスを通知するステップとを更に含む。
【００４０】
前記アクセスログテーブルにより、関連するノードに対して、一時的に離脱していたノードの新たなアドレスについて通知することが可能となる。
【００４１】
一実施形態によれば、前記アクセスログテーブルは、前記離脱したノードにアクセスした任意のノードと、自己のフィンガーテーブル内に前記離脱したノードを有する任意のノードとを含む。
【００４２】
これは、あるノードへのアクセスが、別のノードにより、このノードを対象とするクエリ、または別のノードのフィンガーテーブル内にこのノードを含めたことにより生じる場合があることを考慮するものである。
【００４３】
一実施形態によれば、前記方法は、前記ノードに保存されていたキーを、前記キーを対象とするクエリに対して補助的に応答する別のノードへと複製するステップを更に含む。
【００４４】
キーを複製することで、離脱したノードが受け持っていたキーを対象とするクエリであっても応答を得ることができる。
【００４５】
一実施形態によれば、前記複製されたキーの１つを対象とするクエリに対する、補助的なノードによって返却される応答は、補助的なノードによって返却されたものであるとしてマーク付けがなされる。
【００４６】
こうすることにより、その応答を受け取ったノードがそれを「一時的なもの」として取り扱うことが可能となる。したがって、これらノードは、離脱したノードがシステムに戻った場合に、更なる同一のクエリに対して異なる結果が返却される場合があることに備えることができる。
【００４７】
一実施形態によれば、前記方法は、ノードＢのプレデセサがノードＡであり、ノードＢのサクセサがノードＣである場合に、前記ノードＢのキーを前記ノードＣへ複製し、前記ノードＣが、複製されたキーに対するセカンダリキーハンドラであることを前記ノードＣに通知するステップと、前記ノードＢが前記システムを離脱している間、ノードＣ内のキーを対象とするクエリに対して、前記ノードＡが前記ノードＣの受信アクセスハンドラであることを前記ノードＡに通知するステップとを更に含む。
【００４８】
これにより、ノードが離脱しても、システムの完全な機能性を維持することが可能となる。
【００４９】
一実施形態によれば、あるノードが自己のＩＰアドレスを変更可能な構造化ピアツーピアシステムにおいてモビリティチャーンを処理するための装置であって、変更され得るＩＰアドレスと、変更されることのない一意なネーミング識別子とにより、前記ピアツーピアシステム内の各ノードを特定する特定ユニットと、各ノードの一意なネーミング識別子に基づいて、前記構造化ピアツーピアシステムにおける各ノードの位置を各ノードに対して割り当てる割り当てユニットと、あるノードが前記ピアツーピアシステムを一時的に離脱した後に前記ピアツーピアシステムに戻る場合、前記構造化ピアツーピアシステム内の自己の位置に戻ることを可能にし、前記ピアツーピアシステム内のメンバノードに対して該ノードの新たなＩＰアドレスを通知するリターンユニットと、前記ピアツーピアシステム内の他のノードに対して、システムに戻った前記ノードのアドレス変更についての通知の送信が完了するまで、該ノードを指し示すフィンガーテーブル内のエントリの使用をサスペンドするよう通知する通知ユニットとを備える装置が提供される。
【００５０】
一実施形態によれば、前記装置は、前記ピアツーピアシステム内の他のノードに対して、システムに戻った前記ノードのアドレス変更についての通知の送信が完了するまで、そのノードを指し示すフィンガーテーブル内のエントリの使用をサスペンドするよう通知する通知ユニットを更に備える。
【００５１】
一実施形態によれば、前記装置は、前記離脱したノードへアクセスしたノードまたはフィンガーテーブル内に前記ノードを有するノードを記録するアクセスログテーブルを管理する管理ユニットと、前記ピアツーピアシステムを離脱した前記ノードが前記システムに戻った場合に、前記アクセスログテーブル内のノードに対して、前記戻ったノードの新たなＩＰアドレスを通知する通知ユニットとを更に備える。
【００５２】
一実施形態によれば、前記装置は、前記ノードに保存されていたキーを、前記キーを対象とするクエリに対して補助的に応答する別のノードへと複製する複製ユニットを更に備える。
【００５３】
一実施形態によれば、前記複製されたキーの１つを対象とするクエリに対する、補助的なノードによって返却される応答は、補助的なノードによって返却されたものであるとしてマーク付けがなされる。
【００５４】
一実施形態によれば、前記装置は、ノードＢのプレデセサがノードＡであり、ノードＢのサクセサがノードＣである場合に、前記ノードＢのキーを前記ノードＣへ複製し、前記ノードＣが、複製されたキーに対するセカンダリキーハンドラであることを前記ノードＣに通知する手段と、前記ノードＢが前記システムを離脱している間、前記ノードＣ内のキーを対象とするクエリに対して、前記ノードＡが前記ノードＣの受信アクセスハンドラであることを前記ノードＡに通知する手段とを更に備える。
【００５５】
一実施形態によれば、前記キーは、クエリを行ったノードが、離脱したノードの代わりに通信する１つ以上のノードのアドレスを含んだ値を伴う。
【００５６】
これによって本発明の一実施形態によれば、位置管理を行うことが可能となる。
【００５７】
一実施形態によれば、コンピュータ上で、本発明のいずれか１つの実施形態に基づく方法を実行可能にするコンピュータ実行可能なコードを含むコンピュータプログラムが提供される。
【発明を実施するための最良の形態】
【００５８】
以下、本発明の典型的な実施形態について詳細に説明する。
【００５９】
一実施形態によれば、システムと接続した状態を継続しつつも１回以上のシステムからの一時的な離脱にともなってアドレスを頻繁にまたは一時的に変更するノードを特定することを可能にする方法が提供される。この目的のため、一実施形態によれば、ノードの識別子（例えばＵＲＩなどの読み取り可能なネーミングスキームに基づく識別子、またはノードに割り当てられ、変更されることのないＭＡＣアドレスその他の一意の識別子）は、そのＩＰアドレスとは明確に区別される。言い換えると、このような識別子は、変更可能なＩＰアドレスに加えてノードの追加的な識別子として取り扱われる。ノードにはこのような識別子が割り当てられる。構造化ピアツーピアシステムにおけるノードの位置は、ＩＰアドレスよりもむしろこの識別子に基づいている。これは、ＩＰアドレスが変更される場合に、ノードがピアツーピアシステムにおける新たな位置を想定する必要はないという効果を有する。代わりに、ノードはピアツーピアシステム内で以前と同じ位置でその機能をレジュームすることができる。その他のノードは、該ノードと通信またはクエリを該ノードへ導くことができるように該ノードの新たなＩＰアドレスについて通知される。新たなＩＰアドレスについての通知が完了すると、そのノードはピアツーピアシステム内でその機能をレジュームする。
【００６０】
一実施形態によれば、サスペンドメッセージは、離脱したノードが入力されたフィンガーテーブル内のエントリを用いたクエリは今後一切転送されないようにすることができるという効果を持つ。本発明の別の実施形態によれば、サスペンドメッセージは、いま離脱している（またはＩＰアドレスを変更した）ノードとすでに一度は通信したことのある任意のノードが、以前に使用されていたＩＰアドレスを用いて直接通信することはしないという効果だけを持つ。しかしながら、このノードに対するクエリが依然発行される可能性があり、後に説明する一実施形態によれば、このようなクエリは、離脱しているノードに代わり補助的な役割を果たす異なるノードにより応答することができる。
【００６１】
ピアツーピア構造内でノードの位置を特定するためにＩＰアドレスではなく一意の識別子が使用されるという前述の実施形態による方法は、ピアツーピアシステムの任意の構造またはトポロジーと組み合わせて使用できるという点に注意すべきである。したがって、以下の説明では本発明の実施形態についてリング型構造を例にとって詳しく説明するが、他の構造またはトポロジーも本発明の実施形態と組み合わせて使用することができる。
【００６２】
一実施形態によれば、ピアツーピア構造におけるクエリのルーティングは、フィンガーテーブルを利用することによりスピードが速くなる。一意のネーミング識別子を提供することで、一意のネーミング識別子に加えて各エントリのＩＰアドレスを明示的に含むフィンガーテーブルとサクセサリストとを定義することができる。ノードが非自発的に離脱した後十分短い時間内にシステムに戻るとき、そのノードは（例えば、一実施形態においてはＣｈｏｒｄシステムの場合のようにリング型の）ピアツーピアシステム内の離脱前と同じ位置に戻る。このときプレデセサとサクセサも離脱前と同じである。既存のシステムとは対照的に、システムにおいてそのノードを移転する必要はない。むしろ戻ったノードはその新たなＩＰアドレスを通信するだけでシステム内に再び組み込まれる。
【００６３】
この目的のため、一実施形態によれば、ノードごとにその識別子ｎ＿ｉｄとアドレスｎ＿ａｄｄｒｅｓｓ（例えばＩＰアドレス）とが与えられる。ｎ＿ｉｄは固定であり、例えばベースとなるハッシュ関数としてＳＨＡ−１を用いて、ノード名（例えば読み取り可能な別のネーミングスキームに基づく別のネーム識別子またはＭＡＣアドレス）をハッシュすることにより選択される。ｎ＿ａｄｄｒｅｓｓは変更可能である。フィンガーテーブル内のエントリに関して言えば、これらエントリはＩＰアドレスと一意の識別子とを含み、次のように表すことができる。
【表６】
2007174672.tif 000008
【００６４】
各ノードには、サクセサ、または更にサクセサのサクセサリストも割り当てられる。このサクセサリストも同じ方法で表すことができる。
【００６５】
一実施形態によれば、ノードの離脱を処理する手順は、以下の仕組みに基づいている。ノードが離脱すると、このノードに関するクエリは、このノードがシステムに再度参加し、その新たなアドレスがその他のノードに配信されるまで、ある意味において「一時中断」または「サスペンド」される。以下、この実施形態について図４を参照して説明する。図４の実施形態は、トポロジーに関してＳｔｏｒｉｃａ等の文献に記載されているものと同様のリング型ピアツーピア構造に関係している。しかしながら、Ｓｔｏｒｉｃａ等とは対照的に、モビリティチャーンを処理するための具体的な仕組みが、以下に述べるように提供される。
【００６６】
図４Ａは、（ノードＡに保存された）キーに対する基本的なクエリの仕組みを示している。このようなクエリは、ノード内のフィンガーテーブルを使って最初にノードＡのプレデセサを見つけることによりノードＡに導かれる。ノードＡのプレデセサが見つかると、このノードはそのサクセサのＩＤを当該クエリの発信元であるノードへ返却し、当該クエリは通知されたサクセサに導かれるべきであることをこのノードに通知するという意味で、このノードはそのサクセサに対する「受信アクセスハンドラ」の機能を果たす。続いて当該クエリは通知されたサクセサに導かれ、そのサクセサは検索対象のキーに対応するＩＰアドレスを返却することによりそのクエリに応答する。
【００６７】
図４Ｂは、一実施形態による、ノードＡの離脱の処理の様子を示している。受信アクセスハンドラである、ノードＡのプレデセサは、ノードＡにアクセスしたノードをアクセスログテーブルに記録する。ノードＡのアクセスログテーブルは、ノードＡのプレデセサに保存されるものであり、一定の時間内にノードＡにアクセスしたノードのリストである。このアクセスログテーブルは、ノードＡに保存されたキーに対するクエリを発行したノードだけではなく、フィンガーテーブル内にノードＡを含んでいるノードも含むことができる。ノードＡのプレデセサはノードＡへの全てのクエリが集約されるノードであることと、別のノードのフィンガーテーブル内にノードＡがエントリされているということは、ノードＡのプレデセサがこのノードからアクセスされたということを意味することとから、ノードＡのプレデセサは、ノードＡにアクセスしたことのあるノードであって、フィンガーテーブル内にノードＡを有する全てのノードを認識している。アクセスログテーブル内の各エントリは、ノードの識別子とそのアドレス（ＩＰアドレス）とから成る。
【００６８】
ノードＡがそのアドレスを変更または離脱するとき、一実施形態によれば、ノードＡはプレデセサにその旨を通知し、それにより所定の時間ｔｉｍｅｒ＿ａｓ＿ｐｒｅｄｅｃｅｓｓｏｒに設定されたタイマーをトリガする。このタイマーが時間切れしていない限りは（この時間を「移行時間」とも呼ばれる）、ノードＡのプレデセサは依然として自己をノードＡのプレデセサと見なす。
【００６９】
一実施形態によれば、プレデセサは、例えばネットワーク上で実行される安定化の手順に基づいてノードＡが離脱することを認識する。この手順ではノードＡの直後のサクセサが確認されることから、プレデセサはノードＡが離脱したことを認識することができる。
【００７０】
さらに、ノードＡのプレデセサは、保存されているアクセスログテーブル内のノードへサスペンドメッセージを送り、ノードＡは離脱していて現時点では通信不能であることを通知する。この仕組みにより、ノードＡのアクセスログテーブルに含まれるノードは、ノードＡへのルーティングによりその移行時間中に引き起こされるクエリまたはユーザデータの不要な再送を避けることができる。この仕組みは、クエリの頻度が高くノードＡの移行時間が長いときに特に役立つ。ノードＡのプレデセサは、ノードＡのアクセスログテーブルを保存し、そのテーブルに含まれる各ノードにメッセージを送り、ノードＡがシステムを離脱した後にノードＡに対するフィンガーテーブル内のエントリをサスペンドすべきであることをそのメッセージを通じて要求する（このメッセージはサスペンドメッセージと呼ばれる）。各ノードがレジュームメッセージ、つまり、新たなアドレスを伴った、離脱していて戻ったノードＡのアドレスＡ＿ａｄｄｒｅｓｓの変更の通知を受信すると、サスペンド状態はレジュームされる。
【００７１】
ノードＡがその新たなアドレスについてそのプレデセサに通知し、さらにｔｉｍｅｒ＿ａｓ＿ｐｒｅｄｅｃｅｓｓｏｒに設定されたタイマーがまだ時間切れになっていない場合、ノードＡのプレデセサは、アクセスログテーブルに含まれるエントリに対応するノードであってサスペンドメッセージを受信したノードに対し、レジュームメッセージを送りノードＡの新たなアドレスについて通知する。こうして、これらのノードはノードＡがピアツーピアシステムに再度参加したことを認識し、再びノードＡと通信可能となる。
【００７２】
したがって、ノードの離脱が一時的な「移行時間」と、ノードの一時的ではない離脱とが区別される。一実施形態による「移行時間」の間は、通常の仕組みではちょうど「サスペンド」状態にあり、移行段階が完了したときに「レジューム」される。
【００７３】
一実施形態によれば、ノードＡのプレデセサは、非特許文献１に記載されておりここでも既に説明したそれ自体のｆｉｎｄ＿ｓｕｃｃｅｓｓｏｒ（ｉｄ）の手順をモニタすることで、ノードＡのアクセスログテーブルにリストされる必要のあるノードを認識する。一実施形態によれば、ノードＡのプレデセサは大きすぎない適切なサイズのテーブルを保持する。既に言及したように、ノードＡの一意の識別子Ａ＿ｉｄは変更されないので、ノードＡは常にピアツーピア構造内の以前と同じ位置へ戻る。そしてノードＡが非自発的な離脱後、先行するノードに関して更なる変更が一切ないぐらい十分に短い時間内にシステムに戻る場合には、ノードＡのプレデセサも以前と同じノードである。
【００７４】
ノードＡが非自発的な離脱の後十分短い時間内にシステムに戻るとき、ノードＡは、そのプレデセサに対してノードＡのアクセスログテーブルに含まれるノードにＡ＿ａｄｄｒｅｓｓ（ノードＡのＩＰアドレス）の変更を通知させる。当然のことながら、ノードＡのプレデセサ自体もＡ＿ａｄｄｒｅｓｓの変更を認識する。次にノードＡのプレデセサは、更にそのプレデセサに対し変更をサクセサリストに反映すべきことを通知し、適切なレベルまでこれは続く。「適切なレベル」とはここでは、サクセサリストにノードＡが現れる全てのプレデセサが、それらのサクセサリスト内のノードＡのアドレスを更新するまで、ノードＡの新たなアドレスについて更なるプレデセサに通知することを意味する。ノードＡはそのサクセサにもアドレスの変更を通知する。新たなアドレスについての通知は、再度参加したノードＡに関して通常の手順のレジュームをトリガすることから「レジュームメッセージ」と呼ばれる。
【００７５】
既に言及したタイムアウトに関して言えば、この仕組みにより、ノードＡのプレデセサはそのままの状態を続け、ノードＡのサクセサのプレデセサになることを防ぐことができる。ノードの離脱といったネットワークにおける変更を処理する通常の「安定化の手順」が、移行時間と比べて短い時間内あるいは同程度の時間内に実行されるならば、ネットワークシステムの安定化の手順は、ノードＡのプレデセサに新たな役割、すなわちノードＡが離脱したことによるノードＡのサクセサのプレデセサの役割を割り当てようとすることができる。こうしたケースでは、設定されたタイマーはノードＡのプレデセサの役割の変更を防止し、ネットワーク管理構造の対応する変更を防止する。ノードＡがシステムを離脱した後、Ａ．ｐｒｅｄｅｃｅｓｓｏｒ．ｔｉｍｅｒ＿ａｓ＿ｐｒｅｄｅｃｅｓｓｏｒは所定の値に設定される。タイマーが時間切れした場合には、ノードＡのプレデセサは通常のノードの離脱が起きたものと見なし、ノードＡのプレデセサは、ノードＡのサクセサのプレデセサとしての新たな役割を引き受けることができる。しかしながら、タイマーが時間切れになるまでは、ノードＡのプレデセサは、ノードＡをそのサクセサと見なし続ける。
【００７６】
次に、システムのロバスト性を向上させることに重点を置いた更なる実施形態について説明する。この実施形態は、キーのような重要なキーワードを適切に複製することまたは情報をルーティングすることに基づいている。この仕組みは、ノードＡの移行時間の間でも適切な検索を可能にし、ノードごとに２つのサクセサ（「通常の」サクセサと「セカンダリ」サクセサ）と、２つのキーハンドラ（「通常」のキーハンドラと「セカンダリ」キーハンドラ）とを定義することにより実現される。
【００７７】
以下、この実施形態について図５を参照して説明する。ノードＡのプレデセサは、ノードＡの移行時間の間にクエリが送られてきたときには、サクセサとしてｓｕｃｃｅｓｓｏｒ＿ａｕｘｉｌｉａｒｙ（これはノードＡのサクセサである）を利用する。ノードＡのキーはノードＡのサクセサへ複製されており、ノードＡのサクセサがノードＡに代わって「セカンダリキーハンドラ」としてクエリに応答する機能を果たすことができるようになっている。ノードＡのサクセサはこれによってノードＡのプレデセサに対するｓｕｃｃｅｓｓｏｒ＿ａｕｘｉｌｉａｒｙとなる。
【００７８】
しかしながら、一実施形態によれば、この場合にはセカンダリキーハンドラによって返却されたクエリに対する応答は、ｓｕｃｃｅｓｓｏｒ＿ａｕｘｉｌｉａｒｙが使用されていることを示すフラグを含む。
【００７９】
ｓｕｃｃｅｓｓｏｒ＿ａｕｘｉｌｉａｒｙが使用される場合、ノードＡのサクセサに対するアクセスログテーブルはノードＡのプレデセサに保存されている。続いてこのアクセスログテーブルは、ノードＡのサクセサとノードＡのプレデセサとの間でピアツーピアシステムに後で参加する任意のノード（例えば戻ってきたノードＡ）に転送される。
【００８０】
次に、更なる実施形態として、図６を参照して個々のノードの役割、特にノードＢがシステムを離脱する場合においてノードＡのプレデセサとノードＡのサクセサとがノードＡに関して有する役割について詳しく説明する。ノードＡのプレデセサは、フィンガーテーブル内にノードＡを有するノードまたはノードＡが保存するキーにアクセスしたノードを認識している。ノードＡがシステムを完全に離脱した後、ノードＡのサクセサは元々ノードＡに属していたキーを引き受ける。図６にはこれらの役割が示されている。図６中、ノードＡのプレデセサはノードＡの受信アクセスハンドラの役割を果たし、ノードＢの（前の）サクセサ（ノードＢがシステムを離脱する直前までのノードＢのサクセサ）は、ノードＡのセカンダリキーハンドラの役割を果たす。
【００８１】
この実施形態によれば、ノードの一連の参加および離脱に対するシステムのロバスト性は、ノードとそのプレデセサとそのサクセサとの間の役割の関係を保つことで改善することができる。図６にその関係を示している。この図の中のノードＢがシステムを離脱する場合、ノードＣのアクセスログテーブルは失われる。このアクセスログテーブルは何らかの方法で保護する必要がある。そこでノードＡに保存されたノードＢのアクセスログテーブルは、ノードＡのプレデセサへ事前に複製される。
【００８２】
同様に、ノードＡのプレデセサに保存されているノードＡのアクセスログテーブルは、ノードＡのプレデセサのプレデセサへ複製される。そうすることでアクセスログテーブルは保護できる。
【００８３】
一実施形態によれば、ノードの移行時間の間、そのノードがクエリに応答するタスクは、セカンダリキーハンドラとして動作する後続のノードに引き継がれる。離脱するノードのプレデセサは、そのセカンダリキーハンドラへのアクセスをエントリとして有する別個のアクセスログテーブルを持っている。離脱したノードがネットワークに戻るとすぐに、その別個のアクセスログテーブルはその戻ったノードが保管するアクセスログテーブルと同期をとる。ただし、この場合エントリの整合性が求められるために注意が必要である。
【００８４】
上述した実施形態は、モビリティチャーンを隠すことにより、不安定な環境にある構造化ピアツーピアルックアップシステムを安定化させ、システム内の検索処理の精度と性能も改善させる。
【００８５】
既存のシステムでは、モビリティシナリオにおいてノードに保存されているキーは、そのノードが移動した後はキーの発行ノードがそのキーを再発行するまで失われる。これに対し、上述した本発明の実施形態では、これらのキーはシステム内に保持され、実施形態によっては、ノードの移行時間の間もそれらキーにアクセスすることが可能である。
【００８６】
既存のシステムでは、モビリティシナリオにおいてノードが移動するとき、フィンガーテーブル内の古くなった（ｓｔａｌｅ）エントリは、検索処理において頻繁なタイムアウトを引き起こし、検索時間を長くする。上記の実施形態では、フィンガーテーブル内の古くなったエントリは削除された後、更新される。このようにすることでタイムアウトの回数は減少する。
【００８７】
次に、図７Ａおよび図７Ｂを参照して、位置管理（Ｌｏｃａｔｉｏｎ  Ｍａｎａｇｅｍｅｎｔ）に重点を置いた更なる実施形態について説明する。
【００８８】
ノードＭＮは、キーとしての自己の名前（識別子）と、値としてのいくつかのＩＰアドレスとから成るエントリを自己のキーリスト内に有しているものとする。これらのＩＰアドレスは例えば、ノードＭＮの代わりにユーザが使用している端末、または応答するマシン（ａｎｓｗｅｒｉｎｇ  ｍａｃｈｉｎｅ）に対するものであり、それらには優先順位を付けることができる。しかしながら、ノードＭＮの実際のＩＰアドレスはこのリストには含まれない。このリストは、そのエントリとともにノードＭＮのサクセサのキーリストへと複製される。そこで次に、モバイルノードがネットワークから消滅または離脱した場合でも代わりに応答するマシンまたは他のいずれかのノードに到達できる場合を含めて、このような構成が位置管理に対してどのように利用できるかについて説明する。
【００８９】
いま、ノードＣＮがキーＭＮ＿ｉｄを伴うクエリを送信、つまり言い換えると、ノードＣＮがモバイルノードＭＮの名前を検索するものとする。クエリはネットワーク内でルーティングされ、そのクエリは受信キーハンドラとしてのノードＭＮのプレデセサへメッセージ１で到達する（ｒｅａｃｈｅｓ  ｉｎ  ｍｅｓｓａｇｅ  １）。ＭＮのプレデセサは、「このキーは次のノードに保存されている」というメッセージをノードＣＮへ返却する。つまり言い換えると、クエリを出したノードにサクセサを照会する。しかしながら、図７Ａにメッセージ２と２’で示されている２つの異なるケースを区別する必要がある。
【００９０】
ノードＭＮは、自己のプレデセサとサクセサとの間の位置でネットワークにまだ属しているとする。ＭＮのプレデセサは、クエリを出したノードへＭＮのＩＰアドレスと名前とを含むメッセージを返却する。言い換えると、直接ＭＮへ指示される。クエリを出したノードはノードＭＮのアドレスについて通知され、ノードＭＮのプレデセサによって返却されたアドレスを使ってノードＭＮと直接通信することができる。
【００９１】
しかしながら、ノードＭＮがネットワークを離脱した場合には異なる取扱いがなされる。ノードＣＮが既に一度ノードＭＮにアクセスしたことがあり、対応するエントリがアクセスログテーブル内に存在している場合、ノードＭＮが離脱することで、サスペンドメッセージがノードＭＮのプレデセサからノードＣＮへと送られる。こうすることでノードＣＮがノードＭＮに前回アクセスした際に使用したアドレスを使ってノードＭＮに直接通信することを防ぐ。
【００９２】
これは、少し結果は異なるものの図７Ａに示されているようにノードＣＮが再度ノードＭＮを検索しなければならないことを意味する。クエリはこの場合も同じようにノードＭＮのプレデセサに到達する。しかし、ノードＭＮは離脱してしまっているので、ノードＭＮのサクセサは「ａｕｘｉｌｉａｒｙ＿ｓｕｃｅｓｓｏｒ」かつ「セカンダリキーハンドラ」となっており、そのためノードＭＮのプレデセサは、ノードＭＮのサクセサのアドレスと名前とを、クエリを出したノードへ返却する。この様子は図７Ａの中のメッセージ２’に示されている。
【００９３】
クエリを出しているノードＣＮは、次にノードＭＮのセカンダリキーハンドラにアクセスし、セカンダリキーハンドラは、ノードＭＮからノードＭＮのサクセサに複製されたエントリ内に保存されているアドレスの中から１つ以上のアドレスを返却する。例えば、このエントリ内の最初のものはそのアドレスが応答するマシンに対応するエントリである場合があり、クエリを出したノードはこのときそのアドレスに接続することができる。２つ以上のアドレスが保存されていて、クエリを出したノードにそれらが返却された場合、クエリを出したノードはそれらの順番に従って一つずつ、クエリの送信先とすべきノードとしてノードＭＮが定めたノードに接続することができる。
【００９４】
いずれの場合も、ノードＭＮが移動した後または戻った後にノードＭＮのアドレスＭＮ＿ａｄｄｒｅｓｓは、図７Ｂに示されているようにノードＭＮのプレデセサが送ったレジュームメッセージによって継続的に更新される。こうすることで、ノードＣＮは、ノードＭＮがネットワークに再度参加するとすぐに再びノードＭＮと通信することができるようになる。
【００９５】
上述したように、この実施形態によれば、モバイルノードがネットワークから消滅または離脱しても、代わりに応答するマシンまたは他のいずれかのノードに到達することができるケースを含めて、いずれの中枢ノードを全く必要とすることなく、分散型の位置管理機能を実現することができる。
【００９６】
既存の構造化ピアツーピアシステムでは、ノードＭＮの名前といくつかのＩＰアドレスとから成るエントリは、あるリモートノードに保存されるが、それは大きな差異を生まない。しかしながら既存のシステムではキャッシュの更新をさらに考慮する必要があり、モビリティシナリオは適切に処理することができない。
【００９７】
モビリティシナリオは差異を生む。本発明の実施形態によればモビリティチャーンは隠されるが、既存のシステムでは明白である。本発明の実施形態は、基礎となるネットワーク上に固定的で安定したノードが存在するという想定をすることなく自立的に構築されるオーバーレイ離散モバイルネットワークを実現するのに寄与する。ノードの移動はオーバーレイネットワークの観点からは認識されないので、基礎となるネットワークにどのようなモビリティ管理機能が存在してもシステムの安定化に役立つ。
【００９８】
本発明の実施形態は、ネットワークサービスプロバイダがオーバーレイネットワークサービスを提供する場合にも適用することができる。
【００９９】
セルラネットワークとＷＬＡＮネットワークとを両方含むプロバイダのネットワークまたはインターネットに接続したユーザノードは、ピアツーピアルックアップシステムにおけるピアノードとして機能するという取り決めのもとに「アフィリエイト」としての機能することができる。プロバイダは、システムにおいてピアノードとして機能する管理可能なノードを有することができる。システムは、あるプロバイダのネットワークだけではなく他のネットワーク管理者のネットワークも含む基礎となるネットワークに基づいてオーバーレイネットワークサービスを提供する要素と見なすことができる。システムにおいて、あるプロバイダは分散したアフィリエイトとともに機能するＤＨＴ（分散ハッシュテーブル：Ｄｉｓｔｒｉｂｕｔｅｄ  Ｈａｓｈ  Ｔａｂｌｅ）サービスプロバイダとして機能することができる。オーバーレイネットワークサービスの提供によりプロバイダはそのサービス範囲を、ネットワークインフラを持たないエリアにまで拡張することができる。
【０１００】
上述した実施形態は、よくあるケースだが、基礎となるネットワークの管理者のポリシーによりノードが静的に割り当てられたＩＰアドレスを持つことが許されない場合に、システムを安定化させるのに特に寄与する。
【０１０１】
リング型のピアツーピア構造に関連して上記実施形態を説明してきたが、本発明の実施形態は一般に他のトポロジーのピアツーピア構造に関しても使用することができることは当業者に理解されよう。ネットワークトポロジー内のノードの位置に応じて変わることのない一意の識別子を利用するという原理は、任意のネットワークトポロジーに関して適用することが可能である。さらに、アクセスログテーブルの管理、キーが複製されるセカンダリキーハンドラの仕組み、またはサスペンドメッセージおよびレジュームメッセージも、ノードが内部で明確な位置を有する他の任意のトポロジーの構造化ピアツーピアシステムに関して使用することができる。
【０１０２】
上述した実施形態は、ハードウェア、ソフトウェア、またはハードウェアとソフトウェアの組み合わせによって具現化することができることは当業者には理解されよう。本発明の実施形態に関連して説明したモジュールは全体的または部分的に、本発明の実施形態に関連して説明した方法に基づいて動作するように適切にプログラムされたマイクロプロセッサまたはコンピュータによって具現化することができる。
【０１０３】
本発明の実施形態によれば、データキャリアに記憶され、または記録媒体もしくは伝送リンクなど何らかの物理的な手段によって具現化される他の何らかの方法で記憶されたコンピュータプログラムであって、コンピュータ上で上述した本発明の実施形態に従って動作することを可能するコンピュータプログラムが提供される。
【図面の簡単な説明】
【０１０４】
【図１】従来技術に基づくピアツーピアシステムを示す図である。
【図２】従来技術に基づくピアツーピアシステムにおける検索の仕組みを示す図である。
【図３】（ａ）〜（ｄ）は従来技術に基づくピアツーピアシステムにおける参加の仕組みを示す図である。
【図４Ａ】従来技術に基づくピアツーピアシステムにおける検索の仕組みを示す図である。
【図４Ｂ】一実施形態によるピアツーピアシステムにおけるモビリティチャーンを処理する仕組みを示す図である。
【図５】本発明の更なる実施形態によるピアツーピアシステムにおけるモビリティチャーンを処理する仕組みを示す図である。
【図６】本発明の更なる実施形態によるピアツーピアシステムにおけるモビリティチャーンを処理する仕組みを示す図である。
【図７Ａ】本発明の更なる実施形態によるピアツーピアシステムにおけるモビリティチャーンを処理する仕組みを示す図である。
【図７Ｂ】本発明の更なる実施形態によるピアツーピアシステムにおけるモビリティチャーンを処理する仕組みを示す図である。
【図１】
2007174672.tif 000009
【図２】
2007174672.tif 000010
【図３】
2007174672.tif 000011
【図４Ａ】
2007174672.tif 000012
【図４Ｂ】
2007174672.tif 000013
【図５】
2007174672.tif 000014
【図６】
2007174672.tif 000015
【図７Ａ】
2007174672.tif 000016
【図７Ｂ】
2007174672.tif 000017
【外国語明細書】
2007174672.tif 000018
2007174672.tif 000019
2007174672.tif 000020
2007174672.tif 000021
2007174672.tif 000022
2007174672.tif 000023
2007174672.tif 000024
2007174672.tif 000025
2007174672.tif 000026
2007174672.tif 000027
2007174672.tif 000028
2007174672.tif 000029
2007174672.tif 000030
2007174672.tif 000031
2007174672.tif 000032
2007174672.tif 000033
2007174672.tif 000034
2007174672.tif 000035
2007174672.tif 000036
2007174672.tif 000037
2007174672.tif 000038
2007174672.tif 000039
2007174672.tif 000040
2007174672.tif 000041
2007174672.tif 000042
2007174672.tif 000043
2007174672.tif 000044
2007174672.tif 000045
2007174672.tif 000046
2007174672.tif 000047
2007174672.tif 000048
2007174672.tif 000049
2007174672.tif 000050
2007174672.tif 000051
2007174672.tif 000052
2007174672.tif 000053