JP2005323346A - ピアツーピアネットワークにおけるルーティング - Google Patents

ピアツーピアネットワークにおけるルーティング Download PDF

Info

Publication number
JP2005323346A
JP2005323346A JP2005094739A JP2005094739A JP2005323346A JP 2005323346 A JP2005323346 A JP 2005323346A JP 2005094739 A JP2005094739 A JP 2005094739A JP 2005094739 A JP2005094739 A JP 2005094739A JP 2005323346 A JP2005323346 A JP 2005323346A
Authority
JP
Japan
Prior art keywords
node
peer
nodes
ssrt
computer
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
JP2005094739A
Other languages
English (en)
Other versions
JP4806203B2 (ja
Inventor
Qiao Lian
リャン カオ
Yu Chen
チェン ユ
Zheng Zhang
ジャン ジェン
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
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2005323346A publication Critical patent/JP2005323346A/ja
Application granted granted Critical
Publication of JP4806203B2 publication Critical patent/JP4806203B2/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
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1044Group management mechanisms 
    • H04L67/1048Departure or maintenance mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Mathematical Physics (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Computer And Data Communications (AREA)
  • Small-Scale Networks (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

【課題】 ピアツーピアネットワークにおけるルーティングを改良するための方法を提供すること。
【解決手段】 ピアツーピアネットワークにおけるルーティングについて説明する。本発明の一実施形態において、本発明の方法は、ピアツーピアネットワークの複数のノードの1つで、ピアツーピアネットワークの別のノードからの、ピアツーピアネットワーク106におけるメンバーシップ変更の通知を受信するステップを含む。変更を知らせるレポートがブロードキャストされる。レポートは、上記1つのノードに含まれるルーティングテーブル内で参照される各ノードによって受信される。
【選択図】 図1

Description

本発明は、全体としてはピアツーピアネットワークに関し、より詳細には、ピアツーピアネットワークにおけるルーティングに関する。
ピアツーピアネットワークは、適応性、自己組織化、負荷平衡、耐障害性、低コスト、高可用性、拡張性、および大量の共用リソースを提供する能力など、多くの望ましい特徴のため、その人気を高め続けている。例えば、ピアツーピアネットワークは、大量のデータを共用するための人気の高い方法として出現し、ピアはダウンロード可能なように参照される歌を、ピアツーピアネットワークの別のピアからダウンロードすることなどができる。
しかし、ピアツーピアネットワークを実現するために利用される従来のアーキテクチャは、システムを形成するメンバー、すなわちノードの数の絶えざる増加に対処していない。例えば、現行例のピアツーピアネットワークは、2億3千万超のダウンロードを4百万超のユーザに提供している。しかし、メンバー数は増加を続け、1兆を超えるノードを有する超大規模システムがいずれ出現することが予想される。したがって、現行のアーキテクチャは、多数のノードを有するシステムには対処できたとしても、超大規模システムで利用された場合に、まだ力不足であると判明するかもしれない。
ピアツーピアネットワークにおいて特定のリソースを見つけるため、例えば、ネットワークの各ノードは、ネットワークの1つまたは複数の他のノードを参照して、その特定のリソース、例えば、特定のデータ項目を有するノードを見つけることができる。したがって、特定の項目が見つかるまで、リクエストを1つのノードから別のノードへと転送していく際に、一連の「ホップ(hop)」を利用することができる。ホップの回数が増加するにつれて、ノードのハードウェアリソースおよびソフトウェアリソースの使用、ならびにシステムのネットワークリソースの使用も増加する。したがって、ホップの回数が増加すると、その結果、システムリソースの使用が非効率になるとともに、特定の項目を見つけるのに利用される時間も増加する。
I. Clarke, B. Wiley, O. Sanberg, and T. Hong, "Freenet: A Distributed Anonymous Information Storage and Retrieval System," Proc. Int. Workshop on Design Issues in Anonymity and Unobservability, Springer Verlag, LNCS 2009, 2001 I. Stoica, R. Morris, D. Karger, M. F. Kaashoek, H. Balakrishnan, "Chord A Scalable Peer-to-peer Lookup Service for Internet Application," Proc. ACM SIGCOMM'01, San Diego, California, USA, 2001 S. Ratnasamy, P. Francis, M. Handley, R. Karp, and S. Shenker, "A Scalable Content-Addressable Network," Proc. ACM SIGCOMM'01, San Diego, California, USA, 2001 A. Rowstron and P. Druschel, "Pastry: Scalable, Descentralized Object Location and Routing for Large-Scale Peer-to-Peer Systems," IFIP/ACM Int. Conf. Distributed Systems Platforms (Middleware), 2001 B. Y. Zhao, J. Kubiatowicz, and A. D. Joseph, "Tapestry: An Infrastructure for Fault-tolerant Wide-Area Location and Routing," Technical Report No. UCB/CSD-01-1141, Univ. of California, Berkeley
したがって、ピアツーピアネットワークにおける改良されたルーティングが引き続き必要とされている。
ピアツーピアネットワークにおいてルーティングテーブルを利用してメッセージ(例えば、特定のリソースを求めるリクエストや、そのリクエストに対する応答など)を転送するルーティングについて説明する。ルーティングテーブルはブロードキャストによって更新され、ピアツーピアネットワーク内のノードを参照するルーティングテーブル内のエントリを更新することができる。一実装では、各ノードのルーティングテーブルをメンテナンスするのに利用されるメンテナンス予算は、各セグメント用に稠密なルーティングテーブルエントリ(dense routing table entry)を作成することによって、ピアツーピアネットワークのリソース空間の複数のセグメントに分散される。その結果、ルーティングテーブルのメンテナンスのための全体的なメンテナンス予算を削減することができ、ピアツーピアネットワークのハードウェア、ソフトウェア、およびネットワークリソースを解放して、望ましいメッセージルーティング機能を提供する。
一実装では、本発明の方法は、ピアツーピアネットワーク内の複数のノードのうち1つのノードにおいて、ピアツーピアネットワーク内の別のノードからの、ピアツーピアネットワークにおけるメンバーシップ変更(a change in membership)の通知(an indication)を受信するステップを含む。変更を記述するレポートがブロードキャストされる。レポートは、上記1つのノードに含まれるルーティングテーブル内で参照される各ノードによって受信される。
別の実装では、本発明の方法は、ピアツーピアネットワーク内に含まれるノードにおいて、ピアツーピアネットワーク内で通信を行うためにノードが利用可能なリソースを判定するステップを含む。ピアツーピアネットワーク内でリクエストを転送するため、上記決定に基づいて、ノード上でルーティングテーブルが形成される。
さらに別の実装では、本発明の方法は、ピアツーピアネットワークの複数のノードのうち1つのノードで反復ブルームフィルタ(iterative bloom filter)を利用して、ルーティングテーブルのエントリを表すデータを圧縮するステップを含む。圧縮データを別のノードに送るために通信が行われる。
本開示および図面では、同じ構成要素および機能を参照する際は同じ番号を使用する。
概要(Overview)
ピアツーピアネットワークにおけるルーティングについて説明する。上述したように、利用する転送ノードを少なくして、全体的な帯域消費(bandwidth consumption)を減らすことができるように、ホップ数は少ないほうが望ましい。超大規模システム(すなわち、1兆ノード)においてリソースを見つけるために利用されるホップの回数を減少させながら、低くて管理可能なノード当たりのメンテナンス予算のルーティング技法について説明する。
ピアツーピアネットワークにおいてノードによって他のノードを参照するために、ルーティングテーブルが利用される。しかし、超大規模システムにおいてルーティングテーブルを従来通りにメンテナンスすると、許容量を超える大量のハードウェア、ソフトウェア、およびネットワークリソースが利用されることになり得る。例えば、従来のメンテナンス技法は、リクエストを送信し、そのリクエストに対する応答を受信して、テーブルによって参照されるノードが現在もシステムで利用可能かどうかを判定することによって、ルーティングテーブルのエントリを更新するなど、プロービング(probing)を利用する。各プロービングで利用されるハードウェア、ソフトウェア、およびネットワークリソースの量は比較的少量であるが、個々のリソース利用量をシステム全体で累計すると、膨大な量になり得る。したがって、超大規模システムにおいて、これらの従来のメンテナンス技法を使用すると、機能面で著しい損失を招くことになりかねない。本明細書で説明するメンテナンス技法では、各セグメント用に稠密なルーティングテーブルエントリを作成することによって、ルーティングテーブルをメンテナンスするのに利用されるメンテナンス予算をピアツーピアネットワークのリソース空間の複数のセグメントに分散させることができる。その結果、ルーティングテーブルのメンテナンスにかかる全体的なメンテナンス予算を削減でき、ピアツーピアネットワークのハードウェア、ソフトウェア、およびネットワークリソースを解放して、リクエストおよびリクエストに対する応答の転送に関する望ましい機能を提供するために利用することができる。このように、超大規模システムにおいて利用されるホップの回数を少なくしながら、メンテナンス予算が許容限度を超えないようにして、ルーティングテーブルをメンテナンスすることができる。ルーティングテーブルの稠密なルーティングエントリおよびメンテナンスについては、図3に関連させてさらに説明する。
さらに、これまで利用されてきたO(logN)ルーティング技法は、現行のシステムでは成功しているが、従来の技法の現在容認されている小さな底(すなわち、O(logN)のパラメータb)は、超大規模システム用にはもはや十分とはいえない。例えば、システム内のノード数「N」が1兆になると、従来のO(logN)ルーティング技法を利用した場合、最悪時のホップ回数は20になる(bが4で、エントリが約60の場合)。「ルーティングパフォーマンス(Routing Performance)」セクションでより詳細に説明される実施形態では、1兆ノードを有するシステムにおいて本明細書で説明するルーティング技法を利用した場合の平均ルーティングは、5.5ホップまで減少する。
例示的な環境(Exemplary Environment)
図1は、ピアツーピアネットワークを提供するように構成されたシステム100の例示的な実施形態の図である。システム100は、複数のコンピューティングデバイス104(1)〜104(B)にネットワーク106を介して通信可能に結合される、複数のクライアント102(a)を含む(「a」は1から「A」までの任意の整数とする)。この実施形態では、複数のクライアント102(a)と複数のコンピューティングデバイス104(1)〜104(B)はそれぞれ、ネットワーク106のノードを表す。ノードは、データの送信先および/または送信元である他のノードおよび/またはエンドポイントにデータを供給する再分配ポイントなど、データを送信するための接続ポイントと考えることができる。
複数のクライアント102(a)と複数のコンピューティングデバイス104(1)〜104(B)は、様々な方法で構成することができる。例えば、クライアント102(a)とコンピューティングデバイス104(1)〜104(B)は、ワイヤレスフォン(例えば、コンピューティングデバイス104(1))、タブレットコンピュータ(例えば、コンピューティングデバイス104(2))、ノートブックコンピュータ(例えば、コンピューティングデバイス104(3))、デスクトップコンピュータ(例えば、コンピューティングデバイス104(4))、サーバ(例えば、コンピューティングデバイス104(5)〜104(6))、メインフレームコンピュータ(例えば、コンピューティングデバイス104(B))、ならびに移動局、ゲーム機器、およびセットトップボックスなどのその他のコンピューティングデバイスなど、ネットワーク106を介して通信可能なコンピュータとして構成することができる。例示的なコンピューティングデバイスについては、図10に関連させてさらに説明する。したがって、複数のクライアント102(a)とコンピューティングデバイス104(1)〜104(B)には、メモリリソースおよびプロセッサリソースを十分に備えたフルリソースデバイス(例えば、パーソナルコンピュータ、ハードディスクを備えたテレビ録画装置)から、限られたメモリリソースおよび/またはプロセッサリソースしか備えていない低リソースデバイス(例えば、従来のセットトップボックス)まで様々なものがあり得る。クライアント102(a)はまた、クライアントを操作する人間および/または操作主体に結びつけることもできる。言い換えると、クライアント102(a)は、ユーザおよび/またはマシンを含む論理クライアントとすることができる。
ネットワーク106は、ピアツーピアネットワークとして構成される。ピアツーピアネットワークは、ネットワーク106のノードが、各々のノード、すなわち、複数のクライアント102(a)および複数のコンピューティングデバイス104(1)〜104(B)に存在する共用リソースにアクセスすることを可能にする。従来から知られており、使用されてきたピアツーピアネットワークの例として、以下に示すネットワークがある。
・Freenet(例えば、非特許文献1参照)。
・Chord(例えば、非特許文献2参照)。
・CAN(例えば、非特許文献3参照)。
・Pastry(例えば、非特許文献4参照)。
・Tapestry(例えば、非特許文献5参照)。
ピアツーピアネットワークは、冗長性や耐障害性(fault tolerance)など様々な特徴を提供する。例えば、ピアツーピアネットワークに保存されたデータは、ピアツーピアネットワークのノードによって複製されながら徐々に拡散することができる。そのため、ピアツーピアネットワークでは、データが何重にも重複することがあり、データの信頼性および可用性を高めることができる。
データ、処理サイクル、およびデータストレージなど様々なリソースを、ピアツーピアネットワークを使用して交換することができる。したがって、ピアツーピアネットワークは、複数のクライアント102(a)と複数のコンピューティングデバイス104(1)〜104(B)の集団的能力を活用するために利用することができる。ピアツーピアは、各ノード、すなわち「メンバー(member)」が、別のメンバーと直接、かつ/または仲介コンピューティングデバイスを介して通信することができる通信モデルである。クライアント102(a)およびコンピューティングデバイス104(1)〜104(B)は、リクエストおよび応答などのメッセージを使用することによって、ネットワーク106を介して通信することができる。図1には7つのコンピューティングデバイス104(1)〜104(B)が示されているが、この環境で多種多様なコンピューティングデバイスを実施することができる。さらに、複数のクライアント102(a)も、ピアツーピアネットワークの「ピア(peers)」、すなわちメンバーとして構成することができる。
ネットワーク106は、クライアント102(a)と複数のコンピューティングデバイス104(1)〜104(B)の間でメッセージを転送するためのインタフェースとして動作する分散ハッシュテーブル(DHT:distributed hash table)108を含む。DHT108は、(キー,値)ペアを保存するハッシュテーブルデータ構造の分散形と考えることができる。例えば、キーをファイル名に対応させ、値をファイル内容に対応させることができる。ネットワーク106の各ピア、例えば、コンピューティングデバイス104(1)〜104(B)は、(キー,値)ペアのサブセットを保存する。したがって、DHT108は、対応するキーを担当するノードを見つけるのに利用される。言い換えると、DHT108は、クライアント102(a)と複数のコンピューティングデバイス104(1)〜104(B)の間でメッセージを転送するため、キーをノードにマッピングする。ファイル共用サービス、アーカイブ保存サービス(例えば、ウェブアーカイビング)、データベース、名前システム、サービスディスカバリ(service discovery)、アプリケーションレイヤマルチキャスト(application-layer multicast)、イベント通知、チャットサービス、ランデブーベース通信(rendezvous-based communication)、クエリとインデックスづけ、データの出版/購読など、様々なサービスをDHT108の「上に(on-top)」構築することができる。
DHT108は、複数のコンピューティングデバイス104(1)〜104(B)によって提供されるリソースを、複数のゾーン110(1)〜110(8)、すなわち「バケット(bucket)」に区分けする。複数のゾーン110(1)〜110(8)の各々は、システム100において共用されるリソース全体の一部と考えることができる。例えば、上述したように、DHT108は、リソースをキーに関連づける。DHT108を使用して複数のゾーン110(1)〜110(8)から特定の1ゾーンを見つけるため、キーはハッシュされる。複数のゾーン110(1)〜110(8)は、様々な方法で提供することができる。例えば、図1のイラストでは、ゾーン110(1)は、コンピューティングデバイス104(1)によって提供されるように描かれている。同様に、ゾーン110(2)、ゾーン110(3)、ゾーン110(4)、ゾーン110(5)、およびゾーン110(6)の各々は、それぞれ、コンピューティングデバイス104(2)、コンピューティングデバイス104(3)、コンピューティングデバイス104(4)、コンピューティングデバイス104(5)、およびコンピューティングデバイス104(6)によって提供される。さらに、コンピューティングデバイスは、2以上のゾーンを提供することができ、図1のイラストでは、ゾーン110(7)およびゾーン110(8)が、コンピューティングデバイス104(B)によって提供されるように描かれている。
DHT108は、リーフセット(leafset)112、フィンガテーブル(finger table)114、およびソフトステートルーティングテーブル(SSRT:soft-state routing table)116を含む3層アーキテクチャを利用するように示されている。リーフセット112は、キー空間(key space)の完全性(integrity)を保証するために利用される。例えば、リーフセット112は、リソース空間およびノードの応答空間を上述したように1つまたは複数のゾーン110(1)〜110(8)に分割するため、整合的なハッシングを利用する。
中間層であるフィンガテーブル114は、O(logN)プレフィックスルーティングアルゴリズム(prefix routing algorithm)(Nはノードの総数)など、プレフィックスベースのルーティングアルゴリズムを実施するために利用される。例えば、各ノードは、システム100の他のノードを指し示すエントリであるフィンガを有するフィンガテーブル114を含むことができる。フィンガテーブル114のエントリは、システム100の「さらなる(further)」ノードを連続的に参照するため、対数関数に従うことができる。フィンガテーブル114のエントリは、対応するノードのIDの1ビットを反転させ、結果のキーを保持するノードを指し示すことによって構成することができる。プロービング機構(probing mechanism)を使用するなど、リーフセット112およびフィンガテーブル114を更新するために、定期的なビーコニング(beaconing)を利用することができる。したがって、リーフセット112およびフィンガテーブル114は、O(logN)パフォーマンスをDHT108に提供することができる。
SSRT116は、(例えば、ノードがシステム100に加入またはシステム100を離脱する場合の)チャーンレート(churn rate)μが小さい場合、システム100のメンバーであるノードの一覧を提供する。したがって、SSRT116は、所望のノードの所在を素早く見つけるために利用することができる。SSRT116は、適切な冗長性を有するブロードキャストグラフを形成するシステム100のすべてのノードのフィンガを利用することによって構成することができる。この説明におけるブロードキャストとは、発信者(originator)と呼ばれる1つの頂点(vertex)が、グラフのエッジに沿って一連の発信を行うことによって、その他のすべての頂点にデータを配布する、グラフ内でのデータの配布のことである。情報を受け取ると、他の頂点も発信者を助けてメッセージを配布する。ブロードキャストグラフは、ブロードキャストを“[logn]”時間単位で達成できるグラフである。
図2は、ピアツーピアネットワークの複数のノード202(x)(xは1から「X」までの任意の整数)をより詳細に示した、例示的な実施形態によるシステム200の図である。ノード202(x)は、図1のシステム100のノード、例えば、コンピューティングデバイス104(1)〜104(B)およびクライアント102(a)と同じあってもよく、異なっていてもよい。ノード202(x)は、リーフセット112(x)、フィンガテーブル114(x)、およびSSRT116(x)を有する対応するDHT108(x)を含むように示されているが、参照番号は、これらのテーブルが、特定のノード202(x)用のDHT108、リーフセット112、フィンガテーブル114、およびSSRT116であることが分かるように付されている。
ノード202(x)は、「加入(join)」または「離脱(leave)」イベントなど、メンバーシップ変更を知らせる1つまたは複数のイベントを個々のノードから受信することによって、リーフセット112(x)に属する他のノードのメンバーシップを監視することができる。ノード202(x)は、メンバーシップの変化を観察した場合、例えば、加入または離脱イベントなど、1つまたは複数のイベント204(c)をレポート206(x)に挿入する。レポート206(x)は、フィンガテーブル114(x)によって示されるノード202(x)の各フィンガを介して、事前定義されたブロードキャスト間隔で並列にブロードキャストされる。複数のノード202(x)は各々、ノードが観察したイベントと、システム200の他のノードから大量に送られてきたイベントから、ノード202(x)が通知済のイベントを差し引いたイベントを通知するレポートを作成するという同じ動作を実行する。したがって、信頼できるブロードキャストを高い伝播速度(平均でO(logN))で送り届けるための適切な冗長度(O(logN))を提供するフラッディングアルゴリズム(flooding algorithm)が提供される。
メンテナンスコストを規制するため、割当量(quota)を超過した場合、イベントを内部的にキュー208(x)にバッファすることができる。さらに、DHT108は、1つまたは複数のルールを使用することによって、堅牢性に適応的に対処することができる。例えば、SSRT116(x)のエントリが高品質であること(例えば、SSRT116(x)のエントリが、図1のシステム100の現在のメンバーシップを表すこと)を保証するため、特定のノードがシステム100を離脱したことを示す「離脱」イベントは、例えば、「加入」イベントなどの他のイベントより先に送出される。このように、システム100は、システムを離脱した特定のノードからのリソースが利用できなくなったときについて常にそのことを認識するようになっており、システム100の平衡を回復するのに利用される別のノードがシステム100に加入した場合は、その後で通知されるようになっている。システム平衡については「適応(Adaptation)」セクションでさらに説明する。
定常状態で、SSRT116(x)の有効エントリの数Mは、以下の式を解くことによって知ることができる。
Q=4μ・E・M・logN
ただし、Eはイベントのサイズとする。本発明の一実施形態では、イベントは34バイトであり、イベントタイプ、タイムスタンプ、IPアドレス、およびノードIDを示すデータを含む。式中の定数「4」は、送信時および受信時、ならびにセッション毎に1回の加入動作時および1回の離脱動作時に帯域コスト(bandwidth cost)が生じることから説明される。
したがって、DHT108(x)は、(例えば、イベントをレポートにまとめるなど)時間ドメインと(例えば、O(logN)のノードと対話するなど)空間ドメインとで行われる集約(aggregation)を大いに利用することができる。さらに、メンバーシップ変更を伝えるのにブロードキャストを利用することによって、フルクラスタ(full cluster)を維持したとしても、伝えるイベントが存在しない場合は、ネットワークにわずかのトラフィックしか発生せず、結果として、ネットワーク効率が向上する。
DHT
このセクションでは、超大規模システムの動的環境における、DHT108アーキテクチャの使用について説明する。DHT108は、bが非常に大きな(例えば、約4000に等しいb)O(logN)ルーティングの効果を提供し、各エントリの能動プロービングを必要としない。上述したように、DHT108のエントリを更新するために行われるプローブの送信および/またはプローブへの応答に要する帯域消費は少ないとしても、大量のプローブの送信および応答は、図1のシステム100の全体または部分にわたって集約された(aggregated)場合に、著しいオーバヘッドを招くことにもなり得る。さらに、ミスは検出するのにコストがかかり、例えば、ミスがあるとシステム内で所望のリソースを見つける際にでたらめなIPホップが生じるので、プロービング頻度を減らすことが望ましいとは限らない。
以下の実施形態では、Nを1兆に等しいとした場合の、b=4000のプレフィックスベースのルーティングのパフォーマンスが繰り返される。以下の説明では、ブロードキャストコストQを5kb/sとし、チャーンレートμを1/(3時間)と仮定する。これらのパラメータは、DHT108を利用して、サイズ4Kのフルクラスタを構築することを可能にする。本明細書で説明するルーティング技法が、様々なブロードキャストコストおよびチャーンレートに対応し得ることは明らかであろう。
このようなパフォーマンスを実現するのに利用されるルーティング技法の一例は、2つのコンポーネントを含む。第1のコンポーネントは、ブロードキャストコストの4分の1、すなわちQ/4を使用して、リソース空間全体の代わりに、サブ領域用のクロスバー(crossbar)を作成することに関する。第2のコンポーネントは、ルーティングを行うときに、4つのそのようなクロスバーを使用して、40ビットを循環させるためのメカニズムの設計に関する。これらのコンポーネントの各々について、以下のセクションで順番に説明する。
サブ領域クロスバーの作成(Building a Sub-Region Crossbar)
全リソース空間Tは、「i」を一定の整数として、t/2個の領域に分割することができる。例えば、各領域Mが平均約1千ノードを含むように、分割を行うことができる。任意のノードxについて、R(x)をxが属する領域とし、beamers(x)をRの範囲内にあるxのフィンガのサブセット、すなわち、領域R内の他のノードを指し示すxのフィンガのサブセットとする。したがって、同じRを共有するすべてのノードについて、対応するbeamersは、Rをカバーする極めて冗長度が高いブロードキャストグラフを集団で形成する。DHT108において同じブロードキャストプロトコルをbeamersを介して適用することによって、これらのノードの各々に、対応する領域Rをカバーする対応するSSRTを供給することができる。帯域コストは、4μ・E・M・logMとして計算することができる。したがって、この実施形態では、E=34B、μ=1/(3時間)とした場合、帯域コストは約1kb/sとなる。このように、第1のコンポーネントは、1ホップで最短の2を底とする10(shortest 10 base-2)のフィンガ範囲を解決する(resolve)ことのできるクラスタを構築するのにQ/4未満のコストを使用することにより達成される。基本的に、サブ領域クラスタは、1Kノードのリーフセットと見なすことができる。例えば、ルックアップキー(lookup key)がこの範囲にあるならば、所望のリソースを見つけるのに1ホップで十分である。
Rを様々な方法で推定することができる。例えば、各ノードは、対応するリーフセットの情報を使用して、平均ゾーンサイズ
Figure 2005323346
を計算することができる。次のノードは、
Figure 2005323346
より10ビット大きく領域Rを推定することができる。上述したように、beamersは、領域推定内のフィンガである。領域推定の外部にあるノードによって送信された加入イベント(join-events)をドロップすることによって、さらに境界を強化することができる。したがって、ノードのSSRTは、隣接領域からのエントリによって汚染されることはない。
図3は、ピアツーピアネットワークで実施されるシステムにおける複数のノードのSSRTを表す1次元論理キー空間300の図である。1次元論理キー空間300の第1の領域302は、図2の複数のノード202(x)のうちの第1のノードのSSRTによって表すことができ、1次元論理キー空間300の第2の領域304は、図2の複数のノード202(x)のうちの第2のノードのSSRTによって表すことができ、それ以降も同様である。図3に示す破線は、論理的な領域分割線を表す。したがって、図3に示すように、SSRTは、対応するノードの対応する領域をカバーするエントリによって占められる。
複数ブロックの解決(Resolving Multiple Blocks)
以下の説明では、各ノードのID長を160ビットとし、IDの10ビット長セグメントを「ブロック(block)」と呼ぶことにする。上述したように、IDは、ピアツーピアネットワークのノードのアドレスと考えることができる。b=4Kとするプレフィックスベースのルーティングは、一度に1ブロックずつ検索を解決する。この例に用いている1兆ノードを有するシステムでは、解決すべき10ビット長ブロックが全部で4つ存在する。
ルーティングは、送信先が最短の10フィンガによってカバーされる範囲に存在するようになるまで、フィンガを介して一度にアドレスの1ビットをマッチングすることによって、領域クラスタ内で続けられる。この時点で、SSRTは、1ホップでのリソースへのアクセスを達成する。効果的には、これらの最後の10フィンガは、このアクセスを伸ばすために、210のSSRTエントリに拡張することができる。言い換えると、他の先行ブロックに位置するフィンガは、同じプレフィックス範囲に含めるため、SSRTエントリに拡張される。
1兆ノードのシステムでは、各ノードは、平均40フィンガを有する。以下の説明では、基本リング(ring)を表すのに、Ringを使用する。さらに、以下の説明では、ノードのIDを、図4に示すようにアルファベットの名前をつけた10ビット長ブロックに分割する。10ビット長ブロックが示されているが、ブロックに異なるビット長を利用することもできる。例えば、各ブロックは、2以上のビット、5以上のビットなどを有することができる。
例えば、図4のブロックA402について考える。ブロックA402のSSRTエントリを作成するため、ID404を右方向に循環させて、ブロックA402’が第4ブロックにある新しいID406を取得する。各ノードは、Ringで表される別のリングに加わるのにID406を使用する。Ringは、独自のリーフセットとO(logN)を用い、Ringと同じ方法で作成される。それに加えて、サブ領域クラスタアルゴリズムが同じように適用される。したがって、ノードは、Ringにおいて1KサイズのSSRT408を獲得し、そのエントリは、IDが先頭の3ブロック(すなわち、N|O|P)を上記ノードと共有するが、第4ブロック、すなわちブロックA402’が異なるノードである。
ID404とID406の関係は、これらの4つのノードが順々に、IDの最後の3つのブロックを共有するが、RingのブロックAが異なるノードであることを意味する。したがって、ブロックAの2を底とする10(10 base-2)のフィンガを、210のSSRTエントリに拡張する作業が達成される。ブロックB、C、およびD(例えば、SSRT410)に対しても、同様の構成を実行することができる。各リングは、対応するブロックをカバーするSSRTエントリを作成するのに役立つ。
要するに、この例では、4つのリングが作成される。以下の説明では、ブロックAのSSRTをSSRTで表し、ブロックBのSSRTをSSRTで表し、その他も同様とする。最終的なSSRTは、4つのより小さなSSRT(例えば、SSRT、SSRT、SSRT、SSRT)の組み合わせであり、サイズは約4Kである。中間のホップを介した進行のためにできるだけ積極的にビットをマッチさせる、DHTを使用するルーティングが進行し得る。
ルーティング(Routing)
図5は、図1のシステム100の各ノードに配置されたSSRTテーブルを使用することによって実行されるルーティングを示した例示的な実施形態500である。特定のアドレス506を有するノードを見つけるために、ルックアップキー502が、SSRTと併せて利用される。前のセクションで述べたように、SSRT504は、レベルが変化する類似性を備えたアドレスを有するノードを参照するエントリを含む。
SSRT504は、例えば、個々のSSRT516、518、520、522エントリを有する複数の部分508、510、512、514から構成することができる。第1の部分508は、ブロックA524内で表すことができる異なるアドレスを有する各ノードを参照するSSRT516エントリを含む。第2の部分510は、アドレスブロックAについて互いにマッチするアドレスを有する各ノードを参照するSSRT518エントリを含む。しかし、第2の部分510は、ブロックB526内で表すことができるそれぞれ異なるアドレスを有する各ノードを参照する。言い換えると、SSRT518のすべてのエントリは、互いにマッチするブロックAをそれぞれ有するが、ブロックBは異なっている。同様に、第3の部分512は、互いにマッチするアドレスブロックAおよびBをそれぞれ有する各ノードを参照するSSRT520エントリを含む。しかし、第3の部分512は、ブロックC内で表すことができる異なるアドレスの各々を有する各ノードを参照する。したがって、SSRT520のすべてのエントリは、マッチするブロックAおよびBをそれぞれ有するが、ブロックCは異なっている。最後に、第4の部分514は、マッチングアドレスブロックA、B、およびCを有する各ノードを参照するSSRT522エントリを含む。しかし、第4の部分514は、ブロックD内で表すことができる異なるアドレスの1つを有する各ノードを参照する。したがって、SSRT522のすべてのエントリは、マッチするブロックA、B、およびCをそれぞれ有するが、ブロックDは異なっており、個々のノードへの「1ホップ(one hop)」ルーティングを提供する。このように、個々のノードによって維持される各SSRTは、ピアツーピアネットワークにおける効率的なルーティングを提供するため、類似アドレスを有するノードからなる異なる階層を表すことを可能にすることができる。
例えば、SSRT504は、ルックアップキー502を使用してSSRT504を調査することによって特定のリソースを見つけるために利用することができる。ルックアップキー502のブロックA524、B526、C528、およびD530が、SSRT504テーブルのSSRT522エントリ内に示される対応するブロックA、B、C、およびDとマッチするならば、リクエストを対応するソースノード506に直接、すなわち1ホップで転送するために、SSRT504を利用することができる。
別の例では、ルックアップキー502がSSRT504のブロックAおよびBとはマッチするが、ブロックCとはマッチしない場合、マッチングブロックA、B、およびCを有するノードを示す対応するノードにホップするため、ルックアップキー502はSSRTと比較される。対応するノードは、1ホップでソースノード506を見つけるために利用することができる第4の部分を有するSSRTを有することができる。ルックアップキーのどれだけがSSRT504のエントリとマッチするかに基づいて、第1および第2の部分508、510を使用して、同様の検索を実行することができる。したがって、各ノードは、超大規模システムのノードを素早く見つけるために利用することができるSSRTを含む。
図6は、図1のシステム100の各ノードに配置される図6のSSRTテーブルを使用することによって実行されるルーティングを示した例示的な実施形態600の図である。上で図4に関連させて述べたように、SSRTは、各ノードのIDを循環させることによって、ピアツーピアネットワークにおける各ノードのロケーションを参照する複数のリングから構成することができる。例えば、ring602は、複数のエントリを有するSSRT604を有することができる。この例では、SSRT604の各エントリは、(図6では「N|O|P」として示される)互いにマッチする最初の3ブロックを有する。SSRT604の第4のブロック「A」は、その第4のブロックについて対応するアドレスを有するシステム内の各ロケーションを表す。SSRT604のエントリを作成するため、ピアツーピアネットワークのノードのID、すなわちアドレスを「循環(rotated)」させる。例えば、アドレス606「110|…N|O|P」を循環608させて、SSRT604に含まれるID610「N|O|P|110…」を形成する。このように、超大規模システムにおいて所望のリソースを見つけるために実行されるホップ回数を減らすSSRTを構成することができる。
ルーティングパフォーマンス(Routing Performance)
上述した実施形態において、より高位のブロックにおけるルーティング解決は、送信先が最短の10フィンガによってカバーされる範囲内に存在する場合を除いて、各ブロックについて、1ホップより僅かに大きいホップ数が必要となる。例えば、図5に示すような1兆ノードのシステムについて考える。ノードxが検索を開始したとき、送信先キーkはランダムである。addr(k)をkのAブロック(すなわち、最高位の10ビット)とすると、addr(k)は、210の可能な値を有する。上述したように、1KのSSRT(x)エントリは、IDがID(x)の最後の3ブロックを共有するが、ブロックAが異なるノードである。ノードIDはランダムなので、SSRT(x)エントリのブロック「A」もaddr(k)の210の可能な値を含むことは保証されない。
上記の問題は、完全なリソース空間を約1千のビン(bins)に分割し、SSRT(x)のノードおよびx自体をそれらのビン内にランダムに落とされるボールと見なすことと等価である。ブロックAでの検索は、図6に示すように、addr(k)によって索引づけされるビンが空でない場合に限って、1ホップで解決することができる。同様に、空間が512のビンに分割され、addr(k)が空でないビンを指し示す場合、別のノードのSSRTを使用し始める前にフィンガテーブルの通常の「フィンガ(finger)」を使用して解決するためのさらなる1ホップを残して、最高位の9ビットをSSRT(x)を使用して解決することができる。
少なくともiビットが解決される確率をPとする。Pを計算するため、空間を2のビンに分割し、その空間内で210のボールを落下させる。したがって、1−Pは(1−2―i1024であり、言い換えると、ボールが見つからないビンをランダムに選ぶことができ、それは近似的にe−2^(10−i)とすることができるので、P=1−e−2^(10−i)となる。
この時点で、ホップの期待数を計算することができる。i≦9として、p=P−Pi+1とする。ここで、pはSSRTを使用して正確にiビットが解決される確率である。次式が成り立つことが分かる。
H=1・p+2・p+3・p
=1・(p−p10)+2・(p−p)+3・(p−p)…
=e−1+e−2+e−4
=0.52
したがって、ブロックA(1ホップしか必要としない最終ブロック以外の他の任意のブロック)を解決するには、平均で1・52ホップを必要とする。したがって、Nが1兆に等しいとする場合、平均的なルーティングは、約5.5ホップを必要とする。
1兆ノードのシステムに関してパフォーマンスを説明した。一般に、平均パフォーマンスは、([log1024N−1])・1.52+1の限度内に抑えられる。したがって、N=256000の場合、最悪時のパフォーマンスは、高い確率で、2.52ではなく2.02となる。例えば、SSRTは、1.02の期待ホップ数で、8ビットを解決できるだけである。この時点で、残りの10フィンガを用いて作成されたフルクロスバー(full crossbar)が、最後のホップを実行する。同様に、N=2億5600万の場合、パフォーマンスは高い確率で3.54ホップの限度内に抑えられる。
メンテナンスコストおよび堅牢性(Maintenance Cost and Robustness)
上述したように、1つのリングで1千ノードの領域クラスタをメンテナンスするのにかかる全体コストは、チャーンレートμ=1/(3時間)とした場合、約1kb/sである。4つのリングからなるSSRTをメンテナンスするには、上記コストの約4倍かかる。したがって、各ノードは、SSRTのメンテナンスに全部で4kb/sを消費する。その他のコストには、リーフセットメンバーおよび4つのリングすべてのフィンガの間での定期的プロービングなどがあるが、メンテナンスに比べれば相対的に僅かなコストしかかからない。これが、1兆ノードのシステムの平均ルーティングパフォーマンスである5.5ホップを与えることに留意されたい。
適応(Adaptation)
先の例示的なルーティング技法で表される帯域消費が帯域予算(bandwidth budget)Qに一致する場合であっても、帯域消費(bandwidth consumption)のピークに遭遇することがあり得る。したがって、先に図2に関連させて述べたように、追加の帯域が利用可能になるまで、イベントを図2のキュー208(x)に内部的にバッファすることができる。様々なその他の適応技法も、システムに動的変化が生じた場合にSSRTの品質を制御するために利用することができる。例えば、ストレス下で適切にルーティングパフォーマンスを低下させて、後で通常のルーティングパフォーマンスに戻す、適応技法を利用することができる。
そのような適応技法のうちの例示的な第1の技法は、高いチャーンレートμに対処して、システムを定常状態下での平衡に安定させもする。この適応技法は、ブロードキャストトラフィックを適応的に制御するため、レポートに含まれる冗長なイベントの「取り除き(pruning)」を含む。最終的な結果として、高品質のSSRTが、良好に維持される。冗長なイベントを含まないようにするレポートの構成については、図8に関連させてさらに説明する。
そのような適応技法のうちの例示的な第2の技法は、第1の適応技法の上に構築され、SSRTは、図3に関連して示されるような全リソース空間の部分をカバーするクロスバーとなる。第1および第2の適応技法は、各ノードに含まれるSSRTを形成するために組み合わせることができ、各ノードのSSRTを組み合わせた場合、2つの最適化を組み合わせたことによって、マルチレベルのアーキテクチャが得られる。例えば、第1のレベルは全リソース空間にわたり、第2のレベルは領域クロスバーを提供する、2レベルのアーキテクチャを利用することができる。別の例では、図5に関連して説明したような、4レベルのアーキテクチャを利用することができる。このハイブリッド手法によって、多数のノードを有するシステムで、帯域予算(bandwidth budget)Qを超えることなく、O(1)を達成することができる。
一実施形態において、状態が「オンライン(online)」であるSSRTエントリのサブセットを、「eSSRT」で表すものとする。状態ができるだけ正確であることを保証するため、eSSRTサイズを犠牲にしてフィルタリングを利用することができる。すなわち、低いフォールスポジティブ(false-positive)率が、より多くのフォールスネガティブ(false-negative)エントリによって達成される。論理的根拠は、「ミス(miss)」は一般に「ヒット(hit)」よりもコストが高いという点にある。
この目標を達成するため、フィルタリングは、様々な規則を利用することができ、以下にその例を示す。
1.低いフォールスポジティブ率を保証するため、離脱イベントをより高い優先度で送信する。
2.イベントが状態を変化させるものではない場合、そのイベントは伝播させない。
第2の規則は、ステートマシン(state machine)を使用することによって実施することができる。例えば、イベントタイプがステートマシンによって指示される現在の状態と一致する場合は、現在の状態への変更は行われずにタイムスタンプが更新され、一致しない場合は、状態がネゲートされる。後者の場合、送信済(has-sent)フィールドもネゲートされる。例えば、エントリの状態が「オンライン」で、送信済が偽(false)である場合に、「離脱」イベントを受信すると、状態は「オフライン(offline)」に変更され、送信済には真(true)がセットされる。言い換えると、この特定のイベントは、さらに伝播させる必要がない。したがって、冗長なメッセージは、イベントのバッファリングを用いて取り除かれる。
バッファされたイベントは、将来受信するそのようなイベントを取り除くのに役立つので、これらの技法を利用することによって、システムは自動的に平衡に達する。チャーンレートμが高い場合、適応の初期には、離脱イベント(leave events)が帯域の割当量の大部分を占有することがあり、その場合、「オーバフロー(overflow)」加入イベントはバッファされる。後の時点で、バッファされた加入イベントは、離脱イベントを受信したときに取り消し、それによって、加入イベントを解放するための割当てを与える。チャーンレートμが安定した場合、加入イベントと離脱イベントを送信するのに使用されるネットワークおよびノードリソースは、最終的にそれぞれほぼ等しく分配される。したがって、チャーンレートが高いほど、ピアツーピアネットワークにおけるネットワークリソースの全体的使用を削減する上で、この手法は効果的となる。第2に、バッファされたイベントは、帯域の割当量が再び利用可能になったときに解放され、システムがイベントのストーム(例えば、特定の時点で伝達される複数のイベントを生じさせるメンバーシップの目まぐるしい変更)を切り抜け、後で速やかに通常のパフォーマンスレベルに戻ることを可能にする。このようにして、堅牢なルーティング技法が提供される。
設定調整(Set-Reconciliation)
大きなルーティングテーブルを利用するDHTルーティング技法にとっての1つの実際的な問題は、復帰ピアのルーティングテーブルをいかにして最新にするかということであり、「設定調整」と呼ばれる。例えば、先に説明したルーティング技法では、復帰ノードのリーフセットとフィンガテーブルは、ノードがピアツーピアネットワークに加入するたびに新しく作成されることがあるので、ピアツーピアネットワークに加入するときに、いかにして最新のSSRTを取得するかという形で問題が生じる。
SSRTは、例えば、安定したバックグラウンドのストレージに保持することができ、そのメンバーシップリスト(例えば、他のすべてのノードの<ID,IP>ペアを有するエントリ)は、ノードがその過去の履歴から習得したあらゆることを含む。システムにとって完全に新しいノードは、初めて加入したときに、SSRTをコピーすることができる。したがって、システムが十分な期間動作したとき、SSRTにセットされるメンバーシップリストは、一般にシステム全体にわたって一致している。
しかし、離脱したノードがピアツーピアネットワークに復帰(例えば、ピアツーピアネットワークに加入)する場合、加入ノードは、対応するSSRTに記録されたピアの状態について知らないことがある。したがって、加入ノードは、SSRTの各エントリをオフライン状態にリセットし、ピアツーピアネットワークの1つまたは複数の既存ノードから知ろうと試みることがある。例えば、2つのノードのSSRTが互いに同期している場合、既存ノードは、既存ノードのSSRTから、各ビットで他のピアの状態を表すようにしたベクトルを送信することができる。チャーンレートμが高く、オンラインエントリの数が少ない場合は、例えば、eSSRTをコピーするのが現実的である。例えば、128kb/sのリンクを介して、32バイトのエントリを約4Kほど転送するのに、約8秒かかることがある。しかし、チャーンレートμが低かったり、または超大規模システムである場合は、これは堅牢な解決策とはなり得ない。
SSRTエントリを表すデータをより効率的に伝達するため、ブルームフィルタを用いてデータを圧縮し、SSRTを更新するのに利用される帯域量を削減することができる。このように、超大規模システムにおいて、効率的な通信を提供することができる。ブルームフィルタは、単一のビット配列への複数のハッシュ関数を使用することによって、大きな集合における帰属関係をテストするのに使用される確率的アルゴリズムである。ブルームフィルタは、例えば、空間/帯域が問題とされており、僅かな誤りなら許容できる場合に効果的に機能し得る。
ブルームフィルタでは、例えば、n個の項目からなるリストをmビットに、すなわち、項目当たりb=m/nに圧縮することができ、「b」は「フィルタパラメータ(filter parameter)」を表す。各項目について、値域が[0..m]の1組のハッシュ関数が適用され、mビットベクトルの対応するビットを設定する。ブルームフィルタの副作用は、フォールスポジティブが生じ得ること、すなわち、受信ノードが元のリストには存在しないいくつかの要素を誤って含む場合があることである。そのような確率は、(0.6185)で示され、m=8nの場合、確率は0.02を僅かに超える。
項目のサイズがEバイトである場合、nEバイトのリストを送信する代わりに、フィルタのサイズを、b=8の8nビット(すなわち、nバイト)とすると、1/Eの圧縮率が得られる。例えば、ノードIDとIPアドレスは伝送するが、タイムスタンプは伝送しない場合、Eは約32バイトとなり、結果の1/32の圧縮率はかなり良い率である。一実施形態では、第1のプロトコルは、オンラインではないエントリに対してブルームフィルタを適用する。ブルームフィルタのフォールスポジティブのため、受信側でオンラインノードの2%がオフラインとして記録されることになる。
別の実施形態では、「反復ブルームフィルタ(iterative bloom filter)」を使用することによって、精度をさらに高めることができる。例えば、送信ノード、すなわち、受信ノードのSSRTを更新するためのデータを送信するノードは、最初に、より小さなフィルタパラメータaを用いて、オンラインノードP(存在)のフィルタを計算する。送信ノードは、次に、フォールスポジティブノードの組A⊂Pを識別し、フィルタパラメータbを持つ補足フィルタを適用する。その後、両フィルタが、受信ノード、すなわち、SSRTを更新するためのデータを要求するノードに送信される。定性的に言えば、いくつかのオンラインノードが見落とされるので、この手法も従来のものと同じである。定量的に言えば、ブルームフィルタの誤り率はフィルタパラメータだけに依存するので、そのようなエントリの数は、シングルレベルのブルームフィルタと同じである。
図7に、例示的な反復ブルームフィルタ700を示す。反復ブルームフィルタ700は、3つで1組のブルームフィルタ702(1)〜702(3)を含むように示されている。P704およびA706は、各フィルタのフォールスポジティブエントリの組である。
反復手法が帯域の節約を可能にするかどうかを計算するため、オフラインノードおよびオンラインノードの数を、それぞれN、Nとする。シングルレベルのbビットブルームフィルタの場合、メッセージ全体のサイズはbNビットである。反復方法の第1のフィルタは、aNのメッセージサイズを持つ。Aのサイズ、すなわち、フォールスポジティブエントリの数は、N(0.6185)である。したがって、補足フィルタは、Nb(0.6185)のサイズをもち、その結果、メッセージ全体のサイズSは次式で表すことができる。
S=Nb(0.6185)+aN
最小のメッセージサイズを得るため、次式を観察する。
Figure 2005323346
「a」は負でない整数なので、上記の式は、以下の2つのケースに分けることができる。
Figure 2005323346
上記の例示的な実施形態では、フィルタパラメータbが8に等しく、NがNの25%より小さい場合に、シングルレベルのブルームフィルタを採用することができる。これのための例示的な疑似コードを以下に示す。
OnSetReconcileRequest()
Np = SSRT.OnlineSet.Size
Na = SSRT.OfflineSet.Size
if (Np < 0.4805 * Na * b)
a = log(Np / (0.4805 * Na * b)) / log(0.6185)
F1 = BloomFilterPack(SSRT.OnlineSet, a)
P = BloomFilterUnpack(SSRT, F1)
A = P - SSRT.OnlineSet
F2 = BloomFilterPack(A, b)
Send(F1, F2)
else
F1 = BloomFilterPack(SSRT.OfflineSet, b)
Send(F1, 0)
OnSetReconcileAck(F1, F2)
foreach(entry ∈ SSRT)
if InBloomFilter(entry, F1)
if F2 == 0 or not InBloomFilter(entry, F2)
entry.status = online
上記の設定調整の疑似コードにおいて、bは(例えば、8に)事前定義されており、受信側でのSSRTエントリはすべて、最初はオフライン状態にあるとする。
例示的な手順(Exemplary Procedures)
先に説明したシステムおよびデバイスを利用して実施できるSSRTの更新および構成について以下で説明する。各手順の態様は、ハードウェア、ファームウェア、ソフトウェア、またはそれらの組み合わせで実施することができる。手順は、1つまたは複数のデバイスによって実行される動作を詳述するブロックの組として示されている。手順は、個々のブロックによる動作を実行する図示された順番に必ずしも限定されるものではない。
図8は、ノードが、当該ノードによって受信されたピアツーピアネットワークにおけるメンバーシップ変更を通知するイベントを示すレポートを形成し、伝達する例示的な実施形態における手順800を示したフローチャートである。ブロック802で、ノードが、ピアツーピアネットワークにおけるメンバーシップ変更を通知するイベントを受信する。例えば、第1のノードは、ランダムな識別子IDを選択し、その識別子がすでにピアツーピアネットワークに含まれているかどうかを決定するために検索を実行することができる。識別子は、ピアツーピアネットワークにおける第1のノードのアドレスと考えることができる。識別子IDがまだピアツーピアネットワークに含まれていない場合、第1のノードは、ID’で表される次に最も高い識別子を有する「後続(successor)」ノードを見つけ、第1のノードがピアツーピアネットワークに加入したことを後続ノードに通知することができる。通知は、後続ノードに「加入」イベントを送ることによって実行することができる。
判断ブロック804で、ノードが以前にそのイベントを受信したかどうかについて判定が行われる。ノードが以前にそのイベントを受信している場合(ブロック804)、そのイベントは削除される(ブロック806)。したがって、この例では、イベントは、ノードによって2回以上伝達されることはない。別の例では、イベントを所定の回数伝達するための閾値を利用して、ピアツーピアネットワークを実施するシステムにおいて所望の冗長性を提供することができる。
ノードが以前にそのイベントを受信していない場合は(ブロック804)、判断ブロック808で、他のノードにイベントを伝達するための閾値が超えられたかどうかについて判定が行われる。閾値が超えられた場合(ブロック808)、そのイベントはキュー(queue)に追加される(ブロック810)。このように、手順800は、所定の期間に所定数以下のイベントを伝達することによって、ピアツーピアネットワークにおけるメンテナンスコストを管理することができる。
閾値が超えられていない場合(ブロック808)、またはイベントをキューに追加した後、判断ブロック812で、所定のブロードキャスト時間がきたかどうかについて判定が行われる。例えば、ピアツーピアネットワークの各ノードは、そのノードによって受信されたイベントを異なる所定の間隔でブロードキャストして、そのイベントを伝達するのに利用されるネットワークリソースにコストを「拡散(spread-out)」させることができる。所定のブロードキャスト時間がきていない場合(ブロック812)、手順800は、ブロック802に復帰し、追加のイベントがあれば、そのイベントを受信する。
そのノードにとっての所定のブロードキャスト時間がきた場合(ブロック812)、そのイベントを含んだレポートが形成される。例えば、ノードは、複数のノードから受信したイベントを集約して、それらのイベントを有する単一の情報を送信することができる。イベントは、ブロック810で保存されたイベントのキューから、および/またはノードで受信されたイベントを保存するのに利用されたその他の記憶デバイスから取得することができる。
ブロック816で、レポートをどこにブロードキャストするかを決定するため、ルーティングテーブルが調査される。ブロック818で、レポートが、ルーティングテーブル内で参照される各ノードに並列にブロードキャストされる。個々のブロック816、818でのルーティングテーブルおよびブロードキャストは、様々な方法で実行することができる。例えば、ルーティングテーブルは、複数の他のノードを表すのに対数関数を利用する図1のフィンガテーブル114として構成することができる。フィンガテーブル114は、エントリに対応するノードをプロービング(probe)することによって更新することができる。先に説明したように、図1のフィンガテーブル114の「フィンガ」は、当該ノードが存在する領域内のノードにレポートが配布されるように、適切な冗長性を有するブロードキャストグラフを形成する。別の実施形態では、領域の外部に存在する他のノードにレポートをブロードキャストするため、フィンガを利用することもできる。
レポートを受信した各ノードは、レポートに示されたイベントが、各後続ノードに含まれるフィンガテーブル内で参照されるノードにブロードキャストされるように、手順800を実行することができる。したがって、イベントは、個々のフィンガテーブルのフィンガによって定義されるブロードキャストグラフを介して、イベントを伝達することによって、発信元ノードからその他のすべてのノードに広められる。イベントが他のノードで受信されると、他のノードは、イベントの配布に関して発信元ノードを支援する。
レポートに示されるイベントは、各ノードに含まれる個々のSSRTを更新するため、各ノードによって利用することができる。したがって、SSRTは、所望のデータを見つけるのに必要なホップ回数を減らし、ルーティングテーブルをメンテナンスするのに利用されるネットワーク帯域量を減らすために利用することができる。
図9は、ノードの利用可能なリソースに基づいてルーティングテーブルのサイズが動的に決定される例示的な実施形態における手順900を示したフローチャートである。ピアツーピアネットワークのいくつかの実施形態では、ネットワークの各々のノードは、等しいハードウェア、ソフトウェア、および/またはネットワークリソースにアクセスできないことがある。例えば、図1に示すように、コンピューティングデバイス104(B)は、大量のハードウェアリソースおよびソフトウェアリソースを持つことができるが、コンピューティングデバイス104(1)は、携帯可能に設計されているため、限られたハードウェアリソースおよびソフトウェアリソースしか持つことができない。さらに、1つのノードはダイアルアップ接続を利用でき、別のノードはデジタル加入者線(DSL)を利用できるなど、ネットワークに接続するための帯域が、ノードによって異なることがある。これら各ノードのルーティングテーブルは、利用可能なリソースと合致する方法でピアツーピアネットワークにおけるルーティングを扱えるようにノードが構成されるよう、ノードの利用可能なリソースに基づいて動的に構成することができる。
ブロック902で、例えば、ノードがピアツーピアネットワークに加入する。例えば、ノードは、先に説明したように、ランダムな識別子を生成することができる。ブロック904で、ノードは、利用可能なハードウェア、ソフトウェア、および/またはネットワークリソースを判定する。例えば、ノードは、ノードの処理能力および記憶能力を判定するソフトウェアモジュールを実行することができる。ソフトウェアモジュールは、実行されたときに、既知のネットワーク送信先から応答を受信するのにかかる時間量を判定することなどによって、ネットワーク接続の利用可能な帯域も判定することができる。
ブロック906で、リソースの判定(ブロック904)に基づいて、ノードのルーティングテーブルを構成する。一例では、ソフトウェアモジュールは、ネットワーク接続の帯域に基づいて、ルーティングテーブルに含めることのできるエントリの量を示す様々な閾値を保存することができる。例えば、ノードがダイアルアップ接続を介して接続される場合、ノードがケーブルモデムを介して接続される場合より少ないエントリを持つように、ルーティングテーブルを構成することができる。
別の例では、ソフトウェアモジュールは、ルーティングテーブルのサイズが、ピアツーピアネットワークの他のルーティングテーブルのサイズと調整のとれたものになるように、ノードの利用可能なハードウェア、ソフトウェア、および/またはネットワークリソースを、ネットワークの他のノードのものと比較することができる。例えば、ノードがピアツーピアネットワークに加入したとき、ノードは、先に説明したように、後続ノードを見つけることができる。見つかった場合、ノードは、後続ノードのハードウェア、ソフトウェア、および/またはネットワークリソースに基づいて構成されたルーティングテーブルサイズを判定するため、後続ノードに問い合せを行うことができる。ノードはその後、利用可能なリソースを後続ノードの利用可能なリソースと比較することができ、比較に基づいたエントリ数を持つルーティングテーブルを構成することができる。例えば、ノードが後続ノードよりも多くのリソースを持つ場合、ノードは、後続ノードのルーティングテーブルよりも多くのエントリを有するルーティングテーブルを構成することができる。リソースを比較し、しかるべくルーティングテーブルを構成するため、様々なアルゴリズムを利用することができる。
さらに、ノードがピアツーピアネットワークのメンバーである場合、定期的な間隔でルーティングテーブルを再構成することができる。例えば、ノードがピアツーピアネットワークのメンバーである間、ノードはリソースの定期的な判定を行うことができる。したがって、ノードがピアツーピアネットワークのメンバーである間、ピアツーピアネットワークの対応するノードの利用可能なリソースを反映するようにルーティングテーブルを構成することができ、ノードの現在利用可能なリソースを反映するようにルーティングテーブルをメンテナンスすることができる。
例示的なコンピューティングデバイス(Exemplary Computing Device)
本明細書で説明した様々なコンポーネントおよび機能は、複数の個別のコンピュータによって実施することができる。図10に、ピアツーピアネットワークでノードを供給するのに適した、参照番号1002で参照されるコンピュータを含む、コンピュータ環境1000の典型例のコンポーネントを示す。コンピュータ1002は、図1の複数のクライアント102(a)および複数のコンピューティングデバイス104(1)〜104(B)と同じであってもよく、異なっていてもよい。図10に示すコンポーネントは例に過ぎず、本発明の機能の範囲について何らかの限定を暗示するよう意図したものではない。本発明は、図10に示す特徴に必ずしも依存しない。
一般に、様々な異なる汎用または専用コンピューティングシステム構成を使用することができる。本発明で使用するのに適した周知のコンピューティングシステム、環境、および/または構成の例として、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースシステム、セットトップボックス、プログラム可能な家電、ネットワークPC、ネットワーク対応デバイス、ミニコンピュータ、メインフレームコンピュータ、および上記のシステムまたはデバイスのいずれかを含む分散コンピューティング環境などを挙げることができるが、これらに限定されるものではない。
コンピュータの機能は、多くの場合、コンピュータによって実行される、ソフトウェアコンポーネントなどのコンピュータ実行可能命令によって実施される。一般に、ソフトウェアコンポーネントには、特定のタスクを実行し、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、およびデータ構造などが含まれる。タスクは、通信ネットワークを介して接続されたリモート処理デバイスによっても実行することができる。分散コンピューティング環境では、ソフトウェアコンポーネントは、ローカルおよびリモートコンピュータ記憶媒体に配置することができる。
命令および/またはソフトウェアコンポーネントは、コンピュータの一部であるか、またはコンピュータによって読むことができる様々なコンピュータ可読媒体に異なる時点で保存される。プログラムは一般に、例えば、フロッピディスク、CD−ROM、DVD、または変調信号など何らかの形態の通信メディアによって配布される。そこから、プログラムは、コンピュータの2次メモリにインストールまたはロードされる。実行時、プログラムは、コンピュータの1次電子メモリに少なくとも部分的にロードされる。
説明のため、プログラム、およびオペレーティングシステムなどのその他の実行可能プログラムコンポーネントは、図10では別個のブロックとして示されているが、そのようなプログラムおよびコンポーネントは、コンピュータの異なる記憶コンポーネントに様々な時点に存在し、コンピュータのデータプロセッサによって実行されることを理解されたい。
図10を参照すると、コンピュータ1002のコンポーネントには、プロセッシングユニット1004、システムメモリ1006、およびシステムメモリを含む様々なシステムコンポーネントをプロセッシングユニット1004に結合するシステムバス1008が含まれるが、これらに限定されるものではない。システムバス1008は、様々なバスアーキテクチャのいずれかを使用する、メモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含む複数のタイプのバス構造のいずれであってもよい。
コンピュータ1002は一般に、様々なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ1002によってアクセス可能な任意の利用可能媒体とすることができ、揮発性および不揮発性媒体、着脱可能および着脱不能媒体が含まれる。例えば、コンピュータ可読媒体として、コンピュータ記憶媒体と通信メディアを挙げることができるが、これらに限定されるものではない。「コンピュータ記憶媒体」には、コンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータといった情報を記憶するための任意の方法または技法で実施される、揮発性および不揮発性媒体と、着脱可能および着脱不能媒体がある。コンピュータ記憶媒体として、RAM、ROM、EEPROM、フラッシュメモリ、もしくはその他のメモリ技術、CD−ROM、DVD(デジタルビデオディスク)、もしくはその他の光ディスク記憶、磁気カセット、磁気テープ、磁気ディスク記憶、もしくはその他の磁気記憶デバイス、または所望の情報を記憶するのに使用でき、コンピュータ1002によってアクセスできる、その他の任意の媒体を挙げることができるが、これらに限定されるものではない。通信メディアは一般に、搬送波またはその他の移送機構などの変調データ信号によって、コンピュータ可読命令、プログラムモジュール、データ構造、またはその他のデータを表すものであり、任意の情報送達媒体を含む。「変調データ信号」という語は、信号中に情報を符号化するようにその特性の1つまたは複数が設定または変更された信号を意味する。例えば、通信メディアとして、有線ネットワークまたは直接線接続などの有線媒体、および音響、RF、赤外線、その他のワイアレス媒体などのワイアレス媒体を挙げることができるが、これらに限定されるものではない。上記の媒体のどのような組み合わせも、コンピュータ可読媒体の範囲に含まれるものとする。
システムメモリ1006は、ROM(読み取り専用メモリ)1010および/またはRAM(ランダムアクセスメモリ)1012などの、揮発性および/または不揮発性メモリの形態をとるコンピュータ記憶媒体を含む。基本入出力システム(BIOS)1014は、起動中などにコンピュータ1002内の要素間の情報伝送を助ける基本ルーチンを含み、一般にROM1010に記憶しておかれる。RAM1012は一般に、プロセッシングユニット1004が直ちにアクセス可能であり、かつ/または現在それに基づいて動作している、データおよび/またはソフトウェアコンポーネントを含む。例えば、図10には、オペレーティングシステム1016、アプリケーションプログラム1018、ソフトウェアコンポーネント1020、およびプログラムデータ1022が示されているが、これらに限定されるものではない。
コンピュータ1002はまた、その他の着脱可能/着脱不能、揮発性/不揮発性コンピュータ記憶媒体も含む。図10には、着脱不能な不揮発性の磁気媒体に対して読み書きを行うハードディスクドライブ1024、着脱可能な不揮発性の磁気ディスク1028に対して読み書きを行う磁気ディスクドライブ1026、およびCD−ROMやその他の光媒体など着脱可能な不揮発性の光ディスク1032に対して読み書きを行う光ディスクドライブ1030が、例としてのみ示されている。例示的な動作環境で使用可能なその他の着脱可能/着脱不能、揮発性/不揮発性コンピュータ記憶媒体として、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、ソリッドステートRAM、およびソリッドステートROMなどを挙げることができるが、これらに限定されるものではない。ハードディスクドライブ1024は一般に、データ媒体インタフェース1034などの着脱不能メモリインタフェースを介してシステムバス1008に接続され、磁気ディスクドライブ1026および光ディスクドライブ1030は一般に、着脱可能メモリインタフェースによってシステムバス1008に接続される。
上で説明し、図10に示すドライブおよびそれに関連するコンピュータ記憶媒体は、コンピュータ可読命令、データ構造、ソフトウェアコンポーネント、およびその他のデータの記憶保持をコンピュータ1002に提供する。図10には、例えば、オペレーティングシステム1016’、アプリケーション1018’、ソフトウェアコンポーネント1020’、およびプログラムデータ1022’を記憶するハードディスクドライブ1024が示されている。これらのコンポーネントは、オペレーティングシステム1016、アプリケーション1018、ソフトウェアコンポーネント1020、およびプログラムデータ1022と同じであってもよく、異なっていてもよいことに留意されたい。オペレーティングシステム1016’、アプリケーション1018’、ソフトウェアコンポーネント1020’、およびプログラムデータ1022’には、少なくともそれらが異なるコピーであることを示すため、図10では異なる番号が振られている。ユーザは、キーボード、およびマウス、トラックボール、またはタッチパッドなどと一般に呼ばれるポインティングデバイス(図示せず)などの入力デバイスを介して、コンピュータ1002にコマンドおよび情報を入力することができる。その他の入力デバイスとして、(ストリームデータを提供するマイクロフォン1038やカメラ1040などの)ソースデバイス、ジョイスティック、ゲームパッド、衛星パラボラアンテナ、またはスキャナなどを挙げることができる。上記およびその他の入力デバイスは、システムバスに結合された入出力(I/O)インタフェース1042を介して、しばしばプロセッシングユニット1002に接続されるが、パラレルポート、ゲームポート、またはUSB(ユニバーサルシリアルバス)など、その他のインタフェースおよびバス構造によって接続することもできる。モニタ1044またはその他のタイプのディスプレイデバイスも、ビデオアダプタ1046などのインタフェースを介して、システムバス1008に接続される。モニタ1044に加えて、コンピュータは、I/Oインタフェース1042を介して接続できる、その他の再生デバイス(例えば、スピーカ)、および1つまたは複数のプリンタも含むことができる。
コンピュータは、リモートデバイス1050などの1つまたは複数のリモートコンピュータへの論理コネクションを使用して、ネットワーク環境で動作することができる。リモートデバイス1050は、パーソナルコンピュータ、ネットワーク対応デバイス、サーバ、ルータ、ネットワークPC、ピアデバイス、またはその他の共通ネットワークノードとすることができ、コンピュータ1002に関連して上で説明した多くの要素またはすべての要素を含むことができる。図10に示す論理コネクションには、LAN(ローカルエリアネットワーク)1052およびWAN(ワイドエリアネットワーク)1054が含まれる。図10に示すWAN1054はインターネットであるが、WAN1054は、その他のネットワークを含むこともできる。そのようなネットワーク環境は、オフィス、企業規模のコンピュータネットワーク、およびイントラネットなどで一般的である。
LANネットワーク環境で使用する場合、コンピュータ1002は、ネットワークインタフェースまたはアダプタ1056を介してLAN1052に接続される。WANネットワーク環境で使用する場合、コンピュータ1002は、一般に、インターネット1054を介して通信を確立するためのモデム1058またはその他の手段を含む。モデム1058は、内蔵型であっても外付け型であっても良く、I/Oインタフェース1042またはその他の適切な機構を介して、システムバス1008に接続することができる。ネットワーク接続環境では、コンピュータ1002に関して示したプログラムモジュールまたはその部分は、リモートデバイス1050に記憶することができる。例えば、図10には、リモートデバイス1050に存在するリモートソフトウェアコンポーネント1060が示されているが、これに限定されるものではない。図示のネットワーク接続は例示的なものであり、コンピュータ間の通信リンクを確立するその他の手段も使用できることが理解できよう。
むすび(Conclusion)
本発明を構造的機能および/または方法的工程に特有の言葉で説明してきたが、特許請求の範囲で確定される本発明が、説明された特定の機能または工程に必ずしも限定されるものではないことを理解されたい。むしろ、特定の機能および工程は、特許請求される発明を実施する例示的な形態として開示されたものである。
ピアツーピアネットワークを提供するように構成された環境の例示的な実施形態を示す図である。 ピアツーピアネットワークの複数のノードをより詳細に示した、例示的な実施形態によるシステムを示す図である 1次元論理キー空間におけるシステムの複数のノードの複数のソフトステートルーティングテーブルのスナップショットを示した例示的な実施形態を示す図である。 識別子を循環させ、別のリングを作成することによる、与えられたブロックについてのソフトステートルーティングテーブルのエントリの作成を示した例示的な実施形態を示す図である。 図4に関連させて説明したリングのソフトステートルーティングテーブルを使用するルーティングを示した例示的な実施形態を示す図である。 ソフトステートルーティングテーブルの一部と、ソフトステートルーティングテーブルのエントリの生成を示した例示的な実施形態を示す図である。 反復ブルームフィルタを示した例示的な実施形態を示す図である。 ノードが当該ノードによって受信されたピアツーピアネットワークにおけるメンバーシップ変更を通知するイベントを示すレポートを形成し、伝達する例示的な実施形態における手順を示したフローチャートである。 ノードの利用可能なリソースに基づいてルーティングテーブルのサイズが動的に決定される例示的な実施形態における手順を示したフローチャートである。 ピアツーピアネットワークにおいてノードを提供するのに利用できる例示的なコンピューティングデバイスを示す図である。
符号の説明
100 システム
102(a) クライアント
106 ネットワーク(ピアツーピアネットワーク)
108 DHT
110(1)〜110(8) ゾーン
112 リーフセット
114 フィンガテーブル
116 ソフトステートルーティングテーブル(SSRT)
116 SSRT(x)
202(x) ノード
204(c) イベント
206(x) レポート
208(x) キュー
502 ルックアップキー
506 ソースノード
508 第1の部分
510 第2の部分
512 第3の部分
514 第4の部分
1004 プロセッサユニット
1006 システムメモリ
1008 システムバス
1010 ROM
1012 RAM
1014 BIOS
1016,1016’ オペレーティングシステム
1018,1018’ アプリケーション
1020,1020’ ソフトウェアコンポーネント
1022,1022’ プログラムデータ
1034 データ媒体インタフェース
1036 キーボード
1042 I/Oインタフェース
1044 モニタ
1046 ビデオアダプタ
1050 リモートデバイス
1052 LAN
1054 インターネット
1056 ネットワークアダプタ
1058 モデム
1060 リモートソフトウェアコンポーネント

Claims (46)

  1. ピアツーピアネットワーク内の複数のノードのうち1つのノードにおいて、該ネットワーク内の別のノードによるメンバーシップ変更の通知を受信するステップ、および、
    該変更を記述するレポートであって、前記1つのノードに含まれるルーティングテーブル内で参照される各ノードによる受信のためのレポートをブロードキャストするステップ
    を含むことを特徴とする方法。
  2. 前記通知は前記ピアツーピアネットワーク内の前記別のノードに関する加入イベントまたは離脱イベントである、請求項1の方法。
  3. 前記ルーティングテーブルは複数のフィンガテーブルエントリを有するフィンガテーブルであり、各フィンガテーブルエントリは、対応するノードを対数関数の使用によって参照する、請求項1の方法。
  4. 前記ピアツーピアネットワーク内の前記各ノードは、該ネットワークの1つまたは複数のネットワークリソースについてのハッシュ空間を定義するリーフセットテーブルを含む、請求項1の方法。
  5. 前記ノードの2以上のメンバーシップ変更を通知する、該2以上のノードから受信した複数の前記通知を集約することによって、前記レポートを形成するステップをさらに含み、前記レポートは、前記2以上のノードの前記メンバーシップ変更について記述する、請求項1の方法。
  6. 前記通知が前記1つのノードによって以前に受信されたかどうかを判定し、受信されていない場合は前記レポートに前記通知を含めることによって、前記レポートを形成するステップをさらに含む、請求項1の方法。
  7. 前記ルーティングテーブルは、前記複数のノードのうち前記別のノードの少なくとも1つを参照しない、請求項1の方法。
  8. 前記ブロードキャストするステップは所定のブロードキャスト時間がきたときに実行される、請求項1の方法。
  9. 前記各ノードはコンピューティングデバイスによって提供される、請求項1の方法。
  10. コンピュータ上で実行されたときに該コンピュータに、請求項1の方法を実行するよう指令を出すことを特徴とするコンピュータ実行可能命令を含む、1つまたは複数のコンピュータ可読媒体。
  11. 複数のノードを有するピアツーピアネットワーク内に含まれるように構成された1つのノードにおける方法であって、
    該1つのノードにおいて、別のノードによってブロードキャストされた通知を受信するステップと、
    該通知を受信したことに応答して、ソフトステートルーティングテーブル(SSRT)内の少なくとも1つのソフトステートルーティングテーブルエントリを更新するステップであって、前記ソフトステートルーティングテーブルが、各々が対応するノードを参照する複数の前記ソフトステートルーティングテーブルエントリを有するものと
    を含むことを特徴とする方法。
  12. 前記通知は加入イベントまたは離脱イベントである、請求項11の方法。
  13. 前記通知は、フィンガテーブルを調査した後で、前記別のノードによってブロードキャストされる、請求項11の方法。
  14. 前記ノードは、前記ピアツーピアネットワークで提供されるリソースについてのハッシュ空間を定義するリーフセットテーブルを含む、請求項11の方法。
  15. 前記リーフセットテーブルは前記別のノードの少なくとも1つをプロービングすることによってメンテナンスされる、請求項14の方法。
  16. 前記ノードは複数のフィンガテーブルエントリを有するフィンガテーブルを含み、各フィンガテーブルエントリは、対応するノードのロケーションを対数関数の使用によって記述する、請求項11の方法。
  17. 前記フィンガテーブルは該テーブル内で参照される前記対応するノードの各々をプロービングすることによってメンテナンスされる、請求項16の方法。
  18. 前記通知が前記ノードによって以前に受信されたかどうかを判定するステップと、
    受信されていない場合に前記更新するステップを実行するステップと
    をさらに含む、請求項11の方法。
  19. コンピュータ上で実行されたときに該コンピュータに、請求項11の方法を実行するよう指令を出すことを特徴とするコンピュータ実行可能命令を含む、1つまたは複数のコンピュータ可読媒体。
  20. ピアツーピアネットワーク内に含まれるノード上で、該ネットワーク内で通信を行うのに該ノードが利用可能なリソースを判定するステップと、
    該ネットワーク内でリクエストをルーティングするため、前記判定に基づき前記ノード上でルーティングテーブルを形成するステップと
    を含むことを特徴とする方法。
  21. 前記リソースは、前記ノードのハードウェア、ソフトウェア、またはネットワークリソースの少なくとも1つである、請求項20の方法。
  22. 前記形成するステップは、前記判定に基づき前記ルーティングテーブル内のエントリの数を取得することを含む、請求項20の方法。
  23. 前記判定するステップは、前記利用可能なリソースが判定されたノードが前記ピアツーピアネットワークに加入したときに実行される、請求項20の方法。
  24. 前記判定するステップは、前記利用可能なリソースが判定されたノードが前記ピアツーピアネットワークのメンバーである場合に定期的に実行される、請求項20の方法。
  25. 前記判定するステップは、前記ピアツーピアネットワーク内の少なくとも1つの別のノードが利用可能なリソースを判定することをさらに含み、
    前記形成するステップは、前記ノードおよび前記少なくとも1つの別のノードが利用可能なリソースの判定に基づいて、前記ノード上の前記ルーティングテーブルを構成することをさらに含む、請求項20の方法。
  26. コンピュータ上で実行されたときに該コンピュータに、請求項20の方法を実行するよう指令を出すことを特徴とするコンピュータ実行可能命令を含む、1つまたは複数のコンピュータ可読媒体。
  27. ピアツーピアネットワーク内の複数のノードのうち1つのノードによって反復ブルームフィルタを利用して、ルーティングテーブル内のエントリについて記述するデータを圧縮するステップと、
    該圧縮データを別のノードに伝達するための通信を形成するステップと
    を含むことを特徴とする方法。
  28. 前記反復ブルームフィルタを前記別のノードに伝達するステップをさらに含む、請求項27の方法。
  29. 前記圧縮データを使用することによって、前記別のノードにおいてルーティングテーブルの1つまたは複数のエントリを更新するステップをさらに含む、請求項27の方法。
  30. コンピュータ上で実行されたときに該コンピュータに、請求項27の方法を実行するように指令を出すことを特徴とするコンピュータ実行可能命令を含む、1つまたは複数のコンピュータ可読媒体。
  31. コンピュータ上で実行されたときに該コンピュータに、
    ピアツーピアネットワーク内のメンバーシップ変更が、いつ、複数のノードの1つまたは複数に関して生じたかを判定し、かつ、該変更が生じたときに、前記複数のノードのサブセットにレポートをブロードキャストするよう指令を出し、
    該レポートが前記メンバーシップ変更を記述し、および、
    該サブセットが、該サブセット内の各ノードを参照するテーブルを調査することによって確定される、
    ことを特徴とするコンピュータ実行可能命令を含む、1つまたは複数のコンピュータ可読媒体。
  32. 前記テーブルは複数のフィンガテーブルエントリを有するフィンガテーブルとして構成され、各フィンガテーブルエントリは、対応するノードを対数関数の使用によって記載する、請求項31の媒体。
  33. ピアツーピアネットワーク内の前記複数のノードは、該複数のノードによって提供されるリソース空間を複数のゾーンに分割するために分散ハッシュテーブルを利用する、請求項31の媒体。
  34. 前記テーブルは前記サブセット内で参照される各ノードをプロービングすることによってメンテナンスされる、請求項31の媒体。
  35. ピアツーピアネットワークに配置された複数のノードを含み、各ノードがコンピュータ命令を実行するためのプロセッサを含むシステムであって、
    前記各ノードは、前記ノードの1組を参照する複数のSSRTエントリを有するソフトステートルーティングテーブル(SSRT)を含み、
    各SSRTエントリは、前記ノードの前記1組からの個々のノードを参照し、
    前記コンピュータ命令は、前記プロセッサによって実行されたときに、前記ノードの前記1組に含まれる少なくとも1つのノードからの通知のブロードキャストを受信して、対応する前記各SSRTエントリを更新する
    ことを特徴とするシステム。
  36. 前記通知は加入イベントまたは離脱イベントである、請求項35のシステム。
  37. 前記通知は、前記少なくとも1つのノードに含まれるフィンガテーブルを調査することによって、前記少なくとも1つのノードによるブロードキャストのために構成される、請求項35のシステム。
  38. 前記各ノードは前記ピアツーピアネットワーク内に提供されるリソースについてのハッシュ空間を定義するリーフセットテーブルをさらに含む、請求項35のシステム。
  39. 前記各ノードは複数のフィンガテーブルエントリを有するフィンガテーブルをさらに含み、各フィンガテーブルエントリは、対応するノードのロケーションを対数関数の使用によって記載する、請求項35のシステム。
  40. 複数のノードを有するピアツーピアネットワーク内に含まれ、各ノードが複数のブロックに分割可能な識別子を介して見つけられる1つのノードであって、
    プロセッサおよびメモリを備え、
    該メモリが、前記ピアツーピアネットワーク内で提供されるリソースについてのハッシュ空間を定義するリーフセットテーブルと、複数のフィンガテーブルエントリを有し、各フィンガテーブルエントリが、対応するノードのロケーションを対数関数の使用によって記述するフィンガテーブルと、ソフトステートルーティングテーブル(SSRT)と
    をメンテナンスするように構成され、
    該テーブルが、夫々が前記複数のノードの各々を参照するSSRTエントリと、互いにマッチする第1のブロックを有する前記SSRTエントリの第1のグルーピングと、前記互いにマッチする第1のブロックおよび互いにマッチする第2のブロックを有する前記SSRTエントリの第2のグルーピングとを有する
    ことを特徴とするノード。
  41. 前記リーフセットテーブルおよび前記フィンガテーブルは、プロービングすることで更新されるように構成され、
    前記ソフトステートルーティングテーブルは、前記SSRTエントリによって参照される1つまたは複数のノードからの通知のブロードキャストを受信することで更新されるように構成される、請求項40のノード。
  42. 前記通知は、前記少なくとも1つのノードに含まれるフィンガテーブルを調査することによって、前記少なくとも1つのノードによるブロードキャストのために構成される、請求項41のノード。
  43. 前記ソフトステートルーティングテーブルの前記SSRTエントリの数は、前記ノードが利用可能なリソースに基づいて決定される、請求項40のノード。
  44. 前記ソフトステートルーティングテーブルの前記SSRTエントリの数は、前記ピアツーピアネットワーク内の別のノードと比較される前記ノードが利用可能なリソースに基づいて決定される、請求項40のノード。
  45. 複数のノードを有するピアツーピアネットワーク内に含まれる1つのノードであって、
    プロセッサと、
    前記複数のノードの各々を夫々が参照するソフトステートルーティングテーブルエントリを有するソフトステートルーティングテーブル(SSRT)と、別のノードへの伝達のために前記ソフトステートルーティングテーブルエントリを圧縮するための反復ブルームフィルタとをメンテナンスするように構成されたメモリと
    を備えたことを特徴とするノード。
  46. 前記反復ブルームフィルタは複数のブルームフィルタを含む、請求項45のノード。
JP2005094739A 2004-03-31 2005-03-29 ピアツーピアネットワークにおけるルーティング Expired - Fee Related JP4806203B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US55937004P 2004-03-31 2004-03-31
US60/559,370 2004-03-31
US10/853,933 US7730207B2 (en) 2004-03-31 2004-05-25 Routing in peer-to-peer networks
US10/853,933 2004-05-25

Publications (2)

Publication Number Publication Date
JP2005323346A true JP2005323346A (ja) 2005-11-17
JP4806203B2 JP4806203B2 (ja) 2011-11-02

Family

ID=34890598

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005094739A Expired - Fee Related JP4806203B2 (ja) 2004-03-31 2005-03-29 ピアツーピアネットワークにおけるルーティング

Country Status (12)

Country Link
US (1) US7730207B2 (ja)
EP (1) EP1583326B1 (ja)
JP (1) JP4806203B2 (ja)
KR (1) KR101120724B1 (ja)
CN (1) CN1681257B (ja)
AT (1) ATE488083T1 (ja)
AU (1) AU2005201191B2 (ja)
BR (1) BRPI0501178A (ja)
CA (1) CA2503360A1 (ja)
DE (1) DE602005024636D1 (ja)
MX (1) MXPA05003462A (ja)
RU (1) RU2408064C2 (ja)

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006174417A (ja) * 2004-10-22 2006-06-29 Microsoft Corp リソース要求を対応するリソースに会合させる方法およびシステム
JP2008011448A (ja) * 2006-06-30 2008-01-17 Ntt Docomo Inc アドホックネットワーク、ノード、経路制御方法、及び経路制御プログラム
JP2008167443A (ja) * 2006-12-30 2008-07-17 Arcsoft (Shanghai) Technology Co Ltd キャッシング及びピア・ツー・ピアルックアップによる電話番号とipアドレスとのペアリングの決定
US7860030B2 (en) 2006-06-23 2010-12-28 Canon Kabushiki Kaisha Communication system to form communication network for communication apparatuses
US7958262B2 (en) 2004-10-22 2011-06-07 Microsoft Corporation Allocating and reclaiming resources within a rendezvous federation
JP2011525663A (ja) * 2008-06-19 2011-09-22 クゥアルコム・インコーポレイテッド ピアツーピアオーバレイネットワークにおけるイベントの配信およびルーティングのための方法および装置
US8090880B2 (en) 2006-11-09 2012-01-03 Microsoft Corporation Data consistency within a federation infrastructure
US8095601B2 (en) 2004-10-22 2012-01-10 Microsoft Corporation Inter-proximity communication within a rendezvous federation
US8095600B2 (en) 2004-10-22 2012-01-10 Microsoft Corporation Inter-proximity communication within a rendezvous federation
JP2012519424A (ja) * 2009-02-26 2012-08-23 クゥアルコム・インコーポレイテッド 拡張オーバーレイ状態維持のための方法および装置
US8392515B2 (en) 2004-10-22 2013-03-05 Microsoft Corporation Subfederation creation and maintenance in a federation infrastructure
US8549175B2 (en) 2009-06-09 2013-10-01 Qualcomm Incorporated Methods and apparatus for adaptively scheduling a finger stabilization algorithm
US8549180B2 (en) 2004-10-22 2013-10-01 Microsoft Corporation Optimizing access to federation infrastructure-based resources
US9647917B2 (en) 2004-10-22 2017-05-09 Microsoft Technology Licensing, Llc Maintaining consistency within a federation infrastructure
JP2018022532A (ja) * 2013-07-02 2018-02-08 コンヴィーダ ワイヤレス, エルエルシー セマンティクス公表および発見のための機構

Families Citing this family (79)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8626820B1 (en) 2003-01-21 2014-01-07 Peer Fusion, Inc. Peer to peer code generator and decoder for digital systems
US9372870B1 (en) 2003-01-21 2016-06-21 Peer Fusion, Inc. Peer to peer code generator and decoder for digital systems and cluster storage system
US7418454B2 (en) * 2004-04-16 2008-08-26 Microsoft Corporation Data overlay, self-organized metadata overlay, and application level multicasting
US7656810B2 (en) * 2005-03-25 2010-02-02 Microsoft Corporation System and method for monitoring and reacting to peer-to-peer network metrics
US7643458B1 (en) * 2005-05-25 2010-01-05 Hewlett-Packard Development Company, L.P. Communicating between wireless communities
JP2007027996A (ja) * 2005-07-13 2007-02-01 Konica Minolta Holdings Inc ネットワークにおける論理接続方法および情報処理装置
JP4544072B2 (ja) * 2005-07-20 2010-09-15 ブラザー工業株式会社 ノード装置、コンピュータプログラム、情報配信システム、及びネットワーク参加方法
US8055788B1 (en) * 2005-11-21 2011-11-08 Hong Kong University Of Science And Technology Efficient person search mechanism in peer-to-peer networks
US7468952B2 (en) * 2005-11-29 2008-12-23 Sony Computer Entertainment Inc. Broadcast messaging in peer to peer overlay network
US8904456B2 (en) * 2006-02-13 2014-12-02 Tvu Networks Corporation Methods, apparatus, and systems for providing media content over a communications network
US20070233832A1 (en) * 2006-03-30 2007-10-04 Matsushita Electric Industrial Co., Ltd. Method of distributed hash table node ID collision detection
JP4692355B2 (ja) * 2006-03-30 2011-06-01 ブラザー工業株式会社 情報通信システム、情報通信方法、情報通信システムに含まれるノード装置および情報処理プログラム
JP4862463B2 (ja) * 2006-04-11 2012-01-25 ブラザー工業株式会社 情報通信システム、コンテンツカタログ情報検索方法、及びノード装置等
JP2007280303A (ja) * 2006-04-11 2007-10-25 Brother Ind Ltd 情報通信システム、コンテンツカタログ情報配信方法、及びノード装置等
JP4655986B2 (ja) * 2006-04-12 2011-03-23 ブラザー工業株式会社 ノード装置、記憶制御プログラム及び情報記憶方法
US20070255823A1 (en) * 2006-05-01 2007-11-01 International Business Machines Corporation Method for low-overhead message tracking in a distributed messaging system
US20080059631A1 (en) * 2006-07-07 2008-03-06 Voddler, Inc. Push-Pull Based Content Delivery System
CA2594716C (en) * 2006-07-26 2013-10-01 V V S Virtual Video Systems (Canada) Inc. Video and multimedia distribution system
EP2080110A4 (en) * 2006-10-05 2014-01-15 Nat Ict Australia Ltd MULTI-USER AND DECENTRALIZED ONLINE ENVIRONMENT
KR100810351B1 (ko) * 2006-11-15 2008-03-04 재단법인서울대학교산학협력재단 통신 시스템에서 채널 프루빙 시스템 및 방법
US20080198754A1 (en) * 2007-02-20 2008-08-21 At&T Knowledge Ventures, Lp Method and system for testing a communication network
US7984158B2 (en) * 2007-03-20 2011-07-19 Microsoft Corporation Web service for coordinating actions of clients
EP2141863B1 (en) * 2007-03-30 2012-10-03 Pioneer Corporation Network configuration investigating device, network configuration investigating program, network configuration management method, and network configuration management system
FR2915044B1 (fr) * 2007-04-16 2009-09-18 France Telecom Procede de determination de la dynamique d'un reseau logique
US20080307436A1 (en) * 2007-06-06 2008-12-11 Microsoft Corporation Distributed publish-subscribe event system with routing of published events according to routing tables updated during a subscription process
US8238237B2 (en) 2007-06-18 2012-08-07 Sony Computer Entertainment Inc. Load balancing distribution of data to multiple recipients on a peer-to-peer network
US8630281B2 (en) * 2007-07-10 2014-01-14 Qualcomm Incorporated Coding methods of communicating identifiers in peer discovery in a peer-to-peer network
US7961708B2 (en) * 2007-07-10 2011-06-14 Qualcomm Incorporated Coding methods of communicating identifiers in peer discovery in a peer-to-peer network
US9848372B2 (en) * 2007-07-10 2017-12-19 Qualcomm Incorporated Coding Methods of communicating identifiers in peer discovery in a peer-to-peer network
US8520704B2 (en) * 2007-07-10 2013-08-27 Qualcomm Incorporated Coding methods of communicating identifiers in peer discovery in a peer-to-peer network
US8494007B2 (en) * 2007-07-10 2013-07-23 Qualcomm Incorporated Coding methods of communicating identifiers in peer discovery in a peer-to-peer network
CN101399746B (zh) * 2007-09-26 2011-03-16 华为技术有限公司 报文路由方法、系统、设备和选择备份资源的方法、系统
CN101442479B (zh) * 2007-11-22 2011-03-30 华为技术有限公司 P2p对等网络中节点失效后的路由更新方法、设备及系统
CN101965716A (zh) * 2008-01-10 2011-02-02 惠普开发有限公司 多路对等媒体流传送
US8775817B2 (en) * 2008-05-12 2014-07-08 Microsoft Corporation Application-configurable distributed hash table framework
EP2139202B1 (en) * 2008-06-27 2012-03-28 Alcatel Lucent Method of providing a successor list
US8018940B2 (en) * 2008-08-13 2011-09-13 Alcatel Lucent Network address lookup based on bloom filters
US7990973B2 (en) * 2008-08-13 2011-08-02 Alcatel-Lucent Usa Inc. Hash functions for applications such as network address lookup
US20100228701A1 (en) * 2009-03-06 2010-09-09 Microsoft Corporation Updating bloom filters
CN101534309B (zh) 2009-04-14 2013-03-13 华为技术有限公司 节点注册方法、路由更新方法、通讯系统以及相关设备
CN101997759B (zh) * 2009-08-10 2013-06-05 中兴通讯股份有限公司 一种业务实现方法及业务系统
US9009299B2 (en) * 2010-01-07 2015-04-14 Polytechnic Institute Of New York University Method and apparatus for identifying members of a peer-to-peer botnet
US9832104B2 (en) 2010-02-11 2017-11-28 Microsoft Technology Licensing, Llc Reliable broadcast in a federation of nodes
US9055082B2 (en) * 2010-08-25 2015-06-09 Alcatel Lucent Peer to peer localization for content in a distributed hash table
US8768981B1 (en) 2010-08-27 2014-07-01 Disney Enterprises, Inc. System and method for distributing and accessing files in a distributed storage system
US8290919B1 (en) * 2010-08-27 2012-10-16 Disney Enterprises, Inc. System and method for distributing and accessing files in a distributed storage system
US8392368B1 (en) 2010-08-27 2013-03-05 Disney Enterprises, Inc. System and method for distributing and accessing files in a distributed storage system
US8934492B1 (en) 2010-09-28 2015-01-13 Adtran, Inc. Network systems and methods for efficiently dropping packets carried by virtual circuits
EP2656244A4 (en) * 2010-12-20 2015-10-21 Ericsson Telefon Ab L M SEARCH IN POST-TO-POST NETWORKS
JP5387596B2 (ja) * 2011-02-28 2014-01-15 ブラザー工業株式会社 情報通信システム、情報通信方法、情報処理装置およびプログラム
US9667713B2 (en) * 2011-03-21 2017-05-30 Apple Inc. Apparatus and method for managing peer-to-peer connections between different service providers
TWI571166B (zh) * 2012-01-13 2017-02-11 蘋果公司 在點對點網路環境中同步站台之選擇
US8886827B2 (en) * 2012-02-13 2014-11-11 Juniper Networks, Inc. Flow cache mechanism for performing packet flow lookups in a network device
EP2639708B8 (en) * 2012-03-13 2019-07-31 Ricoh Company, Ltd. Method and system for storing and retrieving data
FR2994003A1 (fr) * 2012-07-26 2014-01-31 Jean Louis Guenego Dispositif informatique de stockage de donnees privees totalement distribue en environnement hostile
KR102110524B1 (ko) * 2013-03-20 2020-05-28 삼성전자주식회사 컨텐츠 중심 네트워크에서 블룸 필터를 이용하여 라우팅을 수행하는 노드 및 그 방법
CN104079675B (zh) * 2013-03-25 2017-12-29 联想(北京)有限公司 信息处理的方法、电子设备及服务器
JP6034754B2 (ja) * 2013-06-12 2016-11-30 株式会社東芝 サーバ装置、通信システム、およびデータ発行方法
RU2538323C1 (ru) * 2013-06-28 2015-01-10 Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования "Южно-Российский государственный университет экономики и сервиса" (ФГБОУ ВПО "ЮРГУЭС") Способ организации таблицы фильтрации межсетевого коммутатора и устройство для его реализации
WO2015029592A1 (ja) * 2013-08-27 2015-03-05 ソニー株式会社 情報処理装置および情報処理方法
US9917727B2 (en) 2014-06-03 2018-03-13 Nicira, Inc. Consistent hashing for network traffic dispatching
US9940356B2 (en) * 2014-07-31 2018-04-10 International Business Machines Corporation Efficient join-filters for parallel processing
US10163420B2 (en) 2014-10-10 2018-12-25 DimensionalMechanics, Inc. System, apparatus and methods for adaptive data transport and optimization of application execution
US10062354B2 (en) 2014-10-10 2018-08-28 DimensionalMechanics, Inc. System and methods for creating virtual environments
US10277686B2 (en) * 2015-07-29 2019-04-30 Cisco Technology, Inc. Service discovery optimization in a network based on bloom filter
EP3449379B1 (en) * 2016-04-28 2021-10-06 Kandou Labs S.A. Vector signaling codes for densely-routed wire groups
US10417094B1 (en) 2016-07-13 2019-09-17 Peer Fusion, Inc. Hyper storage cluster
CN110688523A (zh) * 2019-09-29 2020-01-14 深圳市网心科技有限公司 视频服务提供方法、装置、电子设备及存储介质
US11451475B2 (en) 2019-12-19 2022-09-20 Huawei Technologies Co., Ltd. Packet forwarding based on geometric location
US11329717B2 (en) 2020-05-26 2022-05-10 Huawei Technologies Co., Ltd. Packet forwarding incorporating partial sorting of path costs or utilities
US11438823B2 (en) 2020-05-29 2022-09-06 Huawei Technologies Co., Ltd. Orthodromic routing
US11374852B2 (en) 2020-05-29 2022-06-28 Huawei Technologies Co., Ltd. Piecewise shortest path first routing
KR102503028B1 (ko) * 2020-11-27 2023-02-23 (주)유미테크 블룸필터를 이용한 분산식별자 검색 방법
US11374652B1 (en) 2020-12-10 2022-06-28 Huawei Technologies Co., Ltd. Method and apparatus for limited flooding and network routing region membership management
US11909627B2 (en) 2021-01-04 2024-02-20 Huawei Technologies Co., Ltd. Method and apparatus for managing network status information using multiple degree of precision graph
US11601780B2 (en) 2021-01-05 2023-03-07 Huawei Technologies Co., Ltd. Method and apparatus for propagating network status updates using directional tracking
US11476925B2 (en) 2021-02-04 2022-10-18 Huawei Technologies Co., Ltd. Method and apparatus for limited flooding in networks using transit nodes
US11799761B2 (en) 2022-01-07 2023-10-24 Vmware, Inc. Scaling edge services with minimal disruption
US11888747B2 (en) 2022-01-12 2024-01-30 VMware LLC Probabilistic filters for use in network forwarding and services

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002077189A (ja) * 2000-08-31 2002-03-15 Nec Eng Ltd Atm交換網における重要呼制御方式
US20020035604A1 (en) * 1997-07-16 2002-03-21 Cohen Andrew R. Methods for performing client-hosted application sessions in distributed processing systems
JP2002247088A (ja) * 2001-02-16 2002-08-30 Nippon Telegr & Teleph Corp <Ntt> 無線ノード及びそのパケット経路探索方法
EP1398924A2 (en) * 2002-09-11 2004-03-17 Microsoft Corporation System and method for creating improved overlay networks with an efficient distributed data structure

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1691315A1 (en) * 1994-10-27 2006-08-16 Intarsia Software LLC Data copyright management system
FR2749681B1 (fr) * 1996-06-10 1998-07-10 Bull Sa Circuit pour transborder des donnees entre memoires distantes et calculateur comprenant un tel circuit
US5796830A (en) * 1996-07-29 1998-08-18 International Business Machines Corporation Interoperable cryptographic key recovery system
US5784463A (en) * 1996-12-04 1998-07-21 V-One Corporation Token distribution, registration, and dynamic configuration of user entitlement for an application level security system and method
US6236729B1 (en) * 1997-06-06 2001-05-22 Hitachi, Ltd. Key recovery method and system
US6108699A (en) * 1997-06-27 2000-08-22 Sun Microsystems, Inc. System and method for modifying membership in a clustered distributed computer system and updating system configuration
US6185308B1 (en) * 1997-07-07 2001-02-06 Fujitsu Limited Key recovery system
TW374965B (en) * 1998-03-17 1999-11-21 Winbond Electronics Corp Method of processing of transmission of confidential data and the network system
JPH11275068A (ja) * 1998-03-20 1999-10-08 Fujitsu Ltd 鍵管理サーバ、チャットシステムの端末装置、チャットシステム及び記録媒体
US6311270B1 (en) * 1998-09-14 2001-10-30 International Business Machines Corporation Method and apparatus for securing communication utilizing a security processor
US6038322A (en) * 1998-10-20 2000-03-14 Cisco Technology, Inc. Group key distribution
US6154543A (en) * 1998-11-25 2000-11-28 Hush Communications Anguilla, Inc. Public key cryptosystem with roaming user capability
US6367010B1 (en) * 1999-07-02 2002-04-02 Postx Corporation Method for generating secure symmetric encryption and decryption
DE60011990T2 (de) * 2000-02-22 2005-07-07 Telefonaktiebolaget Lm Ericsson (Publ) Verfahren und Vorrichtung in einem Kommunikationsnetzwerk
JP2002108910A (ja) * 2000-09-27 2002-04-12 Nec Soft Ltd 暗号化ファイルシステム及び暗号化ファイル検索方法並びにコンピュータ可読記録媒体
US20020090089A1 (en) * 2001-01-05 2002-07-11 Steven Branigan Methods and apparatus for secure wireless networking
JP2002271312A (ja) * 2001-03-14 2002-09-20 Hitachi Ltd 公開鍵管理方法
US7054867B2 (en) * 2001-09-18 2006-05-30 Skyris Networks, Inc. Systems, methods and programming for routing and indexing globally addressable objects and associated business models
US7305556B2 (en) * 2001-12-05 2007-12-04 Canon Kabushiki Kaisha Secure printing with authenticated printer key
US20030217263A1 (en) * 2002-03-21 2003-11-20 Tsutomu Sakai System and method for secure real-time digital transmission
US7142524B2 (en) * 2002-05-01 2006-11-28 Meshnetworks, Inc. System and method for using an ad-hoc routing algorithm based on activity detection in an ad-hoc network
CN1160911C (zh) * 2002-09-06 2004-08-04 联想(北京)有限公司 家庭主干网中实现设备间动态组网与资源共享的方法
US7603481B2 (en) * 2002-10-31 2009-10-13 Novell, Inc. Dynamic routing through a content distribution network
US8499086B2 (en) * 2003-01-21 2013-07-30 Dell Products L.P. Client load distribution
US20050015511A1 (en) * 2003-07-02 2005-01-20 Nec Laboratories America, Inc. Accelerated large data distribution in overlay networks
US20050219929A1 (en) 2004-03-30 2005-10-06 Navas Julio C Method and apparatus achieving memory and transmission overhead reductions in a content routing network

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020035604A1 (en) * 1997-07-16 2002-03-21 Cohen Andrew R. Methods for performing client-hosted application sessions in distributed processing systems
JP2002077189A (ja) * 2000-08-31 2002-03-15 Nec Eng Ltd Atm交換網における重要呼制御方式
JP2002247088A (ja) * 2001-02-16 2002-08-30 Nippon Telegr & Teleph Corp <Ntt> 無線ノード及びそのパケット経路探索方法
EP1398924A2 (en) * 2002-09-11 2004-03-17 Microsoft Corporation System and method for creating improved overlay networks with an efficient distributed data structure

Cited By (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8095600B2 (en) 2004-10-22 2012-01-10 Microsoft Corporation Inter-proximity communication within a rendezvous federation
US9647917B2 (en) 2004-10-22 2017-05-09 Microsoft Technology Licensing, Llc Maintaining consistency within a federation infrastructure
US8095601B2 (en) 2004-10-22 2012-01-10 Microsoft Corporation Inter-proximity communication within a rendezvous federation
US8549180B2 (en) 2004-10-22 2013-10-01 Microsoft Corporation Optimizing access to federation infrastructure-based resources
US7958262B2 (en) 2004-10-22 2011-06-07 Microsoft Corporation Allocating and reclaiming resources within a rendezvous federation
US8417813B2 (en) 2004-10-22 2013-04-09 Microsoft Corporation Rendezvousing resource requests with corresponding resources
JP4726604B2 (ja) * 2004-10-22 2011-07-20 マイクロソフト コーポレーション リソース要求を対応するリソースに会合させる方法およびシステム
JP2006174417A (ja) * 2004-10-22 2006-06-29 Microsoft Corp リソース要求を対応するリソースに会合させる方法およびシステム
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
US7860030B2 (en) 2006-06-23 2010-12-28 Canon Kabushiki Kaisha Communication system to form communication network for communication apparatuses
US7970933B2 (en) 2006-06-30 2011-06-28 Ntt Docomo, Inc. Ad hoc network, node, routing control method and routing control program
JP2008011448A (ja) * 2006-06-30 2008-01-17 Ntt Docomo Inc アドホックネットワーク、ノード、経路制御方法、及び経路制御プログラム
JP4732972B2 (ja) * 2006-06-30 2011-07-27 株式会社エヌ・ティ・ティ・ドコモ アドホックネットワーク、ノード、経路制御方法、及び経路制御プログラム
US8090880B2 (en) 2006-11-09 2012-01-03 Microsoft Corporation Data consistency within a federation infrastructure
US8990434B2 (en) 2006-11-09 2015-03-24 Microsoft Technology Licensing, Llc Data consistency within a federation infrastructure
JP2008167443A (ja) * 2006-12-30 2008-07-17 Arcsoft (Shanghai) Technology Co Ltd キャッシング及びピア・ツー・ピアルックアップによる電話番号とipアドレスとのペアリングの決定
US8996726B2 (en) 2008-06-19 2015-03-31 Qualcomm Incorporated Methods and apparatus for event distribution and routing in peer-to-peer overlay networks
JP2011525663A (ja) * 2008-06-19 2011-09-22 クゥアルコム・インコーポレイテッド ピアツーピアオーバレイネットワークにおけるイベントの配信およびルーティングのための方法および装置
US9240927B2 (en) 2009-02-26 2016-01-19 Qualcomm Incorporated Methods and apparatus for enhanced overlay state maintenance
JP2012519424A (ja) * 2009-02-26 2012-08-23 クゥアルコム・インコーポレイテッド 拡張オーバーレイ状態維持のための方法および装置
US8549175B2 (en) 2009-06-09 2013-10-01 Qualcomm Incorporated Methods and apparatus for adaptively scheduling a finger stabilization algorithm
US10635663B2 (en) 2013-07-02 2020-04-28 Convida Wireless, Llc Mechanisms for semantics publishing and discovery
JP2018022532A (ja) * 2013-07-02 2018-02-08 コンヴィーダ ワイヤレス, エルエルシー セマンティクス公表および発見のための機構

Also Published As

Publication number Publication date
MXPA05003462A (es) 2005-11-23
EP1583326A3 (en) 2006-01-25
JP4806203B2 (ja) 2011-11-02
EP1583326A2 (en) 2005-10-05
AU2005201191A1 (en) 2005-10-20
RU2005109223A (ru) 2006-10-10
CN1681257B (zh) 2011-06-08
CN1681257A (zh) 2005-10-12
US20050223102A1 (en) 2005-10-06
EP1583326B1 (en) 2010-11-10
BRPI0501178A (pt) 2005-11-01
ATE488083T1 (de) 2010-11-15
DE602005024636D1 (de) 2010-12-23
AU2005201191B2 (en) 2009-08-27
RU2408064C2 (ru) 2010-12-27
KR101120724B1 (ko) 2012-03-23
US7730207B2 (en) 2010-06-01
CA2503360A1 (en) 2005-09-30
KR20060045065A (ko) 2006-05-16

Similar Documents

Publication Publication Date Title
JP4806203B2 (ja) ピアツーピアネットワークにおけるルーティング
EP2171607B1 (en) Load balancing distribution of data to multiple recipients on a peer-to-peer network
JP5551270B2 (ja) ピアツーピアネットワークを分解して、分解されたピアツーピアネットワークを使用するための方法および装置
Lua et al. A survey and comparison of peer-to-peer overlay network schemes
Chawathe et al. Making gnutella-like p2p systems scalable
JP4652435B2 (ja) 階層的ピアツーピア・ネットワークの最適運用
US7644182B2 (en) Reconfiguring a multicast tree
CN111046065B (zh) 可扩展的高性能分布式查询处理方法及装置
US8880665B2 (en) Nonstop service system using voting, and information updating and providing method in the same
Shen et al. A proximity-aware interest-clustered P2P file sharing system
Demirci et al. A hierarchical P2P clustering framework for video streaming systems
Bertier et al. D2HT: the best of both worlds, Integrating RPS and DHT
Zhang et al. PeerCast: Churn-resilient end system multicast on heterogeneous overlay networks
Graffi et al. Skyeye. kom: An information management over-overlay for getting the oracle view on structured p2p systems
JP4533923B2 (ja) 階層型ピアツーピアシステムにおける負荷バランシング機能を有するスーパーピア及び該スーパーピアを動作させる方法
Lua et al. ASurvey AND COMPARISON OF PEER-TO-PEER OVERLAY NETWORK SCHEMES
JP2009230686A (ja) コンテンツ管理サーバ及びコンテンツ管理プログラム
JP2010182301A (ja) 自己組織型分散オーバーレイ・ネットワークにおいてオブジェクトへの参照を分散させる方法、コンピュータプログラム、及びノード、並びに自己組織型分散オーバーレイ・ネットワーク
Ktari et al. Exploiting power-law node degree distribution in chord overlays
Zheng et al. Peer-to-peer: A technique perspective
Iwamaru et al. Introducing group participation support into P2P web caching systems
Chang et al. A distributed P2P network based on increasing reliability and scalability for internet applications
Gouvas Service Provision with autonomic characteristics in mesh environments

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080324

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100625

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100702

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101004

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101228

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110325

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110422

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110713

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110805

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: 20110812

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: 20140819

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees