JP2006174417A - リソース要求を対応するリソースに会合させる方法およびシステム - Google Patents

リソース要求を対応するリソースに会合させる方法およびシステム Download PDF

Info

Publication number
JP2006174417A
JP2006174417A JP2005306949A JP2005306949A JP2006174417A JP 2006174417 A JP2006174417 A JP 2006174417A JP 2005306949 A JP2005306949 A JP 2005306949A JP 2005306949 A JP2005306949 A JP 2005306949A JP 2006174417 A JP2006174417 A JP 2006174417A
Authority
JP
Japan
Prior art keywords
node
nodes
message
ring
destination
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2005306949A
Other languages
English (en)
Other versions
JP4726604B2 (ja
JP2006174417A5 (ja
Inventor
Gopala Krishna R Kakivaya
クリシュナ アール.カキバヤ ゴパラ
Richard L Hasha
エル.ハシャ リチャード
Thomas L Rodeheffer
リー.ローデヘファー トーマス
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US10/971,451 external-priority patent/US20060090003A1/en
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2006174417A publication Critical patent/JP2006174417A/ja
Publication of JP2006174417A5 publication Critical patent/JP2006174417A5/ja
Application granted granted Critical
Publication of JP4726604B2 publication Critical patent/JP4726604B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/02Topology update or discovery
    • H04L45/04Interdomain routing, e.g. hierarchical routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/02Topology update or discovery
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/54Organization of routing tables

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)
  • Medicines That Contain Protein Lipid Enzymes And Other Medicines (AREA)
  • Peptides Or Proteins (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Telephonic Communication Services (AREA)

Abstract

【課題】リソース要求を対応するリソースに会合させる方法、システム、コンピュータプログラム製品を提供する。
【解決手段】2重に連結されたソート済リストは、モジュロ算術を用いて両方向に辿られる。ソート済リストは、複数の近接性メトリックに基づいて区分することができる。ノードのルーティングテーブルは、より効率的なルーティングを容易にするため、連合インフラストラクチャのID空間内で、ノードに対数指標を提供する。メッセージは、リング内のノードにルーティングすることができ、その他の区分化リング内のノードに近接的にルーティングすることができる。
【選択図】図4

Description

本発明は、リソースへのアクセスに関し、より詳細には、リソース要求を対応するリソースに会合させる(rendezvous)ことに関する。
コンピュータシステムおよび関連技術は、社会の多くの局面に影響を及ぼしている。実際、情報を処理するコンピュータシステムの能力は、われわれの生活および仕事の仕方を様変わりさせた。コンピュータシステムが出現する前は人手によって行われていた多くの作業(例えば、文書処理、スケジューリング、およびデータベース管理)を、今ではコンピュータシステムが当たり前のように実行している。最近では、コンピュータシステムは、相互にまたその他の電子装置に結合されて、有線および無線コンピュータネットワークを形成しており、それを介して、コンピュータシステムおよびその他の電子装置は、電子データを転送することができる。その結果、コンピュータシステムで実行される多くの作業(例えば、音声通信、電子メールアクセス、家庭用電子機器の制御、ウェブブラウジング、および文書印刷)は、有線および/または無線コンピュータネットワークを介する多くのコンピュータシステムおよび/またはその他の電子装置の間の電子通信を含んでいる。
しかし、ネットワークリソースを利用してコンピュータ化された作業を実行するには、コンピュータシステムは、ネットワークリソースを識別し、それにアクセスするための何らかの方法を有していなければならない。そのため、リソースには一般に、リソースを一意に識別し、あるリソースを別のリソースから区別するために利用できる、例えばネットワークアドレスなどの、一意の識別子が割り当てられる。このように、リソースを利用したいと望むコンピュータシステムは、リソースに対応するネットワークアドレスを用いて、リソースに接続することができる。しかし、コンピュータシステムがネットワークリソースのネットワークアドレスを事前に知らない場合、ネットワークリソースにアクセスすることが難しいこともあり得る。例えば、ネットワークプリンタのネットワークアドレスをコンピュータシステム(または別のネットワーク接続されたコンピュータシステム)が知らないのなら、コンピュータシステムは、ネットワークプリンタで文書を印刷することができない。
したがって、事前に知らないリソースをコンピュータシステムが識別(およびアクセス)できるようにする様々なメカニズム(例えば、ドメインネームシステム(「DNS」)、アクティブディレクトリ(「AD」)、分散ファイルシステム(「DFS」))が開発されてきた。しかし、様々なコンピュータネットワークを介してアクセス可能なリソース(例えば、装置およびサービス)は大量にあり多様性に富んでいるので、開発者はしばしば、多様な異なる識別およびアクセスメカニズムを実装したアプリケーションを開発するよう求められる。異なるメカニズムは各々、異なる符号化要件(coding requirement)を有することがあり、1つのアプリケーションで必要とされるすべての機能を開発者に提供しないことがある。
例えば、DNSは、分散管理アーキテクチャ(すなわち、一元管理を必要としない)であるが、十分には動的でなく、自己組織化を行わず、貧弱なデータおよびクエリモデルしかサポートせず、固定的なルートの組を有している。一方、ADは、十分に動的であるが、一元管理を必要とする。さらに、異なるメカニズムの態様は、互いに互換性をもたないことがある。例えば、DNSを用いて識別されたリソースは、DFSルーティングプロトコルと互換性をもたないかもしれない。したがって、開発者は、最適のメカニズムを選択し、その他のメカニズムの利点はなしで済ませるように強いられることがある。
リソースを識別するためのメカニズムは、ピアツーピアネットワークにおいて特に問題の多いものとなり得る。DNSは、ホスト名をキーとし、IPアドレスを値として、検索要求を実施するのに1組の特別なルートサーバに依存する検索サービスを提供する。さらに、DNSは、ネームサーバ階層をクライアントが辿れるようにするため、情報(NSレコード)の管理を必要とする。したがって、事前にリソースをDNSに入力しておかなければ、ネットワーク上でリソースを識別することはできない。ネットワークに対するノードの接続および切り離しが頻繁に行われる大規模ネットワークでは、情報の入力に依存するのは必ずしも実用的とは言えない。さらに、DNSはホストまたはサービスを見つける作業に特化されており、一般にその他のタイプのリソースに適用することはできない。
このような事情のため、これらの短所に対処することを意図して、リソース識別およびアクセス用のその他のメカニズムが開発されてきた。多くのメカニズムは、DNSより拡張性のある分散検索プロトコルを含んでいる。これらのメカニズムは、様々なノード構成およびルーティングアルゴリズムを使用して、要求を対応するリソースにルーティングし、また検索用の情報を格納する。
これらのメカニズムのうちの少なくとも1つは、ネットワーク内の各ノードにおいてローカルマルチレベル近傍マップ(local multi−level neighbor map)を利用して、メッセージを宛先ノードにルーティングする。このようなメカニズムは必然的に、各ノードが対応するノード木(近傍マップ内のノード)の「ルートノード」となるアーキテクチャに帰着する。メッセージは、1桁ずつIDを増やしながら(例えば、***6=>**46=>*346=>2346、ただし、*はワイルドカードを表す)、宛先IDにルーティングされる。これらのタイプのメカニズムは、ルーティングホップがO(log N)のルーティング効率をもち、ノードはサイズがO(log N)のルーティングテーブルを維持することを要求される。
これらのメカニズムのうちの別の少なくとも1つは、数字を要素とする線形リング(linear ring)から取った一意のIDをノードに割り当てる。ノードは、直近の後続ノード(ID値に基づく)を指示するポインタと、直近の後続ノードのID値+2のID値をもつノードを指示するポインタとを含むルーティングテーブルを維持する。これらのタイプのメカニズムも、ルーティングホップがO(log N)のルーティング効率をもち、ノードはサイズがO(log N)のルーティングテーブルを維持することを要求される。
また別の少なくとも1つのメカニズムは、O(log Nl/d)のルーティングホップを必要とし、ノードにサイズがO(D)のルーティングテーブルを維持するよう要求する。したがって、これらのどのメカニズムでも、ルーティング効率は、少なくとも部分的に、システム内のノードの数に依存する。
さらに、IDは(これらのメカニズムの少なくともいくつかでは)リング全体に一様に分布させることができるので、リング上のノード間のルーティングがかなり非効率なものとなる少なからぬ可能性が常に存在する。例えば、ルーティングホップは、非常に長い地理的距離を越え、より高価なリンクを越え、または安全性の低いドメインを通り抜けるなどすることもあり得る。さらに、メッセージルーティングが複数のホップを必要とする場合、上記のような事態が複数回起こる少なからぬ可能性が存在する。残念ながら、これらのメカニズムは、(物理的またはその他の観点による)ノード相互の近接性を考慮していない。例えば、リング上のノード分布によっては、メッセージをニューヨークからボストンにルーティングするのに、メッセージをニューヨークから、ロンドン、アトランタ、東京を経由して、それからボストンにルーティングすることが必要となることもあり得る。
そのため、別のより最近のメカニズムの少なくとも1つは、単一のスカラ近接性メトリック(scalar proximity metric)(例えば、IPルーティングホップまたは地理的距離)として近接性を定義することによって、近接性を考慮している。これらのメカニズムは、ルーティングテーブルのエントリを近接性に基づいて選択するという概念を用いている。各ルーティングテーブルのエントリには多くの「正当な」候補ノードが存在するので、これらのメカニズムは、候補ノードの中から近接性に基づき近いノードを選択しようと試みる。そのため、これらのメカニズムは、与えられたIPアドレスをもつノードと自身との「距離」を各ノードが決定できるようにする関数を提供することができる。メッセージは、さらに遠くのノードにルーティングする前に、近接性がより近いノード間でルーティングされて、宛先に向って進んで行く。したがって、リソースの一部を温存することができ、ルーティングはより効率的になる。
しかし残念ながら、これらの既存のメカニズムは一般に、とりわけ、ノード間の対称関係(すなわち、第1のノードが第2のノードを自らのパートナであると見なす場合、第2のノードも同様に第1のノードを自らのパートナであると見なす)を提供せず、リング上で(時計回りおよび反時計回りの)双方向にメッセージをルーティングすること、ノードのリンクリスト(linked list)を複数の近接性メトリックに基づいて区分すること、および複数の近接性メトリック近接性に基づいてメッセージをルーティングすることを可能にしない。したがって、リソース要求を対応するリソースに会合させる(rendezvous)ためにこれらのメカニズムを利用するシステム、方法、コンピュータプログラム製品があれば有利であろう。
従来技術が有する上述の問題は、リソース要求を対応するリソースに会合させるための方法、システム、およびコンピュータプログラム製品に関する本発明の原理によって克服される。いくつかの実施形態においては、連合インフラストラクチャ(federation infrastructure)に属するノードが区分される。連合インフラストラクチャ内のノードに割り当てられたノードIDを含むソート済リンクリストがアクセスされる。ソート済リンクリストを区分するための複数の異なる近接性基準を表す近接性カテゴリ(proximity category)がアクセスされる。ソート済リンクリストは、第1の近接性基準に基づいて、1つまたは複数の第1のサブリストに区分され、1つまたは複数の第1のサブリストの各々は、ソート済リンクリストに属するノードIDの少なくとも部分集合を含む。1つまたは複数の第1のサブリストの中から選択されたある第1のサブリストが、第2の近接性基準に基づいて、1つまたは複数の第2のサブリストに区分され、1つまたは複数の第2のサブリストの各々は、その第1のサブリストに含まれるノードIDの少なくとも部分集合を含む。
別の実施形態においては、例えば図3に示されるように、ノードのルーティングテーブル(routing table)に対して入力を行う。直近の先行ノードが、ルーティングテーブルに挿入される。直近の後続ノードが、ルーティングテーブルに挿入される。適切な近傍ノード識別子が、ルーティングテーブルに挿入され、近傍ノード(neighborhood node)は、第1の方向およびそれとは反対の第2の方向において、所定または概算の近傍範囲および近傍サイズに基づいて、ソート済リンクリストから識別される。適切なルーティングノード識別子が、ルーティングテーブルに挿入され、ルーティングノード(routing node)は、第1および第2の両方向において、基数(number base)および連合インフラストラクチャのID空間のフィールドサイズに基づいて、ソート済リンクリストから識別され、ルーティングノードは、第1および第2の両方向におけるソート済リンクリストの対数指標(logarithmic index)を表す。
また別の実施形態においては、近接性基準を考慮して、ノードのルーティングテーブルに対して入力を行うことができる。カレントノードが参加する階層的に区分された各ルーティングリング(routing ring)の先行ノードが、ルーティングテーブルに挿入され、階層的に区分された各ルーティングリングは、対応する近接性基準に基づいて区分され、親リングの双方向リンクリストの少なくとも部分集合を含む。カレントノードが参加する階層的に区分された各ルーティングリングの後続ノードが、ルーティングテーブルに挿入される。カレントノードが参加する階層的に区分された各ルーティングリングの適切な近傍ノードが、ルーティングテーブルに挿入される。カレントノードが参加する階層的に区分された各ルーティングリングの適切なルーティングノードが、ルーティングテーブルに挿入される。
さらに別の実施形態においては、対応する1つまたは複数のノードクラスを定義する1つまたは複数の近接性基準に潜在的に基づいて、メッセージは宛先ノードにルーティングされる。受信ノードは、宛先ノードを表す宛先番号と併せてメッセージを受信し、またオプションで1つまたは複数の近接性基準も受信する。カレントノードクラスのノードに潜在的に属する受信ノードは、対応する先行ノードよりも宛先番号から数値的により遠く、かつ対応する後続ノードよりも宛先番号から数値的により遠いことを決定する。受信ノードに対応するカレントノードクラスのノードに潜在的に属する近傍ノードの組の中には、宛先が存在しないことが決定される。
受信ノードに対応するルーティングテーブルに属する中間ノードが識別され、中間ノードは、対応するルーティングテーブル内のその他のルーティングノードよりも数値的に宛先番号により近い。メッセージは、中間ノードにルーティングされる。中間ノードは、引き続きメッセージをルーティングすることができる。メッセージを受信したノードが、その後続ノードまたは先行ノードのどちらかよりも数値的に宛先番号により近くなったときに、メッセージは最終的に宛先ノードに到着する。1つまたは複数の近接性基準に基づいてルーティングを行う実施形態においては、この数値的な近さは、選択されたノードクラスのノードについてのものとすることができる。
したがって、近接性基準に基づくメッセージのルーティングは、与えられた近接リング(proximal ring)(ノードクラス)内において、そのリング内でのルーティングによってはもはや前進できなくなるまで、宛先ノードに漸進的に近づいて行くことにより宛先ノード(ID)へのルーティングすることを含む。カレントノードIDとその後続または先行ノードIDとの間に宛先番号があるときに、もはや前進できないという決定を下すことができる。この時点で、カレントノードは、自身が参加するより大きな次の近接リングにおけるパートナノードを介するルーティングを開始する。ルートリングに向って区分化パスを上って行くことによって宛先ノードに漸進的に近づいて行くこのプロセスは、宛先ノードに到着した時点で終了する。
本発明の上記およびその他の目的および特徴は、以下の説明および添付の特許請求の範囲からより完全に明らかとなり、あるいは以下本明細書で説明する本発明を実施することにより学ぶことができるであろう。
本発明の上記およびその他の利点および特徴をさらに明確にするため、本発明のより詳細な説明を、添付の図面に例示された本発明の具体的な実施形態を参照しながら提示する。これらの図面は、本発明の典型的な実施形態を示したものに過ぎず、したがって、本発明の範囲を限定するものと見なすべきではないことは理解されよう。本発明は、添付の図面を用いて、さらに具体的かつ詳細に記述および説明される。
従来技術が有する上述の問題は、リソース要求を対応するリソースに会合させる方法、システム、およびコンピュータプログラム製品に関する本発明の原理によって克服される。いくつかの実施形態においては、連合インフラストラクチャに属するノードが区分される。連合インフラストラクチャ内のノードに割り当てられたノードIDを含むソート済リンクリストがアクセスされる。ソート済リンクリストを区分するための複数の異なる近接性基準を表す近接性カテゴリがアクセスされる。ソート済リンクリストは、第1の近接性基準に基づいて、1つまたは複数の第1のサブリストに区分され、1つまたは複数の第1のサブリストの各々は、ソート済リンクリストに属するノードIDの少なくとも部分集合を含む。1つまたは複数の第1のサブリストの中から選択されたある第1のサブリストが、第2の近接性基準に基づいて、1つまたは複数の第2のサブリストに区分され、1つまたは複数の第2のサブリストの各々は、その第1のサブリストに含まれるノードIDの少なくとも部分集合を含む。
別の実施形態においては、例えば図3に示されるように、ノードのルーティングテーブルに対して入力を行う。直近の先行ノードが、ルーティングテーブルに挿入される。直近の後続ノードが、ルーティングテーブルに挿入される。適切な近傍ノード識別子が、ルーティングテーブルに挿入され、近傍ノードは、第1の方向およびそれとは反対の第2の方向において、所定または概算の近傍範囲および近傍サイズに基づいて、ソート済リンクリストから識別される。適切なルーティングノード識別子が、ルーティングテーブルに挿入され、ルーティングノードは、第1および第2の両方向において、基数および連合インフラストラクチャのID空間のフィールドサイズに基づいて、ソート済リンクリストから識別され、ルーティングノードは、第1および第2の両方向におけるソート済リンクリストの対数指標を表す。
また別の実施形態においては、近接性基準を考慮して、ノードのルーティングテーブルに対して入力を行うことができる。カレントノードが参加する階層的に区分された各ルーティングリングの先行ノードが、ルーティングテーブルに挿入され、階層的に区分された各ルーティングリングは、対応する近接性基準に基づいて区分され、親リングの双方向リンクリストの少なくとも部分集合を含む。カレントノードが参加する階層的に区分された各ルーティングリングの後続ノードが、ルーティングテーブルに挿入される。カレントノードが参加する階層的に区分された各ルーティングリングの適切な近傍ノードが、ルーティングテーブルに挿入される。カレントノードが参加する階層的に区分された各ルーティングリングの適切なルーティングノードが、ルーティングテーブルに挿入される。
さらに別の実施形態においては、対応する1つまたは複数のノードクラスを定義する1つまたは複数の近接性基準に潜在的に基づいて、メッセージは宛先ノードにルーティングされる。受信ノードは、宛先ノードを表す宛先番号と併せてメッセージを受信し、またオプションで1つまたは複数の近接性基準も受信する。カレントノードクラスのノードに潜在的に属する受信ノードは、対応する先行ノードよりも宛先番号から数値的により遠く、かつ対応する後続ノードよりも宛先番号から数値的により遠いことを決定する。受信ノードに対応するカレントノードクラスのノードに潜在的に属する近傍ノードの組の中には、宛先が存在しないことが決定される。
受信ノードに対応するルーティングテーブルに属する中間ノードが識別され、中間ノードは、対応するルーティングテーブル内のその他のルーティングノードよりも数値的に宛先番号により近い。メッセージは、中間ノードに送信される。中間ノードは、引き続きメッセージをルーティングすることができる。メッセージを受信したノードが、その後続ノードまたは先行ノードのどちらかよりも数値的に宛先番号により近くなったときに、メッセージは最終的に宛先ノードに到着する。1つまたは複数の近接性基準に基づいてルーティングを行う実施形態においては、この数値的な近さは、選択されたノードクラスのノードについてのものとすることができる。
したがって、近接性基準に基づくメッセージのルーティングは、与えられた近接リング(ノードクラス)内において、そのリング内でのルーティングによってはもはや前進できなくなるまで、宛先ノードに漸進的に近づいて行くことにより宛先ノード(ID)へのルーティングすることを含む。カレントノードIDとその後続または先行ノードIDとの間に宛先番号があるときに、もはや前進できないという決定を下すことができる。この時点で、カレントノードは、自身が参加するより大きな次の近接リングにおけるパートナノードを介するルーティングを開始する。ルートリングに向って区分化パスを上って行くことによって宛先ノードに漸進的に近づいて行くこのプロセスは、宛先ノードに到着した時点で終了する。
本発明の範囲内にある実施形態は、コンピュータ実行可能命令またはデータ構造をそこに格納して搬送または保持するためのコンピュータ読取り可能媒体も含む。そのようなコンピュータ読取り可能媒体は、汎用または専用コンピュータシステムによってアクセス可能な任意の利用可能媒体とすることができる。例えば、そのようなコンピュータ読取り可能媒体は、RAM、ROM、EPROM、CD−ROMもしくはその他の光ディスク記憶、磁気ディスク記憶もしくはその他の磁気記憶装置、またはコンピュータ実行可能命令、コンピュータ可読命令、もしくはデータ構造の形態をとる所望のプログラムコード手段を搬送もしくは保存するのに使用でき、汎用もしくは専用コンピュータシステムによってアクセスできるその他の任意の媒体を含むことができるが、これらに限定されるものではない。
この説明および添付の特許請求の範囲において、「ネットワーク」は、コンピュータシステムならびに/またはモジュール(例えば、ハードウェアおよび/もしくはソフトウェアモジュール)の間での電子データの移送を可能にする(おそらくは速度が異なる)1つまたは複数のデータリンクとして定義される。情報がネットワークまたは別の通信コネクション(有線、無線、または有線もしくは無線の組合せ)を介してコンピュータシステムに転送または提供される場合、そのコネクションは、コンピュータ読取り可能媒体として適切に見なされる。したがって、そのようなコネクションはどれも、当然ながら、コンピュータ読取り可能媒体と呼ばれる。上記のものの組合せも、コンピュータ読取り可能媒体の範囲内に含まれるべきである。コンピュータ実行可能命令は、例えば、汎用コンピュータシステムまたは専用コンピュータシステムに一定の機能または機能群を実行させる命令およびデータを含む。コンピュータ実行可能命令は、例えば、バイナリ、アセンブリ言語などの中間形式命令、またはソースコードにすらすることができる。いくつかの実施形態においては、例えば、専用集積回路またはゲートアレイなどのハードウェアモジュールは、本発明の原理を実施するために最適化される。
この説明および添付の特許請求の範囲において、「ノード」は、電子データに対する操作(operation)を実行するために協働する1つもしくは複数のソフトウェアモジュール、1つもしくは複数のハードウェアモジュール、またはそれらの組合せとして定義される。例えば、ノードの定義は、パーソナルコンピュータのオペレーティングシステムなど、ソフトウェアコンポーネントに加えて、パーソナルコンピュータのハードウェアコンポーネントも含む。モジュールの物理レイアウトは重要ではない。ノードは、ネットワークを介して結合された1つまたは複数のコンピュータを含むことができる。同様に、ノードは、電子データに対する操作を実行するために(メモリおよびプロセッサなどの)内部モジュールが協働する、(移動電話または携帯情報端末「PDA」などの)単一の物理装置を含むことができる。さらに、ノードは、例えば、専用の集積回路を含むルータなど、専用のハードウェアを含むことができる。
当業者であれば、パーソナルコンピュータ、ラップトップコンピュータ、ハンドヘルド装置、マルチプロセッサシステム、マイクロプロセッサベースまたはプログラム可能な消費者家電、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、移動電話、PDA、ポケットベル、ルータ、ゲートウェイ、ブローカ、プロキシ、ファイアウォール、リダイレクタ、およびネットワークアドレス変換器などを含む、多くのタイプのノード構成を有するネットワークコンピューティング環境において、本発明を実施できることが理解されよう。本発明は、ネットワークを介して(有線データリンク、無線データリンク、または有線および無線データリンクの組合せによって)結合されたローカルおよびリモートノードが共にタスクを実行する、分散システム環境においても実施することができる。分散システム環境においては、プログラムモジュールは、ローカルおよびリモートメモリ記憶装置の両方に配置することができる。
連合アーキテクチャ
図1は、連合インフラストラクチャ100を示したものである。連合インフラストラクチャ100は、異なるタイプの連合パートナシップ(federating partnership)を形成できるノード101、102、103を含む。例えば、ノード101、102、103は、ルートノードを用いずに、ピア(peer)として互いに連合することができる。各ノード101、102、103は、それぞれ対応するID171、182、193を有する。
一般に、ノード101、102、103は、パートナシップを形成し、また情報(例えば、他のノードとの対話に関係する状態情報)を交換するために、連合プロトコル(federation protocol)を利用することができる。パートナシップの形成、および情報の交換は、リソースへのより効率的かつ信頼性の高いアクセスを容易にする。ノード101、102、103の間には、その他の中間ノード(図示せず)が存在することができる(例えば、171と193の間のIDをもつノード)。したがって、例えば、ノード101とノード103の間でルーティングされるメッセージは、1つまたは複数のその他の中間ノードを通過させることができる。
連合インフラストラクチャ100内のノード(その他の中間ノードを含む)は、対応するランデブープロトコルスタック(rendezvous protocol stack)を含むことができる。例えば、ノード101、102、103は、それぞれ対応するランデブープロトコルスタック141、142、143を含む。各プロトコルスタック141、142、143は、アプリケーションレイヤ(例えば、アプリケーションレイヤ121、122、123)、およびその他の下位レイヤ(例えば、対応するその他の下位レイヤ131、132、133)を含む。ランデブープロトコルスタック内の各レイヤは、リソース要求を対応するリソースに会合させることに関係する異なる機能を担当する。
例えば、その他の下位レイヤは、チャネルレイヤ、ルーティングレイヤ、および機能レイヤを含むことができる。一般に、チャネルレイヤは、1つのエンドポイントから別のエンドポイントに(例えば、ノード101からノード103に)、(例えば、WS−ReliableMessagingおよびシンプルオブジェクトアクセスプロトコル(「SOAP」)を用いて)メッセージを高い信頼性でトランスポートする責務を負う。チャネルレイヤは、着信および発信高信頼メッセージングヘッダを処理し、高信頼メッセージングセッションに関係する状態を維持する責務も負う。
一般に、ルーティングレイヤは、宛先に向うネクストホップを計算する責務を負う。ルーティングレイヤは、着信および発信アドレッシングおよびルーティングメッセージヘッダを処理し、ルーティング状態を維持する責務も負う。一般に、機能レイヤは、参加および離脱要求、ping、更新、ならびにその他のメッセージなど、ランデブープロトコルメッセージを発行し、処理する責務のほか、これらのメッセージに対する応答を生成する責務を負う。機能レイヤは、ルーティングレイヤからの要求メッセージを処理し、対応する応答メッセージがある場合は、ルーティングレイヤを利用して発信ノードに返信する。機能レイヤは、要求メッセージを開始し、ルーティングレイヤを利用して要求メッセージを配送させる。
一般に、アプリケーションレイヤは、機能レイヤから配送された非ランデブープロトコル特有データ(non−rendezvous protocol specific data)(すなわち、アプリケーションメッセージ)を処理する。機能レイヤは、アプリケーションレイヤからのアプリケーションデータにアクセスすることができ、アプリケーションデータをランデブープロトコルメッセージ(例えば、pingおよび更新など)から取得し、またランデブープロトコルメッセージに格納することができる。すなわち、機能レイヤは、アプリケーションデータがランデブープロトコルメッセージにピギーバックされるようにすることができ、またランデブープロトコルノードを受信したときに、アプリケーションデータがアプリケーションレイヤに渡されるようにすることができる。いくつかの実施形態においては、アプリケーションデータは、リソースおよびリソース関連物(resource interest)を識別するのに使用される。したがって、アプリケーションレイヤは、リソースおよびリソース関連物を識別する目的で、その他の下位レイヤから受信されたデータおよびその他の下位レイヤに送信されるデータを処理するアプリケーション特有のロジックおよび状態(logic and state)を含むことができる。
連合メカニズム
ノードは、様々な異なるメカニズムを用いて連合することができる。第1の連合メカニズムは、情報を他のすべてのピアノードに転送するピアノードを含む。ノードは、連合インフラストラクチャに参加しようとするとき、例えば、WS−Discoveryなどのブロードキャスト/マルチキャスト発見プロトコル(broadcast/multicast discovery protocol)を利用して、その存在を公表し、ブロードキャスト/マルチキャスト探索(broadcast/multicast find)を発行して、その他のノードを検出する。次に、ノードは、ネットワーク上にすでに存在しているその他のノードと単純な転送パートナシップ(forwarding partnership)を確立し、新規参加ノードとの新しいパートナシップを受け入れる。その後、ノードは、すべてのアプリケーション特有メッセージを、そのパートナノードのすべてに単純に転送する。
第2の連合メカニズムは、アプリケーション特有メッセージをその宛先に最も効率的に送信するピアノードを含む。新規ノードは、連合インフラストラクチャに参加しようとするとき、例えば、WS−Discoveryなどのブロードキャスト/マルチキャスト発見プロトコルを利用して、その存在を公表し、ブロードキャスト/マルチキャスト探索を発行して、連合インフラストラクチャの構成要素であるその他のノードを検出する。別のノードが検出されると、新規ノードは、その別のノードとパートナシップを確立する。確立されたパートナシップから、新規ノードは、連合インフラストラクチャにすでに参加しているその他のノードの存在を学習する。次に、新規ノードは、これらの新たに学習されたノードとパートナシップを確立し、また新たに着信したパートナシップ要求を受け入れる。
ノード出現/離脱(node arrival/departure)および特定のアプリケーション特有メッセージに関する登録は共に、連合インフラストラクチャ内にフラッディングされ、その結果、あらゆるノードが、その他のパートナノードおよびアプリケーション特有メッセージに関する登録についての全体的知識を有する。そのような全体的知識を有することで、どのノードも、アプリケーション特有メッセージを、そのアプリケーション特有メッセージとの関係を表明したノードに直接送信することができる。
第3の連合メカニズムは、すべてのアプリケーション特有メッセージをその宛先に間接的に転送するピアノードを含む。この第3のメカニズムにおいては、ノードには、例えば、128ビットまたは160ビットの識別子(ID)など、IDが割り当てられる。与えられたアプリケーション特有メッセージに関する登録を維持する責務を負うノードは、アプリケーション特有メッセージの宛先識別情報(例えば、URI)をこの128ビットまたは160ビットのID空間にマッピング(例えば、ハッシュ)することにより取得されたIDに最も近いIDをもつノードとなるように決定することができる。
この第3のメカニズムにおいては、ノード出現および離脱は、構成全体にフラッディングされる。一方、特定のアプリケーション特有メッセージに関する登録は、そのような登録情報を維持する責務を負うと決定されたノードに転送される。拡張性、負荷バランシング、耐障害性のため、特定のアプリケーション特有メッセージに関する登録を受信するノードは、その近傍集合(neighborhood set)内において、その登録情報を高い信頼性でフラッディングすることができる。ある特定ノードの近傍集合は、特定ノードのIDの両側に事前に定められた範囲内に収まるIDを有するノードの集合となるように決定することができる。
第2のメカニズムと同様に、新規参加ノードは、例えば、WS−Discoveryなどのブロードキャスト/マルチキャスト発見プロトコルを利用して、その存在を公表し、ローカルブロードキャスト/マルチキャスト探索を発行して、すでに連合インフラストラクチャの構成要素であるノードを検出する。新規ノードは、発見されたノードとパートナシップを確立し、そのパートナシップを用いて、連合インフラストラクチャに参加しているその他の新規ノードの存在について学習する。次に、新規ノードは、新たに発見されたノードとさらにパートナシップを確立し、また新たに着信したパートナシップ要求を受け入れる。新規ノードは、そのパートナから、自らが責務を負う特定のアプリケーションレイヤ特有リソースに関する着信登録を受け入れ、その近傍集合全体にそれらをフラッディングすることができる。したがって、メッセージは一般に、(例えば、新規参加ノードがパートナシップを確立した、またはパートナノードが知っている)中間ルーティングノードを介して、それらの最終宛先に転送されることができる。
着信アプリケーション特有メッセージを受信したことに応答して、新規ノードは、メッセージで指定された宛先についての登録情報を維持する責務を負うことのできるパートナノードにメッセージを転送する。したがって、この第3のメカニズムを使用する場合、連合インフラストラクチャのあらゆるノードは、他のすべてノードについての全体的知識を有するが、登録情報はノード間で効率的に区分される。アプリケーション特有メッセージは、それらのアプリケーション特有メッセージに関する登録情報を維持する責務を負うことのできるパートナノードだけを介して、それらの最終宛先に送信される。したがって、間接送信(indirection)は、処理されるメッセージに関する登録情報についての全体的知識を有するパートナノードにだけ転送することによって達成される。これは、すべてのパートナノードに転送することによって間接送信が達成される第1のメカニズムとは対照的である。
第4の連合メカニズムは、その他のピアノードにメッセージをルーティングするピアノードを含む。この第4のメカニズムは、ノード出現/離脱および特定のアプリケーション特有メッセージに関する登録が共にすべて、フラッディングされる代わりにルーティングされる点で、少なくとも第3のメカニズムとは異なっている。ルーティングプロトコルは、アプリケーション特有メッセージと、それらのアプリケーション特有メッセージとの関係を表明した登録メッセージとの会合(rendezvous)を保証するように設計される。
図2は、要求をパートナに間接的にルーティングすることを容易にする、コンピュータアーキテクチャ200の一例を示したものである。コンピュータアーキテクチャ200は、連合インフラストラクチャに参加している、潜在的に複数のローカル発見範囲(local discovery scope)に分散する異なるタイプのコンピュータシステムおよび装置を示している。
ワークステーション233は、登録されたPnPプロバイダインスタンス(PnP provider instance)を含むことができる。このPnPプロバイダインスタンスの存在をパートナに通知するため、ワークステーション233は、連合インフラストラクチャを介して登録要求201をルーティングする。登録要求201は、最初にラップトップ231に転送され、次に、ラップトップ231が、登録要求201をメッセージブローカ237に転送し、さらに、メッセージブローカ237が、登録要求201をメッセージゲートウェイ241に転送する。メッセージゲートウェイ241は、そのデータベースに登録情報登録要求201を保存し、ワークステーション233に成功メッセージ204を返信する。
その後、今度は実行サービスのプロバイダインスタンスである、別の登録されたプロバイダインスタンスが、ワークステーション233内で活動化される。今度は、ノードは、メッセージゲートウェイ241が登録を担当していることを知っており、登録要求205をメッセージゲートウェイ241に直接転送する。メッセージゲートウェイ241は、そのデータベースに登録情報登録要求205を保存し、ワークステーション233に成功メッセージ206を返信する。
その後、プリンタ236(例えば、UPnPプリンタ)に電源が入れられ、プリンタ236がアナウンスメント207を送信する。サーバ234は、アナウンスメント207を検出し、登録要求208をメッセージブローカ237にルーティングする。メッセージブローカ237は、登録要求208をメッセージゲートウェイ241に転送する。メッセージゲートウェイ241は、そのデータベースに登録情報登録要求208を保存し、サーバ234に成功メッセージ210を返信する。
その後、パーソナルコンピュータ242が、すべての装置を発見するために、検索要求211を発行する。パーソナルコンピュータ242は、検索要求211をどこに転送すべきか知らないので、ワークステーション243を介して、検索要求211をルーティングする。登録および検索要求は同一の宛先にルーティングされるので、ルーティングプロトコルは、2つの要求の会合を本質的に保証し、その結果、ワークステーション243は、探索要求211をメッセージゲートウェイ241に転送する。メッセージゲートウェイ241は、維持している登録情報を検索し、探索要求211をワークステーション233およびサーバ234の両方に転送する。ワークステーション233およびサーバ234は、それぞれ応答メッセージ214および216をパーソナルコンピュータ242に送信する。
この第4のメカニズムは、要求において指定された登録についての全体的知識を有するノード(メッセージゲートウェイ241)に、要求を(フラッディングする代わりに)ルーティングすることによって機能する。この第4のメカニズムは、以下により詳しく説明するように、Nを連合インフラストラクチャに参加しているノードの数として、O(log N)のホップでルーティングを達成できることを本質的に保証する。この第4のメカニズムは、ノード参加および登録情報の両者を本質的に区分するので、非常に大規模なネットワークに対しても、インターネットに対してすらも拡張性がある。
いくつかの連合メカニズムについて説明してきたが、その他の連合メカニズムも可能であることは、この説明を再検討してみれば、当業者には明らかであろう。
連合内におけるノード間の関係
したがって、連合は、情報が体系的かつ効率的に分散および配置された、動的で拡張性のあるネットワークを形成するために、互いに連携するノードの集合から構成される。ノードは、2項関係(binary relation)を用いてソートされたリストとして連合に参加するように組織され、この2項関係は、反射的(reflexive)、非対称的、推移的、全体的であり、ノード識別情報の領域上で定義される。ソート済リストの両端は結合され、それによって、リングを形成する。したがって、リスト内の各ノードは、(モジュロ算術(modulo arithmetic)を用いた結果)自らをソート済リストの中央にあると見なすことができる。さらに、リストは、どのノードもリストを両方向に辿れるように2重に連結される。
各連合ノードには、0からある一定の上限の間にあるIDの固定集合から、(例えば、重複検出を備えた乱数発生器によって)IDを割り当てることができる。したがって、一定の上限に等しいIDに1を加算すると、IDは0になる(すなわち、リンクリストの末尾からリンクリストの先頭に移動する)。さらに、ノード識別情報の値領域からノード自身への1:1のマッピング関数が定義される。
図3は、リンクリスト304および対応するリング306の一例を示したものである。そのようなリングを所与として、以下の関数を定義することができる。
RouteNumerically(V,Msg):ノード識別情報の値領域に属する値Vおよびメッセージ「Msg」を与えたときに、識別情報がマッピング関数を用いてVにマッピングされ得るノードXにメッセージを配送する。
Neighborhood(X,S):NeighborhoodはノードXの両側に存在するノードの集合であり、その要素数(cardinality)はSに等しい。
連合内のあらゆるノードがリングの全体的知識を有する場合、RouteNumerically(V,Msg)は、マッピング関数をVに適用することによってその識別情報が取得されるノードXに、Msgを直接送信することによって実施される。あるいは、ノードがその他のノードについての限定的な(例えば、すぐ隣のノードだけの)知識しか有さない場合、RouteNumerically(V,Msg)は、宛先ノードXに辿り着くまで、リングに沿って連続するノードにメッセージを転送することによって実施される。
あるいは(そして有利には)、ノードは、(全体的知識をもつ必要なしに、またはすぐ隣のノード間でルーティングを実施する必要なしに)分散2分探索(distributed binary search)を実行するのに十分なリングについての知識を記憶することができる。リング知識の量は、リング知識を維持することで各ノードが受ける影響は十分に小さいのに、ルーティングホップ数の減少によるルーティング性能の向上が可能となるように設定することができる。
先に説明したように、IDは、自然数の十分に大きな有限集合、つまり、その範囲が0以上ある一定数以下の有限な数の組にわたる集合上で定義された「<」(より小さい)関係を用いて割り当てることができる。したがって、連合に参加するあらゆるノードには、0以上適切に選択された上限以下の自然数が割り当てられる。その範囲は埋め尽くされている必要はなく、ノードに割り当てられた数の間にギャップがあってもよい。ノードに割り当てられた数は、リング内でのノード識別情報として使用される。マッピング関数は、2つのノード識別情報の間にある数を、その数に数値的に最も近い識別情報をもつノードにマッピングすることによって、数空間中のギャップの原因となる。
この手法は様々な利点を有する。各ノードに一様分布した数を割り当てることによって、リングのすべてのセグメントが一様に埋められる可能性が高くなる。さらに、後続、先行、および近傍の計算を、モジュロ算術を用いて効率的に実行することができる。
いくつかの実施形態においては、連合ノードには、(例えば、乱数発生が用いられる場合)広大であるため2つのノードが同じIDに割り当てられる可能性がきわめて低いID空間内からIDが割り当てられる。例えば、ノードは、bが例えば8または16に等しく、nが例えば128ビットまたは160ビット相当の桁数に等しいとして、0からb−1の範囲内のIDに割り当てることができる。したがって、ノードには、例えば、0から1640−1(すなわち、約1.461502E48)の範囲に属するIDを割り当てることができる。0から1640−1の範囲は、例えば、インターネット上のあらゆるノードに一意のIDを割り当てるのに十分な数のIDを提供する。
したがって、連合内の各ノードは、
0からb−1の範囲内に一様に分布する数値であるIDと、
ルーティングテーブルであって、
後続ノード(s)と、
先行ノード(p)と、
.s.id>(id+u/2),j≧v/2−1かつp.p.id<(id−u/2),k≧v/2−1であるような、近傍ノード(p,..,p,p,s,s,..,s)と、
±i=RouteNumerically(id±b,Msg)であるような、ルーティングノード(r−(n−1),..,r−1,r,..,rn−1)とから構成されるルーティングテーブル(すべての計算はbを法として実行される)とを有することができる。ここで、bは基数、nは桁数で表したフィールドサイズ、uは近傍範囲、vは近傍サイズであり、計算はbを法として実行される。良好なルーティング効率および耐障害性のため、uおよびvの値は、Nを連合に物理的に参加しているノードの総数として、u=vかつv≧max(log(N),4)とすることができる。Nは、例えば、IDが一様に分布している場合、長さがb以上であるリングセグメント上に存在するノードの数から推定することができる。bおよびnの典型的な値は、b=8または16、n=128ビットまたは160ビット相当の桁数である。
したがって、ルーティングノードは、リング全体にわたる対数指標を形成することができる。リング上でのノードの位置に応じて、例えば、id±b、i=(1,2,...,(n−1))を要素とする集合内の各数の位置に既存ノードが存在する場合、対数指標は正確であることができる。しかし、集合内の各数の位置に既存ノードが存在しないこともあり得る。そのような場合、id±bに最も近いノードを、ルーティングノードとして選択することができる。その結果の対数指標は正確ではなく、集合内のいくつかの数では一意のルーティングノードがないことすらあり得る。
再び図3を参照すると、図3は、ソート済リスト304および対応するリング306の形態をとる、連合インフラストラクチャ内のノード間の2項関係の一例を示している。ソート済リスト304のID空間は、0から2−1(すなわち、255)の範囲にある。すなわち、b=2かつn=8である。したがって、図3に示されたノードには、0から255の範囲内のIDが割り当てられる。ソート済リスト304は、2項関係を利用し、この2項関係は、反射的、非対称的、推移的、全体的であり、ノード識別情報の領域上で定義される。ソート済リスト304の両端は結合され、それによって、リング306を形成する。これによって、図3の各ノードは、自らをソート済リスト304の中央にあると見なすことができる。ソート済リスト304は、どのノードもソート済リスト304を両方向に辿れるように2重に連結される。ソート済リスト304(またはリング306)を辿るための計算は、2を法として実行される。したがって、255(すなわち、ソート済リスト304の末尾)+1=0(すなわち、ソート済リスト304の先頭)である。
ルーティングテーブルは、ID64の後続IDがID72(ID64から時計回りにすぐ次のID)であることを示している。後続IDは、例えば、(例えばIDが71の)新規ノードが参加したり、または(例えばID76の)既存ノードが連合インフラストラクチャから離脱したりした場合に変化し得る。同様に、ルーティングテーブルは、ID64の先行IDがID50(ID64から反時計回りにすぐ次のID)であることを示している。先行IDは、例えば、(例えばIDが59の)新規ノードが参加したり、または(例えばID50の)既存ノードが連合インフラストラクチャから離脱したりした場合に変化し得る。
ルーティングテーブルはさらに、ID64の近傍ノードの集合が、ID83、76、50、および46を含むことを示している。近傍ノードの集合は、ID64の指定された範囲(すなわち、近傍範囲u)内にある指定された数(すなわち、近傍サイズv)のノードとすることができる。近傍ノードの集合を識別するのに、例えば、V=4かつU=10など、可能性としては様々な異なる近傍サイズおよび近傍範囲を使用することができる。近傍ノードの集合は、例えば、ノードが連合インフラストラクチャに参加したり、もしくは離脱したりした場合、または指定されたノード数もしくは指定された範囲が変更された場合に変化し得る。
ルーティングテーブルはさらに、ID64が、ID200、2、30、46、50、64、64、64、64、76、83、98、135、および200をもつノードにルーティングできることを示している。このリストは、id±2、i=(1,2,3,4,5,6,7)を要素とする集合の各数に最も近いノードを識別することによって生成される。すなわち、b=2、n=8である。例えば、ID76をもつノードは、64+2、すなわち72に最も近いノードを計算することから識別することができる。
ノードは、メッセージ(例えば、リソースへのアクセスを求める要求)を、先行ノード、後続ノード、近傍ノード集合内の任意のノード、または任意のルーティングノードに直接ルーティングすることができる。いくつかの実施形態においては、ノードは、メッセージをルーティングするために、数値的ルーティング関数を実施する。したがって、IDが数値的にVに最も近い連合インフラストラクチャ内のノードYにMsgを配送し、ノードYのIDをノードXに返すために、ノードXにおいてRouteNumerically(V,Msg)を実施することができる。例えば、ID64をもつノードは、ID250をもつノードにメッセージがルーティングされるように、RouteNumerically(243,Msg)を実施することができる。しかし、ID250はID64のルーティングノードではないので、ID64は、ID2(243に最も近いルーティングノード)にメッセージをルーティングすることができる。今度は、ID2をもつノードが、ID250をもつノードにメッセージが(直接またはさらに中間ノードを介して)ルーティングされるように、RouteNumerically(243,Msg)を実施することができる。したがって、RouteNumerically関数は繰り返して呼び出されて、呼び出しのたびに、メッセージを宛先により近くルーティングすることもあり得る。
有利には、本発明の他の実施形態は、1つまたは複数の近接性カテゴリ(例えば、地理的境界、ルーティング特性(例えば、IPルーティングホップ)、管理ドメイン、組織的境界など)の複数の近接性基準に基づいて、リングをリングからなるリングまたはリングからなる木に区分することを容易にする。2回以上同じタイプの近接性基準を用いてリングを区分できることを理解されたい。例えば、大陸近接性基準と国近接性基準(共に地理的境界の近接性カテゴリ)に基づいて、リングを区分することができる。
(乱数発生の結果)ID空間全体にわたってIDを一様に分布させることができるので、近接性クラスがほぼ同じ要素数をもつならば、循環ID空間の任意の与えられたセグメントが、異なる近接性クラスに属するノードを含む確率は高い。有意な統計的挙動を得るのに十分な数のノードが存在する場合、この確率はさらに高くなる。
したがって、任意の与えられたノードの近傍ノードは一般に、近接性の観点からは良く分散されている。公開されたアプリケーション状態は、近傍ノード間で複製されることができるので、公開された情報も同様に、近接性の観点から良く分散されることができる。
図4は、近接ルーティング(proximal routing)を容易にするリングからなるリング400を示している。
リング401は、マスタまたはルートリングと見なすことができ、各リング402、403、および404内のすべてのノードを含んでいる。各リング402、403、404は、特定の近接性基準に基づいて区分された、リング401に属するノードの部分集合を含んでいる。例えば、リング401は、地理的ロケーションに基づいて区分することができ、その場合、リング402は北アメリカのノードを含み、リング403はヨーロッパのノードを含み、リング404はアジアのノードを含む。
65536(216)個のIDを含む数値空間では、ID5345をもつ北アメリカのノードからID23345をもつアジアのノードへのメッセージのルーティングは、アジアのノードの近隣ノード(neighbor node)が識別されるまで、メッセージをリング402内でルーティングすることを含むことができる。その後、近隣ノードは、アジアのノードにメッセージをルーティングすることができる。したがって、北アメリカのノードとアジアのノードの間では、ホップは(複数ホップではなく)1回行われるだけである。そのため、ルーティングは、リソース効率の良い方式によって実行される。
図5は、近接ルーティングを容易にするリングからなる近接性誘導区分木(proximity induced partition tree)500を示したものである。図示したように、リングからなる区分木500は、複数のリングを含んでいる。各リングは、ソート済リンクリストの区分を表す。各リングは、ソート済リンクリスト内のIDを有する複数のノードを含む。しかし、潜在的なノードの多さに配慮し(例えば、区分木500のID空間は、b=16かつn=40とすることができる)、明瞭とするために、ノードはリング上に明示的に示されてはいない。
区分木500内において、ルートリング501は、基準571(第1の管理ドメイン境界基準)に基づいて、サブリング511、512、513、514を始めとする複数のサブリングに区分される。例えば、DNSネームの各成分は、近接性基準であると見なすことができ、成分間には、右から左に読んだ際のDNSネーム内での出現順序によって誘導された部分序列が存在する。したがって、サブリング511は、基準581(第2の管理ドメイン境界基準)に基づいて、サブリング521、522、523を始めとする複数のサブリングにさらに区分することができる。
サブリング522は、基準572(地理的境界基準)に基づいて、サブリング531、532、533を始めとする複数のサブリングにさらに区分することができる。ロケーションベースの近接性基準は、大陸、国、郵便番号などの系列に沿って部分的に序列化することができる。郵便番号は、それ自体が階層的に構成されており、近接性基準の部分的序列化サブリストをさらに導入していると見ることができる。
サブリング531は、基準573(第1の組織的境界基準)に基づいて、サブリング541、542、543、544を始めとする複数のサブリングにさらに区分することができる。近接性基準の部分的序列化リストは、与えられた企業がどのように組織的に構造化されているか、すなわち、部、課、製造グループなどの系列に沿って誘導されることができる。したがって、サブリング543は、基準583(第2の組織的境界基準)に基づいて、サブリング551、552を始めとする複数のサブリングにさらに区分することができる。
区分木500内において、各ノードは、単一のIDを有し、ルートから始まりリーフに到る対応する区分パスに沿ってリングに参加する。例えば、サブリング552に参加する各ノードは、サブリング543、531、522、511、およびルート501にも参加する。宛先ノード(ID)へのルーティングは、以下のように、RouteProximally関数を実施することによって達成することができる。
RouteProximally(V,Msg,P):ノード識別情報の領域に属する値Vおよびメッセージ「Msg」を与えたときに、近接性基準Pによって同等と見なされるノードの中の、識別情報がマッピング関数を用いてVにマッピングされ得るノードYに、メッセージを配送する。
したがって、ルーティングは、与えられたリング内において、そのリング内でのルーティングによってはもはや前進できなくなるまで、宛先ノードに漸進的に近づいて行くことによって達成することができるが、前進できなくなったことは、カレントノードとその後続または先行ノードとの間に宛先ノードがあるという条件から決定される。この時点で、カレントノードは、自身が参加するより大きな次のリングにおけるパートナノードを介するルーティングを開始する。ルートリングに向って区分化パスを上って行くことによって宛先ノードに漸進的に近づいて行くこのプロセスは、RouteProximally呼び出しで最初に指定された要求された近接性コンテキスト内において、宛先ノードに最も近いノードに到着した時点で終了する。
ルーティングホップは、宛先ノードが要求を発信したノードの近接近傍(proximal neighborhood)の外部に存在するために、その近傍内ではもはや前進できなくなるまで、その近傍内で行われることができる。この時点で、さらなる前進が行えるよう近接近傍のサイズを拡大するために、近接性基準が緩和される。このプロセスは、近接近傍が十分に拡大されて、宛先ノード(ID)を含むようになるまで繰り返される。近接近傍基準の連続する各緩和の後に行われるルーティングホップは、近接空間内では、潜在的により大きなジャンプとなることができるが、数値空間内では、対応するジャンプをそれまでのホップと比べてより小さなものとする。したがって、宛先に到着するまでに、絶対的に必要な数のそのような(リング間の)ホップだけが行われる。
公開されたアプリケーションデータは、宛先ノードの近傍ノード間で複製されるときは、区分木の下位方向に複製されるので、検索メッセージに関しては、いくつかのホップが回避される場合があり得る。
近接ルーティングを達成するため、各連合ノードは、(単一リングに対する後続ノードおよび先行ノードと同様に)自らがメンバとして参加するすべてのリングにおいて、後続ノードおよび先行ノード−近接先行ノード、近接後続ノード、および近接近傍への参照を維持する。ルーティングを効率的にするため、ノードは、(単一のリングに対するルーティングノードと同様に)リングの両半分における指数関数的に増加する距離に最も近いその他のノードをルーティングパートナとして、それらのノードへの参照も維持することができる。いくつかの実施形態においては、1対の連続する後続または先行ノードの間にあるルーティングパートナノードは、カレントノードと後続または先行ノード対それぞれの間でそれに数値的に最も近いノードとによって共用される同じ最低位のリングに参加する。したがって、宛先ノードに向うルーティングホップは、さらに前進するために絶対に必要なときだけ、緩和された近接性基準を用いて遷移する(すなわち、より高位のリングに遷移する)。そのため、対応する連合ノードにメッセージを効率的に会合させることができる。
いくつかの実施形態においては、ノードは、同等の基準関係に基づいてメッセージをルーティングするために、近接ルーティング関数を実施する。したがって、番号Vとメッセージ「Msg」が与えられたとき、ノードは、近接性基準Pによって同等と見なされるノードの中の識別情報がVにマッピングされ得るノードYにメッセージを配送するために、RouteProximally(V,Msg,P)を実施することができる。区分木において、近接性基準Pによって近接性が同等と見なされるすべてのノードに共通の祖先(ancestor)である最低位のリングを、近接性基準Pは識別する。近接性基準Pは、ルートリングから近接性基準Pによって識別されたリングまでのパス沿いに見出される近接性基準を、パス分離文字「/」で分離しながら連結することによって得られる文字列として表現することができる。例えば、サブリング542を識別する近接性基準は、「Proximity:/.COM/Corp2/LocationA/Div2」として表現することができる。区分木500の各リングには、例えば、SHAベースのアルゴリズムを用いて表現文字列をハッシュすることによって、一意の番号を割り当てることができる。番号0がルートリング用に確保されている場合、RouteNumerically(V,Msg)≡RouteProximally(V,Msg,0)ということになり得る。
例えば、サブリング544内のノードは、(例えば、サブリング513内のノードに)より近いサブリング531内のノードを識別するために、RouteProximallyを実施することができる。今度は、サブリング531は、サブリング522内のより近いノードを識別するために、RouteProximallyを実施することができる。同様に、サブリング522は、サブリング511内のより近いノードを識別するために、RouteProximallyを実施することができる。同じく、サブリング511は、サブリング501内のより近いノードを識別するために、RouteProximallyを実施することができる。したがって、RouteProximally関数は繰り返して呼び出されて、呼び出しのたびに、メッセージを宛先により近くルーティングすることもあり得る。
したがって、近接性基準が考慮される場合、パス上を最終宛先に向うルーティングホップは、宛先ノードに到着するか、または選択された近接性基準の下ではもはや前進できなくなるまでは、要求を発信したノードの近接性内にとどまることができるが、数値空間内では発信ノードと宛先ノードの間でかなりの前進が行われており、前進できなくなった時点で、宛先に向ってさらなる前進を行うのに十分なだけ近接性基準が緩和される。例えば、近接性基準は、リング531からリング522などにメッセージをルーティングするのに十分なだけ緩和することができる。
近接性に対する上記の手法を利用することで、公開情報を与えられたリング外に出さないようにすることが可能になる。例えば、組織は、組織特有の情報が、(1)組織ドメインの外部のノードへの近傍複製(neighborhood replication)の形態で暗黙的にも、(2)そのような情報に対する検索要求にサービス提供する形態で明示的にも、信用ドメインの外部のエンティティから利用できないよう保証したいと望むことがある。第1の態様は、指定リング内において目標IDの近くにあるノード間でだけ公開情報を複製することによって満足される。ノードによって発信されるすべてのメッセージは、ノードが属するリングをルートリングに向って連続的に上って行くことによってルーティングされるので、組織内で発信されたすべての検索要求が、組織内に制限された公開情報を見つけることができる可能性は高く、したがって、第2の態様を暗黙的に満足する。
また、組織は、ノードが信用ドメインの外部のノードと自動的に連合することを望まない。こうしたことは、例えば、訪問販売者が、顧客の建物において彼/彼女のラップトップコンピュータをネットワークに接続するときに起こり得る。理想的には、販売者が所有するラップトップコンピュータは、自らのホームドメイン内で公開されている情報を見つけること、および/または最低位の好ましい近接性リングから始めて、自らのホームドメイン内のノードと連合することを望む。顧客ドメイン内のノードと連合することは、一般に許可されない。このシナリオをサポートするには、ホームドメイン内のシードノード(seed node)を見つける能力が必要とされる。そのようなシードノードは、ホームドメイン内で公開されている情報を見つけ、ホーム連合に参加し、ならびに公開情報をドメイン間で選択的にインポートおよびエキスポートするために使用することができる。シードノードは、時にはメッセージゲートウェイとも呼ばれる。
その他の実施形態においては、エンティティは、ルートリングにおけるシードノードへの参照を公開する。シードノードは、(表現文字列をハッシュすることによって得られる番号など)リングに関連付けられた(目標IDとしての)一意の番号において公開することができる。シードノード情報はさらに、ルートリング内の対応する目標IDに到るパス上に存在する様々なリング内のノードによって、オンデマンドでキャッシュすることができる。そのようなオンデマンドキャッシングは、性能を向上させ、また半静的な情報が非常に頻繁に検索される場合に発生することがあるホットスポットを減少させることができる。シードノード情報は、DNSなどその他の手段を介して取得することもできる。
制限された公開情報に耐障害性を与えるため、各ノードは、自らが参加するすべてのリングにおいて、近傍ノードの集合を維持することができる。上記のようなノードが与えられた場合、ノードによって維持される状態は、以下のように要約することができる。
・0からb−1の範囲内に一様に分布する数値であるID。
・ルーティングテーブルであって、
・ノードが参加する各リング、すなわち、リングdに関して、
・後続ノード(s)と、
・先行ノード(p)と、
・sjd.s.id>(id+u/2),j≧v/2−1かつpkd.p.id<(id−u/2),k≧v/2−1であるような、近傍ノード(pkd,..,p1d,p,s,s1d,..,sjd)と、
・r±i=RouteProximally(id±b,updateMsg,d)、適宜、s≦id+b≦sd+1またはpd+1≦id−b≦pであるような、ルーティングノード(r−(n−1),..,r−1,r,..,rn−1)とから構成されるルーティングテーブル(すべての計算はbを法として実行される)。ここで、bは基数、nは桁数で表したフィールドサイズ、uは近傍範囲、vは近傍サイズである。
リング「d」において与えられたノードによって維持される近傍ノードの部分集合は、与えられたノードが同様に参加している子リング「d+1」における近傍ノードとして再び出現できることに留意されたい。そのため、与えられたノードが参加しているD個のリングすべてにわたる、与えられたノードによって維持される近傍ノードの総数の上限は、D×max(u,v)/2として導くことができる。このことから、与えられたノードへのただ1つの参照が保たれ、最悪ケースの上限は平衡木用のものであると考えられる。
リングが複数の対応する兄弟サブリング(sibling sub−ring)に区分される場合、例えば、再命名(aliasing)によって、指定ノードが同時に2以上の複数の対応する兄弟サブリングに参加することが許可されることに留意されたい。再命名は、例えば、異なるサブリングの異なる状態を指定ノードに関連づけるために実施することができる。したがって、与えられたノードの別名(alias)は同じIDを有するが、各別名は、それらに関連付けられた異なる状態を有することができる。再命名は、指定ノードが、必ずしもより特定的な近接性基準の共通の祖先であるとは限らない異なる近接性基準を有する複数のリングに参加することを可能にする。すなわち、指定ノードは、近接性木の複数の枝に参加することができる。
例えば、デュアルNIC(有線および無線)ラップトップは、ラップトップとして、同じLANセグメントを共有するその他の無線および有線ノードの両方と近接性において同等であると見なすことができる。しかし、これら2つの異なる近接性基準は、例えば、組織のメンバシップに基づく基準など、異なるより高位の優先近接性基準を適用した後にだけ、適用可能な副基準としてモデル化することができる。そのラップトップは同じ組織に属するので、1)有線におけるメンバシップ、および2)無線LANセグメントにおけるメンバシップを表す2つのサブリング内の再命名ノードは、ラップトップが属する組織を表すリング内の単一のノードに併合される。RouteProximallyは、再命名が存在する場合でも、変更を施すことなく期待通りに機能することを理解されたい。
各近接リングは、(潜在的に異なる)リングパラメータによって構成することができる。リングパラメータは、近傍を定義するため(例えば、リングパラメータは、近傍範囲、近傍サイズ、pingメッセージおよび離脱メッセージタイミング、ならびにpingおよび離脱メッセージの配布パターンを表すことができる)、特定の連合メカニズムを(例えば、先に説明した上述の第1から第4の連合メカニズムの中から、またはその他の連合メカニズムの中から)指示するため、あるいは、同じ近接リング内のルーティングパートナ間の通信特性を定義するために使用することができる。いくつかのリングパラメータは、より汎用的で、複数の異なる連合メカニズムに適用することができるが、一方別のリングパラメータは、より専用的で、特定のタイプの連合メカニズムにのみ適用される。
より高位レベルの近接リングを構成するのに使用されるリングパラメータは、いくつかの実施形態においては、より低位の近接リングによって継承されることができる。例えば、リング543は、リング531のリングパラメータのいくつかを継承する(リング531はリング522から継承しており、同様の継承が繰り返される)。したがって、リング531に関連付けられた近傍サイズおよび近傍範囲は、リング541にも関連付けられている。
しかし、継承されたリングパラメータは、変更するこができ、かつ/または近接リングは、異なるリングパラメータに基づいて個別に構成することもできる。例えば、リング511は、多数のノードを含む管理ドメイン用のものであり、したがって、リング511にとっては、上述の第4の連合メカニズムがより適切である。一方、リング521は、比較的少数のノードを含む小企業用のものであり、したがって、リング521にとっては、上述の第2の連合メカニズムがより適切である。したがって、リング521に関連付けられたリングパラメータには、リング511に関連付けられたリングパラメータとは異なる値を設定(または継承されたパラメータを変更)することができる。例えば、特定のタイプの連合メカニズムを表すリングパラメータは、リング511とリング521とで異なることができる。同様に、近傍を定義するパラメータも、リング511とリング521とで異なることができる。さらに、リング521は、上述の第2の連合メカニズムに固有の専用パラメータに基づいて構成することができ、リング511は、それとは別に、上述の第4の連合メカニズムに固有の専用パラメータに基づいて構成することができる。
したがって、近接リングは、近接リング内のノードの特性(例えば、数、含まれるリソースなど)に基づいて、柔軟に構成することができる。例えば、管理者は、(例えば、ユーザインターフェースを介して)設定手順を利用して、近接リングのリングパラメータを選択することができる。設定手順は、個々の近接リングの構成ばかりでなく、例えば、継承されたリングパラメータを異なる形に上書きするなど、近接リング間の継承関係の構成も容易にすることができる。
図8は、連合インフラストラクチャのノードを区分する方法800のフローチャートの一例を示したものである。方法800は、図5の区分木500のリングに関して説明される。方法800は、連合インフラストラクチャ内のノードに割り当てられたノードIDを含むソート済リンクリストにアクセスする動作を含む(動作801)。例えば、リング501によって表されるソート済リンクリストにアクセスすることができる。ソート済リンクリストのノードID(リング501上に示されたノード)は、連合インフラストラクチャ(例えば、連合インフラストラクチャ100)内のノードを表すことができる。
方法800は、ソート済リンクリストを区分するための複数の異なる近接性基準を表す近接性カテゴリにアクセスする動作を含む(動作802)。例えば、ドメイン境界561、地理的境界562、および組織的境界563を表す近接性基準にアクセスすることができる。しかし、アクセスされる近接性基準として、信用ドメイン境界など、その他の近接性基準を提示することもできる。近接性カテゴリは、事前に作成された部分的に序列化された近接性基準のリストを含むことができる。リングは、部分的に序列化された近接性基準のリストに基づいて区分することができる。
方法800は、ソート済リンクリストを、第1の近接性基準に基づいて、1つまたは複数の第1のサブリストに区分する動作を含み(動作803)、1つまたは複数の第1のサブリストの各々は、ソート済リンクリストに属するノードIDの少なくとも部分集合を含む。例えば、リング501は、基準571に基づいて、サブリング511、512、513、514に区分することができる。サブリング511、512、513、514の各々は、リング501に属するノードIDの異なる部分集合を含むことができる。
方法800は、1つまたは複数の第1のサブリストの中から選択されたある第1のサブリストを、第2の近接性基準に基づいて、1つまたは複数の第2のサブリストに区分する動作を含み(動作804)、1つまたは複数の第2のサブリストの各々は、その第1のサブリストに含まれるノードIDの少なくとも部分集合を含む。例えば、サブリング511は、基準581に基づいて、サブリング521、522、523に区分することができる。サブリング521、522、523の各々は、サブリング511に属するノードIDの異なる部分集合を含むことができる。
図9は、ノードのルーティングテーブルに対して入力を行う方法900のフローチャートの一例を示したものである。方法900は、図3のソート済リンクリスト304およびリング306に関して説明される。方法900は、先行ノードをルーティングテーブルに挿入する動作を含み(動作901)、先行ノードは、ソート済リンクリストの第1の方向において、カレントノードと比較して、カレントノードに先行する。例えば、ID50をもつノードを、ID64をもつノード(カレントノード)の先行ノードとして、ルーティングテーブルに挿入することができる。時計回り方向321に(ソート済リンクリスト304の端部Aからソート済リンクリスト304の端部Bに向って)動いた場合、ID50をもつノードは、ID64をもつノードに先行する。先行ノードを挿入することにより、カレントノードと先行ノードの間に、カレントノードが先行ノードのパートナであり、かつ先行ノードがカレントノードのパートナである対称的なパートナシップを確立することができる。
方法900は、後続ノードをルーティングテーブルに挿入する動作を含み(動作902)、後続ノードは、ソート済リンクリストの第1の方向において、カレントノードと比較して、カレントノードに後続する。例えば、ID76をもつノードを、ID64をもつノード(カレントノード)の後続ノードとして、ルーティングテーブルに挿入することができる。反時計回り方向322に(ソート済リンクリスト304の端部Aからソート済リンクリスト304の端部Bに向って)動いた場合、ID76をもつノードは、ID64をもつノードに後続する。後続ノードを挿入することにより、カレントノードと後続ノードの間に、カレントノードが後続ノードのパートナであり、かつ後続ノードがカレントノードのパートナである対称的なパートナシップを確立することができる。
方法900は、適切な近傍ノードをルーティングテーブルに挿入する動作を含み(動作903)、近傍ノードは、第1の方向およびそれとは反対の第2の方向の両方において、近傍範囲および近傍サイズに基づいて、ソート済リンクリストから識別される。例えば、ID83、76、50、46をもつノードを、ID64をもつノード(カレントノード)の近傍ノードとして、ルーティングテーブルに挿入することができる。20の近傍範囲および4の近傍サイズに基づいて、時計回り方向321に、ID83および76をもつノードを識別することができ、反時計回り方向322に(ソート済リンクリスト304の端部Bからソート済リンクリスト304の端部Aに向って)、ID50および46をもつノードを識別することができる。いくつかの環境においては、適切な近傍ノードが識別されないこともあり得る。近傍ノードを挿入することにより、カレントノードと近傍ノードの間に、カレントノードが近傍ノードのパートナであり、かつ近傍ノードがカレントノードのパートナである対称的なパートナシップを確立することができる。
方法900は、適切なルーティングノードをルーティングテーブルに挿入する動作を含み(動作904)、ルーティングノードは、第1および第2の両方向において、基数および連合インフラストラクチャのID空間のフィールドサイズに基づいて、ソート済リンクリストから識別され、ルーティングノードは、第1および第2の両方向におけるソート済リンクリストの対数指標を表す。例えば、ID200、2、30、46、50、64、64、64、64、64、76、83、98、135、200をもつノードを、ID64をもつノードのルーティングノードとして、ルーティングテーブルに挿入することができる。2の基数および8のフィールドサイズに基づいて、方向321に、ID64、64、76、83、98、135、200をもつノードを識別することができ、方向322に、ID64、64、50、46、30、2、200をもつノードを識別することができる。リング306の内部に示すように、ルーティングノードは、時計回り方向321および反時計回り方向322の両方におけるソート済リンクリスト304の対数指標を表す。ルーティングノードを挿入することにより、カレントノードとルーティングノードの間に、カレントノードがルーティングノードのパートナであり、かつルーティングノードがカレントノードのパートナである対称的なパートナシップを確立することができる。
図7は、近接性基準を考慮したノードルーティングテーブルに対して入力を行う方法700のフローチャートの一例を示したものである。方法700は、図5のリングに関して説明される。方法700は、カレントノードが参加する階層化して区分された各ルーティングリングに関する先行ノードをルーティングテーブルに挿入する動作を含む(動作701)。各先行ノードは、カレントノードが参加する階層化して区分された各ルーティングリング内において、第1の(例えば、時計回り)方向に関して、カレントノードに先行する。階層化して区分されたルーティングリングは、対応する近接性基準に基づいて区分され、両方向のリンクリストの少なくとも部分集合(場合によっては両方向のリンクリスト全体)を含む。例えば、ある指定ノードが、ルートリング501と、サブリング511、522、523、531、542に参加することがあり得る。したがって、先行ノードは、ルートリング501およびサブリング511、522、523、531、542の各々の内部で、それに属する指定ノードについて選択される。
方法700は、カレントノードが参加する階層化して区分された各ルーティングリングに関する後続ノードをルーティングテーブルに挿入する動作を含む(動作702)。各後続ノードは、カレントノードが参加する階層化して区分された各ルーティングリング内において、第1の方向に関して、カレントノードに先行する。例えば、後続ノードは、リング501およびサブリング511、522、523、531、542の各々の内部で、それに属する指定ノードについて選択される。
方法700は、カレントノードが参加する階層化して区分された各ルーティングリングに関する適切な近傍ノードをルーティングテーブルに挿入する動作を含む(動作703)。近傍ノードは、第1の(例えば、時計回り)方向およびそれとは反対の第2の(例えば、反時計回り)方向の両方において、近傍範囲および近傍サイズに基づいて、カレントノードが参加する階層化して区分されたルーティングリングから識別することができる。例えば、近傍ノードは、リング501およびサブリング511、522、523、531、542の各々の内部で、それに属する指定ノードについて識別することができる。
方法700は、カレントノードが参加する階層化して区分された各ルーティングリングに関する適切なルーティングノードをルーティングテーブルに挿入する動作を含む(動作704)。例えば、ルーティングノードは、リング501およびサブリング511、522、523、531、542の各々の内部で、それに属する指定ノードについて識別することができる。
いくつかの実施形態においては、適切なルーティングノードは、リーフリング(または再命名を利用する実施形態では複数のリーフリング)を除いて、ノードYが参加する各近接リングdに関して挿入される。適切なルーティングノードは、以下の式に基づいて挿入することができる。
もしY.s.id<Y.id+b<Y.sd+1.idならば、リングdを使用する、または、
もしY.p.id<Y.id−b<Y.pd+1.idならば、リングdを使用する。
上のステップにおいて、リングが識別されなかった場合、リングdとしてリードリング(lead ring)(例えば、リング501)を使用する。これで、リングdは、ノードYがzに最も近いルーティングパートナを探索すべき近接リングとなる。
図10は、メッセージを宛先ノードに向けてルーティングする方法1000のフローチャートの一例を示したものである。方法1000は、図3のソート済リンクリスト304およびリング306に関して説明される。方法1000は、受信ノードが、宛先を示す番号と共にメッセージを受信する動作を含む(動作1001)。例えば、ID64をもつノードは、宛先が212であると指示するメッセージを受信することができる。
方法1000は、受信ノードが、対応する先行ノードより宛先から数値的により遠いのか、対応する後続ノードより宛先から数値的により遠いのかの少なくとも一方であることを決定する動作を含む(動作1002)。例えば、方向322に関して、ID64は、ID50より宛先212からより遠く、方向321に関して、ID64は、ID76より宛先212からより遠い。方法1000は、宛先が、受信ノードに対応する近傍ノード集合に属していないことを決定する動作を含む(動作1003)。例えば、ID64をもつノードは、宛先212が、83、76、50、46からなる近傍集合に属していないことを決定することができる。
方法1000は、受信ノードに対応するルーティングテーブルから中間ノードを識別する動作を含み(動作1004)、中間ノードは、対応するルーティングテーブル内のその他のルーティングノードより宛先に数値的により近い。例えば、ID64をもつノードは、その他のルーティングノードより宛先212に数値的により近いものとして、ID200をもつルーティングノードを識別することができる。方法1000は、中間ノードにメッセージを送信する動作を含む(動作1005)。例えば、ID64をもつノードは、ID200をもつノードにメッセージを送信することができる。
図11は、近接性基準に基づいてメッセージを宛先ノードに向けてルーティングする方法1100のフローチャートの一例を示したものである。方法1100は、図4および図5のリングに関して説明される。方法1100は、受信ノードが、宛先を示す番号および近接性基準と共にメッセージを受信する動作を含む(動作1101)。近接性基準は、ノードの1つまたは複数のクラスを定義する。受信ノードは、近接性基準に基づいて1つまたは複数のノードクラスの中から選択されたカレントノードクラスの一員として、メッセージを受信する。例えば、ID172をもつノードは、宛先が201であると指示するメッセージと、宛先ノードがリング401によって表されるクラスの一員であることを示す近接性基準とを受信することができる。ID172をもつノードは、リング404の一員として、メッセージを受信することができる。
方法1100は、選択されたノードクラスのノードの中で、受信ノードが、対応する先行ノードより宛先から数値的により遠いのか、対応する後続ノードより宛先から数値的により遠いのかの少なくとも一方であることを決定する動作を含む(動作1102)。例えば、リング404の中で、ID172をもつノードは、時計回り方向に関してID174をもつノードより宛先201からより遠く、反時計回り方向に関してID153をもつノードより宛先201からより遠い。
方法1100は、近接性基準によって定義された1つまたは複数のノードクラスのいずれについても、宛先が、受信ノードの近傍ノード集合に属していないことを決定する動作を含む(動作1103)。例えば、ID172をもつノードは、宛先201が、リング404またはリング401内の対応する近傍集合に属していないことを決定することができる。
方法1100は、受信ノードのルーティングテーブルから中間ノードを識別する動作を含み(動作1104)、中間ノードは、ルーティングテーブル内のその他のルーティングノードより宛先に数値的により近い。例えば、ID172をもつノードは、リング404内のその他のルーティングノードより宛先201に数値的により近いものとして、ID194をもつノードを識別することができる。方法1100は、中間ノードにメッセージを送信する動作を含む(動作1105)。例えば、ID172をもつノードは、ID194をもつノードに受信したメッセージを送信することができる。ID172をもつノードは、先に定義された部分的に序列化された近接性基準のリストに従って、ID194をもつノードに受信したメッセージを送信することができる。
リング404内においては、ノード194が宛先201に可能な限り近いことがあり得る。そのため、次の区間(next leg)において、宛先に向けてのさらなるルーティングをリング401内で行うことを可能にするのに十分なだけ、近接性が緩和されることができる。すなわち、リング404上では、もはや宛先に向けてこれ以上前進できないので、ルーティングはリング404からリング401に遷移される。あるいは、ID201をもつノードは、リング401においてID194をもつノードの近傍内にあり、その結果、もはやルーティングは行われないこともあり得る。したがって、いくつかの実施形態においては、さらなるルーティングを行わせるには、より高い次のリングに遷移するように近接性基準を緩和するだけで十分である。
しかし、その他の実施形態においては、さらなるルーティングが行えるようになるまで(またはルートリングに出会うまで)、より高い次のリングへの遷移を生じさせる近接性基準の漸増的な緩和が継続する。すなわち、さらなるルーティング前進が行えるまで、より高いリングへの遷移が複数回発生する。例えば、図5を参照すると、リング531上では、もはやルーティング前進が行えない場合、リング511にまたはルートリング501にすら遷移するのに十分なだけ、近接性基準を緩和することができる。
図6および以下の説明は、本発明を実施することができる適切なコンピューティング環境についての簡略で概括的な説明を提供することを意図したものである。必須ではないが、本発明は、コンピュータシステムによって実行されるプログラムモジュールなどのコンピュータ実行可能命令を一般的前提として説明される。一般に、プログラムモジュールは、特定のタスクを実行し、または特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。コンピュータ実行可能命令、関連データ構造、およびプログラムモジュールは、本明細書で開示される方法の動作を実行するプログラムコード手段の例を表す。
図6を参照すると、本発明を実施するためのシステム例は、プロセッシングユニット621と、システムメモリ622と、システムメモリ622を含む様々なシステムコンポーネントをプロセッシングユニット621に結合するシステムバス623とを含むコンピュータシステム620の形態をとる汎用コンピューティング装置を含む。プロセッシングユニット621は、本発明の機能を含むコンピュータシステム620の機能を実施するように設計されたコンピュータ実行可能命令を実行することができる。システムバス623は、メモリバスまたはメモリコントローラ、周辺バス、および様々なバスアーキテクチャのいずれかを用いるローカルバスを含む複数のタイプのバス構造のいずれかとすることができる。システムメモリは、読み取り専用メモリ(ROM)624、およびランダムアクセスメモリ(RAM)625を含む。基本入出力システム(BIOS)626は、起動処理中などにコンピュータシステム620内の要素間での情報転送を助ける基本ルーチンを含み、ROM624に記憶しておくことができる。
コンピュータシステム620は、磁気ハードディスク639に対して読み書きを行う磁気ハードディスクドライブ627、着脱可能な磁気ディスク629に対して読み書きを行う磁気ディスクドライブ628、および例えばCD−ROMまたはその他の光媒体など着脱可能な光ディスク631に対して読み書きを行う光ディスクドライブ630も含むことができる。磁気ハードディスクドライブ627、磁気ディスクドライブ628、および光ディスクドライブ630は、それぞれハードディスクドライブインターフェース632、磁気ディスクドライブインターフェース633、および光ドライブインターフェース634によって、システムバス623に接続される。ドライブおよび関連コンピュータ読取り可能媒体は、コンピュータ実行可能命令、データ構造、プログラムモジュール、およびその他のデータの不揮発性記憶をコンピュータシステム620に提供する。本明細書で説明する例示的な環境は、磁気ハードディスク639、着脱可能な磁気ディスク629、および着脱可能な光ディスク631を利用するが、磁気カセット、フラッシュメモリカード、デジタル多用途ディスク、ベルヌイカートリッジ、RAM、およびROMなどを含む、データを保存するためのその他のタイプのコンピュータ読取り可能媒体を使用することもできる。
1つまたは複数のプログラムモジュールを含むプログラムコード手段は、ハードディスク639、磁気ディスク629、光ディスク631、ROM624、またはRAM625に保存することができ、オペレーティングシステム635、1つまたは複数のアプリケーションプログラム636、その他のプログラムモジュール637、およびプログラムデータ638を含む。ユーザは、キーボード640、ポインティングデバイス642、または例えばマイクロホン、ジョイスティック、ゲームパッド、もしくはスキャナなどのその他の入力装置(図示せず)を介して、コンピュータシステム620にコマンドおよび情報を入力することができる。上記およびその他の入力装置は、システムバス623に結合された入出力インターフェース646を介して、プロセッシングユニット621に接続することができる。入出力インターフェース646は、例えば、シリアルポートインターフェース、PS/2インターフェース、パラレルポートインターフェース、ユニバーサルシリアルバス(「USB」)インターフェース、もしくはIEEE1394インターフェース(すなわち、FireWireインターフェース)など、多種多様な異なるインターフェースのいずれかを論理的に表し、または異なるインターフェースの組合せを論理的に表すことすらできる。
モニタ647または別のディスプレイ装置も、ビデオインターフェース648を介してシステムバス623に接続される。スピーカ669またはその他のオーディオ出力装置も、オーディオインターフェース649を介してシステムバス623に接続される。例えば、プリンタなどのその他の周辺出力装置(図示せず)も、コンピュータシステム620に接続することができる。
コンピュータシステム620は、例えば、オフィス規模または企業規模のコンピュータネットワーク、ホームネットワーク、イントラネット、および/またはインターネットなどのネットワークに接続可能である。コンピュータシステム620は、そのようなネットワークを介して、例えば、リモートコンピュータシステム、リモートアプリケーション、および/またはリモートデータベースなどの外部ソースとデータを交換することができる。
コンピュータシステム620は、コンピュータシステム620が外部ソースからデータを受信し、かつ/または外部ソースにデータを送信するのに用いるネットワークインターフェース653を含む。図6に示すように、ネットワークインターフェース653は、リンク651を介してリモートコンピュータシステム683とのデータ交換を容易にする。ネットワークインターフェース653は、例えば、ネットワークインターフェースカードおよび対応するネットワークドライバインターフェース仕様(「NDIS」)スタックなど、1つまたは複数のソフトウェアおよび/またはハードウェアモジュールを論理的に表すことができる。リンク651は、ネットワークの一部(例えば、イーサネット(登録商標)セグメント)を表し、リモートコンピュータシステム683は、ネットワークのノードを表す。
同様に、コンピュータシステム620は、コンピュータシステム620が外部ソースからデータを受信し、かつ/または外部ソースにデータを送信するのに用いる入出力インターフェース646を含む。入出力インターフェース646は、コンピュータシステム620が外部ソースからデータを受信し、かつ/または外部ソースにデータを送信するのに用いるリンク659を介してモデム654(例えば、標準モデム、ケーブルモデム、またはデジタル加入者線(「DSL」)モデム)に結合される。図6に示すように、入出力インターフェース646は、リンク652を介してリモートコンピュータシステム693とのデータ交換を容易にする。リンク652は、ネットワークの一部を表し、リモートコンピュータシステム693は、ネットワークのノードを表す。
図6は、本発明にとっての適切な動作環境を表すが、本発明の原理は、必要に応じて適切な変更を施して本発明の原理を実施できる任意のシステムにおいて利用することができる。図6に示す環境は、例示的なものに過ぎず、本発明の原理を実施できる多種多様な環境の僅かな一部であっても決して代表するものではない。
本発明によれば、ノード、アプリケーションレイヤ、およびその他の低位レイヤは、関連データのほか、ルーティングテーブルを含み、ノードIDは保存され、コンピュータシステム620に関連づけられた任意のコンピュータ読取り可能媒体からアクセスすることができる。例えば、そのようなモジュールの一部および関連プログラムデータの一部は、オペレーティングシステム635、アプリケーションプログラム636、プログラムモジュール637、および/またはプログラムデータ638に含まれ、システムメモリ622に記憶することができる。
例えば、磁気ハードディスク639などの大容量記憶装置が、コンピュータシステム620に結合された場合、そのようなモジュールおよび関連プログラムデータも、大容量記憶装置に保存することができる。ネットワーク環境では、コンピュータシステム620またはその一部に関して示されたプログラムモジュールは、リモートコンピュータシステム683および/もしくはリモートコンピュータシステム693に関連するシステムメモリならびに/または大容量記憶装置などのリモートメモリ記憶装置に保存することができる。そのようなモジュールの実行は、先に説明したように分散環境で行うことができる。
本発明は、本発明の主旨および基本特性から逸脱することなく、その他の特定の形態で実施することができる。説明した実施形態は、すべての点で例示的なものに過ぎず、限定的なものと考えるべきではない。したがって、本発明の範囲は、上述の説明よりもむしろ添付の特許請求の範囲によって表される。特許請求の範囲の意味および均等性の範囲に収まるすべての変更は、それらの範囲に包含されるものとする。
連合インフラストラクチャの一例を示した図である。 要求をパートナに間接的にルーティングすることを容易にするコンピュータアーキテクチャの一例を示した図である。 ソート済リストおよび対応するリングの形態をとる連合インフラストラクチャにおけるノード間の2項関係の一例を示した図である。 近接ルーティングを容易にするリングからなるリングの一例を示した図である。 近接ルーティングを容易にするリングからなる近接性誘導区分木の一例を示した図である。 本発明の原理にとって適切な動作環境を示した図である。 近接性基準を考慮したノードのルーティングテーブルに入力する方法のフローチャート例である。 連合インフラストラクチャのノードを区分する方法のフローチャート例である。 ノードのルーティングテーブルに入力する方法のフローチャート例である。 メッセージを宛先ノードに向って数値的にルーティングする方法のフローチャート例である。 メッセージを宛先ノードに向って近接的にルーティングする方法のフローチャート例である。
符号の説明
100 連合インフラストラクチャ
200 コンピュータアーキテクチャ
304 ソート済みリンクリスト
306、401、402、403、404 リング
500 区分木
511、512、513、514 サブリング

Claims (51)

  1. 連合インフラストラクチャにおいて、メッセージを宛先ノードに向けてルーティングする方法であって、
    受信ノードが、宛先を指示する宛先識別子と共にメッセージを受信する動作であって、前記受信ノードは、双方向ルーティング用に構成されたノードからなるリングに含まれることと、
    ノードからなる前記リング内での前記受信ノードの位置に基づいて、前記メッセージを受信すべき次の適切なノードを決定する動作であって、前記次の適切なノードは、前記受信ノードのルーティングテーブル内のその他のルーティングノードより前記宛先に数値的により近く、前記ルーティングテーブルは、ノードからなる前記リング内のその他のノードの対数指標を少なくとも表し、前記ルーティングテーブルは、前記連合インフラストラクチャにおける識別子を生成するための識別子空間を生成するのに利用される基数に少なくとも基づいて入力され、前記受信ノードは、前記受信ノードのルーティングテーブル内のノードと対称的な関係を有することと、
    前記メッセージを次の適切な構成要素に送信する動作と、
    を備えることを特徴とする方法。
  2. 前記メッセージを受信すべき次の適切なノードを決定する前記動作は、前記受信ノードのルーティングテーブル内のその他のルーティングノードより前記宛先に数値的により近い中間ノードを識別する動作を含むことを特徴とする請求項1に記載の方法。
  3. 中間ノードを識別する前記動作は、前記受信ノードのルーティングテーブルに含まれるノードとして前記中間ノードを識別する動作を含むことを特徴とする請求項2に記載の方法。
  4. 前記メッセージを受信すべき次の適切なノードを決定する前記動作は、前記受信ノードが先にメッセージを送信したノードからステータスメッセージを受信する動作を含むことを特徴とする請求項1に記載の方法。
  5. ステータスメッセージを受信する前記動作は、ノードプレゼンス情報を含むステータスメッセージを受信する動作を含むことを特徴とする請求項4に記載の方法。
  6. ステータスメッセージを受信する前記動作は、前記受信ノードによって、異なる次の適切な構成要素を識別させるステータスメッセージを受信する動作を含むことを特徴とする請求項4に記載の方法。
  7. 前記受信ステータスメッセージから、前記受信メッセージは前記受信ノードによってさらに送信されるべきではないことを決定する動作をさらに含むことを特徴とする請求項4に記載の方法。
  8. 前記受信ステータスメッセージから前記メッセージはさらに送信されるべきではないことを決定する前記動作は、前記受信ステータスメッセージから、前記メッセージは少なくとも1つの宛先ノードに配送されたことを決定する動作を含むことを特徴とする請求項7に記載の方法。
  9. 前記受信ステータスメッセージから前記メッセージはさらに送信されるべきではないことを決定する前記動作は、前記メッセージはどのような宛先ノードにも配送されていないことを決定する動作を含むことを特徴とする請求項7に記載の方法。
  10. 前記受信メッセージに関係するステータスメッセージを、前記受信ノードに前記メッセージを送信したノードに送信する動作をさらに備えることを特徴とする請求項1に記載の方法。
  11. 前記受信メッセージに関係するステータスメッセージを送信する前記動作は、先に受信したステータスメッセージを、前記受信ノードに前記受信メッセージを送信した前記ノードに返信する動作を含むことを特徴とする請求項10に記載の方法。
  12. 前記メッセージを受信すべき次の適切なノードを決定する前記動作は、前記受信ノードを前記次の適切なノードとして識別する動作を含むことを特徴とする請求項1に記載の方法。
  13. 前記受信ノードを前記次の適切なノードとして識別する前記動作は、前記受信ノードの識別子が前記宛先識別子により近く一致することを決定する動作を含むことを特徴とする請求項12に記載の方法。
  14. 前記受信ノードの識別子が前記宛先識別子により近く一致することを決定する前記動作は、前記受信ノードの前記識別子が前記宛先識別子に正確に一致することを決定する動作を含むことを特徴とする請求項13に記載の方法。
  15. 前記受信メッセージを前記受信ノードのすぐ隣のノードに転送する動作であって、前記すぐ隣のノードは、前記受信ノードのカレントリング内に存在することをさらに含むことを特徴とする請求項13に記載の方法。
  16. 前記受信メッセージを前記受信ノードのすぐ隣のノードに転送する前記動作は、前記宛先識別子が前記受信ノードと前記受信ノードのすぐ隣の先行ノードの間に収まっていることを決定する動作を含むことを特徴とする請求項15に記載の方法。
  17. 前記受信メッセージを前記受信ノードのすぐ隣のノードに転送する前記動作は、前記宛先識別子が前記受信ノードと前記受信ノードのすぐ隣の後続ノードの間に収まっていることを決定する動作を含むことを特徴とする請求項15に記載の方法。
  18. 前記受信ノードの前記すぐ隣のノードが、前記転送メッセージに関係するステータスメッセージを、前記受信ノードに返信する動作をさらに含むことを特徴とする請求項15に記載の方法。
  19. 前記受信ノードの前記すぐ隣のノードが、前記ステータスメッセージ内にノードプレゼンス情報を含める動作をさらに含むことを特徴とする請求項18に記載の方法。
  20. 前記受信ノードの前記すぐ隣のノードが前記転送メッセージに関係するステータスメッセージを前記受信ノードに返信する前記動作は、前記受信ノードの前記すぐ隣のノードによって、前記受信ノードが前記メッセージにとっての最良の次の適切なノードであると見なされたことの表示を少なくとも含むステータスメッセージを送信することをさらに含むことを特徴とする請求項18に記載の方法。
  21. 前記受信ノードの前記すぐ隣のノードが前記転送メッセージに関係するステータスメッセージを前記受信ノードに返信する前記動作は、ノードプレゼンス情報を含むステータスメッセージを送信することを含むことを特徴とする請求項18に記載の方法。
  22. 前記受信ノードの前記すぐ隣のノードが前記転送メッセージに関係するステータスメッセージを前記受信ノードに返信する前記動作は、前記受信メッセージが前記受信ノードによってさらに送信されるべきではないことの表示を含むステータスメッセージを送信することを含むことを特徴とする請求項18に記載の方法。
  23. 前記受信ノードを前記次の適切なノードとして識別する前記動作は、前記受信メッセージが、前記受信ノードを前記次の適切なノードとして識別する原因となる動作を含むことを特徴とする請求項12に記載の方法。
  24. 前記メッセージを次の適切な構成要素に送信する前記動作は、前記メッセージを前記次の適切なノードに送信する動作を含むことを特徴とする請求項1に記載の方法。
  25. 前記メッセージを前記次の適切なノードに送信する前記動作は、前記次の適切なノードに送信されている前記メッセージ内に追加のノードプレゼンス情報を含める動作を含むことを特徴とする請求項24に記載の方法。
  26. 前記メッセージを次の適切な構成要素に送信する前記動作は、前記受信ノードが前記メッセージの最終宛先として機能する動作を含むことを特徴とする請求項1に記載の方法。
  27. 前記受信ノードが前記メッセージの最終宛先として機能する前記動作は、前記受信ノードに関連付けられたアプリケーション構成要素に前記メッセージを配送する動作を含むことを特徴とする請求項26に記載の方法。
  28. 前記受信メッセージに関連するステータスメッセージを、前記受信ノードに前記受信メッセージを送信したノードに返信する動作をさらに含むことを特徴とする請求項26に記載の方法。
  29. 区分されたノードクラスの階層を含む連合インフラストラクチャにおいて、近接性基準に基づいて、メッセージを宛先ノードに向けてルーティングする方法であって、
    受信ノードが、宛先識別子および近接性基準と共にメッセージを受信する動作であって、前記近接性基準は、ノードクラスの階層における1つまたは複数のノードクラスを定義し、前記受信ノードは、ノードクラスの前記階層におけるカレントノードクラスの一員であり、前記カレントノードクラスは、ノードクラスの前記階層における前記1つまたは複数のノードクラスの中から選択されることと、
    前記受信ノードのルーティングテーブルから適切なノードを識別する動作であって、前記適切なノードは、前記ルーティングテーブル内のその他のルーティングノードより前記宛先に数値的により近いが、近接性基準によって定義された前記1つまたは複数のノードクラス内にまだ存在しており、前記ルーティングテーブルは、近接性基準によって定義された前記1つまたは複数のノードクラス内の、前記連合インフラストラクチャ用のID空間を生成するのに利用される基数に基づいて入力されたその他のノードの対数指標を少なくとも表すことと、
    前記メッセージを次の適切なノードに送信する動作と、
    を備えることを特徴とする方法。
  30. 受信ノードが宛先識別子および近接性基準と共にメッセージを受信する前記動作は、前記受信ノードが、先に定義された部分的に序列化された近接性基準のリストにアクセスする動作を含むことを特徴とする請求項29に記載の方法。
  31. 前記受信ノードが先に定義された部分的に序列化された近接性基準のリストにアクセスする前記動作は、先に定義された部分的に序列化された近接性基準のリストを受信する動作を含むことを特徴とする請求項30に記載の方法。
  32. 前記メッセージを次の適切なノードに送信する前記動作は、先に定義された部分的に序列化された近接性基準のリストに従って、前記メッセージを前記次の適切なノードに送信する動作を含むことを特徴とする請求項29に記載の方法。
  33. 区分されたノードクラスの階層を含む連合インフラストラクチャにおいて、メッセージを満足し得る宛先ノード(sufficient destination node)に向けてルーティングする方法であって、
    受信ノードが、宛先識別子および近接性基準と共にメッセージを受信する動作であって、前記近接性基準は、ノードクラスの階層における1つまたは複数のノードクラス内の最高位ノードクラスを定義し、前記受信ノードは、ノードクラスの前記階層における少なくともカレントノードクラスの一員であり、前記カレントノードクラスは、ノードクラスの前記階層における前記1つまたは複数のノードクラスの中から選択されることと、
    前記メッセージにとって満足し得る宛先ノードを識別する動作であって、前記満足し得る宛先ノードは、前記受信近接性基準によって定義された前記最高位ノードクラスのメンバであり、前記満足し得る宛先ノードは、前記最高位ノードクラスにおいて前記宛先識別子の近傍に存在することと、
    前記メッセージを前記満足し得る宛先ノードに送信する動作と、
    を備えることを特徴とする方法。
  34. 満足し得る宛先ノードを識別する前記動作は、前記近接性基準に基づいて、少なくとも前記受信ノードのルーティングテーブルから満足し得る宛先ノードを識別する動作を含むことを特徴とする請求項33に記載の方法。
  35. 満足し得る宛先ノードを識別する前記動作は、前記受信ノードに関連するアプリケーション構成要素のアプリケーションロジックが、満足し得る宛先ノードを識別する動作を含むことを特徴とする請求項33に記載の方法。
  36. 前記満足し得る宛先ノードが前記最高位ノードクラスにおいて前記宛先識別子の前記近傍に存在することを適格とする動作をさらに含むことを特徴とする請求項33に記載の方法。
  37. 前記満足し得る宛先ノードが前記最高位ノードクラスにおいて前記宛先識別子の前記近傍に存在することを適格とする前記動作は、前記受信ノードが、前記受信ノードのルーティングテーブルを用いて、前記最高位ノードクラスにおいて前記宛先識別子に数値的に最も近くもある前記満足し得る宛先ノードをさらに適格とする動作を含むことを特徴とする請求項36に記載の方法。
  38. 前記満足し得る宛先ノードが前記受信ノードであることを適格とする動作をさらに含むことを特徴とする請求項33に記載の方法。
  39. 複数の階層化して区分されたノードクラスを含むシステムであって、
    ノードからなる上位リングであって、ノードからなる前記上位リング内の各ノードは、ソート済リンクリストノード内の位置を示すノード識別子を有するノードからなることと、
    ノードからなる第1の低位リングであって、ノードからなる前記第1の低位リング内の各ノードは、ノードからなる第1のサブリストにおけるノード識別子を有し、ノードからなる前記第1のサブリストは、前記第1の低位リング内のノードが前記上位リング内のノードでもあるように、前記ソート済リンクリストから区分され、前記第1のサブリストは、ノードからなるリングをどのように分類すべきかを示す近接性基準に基づいて、前記ソート済リンクリストから区分され、ノードからなる前記第1のリングは、ルーティングされるメッセージトラフィックが、ノードからなる前記第1のリング内でルーティングされる場合に、前記リンクリストに含まれる少なくともいくつかのノードをバイパスできるように構成されるノードからなることと、
    ノードからなる第2の低位リングであって、ノードからなる前記第2の低位リング内の各ノードは、ノードからなる第2の異なるサブリストにおけるノード識別子を有し、ノードからなる前記第2のサブリストは、前記第2の低位リング内のノードが前記上位リング内のノードでもあるように、前記ソート済リンクリストから区分され、前記第2のサブリストは、前記近接性基準に基づいて、前記第1の低位リングと前記第2の低位リングが前記上位リングの近接性基準に関して同等に分類されるように、前記ソート済リンクリストから区分され、ノードからなる前記第2のリングは、ルーティングされるメッセージトラフィックがノードからなる前記第2のリング内でルーティングされる場合に、ノードからなる前記第1のリングに含まれる少なくともいくつかのノードをバイパスできるように構成されるノードからなることと、
    を備えることを特徴とするシステム。
  40. メッセージトラフィックは、ノードからなる前記上位リングに制限されることを特徴とする請求項39に記載のシステム。
  41. メッセージトラフィックは、ノードからなる前記第1の低位リングに制限されることを特徴とする請求項39に記載のシステム。
  42. メッセージトラフィックは、ノードからなる前記第2の低位リングに制限されることを特徴とする請求項39に記載のシステム。
  43. 前記システムは、ノードからなる前記上位リングにおいて宛先ノードに向けられたメッセージが、前記メッセージのルーティングがノードからなる前記上位リングにおいて継続される前に、ノードからなる前記第1の低位リングにおいて可能な限り前記宛先ノードに向って前進するように構成されることを特徴とする請求項39に記載のシステム。
  44. 前記システムは、ノードからなる前記上位リングにおいて宛先ノードに向けられたメッセージが、前記メッセージのルーティングがノードからなる前記上位リングにおいて継続される前に、ノードからなる前記第2の低位リングにおいて可能な限り前記宛先ノードに向って前進するように構成されることを特徴とする請求項39に記載のシステム。
  45. 前記システムは、ノードからなる前記上位リングにおいて宛先ノードに向けられたメッセージが、表された等価のノードクラス内で前記宛先ノードの近傍に存在するノードにおいて前記メッセージが受信された後、前記宛先ノードに関連付けられたアプリケーション構成要素に配送されることができるように構成されることを特徴とする請求項39に記載のシステム。
  46. 前記システムは、ノードからなる前記上位リングにおけるノード間のルーティング関係が対称的となるように構成されることを特徴とする請求項39に記載のシステム。
  47. 前記システムは、ノードからなる前記上位リングにおけるノード間のルーティング関係が双方向的となるように構成されることを特徴とする請求項39に記載のシステム。
  48. ノードからなる第1のサブリストにおけるノード識別子を有するノードからなる前記第1の低位リング内の各ノードは、ノードからなる上位リングからのノード識別子を有するノードからなる前記第1の低位リング内の各ノードを含むことを特徴とする請求項39に記載のシステム。
  49. ノードからなる第2のサブリストにおけるノード識別子を有するノードからなる前記第2の低位リング内の各ノードは、ノードからなる上位リングからのノード識別子を有するノードからなる前記第2の低位リング内の各ノードを含むことを特徴とする請求項39に記載のシステム。
  50. ノードからなる前記第1の低位リング内の1つまたは複数のノードは、ノードからなる前記第2の低位リングにも含まれることを特徴とする請求項39に記載のシステム。
  51. ノードからなる前記第2の低位リングに含まれる、ノードからなる前記第1の低位リング内の前記1つまたは複数のノードは、ノードからなる前記第2の低位リングにおいて再命名された、ノードからなる前記第1の低位リング内の前記1つまたは複数のノードを含むことを特徴とする請求項50に記載のシステム。
JP2005306949A 2004-10-22 2005-10-21 リソース要求を対応するリソースに会合させる方法およびシステム Expired - Fee Related JP4726604B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US10/971,451 2004-10-22
US10/971,451 US20060090003A1 (en) 2004-10-22 2004-10-22 Rendezvousing resource requests with corresponding resources
US11/220,756 US8014321B2 (en) 2004-10-22 2005-09-07 Rendezvousing resource requests with corresponding resources
US11/220,756 2005-09-07

Publications (3)

Publication Number Publication Date
JP2006174417A true JP2006174417A (ja) 2006-06-29
JP2006174417A5 JP2006174417A5 (ja) 2011-04-07
JP4726604B2 JP4726604B2 (ja) 2011-07-20

Family

ID=35517374

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005306949A Expired - Fee Related JP4726604B2 (ja) 2004-10-22 2005-10-21 リソース要求を対応するリソースに会合させる方法およびシステム

Country Status (10)

Country Link
US (3) US8014321B2 (ja)
EP (1) EP1650911B1 (ja)
JP (1) JP4726604B2 (ja)
KR (1) KR101201072B1 (ja)
AT (1) ATE553571T1 (ja)
AU (1) AU2005220253B2 (ja)
BR (1) BRPI0504513A (ja)
CA (1) CA2523897A1 (ja)
MX (1) MXPA05011314A (ja)
RU (1) RU2400806C2 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008206160A (ja) * 2007-02-21 2008-09-04 Avaya Canada Corp ピアツーピア通信システムおよび方法
JP2009543188A (ja) * 2006-06-30 2009-12-03 マイクロソフト コーポレーション ランデブーフェデレーション内の近傍域間通信
JP2010509871A (ja) * 2006-11-09 2010-03-25 マイクロソフト コーポレーション フェデレーションインフラストラクチャ内の一貫性
JP2010526360A (ja) * 2007-05-04 2010-07-29 テレフオンアクチーボラゲット エル エム エリクソン(パブル) 携帯機器ファイル共有方法および装置
US10904635B2 (en) 2015-11-04 2021-01-26 Samsung Electronics Co., Ltd Method and device for providing data in multimedia system

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8782654B2 (en) 2004-03-13 2014-07-15 Adaptive Computing Enterprises, Inc. Co-allocating a reservation spanning different compute resources types
EP2339469A1 (en) 2004-03-13 2011-06-29 Adaptive Computing Enterprises, Inc. System and method for a self-optimizing reservation in time of compute resources
US20070266388A1 (en) 2004-06-18 2007-11-15 Cluster Resources, Inc. System and method for providing advanced reservations in a compute environment
US8176490B1 (en) 2004-08-20 2012-05-08 Adaptive Computing Enterprises, Inc. System and method of interfacing a workload manager and scheduler with an identity manager
US7640299B2 (en) 2004-09-30 2009-12-29 Microsoft Corporation Optimizing communication using scaleable peer groups
US7613703B2 (en) 2004-09-30 2009-11-03 Microsoft Corporation Organizing resources into collections to facilitate more efficient and reliable resource access
US20060090003A1 (en) * 2004-10-22 2006-04-27 Microsoft Corporation Rendezvousing resource requests with corresponding resources
US7958262B2 (en) * 2004-10-22 2011-06-07 Microsoft Corporation Allocating and reclaiming resources within a rendezvous federation
US8095601B2 (en) 2004-10-22 2012-01-10 Microsoft Corporation Inter-proximity communication within a rendezvous federation
US8014321B2 (en) * 2004-10-22 2011-09-06 Microsoft Corporation Rendezvousing resource requests with corresponding resources
US8392515B2 (en) * 2004-10-22 2013-03-05 Microsoft Corporation Subfederation creation and maintenance in a federation infrastructure
US7694167B2 (en) * 2004-10-22 2010-04-06 Microsoft Corporation Maintaining routing consistency within a rendezvous federation
US8549180B2 (en) * 2004-10-22 2013-10-01 Microsoft Corporation Optimizing access to federation infrastructure-based resources
US7730220B2 (en) 2004-10-22 2010-06-01 Microsoft Corporation Broadcasting communication within a rendezvous federation
US20110082928A1 (en) 2004-10-22 2011-04-07 Microsoft Corporation Maintaining consistency within a federation infrastructure
CA2586763C (en) 2004-11-08 2013-12-17 Cluster Resources, Inc. System and method of providing system jobs within a compute environment
US8863143B2 (en) 2006-03-16 2014-10-14 Adaptive Computing Enterprises, Inc. System and method for managing a hybrid compute environment
US9231886B2 (en) 2005-03-16 2016-01-05 Adaptive Computing Enterprises, Inc. Simple integration of an on-demand compute environment
ES2614751T3 (es) 2005-04-07 2017-06-01 Iii Holdings 12, Llc Acceso bajo demanda a recursos informáticos
US7881223B2 (en) * 2006-03-31 2011-02-01 Panasonic Corporation Method for on demand distributed hash table update
US7779175B2 (en) * 2007-05-04 2010-08-17 Blackwave, Inc. System and method for rendezvous in a communications network
US8041773B2 (en) 2007-09-24 2011-10-18 The Research Foundation Of State University Of New York Automatic clustering for self-organizing grids
US9176779B2 (en) * 2008-07-10 2015-11-03 Juniper Networks, Inc. Data access in distributed systems
US8191070B2 (en) 2008-07-10 2012-05-29 Juniper Networks, Inc. Dynamic resource allocation
US8650270B2 (en) * 2008-07-10 2014-02-11 Juniper Networks, Inc. Distributed computing with multiple coordinated component collections
US8099402B2 (en) * 2008-07-10 2012-01-17 Juniper Networks, Inc. Distributed data storage and access systems
US8364710B2 (en) * 2008-07-10 2013-01-29 Juniper Networks, Inc. Model-based resource allocation
US20100011091A1 (en) * 2008-07-10 2010-01-14 Blackwave Inc. Network Storage
US8706900B2 (en) * 2008-07-10 2014-04-22 Juniper Networks, Inc. Dynamic storage resources
US8954976B2 (en) * 2008-07-10 2015-02-10 Juniper Networks, Inc. Data storage in distributed resources of a network based on provisioning attributes
US8887166B2 (en) * 2008-07-10 2014-11-11 Juniper Networks, Inc. Resource allocation and modification using access patterns
US9066141B2 (en) * 2009-01-21 2015-06-23 Juniper Networks, Inc. Resource allocation and modification using statistical analysis
US11720290B2 (en) 2009-10-30 2023-08-08 Iii Holdings 2, Llc Memcached server functionality in a cluster of data processing nodes
US10877695B2 (en) 2009-10-30 2020-12-29 Iii Holdings 2, Llc Memcached server functionality in a cluster of data processing nodes
US20110153737A1 (en) * 2009-12-17 2011-06-23 Chu Thomas P Method and apparatus for decomposing a peer-to-peer network and using a decomposed peer-to-peer network
US10084856B2 (en) 2009-12-17 2018-09-25 Wsou Investments, Llc Method and apparatus for locating services within peer-to-peer networks
CN102117278B (zh) * 2009-12-31 2016-10-05 联想(北京)有限公司 链表的创建方法及系统、数据的查找方法及系统
CN103200209B (zh) * 2012-01-06 2018-05-25 华为技术有限公司 成员资源的访问方法、群组服务器和成员设备
RU2012136239A (ru) * 2012-08-24 2014-03-27 Олег Александрович Серебренников Способ поиска информации в сети интернет
US9298719B2 (en) * 2012-09-04 2016-03-29 International Business Machines Corporation On-demand caching in a WAN separated distributed file system or clustered file system cache
JP6307746B2 (ja) * 2014-03-18 2018-04-11 株式会社リコー 宛先管理システム、通信システム、宛先管理方法、及びプログラム
US9338071B2 (en) 2014-10-08 2016-05-10 Google Inc. Locale profile for a fabric network
WO2017091820A1 (en) * 2015-11-25 2017-06-01 Volta Networks Network routing systems and techniques
US11108854B2 (en) * 2018-07-25 2021-08-31 International Business Machines Corporation Peer-to-peer network for internet of things resource allocation operation
US11895005B1 (en) * 2022-12-02 2024-02-06 Arista Networks, Inc. Network devices with hardware accelerated table updates

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004266796A (ja) * 2002-09-11 2004-09-24 Microsoft Corp 効率的な分散データ構造を備えた改良されたオーバレイネットワークを生成するシステムおよび方法
JP2005323346A (ja) * 2004-03-31 2005-11-17 Microsoft Corp ピアツーピアネットワークにおけるルーティング

Family Cites Families (123)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5689701A (en) 1994-12-14 1997-11-18 International Business Machines Corporation System and method for providing compatibility between distributed file system namespaces and operating system pathname syntax
US5745683A (en) 1995-07-05 1998-04-28 Sun Microsystems, Inc. System and method for allowing disparate naming service providers to dynamically join a naming federation
US5996075A (en) 1995-11-02 1999-11-30 Sun Microsystems, Inc. Method and apparatus for reliable disk fencing in a multicomputer system
US5831975A (en) 1996-04-04 1998-11-03 Lucent Technologies Inc. System and method for hierarchical multicast routing in ATM networks
US6574654B1 (en) * 1996-06-24 2003-06-03 Oracle Corporation Method and apparatus for lock caching
US6253292B1 (en) 1997-08-22 2001-06-26 Seong Tae Jhang Distributed shared memory multiprocessor system based on a unidirectional ring bus using a snooping scheme
US6178174B1 (en) 1997-08-26 2001-01-23 International Business Machines Corporation Optimistic, eager rendezvous transmission mode and combined rendezvous modes for message processing systems
US5999712A (en) 1997-10-21 1999-12-07 Sun Microsystems, Inc. Determining cluster membership in a distributed computer system
US6269452B1 (en) 1998-04-27 2001-07-31 Cisco Technology, Inc. System and method for fault recovery for a two line bi-directional ring network
US6456597B1 (en) * 1998-05-04 2002-09-24 Hewlett Packard Co. Discovery of unknown MAC addresses using load balancing switch protocols
US6279034B1 (en) 1998-06-03 2001-08-21 International Business Machines Corporation Distributed monitor timer service for use in a distributed computing environment
US7076507B1 (en) 1998-07-08 2006-07-11 Required Technologies, Inc. Value-instance-connectivity computer-implemented database
US6304556B1 (en) 1998-08-24 2001-10-16 Cornell Research Foundation, Inc. Routing and mobility management protocols for ad-hoc networks
US7430171B2 (en) * 1998-11-19 2008-09-30 Broadcom Corporation Fibre channel arbitrated loop bufferless switch circuitry to increase bandwidth without significant increase in cost
US6480473B1 (en) 1998-12-29 2002-11-12 Koninklijke Philips Electronics N.V. Verification of active nodes in an open network
US6115804A (en) 1999-02-10 2000-09-05 International Business Machines Corporation Non-uniform memory access (NUMA) data processing system that permits multiple caches to concurrently hold data in a recent state from which data can be sourced by shared intervention
US6839348B2 (en) 1999-04-30 2005-01-04 Cisco Technology, Inc. System and method for distributing multicasts in virtual local area networks
US6546415B1 (en) 1999-05-14 2003-04-08 Lucent Technologies Inc. Network management system using a distributed namespace
AU5161900A (en) * 1999-05-28 2000-12-18 Afx Technology Group International, Inc. Wireless transceiver network employing node-to-node data messaging
US6850987B1 (en) 1999-06-01 2005-02-01 Fastforward Networks, Inc. System for multipoint infrastructure transport in a computer network
US6411967B1 (en) 1999-06-18 2002-06-25 Reliable Network Solutions Distributed processing system with replicated management information base
US7463648B1 (en) 1999-08-23 2008-12-09 Sun Microsystems, Inc. Approach for allocating resources to an apparatus based on optional resource requirements
US7117273B1 (en) * 2000-01-25 2006-10-03 Cisco Technology, Inc. Methods and apparatus for maintaining a map of node relationships for a network
US6269085B1 (en) * 2000-02-03 2001-07-31 Sun Microsystems, Inc. Method and apparatus for hierarchical discovery and pruning of slow members of a multicast group
US6917985B2 (en) 2000-03-10 2005-07-12 The Regents Of The University Of California Core assisted mesh protocol for multicast routing in ad-hoc Networks
EP1139602A1 (en) 2000-03-31 2001-10-04 Lucent Technologies Inc. Method and device for multicasting
US6553377B1 (en) 2000-03-31 2003-04-22 Network Associates, Inc. System and process for maintaining a plurality of remote security applications using a modular framework in a distributed computing environment
US7123620B1 (en) * 2000-04-25 2006-10-17 Cisco Technology, Inc. Apparatus and method for scalable and dynamic traffic engineering in a data communication network
US6775703B1 (en) 2000-05-01 2004-08-10 International Business Machines Corporation Lease based safety protocol for distributed system with multiple networks
AU2001268674B2 (en) 2000-06-22 2007-04-26 Microsoft Technology Licensing, Llc Distributed computing services platform
US6947963B1 (en) 2000-06-28 2005-09-20 Pluris, Inc Methods and apparatus for synchronizing and propagating distributed routing databases
US7139270B1 (en) * 2000-08-22 2006-11-21 Lucent Technologies Inc. Systems and method for transporting multiple protocol formats in a lightwave communication network
US20020129086A1 (en) * 2000-08-31 2002-09-12 The Regents Of The University Of California Cluster-based aggregated switching technique (CAST) for routing data packets and information objects in computer networks
US7379994B2 (en) * 2000-10-26 2008-05-27 Metilinx Aggregate system resource analysis including correlation matrix and metric-based analysis
DE60142750D1 (de) * 2000-10-26 2010-09-16 British Telecomm Optimale routenplanung in handover-szenarien
US20020150094A1 (en) 2000-10-27 2002-10-17 Matthew Cheng Hierarchical level-based internet protocol multicasting
US6836756B1 (en) 2000-11-13 2004-12-28 Nortel Networks Limited Time simulation techniques to determine network availability
US6947434B2 (en) 2000-11-16 2005-09-20 Telefonaktiebolaget Lm Ericsson (Publ) Subgroup multicasting in a communications network
CA2326851A1 (en) * 2000-11-24 2002-05-24 Redback Networks Systems Canada Inc. Policy change characterization method and apparatus
AU2002234258A1 (en) 2001-01-22 2002-07-30 Sun Microsystems, Inc. Peer-to-peer network computing platform
US7062563B1 (en) 2001-02-28 2006-06-13 Oracle International Corporation Method and system for implementing current user links
US6625604B2 (en) 2001-03-09 2003-09-23 Hewlett-Packard Development Company, L.P. Namespace service in a distributed file system using a database management system
US7085825B1 (en) 2001-03-26 2006-08-01 Freewebs Corp. Apparatus, method and system for improving application performance across a communications network
US7113536B2 (en) 2001-04-16 2006-09-26 Telefonaktiebolaget L M Ericsson (Publ) Rendezvous point interpiconet scheduling
US6928578B2 (en) 2001-05-10 2005-08-09 International Business Machines Corporation System, method, and computer program for selectable or programmable data consistency checking methodology
WO2003001377A2 (en) 2001-06-22 2003-01-03 Wonderware Corporation Installing supervisory process control and manufacturing software from a remote location and maintaining configuration data links in a run-time environment
US7181547B1 (en) 2001-06-28 2007-02-20 Fortinet, Inc. Identifying nodes in a ring network
GB2377140B (en) 2001-06-29 2005-01-19 Ibm Method and apparatus for recovery from faults in a loop network
US6922791B2 (en) 2001-08-09 2005-07-26 Dell Products L.P. Failover system and method for cluster environment
US7493363B2 (en) 2001-09-19 2009-02-17 Microsoft Corporation Peer-to-peer group management and method for maintaining peer-to-peer graphs
ITMI20012088A1 (it) 2001-10-10 2003-04-10 Cit Alcatel Metodo per propagare l'informazione di guasto in una rete rpr e relativo tipo di pacchetto rpr
US6983397B2 (en) 2001-11-29 2006-01-03 International Business Machines Corporation Method, system, and program for error handling in a dual adaptor system where one adaptor is a master
US7426573B2 (en) 2001-12-12 2008-09-16 Alcatel Lucent System and method for providing service availability data for a communication network
US7076796B2 (en) 2002-01-04 2006-07-11 Reeves Drue A Virtual media from a directory service
US7231463B2 (en) 2002-01-04 2007-06-12 Intel Corporation Multi-level ring peer-to-peer network structure for peer and object discovery
US20030145086A1 (en) 2002-01-29 2003-07-31 O'reilly James Scalable network-attached storage system
JP3937855B2 (ja) 2002-02-06 2007-06-27 日本電気株式会社 マルチリング制御方法およびそれを用いるノード並びに制御プログラム
CN1177436C (zh) 2002-02-09 2004-11-24 华为技术有限公司 移动网络中多播用户的管理方法
US6779093B1 (en) 2002-02-15 2004-08-17 Veritas Operating Corporation Control facility for processing in-band control messages during data replication
US7043550B2 (en) 2002-02-15 2006-05-09 International Business Machines Corporation Method for controlling group membership in a distributed multinode data processing system to assure mutually symmetric liveness status indications
US7617289B2 (en) * 2002-02-22 2009-11-10 Bea Systems, Inc. System and method for using a data replication service to manage a configuration repository
US7254634B1 (en) * 2002-03-08 2007-08-07 Akamai Technologies, Inc. Managing web tier session state objects in a content delivery network (CDN)
US7039719B2 (en) 2002-03-21 2006-05-02 Hewlett-Packard Development Company, L.P. Distributed system with an efficient atomic broadcast mechanism
US7512649B2 (en) * 2002-03-22 2009-03-31 Sun Microsytems, Inc. Distributed identities
US7103884B2 (en) * 2002-03-27 2006-09-05 Lucent Technologies Inc. Method for maintaining consistency and performing recovery in a replicated data storage system
US7290262B2 (en) 2002-05-21 2007-10-30 International Business Machine Corporation Method and apparatus for dynamically determining information for deploying a web service
EP1394999A1 (en) 2002-08-07 2004-03-03 Infineon Technologies AG Method for routing of data packets and routing apparatus
US7849140B2 (en) 2002-08-29 2010-12-07 Oracle America, Inc. Peer-to-peer email messaging
US7239605B2 (en) 2002-09-23 2007-07-03 Sun Microsystems, Inc. Item and method for performing a cluster topology self-healing process in a distributed data system cluster
US7200657B2 (en) 2002-10-01 2007-04-03 International Business Machines Corporation Autonomic provisioning of network-accessible service behaviors within a federated grid infrastructure
US6909721B2 (en) 2002-10-31 2005-06-21 Nokia Corporation Device detection and service discovery system and method for a mobile ad hoc communications network
US7289520B2 (en) 2002-11-20 2007-10-30 Hewlett-Packard Development Company, L.P. Method, apparatus, and system for expressway routing among peers
US6850487B2 (en) 2002-12-05 2005-02-01 The Regents Of The University Of California Method and apparatus for guaranteeing a failure-recovery time in a wavelength-division multiplexing network
EP1515495B1 (en) 2002-12-11 2008-04-02 Nippon Telegraph and Telephone Corporation Method and device for multicast communication path calculation
US7584298B2 (en) * 2002-12-13 2009-09-01 Internap Network Services Corporation Topology aware route control
US7404006B1 (en) 2002-12-20 2008-07-22 Symantec Operating Corporation Publishing a network address in a computer network
US7480708B2 (en) 2002-12-23 2009-01-20 Sap Ag Method and computer program product for managing data consistency
US7137018B2 (en) * 2002-12-31 2006-11-14 Intel Corporation Active state link power management
US7747731B2 (en) 2003-03-27 2010-06-29 Nokia Corporation Minimizing message processing latency in a communication network
US7120824B2 (en) 2003-05-09 2006-10-10 International Business Machines Corporation Method, apparatus and program storage device for maintaining data consistency and cache coherency during communications failures between nodes in a remote mirror pair
US6988173B2 (en) 2003-05-12 2006-01-17 International Business Machines Corporation Bus protocol for a switchless distributed shared memory computer system
US7426637B2 (en) * 2003-05-21 2008-09-16 Music Public Broadcasting, Inc. Method and system for controlled media sharing in a network
US7032089B1 (en) 2003-06-09 2006-04-18 Veritas Operating Corporation Replica synchronization using copy-on-read technique
EP1494394A1 (en) 2003-06-30 2005-01-05 Sony International (Europe) GmbH Distance-aware service mechanism for determining the availability of remote services in wireless personal area networks
US7334062B1 (en) 2003-07-22 2008-02-19 Symantec Operating Corporation Technique to monitor application behavior and tune replication performance
US20050031119A1 (en) 2003-08-04 2005-02-10 Yuying Ding Method and communications device for secure group communication
US7680152B2 (en) 2003-08-07 2010-03-16 Robert Bosch Gmbh Method for establishing a user of a data network as a pilot master
US20050050320A1 (en) 2003-09-02 2005-03-03 Microsoft Corporation Branding framework
US20050091399A1 (en) 2003-09-30 2005-04-28 Candan Kasim S. Resource-aware adaptive multicasting in a shared proxy overlay network
US7289501B2 (en) 2003-11-06 2007-10-30 Teknovus, Inc. Method and apparatus for bandwidth-efficient multicast in ethernet passive optical networks
US20050108481A1 (en) 2003-11-17 2005-05-19 Iyengar Arun K. System and method for achieving strong data consistency
US20050111352A1 (en) 2003-11-21 2005-05-26 Boon Ho Method and system for monitoring a network containing routers using a backup routing protocol
US7243089B2 (en) 2003-11-25 2007-07-10 International Business Machines Corporation System, method, and service for federating and optionally migrating a local file system into a distributed file system while preserving local access to existing data
KR100576935B1 (ko) 2003-12-22 2006-05-10 한국전자통신연구원 온톨로지 기반의 애드혹 서비스 검색 시스템 및 방법
US7420954B2 (en) 2004-01-13 2008-09-02 General Motors Corporation Efficient lightweight information dissemination algorithm for mobile wireless ad hoc networks
US7313565B2 (en) 2004-02-19 2007-12-25 Microsoft Corporation Data overlay, self-organized metadata overlay, and associated methods
US20050220106A1 (en) 2004-03-31 2005-10-06 Pierre Guillaume Raverdy Inter-wireless interactions using user discovery for ad-hoc environments
US7478263B1 (en) * 2004-06-01 2009-01-13 Network Appliance, Inc. System and method for establishing bi-directional failover in a two node cluster
US7512064B2 (en) 2004-06-15 2009-03-31 Cisco Technology, Inc. Avoiding micro-loop upon failure of fast reroute protected links
US7805407B1 (en) 2004-06-16 2010-09-28 Oracle America, Inc. System and method for dynamic configuration of replicated database servers
GB0416074D0 (en) 2004-07-17 2004-08-18 Ibm Controlling data consistency guarantees in storage apparatus
US7715396B2 (en) * 2004-08-19 2010-05-11 Microsoft Corporation Network routing
US7613703B2 (en) 2004-09-30 2009-11-03 Microsoft Corporation Organizing resources into collections to facilitate more efficient and reliable resource access
US8549180B2 (en) * 2004-10-22 2013-10-01 Microsoft Corporation Optimizing access to federation infrastructure-based resources
US7694167B2 (en) 2004-10-22 2010-04-06 Microsoft Corporation Maintaining routing consistency within a rendezvous federation
US20080288659A1 (en) 2006-11-09 2008-11-20 Microsoft Corporation Maintaining consistency within a federation infrastructure
US8392515B2 (en) 2004-10-22 2013-03-05 Microsoft Corporation Subfederation creation and maintenance in a federation infrastructure
US8014321B2 (en) * 2004-10-22 2011-09-06 Microsoft Corporation Rendezvousing resource requests with corresponding resources
US8095601B2 (en) 2004-10-22 2012-01-10 Microsoft Corporation Inter-proximity communication within a rendezvous federation
US7730220B2 (en) 2004-10-22 2010-06-01 Microsoft Corporation Broadcasting communication within a rendezvous federation
US8095600B2 (en) 2004-10-22 2012-01-10 Microsoft Corporation Inter-proximity communication within a rendezvous federation
US20060090003A1 (en) 2004-10-22 2006-04-27 Microsoft Corporation Rendezvousing resource requests with corresponding resources
US20110082928A1 (en) 2004-10-22 2011-04-07 Microsoft Corporation Maintaining consistency within a federation infrastructure
US7958262B2 (en) 2004-10-22 2011-06-07 Microsoft Corporation Allocating and reclaiming resources within a rendezvous federation
US20060155781A1 (en) 2005-01-10 2006-07-13 Microsoft Corporation Systems and methods for structuring distributed fault-tolerant systems
US7467265B1 (en) * 2005-06-30 2008-12-16 Symantec Operating Corporation System and method for block conflict resolution within consistency interval marker based replication
US7827262B2 (en) * 2005-07-14 2010-11-02 Cisco Technology, Inc. Approach for managing state information by a group of servers that services a group of clients
US7739239B1 (en) * 2005-12-29 2010-06-15 Amazon Technologies, Inc. Distributed storage system with support for distinct storage classes
JP4727437B2 (ja) 2006-02-03 2011-07-20 株式会社日立製作所 データベースを有するストレージシステムの記憶制御方法
US7673069B2 (en) 2006-02-24 2010-03-02 Microsoft Corporation Strong routing consistency protocol in structured peer-to-peer overlays
US20070214194A1 (en) 2006-03-07 2007-09-13 James Reuter Consistency methods and systems
US20080069082A1 (en) 2006-09-19 2008-03-20 Bea Systems, Inc. Service router for use with a service-oriented architecture environment
TWI390869B (zh) * 2008-04-24 2013-03-21 Univ Nat Taiwan 網路資源分配系統及方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004266796A (ja) * 2002-09-11 2004-09-24 Microsoft Corp 効率的な分散データ構造を備えた改良されたオーバレイネットワークを生成するシステムおよび方法
JP2005323346A (ja) * 2004-03-31 2005-11-17 Microsoft Corp ピアツーピアネットワークにおけるルーティング

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009543188A (ja) * 2006-06-30 2009-12-03 マイクロソフト コーポレーション ランデブーフェデレーション内の近傍域間通信
JP2010509871A (ja) * 2006-11-09 2010-03-25 マイクロソフト コーポレーション フェデレーションインフラストラクチャ内の一貫性
JP2014116968A (ja) * 2006-11-09 2014-06-26 Microsoft Corp フェデレーションインフラストラクチャ内の一貫性
JP2008206160A (ja) * 2007-02-21 2008-09-04 Avaya Canada Corp ピアツーピア通信システムおよび方法
JP2010526360A (ja) * 2007-05-04 2010-07-29 テレフオンアクチーボラゲット エル エム エリクソン(パブル) 携帯機器ファイル共有方法および装置
US10904635B2 (en) 2015-11-04 2021-01-26 Samsung Electronics Co., Ltd Method and device for providing data in multimedia system

Also Published As

Publication number Publication date
US20060087990A1 (en) 2006-04-27
US20110238841A1 (en) 2011-09-29
ATE553571T1 (de) 2012-04-15
MXPA05011314A (es) 2006-04-26
EP1650911A3 (en) 2006-05-31
RU2005132569A (ru) 2007-04-27
RU2400806C2 (ru) 2010-09-27
KR20060049121A (ko) 2006-05-18
JP4726604B2 (ja) 2011-07-20
EP1650911B1 (en) 2012-04-11
EP1650911A2 (en) 2006-04-26
AU2005220253A1 (en) 2006-05-11
KR101201072B1 (ko) 2012-11-14
US8014321B2 (en) 2011-09-06
BRPI0504513A (pt) 2006-06-27
AU2005220253B2 (en) 2010-07-01
US8417813B2 (en) 2013-04-09
CA2523897A1 (en) 2006-04-22
US20110235551A1 (en) 2011-09-29

Similar Documents

Publication Publication Date Title
JP4726604B2 (ja) リソース要求を対応するリソースに会合させる方法およびシステム
US20100046399A1 (en) Rendezvousing resource requests with corresponding resources
RU2433461C2 (ru) Взаимодействие между соседствами в рамках объединения по механизму рандеву
US8095601B2 (en) Inter-proximity communication within a rendezvous federation
US7730220B2 (en) Broadcasting communication within a rendezvous federation
US7694167B2 (en) Maintaining routing consistency within a rendezvous federation
JP2009543447A5 (ja)

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081021

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20081021

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20101006

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101112

A524 Written submission of copy of amendment under article 19 pct

Free format text: JAPANESE INTERMEDIATE CODE: A524

Effective date: 20110214

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110405

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110412

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140422

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees