IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ エヌチェーン ホールディングス リミテッドの特許一覧

特開2024-100912ネットワークのトポロジのネットワークの認識を更新するコンピュータにより実装されるシステム及び方法
<>
  • 特開-ネットワークのトポロジのネットワークの認識を更新するコンピュータにより実装されるシステム及び方法 図1
  • 特開-ネットワークのトポロジのネットワークの認識を更新するコンピュータにより実装されるシステム及び方法 図2
  • 特開-ネットワークのトポロジのネットワークの認識を更新するコンピュータにより実装されるシステム及び方法 図3
  • 特開-ネットワークのトポロジのネットワークの認識を更新するコンピュータにより実装されるシステム及び方法 図4
  • 特開-ネットワークのトポロジのネットワークの認識を更新するコンピュータにより実装されるシステム及び方法 図5
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024100912
(43)【公開日】2024-07-26
(54)【発明の名称】ネットワークのトポロジのネットワークの認識を更新するコンピュータにより実装されるシステム及び方法
(51)【国際特許分類】
   H04L 41/12 20220101AFI20240719BHJP
【FI】
H04L41/12
【審査請求】有
【請求項の数】11
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2024083011
(22)【出願日】2024-05-22
(62)【分割の表示】P 2022129919の分割
【原出願日】2018-01-29
(31)【優先権主張番号】1701592.6
(32)【優先日】2017-01-31
(33)【優先権主張国・地域又は機関】GB
(71)【出願人】
【識別番号】318001991
【氏名又は名称】エヌチェーン ライセンシング アーゲー
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】モティリンスキ,パトリック
(72)【発明者】
【氏名】ヴィンセント,ステファヌ
(57)【要約】
【課題】 コンピュータにより実施される本発明は、トポロジの変化を検出し、該変化を発生順に並べ、該変化を反映した新しいトポロジを構成する、方法、対応するシステム及びネットワーク内の構成を提供する。
【解決手段】 本発明は、現在、特にネットワークトポロジが動的であるとき、つまりリンクが任意の時間に障害し回復するとき、各ネットワークノードにおけるネットワークトポロジの認識を保つことに伴う問題を解決する。トポロジ更新は、ネットワーク内で、特にノード及びリンクを伴い、何らかの変化が生じたときに起動されるので、イベント駆動型である。イベントは、トポロジ変化をネットワーク内の他のノードに報告させる。メッセージのタイムスタンプは、メッセージが最近の更新として正しく適用されること又は廃棄されることを可能にする。各商人ノードが、リンク及びノード障害にも拘わらず、ネットワークトポロジの正しいビューを維持することを可能にするアルゴリズムが提供される。
【選択図】 図1
【特許請求の範囲】
【請求項1】
ネットワーク内のイベントを順序付ける、コンピュータにより実施される方法であって、前記ネットワークは複数のノードを含み、各ノードは時間ベクトルクロックを有し、各時間ベクトルクロックは、ローカル時間とグローバル時間のローカルレコードとを含む別個の時間ベクトルを作動させ、前記方法は、
各時間ベクトルクロックを共通開始時間に開始するステップと、
第1ノードにおいてイベントが生じることに応答して、
前記第1ノードの時間ベクトルクロックを更新して、ローカル時間を整数値だけ増加させるステップと、
前記第1ノードから前記ネットワーク内の1つ以上の他のノードへ、前記イベントを示す第1メッセージを送信するステップであって、前記第1メッセージは、前記第1ノードのローカル時間と、前記第1ノードが認識する全ての他のノードのグローバル時間のローカルレコードと、を含む、ステップと、
第2ノードにおいて前記第1メッセージを受信することに応答して、
前記第2ノードの時間ベクトルクロックを更新して、ローカル時間を前記整数値だけ増加させるステップと、
前記第1メッセージが前記第2ノードにおいて受信された先行するメッセージより新しいかどうかを決定するステップと、
前記第1メッセージが前記先行するメッセージより新しいと決定することに応答して、前記第2ノードの時間ベクトルクロックを、前記第2ノードのローカル時間と前記第1メッセージの中の前記第2ノードのローカル時間のうち大きい方により更に更新するステップと、
を含む方法。
【請求項2】
前記第1メッセージが前記先行するメッセージより新しいと決定することに応答して、前記方法は、
前記第1メッセージに基づき前記グローバル時間のローカルレコードを更新するステップ、
を含む請求項1に記載のコンピュータにより実施される方法。
【請求項3】
前記第1メッセージは、トポロジデータセットを含み、前記第1メッセージが前記第2ノードにおいて受信された前記先行するメッセージより新しいと決定することに応答して、前記方法は、
前記第1メッセージの前記トポロジデータセットを用いて、前記第2ノードのトポロジデータセットを更新するステップ、
を更に含む請求項1又は2に記載のコンピュータにより実施される方法。
【請求項4】
前記第1メッセージが前記第2ノードにおいて受信された前記先行するメッセージより古いと決定することに応答して、前記第1メッセージの前記トポロジデータセットは破棄され及び/又は前記第2ノードの前記トポロジデータセットを更新するために使用されない、請求項3に記載のコンピュータにより実施される方法。
【請求項5】
前記方法は、更に、前記第2ノードが前記ネットワークへ、前記第2ノードの更新されたトポロジデータセットを含む第2メッセージを送信することを提供する、請求項3又は4に記載のコンピュータにより実施される方法。
【請求項6】
前記第1ノードは隣接ノードを有し、前記隣接ノードは、前記第1ノードの所与の隣接指標の範囲内にあるノードであり、前記第1ノードは近隣ノードを有し、前記近隣ノードは、前記第1ノードの前記所与の隣接指標の外部にあり、前記第1ノードの所与の近隣指標の範囲内にあるノードであり、前記第1ノードは前記第1メッセージを隣接ノードと近隣ノードにのみ送信する、請求項1~5のいずれかに記載のコンピュータにより実施される方法。
【請求項7】
各時間ベクトルクロックは、各近隣ノードの仮定されたローカル時間の認識を有する、請求項6に記載のコンピュータにより実施される方法。
【請求項8】
前記第2ノードのトポロジデータセットは、以下:
a)前記第1ノードのトポロジデータセットの中にリストされたノード間の1つ以上のリンクの動作状態を変更すること、
b)前記第2ノードのトポロジデータセットの中にリストされていないノード間の1つ以上のリンクを追加すること、
c)前記第2ノードのトポロジデータセットの中にリストされたノード間の1つ以上のリンクを削除すること、
のうちの1つ以上により更新される、請求項3に記載のコンピュータにより実施される方法。
【請求項9】
前記第2ノードのトポロジデータセットが更新される条件は、前記第1メッセージのトポロジデータセットが前記第2ノードのトポロジデータセットの中にない1つ以上のリンクを含むことであり、前記第2ノードのトポロジデータセットが、前記第2ノードの所与の隣接指標の範囲内にある、前記第1メッセージのトポロジデータセットの中のリンクに関してのみ更新されるという更なる条件を伴う、
請求項3又は8に記載のコンピュータにより実施される方法。
【請求項10】
請求項1~9のいずれかに記載の方法を実行するよう構成されるコンピュータシステム。
【請求項11】
前記システムは、
a)ネットワークのトポロジの変化を検出する検出部であって、前記検出部は、1つ以上のノード及び/又は1つ以上のリンクに影響を与える変化を検出する、検出部と、
b)前記ネットワーク内で通信された更新されたトポロジデータセットをソートする更新ソート部と、
c)トポロジデータセットが前記ネットワーク内の他のノードからのトポロジデータセットにより更新されるように、トポロジデータセットを処理するトポロジデータセット処理部と、
d)前記ネットワークの前記トポロジの変化の認識が前記ネットワーク内で共有されるようにする、更新されたトポロジデータセットのためのトポロジ更新通信部と、
を含む請求項10に記載のコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、概して、システムトポロジを更新するシステムトポロジ及び方法に関し、特に、変化するピアツーピア(P2P)システムトポロジ及び変化するP2Pシステムトポロジを更新する方法に関する。本発明は、具体的に、限定ではないが、分散型システム及びトランザクション及び/又はブロックチェーンを実装するために該分散型システムを用いる方法に適する。
【背景技術】
【0002】
本願明細書で、用語「ブロックチェーン」は、あらゆる形式の電子的な、コンピュータに基づく、分散台帳を含むよう使用される。これらは、限定ではないが、ブロックチェーン及びトランザクションチェーン技術、許可及び未許可台帳、共有台帳、及びそれらの変形を含む。最も広く知られているブロックチェーン技術の用途はビットコイン台帳であるが、他のブロックチェーンの実装が提案され開発されている。ビットコインは便宜上及び説明を目的として本願明細書において言及されるが、本発明はビットコインのブロックチェーンと共に使用することに限定されず、代替のブロックチェーンの実装及びプロトコルが本発明の範囲に含まれることに留意すべきである。
【0003】
ブロックチェーンは、ブロックにより構成される、コンピュータに基づく非集中型の分散型システムとして実装される総意に基づく電子台帳である。また、ブロックはトランザクションにより構成される。各トランザクションは、ブロックチェーンシステム内で参加者間のデジタルアセットの制御の転送を符号化するデータ構造であり、少なくとも1つのインプット及び少なくとも1つのアウトプットを含む。各ブロックは前のブロックのハッシュを含み、ブロックは共にチェーンになって、その発端からブロックチェーンに書き込まれている全てのトランザクションの永久的な変更不可能なレコードを生成する。トランザクションは、そのインプット及びアウトプットに埋め込まれたスクリプトとして知られる小さなプログラムを含む。スクリプトは、トランザクションのアウトプットがどのように及び誰によりアクセス可能かを指定する。ビットコインプラットフォーム上で、これらのスクリプトは、スタックに基づくスクリプト言語を用いて記述される。
【0004】
トランザクションがブロックチェーンに書き込まれるために、「検証され」なければならない。ネットワークノード(マイナー)は、各トランザクションが有効であることを保証するために作業を実行し、無効なトランザクションはネットワークから拒否される。ノードにインストールされたソフトウェアクライアントは、自身のロック及びアンロックスクリプトを実行することにより、この検証作業を未使用トランザクション(UTXO)に対して実行する。ロック及びアンロックスクリプトの実行が真と評価した場合、トランザクションは有効であり、トランザクションはブロックチェーンに書き込まれる。したがって、トランザクションがブロックチェーンに書き込まれるためには、トランザクションは、i)トランザクションを受信した第1ノードにより検証され、トランザクションが検証された場合に、ノードは該トランザクションをネットワーク内の他のノードに中継し、ii)マイナーにより構築された新しいブロックに追加し、iii)マインされ、つまり過去のトランザクションの公開台帳に追加されなければならない。
【0005】
ブロックチェーン技術は、暗号通貨実装の使用で最も広く知られているが、デジタル起業家が、新しいシステムを実装するために、ビットコインの基づく暗号通貨セキュリティシステム、及びブロックチェーンに格納可能なデータの両方の使用を探索し始めている。ブロックチェーンが、暗号通貨の領域に限定されない自動タスク及びプロセスのために使用できれば、非常に有利である。このようなソリューションは、それらの用途において一層多様でありながら、ブロックチェーンの利点(例えば、永久的、イベントの耐タンパレコード、分散プロセス、等)を利用できる。
【0006】
現在の研究の一分野は、「スマートコントラクト(smart contracts)」の実装のためのブロックチェーンの使用である。これらは、機械可読取引又は合意の条件の実行を自動化するために設計されたコンピュータプログラムである。自然言語で記述され得る従来の取引と異なり、スマートコントラクトは、結果を生成するためにインプットを処理できるルールを含み、該結果に依存して動作を実行させることのできる、機械実行可能プログラムである。
【0007】
ブロックチェーンに関連する関心の他の分野は、ブロックチェーンを介する現実世界のエンティティの表現及び転送のための「トークン」(又は「カラードコイン」)の使用である。潜在的に機密な又は秘密のアイテムは、識別可能な意味又は値を有しないトークンにより表現できる。したがって、トークンは、現実世界のアイテムをブロックチェーンから参照できるようにする識別子として機能する。
【0008】
ネットワーク内の接続及びルーティングを管理するための、様々な従来の方法が知られている。このような従来の方法の例は以下に簡単に記載される。
【0009】
US2014286344は、ネットワーク内の分散型接続確立及び復旧に関する。接続制約は、ネットワーク上の転送を制御するために使用されるルーティングプロトコルの拡張を用いて送付される。ノードは、トポロジ及び接続データベースを維持し、制約に基づき接続のルートを計算する。ノードは、接続のために計算したルート上にある場合、該接続について転送状態をインストールする。各ノードはネットワークトポロジの一貫したビューを有し、接続に関連付けられた制約を与えられているので、ネットワークにある各ノードは、接続について同じルートを計算する。障害が生じると、ノードは、ネットワーク全体に渡る優先度に基づき接続の復旧パスを計算して、復旧パスがシグナリングされることなく、影響を受けた接続のために復旧パスが生成されるようにする。タイムスタンプは、イベントが到着する順序に関係なく、一貫した順序でノードにより提供されることを可能にするために使用される。
【0010】
EP0752795は、通信ネットワーク内のリンク予約に関する。通信ネットワーク内の接続を設定し、削除し、及び更新する分散型手段が記載される。これは障害が存在するとき、ロバストである。より具体的には、接続のためのパスが計算され、予約要求が、別個のチャネルを通じて、該接続のためのパスのノードのセットの各々へ予約のために同時に送信されて、接続のためにリソースが利用可能かどうかを決定する。接続のためのリンクが利用可能であり及び予約されていることを確認すると、設定メッセージが宛先ノードに到達するまで、設定メッセージが隣接ノード間でバスに沿って順次送信される。各ノードにおける切り替えは、次に、設定メッセージに応答して、接続を確立するために、それら自体を構成する。
【0011】
US2004170151は、動的ネットワーク及び動的ネットワークのためのルーティング方法に関する。ルーティング情報がネットワークのノード内のローカルルーティングテーブルに格納されるという条件で、複数のノードを有する動的ネットワークが記載される。ノードは、ローカルルーティングテーブルを更新するために更新要求を他のノードへ送信し、アドレス指定されたノードは、更新されたルーティング情報を有する更新応答を要求側ノードへ送信する。
【発明の概要】
【0012】
システムトポロジに伴う課題は、例えば新しいノード又はピアがシステムに参加したことにより、及び/又はノード又はピアが動作状態を離れ及び戻ることにより、トポロジ変化が生じるとき、システムが効果的且つ高速に機能する状態に維持されることを保証することである。
【0013】
したがって、可能な目的の中でも特に、トポロジの変化が効率的及び/又は迅速に検出される、システムトポロジ及び/又はシステムトポロジを更新する方法を含むソリューションを提供することが望ましい。
【0014】
したがって、可能な目的の中でも特に、システム内でトポロジの変化が効率的及び/又は迅速に通信される、システムトポロジ及び/又はシステムトポロジを更新する方法を含むソリューションを提供することが望ましい。
【0015】
したがって、可能な目的の中でも特に、トポロジの変化がネットワークを通じて一貫して及び/又は効率的に及び/又は迅速に更新される、システムトポロジ及び/又はシステムトポロジを更新する方法を含むソリューションを提供することが望ましい。
【0016】
このような改良されたソリューションが考案される。本発明は、添付の請求項において及び/又は本発明の説明において定められる。
【0017】
本発明の第1の態様によると、ネットワークトポロジのネットワークの認識を更新する方法であって、当該方法は、
(a)ネットワークのトポロジの変化を組み込んだトポロジデータセットが、前記ネットワーク内の第1ノードにより受信されるステップであって、前記トポロジデータセットは時間指示に関連付けられる、ステップと、
(b)前記第1ノードが、時間指示に関連付けられたトポロジデータセットを有するステップと、
を含み、前記第1ノードにより受信された前記トポロジデータセットの前記時間指示が前記第1ノードのトポロジデータセットの時間指示より新しい場合、前記第1ノードのトポロジデータセットは前記第1ノードにより受信された前記トポロジデータセットにより更新される、方法が提供される。
【0018】
前記方法は、特にステップ(b)の後に、前記第1ノードが、前記ネットワークへ、更新した第1ノードトポロジデータセットを送信すること、を更に提供し得る。より望ましくは、前記方法は、特にステップ(b)の後に、第2ノードトポロジデータセットが前記第1ノードトポロジデータセットへの更新をもたらすとき、前記第1ノードが、前記ネットワークへ、前記更新した第1ノードトポロジデータセットを送信するステップ、を更に提供し得る。
【0019】
前記方法は、前記第1ノードは隣接ノードを有し、前記隣接ノードは、前記第1ノードの所与の隣接指標の範囲内にあるノードであることを提供し得る、並びに、前記第1ノードは近隣ノードを有し、前記近隣ノードは、前記第1ノードの前記所与の隣接指標の外側且つ前記第1ノードの所与の近隣指標の範囲内にあるノードである、ことを提供し得る。前記方法は、前記第1ノードは、前記更新された第1ノードトポロジデータセットを、隣接ノード及び近隣ノードのみへ送信する、ことを更に提供し得る。
【0020】
前記第1ノードにより受信された前記トポロジデータセットに関連付けられた前記時間指示は、前記トポロジデータセットが提供されたノードにより生成される。前記時間指示は、前記トポロジデータセットが提供されたノードによりトポロジデータセットに関連付けられたタイムスタンプであってよい。前記時間指示は、前記第2ノードによる前記ネットワーク内の変化の検出時間、又は、より望ましくは、ネットワーク内の変化を第1ノードへ第2ノードにより送信する時間の時間指示であってよい。前記時間指示は、前記トポロジデータセットを提供するノードの時間ベクトルクロックにより提供されてよい。
【0021】
前記方法は、前記第1ノードのトポロジデータセットが、以下:
(a)前記第1ノードのトポロジデータセット内にリストされたノード間の1つ以上のリンクの動作状態を変更する、
(b)前記第1ノードのトポロジデータセット内にリストされないノード間の1つ以上のリンクを追加する、
(c)前記第1ノードのトポロジデータセット内にリストされたノード間の1つ以上のリンクを削除する、
のうちの1つ以上により更新される、ことを更に提供し得る。
【0022】
前記方法は、前記第1ノードトポロジデータが更新される条件が、前記ネットワーク内のノードから受信された前記トポロジデータセットが、前記第1ノードのトポロジデータセット内にない1つ以上のリンクを含むことであることを更に提供し得る。前記方法は、更なる条件が、前記第1ノードのトポロジデータセットが、前記ノードの所与の指標の範囲内にある前記ネットワーク内のノードから受信した前記トポロジデータセット内のこのようなリンクに関してのみ更新されることである、ことを更に提供し得る。
【0023】
前記方法は、前記ネットワークの前記トポロジの変化を組み込んでいるトポロジデータセットが、前記ネットワーク内の第2ノードにより、前記ネットワーク内のイベントの検出に起因して提供されることを更に提供し得る。前記イベントは、前記ネットワーク内のノードにより前記第2ノードへ送信されたメッセージの中断により検出され得る。前記イベントの検出は、前記第2ノードの前記トポロジデータセットの変化を生じ得る。前記第2ノードの前記トポロジデータセットの変化は、前記第2ノードが前記トポロジデータセットの変化を前記ネットワーク内の少なくとも前記第1ノードへ送信することを提供し得る。
【0024】
前記方法は、望ましくはステップ(a)と(b)との間に、複数のトポロジデータセットをそれらのそれぞれの時間指示に従い順序付けるステップを更に有し得る。前記複数のトポロジデータセットのうちの1つは、前記第1ノードのトポロジデータセットであってよく、前記複数のトポロジデータセットのうちの別の1つは、前記第2ノードのトポロジデータセットである可能性がある。前記複数のトポロジデータセットのうちの1つは、第3ノードからのトポロジデータセットであってよく、望ましくは、前記複数のトポロジデータセットのうちの他のものは、更なるノードからである。順序付ける前記ステップは、前記複数のトポロジデータセットのうちのどれが、前記前記複数のトポロジデータセットのうち最近のものであるかを確立してよい。
【0025】
前記方法は、前記複数のトポロジデータセットのうちの最近のものが、前記第1ノードのトポロジデータセットを更新するために使用されることを更に提供し得る。前記方法は、最近の時間指示に関連付けられないトポロジデータセットが使用されない又は廃棄されることを更に提供し得る。
【0026】
前記更新された第1ノードのトポロジデータセットは、前の第1ノードのトポロジデータセットを置き換えてよい。
【0027】
ネットワークのトポロジのネットワークの認識を更新する方法は、さらに、前記ネットワーク内の接続を最適化する及び/又は前記ネットワーク内の一貫したデータ分配を最適化する方法であってよい。
【0028】
本発明の第2の態様によると、本発明の第1の態様の方法を実行するよう構成される、場合によっては本願明細書の他の場所に記載される機能、オプション、及び可能性のうちの任意のものを実行するよう構成されるシステムを含む、コンピュータにより実装されるシステムが提供される。
【0029】
前記コンピュータにより実装されるシステムは、前記ネットワークの前記トポロジの変化を検出するための検出部を含み得る。前記検出部は、1つ以上のノード及び/又は1つ以上のリンクに影響する変化を検出してよい。前記検出部は、例えば第1状態から第2状態への及び/又は第2状態から第1状態への、及び/又は1つ以上の他の状態を含んでよい、状態の1つ以上の変化を検出してよい。
【0030】
前記コンピュータにより実装されるシステムは、特に更新されたトポロジデータセットを含むメッセージに関して、前記ネットワーク内で通信される更新されたトポロジデータセットをソートする更新ソート部を含んでよい。更新ソート部は、メッセージが正しいシーケンス若しくは順序又は生成時間で考慮されるように提供されてよい。
【0031】
前記コンピュータにより実装されるシステムは、トポロジデータセットが前記ネットワーク内の他のノードからのトポロジデータセットにより更新されるように、トポロジデータセットを処理するトポロジデータセット処理部を含み得る。
【0032】
前記コンピュータにより実装されるシステムは、前記ネットワークの前記トポロジの変化の認識が前記ネットワーク内で共有されるように、更新されたトポロジデータセットのためのトポロジ更新通信部を含み得る。トポロジデータセット処理部は、更なるノードのトポロジデータセットからのデータに従い、ノードのトポロジデータセットの更新を提供し得る。
【0033】
本発明の第3の態様によると、ノードのネットワーク内の構成であって、前記ネットワークのトポロジの変化に関して前記ネットワークを更新し、前記構成は、前記ネットワークの前記トポロジの変化の検出のための検出部、及び/又は、前記ネットワーク内で通信された更新されたトポロジデータセットをソートする更新ソート部、及び/又は、トポロジデータセットの処理のためのトポロジデータセット処理部と、及び/又は、前記ネットワークの前記トポロジの変化の認識が前記ネットワーク内で共有されるようにする、更新されたトポロジデータセットのためのトポロジ更新通信部、を含む構成が提供される。
【0034】
前記検出部は、1つ以上のノード及び/又は1つ以上のリンクに影響する変化を検出してよい。前記検出部は、例えば第1状態から第2状態への及び/又は第2状態から第1状態への、及び/又は1つ以上の他の状態を含んでよい、状態の1つ以上の変化を検出してよい。
【0035】
前記更新ソート部は、更新されたトポロジデータセットを含むメッセージを提供されてよい。更新ソート部は、メッセージが正しいシーケンス若しくは順序又は生成時間で考慮されるように提供されてよい。
【0036】
トポロジデータセットの処理のためのトポロジデータセット処理部は、前記ネットワーク内の他のノードからのトポロジデータセットにより更新されるトポロジデータセットのためであってよい。
【0037】
前記トポロジデータセット処理部は、更なるノードのトポロジデータセットからのデータに従い、ノードのトポロジデータセットの更新を提供し得る。
【0038】
したがって、本発明によると、以下の中から、オプション、可能性、及び特徴が提供され又は更に提供されてよい。
【0039】
前記ネットワークは、ノードの分散型システムであってよい。前記分散型システムは、クライアント及び/又はサーバ及び/又はピアの形式で1つ以上のノードを含み得る。
【0040】
ノードは、アクティブ電子装置又はデータ通信機器であってよい。ノードは、特に、ルータ及び/又はワークステーション及び/又はサーバ及び/又はホストコンピュータであってよい。ノードは、例えばネットワーク内で情報を生成し及び/又は受信し及び/又は1つ以上の他のノードへ送信することが可能な場所であってよい。
【0041】
1つ以上の又は全部のノードはピアであってよい。2つ以上の又は全部のノードは、例えば特権又は能力又は機能の観点で、前記ネットワーク内の等価な参加者であってよい。
【0042】
前記ネットワーク内のノードは、ノードの集合と考えられてよい。
【0043】
ノードは、1つ以上のリンクにより接続されてよい。ノードは、1つ以上のリンクにより別のノードに接続されてよい。1つ以上の又は全部のリンクはエッジであってよい。
【0044】
2つのノードの間の距離は、該ノードの間のリンクの和であってよく、望ましくは、最小数のリンクが該ノードの間の接続を提供する。前記距離はホップであってよい。前記距離は、リンク数であってよい。例えば、直接リンクされたノードは値1のホップを有し、及び/又は間接的にリンクされたノードは値>/=2のホップを有する。距離又はホップはd(i,j)として定められてよく、ここで、dはノードiとノードjとの間の距離である。
【0045】
ノードは、限られた数のリンク、望ましくは単一のリンクが接続を提供するとき、別のノードに直接接続されてよい。ノードは、1つ以上の他のノードに直接接続されてよい。望ましくは、ノードに直接接続されたノードは、隣接ノードと見なされるノードに接続される。望ましくは、ノードに直接接続された他のノードの全部は、該ノードの隣接ノードである。隣接ノードは次のように定義されてよい:adj(i)={j∈V:d(i,j)=radj}、ここで、iは検討中のノードであり、jはノードの集合Vの中の隣接ノード数であり、radjは所与の隣接指標である。
【0046】
所与の隣接指標は隣接半径であってよい。所与の隣接指標は、リンクの数、例えば1リンクであってよい。
【0047】
ノードは、1リンクより多くのリンク数が接続を提供するとき、更なるノードに間接接続されてよい。望ましくは、ノードが更なるノードに、隣接ノード及び/又は更なるノードのような1つ以上の中間ノードを経由して接続されるとき、又は該ノードが直列の2つ以上のリンクを経由して該更なるノードに接続されるとき、該ノードは該更なるノードに間接接続される。ノードは、前記ネットワーク内の前記更なるノードのうちの1つ以上又は全部に間接接続されてよい。望ましくは、前記ノードの所与の近隣指標の範囲内にある、隣接ノードではない前記更なるノードは、該ノードの近隣ノードである。前記ノードの所与の近隣指標の外側にある前記更なるノードは、望ましくは、隣接ノードでも近隣ノードでもない。前記ノードの所与の近隣指標の外側にあり、隣接ノードでも近隣ノードでもない前記更なるノードは、望ましくは、依然としてノードの集合の部分である。前記近隣ノードは次のように定められてよい:N(i)={j∈V:d(i,j)=H,adj(i)⊆N(i)}、ここで、iは検討中のノードであり、jはノードiとノードjとの間の距離d(i,j)の範囲内にある集合V内の近隣ノードの数であり、adj(i)はノードiの隣接ノードであり、Hは所与の近隣指標である。
【0048】
所与の隣接指標は隣接半径であってよい。所与の隣接指標は、下限値及び上限値であってよい。所与の近隣指標は、例えば2リンクのような共通の下限及び上限値を有するリンク数であってよい。所与の近隣指標は、望ましくは所与の隣接指標より大きい。
【0049】
ノードは、ノードの集合の部分であり、1つ以上の隣接ノード及び1つ以上の近隣ノードを有してよい。ノードの集合からの別のノードは、前記ノードと共通の1つ以上又は全部の隣接ノードを有してよく、又は前記ノードと共通の隣接ノードを有しなくてよい。前記別のノードは、前記ノードと共通の1つ以上又は全部の近隣ノードを有してよく、又は前記ノードと共通の近隣ノードを有しなくてよい。
【0050】
前記ネットワークのトポロジの変化のための検出部及び/又は検出が提供され得る。1つ以上のノード及び/又は1つ以上のリンクに影響する変化のための検出部及び/又は検出が提供され得る。前記1つ以上の変化は、例えば第1状態から第2状態への及び/又は第2状態から第1状態への、及び/又は1つ以上の他の状態を含んでよい、状態の変化であってよい。
【0051】
ノードは、第1状態及び第2状態を有してよく、前記第2状態は前記第1状態と比べて特性の変化を表す。前記特性の変化は、前記ノードがノードの前記集合及び/又は前記ネットワークに加わることであってよい。前記特性の変化は、前記ノードがノードの前記集合及び/又は前記ネットワークに再び加わることであってよい。前記特性の変化は、前記ノードがノードの前記集合及び/又はネットワークの中のノードとして機能し始める又は再び機能し始めることであってよい。前記特性の変化は、前記ノードがノードの前記集合及び/又はネットワークを離れることであってよい。前記特性の変化は、前記ノードがノードの前記集合及び/又はネットワークの中のノードとして機能することを停止することであってよい。
【0052】
望ましくは、ノードと該ノードに直接接続された更なるノードとの間のリンクは、第1状態及び第2状態を有し、前記第2状態は前記第1状態と比べて特性変化を表す。特性の変化は、リンクの出現又はリンクへのアクセスであってよい。特性の変化は、リンクの再出現又はリンクへの更新されたアクセスであってよい。特性の変化は、リンクの消失又はリンクへのアクセスの損失であってよい。
【0053】
特性の変化は、直接検出されてよい。望ましくは、特性の変化は、例えばテストメッセージを用いて間接的に検出される。テストメッセージは、あるノードから他のノードへ送信されてよい。テストメッセージは、リンクに沿って送信されてよい。テストメッセージは、望ましくは繰り返し、望ましくは定期的に送信される。テストメッセージは、所与の時間期間内に少なくとも1回、及び望ましくは該時間期間の任意の所与の繰り返しの中で少なくとも1回、送信されてよい。時間期間は、ノード内のクロック機能により制御され又はノードに関連付けられてよい。
【0054】
ノードによる他のノードからのテストメッセージの受信の欠如は、該他のノード及び/又はその間のリンクが特性の変化を経験していることを示してよい。特に、受信の欠如は、前記他のノードが前記ネットワークを離れたこと及び/又はリンクが消失したことを示してよい。望ましくは、受信の欠如は、前記他のノードが機能停止したこと及び/又はリンクが機能停止したことを示す。望ましくは、受信の欠如は、時間期間に関して考慮される。望ましくは、時間期間は、テストメッセージが繰り返される時間期間より長い期間である。各ノードは、テストメッセージの受信が期待される時間期間を定めるために、タイマを、望ましくはリンク毎に別個の1つ維持してよい。
【0055】
ノードの状態変化の検出は、ノードのトポロジデータセットに対する変化を生成し得る。第1状態から第2状態への変化の検出は、ノードのトポロジデータセットに対する変化を生成し得る。第2状態から第1状態への変化の検出は、ノードのトポロジデータセットに対する変化を生成し得る。
【0056】
第1状態であって、ノードがネットワークに参加している又は機能している及び/又はリンクがアクセス可能な又は機能している、第1状態から、第2状態であって、ネットワークに参加していない又は機能していないる及び/又はリンクがアクセス可能でない又は機能していない、第2状態への変化の検出は、ノードのトポロジデータセットに変化を生じ得る。
【0057】
ノードのトポロジデータセットの変化は、ノードの状態又はリンクの変化であってよい。状態の変化は、アクティブ状態又は生きている状態又は接続状態から、非アクティブ状態又は死んでいる状態又は切断状態への変化であってよい。
【0058】
ノードのトポロジデータセットの変化は、トポロジデータセットからのノードの削除であってよい。ノードのトポロジデータセットの変化は、トポロジデータセットからのリンクの削除であってよい。
【0059】
第2状態であって、ネットワークに参加していない又は機能していないる及び/又はリンクがアクセス可能でない又は機能していない、第2状態から、第1状態であって、ノードがネットワークに参加している又は機能している及び/又はリンクがアクセス可能な又は機能している、第1状態への変化の検出は、ノードのトポロジデータセットに変化を生じ得る。
【0060】
ノードのトポロジデータセットの変化は、ノードの状態又はリンクの変化であってよい。状態の変化は、非アクティブ状態又は死んでいる状態又は切断状態から、アクティブ状態又は生きている状態又は接続状態への変化であってよい。
【0061】
ノードのトポロジデータセットの変化は、トポロジデータセットへのノードの追加であってよい。ノードのトポロジデータセットの変化は、トポロジデータセットへのリンクの追加であってよい。
【0062】
ノードのトポロジデータセットは、トポロジテーブルであってよい。は、ノードにとって可能な完全なデータセットと比べて不完全なデータセットであってよい。
【0063】
ノードのトポロジデータセット、例えばトポロジテーブルは、そのときに該ノードに知られているリンクのリストを含んでよい。トポロジテーブルは、該ノードと、該ノードについてのノードの選択のうちの1つ以上の望ましくは全部との間の可能なリンクのうちの1つ以上又は全部のリストを含んでよい。該ノードについてのノードの選択は、該ノードの隣接ノードのうちの1つ以上、望ましくは全部、及び/又は該ノードの近隣ノードのうちの1つ以上、望ましくは全部、であってよい。トポロジテーブルは、そのときにノ―ドに知られているリンクのうちの1つ以上、望ましくは全部の状態を含んでよい。
【0064】
ノードのトポロジデータセットの変化があるとき、ノードのトポロジデータセットの変化は、1つ以上の他のノードに通信されてよい。ノードのトポロジデータセットの変化があるとき、ノードのトポロジデータセット全体が、1つ以上の他のノードに通信されてよい。1つ以上の他のノードは、1つ以上の又は全部の隣接ノードを含んでよい。1つ以上の他のノードは、1つ以上の又は全部の近隣ノードを含んでよい。1つ以上の他のノードは、ノードの集合の中の1つ以上の又は全部のノードを含んでよい。
【0065】
別のノードがノードのトポロジデータセットを受信すると、他のノードは、望ましくは、他のノードが他のノードの現在のトポロジデータセットを、ノードのトポロジデータセットで更新するか否かを評価する。評価は、ノードのトポロジデ―タセットを受信する各々の別のノードにより実行されてよく、望ましくは各評価は他の評価と独立である。評価は、望ましくは、他のノードの現在のトポロジデータセットがノードのトポロジデータセットより古いか又は新しいかを確立してよい。望ましくは、他のノードの現在のデータセットがより古い場合、別のノードの現在のトポロジデータセットは、ノードのトポロジデータセットから更新される。望ましくは、他のノードの現在のデータセットがより新しい場合、別のノードの現在のトポロジデータセットは、ノードのトポロジデータセットから更新されない。
【0066】
ノードが別のノードのトポロジデータセットを受信すると、ノードは、望ましくは、ノードがノードの現在のトポロジデータセットを、他のノードのトポロジデータセットで更新するか否かを評価する。評価は、望ましくは、ノードの現在のトポロジデータセットが他のノードのトポロジデータセットより古いか又は新しいかを確立してよい。望ましくは、ノードの現在のデータセットがより古い場合、ノードの現在のトポロジデータセットは、他のノードのトポロジデータセットから更新される。望ましくは、ノードの現在のデータセットがより新しい場合、ノードの現在のトポロジデータセットは、他のノードのトポロジデータセットから更新される。
【0067】
ネットワーク内で通信されるメッセージのためのメッセージソート部及び/又はメッセージのソートは、特にネットワークのトポロジの変化に関するメッセージに関して提供され得る。メッセージのための更新ソート部又はメッセージのソートは、メッセージが正しいシーケンス若しくは順序又は生成時間で考慮されるように提供されてよい。
【0068】
ノード及び別のノードは、論理クロックのようなクロック機能を提供されてよい。クロック機能は、2つのデータ構造を提供し得る。1つ目はローカル時間のレコードであり、2つ目は分散型システムにおいて最も良く知られているグローバル時間のレコードである。例えば、論理クロックは、クロック機能を通じるローカル時間、例えば論理ローカル時間のレコード、及び論理グローバル時間のような分散型システム内のグローバル時間のローカルレコードを提供してよい。
【0069】
望ましくは、システム内の各ノードは、クロック機能を提供される。
【0070】
クロック機能は、システム内の1つ以上又は全部のイベントにタイムスタンプを割り当ててよい。イベントは、新しいノード又は新しいリンクの検出を含んでよい。イベントは、ノード又はリンクの状態の変化の検出を含んでよい。イベントは、ノード又はリンクの損失の検出を含んでよい。イベントは、ノードがノードのトポロジデータセットを更新することを含んでよい。
【0071】
システム内のタイムスタンプは、望ましくは単調な、最も望ましくは増大する特性に従う。2つのイベントが因果でリンクされるとき、結果イベントは、該結果イベントをもたらした原因イベントより遅いタイムスタンプを与えられてよい。
【0072】
クロック機能は、ベクトル時間クロックであってよい。ベクトル時間クロックは時間ベクトルを用いてよい。各ノードは、別個の時間ベクトルを作動する。各ノードは、該ノードの時間ベクトルを用いて、該ノードのイベントにタイムスタンプを付してよい。各時間ベクトルは次の形式であってよく:T=(Ti1,...,Tin)、ここで、Tはノードiのローカル論理クロックであり、時間1から時間nまでのノードiの論理時間進行を記述する。
【0073】
1つ以上の、望ましくは全部のノードは、1つ以上の又は全部のノードの、望ましくは該ノードの隣接ノード及び/又は近隣ノード論理時間進行の少なくとも部分的認識を有する。別のノードの論理時間進行の少なくとも部分的認識は、次の形式であってよく:Tij、これは、ノードjのローカル時間nのノードiの最新認識を表し、ここでj∈adj(i)である。Tの次元はdim(T)により表され、dim(T)はadj(i)のサイズに等しくてよい。
【0074】
時間ベクトルクロックは、1つ以上のルールに従い作動してよい。ルールは、以下のうちの1つ以上又は全部を含んでよい。
【0075】
1.1つ以上の、望ましくは全部のノードが、0のローカル時間で起動する。
【0076】
2.ノードでイベントが生じると、ローカル時間は、例えば整数だけ、望ましくは値1だけ増大されてよい。
【0077】
3.ノードでイベントが生じると、該ノードは、メッセージを、望ましくはトポロジデータセットが変化した1つ以上の更なるノードへ送信する。
【0078】
4.更なるノードが、望ましくは変化のメッセージを受信すると、それは該ノードのイベントであると考えられ、望ましくは、したがって、ルール2が更なるノードのローカル時間に適用される。
【0079】
5.更なるノードが、望ましくは変化のメッセージを受信すると、更なるノードのローカル時間は、ルール4の増加に加えて更に増加され、望ましくは、更なるノードのローカル時間は、ルール4の増加の後の更なるノードのローカル時間、又はメッセージ内の更なるノードのローカル時間、の大きい方だけ更に増大される。
【0080】
6.ノードにより更なるノードへ送信されたメッセージは、ノード及びノードがローカル時間の認識を有する全部の更なるノードのローカル時間を含む。該ローカル時間は、そのときの1つ以上の更なるノードの実施のローカル時間と異なってよい。
【0081】
7.メッセージがノードにより受信された最後のメッセージより新しい場合、該メッセージのトポロジデータセットは、更なるノードのトポロジデータセットを更新するために使用されてよい。望ましくは、ルール4及び/又は5は、メッセージがより新しい及び/又はメッセージが交信中の更なるノードのトポロジデータセットをもたらす場合にのみ適用される。
【0082】
8.メッセージがノードにより受信された最後のメッセージより古い場合、該メッセージのトポロジデータセットは、廃棄され及び/又は更なるノードのトポロジデータセットを更新するために使用されなくてよい。望ましくは、ルール4及び/又は5は、メッセージがより古い及び/又はメッセージのトポロジデータセットが廃棄され及び/又は使用されない。
【0083】
ベクトル時間クロックは、1つ以上のルールに従い作動してよい。ここで、該ルールは以下のうちの1つ以上又は全部を含む:
・ノードiにおける初期ローカルイベントのタイムスタンプは、1であるi番目のエントリを除き、全て0である。
・Tij=xの場合、ノードiは、ノードjにおけるローカル時間がxまで進んでいることを知る。
・ベクトルTiは、論理グローバル時間のノードiのビューを構成する。
・ノードiはそれをイベントにタイムスタンプを付すために使用する。
・メッセージのタイムスタンプは、現在のスタンプ及び入ってくるベクトルタイムスタンプのうちの要素全体の最大である。
・メッセージを送信する前に、ノードiは自身のローカル論理時間Tij←Tij+1を更新する。
・ノードj∈adj(i)からのメッセージ(m,T)を受信すると、ノードiは、以下によりノードiの論理グローバル時間を更新する動作を実行する:∀k∈adj(i)、Tik←max(Tik,Tjk)。
【0084】
1つ以上の又は全部のノードにより送信された1つ以上の又は全部のメッセージのブロードキャストアルゴリズムは、決定性アルゴリズム又は確率的アルゴリズムであってよい。
【0085】
データセット処理部及び/又はデータセットの処理は、ネットワークのトポロジの変化の認識がネットワーク内で共有されるように提供されてよい。ノードのトポロジデータセットのためのデータセット処理部及び/又は処理は、ノードのトポロジデータセットが更なるノードのトポロジデータセットからのデータにより更新されるように、提供されてよい。
【0086】
ノードのトポロジデータセット、例えばトポロジテーブルは、ノード、望ましくは各ノードについて、構成されてよい。ノードのトポロジデータセットは、該ノードiの主トポロジビューVを含んでよい。ノードのトポロジデータセットは、ノードに知られているリンクのリストを含んでよい。リンクは、lmnの形式でリストされてよい。ここで、mは1つのノードであり、nは別のノードである。形式lmn及びlnmは、同義的に使用されてよく、それらのペアのうちの1つのみがリスト内のリンクを提供するためにリストされる。Tノードのトポロジデータセットは、リスト内の各リンクの指定を含んでよい。指定は、2つの値のうちの1つ、例えば1又は∞を有してよい。指定は、リンクの動作状態に関連してよい。例えば、動作しているときの値、及び動作していないときの値である。
【0087】
最初に、ノードに知られているリンクのリストは、それらのノード、及びしたがって、例えばリンクを介して更なるノードからのテストメッセージの受信により該ノードにより検出された該リンク、であってよい。
【0088】
更なるノードのトポロジデータセットを含むメッセージが交換されると、ノードに知られているリンクのリストは、他のノードからのメッセージ内のこれらのリンクであってよく、又はそれにより補強されてよい。望ましくは、ノードに知られているリンク及び他のノードからのメッセージ内のこれらのリンクの結合は、ノードのトポロジデータセットを形成する。
【0089】
ノードのトポロジデータセットは、ノード又はリンクの動作状態の変化に関して更新されてよい。ノードのトポロジデータセットは、ノード又はリンクが動作状態に戻ることに関して更新されてよい。ノードのトポロジデータセットは、新しいノード又は新しいリンクがネットワークに追加されることに関して更新されてよい。ネットワークに追加されている新しいノードは、別のノードからノードトポロジデータセットを、該ノードの第1ノードトポロジデータセットを提供するために、送信されてよい。
【0090】
ノードのトポロジデータセットは、1つ以上の条件が満たされるとき、更なるノードのトポロジデータセットを含むメッセージ内からのデータにより更新されてよい。条件は、更なるノードのトポロジデータセットがノードのトポロジデータセットより新しいタイムスタンプを有することであってよい。条件は、1つ以上のリンク、特にノードのトポロジデータセット及び更なるノードのトポロジデータセットの両方の中の1つ以上のリンクに関して、例えば1から∞へ又は∞から1への指定の変化があることであってよい。条件は、更なるノードのトポロジデータセットがノードのトポロジデータセット内に無い1つ以上のリンクを含むことであってよい。条件は、ノードのトポロジデータセットがノードの所与の指標の範囲内にある更なるノードのトポロジデータセット内のリンクに関して更新されるだけであるという更なる条件と一緒に、更なるノードのトポロジデータセットが、ノードのトポロジデータセット内に無い1つ以上のリンクを含むことであってよい。所与の指標は、所与の隣接指標の範囲内であること、又はより望ましくは所与の近隣指標の範囲内であることであってよい。所与の指標の範囲内に無いリンクは、望ましくは、ノードのトポロジデータセットに追加されない。
【0091】
ノードのトポロジデータセットは、m={V,T}の形式のメッセージmをノードjから所与の時間Tに受信すると、更新されてよい。ここで、ノードjはトポロジデータセット又はグローバルトポロジビューVを有し、ノードiがそれを用いて、ノードiのトポロジデータセット又はグローバルトポロジビューVを更新するようにする。
【0092】
ノードのトポロジデータセットは、リンクlmnがノードのトポロジデータセット、例えばグローバルビューV、及び更なるノードのトポロジデータセット、例えば更なるノードのグローバルビューVの両方にあるリンクである場合に更新されてよい。その結果、V∪Vである。Vの中で受信されたリンクlmnに関する情報により更新されるノードのトポロジデータセットは、タイムスタンプT[t]>T[t]を条件としてよい。ここで、該条件が真である場合に、リンクlmnのより新しい状態が取られる。
【0093】
ノードのトポロジデータセットは、リンクlpqが更なるノードのトポロジデータセット、例えば更なるノードのグローバルビューV内にあり、ノードのトポロジデータセット、例えば更なるノードのグローバルビューV内に存在しない場合に更新されてよい。ノードのトポロジデータセット、例えばノードのグローバルビューVに追加されているリンクlpqに関する情報は、ノードiとqとの間の距離が隣接ノードの値、水平Hより小さいことを条件としてよい。条件は、lij+ljp2+lp1p2+・・・+lpnp+lpq<Hであってよく、ここで、lij、ljp2、lp1p2、...、lpnpはすべてVのアクティブリンクである。
【0094】
ノードは、該ノードにより受信されたメッセージの結果として、該ノードのトポロジデータセットに変更が行われると常に、該ノードのトポロジデータセットを含むメッセージを1つ以上の更なるノードへ送信してよい。望ましくは、ノードは、該ノードのトポロジデータセットを含むメッセージを、近隣ノード及び/又は隣接ノードである1つ以上の更なるノードのみへ送信してよい。
【0095】
ノードは、該ノードが新しいノードにリンクされると常に、該ノードのトポロジデータセットを含むメッセージを、1つ以上の該新しいノードへ送信してよい。望ましくは、ノードは、該ノードのトポロジデータセットを含むメッセージを、該ノードの隣接ノードである1つ以上の新しいノードのみへ送信してよい。
【0096】
システム内の複数のノード及び/又は方法は、互いに独立に更新を開始してよい。複数の更新は、システム及び/又は方法の中で同時に起動されてよく、望ましくは、更新に伴うタイムスタンプ制御が、ノードにおけるトポロジデータセットに適用される。
【図面の簡単な説明】
【0097】
本発明の上述の及び他の態様は、本願明細書に記載される実施形態から明らかであり、それらの実施形態を参照して教示される。本発明の実施形態は、単なる例として添付の図面を参照して以下に説明される。
図1】ノード、隣接ノード及び近隣ノード、を示すネットワークトポロジ図の一例である。
図2】ベクトルクロックのシステムの説明である。
図3】任意のトポロジ変化(障害又は損失メッセージ)の存在しない、ブロードキャストアルゴリズムの実行を示す。
図4】本発明の一実施形態の動作を説明するために使用されるグローバルネットワークの説明である。
図5】本発明の一実施形態を説明するために使用される時間と共にノード間でのメッセージの交換の説明である。
【発明を実施するための形態】
【0098】
非構造化ピアツーピア(peer-to-peer:P2P)ネットワークの中心的問題は、トポロジの維持である。例えば、ノードがネットワークに参加し及び離れるとき及び/又はノードが突然クラッシュしたとき、どのように近隣の変数を正しく更新するかである。本発明は、トポロジ更新アルゴリズムに関する。
【0099】
P2Pネットワーク内では、検索、情報流布、ブロードキャスト、等のために、「誰が誰に接続されるか」又は「誰が誰を知っているか」を知る必要がある。このコンテキストでは、確率的アルゴリズム及び決定性アルゴリズムのような多数のブロードキャストアルゴリズムが知られている。
【0100】
疫学的アルゴリズム又はゴシッププロトコル(Gossip Protocols)は、本来、確率的であり、それらは固定トポロジに依存しない。ノードは、ランダムな近隣と情報を交換して、拡散のような計算パターンを実装し、結果として、システムは、全てのノードがメッセージを知る状態に収束する。ゴシッププロトコルは、ネットワーク内のノード数と独立に、各ノードが固定数のメッセージだけを送信するので、拡張可能である。さらに、ノードは、肯定応答を待たず、又は肯定応答が到着しないならば回復動作も行わない。ノードは異なるノードからメッセージのコピーを受信するので、それらは、断続的なリンク障害及びノードクラッシュに対して障害耐性を達成する。いかなるノードも担うべき特別な役割を有しない。したがって、障害ノードは、他のノードがメッセージを送信し続けることを防がない。したがって、障害検出又は特別な回復動作は必要ない。
【0101】
ゴシッププロトコルの欠点は、それらが送信する多数のメッセージである。あるクラスのゴシッププロトコル(非エントロピープロトコル)は、無限の実行において、無制限の数のメッセージを送信する。
【0102】
横型探索のようなスパニングツリーアルゴリズムは、決定性アルゴリズムのクラスである。スパニングツリーは、ネットワークを「バックボーン」、つまりノードを接続するエッジの最小セットとして、視覚化する単純な方法を提供する。概念は単純であり、スパニングツリーは、先ず構成され、各ノードからローカルデータ変数を収集するために使用され、次に、ルートノード(又はシンクノード)へ向かってデータを集約する。各ノードは、それ自体の親へ自身の値を送信する。各非リーフノードにおいて、自身の子ノードの値は、それ自体の値に加えて、ツリーの上方へ結果を送信する前に処理される。横型探索プロトコルは、浅いレベルにある全てのノードが生成されるまで、ツリー内のノードを生成しないので、常にノードへの最短パスを発見する。スパニングツリーは、情報分散及び収集の、及びそれらがネットワークの新しいトポロジを計算する方法において、非常に効率的な形式である。
【0103】
一般に、スパニングツリーのような構造は、構造的に脆弱であると考えられ、単一の頂点又はエッジの障害がブロードキャストを失敗させる。
【0104】
トポロジ更新問題は、現在、ネットワークトポロジが動的であるとき、つまりリンクが任意の時間に障害し回復するとき、各ネットワークサイトにおけるネットワークトポロジの認識を保つことの問題である。任意のトポロジアルゴリズムの正しい動作は、リンク状態変化(障害及び修復)がネットワークノード又は他の要因により検出される方法に大きく依存する。
【0105】
トポロジアルゴリズムの使用の下地にある及び任意のソリューションにおいて説明されるべき課題には、幾つかの繊細さがある。
・リンクは、短時間の間に、幾つかのトポロジ変化を経験することがある。他のネットワークノードは、どの変化が最近のものであったかを最終的に決定しなければならない。ノードは、リンクの状態に関する古い情報と新しい情報との間を区別可能でなければならない。
・トポロジアルゴリズムの実行中に、追加のトポロジ変化が生じることがある。トポロジアルゴリズムは、実行中に新しい情報を組み込む、又は新しいアルゴリズムバージョンを開始する、ことが可能でなければならない。異なるバージョンが使用される場合、各ノードは、どれが最新バージョンかを決定可能でなければならない。
・単一リンクの修復は、切断されたネットワークの2つの部分を再接続させることが可能である。各部分は、もう一方に関する古いトポロジ情報を有することがある。アルゴリズムは、2つの部分が最終的に合意し、正しいネットワークトポロジを採用することを保証しなければならない。
【0106】
ネットワークが自身の中の変化を明確に理解する能力は、ネットワークを通じる高速且つ効率的通信のために、及びネットワークが完全に機能するために、重要である。一例として、デジタル通貨に高速支払ネットワークを提供するために、トランザクション及び他の情報は、分散型ネットワークを通じて完全且つ迅速に共有されなければならない。
【0107】
シェアを参加者に分配することにより秘密を保護する閾値暗号システムに依存する方法では、秘密シェアの部分集合を共同で保持する商人(merchant)の集合で構成されるネットワークが、最初に構成される。秘密シェアの第2の半分は、顧客(customer(s))により保持される。商人ネットワークは、署名の生成、鍵シェアの更新、閾値レベルの定義、トランザクションの検証、等のような重要なタスクを実行する。協働し通信し及びネットワークトポロジを認識する彼らの能力は、これらの状況において不可欠である。
【0108】
以下の説明では、私達は、各商人ノードが、リンク及びノード障害にも拘わらず、ネットワークトポロジの正しいビューを維持することを可能にするアルゴリズムを提示する。アルゴリズムは、ネットワークが、有限数のステップのうちに安定構成に自動的に戻ること(所謂、「自己安定化」)を可能にし、イベント間の因果関係を正確にキャプチャするために論理クロックを使用する。トポロジ更新プロトコルは、イベント駆動型である。つまり、幾つかの変化が検出されると、起動される。
【0109】
システムは、
トポロジの変化を検出するステップと、
これらの変化を発生により順序付けるステップと、
該変化を反映する新しいトポロジを構成するステップと、を含む。
【0110】
本発明の完全な説明を可能にするために、ネットワークの数学的モデルを理解することが有用である。
【0111】
図1を参照すると、一連のノード(1~8とラベル付けされる)が設けられる。各ノードは、別のノードへのリンク(又はエッジ)を設けられる。一連のノードは、集合を形成し、ここでVは該集合の中のノードの数である。
【0112】
ネットワークは、グラフG=(V,E)により表すことができる。ここで、Vはノードの集合であり、それぞれが異なるアイデンティティを有し、Eはエッジ(又はリンク)の集合である。
【0113】
数学的モデルは、以下の定義を使用する。
【0114】
定義1(「ホップ(Hop)」の定義)。2つのノードi及びjの間の距離d(i,j)は、これらのノードを接続するリンクの最小数に等しい。したがって、図1で、ノード6とノード1との間の距離は2リンクであり、ノード8とノード1の場合には1リンクだけである。
【0115】
定義2(「隣接ノード(Adjacent Nodes)」の定義)。集合Vの中のノードi、i∈V、の隣接ノードadj(i)は、所定距離又は隣接半径radjの範囲内にある、集合Vの中のノードj、j∈V、である。ここで、adj(i)={j∈V:d(i,j)=radj
定義3(「近隣ノード(Neighbour Nodes)」の定義)。集合Vの中のノードi、i∈V、の近隣ノードN(i)は、所定距離又は水平半径H≧radjの範囲内にある、集合Vの中のノードj、j∈V、である。ここで、N(i)={j∈V:d(i,j)=H,adj(i)⊆N(i)}
図1で、隣接半径radj=1を選択した場合、ノード(ピア)1の隣接ノードは、赤で表される、つまりノード2、3、4、7、8である。水平半径H=2を選択した場合、近隣ノードは、青で表される、つまりノード5及び6である。
【0116】
変化の検出
明らかに、トポロジ変化を説明可能であるために、このような変化を検出可能である必要がある。
【0117】
トポロジ変化は、いつでも起こり得る。したがって、任意の種類の初期障害をキャプチャするために、システムに関して以下を仮定する。ネットワーク内の各ノードiは、自身の、リスト内の隣接ノードのアイデンティティを維持する。ノードiは、テストメッセージ「I’m alive」を自身の隣接ノードへ定期的に送信する。図1を参照すると、ノード4は、このようなメッセージをノード1のみへ送信し、一方で、ノード1はこのようなメッセージをノード2、3、4、7、8へ送信する。
【0118】
「I’m alive」メッセージの発送頻度は、エラー検出メカニズムの効率に大きな影響を与える。短いエラー検出時間を達成するために、「I’m alive」メッセージが非常に頻繁に送信されチェックされる必要がある。
【0119】
ノードi内の各プロセッサは、時間間隔を測定するために使用されるローカルクロックを有する。異なるノードにおけるクロックは、互いに同期していないことがある。各リンク(i,j)について、ノードiは、自身の隣接ノードj∈adj(i)のタイマtijを維持する。ノードiが「I’m alive」メッセージをノードjから時間間隔δt内に受信しなかった場合、リンク(i,j)はもはや利用可能ではないと考えられ、jを自身の隣接ノード集合から削除する。ノードiは、次に、自身の現在の(場合によっては誤った)トポロジテーブルTを更新する。トポロジテーブルは、ノードiに直接接続されたリンクの動作状態のリストである。したがって、図1を参照すると、ノード1は「I’m alive」メッセージをノード4へ送信し、ノード4は「I’m alive」メッセージをノード1へ送信すべきである。ノード1がこのようなメッセージをノード4から所定時間期間内に受信しなかった場合、ノード4は、ノード1のトポロジテーブルTから削除される。次に、トポロジテーブルT内のノード1の隣接ノードは、ノード2、3、7、及び8だけになる。
【0120】
以上の考察は、第1トポロジ更新ルールを形成する。つまり以下の通りである:
1.ノードが、隣接リンクが故障したことを検出すると、障害状態がノードの主トポロジテーブルに入力される。
この更新されたトポロジテーブルは、ノード集合Vの中の他のノードと共有されることが望ましい。これが生じると、ノードは、自身のトポロジテーブルを、隣接ノードから受信したトポロジテーブルに従い更新する。したがって、第2トポロジ更新ルールが形成され、つまり以下の通りである:
2.ノードは、主トポロジテーブル全体を近隣から受信すると、自身の主トポロジテーブルを、主トポロジ更新アルゴリズム(後述する)を用いて更新する。
【0121】
変化の順序付け
上述のように、更新されたトポロジテーブルメッセージは、検出されたトポロジ変化に応答して送信されるだけである。ネットワーク内で送信される全てのメッセージは遅延の影響を受けるので、ノードは、ある時点で自身が正しいトポロジを知っていることを確信できない。更新されたトポロジテーブルメッセージのうちの1つ以上は、その受信時間に関係なく、別の更新されたトポロジメッセージの中に記された状態と比べて古く又は期限切れであることがある。因果序数ブロードキャスト(Raynal,M.、Singhal,M.、「Capturing Causality in Distributed Systems、1996、IEEEに詳述される)は、2つのメッセージが因果関係があり、同じ宛先を有する場合、それらがそれらの送信順でアプリケーションへ配信されることを保証する。
【0122】
本発明は、論理クロックのシステムを使用する。ここで、全てのノード(ピア)は、後述するルールセットを用いて進められる論理クロックを有する。結果として、全てのメッセージはタイムスタンプを割り当てられ、該タイムスタンプにより、処理がイベント間の因果関係を推測できる。イベントに割り当てられたタイムスタンプは、単調性の特性に従い、それらは常に増加している。つまり、イベントaがイベントbに影響を与える原因である場合、aのタイムスタンプはbのタイムスタンプより小さい。この場合、イベントbはイベントaの結果である。
【0123】
論理クロックは、以下のルールに従い進む;ベクトル時間クロック。
【0124】
ベクトルクロックのシステムでは、時間ドメインは、有限次元の非負整数ベクトルの集合により表される。各ノードiは、ベクトルT=(Ti1,...,Tin)を維持する。ここで、Tijは、ノードiのローカル論理クロックであり、時間1から時間nまでのノードiの論理時間進捗を記述する。
【0125】
ijは、ノードjのローカル時間についてのノードiの最新知識を表す。ここで、ノードj∈adj(i)である。
【0126】
Tiの次元をdim(T)により表記し、dim(T)をadj(i)の大きさと等しくする。
【0127】
ノードiにおける初期ローカルイベントのタイムスタンプは、1であるi番目のエントリを除き、全て0である。Tij=xの場合、ノードiは、ノードjにおけるローカル時間がxまで進んでいることを知る。ベクトルTは、ノードiの論理グローバル時間のビューを構成し、ノードiはそれをイベントにタイムスタンプを付すために使用する。受信したメッセージのタイムスタンプは、現在のスタンプ及び入ってくるベクトルタイムスタンプのうちの要素全体の最大である。
【0128】
この動作は、図2に、3個のノードA、B、Cに関して示される。各ノードにおいて、ローカル時間は最初は0である。イベントがノードCで生じると、ノードCは、自身のローカルクロック時間を1まで増加させ、ノードBに通知する。ノードBがメッセージを受信するとき、他のイベントはノードBに通知されず、したがって、ノードBのローカル時間は0のままである。ノードBが、今、イベントを経験したので、ノードBはノードBのローカル時間を1により更新する。ノードBのローカル時間が0だったので、これは1の値を与える。さらに、ノードBは、また、更新したノードBのローカル時間(今の値1)又はメッセージ内のノードBのローカル時間(本例では値1)のうちの大きい方を追加することにより、ノードBのローカル時間を補正する。したがって、補正されたノードBのローカル時間は2であり、ノードBは、次に変化をノードAに通知する。
【0129】
ノードAは、1により更新し及び1の追加により補正する同様の処理を通じて、A:2 B:2 C:1のノードBへのメッセージをもたらす。ノードBがこのメッセージを受信する時間までに、ノードBは、別の独立イベントに気付き、それをCに通信している。したがって、1によるノードBの更新があるが、補正はノードBのローカル時間への1の追加であり(この時点までに3)、メッセージ内のノードBのローカル時間への1の追加ではない(この時点で2だけ)。したがって、Aへ送信された新しいメッセージは、B:5(3+1+1であり、2+1+1ではない)の値を有する。
【0130】
後のメッセージは、同じ方法で処理される。時間3でノードBにより送信される第2メッセージは、上述の他のメッセージ、メッセージ1(CからBへ)、メッセージ2(BからAへ)、及びメッセージ4(AからBへ)及びメッセージ5(BからCへ)と独立である。
【0131】
以上の考察は、論理クロック更新ルールを形成する。つまり以下の通りである:
1.メッセージを送信する前に、ノードiは自身のローカル論理時間を更新するTij←Tij+1。
2.メッセージ(m,T)をノードj∈adj(i)から受信すると、ノードiは、以下の一連の動作を実行する:
a.自身の論理グローバル時間を以下のように更新する:
∀k∈adj(i)、Tik←max(Tik,Tjk
図3は、任意の障害又は損失メッセージを有しないブロードキャストアルゴリズムの実行を示す。私達は、ブロードキャストアルゴリズム(決定性又は確率的)を指定せず、私達は近隣ノードの定義を与えない。私達は、ノード1、2、3が全て隣接ノードであると仮定する。つまり、(2,3)∈adj(1)、(1,3)∈adj(2)、(1,2)∈adj(3)。ノード1は、第1メッセージ(m,T)を生成し、それをランダムに又は選択されたブロードキャストアルゴリズムに従い確定的に、ノード2及び3へ送信する。ノード3は、ノード1からのメッセージ(m,T)にトリガされ、新しい第2メッセージ(m,T)を生成し、それをノード1及び2へ送信する。ノード1は、ノード3からのメッセージ(m,T)にトリガされ、新しい第3メッセージ(m,T)を生成し、それをノード2及び3へ送信する。
【0132】
具体的に、ノード2が第2メッセージ(m,T)をノード3から受信するときまでに、ノード2は既に(m,T)をノード1から受信から受信している。ノード2は、これらのメッセージの順序を、上述の方法から知る。したがって、ノード2は、第2メッセージ(m,T)を廃棄し、第2メッセージ(m,T)を使用して、メッセージ内容の完全性を保証する。
【0133】
更新されたトポログラフィの構成
変化を検出し、ノードにおいて該変化の正しい順序を保証すると、ノードが新しいトポログラフィを確立する方法が以下に議論される。
【0134】
以下のアルゴリズムは、各ノードiにより、その主トポロジビューVを構成するために使用される。lmn又はlnmのようなノードmとnとの間の単一の双方向リンクを参照する。トポロジテーブルV内の各エントリは、リンクlmn又はlnmである。リンクは、つの値1又は∞のうちの1つを取ることができる。リンクが動作中であるとき、値は1に設定される。リンクが死んでいるとき、値は∞に設定される。
【0135】
所与の時間にノードjからメッセージm={V,T}を受信すると、ノードjは、それを用いて自身のグローバルビューVを更新する。
【0136】
リンクlmnを両方のグローバルビューの中のリンクであるとする。V∪V。リンクlmnに関する情報は、タイムスタンプT[t]>T[t]ならば、受信したVにより更新される。リンクlmnのより新しい状態が取り入れられる。
【0137】
pqを、現在V内のリンクではない、V内のリンクであるとする。lpqに関する情報は、ノードiとqとの間の距離が隣接ノードについての値、水平Hより小さい場合、グローバルビューVに追加される。つまり、lij+ljp2+lp1p2+・・・+lpnp+lpq<H、ここで、lij、ljp2、lp1p2、...、lpnpはすべてVのアクティブリンクである。
【0138】
したがって、リンクの動作状態の変化が更新され、動作状態に戻るリンクが追加され、ネットワークに現れる新しいリンクが追加される。リンクがネットワークに戻る又は新しいリンクがネットワークに追加されるとき、トポロジアルゴリズムは、自身が最新トポロジテーブルのコピーを提供されることを保証する。
【0139】
以上の考察は、通信ルールを形成する。つまり以下の通りである:
1.ノードの主トポロジテーブル内のリンク状態エントリが変化すると、新しいトポロジテーブルを含むメッセージが近隣ノードへ送信される。
2.ノードにおけるリンクプロトコルが、隣接リンクが動作中になったことを検出すると、ノードは、自身の主トポロジテーブル全体を該リンクを介して送信する。
【0140】
プロトコルの適切なコードの例は次の通りである。
【0141】
【数1】
トポロジ更新アルゴリズムの動作例は、図4のネットワークを参照して以下に記載される。
【0142】
adj=1、及びH=2と仮定する。したがって、ノード1に対して、ノード2及び3は隣接ノードであり、ノード4及び5は近隣ノードである。
【0143】
初期段階で、ノード1、2、及び3のトポロジビューV、i∈(1,2,3)は:
【0144】
【数2】
結果として、ノード3は、ノード1及び2より情報の多い且つ完全な主トポロジビューを有する。
【0145】
変化を詳述するメッセージを順序付ける方法に戻ると、論理クロックTは:
【0146】
【数3】
フェーズ1:
ノード3は、第1メッセージm={V,T[t]=1}をノード1及びノード2へ送信する。
【0147】
フェーズ2:
ノード1及び2、つまりi∈(1,2)は、T[t]>T[t]かどうかをチェックする。第1メッセージのときこれに該当するので、ノード1及び2、つまりノードiは、それらの論理クロックT及びそれらのビューVを更新する。実際には、これは、リンクl23がノード1に予め知られていなかったので、Vへのl23の追加を意味する。一方で、リンクl45もノード1に知られていなかったが、該リンクは許容近隣ノード限界の外側であるので:l13+l34+l45>H、Vはリンクl45を含むよう更新されない。結果として生じる、ノード1及び2のT及びVへの更新は:
【0148】
【数4】
ノード1が同様のメッセージm={V,T[t]=1}をノード2へ送信した場合、ノード2は自身の論理クロックを更新する:
【0149】
【数5】
ノード2のトポロジビューVは、ノード2がリンクl12、l13、l23及びl34について既に知っているので、不変である。Vに変化がないので、ノード2は新しいメッセージをブロードキャストしない。
【0150】
フェーズ3:
リンク(エッジ)l34は、今、死んでいる。ノード3は、ノード4からのテストメッセージの欠如により、この変化を検出する。結果として、ノード3は、l34の該動作状態を含むよう、ビューを更新する。更新されたビューは:
【0151】
【数6】
ノード3は、変化があるので、新しいメッセージm={V,T[t]=2}をノード1及び2へ送信する。本例では、私達は、mがノード2に届かない(又は未だノード2に届いていない)と仮定する。
【0152】
フェーズ4:
ノード1は、上述のチェックを実行し、自身の論理クロックT及び自身のビューVを更新する。これは、以下を与える:
【0153】
【数7】
フェーズ5:
ノード1は、直ちに動作し、メッセージm={V,T[t]=2}を送信する。
【0154】
フェーズ6:
メッセージmを受信すると、ノード2は上述のチェックを実行し、次に、ノード2は相応してT及びVを更新する:
【0155】
【数8】
同じ方法で、更なる変化が検出され、通達され、順序付けられ、更新され得る。
【0156】
留意すべきことに、上述の実施形態は、本発明を限定するのではなく、当業者は添付の請求項により定められる本発明の範囲から逸脱することなく多数の代替の実施形態を考案できる。請求項中、括弧内に記載された如何なる参照符号も、請求項を制限すると見なされるべきではない。用語「有する(comprising又はcomprises)」等は、全体としていかなる請求項中に及び明細書に列挙された以外の要素又はステップの存在を排除するものではない。本願明細書において、「有する(comprises)」は「含む(includes)又は構成される(consists of)」を意味し、「有する(comprising)」は「含む(including)又は構成される(including of)」を意味する。要素の単数の参照は、該要素の複数の存在を排除するものではなく、逆も同様である。本発明は、複数の別個の要素を有するハードウェアにより又は適切にプログラムされたコンピュータにより、実施され得る。複数の手段を列挙している装置の請求項では、これらの複数の手段は、1つの同一のハードウェア要素により実装することができる。特定の量が相互に異なる従属請求項に記載されるという事実は、これらの量の組合せが有利に用いることが出来ないことを示すものではない。
図1
図2
図3
図4
図5
【外国語明細書】