(57)【特許請求の範囲】
【請求項１】
複数のノード装置によりオーバレイネットワークが構成され、前記複数のノード装置それぞれが、全順序関係を持つ値と、前記値とは異なる乱数列と、を有し、前記オーバレイネットワークにより、範囲クエリによって指定される範囲に含まれる値を有するノード装置にメッセージを配信する通信システムにおけるノード装置であって、
他のノード装置に関するノード情報を収集し、前記他のノード装置が有する前記値を含む前記ノード情報を経路表にエントリとして追加する収集手段と、
前記経路表内のエントリの数が閾値を超えるか否かを判定する判定手段と、
前記経路表内のエントリの数が前記閾値を超えると判定された場合に、前記経路表を更新する更新手段であって、
前記経路表内のエントリの中から前記閾値を超える数分のエントリを削除することにより構成される複数の経路表候補を生成し、
自ノード装置の乱数列と経路表候補内のエントリに対応するノードの乱数列とのプレフィックス一致長の頻度分布が最も一様分布に近い経路表候補を選択し、
前記選択した経路表候補を構成するエントリ以外のエントリを前記経路表から削除する
ように構成された更新手段と、
を備えるノード装置。
【請求項２】
複数のノード装置によりオーバレイネットワークが構成され、前記複数のノード装置それぞれが全順序関係を持つ値であるキーを有し、前記オーバレイネットワークにより、範囲クエリによって指定される範囲に含まれるキーを有するノード装置にメッセージを配信する通信システムにおけるノード装置であって、
他のノード装置に関するノード情報を収集し、前記他のノード装置が有する前記キーを含む前記ノード情報を経路表にエントリとして追加する収集手段と、
前記経路表内のエントリの数が閾値を超えるか否かを判定する判定手段と、
前記経路表内のエントリの数が前記閾値を超えると判定された場合に、前記経路表を更新する更新手段であって、
前記経路表内のエントリの中から前記閾値を超える数分のエントリを削除することにより構成される複数の経路表候補を生成し、
キー空間が一次元の距離空間である場合に経路表候補内のキーの頻度分布が指数分布に最も近い経路表候補を選択し、
前記選択した経路表候補を構成するエントリ以外のエントリを前記経路表から削除する
ように構成された更新手段と、
を備えるノード装置。
【請求項３】
前記更新手段は、予め定めた条件に合致するエントリを除いた前記経路表内のエントリの中から、前記閾値を超える数分のエントリを選択することにより、前記複数の経路表候補を生成する、請求項１または請求項２に記載のノード装置。
【請求項４】
前記更新手段は、前記経路表内のエントリに対応するノード装置および自ノード装置を前記値の順に並べた際に自ノード装置の前後に位置するノード装置を選定し、当該選定したノード装置に対応するエントリを除いた前記経路表内のエントリの中から、前記閾値を超える数分のエントリを選択することにより、前記複数の経路表候補を生成する、請求項１または請求項２に記載のノード装置。
【請求項５】
複数のノード装置によりオーバレイネットワークが構成され、前記複数のノード装置それぞれが、全順序関係を持つ値と、前記値とは異なる乱数列と、を有し、前記オーバレイネットワークにより、範囲クエリによって指定される範囲に含まれる値を有するノード装置にメッセージを配信する通信システムにおいて経路表を管理する方法であって、
他のノード装置に関するノード情報を収集し、前記他のノード装置が有する前記値を含む前記ノード情報を経路表にエントリとして追加することと、
前記経路表内のエントリの数が閾値を超えるか否かを判定することと、
前記経路表内のエントリの数が前記閾値を超えると判定された場合に、前記経路表を更新することと、
を備え、
前記経路表を更新することは、
前記経路表内のエントリの中から前記閾値を超える数分のエントリを削除することにより構成される複数の経路表候補を生成し、
自ノード装置の乱数列と経路表候補内のエントリに対応するノードの乱数列とのプレフィックス一致長の頻度分布が一様分布に最も近い経路表候補を選択し、
前記選択した経路表候補を構成するエントリ以外のエントリを前記経路表から削除する
ことを含む、経路表管理方法。
【請求項６】
複数のノード装置によりオーバレイネットワークが構成され、前記複数のノード装置それぞれが全順序関係を持つ値であるキーを有し、前記オーバレイネットワークにより、範囲クエリによって指定される範囲に含まれるキーを有するノード装置にメッセージを配信する通信システムにおいて経路表を管理する方法であって、
他のノード装置に関するノード情報を収集し、前記他のノード装置が有する前記キーを含む前記ノード情報を経路表にエントリとして追加することと、
前記経路表内のエントリの数が閾値を超えるか否かを判定することと、
前記経路表内のエントリの数が前記閾値を超えると判定された場合に、前記経路表を更新することと、
を備え、
前記経路表を更新することは、
前記経路表内のエントリの中から前記閾値を超える数分のエントリを削除することにより構成される複数の経路表候補を生成し、
キー空間が一次元の距離空間である場合に経路表候補内のキーの頻度分布が指数分布に最も近い経路表候補を選択し、
前記選択した経路表候補を構成するエントリ以外のエントリを前記経路表から削除する
ことを含む、経路表管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、範囲クエリを扱う構造化オーバレイ技術におけるノード装置および経路表管理方法に関する。
【背景技術】
【０００２】
構造化オーバレイは、コンピュータ等の多数の計算機（以降、「ノード装置」または単に「ノード」と呼ぶ）が接続されたネットワークにおいて、数学的ルールに基づきオーバレイネットワークを構築することで、ノードが相互に発見や通知を行なうことを可能とする技術である。構造化オーバレイは、ノード情報の集中管理を必要とせず、自律分散的に振る舞うことから、分散データベース等の大規模システムにおいて有用な技術として着目されている。
【０００３】
範囲クエリを扱う構造化オーバレイは、各ノードがキー（全順序関係を持つ値）を有する状況において、キーの範囲を指定することで、当該範囲に含まれるキーを有する全ノードに効率的にメッセージを配送可能な機能を有する構造化オーバレイ技術を指す。
【０００４】
非特許文献１は、範囲クエリを扱う構造化オーバレイの一例を提案している。非特許文献１の例では、ノード同士で構成する論理ネットワークにSkip List（スキップリスト）を多重化した構造を持たせることで範囲クエリを可能としている。すなわち、全体が階層構成となっており、最下位レベルはキーをソートした順序で全ノードが並んだ双方向リストとなっている。各ノードはキーとは別にメンバシップベクタと呼ばれるｋ進数の乱数列を有し、レベルｉではメンバシップベクタの接頭ｉ桁までが等しいノード同士で双方向リストを形成する。検索を行なう時は、検索開始ノードの最上位レベルからスタートし、Skip Listと同様に目的のキーを通り過ぎない範囲でホップしてレベルをひとつ下げるという動作を繰り返す。これにより、上位レベルがショートカットリンクとして働き、目的キーまで少ないホップ数で到達することができる。この手法において、各ノードが保持する経路表のサイズと検索時の経路長は、ノード数をＮとすると、共にO(log N)である。
【０００５】
非特許文献２は、経路表を柔軟に管理可能な構造化オーバレイの一例を提案している。非特許文献２の例では、分散ハッシュテーブルを対象として、経路表間の優劣を表す順序関係を定義し、それに従って経路表の改良を繰り返すことで、ノードＩＤ以外の要素を考慮した経路表の構築・管理を可能としている。これによって、ノード数が少ない時には経路長をO(1)とすることや、下位ネットワークにおいてＩＳＰ（Internet Service Provider）をまたぐ通信を削減する等の効果を得ている。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】James Aspnes, Gauri Shah, “Skip Graphs”, ACM Transactions on Algorithms, pp.37:1-37:25, 2007.
【非特許文献２】長尾洋也, 首藤一幸, “柔軟な経路表：経路表空間上の順序関係に基づくオーバレイネットワークルーティング方式”, 先進的計算基盤システムシンポジウム論文集, pp.117-125, 2011年.
【発明の概要】
【発明が解決しようとする課題】
【０００７】
非特許文献１に示されるような範囲クエリを扱う従来の構造化オーバレイにおいては、経路表に記載すべきノード（エントリ）を特定の要素のみに基づいて選択的に探索する。非特許文献１の場合、各レベルにおいてメンバシップベクタが所定の桁数一致し、かつキーが最近接するノードを探索し、そのノードの情報を経路表エントリとする。このため、キーとメンバシップベクタ以外の要素、例えば相手ノードとの通信遅延や所属ＩＳＰ・ＡＳ（Autonomous System）等を考慮して経路表を構築することができず、クエリの配送遅延が増大してしまう等の問題がある。また、経路表サイズは全ノード共通にO(log N)であり、ノード毎のメモリサイズ等に応じて経路表サイズを変えることはできない。
【０００８】
一方で、非特許文献２に示されるような分散ハッシュテーブルを対象として柔軟な経路表管理を実現している手法が存在する。非特許文献２以前の分散ハッシュテーブルでは、経路表構築に際しノードＩＤ以外の要素を考慮することが困難であったが、非特許文献２の手法では、相手ノードとの通信遅延や所属ＩＳＰ・ＡＳ等を考慮して経路表を構築することが可能であり、経路表サイズもノード毎に設定可能である。しかしながら、扱うことができるクエリは完全一致クエリに限定され、範囲クエリを扱うことはできない。
【０００９】
以上に示したように、構造化オーバレイにおいて、範囲クエリを扱うことおよび柔軟な経路表管理を実現することを両立することは困難である。特に、非特許文献２における手法では、ノードＩＤ以外の要素を考慮可能とは言え、ノードＩＤを対象とした探索においてO(log N)の探索効率を実現するためにはノードＩＤを考慮することが不可欠であり、このノードＩＤは数値空間上に一様に分布していることが前提となる。しかしながら、非特許文献１においては探索対象となるキー（非特許文献２におけるノードＩＤに相当）が一様に分布しているという前提を設けておらず、全順序関係を持つという前提のみを有している。このため、非特許文献２の手法をそのまま非特許文献１の手法に組み合わせることは困難である。
【００１０】
本発明は、上記事情に着目してなされたものであり、その目的とするところは、範囲クエリを扱う構造化オーバレイにおいて経路表構築に関する柔軟性を向上させることができるノード装置および経路表管理方法を提供することにある。
【課題を解決するための手段】
【００１１】
本発明の一態様は、複数のノード装置によりオーバレイネットワークが構成され、前記複数のノード装置それぞれが全順序関係を持つ値を有し、前記オーバレイネットワークにより、範囲クエリによって指定される範囲に含まれる値を有するノード装置にメッセージを配信する通信システムにおいて、他のノード装置に関するノード情報を収集し、前記他のノード装置が有する前記値を含む前記ノード情報を経路表にエントリとして追加し、前記経路表内のエントリの数が閾値を超えるか否かを判定し、前記経路表内のエントリの数が前記閾値を超えると判定された場合に、前記経路表内のエントリの中から前記閾値を超える数分のエントリを選択し、前記選択したエントリを前記経路表から削除するようにしたものである。
【発明の効果】
【００１２】
本発明によれば、範囲クエリを扱う構造化オーバレイにおいて柔軟な経路表管理を実現することができる。
【図面の簡単な説明】
【００１３】
【図１】実施形態に係る通信システムの構成例を示す図。
【図２】図１に示した各ノードの構成例を示すブロック図。
【図３】図２に示した経路表更新部による厳選処理の一例を示す図。
【図４】図２に示した経路表更新部による厳選処理の他の例を示す図。
【図５】実施形態に係る経路表を管理する方法の一例を示すフローチャート。
【発明を実施するための形態】
【００１４】
以下、図面を参照しながら本発明の実施形態を説明する。実施形態は、範囲クエリを扱う論理ネットワークにおける経路表を管理する技術に関する。実施形態では、経路表構築の柔軟性を高めるために、必要な経路表エントリを選択的に追加するのではなく、不要な経路表エントリを削除することで経路表を構築する。すなわち、経路表エントリを収集する際には特定の要素に依らずに経路表に追加し、ノード毎に予め設定したエントリ数を超過した時点で超過数分のエントリを破棄する。この時、破棄するエントリの選択においてノード毎に異なる需要を反映させる。以上の動作を反復することにより、各ノードの環境等に対し適応的に経路表を改良し維持することができる。
【００１５】
図１は、実施形態に係る通信システムの全体構成の一例を概略的に示している。図１に示されるネットワーク１２は、例えばインターネット等の物理ネットワークであり、複数のノード（図１では６つのノードＡ〜Ｆ）がネットワーク１２を介して互いに通信可能に接続されている。具体的には、ノードＡおよびノードＥがルータ１３に接続され、ノードＣおよびノードＦがルータ１４に接続され、ノードＢおよびノードＤがルータ１５に接続され、ルータ１３およびルータ１５がルータ１４に接続されている。
【００１６】
オーバレイネットワーク１１は、ネットワーク１２上に構築した仮想的なネットワークである。オーバレイネットワーク１１はノードＡ〜Ｆを含む。なお、オーバレイネットワーク１１は、図１に示される例ではネットワーク１２に含まれる全てのノードＡ〜Ｆによって構成されているが、これに限らず、ネットワーク１２に含まれるノードの一部によって構成されてもよい。
【００１７】
オーバレイネットワーク１１において、ノードＡ〜Ｆの各々は、経路表を保持し、自身の経路表に従って、メッセージの送信または転送を行なう。あるノードから目的ノードへのメッセージ送信は、それぞれのノードが経路表に従ってメッセージの転送を繰り返すことによって達成される。本実施形態では、ノードＡ〜Ｆはそれぞれ全順序関係を持つ値（以降、「キー」と呼ぶ）を有し、目的ノードは、範囲クエリにより指定されたキー範囲に含まれるキーを有する全てのノードである。また、本実施形態では、ノードＡ〜Ｆはそれぞれ、キーとは独立なｋ進数の乱数列（以降、「メンバシップベクタ」と呼ぶ）を有していてもよい。ここで、ｋは２以上の整数である。
【００１８】
図２は、実施形態に係るノードの構成例を概略的に示している。図２に示されるノードは、図１に示されるノードＡ〜Ｆの各々に対応するものである。ここでは、図２に示されるノードが図１に示されるノードＡであるとして説明を行なう。
【００１９】
ノードＡは、通信処理部２１、ノード情報収集部２２、更新開始判定部２３、経路表更新部２４、クエリ処理部２５、および経路表格納部２６を備える。通信処理部２１、ノード情報収集部２２、更新開始判定部２３、経路表更新部２４、およびクエリ処理部２５は、図示しないメモリに格納されるコンピュータプログラムを図示しないプロセッサに実行させることにより実現することができる。経路表格納部２６は、図示しないメモリにより実現することができる。経路表格納部２６は、経路表を格納する。
【００２０】
通信処理部２１は、他のノードと通信するための処理を行なう。具体的には、通信処理部２１は、他のノードへメッセージを送信したり、他のノードからメッセージを受信したりする。
【００２１】
ノード情報収集部２２は、通信処理部２１を通じて、他のノードに関するノード情報を収集する。具体的には、ノード情報収集部２２は、経路表格納部２６内の経路表に未だ登録されていないノード（例えばノードＢ）に関するノード情報を収集する。ノード情報収集部２２は、何らの制約を設けずにノード情報の収集を行なうことができる。ノード情報は、例えば、ＩＰアドレス、ポート番号、およびキーを含む。ＩＰアドレスは、下位ネットワーク（図１に示されるネットワーク１２）上の所在を示す所在情報の一例である。下位ネットワークは、ＴＣＰ／ＩＰベースのネットワークに限らず、他のプロトコルに基づくネットワークであってもよい。ノード情報は、メンバシップベクタをさらに含んでいてもよい。
【００２２】
ノード情報の収集は、経路表に既に登録されている既知のノード（例えばノードＣ）を経由してノード情報収集要求を送出し、ノードＢまたはノードＢを知るノード（例えばノードＤ）からノード情報を受け取るなどのように、能動的に行なわれてもよい。また、ノード情報の収集は、ノードＥからノードＡ宛てに送信された範囲クエリなどの他の目的で行なわれる通信の際に、通信内容に含まれる情報を読み取るなどのように、受動的に行なわれてもよい。  
ノード情報収集部２２は、収集したノード情報を経路表にエントリとして追加する。
【００２３】
更新開始判定部２３は、経路表内のエントリの数が予め定めた経路表サイズ（閾値）を超えているか否かを判定する。経路表サイズは、ノード毎に異なっていてもよい。また、経路表サイズは、システム稼働中に変更されてもよい。更新開始判定部２３は、経路表内のエントリ数が経路表サイズを超えていると判定すると、経路表更新部２４に対して更新処理の開始要求を与える。
【００２４】
経路表更新部２４は、更新開始判定部２３から更新処理の開始要求を受けて、経路表を更新する。経路表更新部２４は、予め定めた規則に基づいて経路表サイズの超過数分のエントリを選択し、選択したエントリを経路表から削除する。この処理を経路表エントリの厳選と呼ぶ。上記の規則は、下記（１）から（４）に示す更新方法例のいずれか１つまたは２以上の組み合わせに基づいていることができる。経路表の更新により、経路表内のエントリの数が経路表サイズ以下になる。
【００２５】
（１）削除するエントリの選択において、ノード毎に異なる様々な需要を反映させることができる。例えば、可能な限り同じ自律システム（ＡＳ；Autonomous System）内のノードを残すこと、ラウンドトリップタイム（ＲＴＴ；Round Trip Time）の値が小さいノードを残すこと等の規則を設けることができる。このような規則を設けることにより、メッセージの配送遅延を小さくすることができる。
【００２６】
（２）経路表更新部２４は、図３（ａ）に示すように、予め定めた基準に従って複数の経路表を比較する経路表比較部３１を含んでもよい。経路表更新部２４は、厳選によって構成し得る全ての経路表を生成し、経路表比較部３１を用いてこれらの経路表から最も望ましい経路表を選択し、選択した経路表を構成するように厳選を行なう。経路表比較部３１は、経路表内のキーの頻度分布に基づいて比較を行なうことができる。例えば、経路表比較部３１は、キー空間が１次元の距離空間である場合に、ノードＡの経路表内のキーをマップした時のノードＡのキーを基点とした頻度分布が指数分布に近いほど望ましい経路表である、という基準を用いてもよい。例えば、経路表１および経路表２のキーの頻度分布が図３（ｂ）に示されるものである場合、経路表２のキーの頻度分布のほうが指数分布に近いため、図３（ａ）に示すように、経路表比較部３１の出力は経路表２となる。
【００２７】
（３）経路表更新部２４は、スティッキーエントリを除いたエントリ群を対象として厳選を行なってもよい。スティッキーエントリは、経路表内のエントリのうちの、予め定めた条件に合致するエントリである。例えば、経路表に登録されている全ノードおよび自身（自ノード）をキー順に並べた際に、自ノードの前後に位置するノードをスティッキーエントリとして選択する。この場合、非特許文献１におけるレベル０の双方向リストが再現され、到達性が保証される。
【００２８】
（４）経路表更新部２４は、経路表内のエントリのメンバシップベクタに基づいて厳選を行なってもよい。この場合、経路表内の各エントリは、メンバシップベクタをさらに含み、経路表更新部２４は、図４（ａ）に示すように、予め定めた基準に従って複数の経路表を比較する経路表比較部４１を含む。経路表更新部２４は、自身のメンバシップベクタと経路表内のエントリのメンバシップベクタとの一致度に基づいて厳選を行なうことができる。一致度としては、例えば、プレフィックス一致長がある。プレフィックス一致長は、自身のメンバシップベクタと経路表内のエントリのメンバシップベクタとの間で接頭が一致する桁数を示す。例えば、図４（ｂ）に示すように、自身（ノードＡ）のメンバシップベクタが「００１０１１・・・」である場合、メンバシップベクタ「０１１１０１・・・」については、接頭の「０」が一致するので、プレフィックス一致長は１となり、メンバシップベクタ「００１０００・・・」接頭の「００１０」が一致するので、プレフィックス一致長は４となる。経路表比較部４１は、メンバシップベクタのプレフィックス一致長の頻度分布が一様分布に近いほど望ましい経路表である、という基準を用いてもよい。例えば、経路表１および経路表２のプレフィックス一致長の頻度分布が図４（ｂ）に示されるようなものである場合、経路表２のキーの頻度分布のほうが一様分布に近いため、図４（ａ）に示すように、経路表比較部４１の出力は経路表２となる。この場合において、メンバシップベクタのプレフィックス一致長毎に、ノードＡのキーに最近接のキーを有するノード２つが経路表に含まれていれば、非特許文献１において示されている経路長および経路表サイズがO(log N）となるトポロジが再現される。
【００２９】
クエリ処理部２５は、キーの範囲を指定する範囲クエリを受け付け、必要に応じて、経路表を参照してメッセージの転送先を決める。通信処理部２１は、クエリ処理部２５によって決定された転送先にメッセージを転送する。
【００３０】
次に、図５を参照して実施形態に係る経路表を管理する方法例について説明する。
【００３１】
図５のステップＳ５０１では、ノード情報収集部２２は、経路表エントリとなるノードに関するノード情報を収集する。ステップＳ５０２では、ノード情報収集部２２は、収集したノード情報を経路表に追加する。ステップＳ５０３では、更新開始判定部２３は、経路表エントリの数が予め定めた経路表サイズを超えているか否かを判定する。経路表エントリ数が経路表サイズ以下である場合、ステップＳ５０１に戻り、経路表エントリ数が経路表サイズを超えている場合、ステップＳ５０４に進む。ステップＳ５０４では、経路表更新部２４は、経路表を更新する。具体的には、経路表更新部２４は、経路表エントリの中から経路表サイズを超過した数のエントリを選択し、選択したエントリを経路表から削除する。  
図５に示される動作を継続的に繰り返すことにより、各ノードの環境等に対し適応的に経路表を改良し維持することができる。
【００３２】
なお、ステップＳ５０３に示される判定処理は、経路表にエントリが追加された後に実行される場合に限らず、例えば、各ノードにおいて経路表サイズが変更されるたびに実行されてもよい。
【００３３】
以上のように、本実施形態によれば、複数のノードによりオーバレイネットワークが構成され、複数のノード装置それぞれが全順序関係を持つ値を有し、オーバレイネットワークにより、範囲クエリによって指定される範囲に含まれる値を有するノードにメッセージを配信する通信システムにおいて、他のノードに関する、このノードが有するキーを含むノード情報を収集し、このノード情報を経路表にエントリとして追加し、経路表内のエントリの数が経路表サイズを超える場合に、経路表内のエントリの中から経路表サイズを超える数分のエントリを選択し、選択したエントリを経路表から削除する。これにより、範囲クエリを扱う構造化オーバレイにおいて、ノード毎に経路表サイズを設定することができる等、柔軟な経路表管理を実現することができる。
【００３４】
なお、本発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態に亘る構成要素を適宜組み合せてもよい。
【符号の説明】
【００３５】
１１…オーバレイネットワーク、１２…ネットワーク、１３，１４，１５…ルータ、２１…通信処理部、２２…ノード情報収集部、２３…更新開始判定部、２４…経路表更新部、２５…クエリ処理部、２６…経路表格納部、３１，４１…経路表比較部。
【図１】
0006485811.tif 000002
【図２】
0006485811.tif 000003
【図３】
0006485811.tif 000004
【図４】
0006485811.tif 000005
【図５】
0006485811.tif 000006