(57)【要約】【課題】オーバレイネットワークにおいて、ＩＰアドレスの有無に拘わらず、与えられたグループ情報や個々のノード装置の近接情報に基づいて、ノード装置間の物理的近傍性を算出する。【解決手段】ノード固有ビット列送信部１３は、ノード固有ビット列生成部１１で生成された自ノード装置のノード固有ビット列を、近接ノードリスト生成記憶部１２に記憶された近接ノードリストに従って送信する。近接ノードビット列生成部１６は、ノード固有ビット列受信部１４で受信されてノード固有ビット列記憶部１５に記憶された近接ノード装置のノード固有ビット列に基づいて、近接ノード装置の情報を縮退した近接ノードビット列を生成する。近接ノードビット列比較部１９は、他ノード装置から受信した近接ノードビット列と自ノード装置の近接ノードビット列に従って、ビット間距離（即ち、物理的近傍性）を算出する。【選択図】図２
2010273277.tif 000002
【特許請求の範囲】
【請求項１】
オーバレイネットワークシステムを構成する複数のノード装置であって、それぞれ、
自身のノード装置に固有の情報と近接するノード装置に固有の情報とを縮退して近接ノードビット列を生成するビット列生成手段と、
前記ビット列生成手段で生成された近接ノードビット列を他のノード装置へ送信するビット列送信手段と、
前記他のノード装置から受信した近接ノードビット列と前記ビット列生成手段で生成された近接ノードビット列とを対応するビット同士で比較し、ビット間距離に従って該他のノード装置の近傍性を判定するビット列比較手段と、
を備えることを特徴とするノード装置。
【請求項２】
オーバレイネットワークシステムを構成する複数のノード装置であって、それぞれ、
自身のノード装置を識別するためのノード固有ビット列を生成するノード固有ビット列生成部と、
近接するノード装置を指定するための近接ノードリストを生成して記憶する近接ノードリスト生成記憶部と、
前記ノード固有ビット列生成部で生成されたノード固有ビット列を、前記近接ノードリストに従って前記近接するノード装置に送信するノード固有ビット列送信部と、
前記近接するノード装置から送信されてくるノード固有ビット列を受信するノード固有ビット列受信部と、
前記ノード固有ビット列受信部で受信されたノード固有ビット列を送信元のノード装置に対応付けて記憶するノード固有ビット列記憶部と、
前記近接ノードリストで指定される近接するノード装置に対応するノード固有ビット列と、前記ノード固有ビット列生成部で生成された自身のノード固有ビット列とを縮退して近接ノードビット列を生成する近接ノードビット列生成部と、
前記近接ノードビット列生成部で生成された近接ノードビット列を他のノード装置へ送信する近接ノードビット列送信部と、
前記他のノード装置から送信されてくる近接ノードビット列を受信する近接ノードビット列受信部と、
前記近接ノードビット列受信部で受信された近接ノードビット列と前記近接ノードビット列生成部で生成された自身の近接ノードビット列とを対応するビット同士で比較し、ビット間距離に従って近傍性を判定する近接ノードビット列比較部と、
を備えることを特徴とするノード装置。
【請求項３】
前記近接ノードビット列受信部で受信された近接ノードビット列を送信元のノード装置に対応付けて記憶する近接ノードビット列記憶部と、
前記近接ノードリストで指定されていないノード装置を送信元として前記近接ノードビット列記憶部に記憶された近接ノードビット列と、前記ノード固有ビット列生成部で生成されたノード固有ビット列とのビット間距離が遠くなるように該ノード固有ビット列を変更するノード固有ビット列変更部と、
を更に備えることを特徴とする請求項２に記載のノード装置。
【請求項４】
前記ノード固有ビット列変更部は、前記ノード固有ビット列生成部で生成されたノード固有ビット列の内で、前記近接ノードリストで指定されていないノード装置を送信元として前記近接ノードビット列記憶部に記憶された近接ノードビット列と一致している任意数のビットを変更することを特徴とする請求項３に記載のノード装置。
【請求項５】
前記ノード固有ビット列生成部は、前記ノード固有ビット列として疎なビット列を生成することを特徴とする請求項２、３または４に記載のノード装置。
【請求項６】
前記ノード固有ビット列生成部は、自身のノード装置に固有の識別符号からブルームフィルタを用いて前記疎なビット列を生成することを特徴とする請求項５に記載のノード装置。
【請求項７】
前記ノード固有ビット列生成部は、前記疎なビット列とグループ毎に固有の識別符号に対してブルームフィルタを用いて算出したビット列とのビット毎の論理和を取った値を、前記ノード固有ビット列として生成することを特徴とする請求項６に記載のノード装置。
【請求項８】
前記近接ノードリスト生成記憶部は、物理的な距離または論理的な距離のいずれか一方が近い他のノード装置、或いは物理的な距離と論理的な距離の両方が近い他のノード装置を、前記近接ノードリストによって近接するノード装置として指定することを特徴とする請求項２乃至７のいずれか１項に記載のノード装置。
【請求項９】
前記近接ノードリスト生成記憶部は、物理的な距離として、アンダーレイのネットワーク・トポロジ、ノード装置間の遅延時間、およびノード装置間の中継装置のホップ数の内の１つ以上の要素に基づく近接関係を用いることを特徴とする請求項８に記載のノード装置。
【請求項１０】
前記近接ノードリスト生成記憶部は、論理的な距離として、情報の結びつきによるグループ化に基づく近接関係を用いることを特徴とする請求項８に記載のノード装置。
【請求項１１】
前記近接ノードリスト生成記憶部は、論理的な距離として、ノード装置の管理構成のグループ化に基づく近接関係を用いることを特徴とする請求項８に記載のノード装置。
【請求項１２】
前記近接ノードビット列生成部は、前記近接ノードリストで指定される近接するノード装置に対応する前記ノード固有ビット列と、前記ノード固有ビット列生成部で生成された自身のノード固有ビット列の対応するビット同士の論理和によって前記近接ノードビット列を生成することを特徴とする請求項２乃至１１のいずれか１項に記載のノード装置。
【請求項１３】
前記近接ノードビット列比較部は、前記近接ノードビット列受信部で受信された近接ノードビット列と前記近接ノードビット列生成部で生成された近接ノードビット列との、ハミング距離または特定ビット値の一致数に従って前記ビット間距離を算出し、近傍性を判定することを特徴とする請求項２乃至１２のいずれか１項に記載のノード装置。
【請求項１４】
オーバレイネットワークシステムを構成する複数のノード装置であって、それぞれ、
近接するノード装置を指定するための近接ノードリストを生成して記憶する近接ノードリスト生成記憶部と、
前記近接ノードリストで指定される近接するノード装置の近接ノードビット列を記憶する近接ノードビット列記憶部と、
前記近接ノードビット列を生成すると共に、該近接ノードビット列と前記近接ノードリスト中の任意のノード装置の近接ノードビット列とのビット間距離が近づくように、該近接ノードビット列を変更する近接ノードビット列生成変更部と、
他のノード装置から通知された近接ノードビット列と、自身のノード装置の近接ノードビット列とのビット間距離に従って近傍性を判定する近接ノードビット列比較部と、
を備えることを特徴とするノード装置。
【請求項１５】
前記近接ノードリスト生成記憶部は、物理的な距離または論理的な距離のいずれか一方が近い他のノード装置、或いは物理的な距離と論理的な距離の両方が近い他のノード装置を、前記近接ノードリストによって近接するノード装置として指定することを特徴とする請求項１４に記載のノード装置。
【請求項１６】
前記近接ノードビット列生成変更部は、前記近接ノードリストから単数または複数のノード装置を選択し、該選択したノード装置の近接ノードビット列を取得し、該取得した近接ノードビット列の任意箇所のビットを自身のノード装置の近接ノードビット列の対応する箇所に上書きすることによって、該近接ノードビット列を変更することを特徴とする請求項１４または１５に記載のノード装置。
【請求項１７】
前記近接ノードビット列生成変更部は、前記近接ノードリストで指定されていない任意のノード装置を選択し、該選択したノード装置の近接ノードビット列を取得し、該取得した近接ノードビット列と自身の装置の近接ノードビット列とのビット間距離が遠ざかるように該自身の近接ノードビット列を変更することを特徴とする請求項１４または１５に記載のノード装置。
【請求項１８】
前記近接ノードビット列生成変更部は、前記近接ノードリストで指定されていない任意のノード装置を選択し、該選択したノード装置の近接ノードビット列を取得し、自身のノード装置の近接ノードビット列の内で、該取得した近接ノードビット列とで一致しているビットを変化させることによってビット間距離が遠ざかるように該自身の近接ノードビット列を変更することを特徴とする請求項１４または１５に記載のノード装置。
【請求項１９】
前記近接ノードビット列生成変更部は、自身のノード装置の近接ノードビット列の任意箇所のビットを異なる値に変更することを特徴とする請求項１４乃至１８のいずれか１項に記載のノード装置。
【請求項２０】
前記近接ノードビット列比較部は、他のノード装置から通知された近接ノードビット列と、自身のノード装置の近接ノードビット列との、ハミング距離または特定ビット値の一致数に従って前記ビット間距離を算出して、近傍性を判定することを特徴とする請求項１４乃至１９のいずれか１項に記載のノード装置。
【請求項２１】
コンピュータをオーバレイネットワークシステムを構成するノード装置として動作させるためのノード装置用プログラムであって、
自身のノード装置を識別するためのノード固有ビット列を生成するノード固有ビット列生成部、
近接するノード装置を指定するための近接ノードリストを生成して記憶する近接ノードリスト生成記憶部、
前記ノード固有ビット列生成部で生成されたノード固有ビット列を、前記近接ノードリストに従って前記近接するノード装置に送信するノード固有ビット列送信部、
前記近接するノード装置から送信されてくるノード固有ビット列を受信するノード固有ビット列受信部、
前記ノード固有ビット列受信部で受信されたノード固有ビット列を送信元のノード装置に対応付けて記憶するノード固有ビット列記憶部、
前記近接ノードリストで指定される近接するノード装置に対応する前記ノード固有ビット列と、前記ノード固有ビット列生成部で生成された自身のノード固有ビット列とを縮退して近接ノードビット列を生成する近接ノードビット列生成部、
前記近接ノードビット列生成部で生成された近接ノードビット列を他のノード装置へ送信する近接ノードビット列送信部、
前記他のノード装置から送信されてくる近接ノードビット列を受信する近接ノードビット列受信部、および、
前記近接ノードビット列受信部で受信された近接ノードビット列と前記近接ノードビット列生成部で生成された近接ノードビット列とを対応するビット同士で比較し、ビット間距離に従って近傍性を判定する近接ノードビット列比較部、
としてコンピュータを機能させることを特徴とするノード装置用プログラム。
【請求項２２】
コンピュータをオーバレイネットワークシステムを構成するノード装置として動作させるためのノード装置用プログラムであって、
近接するノード装置を指定するための近接ノードリストを生成して記憶する近接ノードリスト生成記憶部、
前記近接ノードリストで指定される近接するノード装置の近接ノードビット列を記憶する近接ノードビット列記憶部、
前記近接ノードビット列を生成すると共に、該近接ノードビット列と前記近接ノードリスト中の任意のノード装置の近接ノードビット列とのビット間距離が近づくように、該近接ノードビット列を変更する近接ノードビット列生成変更部、および、
他のノード装置から通知された近接ノードビット列と、自身のノード装置の近接ノードビット列とのビット間距離に従って近傍性を判定する近接ノードビット列比較部、
としてコンピュータを機能させることを特徴とするノード装置用プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、オーバレイネットワークにおけるノード装置、およびコンピュータをノード装置として動作させるためのノード装置用プログラム、特に、ノード装置間の近傍性の検出技術に関する。
【背景技術】
【０００２】
オーバレイネットワークとは、例えばインターネットのような既存の物理的なコンピュータ・ネットワークを用いて、その上位層に目的に応じて構築された別の論理的（仮想的）なコンピュータ・ネットワークである。オーバレイネットワーク上のノード装置（コンピュータ）は、下位ネットワークのトポロジを意識せずに通信することができる。
【０００３】
オーバレイネットワークの代表例には、Ｐ２Ｐ(Peer to Peer)がある。Ｐ２Ｐは、従来のクライアント・サーバ型のシステムとは異なり、ネットワークに接続されるノード装置（ピアともいう）同士がネットワークを介して対等に（ある時はクライアントとなり、ある時はサーバとなって）通信を行うことができるシステムである。これにより、Ｐ２Ｐは、特定のサーバに負荷とトラフィックが集中することがなく、高いスケーラビリティ（拡張性）が得られるというメリットがある。
【０００４】
複数のノード装置を分散的に協調させてオーバレイネットワークを構築する技術として、構造化オーバレイネットワークがある。これは、ノード装置毎に割り当てられたＩＤ（識別符号）でネットワークの構成に制約を持たせ、ＩＤ空間上で効率的なネットワークを自立的に構築するものである（非特許文献１〜５参照）。
【０００５】
一般的に、構造化オーバレイネットワークにおけるＩＤは、各ノード装置に割り当てられたＩＰ（Internet Protocol)アドレスとボート番号にハッシュ関数（例えば、ＳＨＡ(Secure Hash Standard)−１、非特許文献６参照）を適用してランダム空間に写像された値が用いられる。これにより、物理ネットワークとは全く異なる論理的なネットワークが構築される。即ち、構造化オーバレイネットワークでは、任意の２つのノード装置の間において、ＩＤ空間上での近傍性と物理ネットワーク上での近傍性（ホップ数や伝送遅延等）は無関係である。
【０００６】
従って、たとえノード装置Ａとノード装置Ｂが物理ネットワーク上で隣接している場合であっても、一方から他方にメッセージが到達するまでに、必要以上に多数のルータを経由する可能性がある。このため、従来のオーバレイネットワークでは、メッセージの伝送遅延が増大するという問題があった。
【０００７】
このような問題を解決するために、特許文献１には、非特許文献２の手法において、ＩＤの上位ビットをＩＰアドレスのネットワークアドレスに基づいてハッシュ関数で決定し、下位ビットをノード装置のＩＰアドレスとポート番号の組からハッシュ関数で決定するデータ管理装置が開示されている。このデータ管理装置では、ネットワークアドレスが近いノード装置同士にＩＤ空間上でも近い値のＩＤが付与されるので、物理ネットワークにおけるルータのホップ数を少なくすることができる。
【０００８】
なお、特許文献２には、ピア間のトランスポートネットワーク（物理ネットワーク）による長距離接続を抑制するために、オーバレイネットワークに参加する複数のピアを、類似のトランスポートネットワーク近接度を有するようにグループ化し、グループ間接続の数を最小限に抑えるように構成するシステムが記載されている。
【０００９】
特許文献３には、オーバレイネットワークを構成する各ノード装置が、自ら提供するサービス名とサービス実体を記憶し、サービス名をハッシュ化したサービスキーと自ノードの識別情報をハッシュ化したノード識別子のハッシュ空間における距離Ｄ１に基づいてサービスの提供を行うシステムが記載されている。即ち、各ノード装置は、距離Ｄ１がハッシュ空間上に存在する自ノード以外のノードのノード識別子とサービスキーとの距離Ｄ２のいずれよりも近い場合に、サービス実体を起動して自立的にグローバルサービスの提供を開始する。
【００１０】
特許文献４には、オーバレイネットワークに参加する各ピアが、複数のランドマークに対する通信の応答時間を測定し、その応答時間に基づいて多次元の位置情報を算出し、更に多次元の位置情報を空間充填曲線を用いて一次元の位置情報に変換し、この一次元の位置情報に空間分布関数を適用して均一化された一次元の情報を取得し、この一次元の情報と論理識別子空間の積を取ることによってピアの論理識別子を決定するオーバレイ検索技術が記載されている。これにより、ピアの論理識別子の分布が均一になり、特定のピアに負荷が偏らなくなるとされている。
【００１１】
特許文献５には、オーバレイネットワークのゾーン空間を、インデックス用のゾーン空間とルーティング用のゾーン空間の二重構造とし、インデックス用のゾーン空間はピアの負荷に応じて分割し、ルーティング用のゾーン空間はノードの近接性を考慮して分割するオーバレイ構築技術が記載されている。これにより、２つのゾーン空間で同じ位置のゾーンを管理するピア同士を互いにリンクすると、ピアの負荷の偏りがインデックス用のゾーン空間の分割で解消し、ルーティング効率はルーティング用のゾーン空間によって改善するとされている。
【００１２】
特許文献６には、オーバレイネットワークへ参加するノード装置が自身の論理的位置を表すノードＩＤを決定するときに、他のノード装置と重複しない固有のノードＩＤを決定するための技術が記載されている。特許文献６によれば、オーバレイネットワークへの参加を要求する参加要求ノード装置は、自らのノードＩＤを決定し、ルーティングテーブルの作成を目的として参加メッセージをコンタクトノードに送信する。一方、各ノード装置は、自身が参加要求ノードではないが、参加メッセージの最終転送先ノードである状態で参加メッセージを受信した場合に、自身のノードＩＤを含む転送完了メッセージを参加要求ノードに送信する。更に、参加要求ノード装置は、受信した転送完了メッセージの最終転送先にノードＩＤが自身のノードＩＤと一致する場合に、自ノード装置のノードＩＤを変更し、再度参加メッセージをコンタクトノードに送信する。
【００１３】
特許文献７には、ノードの総数が大きい場合に、フルメッシュでオーバレイネットワークを構成することの困難性を回避するために、オーバレイネットワークを階層構造化する技術が記載されている。特許文献７によれば、オーバレイネットワークを構成するノードの内、所定の条件に合う幾つかをスーパーノードとして論理的に接続してスーパーノード層を形成する。また、その他の一般ノードは、最も近いスーパーノードに論理的に接続して所属させ、これらの一般ノードが存在する階層を一般ノード層として形成する。更に、各ノードには２次元の座標位置を与え、各スーパーノードは、自身を中心に２次元空間を角度θ＝π／３で空間を６つのセクタに分割し、セクタｊ（ｊ＝１〜６）の空間に位置する他のスーパーノードの中から自己に最も距離が近いスーパーノードを、隣接スーパーノードとして論理的に接続してスーパーノード層を形成する。
【先行技術文献】
【特許文献】
【００１４】
【特許文献１】特開２００８−０１１３３０号公報
【特許文献２】特開２００５−０９４７７３号公報
【特許文献３】特開２００８−２０４２９９号公報
【特許文献４】特開２００８−２６９１４１号公報
【特許文献５】特開２００８−２９９５８６号公報
【特許文献６】特開２００９−０１７０６９号公報
【特許文献７】特開２００９−０４４３７１号公報
【００１５】
【非特許文献１】Sylvia Ratnasamy, Paul Francis, Mark Handley, Richard Karp, Scott Shenker, "A Scalable Content-Addressable Network", Proceedings of ACM SIGCOMM 2001.
【非特許文献２】Ion Stoica, Robert Morris, David Karger, M. Frans Kaashoek, Hari Balakrishnan, "Chord: A Scalable Peer-to-peer Lookup Service for Internet Applications", Proceedings of ACM SIGCOMM 2001.
【非特許文献３】Antony Rowstron, Peter Druschel, "Pastry: Scalable, decentralized object location and routing for large-scale peer-to-peer systems", Proceedings of the IFIP/ACM International Conference on Distributed Systems Platforms. Heiderberg, Germany, November 2001.
【非特許文献４】Petar Maymounkov, David Mazieres "Kademlia: A Peer-to-peer Information System Based on the XOR Metric", Proceedings of IPTPS 2002, Cambrige, Mar. 2002.
【非特許文献５】Ben Y. Zhao, Ling Huang, Jeremy Stribling, Sean C. Rhea, Anthony D. Joseph, John D. Kubiatowicz, "Tapestry: A Resilient Global-Scale Overlay for Service Deployment", IEEE Journal on Selected Areas in Communications, 2004.
【非特許文献６】FIPS PUB 180-1, "SECURE HASH STANDARD", U.S. Department of Commerce, Apr. 1995.
【非特許文献７】L. Yang, R. Dantu, T. Anderson, R. Gopal, "Forwarding and Control Element Separation (ForCES) Framework", RFC3746, IETF, Apr. 2004.
【非特許文献８】Nick McKeown, Tom Anderson, Hari Balakrishnan, Guru Parulkar, Larry Peterson, Jennifer Rexford, Scott Shenker, Jonathan Turner, "OpenFlow: Enabling Innovation in Campus Networks", SIGCOMM Computer Communication Review, Mar. 2008.
【発明の概要】
【発明が解決しようとする課題】
【００１６】
特許文献１等に記載された従来の手法では、物理ネットワークにおけるＩＰアドレスの階層構造を用いて、近傍性の算出を行っている。このため、ＩＰアドレスが存在しなかったり、存在していてもネットワークアドレス部が同じであったりする場合には、物理的近傍性を算出することができないという課題があった。
【００１７】
本発明は上記課題に鑑みてなされたもので、オーバレイネットワークにおけるＩＰアドレスの有無に拘わらず、与えられたグループ情報や個々のノード装置の近接情報に基づいてノード装置間の近傍性を示す値を算出し、この値同士の比較のみでノード装置間の距離を算出することを目的とする。
【課題を解決するための手段】
【００１８】
上記目的を達成するために、本発明の第１の観点に係るノード装置は、オーバレイネットワークシステムを構成する複数のノード装置であって、それぞれ、自身のノード装置に固有の情報と近接するノード装置に固有の情報とを縮退して近接ノードビット列を生成するビット列生成手段と、前記ビット列生成手段で生成された近接ノードビット列を他のノード装置へ送信するビット列送信手段と、前記他のノード装置から受信した近接ノードビット列と前記ビット列生成手段で生成された近接ノードビット列とを対応するビット同士で比較し、ビット間距離に従って該他のノード装置の近傍性を判定するビット列比較手段と、を備えることを特徴とする。
【００１９】
本発明の第２の観点に係るノード装置は、オーバレイネットワークシステムを構成する複数のノード装置であって、それぞれ、自身のノード装置を識別するためのノード固有ビット列を生成するノード固有ビット列生成部と、近接するノード装置を指定するための近接ノードリストを生成して記憶する近接ノードリスト生成記憶部と、前記ノード固有ビット列生成部で生成されたノード固有ビット列を、前記近接ノードリストに従って前記近接するノード装置に送信するノード固有ビット列送信部と、前記近接するノード装置から送信されてくるノード固有ビット列を受信するノード固有ビット列受信部と、前記ノード固有ビット列受信部で受信されたノード固有ビット列を送信元のノード装置に対応付けて記憶するノード固有ビット列記憶部と、前記近接ノードリストで指定される近接するノード装置に対応するノード固有ビット列と、前記ノード固有ビット列生成部で生成された自身のノード固有ビット列とを縮退して近接ノードビット列を生成する近接ノードビット列生成部と、前記近接ノードビット列生成部で生成された近接ノードビット列を他のノード装置へ送信する近接ノードビット列送信部と、前記他のノード装置から送信されてくる近接ノードビット列を受信する近接ノードビット列受信部と、前記近接ノードビット列受信部で受信された近接ノードビット列と前記近接ノードビット列生成部で生成された自身の近接ノードビット列とを対応するビット同士で比較し、ビット間距離に従って近傍性を判定する近接ノードビット列比較部と、を備えることを特徴とする。
【００２０】
本発明の第３の観点に係るノード装置は、オーバレイネットワークシステムを構成する複数のノード装置であって、それぞれ、近接するノード装置を指定するための近接ノードリストを生成して記憶する近接ノードリスト生成記憶部と、前記近接ノードリストで指定される近接するノード装置の近接ノードビット列を記憶する近接ノードビット列記憶部と、前記近接ノードビット列を生成すると共に、該近接ノードビット列と前記近接ノードリスト中の任意のノード装置の近接ノードビット列とのビット間距離が近づくように、該近接ノードビット列を変更する近接ノードビット列生成変更部と、他のノード装置から通知された近接ノードビット列と、自身のノード装置の近接ノードビット列とのビット間距離に従って近傍性を判定する近接ノードビット列比較部と、を備えることを特徴とする。
【００２１】
本発明の第４の観点に係るノード装置用プログラムは、コンピュータをオーバレイネットワークシステムを構成するノード装置として動作させるためのプログラムであって、自身のノード装置を識別するためのノード固有ビット列を生成するノード固有ビット列生成部、近接するノード装置を指定するための近接ノードリストを生成して記憶する近接ノードリスト生成記憶部、前記ノード固有ビット列生成部で生成されたノード固有ビット列を、前記近接ノードリストに従って前記近接するノード装置に送信するノード固有ビット列送信部、前記近接するノード装置から送信されてくるノード固有ビット列を受信するノード固有ビット列受信部、前記ノード固有ビット列受信部で受信されたノード固有ビット列を送信元のノード装置に対応付けて記憶するノード固有ビット列記憶部、前記近接ノードリストで指定される近接するノード装置に対応する前記ノード固有ビット列と、前記ノード固有ビット列生成部で生成された自身のノード固有ビット列とを縮退して近接ノードビット列を生成する近接ノードビット列生成部、前記近接ノードビット列生成部で生成された近接ノードビット列を他のノード装置へ送信する近接ノードビット列送信部、前記他のノード装置から送信されてくる近接ノードビット列を受信する近接ノードビット列受信部、および、前記近接ノードビット列受信部で受信された近接ノードビット列と前記近接ノードビット列生成部で生成された近接ノードビット列とを対応するビット同士で比較し、ビット間距離に従って近傍性を判定する近接ノードビット列比較部、としてコンピュータを機能させることを特徴とする。
【００２２】
本発明の第５の観点に係るノード装置用プログラムは、コンピュータをオーバレイネットワークシステムを構成するノード装置として動作させるためのプログラムであって、近接するノード装置を指定するための近接ノードリストを生成して記憶する近接ノードリスト生成記憶部、前記近接ノードリストで指定される近接するノード装置の近接ノードビット列を記憶する近接ノードビット列記憶部、前記近接ノードビット列を生成すると共に、該近接ノードビット列と前記近接ノードリスト中の任意のノード装置の近接ノードビット列とのビット間距離が近づくように、該近接ノードビット列を変更する近接ノードビット列生成変更部、および、他のノード装置から通知された近接ノードビット列と、自身のノード装置の近接ノードビット列とのビット間距離に従って近傍性を判定する近接ノードビット列比較部、としてコンピュータを機能させることを特徴とする。
【発明の効果】
【００２３】
本発明によれば、オーバレイネットワークにおけるＩＰアドレスの有無に拘わらず、与えられたグループ情報や個々のノード装置の近接情報に基づいてノード装置間の近傍性を示す値を算出し、この値同士の比較のみでノード装置間の距離を算出することができる。
【図面の簡単な説明】
【００２４】
【図１】本発明の実施形態のノード装置が適用されるネットワークの一例を示す構成図である。
【図２】本発明の第１の実施形態を示すノード装置の構成図である。
【図３】図２のノード装置の動作を示すフローチャートである。
【図４】本発明の第２の実施形態を示すノード装置の構成図である。
【図５】図４のノード装置の動作を示すフローチャートである。
【図６】本発明の第３の実施形態を示すノード装置の構成図である。
【図７】図６のノード装置の動作を示すフローチャートである。
【発明を実施するための形態】
【００２５】
以下、本発明の実施の形態について図面を参照して詳細に説明する。
（第１の実施形態）
本発明における第１の実施形態のノード装置は、図１に示すようなネットワークに適用される。このネットワークは、物理的な通信網１Ａ，１Ｂ，１Ｃと、これらの通信網１Ａ〜１Ｃの間を接続する基幹回線２Ａ，２Ｂと、各通信網１Ａ〜１Ｃに接続される複数のノード装置１０で構成されている。
【００２６】
例えば、通信網１Ａにはノード装置１０−Ａ１，１０−Ａ２，１０−Ａ３が接続され、通信網１Ｂにはノード装置１０−Ｂ１，１０−Ｂ２，１０−Ｂ３が接続され、通信網１Ｃにはノード装置１０−Ｃ１，１０−Ｃ２，１０−Ｃ３が接続されている。なお、通信網１Ａ〜１Ｃの数や、各通信網１Ａ〜１Ｃに接続されるノード装置１０の数は、任意である。また、以下の説明では、特定のノード装置を指す場合を除き、ノード装置の符号におけるサフィックス（Ａ１等）を省略する。
【００２７】
ノード装置１０はいずれも同様の構成で、図２に示すように、ノード固有ビット列生成部１１、近接ノードリスト生成記憶部１２、ノード固有ビット列送信部１３、ノード固有ビット列受信部１４、ノード固有ビット列記憶部１５、近接ノードビット列生成部１６、近接ノードビット列送信部１７、近接ノードビット列受信部１８、および近接ノードビット列比較部１９を備えている。
【００２８】
なお、ノード装置１０は、一般的には通信機能を備えたパーソナル・コンピュータ等で構成され、ノード固有ビット列生成部１１等の各部は、予め組み込まれたプログラムによって制御されるコンピュータの機能として実現されるようになっている。
【００２９】
ノード固有ビット列生成部１１は、自身のノード装置１０に固有のビット列であるノード固有ビット列を生成するものである。ノード固有ビット列は、具体的には、Ｎビット（但し、Ｎは２以上の整数）のビット列のうちで、任意のビット数ｎ（但し、ｎは１以上の整数）を特定ビット値（例えば、論理値“１”）に設定したものである。ただし、特定ビット値を有するビットは疎である必要があるので、ｎ＜Ｎ／２となる。一度生成されたノード固有ビット列は、ノード固有ビット列生成部１１に保存され、要求に応じてその保存された値が出力されるようになっている。
【００３０】
ノード固有ビット列の生成方法としては、乱数を用いる方法がある。即ち、１〜Ｎの整数を発生する乱数発生器を使用し、発生した乱数に対応する桁のビットを“１”にすることを繰り返し、Ｎビット中のｎビットが“１”になるようにすれば良い。
【００３１】
また、他のノード固有ビット列の生成方法としては、例えば、ＩＰアドレス、ポート番号、ＭＡＣ(Media Access Control)アドレス、ＳＳＨ(Secure Shell)のキー等の、ノード装置１０に固有のＩＤに対して、ブルームフィルタをかける方法がある。ブルームフィルタは、異なる値を生成する複数のハッシュ関数を使用し、ＩＤに対してハッシュ関数を通した値をビット列長Ｎで割って余りを算出し、余り＋１に対応する桁のビットを“１”にするものである。
【００３２】
更に、他のノード固有ビット列の生成方法としては、ランダム生成値または固有のＩＤにブルームフィルタをかけた値と、あるグループ内のノード装置で共有されるＩＤにブルームフィルタをかけた値との論理和を取ってノード固有ビット列とする方法もある。なお、グループ内のノード装置で共有されるＩＤの具体例としては、インターネットにおけるＢＧＰ(Boarder Gateway Protocol)のＡＳ(Autonomous System)番号や、ＯＳＰＦ(Open Shortest Path First)のエリア番号等がある。
【００３３】
近接ノードリスト生成記憶部１２は、自身のノード装置１０が属する近接ノード装置グループのリスト、即ち近接ノードリストを生成して記憶するものである。近接ノード装置グループは、ノード装置間で同じものであっても良いし、ノード装置毎に異なっていても良い。また、近接ノード装置グループは、物理的に近接するものであっても良いし、論理的に近接するものであっても良い。また、物理的な近接と論理的な近接の両方を考慮して、近接ノード装置グループを構成しても良い。更に、近接ノードリストは、単一の近接ノード装置グループに属するノード装置に限らず、複数の近接ノード装置グループのノード装置を含むことができる。
【００３４】
物理的な近接ノード装置グループは、アンダーレイのネットワーク・トポロジを考慮した近接関係を持つノード装置から構成される。具体的には、近接ノード装置グループは、当該ノード装置が接続している単一または複数のスイッチやルータ等のネットワーク中継装置に接続される他のノード装置で構成される。また、同一のネットワーク識別子（例えば、ＩＰアドレスにおけるネットワークアドレス）を有するノード装置や、同一のネットワーク識別子のグループに属するノード装置によって、近接ノード装置グループを構成することもできる。
【００３５】
これらのアンダーレイのネットワーク情報は、ネットワーク中継装置の設定情報に基づいて事前に設定しても良いが、管理用情報取得機構（ＳＮＭＰ：Simple Network Management Protocol）等を用いて設定情報を取得して動的に設定することも可能である。
【００３６】
グループの単位としては、ノード装置が属する単一または複数のコンピュータ・クラスタとすることができる。また、ノード装置間の伝送遅延時間に基づいてグループ分けをすることができる。即ち、ノード装置間の伝送遅延時間がある閾値以内の場合に、そのノード装置は同じ通信網に属するグループであると判断する。
【００３７】
また、他のグループ化の方法としては、ルーティング・プロトコルのリンク情報（例えば、ＯＳＰＦのＬＳＡ：Link-State Advertisement）や、隣接する中継装置を発見するプロトコル（例えば、ＬＬＤＰ：Link Layer Discovery Protocol）や、事前設定からネットワーク中継装置のトポロジ情報を取得し、ノード装置が接続されているネットワーク中継装置からのホップ数に従ってグループ化を行う方法がある。また、ルーティング・プロトコルの管理区分に応じて、ノード装置のグループ化を行うこともできる。
【００３８】
ネットワーク中継装置において、制御プレーンと中継プレーンを分離し、ノード間通信で用いられる通信網を介して繋がるアーキテクチャ（ＦｏｒＣＥＳ（非特許文献７参照）やＯｐｅｎＦｌｏｗ（非特許文献８参照））の場合、中継プレーンであるネットワーク中継装置の接続に基づいて、制御プレーンが動作しているノード装置のグループ化を行うことができる。また、制御プレーンが接続しているネットワーク中継装置間の接続に基づいて、ノード装置のグループ化を行うこともできる。
【００３９】
一方、論理的な近接ノード装置グループは、情報の結びつきに基づいてノード装置をグループ化したものである。具体的には、通信頻度の高いノード装置や、必要とする情報が同一であるノード装置をグループ化する。通信頻度によるグループ化は、ノード装置毎の通信履歴を参照し、単位時間当たりの通信回数が閾値を超えたものを同一グループとする。必要とする情報によるグループ化は、共有データベースのテーブル名やメッセージング機構のメッセージチャネル名が同一であるものの数に基づき、その数が閾値を超えたものを同一グループとする。
【００４０】
また、論理的な近接ノード装置グループとして、ノード装置の管理構成を用いても良い。具体的なＤＮＳ(Domain Name System)のＦＱＤＮ(Fully Qualified Domain Name)といった階層構造のドメインを持つノード装置名において、単一または複数の階層のドメインに属するノード装置を同一グループとしても良い。また、ＬＤＡＰ(Lightweight Directory Access Protocol)のディレクトリサービスでノード装置が管理されている場合には、そのディレクトリサービスにおいて単一または複数のディレクトリに属するノード装置を同一グループとしても良い。
【００４１】
更に、論理的な近接ノード装置グループとして、オーバレイネットワークに対する持続時間の長さによるグループ化を行うこともできる。Ｐ２Ｐネットワークでは、接続時間が短いほどオーバレイネットワークから離脱する可能性が高く、接続時間が長いノード装置ほどオーバレイネットワークに留まっている可能性が高い。従って、一定以上の接続時間を有するノード装置をグループ化することは、オーバレイネットワークの信頼性向上につながる。
【００４２】
ノード固有ビット列送信部１３は、自身のノード固有ビット列をノード固有ビット列生成部１１から読み出し、近接ノードリスト生成記憶部１２に記憶されている近接ノードリストに従って、近接するノード装置１０に送信するものである。
【００４３】
ノード固有ビット列受信部１４は、近接する他のノード装置１０から送られてくるノード固有ビット列を受信するものである。ノード固有ビット列受信部１４で受信された他のノード装置１０のノード固有ビット列は、ノード固有ビット列記憶部１５に与えられ、このノード固有ビット列記憶部１５によって、各ノード装置１０に対応付けて記憶されるようになっている。
【００４４】
近接ノードビット列生成部１６は、ノード装置１０が属する近接ノード装置グループの各ノード装置１０のノード固有ビット列と、自身のノード固有ビット列に従って、近接ノードの情報を縮退した近接ノードビット列を生成するものである。即ち、近接ノードビット列生成部１６は、近接ノードリスト生成記憶部１２から近接ノードリストを読み出し、この近接ノードリストに該当するノード装置１０のノード固有ビット列をノード固有ビット列記憶部１５から読み出す。更に、近接ノードビット列生成部１６は、ノード固有ビット列生成部１１から自身のノード固有ビット列を読み出し、自身と近接するノード装置１０のノード固有ビット列の論理和を算出し、その算出結果を近接ノードビット列として出力する。
【００４５】
近接ノードビット列送信部１７は、近接ノードビット列生成部１６で生成された近接ノードビット列を、他のノード装置１０へ送信するものである。この近接ノードビット列の送信は、単独ではなく、メッセージ送受信等の他の通信が行われるタイミングで、ペイロードに含めてメッセージ等と一緒に送信することが望ましい。
【００４６】
近接ノードビット列受信部１８は、他のノード装置１０から（メッセージ等と一緒に）送られてくる近接ノードビット列を受信するものである。
【００４７】
近接ノードビット列比較部１９は、近接ノードビット列受信部１８で受信された他のノード装置１０からの近接ノードビット列と、近接ノードビット列生成部１６で生成された自身の近接ノードビット列を比較し、ノード装置１０間の近傍性を算出するものである。近傍性の算出方法としては、ハミング距離や一致したビット数によるビット間距離を用いる。ハミング距離の場合は、値が小さいほど近い位置となり、一致したビット数の場合は、一致数が多いほど近い位置となる。ノード固有ビット列として“１”のビットが疎な値を用いている場合には、ハミング距離または一致した“０”のビット数で比較する。
【００４８】
近接ノードビット列比較部１９で算出されたノード装置１０間の近傍性の判定結果は、実際のノード装置１０間の接続制御に用いられる。例えば、あるノード装置１０との間の距離が、ある閾値以下であれば該当するノード装置１０との間の接続を続行し、この閾値を超えていればその接続を切断するように制御することができる。
【００４９】
次に、図３を参照しつつ、図２のノード装置の動作を説明する。なお、この動作説明では、図１中のノード装置１０−Ａ１を中心として、ノード装置１０−Ａ２，１０−Ａ３，１０−Ｂ１，１０−Ｂ２，１０−Ｂ３が近接するノード装置に指定されるものとする。ここでは、ノード装置１０−Ａ１の動作を説明するが、他のノード装置１０−Ａ２等においても、それぞれ同様の動作が行われる。
【００５０】
図３（ａ）に示すノード固有ビット列生成／送受信処理では、まず、ノード装置１０−Ａ１のノード固有ビット列生成部１１は、自身のノード固有ビット列を生成する（ステップＳ１）。ここでは、ノード固有ビット列の長さであるＮを９ビットとし、特定ビット値（ここでは、論理値“１”）を有するビット数ｎを１とする。
【００５１】
これにより、ノード装置１０−Ａ１のノード固有ビット列は、例えば“000000001”に設定され、ノード装置１０−Ａ２，１０−Ａ３，１０−Ｂ１，１０−Ｂ２，１０−Ｂ３，１０−Ｃ１，１０−Ｃ２，１０−Ｃ３のノード固有ビット列は、それぞれ、“000000010"，“000000100”，“000001000”，“000010000”，“000100000”，“001000000”，“010000000”，“100000000”に設定されるものとする。なお、各ノード装置１０が同じノード固有ビット列を設定しないための方法は、例えば特許文献６に記載されている。
【００５２】
ノード装置１０−Ａ１の近接ノードリスト生成記憶部１２は、物理的または論理的な近接関係に基づいて近接ノードリストを生成する（ステップＳ２）。ここでは、前述のように、物理的な近接関係に基づいて、ノード装置１０−Ａ２，１０−Ａ３，１０−Ｂ１，１０−Ｂ２，１０−Ｂ３を近接するノード装置として、近接ノードリストが生成される。
【００５３】
また、ノード装置１０−Ａ１のノード固有ビット列送信部１３は、ノード固有ビット列生成部１１で生成されたノード固有ビット列を、近接ノードリスト生成記憶部１２の近接ノードリストに登録されているノード装置１０に送信する（ステップＳ３）。これにより、ノード装置１０−Ａ１のノード固有ビット列“000000001"が、近接するノード装置１０−Ａ２，１０−Ａ３，１０−Ｂ１，１０−Ｂ２，１０−Ｂ３に送信される。
【００５４】
一方、ノード装置１０−Ａ１のノード固有ビット列受信部１４は、他のノード装置１０−Ａ２等から送られてくるノード固有ビット列を受信し（ステップＳ４）、ノード固有ビット列記憶部１５に記憶する（ステップＳ５）。このようにして、ノード装置１０−Ａ１のノード固有ビット列が近接するノード装置１０−Ａ２等に通知されると共に、これらの近接するノード装置１０−Ａ２等からそれぞれのノード装置１０で設定されたノード固有ビット列が、このノード装置１０−Ａ１に通知される。
【００５５】
図３（ｂ）に示す近接ノードビット列生成／送信処理では、近接ノードビット列生成部１６が、ノード固有ビット列生成部１１から自身のノード固有ビット列を読み出して取得する（ステップＳ１１）。また、近接ノードビット列生成部１６は、近接ノードリスト生成記憶部１２から近接ノードリストを読み出し、この近接ノードリストに該当する近接するノード装置１０のノード固有ビット列をノード固有ビット列記憶部１５から読み出して取得する（ステップＳ１２）。
【００５６】
更に、近接ノードビット列生成部１６は、自身と近接するノード装置１０のノード固有ビット列の論理和を算出し、その算出結果を近接ノードビット列として生成する（ステップＳ１３）。これにより、ノード装置１０−Ａ１のノード固有ビット列“000000001”と、近接するノード装置１０−Ａ２，１０−Ａ３，１０−Ｂ１，１０−Ｂ２，１０−Ｂ３のそれぞれのノード固有ビット列“000000010”，“000000100”，“000001000”，“000010000”，“000100000”の論理和“000111111”が、近接ノードビット列として生成される。
【００５７】
近接ノードビット列生成部１６で生成された近接ノードビット列は、メッセージの送受信等の他の通信が行われるタイミングで、近接ノードビット列送信部１７によって読み出され、ペイロードに載せられてメッセージ等と共に他のノード装置１０に送信される（ステップＳ１４）。
【００５８】
図３（ｃ）に示す近傍性判定処理では、他のノード装置１０からメッセージ等が送信されてくると、近接ノードビット列受信部１８が、そのメッセージ等と共にペイロードに載せられてくる近接ノードビット列を受信する（ステップＳ２１）。
【００５９】
近接ノードビット列受信部１８で受信された近接ノードビット列は、近接ノードビット列比較部１９に与えられ、近接ノードビット列生成部１６で生成された近接ノードビット列と比較される（ステップＳ２２）。
【００６０】
例えば、近傍性の算出にハミング距離を用いる場合、ノード装置１０−Ａ２が近接ノード装置としてノード装置１０−Ａ１，１０−Ａ３，１０−Ｂ１〜１０−Ｂ３を指定していれば、このノード装置１０−Ａ２の近接ノードビット列は、ノード装置１０−Ａ１の近接ノードビット列と同じ“000111111”である。従って、ノード装置１０−Ａ１とノード装置１０−Ａ２との間のハミング距離は０となる。
【００６１】
また、ノード装置１０−Ｂ１が近接するノード装置として図１中のすべてのノード装置１０−Ａ１〜１０−Ｃ３を指定している場合、このノード装置１０−Ｂ１の近接ノードビット列は“111111111”である。従って、ノード装置１０−Ａ１とノード装置１０−Ｂ１との間のハミング距離は３となる。
【００６２】
また、ノード装置１０−Ｃ１が近接ノード装置としてノード装置１０−Ｂ１〜１０−Ｂ３，１０−Ｃ２，１０−Ｃ３を指定している場合、このノード装置１０−Ｃ１の近接ノードビット列は“111111000”である。従って、ノード装置１０−Ａ１とノード装置１０−Ｃ１との間のハミング距離は６となる。
【００６３】
近接ノードビット列比較部１９で算出された近傍性判定結果は、図示しない接続管理部等に与えられ、ノード装置１０間の接続制御に利用される。
【００６４】
以上詳細に説明したように、第１の実施形態のノード装置１０は、近接ノードリストに従って近接ノードビット列を生成し、この近接ノードビット列と他のノード装置１０から受信した近接ノードビット列のビット間距離に従って近傍性を判定している。
これにより、オーバレイネットワークにおけるＩＰアドレスの有無に拘わらず、与えられたグループ情報や個々のノード装置の近接情報に基づいて、即ち、任意の基準に従ってノード装置１０間の近傍性を示す値を算出し、この値同士の比較のみでノード装置１０間の距離を算出することができるという利点がある。
【００６５】
（第２の実施形態）
本発明における第２の実施形態のノード装置１０Ａは、図１中のノード装置１０に代えて用いられるもので、図４に示すように、第１の実施形態のノード装置１０に、近接ノードビット列記憶部２０とノード固有ビット列変更部２１を追加したものである。なお、図４において、図２中の構成要素と共通の要素には共通の符号を付し、その説明は省略する。
【００６６】
近接ノードビット列記憶部２０は、近接ノードビット列受信部１８で受信した近接ノードビット列を、それを送信したノード装置１０Ａと対応付けて記憶するものである。
【００６７】
ノード固有ビット列変更部２１は、自身のノード装置１０Ａの近接ノードビット列と、近接ノードリスト生成記憶部１２に登録されていないノード装置１０Ａの近接ノードビット列とのビット間距離が遠くなるように、自身のノード固有ビット列を変更するものである。
【００６８】
具体的に説明すると、ノード固有ビット列変更部２１は、近接ノードリスト生成記憶部１２の近接ノードリストを参照し、この近接ノードリストに存在しないノード装置１０Ａの近接ノードビット列を近接ノードビット列記憶部２０から取得し、取得した近接ノードビット列と自身のノード固有ビット列とで一致しているビットを調べ、一致している自身のノード固有ビット列中の任意数のビットを変更するものである。この変更回数は１回でも良いし、複数回繰り返して行っても良い。
【００６９】
次に、図５を参照しつつ、図４のノード装置１０Ａにおけるノード固有ビット列変更処理の動作を説明する。
【００７０】
近接ノードビット列生成部１６は、ノード固有ビット列生成部１１から自身のノード固有ビット列を読み出して取得する（ステップＳ３１）と共に、近接ノードリスト生成記憶部１２から近接ノードリストを読み出し、この近接ノードリストに該当する近接するノード装置１０Ａのノード固有ビット列をノード固有ビット列記憶部１５から読み出して取得する（ステップＳ３２）。
【００７１】
更に、近接ノードビット列生成部１６は、自身と近接するノード装置１０Ａのノード固有ビット列の論理和を算出し、その算出結果を近接ノードビット列として生成する（ステップＳ３３）。
【００７２】
ノード固有ビット列変更部２１は、まず、近接ノードビット列記憶部２０に記憶された近接ノードビット列の内で、近接ノードリストに登録されていないノード装置１０Ａに対応する近接ノードビット列を取得する（ステップＳ３４）。次に、ノード固有ビット列変更部２１は、ステップＳ３４で取得した近接ノードビット列と、近接ノードビット列生成部１６で生成された自身の近接ノードビット列とをビット毎に比較し、一致しているビット数を算出する（ステップＳ３５）。
【００７３】
更に、ノード固有ビット列変更部２１は、近接ノードビット列中の一致しているビット数が閾値以下となるノード装置１０Ａが存在するか否かの判定を行う（ステップＳ３６）。一致するビット数が閾値以下となるノード装置１０Ａが存在する場合には（ステップＳ３６；はい）、ノード固有ビット列生成部１１で生成した自身のノード装置１０Ａのノード固有ビット列を変更し（ステップＳ３７）、ステップＳ３３の処理へ戻る。
【００７４】
一方、ステップＳ３５で算出した一致ビット数が閾値以下となるノード装置１０Ａが存在しない場合には（ステップＳ３６；いいえ）、ノード固有ビット列送信部１３は、ノード固有ビット列生成部１１で生成された自身のノード装置１０Ａのノード固有ビット列を変更せずにそのまま、他のノード装置１０Ａへ送信する（ステップＳ３８）。
【００７５】
なお、このノード固有ビット列変更処理は、ノード装置１０Ａの起動時に行われるだけでなく、動作中に周期的に行うことができる。これにより、近傍性のないノード装置１０Ａ間で近傍性があるような近接ノードビット列が生成されたとしても、時間の経過と共に近傍性をなくすことができる。
【００７６】
（第３の実施形態）
本発明における第３の実施形態のノード装置３０は、図１中のノード装置１０に代えて用いられるもので、図６に示すように、近接ノードリスト生成記憶部３１、近接ノード間近接ノードビット列受信部３２、近接ノードビット列記憶部３３、近接ノードビット列生成変更部３４、近接ノード間近接ノードビット列送信部３５、近接ノードビット列送信部３６、近接ノードビット列受信部３７、および近接ノードビット列比較部３８を備えている。
【００７７】
近接ノードリスト生成記憶部３１は、自身のノード装置３０が属する近接ノード装置グループのリスト、即ち近接ノードリストを生成して記憶するもので、図２中の近接ノードリスト生成記憶部１２と同様の機能を有している。
【００７８】
近接ノード間近接ノードビット列受信部３２は、近接ノードリスト生成記憶部３１に記憶されている近接ノードリストのノード装置３０から送信されてくる近接ノードビット列を受信するものである。
【００７９】
近接ノードビット列記憶部３３は、近接ノード間近接ノードビット列受信部３２で受信した近接ノードビット列を、送信元のノード装置３０と対応付けて記憶するものである。近接ノードビット列記憶部３３の記憶内容の更新は、任意のタイミングで行われる。この更新タイミングは、一定間隔でも良いし、一定間隔である確率に基づいて行っても良い。
【００８０】
近接ノードビット列生成変更部３４は、自身のノード装置３０の近接ノードビット列を生成すると共に、その生成した近接ノードビット列を近接ノードリスト中の任意のノード装置３０の近接ノードビット列に近づくように変更するものである。
【００８１】
具体的には、近接ノードビット列生成変更部３４は、近接ノードリスト生成記憶部３１に記憶された近接ノードリストから単数または複数のノード装置３０を選択し、選択したノード装置３０に対応する近接ノードビット列を近接ノードビット列記憶部３３から取得する。更に、取得した近接ノードビット列の任意箇所（複数箇所も可能）のビットを、自身のノード装置３０の近接ノードビット列の対応する箇所に上書きする。これにより、自ノード装置３０と他の任意のノード装置３０の近接ノードビット列間のハミング距離が近づく。
【００８２】
もしも近接ノードビット列が存在しない場合には、乱数またはノード固有のＩＤ（例えば、ＩＰアドレス、ポート番号、ＭＡＣアドレス、ＳＳＨのキー、商用ソフトエアのシリアル番号等）にハッシュ関数をかけた値を準備し、その値の任意箇所のビットを、自身のノード装置３０の近接ノードビット列の対応する箇所に上書きする。
【００８３】
なお、近接ノードビット列の変更によってすべてのノード装置３０の近接ノードビット列が同じ値になることを防止するために、上書き変更よりも小さい確率でノード装置３０の近接ノードビット列の任意箇所のビットを異なる値に変更するようにしても良い。
【００８４】
近接ノード間近接ノードビット列送信部３５は、近接ノードリスト生成記憶部３１に記憶された近接ノードリストのノード装置３０に対して、近接ノードビット列生成変更部３４で生成または変更された自身の近接ノードビット列を送信するものである。この近接ノードビット列の送信は、単独ではなく、メッセージの送受信等の他の通信が行われるタイミングで、ペイロードに含めてメッセージ等と一緒に送信することが望ましい。
【００８５】
近接ノードビット列送信部３６は、近接ノードビット列生成変更部３４で生成または変更された自身の近接ノードビット列を、近接ノードリストのノード装置３０に限定せず、他のノード装置３０に送信するものである。この近接ノードビット列の送信も、単独ではなく、メッセージの送受信等の他の通信が行われるタイミングで、ペイロードに含めてメッセージ等と一緒に送信することが望ましい。
【００８６】
なお、近接ノード間近接ノードビット列送信部３５と近接ノードビット列送信部３６とは、近接ノードビット列の送信先が、近接ノードリストで指定されたノード装置３０であるか否かが相違するだけで、その他の機能は同一である。従って、近接ノード装置間の情報の送信であることが識別できれば、共有することができる。識別の方法としては、送信時に予め近接するノード装置３０に対して識別用のフラグを入れる方法がある。
【００８７】
近接ノードビット列受信部３７は、他のノード装置３０からの近接ノードビット列を受信するものである。
なお、近接ノード間近接ノードビット列受信部３２と近接ノードビット列受信部３７とは、近接ノードビット列の送信元が、近接ノードリストで指定されたノード装置３０であるか否かが相違するだけで、その他の機能は同一である。従って、近接ノード装置間の情報の受信であることが識別できれば、共有することができる。識別の方法としては、受信時に送信元のノード装置３０を、近接ノードリストと照合する方法がある。
【００８８】
近接ノードビット列比較部３８は、近接ノードビット列受信部３７で受信された他のノード装置３０からの近接ノードビット列と、近接ノードビット列生成変更部３４で生成または変更された自身のノード装置３０の近接ノードビット列を比較し、ノード装置３０間の近傍性を算出するものである。近傍性の算出方法には、図２中の近接ノードビット列比較部１９と同様に、ハミング距離や一致したビット数によるビット間距離を用いる方法がある。
【００８９】
次に、図７を参照しつつ、図６のノード装置３０における近傍性判定処理の動作を説明する。
【００９０】
まず、近接ノードリスト生成記憶部３１は、近接ノードリストを生成して記憶する（ステップＳ４１）。一方、近接ノード間近接ノードビット列受信部３２は、近接するノード装置３０から送信されてくる近接ノードビット列を受信し（ステップＳ４２）、近接ノードビット列記憶部３３は、その受信した近接ノードビット列を記憶する（ステップＳ４３）。
【００９１】
次に、近接ノードビット列生成変更部３４は、自身の近接ノードビット列がまだ生成されていない場合には、近接ノードリスト生成記憶部３１の近接ノードリストを参照して近接ノードビット列を生成する。既に近接ノードビット列が生成されていれば、近接ノードビット列生成変更部３４は、近接ノードリスト生成記憶部３１の近接ノードリストと近接ノードビット列記憶部３３に記憶された近接ノードビット列に従って、自身の近接ノードビット列を変更する（ステップＳ４４）。
【００９２】
近接ノード間近接ノードビット列送信部３５は、近接ノードビット列生成変更部３４で生成または変更された近接ノードビット列を、メッセージ等の送信タイミングに合わせて、近接するノード装置３０へ送信する（ステップＳ４５）。
【００９３】
近接ノードビット列受信部３７は、他のノード装置３０からメッセージ等と共に送信されてくる近接ノードビット列を受信する（ステップＳ４６）。近接ノードビット列受信部３７で受信された他のノード装置３０の近接ノードビット列は、近接ノードビット列比較部３８に与えられ、この近接ノードビット列比較部３８において、近接ノードビット列生成変更部３４に保持されている自身の近接ノードビット列と比較される（ステップＳ４７）。
【００９４】
近接ノードビット列比較部３８で算出された近傍性判定結果は、図示しない接続管理部等に与えられ、ノード装置３０間の接続制御に利用される。
【００９５】
以上詳細に説明したように、第３の実施形態のノード装置３０は、近接ノードビット列生成変更部３４が、近接ノードリスト生成記憶部３１で指定された近接ノードリストに従って自身の近接ノードビット列を生成すると共に、近接するノード装置３０から受信して近接ノードビット列記憶部３３に記憶された近接ノードビット列を用いて、自身の近接ノードビット列を変更するようにしている。
これにより、本実施形態のノード装置３０は、第１の実施形態と同様の利点に加えて、近接するノード装置３０の近接ノードビット列に従って近傍性を順次更新することができるという利点がある。
【００９６】
なお、本発明は、上記実施形態に限定されるものではなく、下記のような種々の変形が可能である。
【００９７】
（ａ）  第２の実施形態で、近接ノードビット列記憶部２０とノード固有ビット列変更部２１を設け、近接ノードリスト以外のノード装置１０Ａとのビット間距離が遠くなるように、自身のノード固有ビット列を変更するようにしているが、第３の実施形態でも同様の構成を採用することができる。
その場合、近接ノードビット列受信部３７で受信した他の（近接ノード以外の）ノード装置３０の近接ノードビット列を近接ノードビット列記憶部３３に記憶し、近接ノードビット列生成変更部３４において他のノード装置３０とのビット間距離が遠くなるように近接ノードビット列を変更すれば良い。具体的には、近接ノードビット列比較部３８の近傍性判定結果が遠ざかるように、近接ノードリスト生成記憶部３１に記憶された近接ノードリストに入っていない任意のノード装置３０の近接ノードビット列と、自身のノード装置３０の近接ノードビット列の一致するビット数を減少させれば良い。
或いは、近接ノードビット列生成変更部３４において、自身のノード装置３０の近接ノードビット列の任意箇所のビットを異なる値に変更するようにしても良い。
【００９８】
（ｂ）  第１〜第３の実施形態では、２値のビット列を用いて説明を行ったが、２のｎ乗となる多値のビットにおいても、２のｎ乗の要素を持つガロア体と考えることで対応が可能である。
【００９９】
（ｃ）  第１〜第３の実施形態では、あるノード装置からの近接ノードビット列はすべて同じ値として説明したが、ノード装置毎に設定基準を定めて、異なる近接ノードビット列を算出するようにしても良い。ここで設定基準とは、特定のノード装置に対して特定のノード装置を近接ノードリストから外したり、特定のノード装置に対して特定のノード装置を近接ノードリストに加えたりすることである。また、近接ノードビット列に対して、特定のビット列を付加することもできる。
【符号の説明】
【０１００】
１Ａ〜１Ｃ    通信網
２Ａ，２Ｂ    基幹回線
１０，１０Ａ，３０    ノード装置
１１    ノード固有ビット列生成部
１２，３１    近接ノードリスト生成記憶部
１３    ノード固有ビット列送信部
１４    ノード固有ビット列受信部
１５    ノード固有ビット列記憶部
１６    近接ノードビット列生成部
１７，３６    近接ノードビット列送信部
１８，３７    近接ノードビット列受信部
１９，３８    近接ノードビット列比較部
２０，３３    近接ノードビット列記憶部
２１    ノード固有ビット列変更部
３２    近接ノード間近接ノードビット列受信部
３４    近接ノードビット列生成変更部
３５    近接ノード間近接ノードビット列送信部
【図１】
2010273277.tif 000003
【図２】
2010273277.tif 000004
【図３】
2010273277.tif 000005
【図４】
2010273277.tif 000006
【図５】
2010273277.tif 000007
【図６】
2010273277.tif 000008
【図７】
2010273277.tif 000009