JP4358581B2 - 効率的な分散データ構造を備えた改良されたオーバレイネットワークを生成するシステムおよび方法 - Google Patents

効率的な分散データ構造を備えた改良されたオーバレイネットワークを生成するシステムおよび方法 Download PDF

Info

Publication number
JP4358581B2
JP4358581B2 JP2003316039A JP2003316039A JP4358581B2 JP 4358581 B2 JP4358581 B2 JP 4358581B2 JP 2003316039 A JP2003316039 A JP 2003316039A JP 2003316039 A JP2003316039 A JP 2003316039A JP 4358581 B2 JP4358581 B2 JP 4358581B2
Authority
JP
Japan
Prior art keywords
node
nodes
name
ring
skipnet
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.)
Expired - Fee Related
Application number
JP2003316039A
Other languages
English (en)
Other versions
JP2004266796A (ja
Inventor
ジェイ.ハービー ニコラス
ビー.ジョーンズ マイケル
サロイユ ステファン
エム.サイマー マービン
ウォルマン アラステア
アジャ アトゥル
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 JP2004266796A publication Critical patent/JP2004266796A/ja
Application granted granted Critical
Publication of JP4358581B2 publication Critical patent/JP4358581B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • 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
    • H04L12/00Data switching networks
    • H04L12/54Store-and-forward switching systems 
    • H04L12/56Packet switching systems
    • 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
    • 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/1061Peer-to-peer [P2P] networks using node-based peer discovery mechanisms
    • H04L67/1065Discovery involving distributed pre-established resource-based relationships among peers, e.g. based on distributed hash tables [DHT] 
    • 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)
  • Computer Security & Cryptography (AREA)
  • Computer And Data Communications (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Multi Processors (AREA)
  • Mobile Radio Communication Systems (AREA)

Description

本発明は、一般的にコンピュータネットワークに関し、より具体的には、ピアツーピアネットワークアプリケーションおよび分散データベースに使用可能なオーバレイネットワークに関する。
今もなお増え続けるコンピュータがインターネット上で相互にネットワーク化されるにつれて、ピアツーピア(P2P)ネットワークアプリケーションおよび分散データベースの有用性および重要性が明らかになってきた。
ピアツーピアネットワークとは、一般的に、単一のサーバまたは制御装置がネットワークを管理する責務を負うことのない、コンピュータの自己管理型ネットワークと考えられる。ピアツーピアネットワークおよびアプリケーションの生成には、いくつかの異なるアーキテクチャを使用できる。こうしたアーキテクチャの1つがオーバレイネットワークである。一般に、オーバレイネットワークは、インターネットプロトコル(IP)アドレスなどの従来のネットワーキングアドレスを介して、あるレベルの間接的な処理を提供する。オーバレイネットワークを使用することの重要な利点は、アプリケーションソフトウェアによってルーティングを決定できることである。
図1Aは、典型的なオーバレイネットワークを示す図である。オーバレイネットワークに属するコンピュータ(10)は、基礎となるネットワーク媒体11を使用して相互間でメッセージをルーティングする。基礎となるネットワーク媒体は、特定のコンピュータ間でメッセージを直接ルーティングするための情報および機能を有するが、オーバレイネットワークは、典型的には部分的なルーティング情報のみを維持し、その意図する宛先にメッセージを送達するために中間ノードを介した連続的な転送に依拠する。オーバレイネットワークが一般的に使用されるのが、分散ハッシュテーブルを構築する場合である。各コンピュータ名は、GUID(広域的一意識別子)を生成するために、ハッシングアルゴリズム(例えばMD5ハッシュ)を介して実行される。オーバレイネットワークの各メンバは、分散ハッシュテーブルの一部を格納する。オーバレイネットワーク上のノードから文書の要求または更新が送信されると、発信元ノードは要求された文書のファイル名をハッシュした後、そのルーティングテーブルエントリを調べて、その文書のハッシュに最も近いIDのノードを見つける。次に要求は、この最も近い中間ノードに転送される。中間ノードは同じプロセスを実行して、文書のハッシュと中間ノードのルーティングテーブルエントリとを比較する。オーバレイネットワークは、ノードのIDが他のどんなノードのIDよりも文書のハッシュに近い場合にこれを伝えられるように、そのルーティングテーブル内に十分な情報を維持する。その後、この最も近いノードが文書を格納し、これに関する照会に応答する責務を負う。
ピアツーピアネットワーク用の現在のオーバレイネットワークのタイプ例には、Ben Y.Zhao等によりカリフォルニア大学バークレー校で開発されたTapestry、マサチューセッツ工科大学で開発されたChord、およびMicrosoft社によって開発されたPastryが含まれる。Tapestry、Chord、およびPastryは、分散システムを構築するためのツールキットである。
Tapestryは、ピアツーピア、ワイドエリア非集中型ルーティング、およびロケーションネットワークのインフラストラクチャを提供する。Tapestryは、アプリケーションレイヤ(オペレーティングシステムの一番上)にあるオーバレイネットワークである。Tapestryをネットワーク内の別々のマシン上に配置すると、ロケーションおよびネットワークに無関係の名前が与えられるとすれば、任意のノードがネットワーク内の任意の他のノードにメッセージをルーティングすることができる。さらに、Tapestryネットワーク内の任意のノードは、オブジェクト名が与えられるとすれば、他のTapestryノード上のアプリケーションがこれらのオブジェクトを容易かつ効率的に見つけられるような方法で、所有するオブジェクトに関するロケーション情報を広告または「公表」することができる。Tapestryは、障害または攻撃のポイントとなる可能性のあるどんな集中化ポイントもなしに、個々のマシンを真のピアツーピアネットワークに形成する。
Pastryは、ピアツーピアアプリケーション用の汎用、スケーラブル、かつ有効な基板である。Pastryノードは、インターネット内に非集中型、自己編成型、かつ耐障害性のオーバレイネットワークを形成する。Pastryは、アプリケーション独立な方法により、有効な要求ルーティング、確定的オブジェクトロケーション、およびロードバランシングを提供する。さらにPastryは、アプリケーション特有のオブジェクト複製、キャッシング、および障害回復をサポートし、容易にするメカニズムを提供する。
MITのChordプロジェクトは、ピアツーピア概念を使用するスケーラブルで堅固な分散システムに関する。Chordは、分散ハッシュ検索基本要素に基づくものである。Chordは、非集中型および対称形であり、log(N)メッセージのみを使用してデータを見つけることが可能であって、Nはシステム中のノード数である。これらに加えて他のオーバレイシステムもある。例えば、CAN、Kademlia、およびViceroyは、同様の他のシステムである。新しいオーバレイ設計が次々と登場している。
Tapestry、Pastry、およびChordなどの多くの既存のシステムは、通常、わずかに異なる方法ではあるが、ハッシングの特徴に依存している。これらには、均一分散識別子、識別子スペース内での演算、および固定長識別子が含まれる。ChordおよびPastryは、どちらも効率的なオペレーションに関する第1の特性に依存する。Chordは、その「フィンガ(finger)」を決定するための識別子スペース内での演算に依存する。最終的にPastryは、固定深さルーティングテーブルを保証するための固定長識別子に依存する。
ハッシングの使用は、分散ハッシュテーブルを実施する際にも必須であることは明らかである。ハッシングの主な利点は、ノード間でのデータの均一分散である。この特徴は、しばしば「ロードバランシング」として大いに推奨されるが、ロードバランシング設計の単なる一面にすぎない。ハッシングに基づく多くのオーバレイネットワークは、ある種のピアツーピアアプリケーションにとって重要な局所性(locality)の特徴が欠けている。(例えば、非特許文献1参照)ピアツーピアシステムには役立つが、ハッシュベースのオーバレイネットワークで実施するのが困難な2つのこうした特徴が、コンテンツ局所性およびパス局所性である。
コンテンツ局所性とは、特定ノード上にデータ項目を格納する機能のことである。より洗練されていない形では、コンテンツ局所性は、特定セットのノードのうちの任意の1つにデータ項目を格納する機能である。会社や政府機関などの組織にとって、機密文書が組織ネットワークの外に配布されないようにするために、複雑なネットワークセキュリティ手段を実施することは珍しいことではない。従って、これらの組織が、特定の文書がどこに格納されるかを管理することのないピアツーピアアプリケーションを使用する可能性は少ない。例えばXYZ社は、一定の文書がxyz.comドメインに属するコンピュータにのみ確実に格納されることを望む場合がある。
パス局所性とは、ネットワークの特定領域内にある任意の2つのノード間でのルーティングパスがその領域を離れないことを保証する機能のことである。領域は建物、管理ドメインなどであってよい。上記の例を使用すると、XYZ社は、機密メッセージがxyz.comドメイン外にルーティングされるのを制限したい場合がある。パス局所性を使用すると、UserA(usera@xyz.com)からUserB(userb@xyz.com)へのメッセージは、xyz.comドメイン内のコンピュータ間でのみルーティングされるように制限することができる。これは、オーバレイネットワーク上のいくつかの他のドメインがXYZ社の競合会社に属している場合に、特に重要となる可能性がある。
現在のハッシュベースのシステムは、本質的にコンテンツ局所性またはパス局所性をサポートするものではない。実際に、全体的な目的は、システムのすべてのマシンに渡ってロードを均一に拡散させることである。従って、そうしたシステムに普及しているハッシングの使用により、どこにデータが格納されるかおよびどのようにトラフィックがルーティングされるかに関する管理を、実際に減らすかまたは止めることができる。
以下の参照文献は、読者に便利なようにさらに役立つ背景情報を提供することができる。
Pete Keleher, Bobby Bhattacharjee, Bujor Silaghi, "Are Virtualized Overlay networks Too Much of a Good Things?" (IPTPS 2002) I. Stoica, R. Morris, D. Karger, M. F. Kaashoek, and H. Balakrishnan, "Chord: A scalable peer-to-peer lookup service for Internet applications," Proc. ACM SIGCOMM' 01, San Diego, CA, Aug. 2001 A. Rowstron and P. Druschel, "Pastry: Scalable, distributed object location and routing for large-scale peer-to-peer systems," IFIP/ACM International Conference on Distributed Systems Platforms (Middleware), Heidelberg, Germany, pages 329-350, Nov. 2001 Sylvia Ratnasamy, Paul Francis, Mark Handley, Richard Karp, and Scott Shenker, "A Scalable content-Addressable Network," Proceedings of ACM SIGCOMM, San Diego, CA, pp. 161-172, Aug. 2001 Ben Y. Zhao, John D. Kubiatowiez, and Anthony D. Joseph, "Tapestry: An Infrastructure for Fault-tolerant Wide-area Location and Routing," U. C. Berkeley Technical Report W. Pugh, "Skip Lists: A Probabilistic Alternative to Balanced Trees," Communications of the ACM, vol. 33, no. 6, June 1990, pp. 668-676 W. Pugh, "A Skip List Cookbook," Technical Report CS-TR-2286. 1, University of Maryland, 1989 J. I. Munro, T. Papadakis and R. Sedgewick, "Deterministic skip lists," Proc. 3rd Annual ACM-SIAM Symposium on Discrete Algorithms, pages 367-375, 1992 Bozanis P. and Manolopoulos Y., "DSL: Accommodating Skip Lists in the SDDS Model," Proceedings 3rd Workshop on Distributed Data and Structures (WDAS' 2000), L' Aquila, 2000 Sylvia Ratnasamy, Scott Shenker, Ion Stoica "Routing Algorithms for DHTs: Some Open Questions" IPTPS 2002
本発明の目的は、オーバレイネットワークを作成するための改良型システムおよび方法を提供することである。
具体的には、コンテンツ局所性を提供することのできるオーバレイネットワークが求められる。パス局所性を提供することのできるオーバレイネットワークも望ましい。さらに、既存のオーバレイネットワークのルーティング性能を保持しながら、コンテンツ局所性およびパス局所性の特徴を提供するオーバレイネットワークも望ましい。
前述のように、スケーラブルなピアツーピアオーバレイネットワーク上に構築された分散ハッシュテーブルが、ピアツーピアシステムを構築するためのフレキシブルなインフラストラクチャとして近年登場してきた。こうしたシステムの2つの欠点は、データがどこに格納されるかを管理するのが困難であること、およびルーティングパスが管理ドメイン内に留まるように保証するのが困難であることである。スキップネット(SkipNet)とは、キーの順序付けによってデータを編成することで、分散ハッシュテーブルの欠点を補償するために使用することのできる、ある種の分散データ構造のことである。スキップネットは、ノード当たりの対数状態を使用して、対数時間での検索、挿入、および削除をサポートすることができる。スキップネットは、実施に応じて、分散ハッシュテーブルに勝るいくつかの他の潜在的な利点も有する可能性がある。これらの潜在的利点には、効率的な領域照会のサポート、物理ノード上で複数の仮想ノードを実施するより効率的な方法、組織全体または他の別のセグメントが残りのシステムから切り離される(後に再接続される)、区画障害を処理するより効率的な方法、ならびに、システムに参加しているすべてのノードの指定されたサブセットに渡ってロードバランスを実行する機能が含まれる。
本明細書では、スキップネットを使用してオーバレイネットワークを作成、管理、および動作させるための改良型システムおよび方法について開示する。有利なことに、これらのシステムは、典型的には分散ハッシュテーブルの使用に関連付けられたいくつかの欠点を克服する可能性を有する。一実施形態では、ピアツーピアネットワークアプリケーション用のオーバレイネットワークを作成するための方法が企図される。具体的に言えば、図2および8で様々な形で示されるようなルーティングテーブルがリング構造を符号化し、数値スペースまたは辞書編集用(lexicographic)スペースのいずれかで使用することができる。ネットワーク近接を補償することによって、数値スペースおよび辞書編集用スペースそれぞれでのルーティングを最適化するために、2つの追加テーブルが作成されることが好ましい。数値アドレススペースを確立するのに使用されるハッシュ値は、特定のノードがどのリングを接合することになるかを決定し、結果として生じる確率的ネットを保証する際にも使用される。
オーバレイネットワーク上でファイルを格納および取り出すための方法も開示される。一部の実施形態では、この方法が、(例えば、ファイルの格納を特定の1つまたは複数のドメインに限定することによって)あるファイルをオーバレイネットワークの特定のサブセットに拘束することを含むことができる。こうした制約付きのロードバランシングの一実施形態は、数値スペースアドレス割当ての擬似ランダム性に関連付けられたロードバランシングを提供するために、以下で論じるように、ルーティングの終わり近くで数値スペースに移行する前に名前スペースで初期にルーティングすることを伴う。
スキップネットベースのオーバレイネットワークを修復するための方法も開示され、単一のコンピュータ上で複数の仮想ノードをより効率的にホストするための方法も同様に開示される。
本発明の追加の特徴および利点は以下の説明に記載され、一部は説明から明らかになるか、または本発明の実施によって学ぶことができる。本発明の特徴および利点は、添付の特許請求の範囲で具体的に指摘された計器および組合せの手段によって実現および取得することができる。本発明のこれらおよび他の特徴は、以下の説明および添付の特許請求の範囲から、より完全に明らかになろう。以下の詳細な記述に含まれる見出しは、編成のためだけのものであり、本発明または添付の特許請求の範囲を制限または修正することを意図するものではない。
添付の特許請求の範囲は本発明の特徴を詳細に記載したものであり、本発明ならびにその目的および利点は、添付の図面と共に以下の詳細な説明を読むことによって、最も良く理解することができる。
本発明の様々な実施形態の説明に移る前に、本発明の様々な実施形態が実施可能なコンピュータおよびネットワーキング環境について説明する。これは必須ではないが、本発明はコンピュータによって実行されるプログラムによって実施することができる。一般にプログラムには、特定のタスクを実行するかまたは特定の抽象データ型を実施する、ルーチン、オブジェクト、構成要素、データ構造などが含まれる。本明細書で使用される「プログラム」という用語は、単一のプログラムモジュールまたは協働する複数のプログラムモジュールを意味することができる。本明細書で使用される「コンピュータ」という用語は、パーソナルコンピュータ(PC)、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベースのプログラム可能民生電子製品、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、マイクロプロセッサまたはマイクロコントローラを有する家庭用電化製品、ルータ、ゲートウェイ、ハブなどの、1つまたは複数のプログラムを電子的に実行する任意のデバイスが含まれる。本発明は、通信ネットワークを介してリンクされたリモート処理デバイスによってタスクが実行される、分散コンピューティング環境でも使用することができる。分散コンピューティング環境では、プログラムはローカルとリモートの両方のメモリ記憶デバイスに位置することができる。
次に、本発明が使用可能なネットワーク環境の一例について、図1Aを参照しながら説明する。このネットワーク例には、クラウドで表されたネットワーク11を介して互いに通信する、いくつかのコンピュータ10が含まれる。ネットワーク11は、ルータ、ゲートウェイ、ハブなどの多くのよく知られた構成要素を含むことが可能であり、コンピュータ10が無線および/または有線の媒体を介して通信できるようにするものである。1つまたは複数のコンピュータがネットワーク11を介して互いに対話する場合、他のコンピュータに関してクライアント、サーバ、またはピアとして動作することができる。従って、たとえ本明細書に含まれる特定の例がこれらすべてのタイプのコンピュータについて言及していなくとも、本発明の様々な実施形態は、クライアント、サーバ、ピア、またはそれらの組合せ上で実施可能である。
図1Bを参照すると、本明細書に記載された発明のすべてまたは一部が実施可能なコンピュータに関する基本構成の一例が示されている。コンピュータ10は、その最も基本的な構成では、通常少なくとも1つの処理ユニット14およびメモリ16を含む。処理ユニット14は、本発明の様々な実施形態に従ってタスクを実行するための命令を実行する。こうしたタスクを実行する場合、処理ユニット14は、何らかの結果を生じさせるためにコンピュータ10の他の部分およびコンピュータ10の外部デバイスに電子信号を伝送する。コンピュータ10の正確な構成および種類に応じて、メモリ16は揮発性(RAMなど)、不揮発性(ROMまたはフラッシュメモリなど)、またはこの2つの何らかの組合せであってよい。この最も基本的な構成は、図1Bの破線18で示されている。さらにコンピュータは、追加の特徴/機能を有することもできる。例えば、コンピュータ10は、磁気または光学式のディスクまたはテープを含むがこれらに限定されることのない、追加の記憶装置(取外し可能および/または取外し不能)を含むこともできる。コンピュータ記憶媒体は、コンピュータ実行可能命令、データ構造、プログラムモジュール、または他のデータを含む情報を記憶するための、任意の方法または技法で実施された、揮発性および不揮発性、取外し可能および取外し不能の媒体を含む。コンピュータ記憶媒体は、RAM、ROM、EEPROM、フラッシュメモリ、CD−ROM、デジタル汎用ディスク(DVD)または他の光記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置、または他の磁気記憶デバイス、あるいは、所望の情報の格納に使用可能でありコンピュータ10がアクセス可能である任意の他の媒体を含むが、これらに限定されるものではない。任意のこうしたコンピュータ記憶媒体は、コンピュータ10の一部であってよい。
コンピュータ10は、デバイスが他のデバイスと通信できるようにする通信接続も含むことが好ましい。通信接続とは、通信媒体の一例である。通信媒体は、典型的には、搬送波または他の移送メカニズムなどの変調データ信号中で、コンピュータ読取り可能命令、データ構造、プログラムモジュール、または他のデータを具体化し、任意の情報送達媒体を含むものである。例を挙げると、「通信媒体」という用語は、有線ネットワークまたはダイレクトワイヤード接続などの有線媒体、および音響、RF、赤外線、および他の無線媒体などの無線媒体を含むが、これらに限定されるものではない。本明細書で使用される「コンピュータ読取り可能媒体」という用語は、コンピュータ記憶媒体と通信媒体の両方を含む。
コンピュータ10は、キーボード、マウス、ペン、音声入力デバイス、タッチ入力デバイスなどの入力デバイスも含むことができる。ディスプレイ20、スピーカ、プリンタなどの出力デバイスも含むことができる。これらのデバイスはすべて当分野でよく知られており、ここでこれ以上論じる必要はない。
以下の考察の各トピックに関して、本発明の実施形態に関する追加の資料について詳細な説明の付録を参照するものであることに留意されたい。
(スキップネット)
当分野で知られた特定のリスト構造は、スキップリストと呼ばれることがある。スキップリストとは、メモリ内辞書データ構造である。つまり、スキップリストとは、一部のノードが多くのリスト要素に渡ってスキップするポインタで補完された、分類されたリンク済みリストである。図7Aに示されるような「完全」スキップリストは、リスト内のi'番目のノードの高さが、iを分ける2の最大累乗の指数によって決定されるものである。高さiのポインタは、長さ2を有する(すなわち、リスト内で2ノードをトラバースする)。従って完全スキップリストは、O(log n)時間の検索を明確にサポートする。
完全スキップリストで挿入および削除を実行するにはかなりの費用がかかるため、確率的スキームが提案されてきた。(例えば、非特許文献7参照)目的は、図7Bに示されるように、O(log n)検索を高い確率で維持するためのノード高さを決定しながら、挿入または削除の際に調整されたポインタが相対的にローカルであること、例えば挿入/削除済みノードにあること、および/または隣に近いことを保証することである。つまり、ノードは、高さ1で確率0.5、高さ2で確率0.25などとなる。スキップリストは、各リスト要素を分散システムの異なるノード上に配置するだけで、分散構造にすることができる。ただし、最も高さが高い数個のノードは、それよりも高さの低いノードよりも多くの検索メッセージを処理しなければならなくなるため、こうした構造は、ピアツーピアシステムで使用するのには適していない。オリジナルのスキップリストが、各ノードが高さnを有するように修正された場合、すべてのポインタは高さに関係なく長さ1を有することになり、リストは長距離ホップをまったく実行できないリンクリストに退歩してしまう。
スキップネットでは、前述のようなスキップリストと区別するために、あらゆるノードが高さlog nを有するが、にもかかわらず高さiのポインタはほぼ2の予測高さを有することが好ましい。スキップネットは、ハッシュ関数から取得される数の代わりに文字列の宛先フィールドを有するメッセージを使用する。メッセージは、文字列名が、オーバレイネットワーク中の任意のノードのメッセージ宛先文字列に一致する最も長い接頭部であるノードにルーティングされる。
ノード用の文字列名を使用して、オーバレイネットワーク中のすべてのノードを辞書編集用に分類されたリンク済みリスト(「ベースリング」)に配置構成することが可能であり、これはメッセージをその正しい最終宛先にルーティングするのに十分である。ただしこれは遅く、O(N)ステップを要するものであって、ここでNは、オーバレイネットワーク中のノード数である。すべてのノードの辞書編集用に分類されたリストの様々なメンバを「スキップ」する複数のリングを維持することによって、ルーティング性能を向上させることができる。これらの追加リングにより、所望の最終宛先ノードをより速く見つけることができる。
複数のリングを有する編成は、ベースリングのみが維持されている場合に必要なO(N)ステップの代わりに、ルーティングをO(log n)転送ステップで完了させることができる。図8に示されたポインタ構造に対応するような「パーフェクト」スキップネット(図2にリング構造形式で示されている)では、ネットワークは、高さhに2の接合されていないリングがあるように配置構成され、各ノードは各高さにある厳密に1つのリングに属している。従って、高さhにある各リングがn/2のノードを含むと予測する。さらにこの実施形態では、高さhにあるリングrは、高さh+1でリング2rおよび2r+1に区分されるように指定する。
従って、図2の理想的なスキップネット例では、ノードA、D、M、Q、T、V、X、およびZを含むオーバレイネットワークが、ベースリング200に示されている。スキップネットを使用すると、オーバレイネットワークは論理上異なるレベルのリングに分けることができる。例えば、レベル1では、ベースリング(オーバレイネットワークのすべてのノードを含む)が2つの小規模リング(時にサブリングと呼ばれる)に分けられる。これら2つの小規模リングは、リング0(ノードA、M、T、およびXを含む)およびリング1(ノードD、Q、V、およびZを含む)とラベル付けされる。この例では、ベースリングからのノードは、それらの辞書編集名に基づいて交互に小規模リングに割り当てられる。各小規模リング内では、ノードは辞書編集的に再度論理的に順序付けられる。
このプロセスは、追加の小規模リングを形成するために繰り返すことができる。例えば、リング00はリング0からのノードAおよびTを含み、リング01はリング0からのノードMおよびXを含む。同様にリング10はリング1からのノードDおよびVを含み、リング11はリング1からのノードQおよびZを含む。従って、さらに小規模レベルの各リングは、対応する大規模リングからのノードのサブセットを含む。このプロセスは、すべてのノードがノードを1つだけ含む「リーフリング」に割り当てられるまで続けることができる。この例では、リング高さまたはレベルが3のリング000から111が、すべてリーフリングである。
残念なことに、完全スキップネットを使用したオーバレイネットワークからのノードの追加および削除には、多くのリングメンバシップをかなり再配置する必要があり、これは計算上多くの費用がかかることになる。リングメンバシップを拾い集めることのできる本質的にランダムな2進数を割り当てることにより、各レベルでの確率的な決定を確実にする。さらに、特定ネット内のこうした数をそれぞれ確実に実質上固有なものにすることによって、こうした数が使用可能な数値アドレススペースを提供することもできる。
従って、本発明の実施形態では、実質上ランダムな数を選び取り、これを使用してノードが接合しなければならないリングを指定することによって、様々なリング内のメンバシップが決定される。詳細には、ノードは、ノードが自身によってリングに存在するに至るレベルにおけるリングに接合する。典型的には、一方向ハッシュ関数を使用して、これをノード名に適用することによって、ノードの固有IDが生成される。その結果、多くの桁を有する数が生じることになり、128ビットは、いくつかの一般に使用される一方向ハッシュ関数によって生成される。リングは、図2に示されたように番号付けされる。構造内のノード数に関する上記例での2128などの上限は、実際には一般にこれよりもずっと少ないが、結果としてこの例では127などのリングレベル数の上限を生じさせる。前述の例を考えると、リングメンバシップの決定は、以下の様により一般的に説明することができる。挿入時に、各ノードは、ノードの「マスク」と呼ばれる127ランダムビットのシーケンスを生成する。高さhでノードのリングメンバシップを決定するには、第1のhビットがマスクから抽出され、当該ノードはそれらのビットによって示されるリングと接合する。あらゆるノードが高さ0の1つのリングと接合する。このスキームは依然として、高さhにあるリングrが、高さh+1でリング2rおよび2r+1に区分されるという、所望の特性を備えていることに留意されたい。さらに、高さhの各リング内で予測されるノード数はn/2であり、従って、高さhにあるポインタの予測長さは2である。
ここで図4Aを見ると、スキップネットを使用したオーバレイネットワークの他の例が示されている。この例では、ベースリング400が「abc.com」ドメイン内のいくつかのノードを含む。これらのノードは、ローカルな辞書編集用名、A、B、C、F、G、T、V、およびZを有するノードを含む。図に示されるように、これらのノードの完全な辞書編集用名は、「ドメイン名/ローカル辞書編集用名」という形式に従って指定することができる。従って、ノードAの完全な辞書編集用ノード名は、「abc.com/A」と指定することができる。
(ポインタテーブル)
次に図3を見ると、オーバレイネットワーク上のノード300は、近接テーブル310およびルーティングテーブル340という2つのポインタテーブルを使用して、オーバレイネットワーク上にあるいくつかの他のノードを指すポインタを格納する。近接テーブル310は、名前スペースでの基本ルーティングテーブル340の最適化を表す。さらに、前述のように、数値スペースでのルーティングを最適化する近接テーブルも維持されることが好ましいことに留意されたい。一般に、オーバレイネットワークの一部である各ノードは、ポインタを格納するためにそれ独自のテーブルセットを持たなければならない。ルーティングテーブル340は、リングメンバシップと、ノード300とリスト済み隣接ノードとの間の辞書編集用距離に基づいて、隣接ノードを指すポインタを格納する。最適化として、近接テーブル310は、ノード300と隣接ノードとの間のネットワーク距離に基づいて、隣接ノードを指すポインタを格納する。名前スペースおよび/または数値スペースで近接テーブルを実施するための様々なスキームが可能である。(例えば、非特許文献10参照)例えば、一実施形態では、各ノードがそのルーティングテーブルにある隣接ノードを使用して、辞書編集用識別子「インターバル」のセットを確立する。次に各ノードは、それらインターバルそれぞれに充填するために、ネットワーク近接に関して近傍ノードを見つける。
ルーティングテーブル340は、log(n)転送ステップで、メッセージの送達を可能にする。ただし、各ステップはネットワーク距離に関してはるかに遠いノードまで到達して終わる可能性がある。近接テーブル310ならびに数値スペース内の近接テーブルは、ネットワーク近接を考慮に入れたルーティング選択肢の代替セットを提供する。2つのタイプのテーブルは、ルーティングテーブルがlog(n)転送ホップ特性を維持するために近接テーブルを正しく構築する際に必要であるという点で、相互に関係する。
(識別子によるスキップネットの検索)
識別子によってスキップネットを検索する場合、検索はノード「ソース」から最も近いノードを識別するために一連の中間ノードを横切り、識別子「destID」まで進む。本発明の一実施形態では、各中間が、宛先に最も近いがそれを越えないポインタを使用して、メッセージ転送をルーティングする。
各ポインタは双方向であるため、検索方向に選択肢がある。destID<sourceIDの場合、検索は左に進むことが好ましい。これに対して、destID>sourceIDの場合、検索は右に進むことが好ましい。下記のアルゴリズム1は、右方向に検索するためのアルゴリズムに関する擬似コードを与えるものである。当分野の技術者であれば、左方向に検索する場合が対称形であることを理解されよう。このアルゴリズムは、currNode.RightFinger[]オペレーションがRPC呼出しであることを想定しているが、こうしたものは必須ではなく、「メッセージ通過」などの他のスキームが可能であり望ましい場合がある。
[Algorithm 1]
Node SearchRight( Node source, string destID, bit[] searchMask )
{
currNode = source
while( true ) {
h = 128
nextNode = currNode.RightFinger[h]
while(nextNode.ID>destID || nextNode.ID<currNode.ID ) {
if( h==0 ) {
return currNode;
}
h--;
nextNode = currNode.RightFinger[h]
}
currNode = nextNode
}
}
各中間ノードで、アルゴリズム1は宛先を越えて指示することのない最高位のポインタを見つけて、そのノードにメッセージを送信する。あらゆるポインタが宛先を越えて指示している場合、ローカルノードまたは中間隣接をメッセージの宛先としなければならない。これらの段階のランタイムについて、読者の便宜上、以下で論じる。
ノードSで始まりノードDで終わる検索オペレーションについて考えてみる。ここで、SからDまでのリスト中の距離(すなわち、高さ0でのそれらの間のポインタ数)がdである。この状況では、アルゴリズム1が遭遇する中間ノードの予測数は、およそlog dであることがわかる。これは、以下のことから理解できる。高さが増加していく検索中に達成される最高の高さがhであると想定する。上記で述べたように、高さhから高さ0までのソースノードを含むリングは、ノードに関するスキップリスト構造を含む。従って、アルゴリズム1によって実行される比較数は、長さdのスキップリストに関する検索に使用される比較数と同じである。この数の予測値は、2*log d+1である。アルゴリズム1が遭遇する中間ノード数は、比較数によって制限されるため、スキップネット上での検索オペレーション中のネットワークホップの予測数は、≦2*log n+1である。
さらに続けると、識別子source.IDおよびdestIDの最も長い接頭部がsであると想定すると、検索オペレーションは、接頭部内にとどまるように初期の検索方向が選択されると想定して、識別子が接頭部としてのsを持たないノードとは通信しないことになる。具体的に言えば、例えば右方向検索アルゴリズムでは、currNodeが宛先より大きいかまたはソースより小さいノードに設定されることは決してない。従って、アルゴリズムは一般に、不変のsource.ID≦currNode.ID≦destIDを維持する。その結果、source.IDおよびdestIDの最も長い共通接頭部は、currNode.IDの接頭部でもあることになる。
(数値識別子によるスキップネットの検索)
スキップネットは、他のオーバレイネットワークと同じ分散ハッシュテーブル機能をサポートすることもできる。分散ハッシュテーブルが実施できるので、数値アドレススペースを使用してロードバランシングされたデータの格納および取出しを実行する。この項では、数値アドレススペースにおけるこれらアクティビティの性能について、具体的には関連する数値idを取得するためのノード名およびデータ名のハッシングについて説明する。オーバレイネットワークに文書を格納する場合、文書のファイル名が一方向ハッシュに入力される。このハッシュが、オーバレイネットワーク内のどこへファイルを格納するかを決定する際に使用できる、擬似ランダム広域一意識別子(GUID)を生成する。GUIDを使用することにより、格納されたファイルの場所が十分にランダムとなるはずであり、これによってロードバランシングが実施される。例えば、格納するファイルに「ShoppingList.doc」という名前が付けられた場合、GUID(2進形式)は1010...で始まるかもしれない。どのノードがファイルを格納することになるかを決定するには、格納を開始するノード(例えばノードabc.com/A)がそのポインタテーブルからリング1の中で最も近いノードを検索する。図4Aのオーバレイネットワークの例では、リング1の中で最も近いノードはノードabc.com/Bであってよい。次に、ノードabc.com/Bはそのポインタテーブルからリング10で最も近いノードを検索する。この例では、これはノードabc.com/Bである。このプロセスは、要求が、リング101の中の唯一のノードであるノードabc.com/Tに達するまで続く。この時点で、ファイルはノードabc.com/Tに格納される。
文書を辞書編集スペースに格納することで、どのデータがどのノードで終わるかを自分で制御するようになることに留意されたい。ただしこれを実施しても、結果として確率的に均一のロードバランシングにはならないため、DHTは実施されない。すなわち、ノード名およびデータ名が均一に分散されないため、ある程度の量のデータの塊がノードで終わるが、これは一部の設計にとっては望ましい場合がある。
(制約付きロードバランシング)
前述のように、一部の実施では、オーバレイネットワーク上で特定のファイルが格納される場所を制限するので有利である場合がある。次に図4Bを見ると、複数のドメインに広がるオーバレイネットワークの一例が示されている。例えば、ABC社が自社の「ShoppingList.doc」ファイルを、競合相手のBCD社のbcd.comドメインに属するマシン上に格納させたくない場合がある。ただし、上記で概説したDHTプロセスに従うと、結果としてファイルがbcd.com/Tに格納されることになる(ここでも再度ハッシュ済みGUIDを1010...と想定する)。この問題には、制約付きロードバランシングと呼ばれるプロセスを使用して対処することができる。特定のファイルをどのドメインに制限するかを指定する場合、一部の実施では明示的ドメイン制限子(restrictor)を含むファイル名を提供することがある。例えば、ファイル名「ShoppingList.doc」を「abc.com?ShoppingList.doc」と指定することができる。この例で「?」の文字は、ファイルが前のドメインabc.comに属するノードにしか格納してはならないことを指定するものである。この制限を使用して、「abc.com?ShoppingList.doc」ファイルを格納するために割り当てられたノード(GUIDを1010...と想定する)は、abc.com/Bとなり、これはabc.comドメインに属するリング101に最も近いノードである。ノードは、単一のドメイン名ではなく複数のネストされたドメイン名に関連付けられること、およびこうした複数のネストされたドメイン名が制約付きロードバランシングの場合と同じ方法でも使用できることを理解されよう。ドメイン部分を使用する検索が辞書編集検索であり、ファイル名部分のハッシュを使用する検索が、ドメイン部分を接頭部として共用する名前を有するノードに制約された数値検索であることに留意されたい。制約があろうとなかろうと、辞書編集検索と数値検索はどちらもO(log n)オペレーションであるため、検索の全体効率もO(log n)である。
(リング修復)
再度図4Bを参照すると、ノードabc.com/Cがオフラインになると、リング0中のノードaaa.com/Aおよびbcd.com/Aは、リング中の破損した接続を修理または「修復」するように構成される。一実施形態では、規模の大きいリング(この場合はリング450)に下がって、リング0中にある次の隣接ノードを探すことによって、これが実行できる。従って、ノードaaa.com/Aはリング0中の新しい隣接ノードがbcd.com/Aであることを見つけ、ノードbcd.com/Aはリング0中の新しい隣接ノードがabc.com/Aであることを見つけ、それによってリング0およびベースリング中の破損リンクを閉じる。
リングの修復プロセスは、すでに格納されたリーフポインタを使用することによって、リングを検索せずに実施することもできる。リーフポインタについては、以下で詳細に説明する(「リーフセット」と題する項を参照)。ほとんどの場合、高位レベルを修復することも望ましいが、このプロセスはそれほど重要ではなく、時間およびリソースが許すときに「ゆっくりと」実行してよいことに留意されたい。
(ノード挿入)
新しいノードが確率的スキップネットを使用してオーバレイネットワークに追加される場合、新しいノードは、その辞書編集名およびランダムな固有識別子に基づいて、ベースリング450および小規模リングに追加される。挿入オペレーションは、数値スペースでの検索と同様の方法を使用して、ランダム固有識別子の値によって決定された、新しいノードが接合しなければならない最も高位の空でないリングを見つけることから開始される。このリングが見つかると、挿入オペレーションは新しいノードの文字列識別子を検索することによって続行される。この検索プロセス中に、新しいノードは、そのルーティングテーブルがそれを指すポインタを含んでいなければならないすべてのノードを追跡する。検索が完了すると、新しいノードは新しいノードが指していなければならないノードへのポインタを作成し、それらのノードに対して新しいノードを指し返すように要求する。
検索に関して上記で述べた分析を使用すると、挿入オペレーションに必要なノードホップの予測数はlog nとなる。挿入オペレーション用の擬似コードを、下記のアルゴリズム2に示す。
[Algorithm 2]
Init (){
phase =upward
currentH = 0
}

Insert (){
If (phase == upward) then
nextHop = NextHopUp ()
else
nextHop = NexHopDown ()
if (phase != complete) then
SendMessage (InsertMsg, nextHop)
}
Node NextHop (){
h = LongestCommononPrefix (currNode, RandID, newNode, RandID);
if (h > currentH) then
currentH = h
ringStart = currNode

nextHop = currNode.ClockwiseFinger [h]
if (ringStart == nextHop) then
phase = downward
return NextHopDown ()
else
return nextHop
}
Node NextHopDowm (){
While (currentH > 0)
nextHop = currNode.ClockwiseFinger[currentH]
if (LliesBetweenClockwise (newNode.LexID, currNode.LexID,
nextHop.LexID)) then
InsertHere (newNode)
else
return nextHop
currentH = current H - 1
endwhile
phase = complete
return null
}
一例として、例示されたオーバレイネットワークに新しいノードabc.com/Pが追加される場合、ノードabc.com/Fとbcd.com/Aの間のベースリング450に挿入されることになり、レベルiで、ランダムidのi番目の数字によってそれが接合するリングが決定される。
基本スキップネット構造内のノードに隣接するノードは、高さhでのポインタの予測長さが実質上確実に2となるように、リングメンバシップのランダムな選択と、それらリング内での識別子の順序付けによって決められる。従って、ネットワーク近接に関して、ノードとそれに隣接するノードが近くにあるかどうかはまったく保証されない。スキップネットは、この点でChordと同様である。これに対してPastryは、ネットワーク近接をそのルーティングテーブルエントリの選択に組み込むように、特に設計される。新しいPastryノードは、近接ノードに接触し、新しいノードのルーティングテーブルを構築するためにそのルーティングテーブルエントリを活用することによって、リングに接合する。
ネットワーク近接がスキップネットのリングメンバシップの決定に組み込まれた場合、高さhでのポインタの予測長さが依然として確実に2となるようにすることは困難である。この問題に対処するために、前述のようにスキップネット内の各ノードで、近接テーブルと呼ばれる追加のルーティングテーブルを維持することができる。近接テーブルは、ルーティングテーブルと同様に、左と右の両方のフィンガを有する。
スキップネットがネットワーク近接を組み込む場合、挿入オペレーションは基本段階と近接段階という2つの段階を有するように修正される。基本段階とは、上述のような単なる挿入オペレーションである。近接段階とは、近接的に(proximity-wise)新しいノードに近い既存のノードJからのブートストラッピングを含む点で、Pastry接合オペレーションと同様である。より具体的に言えば、近接段階は、第1に、Pastryが一定の接頭部で始まるルーティングテーブルエントリを使用するのとある程度類似した、近接テーブル内の各エントリに関する上限および下限を決定するためにルーティングテーブルを使用することを含む。スキップネットの場合、識別子スペースは必ずしも均一に配置されないため、エントリが特定の接頭部で始まるように要求しても、エントリが識別子スペース内に適切に分散されることを保証するのには十分でない。次に、新しいノードは、可能であればその近接テーブルの任意のエントリに充填するために、本明細書ではノードJと呼ばれるもう1つのノードで近接テーブルを使用することができる。その後、新しいノードは、可能であれば任意の残りの近接テーブルエントリに充填するために、ノードJの一定の隣接ノードで近接テーブルを使用する。下記のアルゴリズム3は、左近接テーブルを対称になるように構築するためのコードを備えた、右近接テーブルを構築するための擬似コードを示したものである。読者の便宜上、この単純化されたアルゴリズムの完全なバージョンが、以下の詳細な説明の付録に含まれる技術レポートに示されている。
[Algorithm 3]
BuildRightPTable (Node newNode, Node J) {
// Compute bounds for each entry in the P table
for( h=127; newNode.RightFingers[h]==null; h-- ) { }
maxH = h;
while( h>0 ) {
newNode.upperBound[h] = newNode.RightFingers[h].ID;
newNode.lowerBound[h] = newNode.RightFingers[h-1].ID;
if( newNode.upperBound[h]==newNode.lowerBound[h] ) {
newNode.RightP[h] = newNode. RightFingers[h];
}
h--;
}

currNode = J;
while( true ) {
FillEntries( newNode, currNode );

// Find the highest empty entry in the right P table
for( h=maxH; h>0; h-- ) {
if( newNode.RightP[h]==null ) break;
}
if (h==0) break;

// Search for any node that fits newNode's bounds at height h
if( currNode.ID < newNode.lowerBound[h] ) {
Let nextNode = the closest node in currNode's P Table to
the left of newNode.upperBound[h]
Set currNode = nextNode
} else {
Let nextNode = the closest node in currNode's P Table to
the right of newNode.lowerBound[h]
Set currNode = nextNode
}
}

newNode.RightP[0] = newNode.RightFinger[0];
}

FillEntries( Node newNode, Node J ) {
TryInsertOne( newNode, J );
for( i=0; i<128; i++ ) {
if( J.LeftP[i]!=null ) TryInsertOne ( newNode, J.LeftP[i] ) ;
if( J.RightP[i]!=null ) TryInsertone ( newNode, J.RightP[i] );
}
}

TryInsertOne( Node newNode, Node n ) {
for( i=0; i<128; i++ ) {
if( newNode.RightP[i]!=null ) continue;
if( FitBounds(newNode, i, n.ID) ) {
newNode.RightP[i] = n;
}
}
}

bool FitBounds( Node newNode, int h, bit[] ID ) {
if( newNode.lowerBound[h]<ID && ID<=newNode.upperBound[h] )
return true;
if( newNode.upperBound[h]<newNode.lowerBound[h]
&& (newNode.lowerBound[h]<ID || ID<=newNode.upperBound[h])
)
return true;
}
これからわかるように、BuildRightPTable()では、外側の「while(true)」ループが繰り返されるたびに、より多くのテーブルのエントリに充填しようと試みる。高さhのエントリに充填する場合、プロセスは予測サイズ2h−1の範囲内で任意のノードを探す。プロセスが検索するこの範囲とノードとの間の予測距離は2である。この検索を完了するためのネットワークホップの予測数は2であるため、ネットワークホップの合計予測数は2log(n)である。
(リーフセット)
リーフセットは、システムの耐障害性を向上させるために使用することができる。例えば、各ノードのアドレステーブルはk個の隣接ノードのアドレスを(辞書編集用順序で)格納することが可能であり、ここでkは正の整数(例えば8)である。k個の最も近い隣接ノードのアドレスを(辞書編集的に)格納することによって、1つの隣接ノードが障害(例えばオフラインになる)を経験すると、複数の隣接ノードはリンクを閉じるのに必要な情報を得ることになる。これらのリーフセットは、実施に応じて、近接テーブルなどの他のテーブルの一部であるか、または近接テーブルに加えて格納することができる。一部の実施形態では、追加のポインタ記憶域が使用可能な場合は、選択されたポインタのみ(例えばスキップ0、スキップ1、スキップ2、スキップ4、スキップ8、スキップ16、スキップ32、以下参照)を格納する代わりに、選択されたポインタに隣接する追加のポインタ(例えば、スキップ0、スキップ1、スキップ2、スキップ4、スキップ7、スキップ8、スキップ9、スキップ15、スキップ16、スキップ17、スキップ31、スキップ32、スキップ33、以下参照)も格納することができる。格納されたノードまたはスキップされたノードのパターンの他の組合せが可能であり、企図される。
(ドメイン接続障害)
ネットワークに関する一般的な障害モードの1つが、特定のドメインがWAN(例えばインターネット)から切断されることである。これは、ドメインの拠点サーバ、ファイアウォール、またはルータの障害に起因する場合がある。ドメインがオフラインになった場合、ドメイン内のものにとって引き続き相互に通信できることが有利である。図4Bに示されたスキップネットの例を参照し、abc.comのインターネットルータに障害が発生したと想定する。スキップネットが双方向である(すなわち、左の隣接および右の隣接の両方を指すポインタを維持する)場合、ルーティングアルゴリズムは、abc.comドメイン内の任意のノードがabc.comドメイン内の任意の他のノードに首尾よくルーティングできることを保証する。すなわち、一般に、切断された組織のノード名がいくつかの組織の接頭部のうちの1つを使用している場合、スキップネットの関連する部分は、接合していない(disjoint)が内的には適切に接続された、いくつかのセグメントに区分されることになる。スキップネットのルーティング局所性により、各セグメント内のメッセージトラフィックは、切断による影響を受けることなく、O(log n)の効率で引き続きルーティングされることになる。
組織の切断がオーバレイ全体の相当な部分を表すものでない限り、クロスセグメント間のほとんどのクロスセグメントポインタは有効なままとなるので、スキップネットの他の部分の間でのクロスセグメントトラフィックもそれほど影響を受けることがない。これは、切断された組織のセグメントのケースではない場合があるので、切断および再接続後の主な修復タスクは、オーバレイセグメントをマージすることである。具体的に言えば、切断の場合、セグメントが2つ(またはそれ以上)の接合していないスキップネットにマージされ、再接続の場合、2つのセグメント(またはそれ以上)の接合していないスキップネットが単一のスキップネットにマージされる。
どちらの場合も第1のステップは発見である。組織が切断されると、そのセグメントはスキップネットポインタを使用するだけでは互いを見つけられない場合がある。これは、連続していないセグメントが互いを指すポインタを有することになるという保証がないからである。この問題は、組織が一般にそのノードを相対的に数の少ない名前セグメントに分けることを想定し、各セグメント内のいくつかのノードを「周知」と指定するように要求することによって解決できる。組織内の各ノードは、これら周知ノードのリストを維持し、これらを様々なオーバレイセグメント間の接触ポイントとして使用する。
組織が再接続すると、組織およびグローバルスキップネットは、そのセグメントエッジノードを介して互いを発見する。前述のように、各ノードは、レベル0リング中でそれ自体の両側にある、8つの最も近いノード(または他の数の最も近いノード)を指す「リーフセット」を維持する。ノードは、そのリーフセットの一方の側は完全に到達不能であるが他方の側はそうでないことを発見すると、切断イベントが発生し、それがセグメントのエッジノードであると結論付ける場合がある。これらのエッジノードはそれらの到達不能なリーフセットポインタを追跡し、到達可能性のためにそれらを定期的にpingして、ポインタが到達可能になると、ノードがマージプロセスを開始する。例えば、新しい組織がシステムに接合する場合、2つの以前独立していたスキップネットを一緒にマージすることは、異なる発見メカニズムが使用できることを除いて、以前接続されていたものを再接続することと機能的に等価であることに留意されたい。
セグメントのマージプロセスは、レベル0リングを含むポインタの修復と、すべてのより高位のリングに関するポインタの修復という、2つのステップに分けられる。第1のステップは、各セグメントの「エッジ」ノードのレベル0ポインタの修復のみを含んでいるため、即時に実行可能である。第1のステップが実行されると、様々なセグメント内のノード間でメッセージを正しくルーティングすること、およびO(log n)効率でそのように実行することが可能なはずである。その結果、第2の、より費用のかかるステップを背景タスクとして実行することができる。
レベル0でスキップネットセグメントを接続するための主なタスクは、1セグメント内のノードに、他のセグメント内のノードのIDに向けてメッセージをルーティングさせることによって、関連するエッジノードを発見することである。このメッセージは、他のノードのIDに最も近い第1のセグメント内のエッジノードにルーティングされることになる。この方法でルーティングされたメッセージは、すべてのセグメントのエッジノードのリストをひとまとめにする際に使用することができる。その後、実際のセグメント間ポインタ更新は、分散2相コミットを使用して、セグメントエッジノード間の単一の自動オペレーションとして実行される。これにより、ルーティングの不一致を回避する。
レベル0リング接続の直後、クロスセグメント宛先に送信されたメッセージは、一定係数での劣化にもかかわらず、O(log n)効率でルーティングされることになる。この係数は、切断を修復中であるか再接続を実行中であるかに応じて異なる。切断の場合、レベル0以外のクロスセグメントポインタは、たとえあったとしてもわずかとなる。従って、クロスセグメントメッセージは、O(log n)ホップで、トラバースする各セグメントのエッジにルーティングされ、セグメントを接続しているレベル0ポインタを使用して、次のセグメントへホップすることになる。従って、切断された組織がSセグメントを含む場合、クロスセグメントトラフィックは、レベル0リング接続後O(S log n)効率でルーティングされることになる。
組織が、その完全に修復されたスキップネットをレベル0でグローバルなスキップネットに再接続する場合、外部ノード宛のトラフィックは、O(log n)ホップで、組織のスキップネットのエッジノードにルーティングされることになる。2つのスキップネットを接続しているレベル0ポインタはトラバースされ、その後、O(log n)ホップは、グローバルスキップネット内のトラフィックをルーティングする必要が生じる。2つのスキップネット間を横切る必要のないトラフィックには、このルーティングペナルティは発生しない。
レベル0リング接続段階が完了すると、修復が必要なすべての残りのポインタは、背景タスクを使用して更新することができる。本発明の一実施形態では、ポインタは、各セグメントで所望のノードを見つけるために、下のレベルの正しいポインタを使用して1つのレベルで繰り返し修復される。1つのレベルのポインタは、高位レベルの修復が開始される前に、すべてのセグメント境界をまたがって修復されるべきである。高位レベルのリングは下位レベルのリング内にネストされるため、レベルh+1でのリング修復は、レベルhでの囲みリング(enclosing rung)用にそのポインタを修復したノードのうちの1つによって開始することができる。レベルhリングが(a)単一のメンバしか含んでいない場合、または(b)修復が必要なセグメント間ポインタを持たない場合、レベルh+1での修復オペレーションは必要ない。後者の終了状態は、グローバルスキップネット内のほとんどのリング、すなわちほとんどのノードが、修復の可能性について検査される必要がなくなることを暗に示している。
この修復アルゴリズムに関係する作業の合計はO(M log(n/M))となり、ここでMは、組織の切断または再接続のサイズである。レベルh+1でのリングは、レベルhでのその囲みリングがすべてのセグメント境界を横切って修復されると、平行して修復可能であるため、すべてのリングの修復を完了するのに必要な時間はO(S log n)となり、ここでSはセグメントの数である。
(同時更新および予期せぬ障害)
同時更新および予期せぬノード障害は、前述のように一定のスキップネット特性に破損を生じさせる場合がある。これに関するいくつかの潜在的な問題についての考察、それらを検出するためのプローブ、およびそれらを解決するための修正アクションを、下記に示す。
(問題)
1.予期せぬ障害は、一定の高さで有効な隣接ノードを持たないノードを作成する可能性がある。これは、以下で論じるプローブ1によって検出可能である。
2.予期せぬ障害は、あるノードに、実際に別のノードが依然として生きているときに、当該ノードが死んでいることを反映させる可能性がある。例えば、ノードNは、ノードMが死んでいないときにノードMが死んでいることを反映する可能性がある。その後Nは、ノードMの代わりに新しい隣接ノードになるものとしてLを選択する可能性がある。プローブ1はこの状況を検出することができる。
3.同時ノード接合は、リング内に誤った順序付けを発生させる(おそらく接合中に一時的のみ)可能性がある。問題が高さ0で発生すると、検索が誤った結果を戻す可能性がある。問題が高さ>0で発生すると、検索は効率的でなくなる。この状況は、以下で論じるプローブ2および3によって部分的に検出することができる。
4.厳密なネットワーク区分の場合、2つの区画が識別されると、それらは可能であれば最接合されるはずである。区画が連続していると想定すれば、エンドポイントで高さ0のポインタを修復し、定期的なリング修正によって他のすべてのポインタを修復できるようにするだけで、最接合が可能である。
(プローブ(各プローブは各高さhについて定期的に実行される))
1.プロービングノードは、高さhでその左および右の隣接ノードに定期的に接触する。接触されたノードが死んでいる場合、以下で論じる修正1が使用されるはずである。隣接ノードが、プロービングノードをその隣接ノードであると認識しない場合、以下で論じる修正2が使用されるはずである。
2.プロービングノードは、両方向で次のk個の隣接ノードを検証し、それ自体に遭遇することなくそれ自体を通り越して移動していないかどうかをチェックする。その目的は、ループの長さが<kである複数のループを備えたリングを検出することである。
3.プロービングノードは、高さhのその隣接ノードが、高さhでのリングのメンバの可能性がある、高さh−1でのリング内で最も近いノードであることをチェックする。これが成り立たない場合、以下で論じる修正3が使用されるはずである。
(修正)
1.h=0の場合、障害が発生したノードをスキップするために高さ>0のポインタが使用され、その後、最も近い生きたノードを見つけるためにスキップバックする際に、ポインタが逆方向で使用される。h>0の場合、高さ<hのポインタを使用して、リングhのメンバである可能性のある最も近い生きたノードを見つけるためにスキップする。
2.プロービングノードの隣接ノードから始まり、レベルhのそのポインタからプロービングノードへと続く。プロービングノードを通過する前に最後に遭遇したノードが、プロービングノードの新しい隣接ノードである。ポインタが新しい隣接ノードを指すように設定し、そのポインタがプロービングノードを指すように設定する。
3.新しい隣接ノードを適切なノードに設定し、新しい隣接ノードに対してプローブ3を即時に実行するように通知する。
(仮想ノード)
Webホスティングなどのいくつかのアプリケーションでは、単一の物理サーバ上で複数のドメインをホストすることが有利な場合がある。従って、2つまたはそれ以上のノードが単一の物理ネットワークノードに関連付けられる場合がある。この仮想ノード構成は、Webホスティングサービスをそれらのクライアントに提供しているISP(インターネットサービスプロバイダ)にとって、特に有利な場合がある。各仮想ドメインに関連付けられたオーバヘッドの量を減らすために、アドレステーブルを共用するように仮想ノードを構成することができる。
次に図5を見ると、3つのノードが単一の物理アドレスに関連付けられた、オーバレイネットワークの一例が示されている。この例では、ノードbbb.com、ddd.com、およびzzz.comがすべて単一の物理位置600上でホストされている。
次に図6を見ると、単一の物理コンピュータ上で仮想ノードを効率良く処理するための方法の一例が示されている。この例では、1つの物理コンピュータ600が3つの仮想ノード500、504、および516をホストしている。ただし、コンピュータ600は、各仮想ノードについてアドレスポインタテーブル全体を格納する代わりに、完全ルーティングテーブル612および他の仮想ノードに関する部分ルーティングテーブルのみを格納する。仮想ノードに関するルーティングテーブルのサイズは、これらの部分ルーティングテーブル中の平均ノード数が一定になるように、(幾何分布を使用して)確率的に選択することができる。典型的な構成は、部分ルーティングテーブルにつき平均2つのポインタを有するものであってよい。図に示されるように、この実施形態では、アドレスポインタテーブルは、(i)ノード602が属する各リングについて隣接ノードを指すlog(n)ポインタ612のセット、(ii)他のすべての仮想ノードに関する部分ルーティングテーブル614のセット、および(iii)リーフノードポインタ616のセットを含む。
従って、ノード500、504、および516それぞれが、ノード500の近接テーブルを使用してルーティングし、これはコンピュータ600のネットワーク位置に基づくことができる。ノードはそれぞれ、耐障害性についてそれ独自のそれぞれのリーフポインタセットを使用することができる。これは、近接テーブルが、コンピュータ600上に常駐する各ノードについて同じであるコンピュータ600のネットワーク位置に基づいていることから動作する。これに対して、リーフポインタはノードの辞書編集用ドメイン名に基づいている。
この実施形態によってもたらされるオーバヘッド記憶域の節約は、仮想ノード数が多い場合に劇的となる可能性がある。例えば、100ノードについてフルセットのポインタを格納すると、結果的におよそ100*log(n)+100*Lポインタとなり、ここでNはオーバレイネットワーク内のノード数、Lは各ノードのリーフノードポインタ数である。これに対して、物理コンピュータあたりフルセットポインタを1つだけ格納することにより、格納されるポインタの数はおよそlog(n)+100*(L+2)まで減ることになり、およそ99*(log(n)-2)ポインタの節約となる。多くのWebホスティングサービスが単一サーバ上で多数のWebサイトを運営しているため、一部の実施ではこうした節約が重要となる可能性がある。もちろん、フィンガ分散の変更は、検索パスに影響を与える。検索パス上でのノードホップの予測数は、<=4*log4(d)+1の、p=1/4のスキップリスト中での検索の予測費用に等しい。従って合計検索費用は、4*log4(d)=2*log2(d)となり、これは基本スキップネットでの検索費用に等しい。
(変形)
前述の基本スキップネット構造に関して可能ないくつかの変形がある。以下に、こうした変形のいくつかについてより詳細に説明するが、以下の考察は網羅的なリストを提供することを意図するものではない。本発明の一実施形態では、ノードは、それが属する各リング上で直後の後続者(immediate successor)(および直前者(predecessor))を示すポインタを維持する。その結果、ノードがいくつかのリング上で同じ後続者を示し、重複ポインタを維持することが可能となる。この実施形態では、各ノードがこれらの冗長性を検出し、重複ではない第1の後続者を示す重複ポインタを再使用する。これらのポインタは潜在的にスキップネットの精密な構造を変えることが可能であるため、これらのポインタ再調整はノードに対して透過ではなく、代わりにノードは、ノードの挿入および/または除去用ではなく検索用に再調整されたポインタのみを使用することになるのが好ましい。重複ポインタの再調整は、ノード挿入中に実行することができる。
具体的に言えば、前述の擬似コードで示したように、ノードはスキップネットリングを、任意の他のノードと共用していない最も独占的なリングから、残りのすべてのノードと共用している最も包含的なリングまで、上から下へと接合する。従って、本実施形態により、新参者(newcomer)がリングに接合する場合、その新しい隣接が1つ上のレベルのリングでの隣接と重複しているかどうかをチェックする。新しい隣接が1つ上のレベルのリングでの隣接と重複している場合、ノードはこのポインタを重複ポインタとしてマークし、その隣接に対して、その隣接中からの「非重複」ポインタの検索を開始するように要求する。このプロセスは、重複しない隣接が見つかるまで拡大することができる。こうした非重複がいったん見つかると、新参者は非重複ポインタにリンクするようにその重複ポインタを再調整する。
さらに、時には、1つまたは複数のノードのフィンガ数を増加させることが望ましい場合がある。例えば、ランダムIDを生成するのに使用されるランダム数生成器の分散を調整することによって、1つのノードを基準にしてポインタ数を調整することができる。あるいは、ランダムビット(すなわち0または1)を生成する代わりに、[0,...,k]の範囲内でランダム整数を生成することが可能であり、ここでkは正の整数である。一般に、kの値が大きいと格納されるフィンガは少なく、従ってルーティングテーブルも小規模であることを意味する。ただし、この一方の影響は、ルーティングの効率が悪いことである。しかしながら、前述のように、各レベルで追加のポインタを追加し、ルーティングテーブルのサイズを大きくする費用で、ルーティング効率を取り戻すこともできる。以下に示すアルゴリズム4を使用して、追加のフィンガを追加することができる。
[Algorithm 4]
for i=log(n) downto 1
if( i==log(n) ) stop = me
else stop = Fingers[i+1]
while n < stop
AddToList( AdditionalFingers[i], n )
n = n.Fingers [i]
end
end
以上で、効率的な分散データ構造を備えた改良型オーバレイネットワークを作成および維持するための、新しい有用なシステムおよび方法が提供されたことがわかる。本発明の原理が適用できる多くの可能な実施形態に鑑みて、図に関して本明細書に記載したような実施形態は、例示的なものを意味しているに過ぎず、本発明の範囲を制限するものとみなすべきでないことを理解されたい。例えば、当分野の技術者であれば、ソフトウェアで示された例示的実施形態の要素がハードウェアで実施可能であり、またその逆も可能であること、および例示的実施形態が、本発明の精神を逸脱することなく配置構成および細部において修正可能であることを理解されよう。従って本明細書に記載された本発明は、すべて、添付の特許請求の範囲およびその等価物の範囲内に入れることのできる実施形態を企図するものである。本明細書に記載されたすべての参照文献、特許、出版物、および他の印刷物は、例外または除外なしにその中のすべての教示について、全体として参照により組み込まれたものである。
(詳細な説明の付録)
以下の技術レポートは、本発明の実施形態およびその実施に関する追加の考察を提供するために、本明細書に含まれるものである。技術レポートに示された各参照は、例外なしにその中のすべての教示に関して全体として参照により組み込まれている。以下に示される参照番号は、本項の末尾に掲載された参照番号を表すものであることに留意されたい。
要約:近年、大規模なピアツーピアシステムを構築するためのフレキシブルなインフラストラクチャとして、Chord、Pastry、およびTapestryなどのスケーラブルオーバレイネットワークが出現してきた。実際には、こうしたシステムには、データがどこに格納されるかを管理せず、可能であれば必ずルーティングパスを管理ドメイン内に維持するという保証がない、という2つの欠点がある。SkipNetとは、データを主として文字列名によって編成することにより、管理されたデータの配置および保証されたルーティング局所性を提供する、スケーラブルオーバレイのことである。SkipNetは、データの配置に関して、きめ細かい管理ときめの粗い管理の両方を可能にするものであって、コンテンツは所定のノード上に配置するか、または階層状に命名されたサブツリーのノードを横切って均一の分散させることができる。SkipNetの局所特性の追加の役立つ重要な点は、組織全体が残りのシステムから切断されるという区分障害により、結果的に2つが接合していないが適切に接続されたオーバレイネットワークを生じさせることができることである。さらにSkipNetは、区分が解決したときに、これらの接合していないネットワークを効率よく再マージすることができる。
1 概説
近年、大規模なピアツーピアシステムを構築するためのフレキシブルなインフラストラクチャとして、Chord[30]、CAN[25]、Pastry[27]、およびTapestry[36]などのスケーラブルオーバレイネットワークが出現してきた。これらのネットワークが実行できる主要な機能が分散ハッシュテーブル(DHT)であり、これは、ピアツーピアシステム内のすべての参加者にわたってデータを均一に拡散できるものである。
DHTは、見事なロードバランシング特性を提供するが、これはデータが格納される場所の管理を犠牲にした上で行われている。これには、データがユーザからかなり遠くに格納される場合があること、およびデータが属する管理ドメインの外に格納される可能性があることという、少なくとも2つの欠点がある。本書では、SkipNet、すなわちピアツーピアシステムの目的に合致するように適合および拡張された、スキップリストの分散一般化(generalization)[23]について紹介する。SkipNetとは、従来のオーバレイ機能をサポートし、コンテンツ局所性およびパス局所性と呼ばれる2つの局所特性を有する、スケーラブルオーバレイネットワークのことである。
コンテンツ局所性とは、データを特定のオーバレイノード上に明示的に配置するか、または所与の組織内のノードを横切って分散させることのできる機能のことである。パス局所性とは、同じ組織内の2つのオーバレイノード間でのメッセージトラフィックが、その組織内でのみルーティングされることを保証する機能のことである。
コンテンツ局所性およびパス局所性は、改善された可用性、性能、管理容易性、およびセキュリティを含む、データの取出しに関するいくつかの利点を提供する。例えば、ノードは重要なデータを自分の組織内に格納することが可能であり(コンテンツ局所性)、ノードは、たとえ組織がインターネットの残りの部分から切断されている場合であっても、オーバレイネットワークを介して自分のデータに到達することができる(パス局所性)。データを使用するクライアントの近くにデータを格納することで、性能の恩恵が得られる。コンテンツを特定のオーバレイノード上に配置することで、そのノードの提供によって要求を反映させることができる。コンテンツの配置は、重要なデータを格納しているマシンの保守スケジューリングなどの問題を管理することも可能となり、その結果管理容易性が向上する。
コンテンツ局所性は、DHTで使用できないセキュリティ保証を提供する。多くの組織は、組織外のノードよりも組織内のノードを信頼する。たとえ暗号化およびデジタル署名化されていても、組織外の任意オーバレイノード上に格納されたデータは、サービス不能(DoS)攻撃ならびにトラフィック分析の影響を受けやすい。DoS攻撃に対するDHTの弾力性を改善するための他の技法は存在するが[3]、コンテンツ局所性は単純かつオーバヘッドのない技法である。
コンテンツ局所性がいったん達成されると、必然的に望まれる第2の特性はパス局所性である。いくつかのオーバレイ設計[4]は、おそらくほとんどの時間、メッセージのルーティングを組織内で維持するが、パス局所性を保証するものは何もない。例えば、こうした保証なしに、explorer.ford.comからmustang.ford.comへのルートが、camaro.gm.comを介して渡される可能性があり、これはford.comの人々が避けたいであろうシナリオである。パス局所性を備えていれば、自分の組織内のデータを要求するノードは、決して組織を離れることのないパスをトラバースする。この例は、たとえノード上に何のコンテンツも配置されないシナリオでも、パス局所性が望ましいことを示すものでもある。
コンテンツの配置を管理することは、自動的にシステムを横切ってデータを均一に分散させるというDHTの目的と直接の緊張関係にある。これら2つの概念を組み合わせる一般化が制約付きロードバランシングであり、ここでは、データは、単一組織内のすべてのノード、所与の建物内に常駐するすべてのノード、または1つまたは複数のデータセンタ内に常駐するすべてのノードなどの、システム内のノードの明確なサブセットを横切って均一に分散される。
SkipNetは、スキップリストの分散一般化[23]である、スケーラブルピアツーピアオーバレイネットワークである。これは、オーバレイノード間での効率的なメッセージルーティング、コンテンツ配置、パス局所性、および制約付きロードバランシングをサポートするものである。これは、文字列名IDspaceならびに数値IDspaceという、2つの別々な、しかし関係するアドレススペースを使用することで実施される。ノード名およびコンテンツ識別子文字列は、名前IDspaceに直接マッピングされ、ノード名のハッシュおよびコンテンツ識別子は、数値IDspaceにマッピングされる。各オーバレイノード上の単一セットのルーティングポインタは、いずれかのアドレススペースでの効率的なルーティングを可能にし、両方のアドレススペースでのルーティングの組合せは、制約付きロードバランシングを実行する機能を提供する。
SkipNetの局所特性の役立つ重要性は、一般的なインターネット障害に対する弾力性である。SkipNetは、ノードをその名前IDorderingに従ってクラスタ化するため、単一の組織内の名前は、組織を残りのインターネットから切断する障害を乗り越える。さらに、組織のSkipNetセグメントは、接続性が復元されたときに、外部SkipNetと効率よく再マージすることができる。相関していない独立した障害の場合、SkipNetは前のオーバレイネットワークと同じ弾力性を有する[30]。
本書の以下の部分は、次のように編成されている。第2項は関連作業について、第3項はSkipNetの基本設計について、第4項はSkipNetの局所特性について、第5項は基本設計の拡張機能について、第6項はリングマージアルゴリズムについて、第7項はSkipNetの代替設計について、第8項はSkipNetの理論的分析について、第9項は実験に基づく評価について、第10項は本書の結論について記載する。
2 関連作業
近年、CAN[25]、Chord[30]、Freenet[6]、Gnutella[11]、Kademlia[20]、Pastry[27]、Tapestry[36]、およびViceroy[19]などの、多くのピアツーピアオーバレイネットワーク設計が提案されてきた。SkipNetは、既存のピアツーピアオーバレイネットワークと同じ機能を提供し、さらにコンテンツ配置に関する明示的な管理を介して改善されたコンテンツ可用性も提供するように設計されている。
CAN、Chord、Pastry、およびTapestryなどのシステムの主要な特徴は、各ノードでスケーラブルな量のルーティング状態を維持しながら、スケーラブルなルーティングパスを提供することである。スケーラブルなルーティングパスにより、任意の2つの通信中のノード間でのホップ転送の予測数が、システム内の合計ノード数を基準にすると少ないことを意味する。Chord、Pastry、およびTapestryはlog Nで基準化(scale)し、ここでNはシステムサイズであって、各オーバレイノードでlog Nルーティング状態を維持する。CANはD−N1/Dで基準化し、ここでDは典型的な値6の次元係数であって、Dに比例してノードあたりのルーティング状態量を維持する。
これらシステムの第2の主要な特徴は、任意の既存ノードのアドレスに等しくない宛先アドレスにルーティングできることである。各メッセージは、アドレスがメッセージの宛先フィールドに指定されたものに「最も近い」ノードにルーティングされ、指定された宛先に最も近いノードにルーティングすることを意味する場合に、「ルート」および「検索」という用語を区別なく使用する。この特徴は、コンテンツが、そのノードIDが耐衝突性のハッシュ関数をそのコンテンツ名に適用した結果に最も近い(すなわち整合的ハッシング[15])オーバレイノードに格納される、分散ハッシュテーブル(DHT)[12]の実施を可能にする。
分散ハッシュテーブルは、例えばPAST[28]およびCFS[8]分散ファイルシステム、Overlook[33]スケーラブル名前サービス、Squirrel[13]協働Webキャッシュ、およびスケーラブルアプリケーションレベルマルチキャスト[5、29、26]を構築する際に使用されてきた。これらシステムのすべてではない場合、そのほとんどで、それらが設計されたオーバレイネットワークを簡単にSkipNetに置き換えることができる。
SkipNetには、目的がDHTの実施であるChordおよびPastryなどの既存のオーバレイネットワークとは基本的な哲学上の違いがある。ChordおよびPastryのようなシステムの基本哲学は、均一の、ロードバランシングされた、ピアツーピアの挙動を得るために、オーバレイ全体にランダムにコンテンツを拡散させることである。SkipNetの基本哲学は、システムが、参加ノードの制約付きサブセットにわたってロードバランシングを可能にしながらも、有用なコンテンツ局所性およびパス局所性を保持できることである。
本書は、ピアツーピアシステムで局所特性が重要であることに初めて気付いたものではない。Keleher等[16]は、DHTが局所性を破壊すること、および局所性は重要なことであるという、2つの主要点を重視している。Vahdat等[34]も局所性の問題を提起している。SkipNetはこの問題に直接対処している。オーバレイ中でのノードの順序付けにハッシュ済み識別子ではなく名前を使用することによって、オブジェクトの名前に基づいた自然な局所性が保たれる。さらに、コンテンツを分散させるのではなく名前順に配置することによって、SkipNetでの名前の領域に関するオペレーションが可能である。
3 基本的なSkipNet構造
この項では、SkipNetの基本設計について紹介する。SkipNetでルーティングする方法およびSkipNetと接合しこれを離れる方法を含む、SkipNetアーキテクチャを示す。
3.1 スキップリストとの類比
第1にPugh[23]に記載されたスキップリストは、典型的にはメモリ内に格納された辞書データ構造である。スキップリストとは、一部のノードが多くのリスト要素をスキップするポインタによって補完された、分類されたリンク済みリストである。「完全」スキップリストとは、i番目のノードの高さがiを分ける2の最大累乗の指数であるものである。図7aは、完全スキップリストを示す図である。レベルhのポインタの長さが2である(すなわちリスト内で2ノードをトラバースする)ことに留意されたい。完全スキップリストは、O(log N)時間の検索をサポートする。
完全スキップリストで挿入および削除を実行することは法外な費用がかかるため、Pughは、高い確率でO(log N)検索を維持しながら、ノード高さを決定するための確率的スキームを提案している。簡潔に言えば、各ノードは、高さhを選択する確率が1/2となるように高さを選択する。従って、確率1/2でノードの高さは1、確率1/4では高さ2となる。図7bは、確率的スキップリストを示す。
スキップリストは、そのヘッドノードからトラバースされるメモリ内データ構造であるが、分散コンピュータノードを一緒にリンクし、システム内の任意のノードから開始できるトラバースをサポートするデータ構造が望ましい。さらに、ピアツーピアシステムではピアが均一の役割および責務を有するはずであるため、すべてのノードの状態および処理オーバヘッドがほぼ同じであることが望ましい。これに対して、スキップリストは、データレコードあたりかなりの違いがあるポインタ数を維持し、各データレコードで大幅に異なるトラバーストラフィックの量を経験する。
3.2 SkipNet構造
スキップリストから取り入れた主な所見は、数が変化するレコードを「スキップする」すべてのデータレコードならびにポインタの分類済みリストを維持するという概念である。データレコードをコンピュータノードに置き換え、ノードの文字列名IDをデータレコードキーとして使用し、リストの変わりにリングを形成することによって、スキップリストの概念を分散システムセッティングに変形させる。第3.3項で説明するように、パス局所性を実行可能にするためにリングは2重リンクしていなければならない。
スキップリストの場合のように、ノードに数が大きく変化するポインタを格納させるのではなく、各SkipNetノードは、ほぼ2log Nのポインタを格納するが、ここでNはオーバレイシステム内のノード数である。ポインタはノード間でメッセージトラフィックをルーティングする際に使用されるので、各ノードのポインタセットはそのルーティングテーブル、またはR−Tableと呼ばれる。所与のノードのルーティングテーブルのレベルhにあるポインタは、所与のノードの左および右へほぼ2のノードであるノードを指す。図9は8ノードを含むSkipNetを記載したものであり、ノードAおよびVを維持するルーティングテーブルポインタを示す。
図9のSkipNetは「完全」SkipNetであり、各レベルhのポインタが正確に2ノードをトラバースする。挿入および削除が存在する完全SkipNetを維持することは、完全スキップリストの場合と同様に実現不可能である。効率的な挿入および削除を容易にするために、確率的SkipNet設計を導出した。図10は、図9と同じSkipNetを、各レベルで同時にすべてのノードの相互接続を示すように配置構成した図である。すべてのノードは、レベル0の各ノードのポインタによって形成されたルートリングによって接続される。レベル1のポインタは離れた2つのノードであるノードを指し、従ってオーバレイノードは暗黙的に2つの接合していないリングに分けられる。同様に、レベル2のポインタは4つの接合していないノードリングを形成する、という具合である。レベルh+1のリングは、レベルhのリングを2つの接合していないセットに分割することによって得られ、それぞれのリングがレベルhリングのあらゆる第2のメンバを含むことに留意されたい。確率的SkipNet設計を得るためには、各ノードに2つのリングのうちで自分の属するリングをランダムおよび均一に選択させることによって、レベルhの各リングがレベルh+1で2つのリングに分割される。この確率的スキームでは、ノードの挿入/削除のみが、自分が属することをノードがランダムに選択した各リングの他の2つのノードに影響を与える。さらに、レベルhのポインタは、依然として2ノードを予測してスキップし、ルーティングは高い確率でO(log N)のホップ転送が可能である。
各ノードのリングメンバシップのランダムな選択は、ノードの数値IDと呼ばれる固有の2進数として符号化することが可能である。図10に示されるように、数値の最初のhビットがレベルhのリングメンバシップを決定する。例えば、ノードXの数値IDは011であり、レベル2でのそのメンバシップは011の最初の2ビットを取って決定され、Ring01と指定される。[30]に記載されるように、ノードのDNS名の耐衝突性ハッシュ(MD−5など)を数値IDとして使用することには利点がある。本書の以下の部分では、数値IDがどのように生成されるかについては対象としておらず、実際にランダムかつ固有であると想定しているだけである。
ノードの数値IDは固有であるため、同じSkipNetデータ構造によって維持される第2のアドレススペースとみなすことができる。SkipNetの文字列アドレススペースにあるノード名IDは、スペース全体に均一に分散されていないが、SkipNetの数値アドレススペースにあるノード数値IDは、均一に分散されている。後者のアドレススペースの存在により、適切な数のノードをスキップする前者のアドレススペース用のルーティングテーブルエントリを構築することができる。
Chordに精通している読者であれば、SkipNetのルーティングテーブルが、レベルhのポインタが2ノードを予測してホップする、Chordによって維持されるそれと同様であることに気付くであろう。根本的な違いは、SkipNetのルーティングテーブルが、ノードの名前IDがある名前スペースを介したルーティングをサポートするのに対して、Chordのルーティングテーブルは、ノードの文字列名から導出された固有ハッシュのある数値スペースを介したルーティングをサポートすることである。Chordは、数値アドレススペース内でノード識別子を均一に分散させることによって、O(log N)のルーティングおよびノード挿入性能を保証する。SkipNetは、そのうちの1つがChordの数値アドレススペースと同じ特性を有する、そのルーティングテーブル内の2つのアドレススペースに関する情報を符号化することにより、その文字列名スペースに関して同じ目標を達成する。
3.3 名前IDによるルーティング
SkipNetにおける名前IDによるルーティングは、意図された宛先に最も近くルーティングするポインタに従うという、スキップリストにおける検索と同じ基本原理に基づくものである。各ノードでは、メッセージが、宛先値を超えて示すことのない最高位ポインタに沿ってルーティングされることになる。名前IDが宛先に最も近いノードにメッセージが達したときに、ルーティングは終了する。
図11は、このアルゴリズムの擬似コード図である。ノードが関数RouteByNameIDを呼び出し、ルーティングする宛先名前IDおよびメッセージに移ると、ルーティングオペレーションが開始する。この関数は、ルーティングする名前ID用のフィールドおよびルーティングする方向も含んだより大きなメッセージの中に、メッセージをラップするものである。方向は、宛先名前IDがローカルノードの名前IDよりも辞書編集的に大きいか小さいかに応じて設定される。
メッセージをラップした後、実際にメッセージを次のノードに転送するために、関数RouteMessageByNameIDが呼び出される。この関数は、メッセージがルーティングされるときに通過する各ノードで呼び出されることになる(発信元ノードを含む)。RouteMessageByNameIDは、ローカルノードのルーティングテーブルを使用して、その最終宛先に向かってメッセージの転送を試みる。ローカルノードが宛先名前IDに最も近いノードであれば、ローカルノード上でのメッセージの実際の送達を実行するためにDeliverMessageが呼び出される。
ノードは各リングに沿って名前ID順に並べられ、メッセージがその宛先を越えて転送されることは決してないため、ルーティング中に遭遇するすべてのノードはソースから宛先までの間の名前IDを有する。従って、メッセージが、名前IDが宛先と共通の接頭部を共用するノードから発信される場合、メッセージによってトラバースされるすべてのノードは、ソースと宛先が共用するのと同じ接頭部を共用する名前IDを有する。リングは2重にリンクされているため、このスキームでは、それぞれソース名前IDが宛先名前IDよりも小さいか大きいかに応じて、右と左の両方のポインタを使用してルーティングすることができることに留意されたい。この方式の考えは、名前IDによるルーティングが、減少しない名前ID接頭部の宛先との一致を使用してノードをトラバースすることである。
ソース名前IDおよび宛先が共通の接頭部を共用しない場合、メッセージは右または左のポインタを使用していずれかの方向にルーティングすることができる。公平を期すため、名前IDが辞書編集用順序の中間付近にあるノードが、名前IDが順序の最初または最後付近にあるノードよりも不釣合いに多くの転送トラフィックの共用をしないように、進行方向をランダムに選ぶことができる。ただし話を簡単にするために、現在の実施ではZからAまたはその逆のラップアラウンドは決してしていない。第8.5項は、たとえこのスキームの下でも、ノードストレスのバランスがうまく取られていることを証明している。
名前IDによってルーティングされる際にメッセージがトラバースするホップの予測数は、高い確率でO(log N)となる。その証明については、第8.1項を参照されたい。
3.4 数値IDによるルーティング
所与の数値IDに従って、効率的にメッセージをルーティングすることも可能である。手短に言えば、ルーティングオペレーションは、第1桁で数値IDが宛先数値IDと一致するノードが見つかるまで、レベル0リングでノードを検査することによって開始される。この時点で、ルーティングオペレーションは、宛先ノードも含むこのノードのレベル1リングにジャンプする。次にルーティングオペレーションは、第2桁で数値IDが宛先数値IDと一致するノードが見つかるまで、このレベル1リング中のノードを検査する。前述のように、このノードのレベル2リングは宛先ノードも含まなければならないため、ルーティングオペレーションはこのレベル2リングに進むと結論付ける。
この手順は、これ以上進行できなくなるまで、すなわちそのリング内のノードで宛先数値IDとh+1桁を共用するものがないような何らかのレベルhのリングに達するまで反復する。ここで、何らかの方法により、このリング内のノードの1つを宛先ノードとして確定的に選択しなければならない。本アルゴリズムでは、宛先ノードを、この最高位リング中のすべてのノードの中で数値IDが数値的に宛先数値IDに最も近いノードであると定義している。(より単純な代替方法は、[20]で提案されたXORメートル法の下で最も近いノードを選択することであろう。)
図12は、このアルゴリズムの擬似コード図である。ノードが関数RouteByNumericIDを呼び出し、ルーティングする宛先数値IDおよびメッセージに移ると、ルーティングオペレーションが開始する。これは、(分散)ルーティング手順全体を通じて維持および更新する必要のあるいくつかの状態変数用のフィールドも含んだより大きなメッセージの中に、メッセージをラップするものである。これらのフィールドには以下のものが含まれる。
numericID:ルーティング先の宛先数値ID
currH:トラバースされる現在のリングのレベル
startNode:現在のリング中で遭遇する最初のノード
bestNode:これまでに遭遇したすべてのノードの中で宛先に最も近いノード
finalDestination:メッセージを処理するための次のノードがメッセージにとって正しい最終宛先である場合に、trueに設定されるフラグ
メッセージをラップした後、実際にメッセージを次のノードに転送するために、関数RouteMessageByNumericIDが呼び出される。この関数は、メッセージがルーティングされるときに通過する各ノードで呼び出されることになる(発信元ノードを含む)。RouteMessageByNumericIDは、メッセージの最終宛先がそれ自体であるかどうかをチェックし、そうであれば、メッセージのローカル送達を実行するために、関数DeliverMessageを呼び出す。
そうでなければ、メッセージがcurrHによって示されるルーティングテーブルリングをすべて回ってトラバースされたかどうかがチェックされる。トラバースされた場合は、宛先IDの接頭部に一致する高位リングが見つからなかったことを暗に意味する。その場合、bestNodeは、メッセージの最終宛先であるはずの現在のリング上のノードの識別を含むことになり、メッセージはそのノードに転送される。
メッセージが現在のリングを完全にトラバースされていなかった場合、RouteMessageByNumericIDは、ローカルノードが宛先IDの接頭部に一致する高位リングのメンバでもあるかどうかをチェックする。そうであれば、そのリングの検索が開始される。そうでなければ、ローカルノードがこれまでにリング上で発見されたベストノードよりも宛先IDに近いかどうかをチェックする。どちらの場合も、メッセージは、トラバースのためにルーティングリングの次のメンバに転送されることになる。(リング内を時計回りまたは反時計回りのどちらの方向に進むかの選択は任意であり、本発明者は時計回り方向を選択した。)
数値IDによってルーティングされる際にメッセージがトラバースするホップの予測数は、高い確率でO(log N)となる。その証明については、第8.3項を参照されたい。
3.5 ノードの接合および離脱(departure)
SkipNetを接合するために、新参者は第1に新参者の数値IDに対応するトップレベルのリングを見つけなければならない。これは、第3.4項に記載したように、新参者の数値IDにメッセージをルーティングすることに等しい。
新参者は第1に、このリング内のみでの名前IDによる検索を使用して、このトップレベルリング中でその隣接を見つける。これら隣接のうちの1つから始まり、次に下位のレベルで新参者は、この下位レベルでのその隣接に関してその名前IDを検索する。このプロセスは、新参者がルートリングに達するまで各レベルで繰り返される。正確を期すために、新しいノードがルートリングに接合するまで、既存ノードが新参者を指すことはなく、その後新参者は各リングに沿ってその隣接に、自分がそれらの隣に挿入されることを示すメッセージを送信する。
図13は、このアルゴリズムの擬似コード図である。接合ノードはInsertNodeを呼び出し、それが使用する名前IDおよび数値IDに移る。この関数は、接合ノードの数値IDに向かってルーティングされることになるメッセージを作成する。メッセージは、新しいノードが接合するべきトップレベルリングに属しているノードで終わることになる。そこで、メッセージは汎用メッセージ送達ルーチンDeliverMessageに移る。
このルーチンは、InsertNodeIntoRingsを呼び出すことによってノード挿入の第2相を開始することになり、これが、接合ノードがそれ自体を挿入するはずのすべてのリングの隣接ノードをまとめるために使用される新しいメッセージを作成する。このメッセージによって符号化される状態には、以下のフィールドが含まれる。
JoiningNode:新しく接合するノードの識別
nameID:新しく接合するノードの名前ID
numericID:新しく接合するノードの数値ID
currH:挿入隣接が現在検索されているリング
ringNeighbors:挿入隣接ノードのアレイ
doInsertion:ringNeighborsのアレイが完全に充填され、メッセージを処理するための次のノードが新しく接合するノード(次に各リングへの実際の挿入を実行しなければならない)である場合に、trueに設定されるフラグ
挿入隣接集合メッセージを実際に処理するために、関数CollectRingNeighborsが呼び出される。この関数は、InsertNodeIntoRingsによって作成されたメッセージがルーティングされるときに通過する各ノードで呼び出されることになる。
CollectRingNeighborsは、挿入隣接の集合が完了したかどうか、および新しく接合するノードのすべての関連リングへの実際の挿入を実行する時間であるかどうかをチェックする。これにあてはまらなければ、現在のリングの隣接ノードが先に挿入される正しいノードであるかどうかがチェックされる。これにあてはまれば、挿入隣接がメッセージに記録され、次に下位レベルのリングに対して検索が開始される。あてはまらなければ、メッセージは現在のリングに沿って隣接に転送される。すべてのリングレベルで隣接が見つかると、挿入隣接の完了リストが新しく接合するノードに返送される。
このアルゴリズムの効率に関する主な所見は、新参者が高位レベルリングで接合した後、一定レベルのリングのみに接合するということである。その結果、接合されるリング内での名前IDによる検索は、典型的にはリングのすべてのメンバをトラバースしないことになる。代わりに、トラバースされるノードの範囲は、高位レベルで新参者の隣接間の範囲に限定される。従って、高い確率で、SkipNetでのノード接合は、O(log N)ホップをトラバースすることになる(証明については第8.4項を参照)。
ノード逸脱の処理における基本的な所見は、最下位レベルのリングが維持されている限り、SkipNetが正しくルーティングできることである。レベル0以外のすべてのポインタをルーティング最適化ヒントとみなすことができるため、ルーティングプロトコルの正確さを維持する必要はない。従って、ChordおよびPastryのように、SkipNetはこれらのリングのメンバシップを、背景修復プロセスを使用してゆっくりと維持および修復する。ただし、ノードが自発的にSkipNetを離脱する場合は、それらのポインタを後でゆっくりと修復するのではなく即時に修復するように、その隣接に先回りして通知することができる。
最下位リングを正しく維持するために、各SkipNetノードは、最下位リングに沿って追加のノードを指すリーフセットを維持する。次に、リーフセットについて説明する。
3.6 リーフセット
あらゆるSkipNetノードは、左側および同様に右側の、名前IDで最も近いL/2ノードを指すポインタセットを維持する。このポインタセットをリーフセットと呼ぶ。いくつかの以前のピアツーピアシステム[27]が同様のアーキテクチャ特徴を組み込んでおり、Chord[31]では、これを後続者リストと呼ぶ。
これら最下位レベルのリングの追加ポインタは2つの利点を与える。第1に、リーフセットは耐障害性を向上させる。検索オペレーションが障害ノードに遭遇した場合、障害ノードに隣接するノードは、障害ノードの反対側の宛先を有するリーフセットポインタを含むことになり、従って、最終的に検索は障害ノードを越えていくことになる。最下位リングを第1に修復し、高位リングを修復するために下位リングの正確さに再帰的に依拠することによって、修復も容易になる。リーフセットがないと、高位レベルのポインタ(障害ノードを越えて示す)が十分に修復を実行できるかどうかは明らかでない。2つのノードが障害を起こした場合、それらの間にある何らかのノードが、高位レベルのポインタのみを使用してそれを探している他のノードには見えなくなる可能性がある。さらに、組織切断のノード障害シナリオでは、ほとんどのノードのリーフセットポインタは、高位レベルポインタよりも無傷のままである可能性が高い。リーフセットが提供する(組織切断シナリオを除く)ノード障害に対する弾力性については、[31]によっても示されている。
リーフセットの第2の利点は、必要な検索ホップ数から著しい加法定数を引くことによって、検索性能を上げることである。検索メッセージがその宛先のL/2内にある場合、検索メッセージは即時に宛先に転送されることになる。現在の実施では、Pastryが実行するのと同じ、L=16のリーフセットサイズを使用する。
3.7 背景修復
SkipNetは、レベル0リング内の隣接ポインタが正しいノードを指す確率が確実に高くなるように、リーフセットを使用する。Chord[30]の場合と同様に、効率的でない可能性がある場合、名前IDによるルーティングが正しいことを保証するのに必要なのはこれだけである。なぜこれが真であるかを直感的に議論する場合、何らかの高位レベルポインタが正しいノードを示しておらず、検索アルゴリズムがこのポインタを使用しようとしているものと想定する。2つのケースがある。第1のケースでは、正しくないポインタは、リングを回ってルーティングの宛先よりも遠くを指す。この場合、宛先を越えるとポインタは使用されなくなる。第2のケースでは、正しくないポインタは、現在の場所と宛先との間の場所を指す。この場合、ポインタに安全に従っていくことが可能であり、ルーティングはそれが指すところであればどこからでも進んでいくことになる。唯一の潜在的な損失はルーティングの効率である。最悪の場合、正しいルーティングはレベル0リングを使用して発生することになる。
にもかかわらず、効率的なルーティングの場合、他のポインタが正しいことをできる限り保証することが重要である。SkipNetは、正しくないリングポインタの検出および修復のために、2つの背景アルゴリズムを使用する。
これらのうち第1のアルゴリズムは、レベルhの正しいリングポインタセットを、その上のレベルh+1のリングに正しいポインタセットを構築するために使用できるという不変式(invariant)に基づいている。各ノードは、レベル0から始まり、それが属する各リングを短い距離だけ回って定期的にメッセージをルーティングし、それより上のリング内のポインタが正しいノードを指すことを検証し、必要であればそれらを調整する。レベルhのポインタが検証されると、このアルゴリズムは1つ上位のポインタを反復的に検証および修復する。各レベルでのポインタの検証および修復には、予測した一定量の作業のみが必要である。
これらのうち第2のアルゴリズムは、ノードが矛盾して挿入された可能性があるかまたはメンバが消去された可能性があるリングに対して、ローカル修復を実行する。このアルゴリズムでは、ノードは各レベルでその隣接に定期的に接触し、「レベルhであなたの左(右)の隣接であると確信する」と伝える。隣接がこの情報に同意した場合は、回答は不要である。同意しない場合、隣接は自分の左(右)の隣接がだれであると確信しているのかを回答し、この情報に基づいて、発見された任意のローカルリングの矛盾を修正するために調停が実行される。
4 SkipNetの有用な局所特性
本項では、SkipNetが提供できる有用な局所特性と、その結果について論じる。
4.1 コンテンツおよびルーティングパスの局所性
SkipNetが基本的構造であるとして、SkipNetがコンテンツ局所性およびパス局所性をどのようにサポートするかについて端的に説明する。ノードの名前IDをコンテンツ名に組み込むことによって、コンテンツがそのノードでホストされることを保証する。一例として、ノードjohn.microsoft.com上の文書doc-nameを格納するためには、これにjohn.microsoft.com/doc-nameと命名すれば十分である。
SkipNetは、ノードの名前IDに使用される命名規則については念頭にない。本発明者のSkipNetのシミュレーションおよび開発では、DNS名の構成要素を適切にリバースした後、名前IDにDNS名を使用する。このスキームでは、john.microsoft.comは、com.microsoft.johnとなり、microsoft.com内のすべてのノードがそれらの名前IDでcom.microsoft接頭部を共用する。これにより、すべてのノードが単一のDNS接尾部を共用する(従って単一の名前ID接頭部を共用する)、組織のパス局所性を生み出す。
4.2 制約付きロードバランシング
概説部で述べたように、SkipNetは、制約付きロードバランシング(CLB)をサポートしている。CLBを実施するために、データオブジェクト名は、DHTロードバランシングの実行に使用されるノードセットを指定する部分と、DHTのハッシュ関数への入力として使用される部分という、2つの部分に分けられる。SkipNetでは、名前の2つの部分の区切り文字として、特殊文字「!」が使用される。例えば、名前msn.com/DataCenter!TopStories.htmlは、名前が接頭部msn.com/DataCenterで始まるノードを介したロードバランシングを示す。接尾部TopStories.htmlは、DHTハッシュ関数への入力として使用され、これがmsn.com/DataCenter内のどのノードにデータオブジェクトを配置するかを決定する。
CLBを使用して格納されたデータオブジェクトを検索するためには、第1に、名前IDによる検索を使用してノードの適切なサブセットを検索する。データオブジェクトを格納しているサブセット内の特定ノードを見つけるためには、このサブセット内で接尾部のハッシュに関して数値IDによる検索を実行する。
名前IDによる検索は、第3.3項の説明と変わらず、O(log N)メッセージホップを利用する。数値IDによる検索は名前ID接頭部によって制約されるため、任意のレベルで、リングではなく2重にリンクされたリストを介して効率良く進めていかなければならない。リストの右境界線(名前ID接頭部境界線によって決定される)に遭遇すると同時に、ノードの見落としが決してないように検索を方向転換しなければならない。この方法での方向転換は、数値IDによる検索の性能に多くても2分の1までの影響を与えるため、合計でO(log N)メッセージホップが必要である。
従来のシステム全体のDHT意味論と明示的コンテンツ配置は、どちらも制約付きロードバランシングの特別なケースであり、システム全体のDHT意味論は、文書名の始めに「!」ハッシング区切り文字を配置することによって得られることに留意されたい。ハッシング区切り文字を省略し、特定のSkipNetノードの名前に一致する接頭部を有するようにデータオブジェクトの名前を選択することによって、オブジェクトがそのSkipNetノード上に配置される結果となる。
制約付きロードバランシングは、SkipNetのどんな命名サブツリーでも実行可能であるが、オーバレイネットワークのノードの任意のサブセットでは実行できない。この点では、階層型ファイルシステムと同様の柔軟性を有する。もう1つの制約は、ロードバランシングのドメインがデータオブジェクト名の中に符号化されることである。従って、異なるロードバランシングドメインに対して透過な再マッピングは不可能である。
4.3 耐障害性
以前の研究[18、21]で、今日のインターネットにおけるネットワーク接続障害は、主に境界ゲートウェイプロトコル(BGP)の構成誤りおよび障害によるものであることがわかった。他のハードウェア、ソフトウェア、および人為的障害の果たす役割は、それほど大きくない。その結果、オーバレイシステムのノード障害は独立しておらず、代わりに、同じ組織またはASドメインに属するノードも一緒に障害を起こす傾向がある。従って、組織境界に沿って発生する障害を処理するためのSkipNetの耐障害性の設計に焦点をあてた。SkipNetの相関していない独立した障害に対する耐性は、以前のオーバレイ設計(例えばChordおよびPastry)とほぼ同じであり、同様のメカニズムを介して達成される。
4.3.1 障害回復
障害回復における主な所見は、レベル0リングにおいて正しい隣接ポインタを維持することでオーバレイの正しい機能が十分に保証されるということである。各ノードがL個のレベル0隣接のリーフセットを維持するので、レベル0リングポインタは、それらを、障害を起こしたノードに続く最も近い生きたノードを指すリーフセットエントリに置き換えることによって修復できる。リーフセットを再度完全に占有させるために、リーフセット内の生きたノードに接触することができる。
第3.7項に記載したように、SkipNetは、ノードが障害を起こしたときに、背景内ですべての必要なルーティングテーブルエントリを段階的に更新するゆっくりとした安定化メカニズムも使用する。この間、生きた到達可能なノードへのどんな照会も依然として続くことになり、安定化メカニズムは最適なルーティングを簡単に復元する。
4.3.2 組織境界に沿った障害
以前のピアツーピアオーバレイ設計「25、30、27、36」では、オーバレイトポロジでのノード配置は、ランダムに選択された数値IDによって決定された。その結果、単一組織内のノードは、オーバレイのアドレススペース全体に均一に配置される。均一な分散はオーバレイのO(log N)ルーティング性能を可能にするが、オーバレイネットワーク上での物理リンク障害の影響を制御するのを困難にさせる。具体的に言えば、組織間ネットワークリンクの障害は、オーバレイでの複合的な拡散されたリンク障害として現れることになる。実際に、インターネットへの接続性を失った単一組織内の各ノードにとっては、オーバレイ全体および組織内の他のすべてのノードから切断される可能性がある。第9.4項では、この考えを確認する実験によって得られた結果を報告する。
SkipNetの名前IDは組織のメンバシップを符号化する傾向があるため、共通の名前ID接頭部を備えたノードはオーバレイの中で連続しており、組織境界に沿った障害はオーバレイを完全に断片化するものではないが、結果的には代わりにリングセグメントを区分することになる。従って、切断された組織内のノードのルーティングテーブルエントリの重要な部分は、依然として同じネットワーク区画内の生きたノードを指している。この特性により、SkipNetは組織境界に沿った障害を難なく乗り越えることができる。さらに、切断された組織のSkipNetセグメントは、第6項で説明するように、接続性が復元されたときに、外部SkipNetと効率的に再マージすることができる。
4.4 セキュリティ
コンテンツ局所性およびパス局所性の利点についての考察では、名前IDの選択に関するアクセス制御メカニズムが想定されている。SkipNetは、このメカニズムを直接提供していないが、他のレイヤで提供されると想定している。名前IDにDNS名を使用することでこれを提供しており、任意のノードはmicrosoft.com接尾部を備えたグローバルDNS名を作成することはできない。
パス局所性により、SkipNetは、以前のピアツーピアシステムが提供するものを超えた、名前IDスペース内の共通接頭部に対応する単一の管理ドメイン内にある2つのマシン間でのメッセージは管理ドメインを決して離れることはない、という何らかのセキュリティを保証することができる。従って、これらのメッセージは、管理ドメインの外部に位置するマシンによるトラフィック分析またはサービス不能攻撃の影響をたやすく受けることがない。実際に、SkipNetは、Sybil攻撃[9]に対する弾力性さえも提供しており、microsoft.com外部に無限数のノードを作成することによって、攻撃者がmicrosoft.com内部のどんなトラフィックも見えないようにすることができる。
攻撃者は、SkipNetをターゲットに隣接する名前ID(例えばmicrosofta.com)に接合させるように選択することによって、特定のドメイン(例えばmicrosoft.com)をターゲットにしようと試みる可能性がある。microsoft.comがM個のノードからなると想定する。この場合攻撃者は、均一なトラフィックという仮定の下では、microsoft.comノードと外界との間で渡されるメッセージのO((log M)/M)部分を見ると予測する。
パス局所性のないシステムであるChordでは、それ自体をターゲットノードの隣に挿入し、ターゲットへのトラフィックの一定の部分を遮断するためには、(メッセージがChord後続者リストではなくChordフィンガテーブルのみを使用してルーティングされると想定して)システム内にあるノードと同じ数のSHA−1ハッシュを計算する必要がある場合がある。これに対して、SkipNetでは、名前IDの生成に対する計算上のオーバヘッドはないが、その名前IDを作成する特権のない場所でSkipNetにそれ自体を挿入するのは不可能である。SkipNetでは、パス局所性のない他のシステムで必要な数よりも少ない攻撃ノードで、組織全体と外界との間の接続をターゲットにすることが可能な場合がある。たとえパス局所性がこの種の攻撃を容易にするものであっても、望ましい特性であると確信している。
ピアツーピアシステムのセキュリティを向上させることに関する最近の研究[3]では、ノード識別子の証明、ルーティングを成功させるためのテスト、冗長ルーティングパスの使用に焦点が当てられた。本考察は、コンテンツ局所性およびパス局所性のセキュリティ特典に焦点を当てたが、SkipNet設計もこの最近の研究からの技法を組み込むことができる。
4.5 領域照会
SkipNetの設計はスキップリストに基づき、スキップリストによって影響を受けるものであるため、効率的な領域照会をサポートする中でそれらの機能性および柔軟性を引き継ぐ。具体的に言えば、ノードおよびデータは名前ID順で格納されるため、共通の接頭部を共用している文書は、連続したリングセグメントに渡って格納される。従ってSkipNetでの領域照会への回答は、対応するリングセグメントに沿ったルーティングと等価である。現在はSkipNetのアーキテクチャおよび局所特性に焦点を当てているため、本書ではこれ以上領域照会について論じることはしない。
5 SkipNetの機能拡張
本項では、基本的なSkipNet設計に対するいくつかの最適化および機能拡張について示す。
5.1 疎および密なルーティングテーブル
第3項に記載した基本的なSkipNetルーティングテーブルの構造およびアルゴリズムは、ルーティング性能を向上させるために修正することができる。そこで、より詳細に論じると、SkipNetの数値IDは、128のランダム2進数字からなる。ただし、ランダム数字は2進である必要はない。実際に、非2進のランダム数字を使用するスキップリストがよく知られている[23]。
SkipNetの数値IDが非2進数字からなる場合、図10に示されたリング構造、格納されると予測するポインタ数、および予測される検索コストが変わることになる。本発明者は数字の様々な可能性の数をkで示し、2進数字の場合、k=2である。k=3の場合、SkipNetのルートリングは依然として単一のリングだけであるが、レベル1のリングは3つ(2つだけではない)、レベル2のリングは9つなどとなる。kが増加するにつれて、任意の所与の桁数でノードが一致する可能性が低くなり、ポインタの合計数は少なくなる。ポインタが少なくなるため、任意の特定ノードに到達するまでにより多くのホップが必要になることも予測される。kの値が増加する場合、ポインタ数はO(log n)まで減少し、検索に必要なホップ数はO(klog n)まで増加する。この修正の結果として生じるルーティングテーブルを、パラメータkの疎R−Tableと呼ぶ。
密R−Tableを構築することも可能である。疎な構造体の場合と同様に、各数字についてkの可能性があると想定する。さらに、各レベルおよび両方向で、連続するノードにk−1ポインタを格納すると想定する。この場合、予測される検索ホップ数はO(log n)まで減少し、1ノードでの予測されるポインタ数はO(klog n)まで増加するが、これは疎な構造体とは反対のトレードオフである。これらの結果については、第8項で正式に証明する。1レベル1方向あたりk−1個のポインタを格納する理由に関する直感的洞察については、レベルhでのノードのk番目の隣接が、レベルh+1でのその第1の隣接にもなる好機を有することに留意されたい。
本発明の密度パラメータkは、Pastryの密度パラメータbとほとんど同じである。Pastryは常に2進数値IDを生成するが、数字をbのグループに分ける。これは、k=2の数値IDを選択する場合の本発明の方法と類似している。
疎R−Tableのケースでノードの接合および離脱を実施する場合、以前のアルゴリズムを修正する必要はない。密R−Tableの場合、ノード接合メッセージは、次のリングに降りる前に、新参者を含むあらゆるリングで両方向に、少なくともk−1ノードをトラバース(およびそれらについての情報を収集)しなければならない。前述のように、ノード離脱の際には、あらゆる隣接に通知するだけでよい。
k=2の場合、疎および密の構造体は同一である。kが増加すると疎R−Tableはますます疎になり、密R−Tableはますます密になる。任意の所与の疎/密の程度は、kならびに疎または密のいずれかのR−Tableを適切に選択することで、適切に概算することができる。本実施では、ノードあたりの状態とルーティング性能との良好なバランスを達成するために、k=8を選択する。
5.2 重複ポインタの消去
レベルhのリング内で隣接する2つのノードは、レベルh+1のリングでも隣接する可能性がある。この場合、これら2つのノードはレベルhおよびh+1で互いに「重複」ポインタを維持する。直感的に、より多くの別個のポインタを有するルーティングテーブルは、別個のポインタが少ないテーブルよりも優れたルーティング性能を生み出すため、重複ポインタはルーティングテーブルの有効性を低下させることになる。重複ポインタを、下位リングの次の隣接などの好適な代替に置き換えることで、適度な量(典型的にはおよそ20%)のルーティング性能が向上する。この方式で調整されたルーティングテーブルエントリは、数値IDによる正しいルーティングに必要なリング上で最も近い隣接を指すノードである不変式を侵害するため、名前IDによるルーティングの際にしか使用できない。
5.3 ネットワーク近接の組込み:P−Table
SkipNetでは、ノードの隣接はリングメンバシップのランダムな選択、およびそれらリング内での識別子の順序付けによって決定される。従って、SkipNetオーバレイは、潜在的にルーティング性能を損なう物理ネットワークトポロジを直接考慮せずに構築される。例えば、どちらも米国内のノードsaturn.com/nodeAからノードchrysler.com/nodeBへメッセージを送信する場合、このメッセージは、英国内の中間ノードjaguar.com/nodeCを通ってルーティングされる可能性がある。その結果、メッセージが米国内にある他の中間ノードを通ってルーティングされる場合よりもかなり長いパスになってしまう。
この問題に対処するために、近接テーブル(proximity table)の略語であるP−Tableと呼ばれる第2のルーティングテーブルを導入する。このP−Tableの設計は、Pastryの近接認識ルーティングテーブル[4]に示唆されたものである。ネットワーク近接を組み込むための主な所見は、名前IDスペース内でほぼ適切な距離だけ離れている任意のノードを、基礎となるO(log N)ホップのルーティング挙動を維持することになる受入れ可能なルーティングテーブルエントリとして使用できることである。例えば、レベル3のルーティングテーブルエントリが、正確に8ノードはなれたノード、あるいは7または9ノードはなれたノードのどちらを指すかは、統計的にメッセージが使用することになる転送ホップ数が同じになるので、問題ではない。ただし、7番目または9番目のノードがネットワーク距離において近い場合、これをルーティングテーブルエントリとして使用すれば、かなり良いルーティング性能を引き出すことができる。
P−Tabel構築プロセスをブートストラップするためには、ノードの基本ルーティングテーブル(R−Table)にすでに含まれている情報を使用する。R−Tableエントリは、指数的に距離が遠くなっていくノードを指すと予想されることを想起されたい。R−Table内で隣接するエントリをインタリーブするノードを選択することによって、P−Tableのルーティングエントリを構築する。言い換えれば、R−Tableエントリは、名前IDによって分類された場合、ルートリングの連続するセグメントのエンドポイントを定義し、P−Tableの構築プロセスは、それら各セグメント内の接合ノード近くにあるノードを見つける。2つのノード間のラウンドトリップ待ち時間を推定することによって、それらが互いに近いと判断する。
以下の項では、SkipNetノードがそのP−Tableの構築に使用するアルゴリズムについて、詳細に説明する。初期のP−Tableが構築された後、SkipNetはそのP−Tableエントリの品質改善、ならびに、定期的な安定化アルゴリズムを使用したノードの接合および逸脱の調整を継続的に試みる。定期的な安定化アルゴリズムは、以下に示される初期の構築アルゴリズムに非常によく似ている。最終的に、第8.8項で、P−Tableのルーティング性能およびP−Tableの構築が効率的であることについて論じる。
5.3.1 P−Tableの構築
R−Tableは、値kと疎または密の構造体という、2つの構成パラメータしか備えていないことを想起されたい。P−Tableは、その基になるR−Tableからこれらのパラメータを受け継ぐ。あるケースでは、第1に所望のパラメータを備えた一時R−Tableを構築することによって、R−Tableのパラメータと異なるパラメータを備えたP−Tableを構築することが可能である。例えば、R−Tableが疎である場合、P−Table構築アルゴリズムへの入力として使用する一時密R−Tableを第1に構築することによって、密なP−Tableを構築することができる。
P−Tableの構築を開始するには、別のリストにR−Tableのエントリ(一時であるか否か)がコピーされ、ここで名前IDによって分類され、重複するエントリは消去される。R−Table構築の確率的性質により、重複エントリおよび不適切なエントリが生じる可能性がある。次に、接合ノードは、j−1間隔を定義するjノードのリストであるエンドポイントの分類済みリストを含む、P−Table接合メッセージを構築する。次にノードは、このP−Table接合メッセージを、ネットワーク距離に関して近いはずのシード(seed)ノードと呼ばれるノードに送る。
P−Table接合メッセージを受け取ったいずれのノードも、独自のP−Tableエントリを使用して間隔に「候補」ノードを充填する。実際的に考えて、多くのノードが累積しすぎないように、間隔あたりの最大候補数は10に制限する。任意の可能な間隔に充填した後、ノードは、依然として空の間隔がないかどうかを調べるために、接合メッセージを検査する。まだ充填されていない間隔があった場合、ノードは独自のP−Tableエントリを使用し、接合ノードから最も遠くにある充填されていない間隔の最も遠いエンドポイントに向けて、接合メッセージを転送する。すべての間隔に少なくとも1つの候補があれば、ノードは接合完了メッセージを接合ノードに返送する。
オリジナルノードが独自の接合メッセージを受け取ると、それぞれの間隔がその間隔のP−Tableエントリとして候補ノードのうちの1つを選択することによって反復する。候補ノード間の最終選択は、各候補に対するネットワーク待ち時間を推定し、最も近いノードを選択することによって実行される。
P−Tableの構築に関する残りの主な詳細について概説する。SkipNetは2重にリンクされたリングを維持するので、P−Tableの構築には、接合ノードから時計回り方向および反時計回り方向の両方のアドレススペースをカバーする間隔を定義することが含まれる。従って、同じ開始ノードから2つの接合メッセージが送信される。本発明者のシミュレータでは、P−Table接合メッセージのシードノードは、実際にシステム内で最も近いノードである。実際に実施するために、シードノードは、リーフセット内のすべてのノードに対するネットワーク待ち時間を推定し、最も近いリーフセットノードを選択することによって決定すべきであるという、単純な提案をする。SkipNetの名前IDは命名局所性を組み込んでいるため、ノードは、ネットワーク近接に関してそのリーフセット内のノードに近いと見込まれる。従って、最も近いリーフセットノードをシードノードに選ぶのが最も良いと見込まれる。
経時的に変化する可能性のあるSkipNet内の名前IDの分散を、P−Tableセグメントエンドポイントが正確に反映するために、P−Tableは定期的に更新される。P−Table構築とP−Table更新との唯一の違いは、更新の場合、P−Table接合メッセージによって戻される候補に加えて、現在のP−Tableエントリも候補ノードとみなされる点である。P−Tableエントリは、ノードの接合および離脱が通常のメッセージトラフィックを介して発見されるにつれて、増分的に更新することもできる。
5.4 ネットワーク近接の組込み:C−Table
名前IDによる検索の際にネットワーク近接が組み込まれるP−Tableとほぼ同様に、数値IDによる検索の際にネットワーク近接を組み込むために、第3のテーブルであるC−Tableを追加する。制約付きロードバランシング(CLB)は、名前IDと数値IDの両方による検索を含むため、P−TableとC−Tableの両方を利用する。CLB検索の一部としての数値IDによる検索は、CLB検索の名前制約に従わなければならず、名前制約を守らないC−Tableエントリは使用できない。こうしたエントリに遭遇すると、CLB検索はR−Tableの使用に戻らなければならない。
C−Tableは、Pastryが維持するルーティングテーブルと同一の機能および設計を有する[27]。Pastryのルーティングテーブル向けに推奨されるパラメータ選択は、b=4(すなわちk=16)であるが、本発明の実施では、第5.1項で述べたようにk=8を選択している。R−Tableを使用する数値IDによる検索の場合と同様に、またはPastryの場合と同様に、C−Tableを使用する数値IDによる検索では、多くてもO(log N)のメッセージホップが必要である。
具体性を持たせるために、k=8の場合のC−Tableについて説明するが、この説明は[27]から推測できるものではない。各ノードで、C−Tableはノードポインタのアレイセットからなり、数値IDの1桁あたり1アレイであって、各アレイは可能な8桁値それぞれについて1つのエントリを有する。第1のアレイの各エントリは、第1の数値IDの桁がアレイのインデックス値に一致するノードを指す。第2のアレイの各エントリは、第1の桁が現在のノードの第1の桁に一致し、第2の桁がアレイのインデックス値に一致するノードを指す。この構築は、空のアレイに到達するまで繰り返される。
5.4.1 C−Tableの構築および更新
C−Table構築の詳細は[4]に示されている。主な考え方は、C−Tableの各アレイについて、必要な数値ID接頭部を備えた近くのノードにルーティングし、そのレベルでそのC−Tableエントリを取得し、その後接合ノードのアレイにそれらのエントリを配置することである。特定のテーブルエントリにはいくつかの候補ノードが使用可能であるため、最適なネットワーク近接を備えた候補が選択される。第8.8項は、メッセージトラフィックに関してC−Tableの構築コストがO(log N)であることを示している。Pastryの場合と同様に、C−Tableは背景安定化アルゴリズムを使用してゆっくりと更新される。
CLB検索時にC−Tableを使用するとRDP(相対的遅延ペナルティ)が減少することを示した第9.5項で、実験について報告する。Pastryについて[4]に記載された議論の適応では、これがそのケースである理由について説明している。
5.5 仮想ノード
規模の経済および別個のWebサイト間でハードウェアリソースを多重化する機能が、World Wide Webにおけるホスティングサービスの出現につながった。ピアツーピアシステムの単一ハードウェアプラットフォーム上で仮想ノードをホストすることについても、同様の需要が予想される。この項では、SkipNet設計の中で仮想ノードをスケーラブルにサポートするための方法について説明する。説明をわかりやすくするために、R−Tableの変更についてのみ記載し、P−TableおよびC−Tableへの対応する変更については明白であるので省略する。
SkipNet設計では、複数のノードが単一のマシン上で共存するのを妨げるものは何もないが、仮想ノードの数が増加するにつれて、スケーラビリティが問題となる。第8.2項に示されるように、単一のSkipNetノードのR−Tableには、おそらくほぼlog Nのポインタが含まれる。単一の物理マシンがv個の仮想ノードをホストしている場合、すべての仮想ノードに対するR−Tableポインタの合計数は、およそv log Nとなる。vが増加するにつれて、これらポインタそれぞれに必要な定期的な保守トラフィックが、スケーラビリティの問題を引き起こす。この潜在的な障害を緩和するために、本項では、名前IDによる検索に関する対数予測パス長さを維持しながら、v個の仮想ノードに必要な予測ポインタ数をO(v+log n)まで減少させる、SkipNet設計の変化について記載する。第8.6項では、この仮想ノードスキームの性能に関して数学的に証明する。
スキップリストはSkipNetと同等のルーティングパス長さを有するが、第3項では、以下のオーバレイルーティングデータ構造としてのスキップリストの2つの基本的な欠点を述べた。
・スキップリスト内のノードは、著しく不均衡なルーティングロードを経験する。
・スキップリスト内のノードは、平均エッジ接続性が低い。
発明者の主な見識は、これら2つのスキップリストの欠点はどちらも仮想ノードに当てはまらないということである。仮想ノードのコンテキストでは、以下のことが望ましい。 ・ピアツーピアシステムは、どんな所与の物理マシン上でも、作業量の著しい不均衡は避けなければならない。単一の物理マシン上で仮想ノードが量の不均衡な作業を実行することはそれほど重要ではない。
・同様に、各物理マシンのエッジ接続性は高くなければならない。単一の物理マシン上の仮想ノードのエッジ接続性が高いことは、それほど重要ではない。
これらの改訂された目的に鑑み、各仮想ノードがおよそlog n個のポインタを有するという要求条件を緩和することができる。代わりに、仮想ノードあたりのポインタ数を、スキップリスト内のデータレコードあたりのポインタ数と同様の分散にすることができる。より精密には、1つを除くすべての仮想ノードが独立して、自分の数値IDを1/2i+1の確率で長さi≧0になるように切り捨てる。残った1つの仮想ノードは、物理マシンが少なくともlog nの予測される隣接を確実に有するように、その全長さの数値IDを維持する。結果としてこのスキームでは、v個の仮想ノードのセットに関する予測される合計ポインタ数は2v+log n+O(1)である。
仮想ノードがメッセージをルーティングする場合、同じ場所に配置された任意の仮想ノードのR−Tableにある任意のポインタを使用することができる。単に宛先に最も近い(それを越えない)ポインタを使用することで、パス局所性および対数予測ルーティング性能が維持されることになる。
仮想ノードとDHT機能との間の対話は、さらに複雑である。DHT機能には所与の数値IDの検索が含まれる。数値IDによる検索は、それ以上高位に進めないリングに到達すると終了するが、これは、相対的に高位レベルのリングで発生しやすい。構造により、仮想ノードは低レベルのリングのメンバでしかない可能性が高く、DHT格納負担を等しく引き受けない可能性が高い。ただし、物理マシンあたり少なくとも1つのノードが仮想化されないため、物理マシンの格納負担は仮想ノードがない場合よりも少なくはならない。
6 組織切断からの回復
本項では、組織がインターネットから切断された場合という、一般的な障害モードに関するSkipNetの挙動について特徴付ける。こうした障害が発生した場合にSkipNetオーバレイの修復に使用される回復アルゴリズムについて説明および評価する。SkipNetの局所特性の主要な特典の1つが、ルータの構成誤りならびにリンクおよびルータの故障による組織の切断に応答した、適切な低均化(graceful degradation)である[18]。SkipNetはその名前に従った順にノードを並べるため、組織がノード名に1つまたは数個の組織接頭部を割り当てると想定すると、組織のノードは自然に、数個の連続したオーバレイセグメントに配置構成される。1つの組織が切断されると、そのセグメントは内的には適切に接続されたままとなり、セグメント内トラフィックは以前と同じO(log M)ホップ効率でルーティングされることが可能であって、ここでMは任意のセグメントでの最大ノード数である。
各セグメントの「エッジ」ノード上にある数個の主要なルーティングポインタのみを修復することによって、組織全体を単一のSkipNetに接続することができる。セグメント内トラフィックは依然としてO(log M)ホップ内でルーティングされるが、セグメント内トラフィックは、トラバースするあらゆるセグメントについてO(log M)ホップが必要な可能性がある。合計では、セグメント内トラフィックについてO(S log M)ホップが必要となり、ここでSは組織内のセグメント数である。
背景プロセスは、残りの破損したルーティングポインタを修復することが可能であり、これによってセグメント間トラフィックによって生じた性能ペナルティを消去する。SkipNetの構造は、作業の不要な重複を避ける方法で、この修復プロセスを先回りして実行することが可能である。組織がインターネットに再接続すると、これらと同じ修復オペレーションを使用して、組織のセグメントをグローバルSkipNetに再度マージすることができる。
これに対して、以前のほとんどのスケーラブルなピアツーピアオーバレイ設計[25、30、27、36]は、固有のランダム数値IDに従ってオーバレイトポロジにノードを配置する。これらのシステムで組織が切断されると、結果としてそのノードが多くの接合していないオーバレイ部分に断片化されることになる。これらの断片が単一のオーバレイに再生される間、たとえそれが実行できたとしても、ネットワークルーティングは信頼できない可能性があり、効率性に乏しいであろう。
6.1 回復アルゴリズム
組織がインターネットから切断されたとき、そのノードはIPを介して少なくとも互いに通信は可能であるが、組織外のノードとは通信できなくなるであろう。組織のノード名がいくつかの組織接頭部のうちの1つを使用している場合、グローバルSkipNetはそれ自体を、接合していないが内的には適切に接続されている、いくつかのセグメントに区分する。図14は、この状況を示した図である。
SkipNetのルーティング局所特性により、各セグメント内でのメッセージトラフィックは切断による影響を受けることがなく、引き続きO(log M)の効率でルーティングされることになる。組織の切断がオーバレイ全体のかなりの部分を表していない限り、グローバルセグメント間でのクロスセグメントポインタは有効のままなので、SkipNetのグローバル部分間でのクロスセグメントトラフィックも、ほとんど影響を受けないままとなる。これは、切断された組織のセグメントにはあてはまらない。従って、切断と再接続の両方が実行された後の主な修復タスクは、オーバレイセグメントのマージに関するものである。
切断および再接続の両方で使用されるアルゴリズムは非常に似通っており、SkipNetセグメントは互いを発見し、互いにマージしなければならない。切断の場合、セグメントは2つの接合していないSkipNetにマージされる。再接続の場合、2つの接合していないSkipNetのセグメントは、単一のSkipNetにマージされる。
6.1.1 発見技法
組織が切断されると、そのセグメントは、SkipNetポインタのみを使用したのでは、互いを見つけることができない場合がある。これは、連続していないセグメントが互いの中へのポインタを有することになるという保証がないためである。組織がそのノードを相対的に少数の名前セグメントに分割すると想定し、それらが各セグメントの中のいくつかのノードを「周知」として指定するように要求することによって、この問題を解決する。組織内の各ノードは、これらの周知ノードのリストを維持し、それらを様々なオーバレイセグメント間の接触ポイントとして使用する。
組織が再接続すると、組織SkipNetおよびグローバルSkipNetは、それらのセグメントエッジノードを介して互いを発見する。各ノードは、レベル0リング中でそれ自体のそれぞれの側にある8つの最も近いノードを指す「リーフセット」を維持する。ノードがそのリーフセットの一方の側は完全に到達不可能であるが、他方はそうでないことを発見すると、切断イベントが発生したこと、およびそれがセグメントのエッジノードであることを結論付ける。これらのエッジノードは、自分の到達不可能なリーフセットポインタを追跡して、定期的にそれらの到達可能性をpingし、ポインタが到達可能になると、ノードはマージプロセスを開始する。例えば、新しい組織がシステムに接合する場合など、2つの以前に独立していたSkipNetを一緒にマージすることは、何らかの他の発見手段が必要である場合を除き、以前に接続していたものに再接続することと機能的に等価であることに留意されたい。
6.1.2 レベル0でのSkipNetセグメントの接続
セグメントマージプロセスを、レベル0リングを含むポインタの修復と、すべての高位レベルリングに関するポインタの修復という、2つのステップに分ける。第1のステップは、各セグメントの「エッジ」ノードのレベル0ポインタの修復のみを含む場合、即時に実行可能である。第1のステップが実行されると、様々なセグメント内のノード間でメッセージを正しくルーティングすること、およびO(S log M)の効率でそのように実行することが可能になり、ここでSはセグメントの合計数、Mは1セグメント内の最大ノード数である。従って、第2のより費用のかかるステップは、第6.1.3項で説明するように、背景タスクとして実行することができる。
レベル0のSkipNetセグメントを接続するための主な考え方は、1セグメント内のノードに他のセグメント内のノードの名前IDに向けてメッセージをルーティングさせることによって、関連するエッジノードを発見することである。このメッセージは、他のノードの名前IDに最も近い第1のセグメント内のエッジノードにルーティングされることになる。この方式でルーティングされたメッセージは、すべてのセグメントのエッジノードのリストを集める際に使用することができる。次に実際のセグメント間ポインタ更新が、分散2相コミットを使用して、セグメントエッジノード間の単一のアトミックオペレーションとして実行される。これにより、ルーティングの不一致を回避する。
図14は、例示の目的でマージされる2つのSkipNetを示した図であり、それぞれが2つの異なる名前セグメントを含んでいる。ノードn1はノードn2の存在を知っていると想定する。ノードn1は、ノードn2に(IPを介して)メッセージを送り、SkipNetB内でn1に向けて検索メッセージをルーティングするように依頼する。n2のメッセージはノードd1で終わり、さらに、SkipNetB上でのd1の隣接はd0となる。d1はn1に(IPを介して)回答を送り、d0およびd1について伝える。n1は、同じ方法でs1およびs0を発見するための検索メッセージをSkipNetA上でd0に向けてルーティングする。手順は、s2、s3、d2、およびd3に関する情報を得るために、s0およびd0を使用して繰り返し呼び出される。図15は、擬似コードのアルゴリズムを示す図である。
レベル0リング接続の直後に、クロスセグメント宛先に送られたメッセージは効率良くルーティングされることになる。クロスセグメントメッセージは、トラバースする各セグメントのエッジにルーティングされ、その後セグメントを接続しているレベル0ポインタを使用して次のセグメントに飛ぶ。これがO(S log M)のルーティング効率につながる。組織がレベル0でその完全に修復されたSkipNetをグローバルなSkipNetに再接続すると、組織外部にあるノード宛のトラフィックは、O(log M)のホップで組織のSkipNetのエッジノードにルーティングされることになる。2つのSkipNetを接続しているレベル0ポインタがトラバースされ、その後グローバルSkipNet内のトラフィックをルーティングするためにO(log M)のホップが必要になる。2つのSkipNetの間を横断する必要のないトラフィックは、このルーティングペナルティを負わないことに留意されたい。
6.1.3 レベル0リング接続後のルーティングポインタの修復
レベル0リング接続段階が完了すると、修復を必要とする残りのすべてのポインタを、背景タスクを使用して更新することができる。ここでは、修復アクティビティの適切な順序付けを通じて作業の不要な重複を避ける、事前対応型アルゴリズムを示す。
主な考え方は、各セグメントで所望のノードを見つけるために、下位レベルの正しいポインタを使用することによって1つのレベルのポインタを繰り返し修復することである。1つのレベルのポインタは、高位レベルの修復を開始する前に、すべてのセグメント境界線をまたがって修復しなければならない。例示のために、ポインタが修復された後の2つのSkipNetセグメント間にある単一の境界線を示した、図16について考えてみる。図17は、単一境界線をまたがってレベル0より上のポインタを修復するための擬似コードのアルゴリズムを示す図である。単一境界線のケースについての考察から始まり、その後、複数境界線のケースの処理にまでアルゴリズムを拡張する。
レベル0ポインタがすでに正しく接続されていると想定する。レベル1でセグメント間を接続するために、2つのポインタのセットが2つあり、1つは0とラベル表示されたルーティングリング用、1つは1とラベル表示されたルーティングリング用である(図10を参照)。0とラベル表示されたリングに属する各セグメント内にノードを見つけるまで、エッジノードの1つからレベル0リングをトラバースすることによって、0とラベル表示されたレベル1リングを修復することができる。同じ手順に従って、1とラベル表示されたレベル1リングを正しく接続する。レベル1リングの後、同じ方法を使用して、4つのレベル2リングを修復する。
高位レベルのリングは下位レベルのリング内にネストされているので、レベルh+1でのリングの修復は、レベルhの囲みリング用にそのポインタを修復したノードのうちの1つによって開始することができる。レベルhリングが(a)単一のメンバしか含まない場合、または(b)修復が必要なセグメント間ポインタがない場合、レベルh+1での修復オペレーションは不要である。後者の終了条件は、グローバルSkipNet内のほとんどのリング、従ってほとんどのノードが、実際には潜在的な修復に関して検査される必要がないことを暗に示している。
この修復アルゴリズムに関する作業の合計はO(M log(N/M))であり、ここでMは切断/再接続するSkipNetセグメントのサイズであり、Nは外部SkipNetのサイズである。レベルh+1のリングは、レベルhのそれらの囲みリングがすべてのセグメント境界をまたがっていったん修復されると、平行して修復可能であることに留意されたい。従って、所与のセグメント境界線に関する修復プロセスは、基礎となるネットワークインフラストラクチャによってサポートされる程度まで対応する。修復を完了するための作業の合計および合計時間の理論的な分析は、第8.7項に示す。
複数のセグメント境界線を修復するためには、上記のアルゴリズムを各セグメント境界線につき1回呼び出すだけである。現在の実施では、このプロセスを繰り返し実行し、1つの境界線上での修復オペレーションが完了するのを待ってから、次の境界線での修復を開始する。将来の作業では、セグメント修復オペレーションを平行して開始するのを調査するように計画している。未解決の問題は、修復オペレーションによって異なる境界線が相互に干渉し合うのを避ける方法である。
7 代替設計
SkipNetによって提供される局所特性は、既存のオーバレイネットワーク設計に対する好適な機能拡張によってある程度までは得ることができる。ただし、これらの代替設計の中には、SkipNetの提供しているすべての局所性の利点を提供するものはない。本項では、SkipNetの様々な代替について説明し、これらとSkipNetの手法とを比較する。
代替設計選択のスペースは、以下の3つのケースに分けることができる。
・オーバレイネットワークをまったく使用せず、代わりに、基礎となるIPネットワークおよびDNS命名の本来の局所特性に依拠する。
・増補された可能性のある単一の既存のオーバレイネットワークを使用して、局所性を提供する。
・メンバノードの異なるセットを広げることで局所性を提供する、複数の既存のオーバレイネットワークを使用する。
オーバレイネットワークなしで実行する手法を考えてみる。これを正当化する事実の1つは、明示的なコンテンツ配置が、データオブジェクトをノード文字列名とノード関係文字列名との連結として命名すること、すなわち単にノード文字列名をノードのDNS名とすることからなることである。この手法は、ほとんどの組織がその内部ネットワークをパスローカル方法で構築することから、パス局所性を提供すると言ってもよいであろう。ただし、オーバレイネットワークを廃棄すると、以下を含むその利点もすべて廃棄してしまうことになる。
・DHTの暗黙のサポート、およびSkipNetの場合には制約付きロードバランシングのサポート
・ノード障害発生時の、適切に定義された代替ノードへのトラフィックのシームレスな再割当て
・マルチキャスト「5、29、26」およびロード認識複製[33]などの、高位レベル抽象化のサポート
・DNSサービスの可用性とは無関係で、メッセージを文字列名宛先に直接ルーティングする機能
ここで、SkipNetの目標を、何らかの方法で増補された可能性のある既存のオーバレイネットワークで達成しようと試みる手法について考える。SkipNetに対するスケーラブルな汎用代替は、Chord、Pastry、およびTapestryなどの、すべてDHTベースの設計である。こうしたオーバレイネットワークは、それらが使用するアドレススペース内で均一のノード分散を得るために、ノードIDのランダムな割当てに依存する。
組織の切断によって、組織にとって重要なデータが組織から分離しないようにしたい場合、明示的なコンテンツ配置は必要な機能である。所与のデータオブジェクトを既存のオーバレイネットワーク内の特定ノード上へ明示的にコンテンツ配置するのをサポートするには、オブジェクトの所望の受取り手であるデータオブジェクトまたはノードのいずれかに関する現在の命名規則を修正することであると想像できる。
データオブジェクトの名前またはその名前のある部分のハッシュIDに直接対応するノードIDを選択することによって、明示的なコンテンツ配置を達成するために、ノードに関する命名規則を修正することができる。これによって、各ノードがデータオブジェクトにつきオーバレイを1回接合するように、オーバレイノードを効率良く仮想化する。このスキームには、所与の物理的オーバレイノードに割り当てられた各データオブジェクトに別々のルーティングテーブルが必要であるという欠点がある。単一のノードが数百より多くのデータオブジェクトを格納する必要がある場合、メモリリソースは近年安くなったとは言え、すべてのルーティングテーブルを維持する場合のネットワークトラフィックのオーバヘッドが、ノードのネットワークおよびCPUリソースを圧倒することから、このコストは法外に高くなる。たとえルーティングテーブルを構築するだけでも、かなりの量の追加のネットワークトラフィックが必要となる。
代わりにデータオブジェクトの命名規則を修正すると、データオブジェクト名が仮想ノード名とそれに続くノード関係名からなる、SkipNetの場合とほとんど同様の2部命名スキームが使用可能である。ノード名を仮想化することにより、どの物理ノードが各仮想ノードに対する責任を負うかを制御することができる。データオブジェクト名をノード名に基づいて束ねることにより、各物理ノード上で単一または少数の仮想ノードのみをサポートすればよい。この方式では、明示的なコンテンツ配置はサポートするが、保証されたパス局所性も、制約付きロードバランシング(フェイルオーバの場合の継続的なコンテンツ局所性も含む)もサポートしない。
次に、第2の種類の局所性SkipNetが提供するパス局所性について考えてみる。既存のオーバレイネットワークはパス局所性を保証しないが、これを提供するようになることを望む場合がある。具体的に言えばPastryは、ネットワーク近接認識ルーティングをサポートするため、組織ローカルメッセージが主にその組織内を移動すると予測する[4]。ただし、Pastryのネットワーク近接サポートは、オーバレイに接合する場合に「シード」ノードとして使用するための近傍ノードを有することに依存する。近傍ノードが接合するノードと同じ組織内にない場合、Pastryは、保証はもちろんのこと、適切なパス局所性を提供できない場合がある。この問題は、ネットワーク距離に関して遠く離れた複数の別個のノードの「島」からなる組織の場合はさらに悪化する。これに対してSkipNetは、たとえ別個のノードのクラスタからなる組織をまたがる場合であっても、名前IDスペース内で連続している限り、パス局所性を保証することができる。
Pastryなどの設計では、メッセージにルーティング制約を追加することによって、パス局所性を提供すると想像できる場合があるため、メッセージは所与の組織境界線の外に転送することはできない。こうした制約は、ルーティング制約を侵害する使用法から、ルーティングテーブルエントリを遮断するために使用される。残念なことに、こうした制約は、ルーティングの一貫性も妨げてしまうことになる。すなわち、2つの異なるソースノードから同じ宛先IDに送信されるメッセージは、同じ宛先ノードで終わることが保証されない。
ここで論じるSkipNetの最後の局所特性は、組織境界線に沿った障害に対する耐性のそれである。この特性はパス局所性に起因するものであるため、代替設計は、パス局所性をサポートするよりもある程度うまくいくはずである。
ノード名の仮想化に代わる興味ある代替は、オーバレイネットワークの数値IDを長くすること、およびそれらを別々の部分に区分することによって、既存のオーバレイ内の命名規則を修正することであろう。例えば、2部方式では、ノード名は2つの連結したランダムな、均一に分散された固有数値IDからなる。第1の部分はノードIDの一部分の関数であり、第2の部分はノードIDの残りの部分の関数であってよい。さらにデータオブジェクト名は、数値ID値および文字列名という2つの部分からなる。数値IDはオーバレイIDの第1の部分にマッピングし、文字列名のハッシュは第2の部分にマッピングすることになる。
その結果、データオブジェクト名の数値ID部分が、同じ数値IDを共用するすべてのノードによって形成されるDHTを選択し、文字列名部分が、選択されたDHT内にどのノードをマッピングするかを決定する、静的な形の制約付きロードバランシングとなる。この方式は、明示的なコンテンツ配置も提供するために、ノードの仮想化と組み合わせることができる。この手法の主な欠点は、人間の決定によるオーバレイ作成時に、階層のあらゆる層が数値IDの長さおよび維持しなければならないルーティングテーブルのサイズにおいて追加のコストを負い、階層はSkipNetが提供する相対関数ではなくノードIDの絶対関数でなければならず、さらにパス局所性の保証が静的階層内の境界線のみを基準にしたものであるというように、階層の細分性が凍結されることである。より大きなルーティングテーブルを維持しなければならないという文言を代替解釈すると、ルーティングテーブルを維持するために充当できる一定のリソースのまとまり(budget)について、ルーティング性能が低下することになる。
局所特性をサポートするために単一のDHTベースのオーバレイネットワークを拡張するのが困難であることを考えると、それぞれが異なるセットの参加ノードを含んでいる複数のオーバレイを使用することを考慮してもよい。所望の局所性要求条件を反映するオーバレイネットワークの静的セット、または特定アプリケーションへのノードの参加を反映するオーバレイネットワークの動的セットの、いずれかを定義することができる。
オーバレイネットワークの静的セットが階層状である場合、ノードは例えば、グローバルオーバレイ、組織全体のオーバレイ、およびおそらくは区分的または建物全体のオーバレイなどの、複数のオーバレイネットワークに属することのオーバヘッドを払わなければならない。これは、各オーバレイ内に、制約付きロードバランシングおよびパス局所性の静的形成を与える。明示的コンテンツ配置は、依然として前述のようにオーバレイ設計の拡張を必要とする。さらに、これでロードバランシングは特定のオーバレイに参加しているそれらのノードに制約される可能性があるが、この方法でロードバランシングされているデータにアクセスしても、そのオーバレイネットワークに属していないクライアントには容易にアクセスできない。従って、例えばデータセンタのマシンをまたがっているデータは、世界全体に対しては使用可能なままになっていても、ロードバランシングはこの手法では不可能である。
様々なオーバレイに属することに代わるものは、多くのほとんど接合されていないオーバレイを存在させることである。その後、周知のゲートウェイノードを使用して、自分がメンバになっていないオーバレイにルーティングすることができる。ゲートウェイノードの隣接するオーバレイIDがバックアップゲートウェイ用に予約された場合、オーバレイルーティングの暗黙的フェイルオーバ意味論を使用して、ゲートウェイノードが障害の単一ポイントになるのを避けることができる。ただしゲートウェイノードは、たとえ障害のポイントでない場合でも輻輳のポイントであり、この手法は、人間がオーバレイネットワークの適切なセットを構成しなければならない前述の問題をこうむる。
これらの手法は組み合わせることができる。各ノードは、階層の複数レベルでオーバレイネットワークに参加することが可能であり、適切に定義されたゲートウェイを使用して、他のオーバレイ(単なるノードではない)にルーティングすることが可能である。次に、グローバルオーバレイのメンバとしてのその役割、または小規模なオーバレイのメンバとしてのその役割のいずれかで、任意のノードにルーティングすることができる。実際に、この手法は、オーバレイIDの連結された部分が階層を介してパス名を定義する、階層型オーバレイネットワークを定義するものである。階層の特定のサブツリーへのゲートウェイノードは、そのサブツリーのパス名接頭部からなる仮想名を有することになる。
この組み合わせられた手法は、ほとんどSkipNetと同じ局所性意味論を提供することになり、明示的コンテンツ配置、静的な形の制約付きロードバランシング、および各数値IDドメイン内でのパス局所性を提供する。ただし、ドメイン内のルーティングは、ドメイン階層の逐次トラバースを必要とすることになり、階層内で遠く離れた2つのドメインが、それらの間でのルーティング待ち時間の無視できない増加を被ることになることを暗示している。これに対してSkipNetは、明示的コンテンツ配置を提供し、クライアントがどんな所望の名前接頭部範囲を介しても新しいDHTを動的に定義できるようにし、任意の共用名前接頭部内でのパス局所性を保証し、さらに名前接頭部を共用しないソースと宛先との間でのルーティングの際に逐次トラバースペナルティを払うことがない。
複数オーバレイを含む最終の代替設計は、アプリケーション1つにつき1つのオーバレイネットワークを定義することである。これにより、守らせたい局所性要件をアプリケーションに動的に定義させ、ノードが実際に使用するオーバレイネットワークにのみノードを参加させることができる。ただし、この手法には、静的に定義された複数のオーバレイ手法が明示的コンテンツ配置およびコンテンツの外部可視性に関して被る問題と同じ問題があり、各アプリケーションについて別々のオーバレイを維持する追加コストを負う。これに対して、SkipNetは共用インフラストラクチャを提供するものである。
8 SkipNetの分析
本項では、SkipNetにおけるオペレーションの様々な特性およびそのコストについて分析する。各サブセクションでは、最初に簡単な直感的説明、続いて主要な結果の概要について述べる。各サブセクションの残りの部分では、結果について正式に証明する。
8.1 名前IDによる検索
密なSkipNetでの名前IDによる検索には、予想としてO(log N)ホップが必要であり、疎SkipNetではO(k log N)ホップが必要である。さらにこれらの限度(bound)は、高い確率で持続する。(「疎」、「密」、およびパラメータkの定義については、第5.1項を参照のこと。第3項に記載された基本的なSkipNet設計は、k=2の疎のSkipNetである。)これらの結果については、定理8.5および定理8.2で正式に証明する。直感的に言えば、スキップリスト検索の場合と同じ理由で、SkipNetでの検索にはこの多くのホップが必要であり、あらゆるノードのポインタがほぼ指数的に分散されているため、宛先までの残りの距離を半分にする何らかのポインタが存在することになる確率が最も高い。密なSkipNetは、およそk倍のポインタを維持し、あらゆるホップ上をおよそk倍で進行する。
正式な分析では、第1に疎R−Tableについて考え、その後その分析を密R−Tableに拡張する。検索オペレーションが開始されるノードがソースノードと呼ばれ、検索オペレーションが終了するノードが宛先ノードと呼ばれる、という定義を有することが有用であろう。検索オペレーションは、宛先ノードが見つかるまでノードシーケンスを訪れるが、このシーケンスが検索パスと呼ばれる。1つのノードから次のノードまでの検索パスに沿った各ステップが、ホップと呼ばれる。このサブセクション全体で、ノードのことをその名前IDで呼び、ソースの名前IDをsで示し、宛先の名前IDをdで示す。
sが属するリングは、ヘッドのsですべてのノードに関してスキップリスト構造を誘導する。SkipNetの検索パスを分析するには、スキップリスト検索アルゴリズムが誘導されたスキップリスト上で使用することになるパスを考慮し、次に、SkipNetの検索パスがスキップリストの検索パスより大きくないことを証明する。疎R−Tableを使用して、PをsからdまでのSkipNet検索パスとする。スキップリスト検索アルゴリズムがノードsによって誘導されたスキップリストで使用することになるパスをQとする。どちらの検索パスもsで始まりdで終わるものであり、パス内のすべてのノードがsからdの間にあることに留意されたい。PおよびQが同一である必要がないことを調べるには、スキップリスト検索パス内でトラバースされるポインタのレベルは増加し続けず、SkipNet検索パス内ではこれが必ずしも真でないことに留意されたい。
パスPおよびQを特徴付けるには、xおよびyの数値ID内でF(x,y)が最も長い共通接頭部を示すようにすることが有用となる。Fの定義のすぐ後に以下の役立つ恒等式(identity)が続く。
F(x,y)=F(y,x) (1)
F(x,y)<F(y,z)⇒F(x,z)=F(x,y) (2)
F(x,y)≦F(y,z)⇒F(x,z)≧F(x,y) (3)
F(x,y)>f、F(x,z)>f⇒F(y,z)>f (4)
スキップリスト検索パスQは、dに近いノードほどsと共有の桁をより多く持たないような、sとdの間のあらゆるノードxを含む。正式には、Qは、F(s、y)>F(s、x)であるように、βy∈[x,d]の場合およびその場合のみx∈[s,d]を含む。
SkipNet検索パスPは、dに近いノードほどパス上の前のノードと共有の桁をより多く持たないような、sとdの間のあらゆるノードを含む。これは、ノードを順序正しく指定することによってPを固有に定義するものであり、sに続くノードが固有に定義され、これによって後続のノードが固有に定義されるという具合になる。正式には、βy∈[x,d]がF(w,y)>F(w,x)を満たすように、x∈[s,d]は、wの後の最も近いノードである場合およびその場合にのみP内でwの直後に続く。
補助定理8.1. 疎R−Tableを使用して、PをsからdまでのSkipNet検索パスとし、Qを、誘導されたスキップリスト内でスキップリスト検索アルゴリズムが使用するパスとする。次いで、PはQの後続である。すなわち、SkipNet検索で遭遇するあらゆるノードは、スキップリスト検索でも遭遇する。
証明:P内の何らかのノードxがQ内には現れないという矛盾を明らかにする目標を想定する。xを第1のこうしたノードとする。sはPとQのどちらにも現れなければならないため、x≠sは明らかである。wがP内でxの先行者を示すものとすると、x≠sであるため、xはP内の第1のノードではなく、wは実際に適切に定義される。xはQではなくP内の第1のノードであったことから、ノードwはQに属していなければならない。
第1に、F(s,x)>F(s,w)、すなわちxがwよりも多くの桁をsと共用するケースを考えてみる。これが、wがQ、すなわちスキップリスト検索パス内にない(矛盾)ことを含意していることを明らかにする。もう一度スキップリスト検索パス不変式を参照すると、x∈[w,d]はyの役割を果たし、それによってwがQ内にないことが明らかになる。
次に、F(s,x)=F(s,w)、すなわちxがwと同じ数の桁をsと共用するケースを考えてみる。これが、xがQ、すなわちスキップリスト検索パス内にある(矛盾)ことを含意していることを明らかにする。もう一度スキップリスト検索パス不変式を参照すると、F(s,y)>F(s,w)であるように、βy∈[w,d]である。このケースの仮定F(s,w)=F(s,x)を[x,d]⊂[w,d]と組み合わせると、F(s,y)>F(s,x)であるように、βy∈[x,d]であり、従ってxはQ内にある。
最後に、F(s,x)<F(s,w)、すなわちxがwよりも少ない桁をsと共用するケースを考えてみる。これが、xがP、すなわちSkipNet検索パス内にない(矛盾)ことを含意していることを明らかにする。恒等式2を適用すると、F(s,x)=F(w,x)、すなわちxがsと同じ数の桁をwと共用することが引き出される。xがQ、すなわちスキップリスト検索パス内にないという仮定により、F(s,y)>F(s,x)を満たすy∈[x,d]が存在する。F(s,y)>F(s,x)とF(s,w)>F(s,x)というケース仮定を組み合せ、恒等式4を適用すると、F(w,y)>F(s,x)が引き出される。F(s,x)=F(w,x)であるため、このyもF(w,y)>F(w,x)を満たす。これとy∈[x,d]を組み合わせると、yがxに関するSkipNet検索パス不変式に反し、xがP内にないことを含意する。
補助定理8.1に続くのは、スキップリスト検索パスの長さが、SkipNet検索パスの長さを制限することである。以下の定理では、スキップリスト検索パスを分析することにより、SkipNet検索パスの長さに関する制限を、ソースsと宛先dとの間の距離、Dの関数として証明する。この確率の高い結果は、Dの任意値に関して保持され、発明者の知る限りでは、スキップリストおよび他のオーバレイネットワークの分析[31、27]が、大規模Nに関して高い確率で保持される限度を証明するものであることに留意されたい。SkipNetの設計により、D≪Nが一般のケースになると予測する。これをスキップリストまたは他のオーバレイネットワークで予測する根拠はない。
これはいくつかの標準的な確率分布関数を定義するのに便利である。fn,1/k(g)を2項分布の分布関数とし、各実験が確率1/kで成功した場合、fn,1/k(g)は、n回の実験後、gが確実に成功するとわかる確率である。Fn,1/k(g)を2項分布の累積分布関数とし、Fn,1/k(g)は、n回の実験後、多くてgが成功するとわかる確率である。Gg,1/k(n)を負の2項分布の累積分布関数とし、Gg,1/k(n)は、多くてn回の実験後、gが成功するとわかる確率である。
以下の2つの恒等式を使用する。
Figure 0004358581
恒等式5は、本発明の累積分布関数、FおよびGの定義の直後に続くものである。恒等式6は、[7、定理6.4]に続くものであり、ここではkの代わりにαn、pの代わりに1/k、qの代わりに1−1/kを使用する。
定理8.2. 疎R−Tableを使用すると、ソースから距離Dだけ離れたノードに到達するための、SkipNet内の検索ホップ予測数は、
O(k log D)
である。より精密には、定数
Figure 0004358581
およびt=9が存在し、その結果検索には、t≧tの場合に、少なくとも
Figure 0004358581
の確率で(tk logk D+t2k)を決して超えないホップが必要である。
証明:補助定理8.1により、これでスキップリスト検索パス内のホップ数の上限には十分であり、証明の残り部分については、スキップリスト検索パスに焦点を当てる。gがt+log Dとなるように定義する。Xを、スキップリスト検索パス内でトラバースされる最大レベルを与えるランダム変数とする。ここで、Pr[X≧g]が小さいことを明らかにする。所与のノードがgまたはより多くの数でsに一致する確率が1/kであることに留意されたい。単一の合併限度(union bound)により、sとdの間の任意のノードがgまたはより多くの数でsに一致する確率はD/kである。従って、
Figure 0004358581
となる。
Yを、スキップリスト検索パス内でトラバースされるホップ数を与えるランダム変数とし、mがtkgとなるように、すなわちm=(tk logk D+t2k)となるように定義する。Yがmより多いホップを必要とする確率の上限を、以下の式を介して制限する。
Pr[Y>m]= Pr[Y>mおよびX<g]
+Pr[Y>mおよびX≧g]
≦ Pr[Y>mおよびX<g]
+Pr[X≧g]
これでは、検索がレベルgポインタをトラバースせずにmより多いホップを必要とする確率が小さいことがまだ明らかにされていない。従来のスキップリスト分析[24]は、負の2項分布を使用して、Pr[Y>mおよびX<g]≦1-Gg,1/k(m)を示す、この確率の上限を制限する。恒等式5を使用すると、1-Gg,1/k(m)=Fm,1/k(g-1)が得られる。α=1/tkと設定し、恒等式6を適用すると、以下の上限が与えられる。
Figure 0004358581
tおよびkがどちらも少なくとも2であるため、
Figure 0004358581
は多くても2であることに留意されたい。これにより、Fm,1/k(g−1)が
Figure 0004358581
より小さいことがわかる。
t≧9の場合、-t+log t+2<-t/2<0が得られ、e(−t+log t+2)g<e−t/2となる。従って、
m,1/k(g)<2e−t/2
である。
これらの結果を組み合わせ、
Figure 0004358581
とすると、
Figure 0004358581
となる。
=9と設定し、t≧tの場合、
Figure 0004358581
が得られる。すなわち、
Figure 0004358581
である。期待値限度は簡単に得られる。
次に、SkipNetでの密R−Tableを使用した名前IDによる検索のケースについて考えてみる。密R−Tableが、各レベルで各方向の、k−1の最も近い隣接を指すことを想起されたい。「密スキップリスト」を作成するのと同じ手法が使用できるが、スキップリストでは、比較は典型的にはホップよりも費用がかかるため、こうした構造は有用でないことに留意されたい。スキップリストと言う場合は、常に疎のスキップリストのことである。Pを、密R−Tableを備えたSkipNet検索パスとなるように定義し、前述のように、Qを、誘導されたスキップリスト内でスキップリスト検索アルゴリズムが使用するパスとする。
パスPを特徴付けるには、G(x,y,h)が、レベルhで両方を含むリング内のノードxとyの間のホップ数であることを示すようにすると有用である。h>F(x,y)(すなわち、ノードxおよびyがレベルhで同じリング内にないことを意味する)の場合、G(x,y,h)=∞と定義する。G(x,y,h)<kの場合およびその場合にのみ、ノードxはレベルhのノードyを指すポインタを有することに留意されたい。SkipNet検索パス上の各中間ノードで、宛先を越えることなく、宛先にできるだけ近づかせるポインタを使用してホップする。正式な特徴付けでは、x<y≦dおよびG(w,y,h)<kとなるように、x∈[s,d]は、G(w,x,F(w,x))<kおよびβy,hの場合およびその場合にのみ、P内でwの直後に続く。
補助定理8.3. Pを密R−Tableを備えたSkipNet検索パスとし、Qを、誘導されたスキップリスト内でスキップリスト検索アルゴリズムが使用するパスとする。次いで、PはQの後続である。
証明:証明は、補助定理8.1の証明の場合と同じ量を定義することで始まる。P内の何らかのノードxがQ内には現れないという矛盾を明らかにする目標を想定する。xを第1のこうしたノードとし、sはPとQのどちらにも現れなければならないため、x≠sは明らかである。wがP内でxの先行者を示すものとすると、x≠sであるため、xはP内の第1のノードではなく、wは実際に適切に定義される。xはQではなくP内の第1のノードであったことから、ノードwはQに属していなければならない。
F(s,x)>F(s,w)、F(s,x)=F(s,w)、およびF(s,x)<F(s,w)の、3つのケースについて別々に考えてみる。最初の2つは、SkipNet検索パスとは関係なく、補助定理8.1の証明にある矛盾を導くことが明らかになっており、従って、F(s,x)<F(s,w)のケースについての考察のみが残されている。
l=G(w,x,F(w,x))を、wとxをどちらも含む最高位リング内でのwとxの間のホップ数とする。x∈Pであるので、(密SkipNet検索パスの特徴付けから)l<kを得る必要がある。
Figure 0004358581
であるので、(スキップリスト検索パスの特徴付けから)F(s,y)>F(s,x)となるように、y∈[x,d]が存在しなければならない。w∈Qおよびy∈[w,d]であるので、これはF(s,y)>F(s,w)のケースにはならず、そうでない場合は、w∈Qという事実と矛盾することになる(再度スキップリスト検索パスの特徴づけを使用する)。従って、F(s,y)≦F(s,w)となり、恒等式3がF(w,y)≧F(s,y)を引き出す。恒等式2をF(s,x)<F(s,w)(ケース仮定)に適用することは、F(w,x)=F(s,x)を含意する。不等式をまとめると、F(w,y)≧F(s,y)>F(s,x)=F(w,x)となる。矛盾を導出するために、この結論F(w,y)=F(w,x)を残りの証明で適用する。
レベルF(w,y)でwを含むリングについて考えてみる。ノードyはこのリング内になければならないが、F(w,y)>F(w,x)であるため、ノードxはそれができない。wから始まり、x<z(xの右側)でこのリング上の最初のノードであるzに遭遇するまでこのリングをトラバースすると考えてみる。こうしたノードzは、yがこのリング内にあり、x<yであるため、存在しなければならない。x<z≦y≦dであることに留意されたい。
レベルF(w,y)のこのリングは、レベルF(w,x)のリングの厳密なサブセットである(具体的に言えば、xはその中にない)ため、wからzまでトラバースするためには多くてもl<kのホップを必要とする。これで、x<z≦dおよびG(w,z,F(w,y))<kが得られ、これはx∈Qという事実に矛盾する。
補助定理8.4. 密R−Tableを使用して、PをsからdまでのSkipNet検索パスとする。Qを、誘導されたスキップリスト内のsからdまでの検索パスとする。mをパスQに沿ったホップ数とし、gをパスQ上でトラバースされるポインタの最高レベルとする。パスP上で必要とされるホップ数は、多くとも
Figure 0004358581
である。
証明:Q=(s,q,...,q)をパスQ上のノードのシーケンスとし、ここでq=dである。gの選択により、すべてi≧1の場合、F(s,q)≦gである。従って、qノードは、F(s,q)の値に従ったレベルに区分される。Qがスキップリスト検索パスであるため、F(s,q)はiと共に増加し続けないことを想起されたい。従って、各区分内のノードは、パスQ上で連続している。
Pがqを含むと想定する。密R−Tableを使用すると、スキップリストパス内のレベルF(s,q)で多くともk−1ホップ離れた任意のノードへ1ホップ進むことは可能である。従って、P内のレベルiにlのノードがある場合、Qは多くとも[l/(k−1)]のそれらのノードを含む。すべてのレベルにわたって合計すると、Qは多くとも
Figure 0004358581
のノードを含む。
定理8.5. 密R−Tableを使用すると、ソースから距離Dだけ離れたノードに到達するための、SkipNet内の検索ホップ予測数は、
O(log D)
である。より精密には、定数
Figure 0004358581
およびt=9、さらにt≧tの場合、検索は少なくとも
Figure 0004358581
の確率で、多くとも(2t+1)logk D+2t2+t+1のホップで完了する。
証明:定理8.2の証明の場合と同様に、少なくとも
Figure 0004358581
の確率で、スキップリスト検索パス内のレベル数は、多くともg=t+logk Dであり、ホップ数は、多くともm=tkg=(tk logk D+t2k)である。補助定理8.4を適用すると、密SkipNet検索パス内のホップ数は
Figure 0004358581
である。
8.2 SkipNetとトライとの間の対応関係
SkipNetのポインタは、効率良くあらゆるノードをノードの名前IDによって順序付けられたスキップリストのヘッドにする。同時に、あらゆるノードは、ノードの数値ID上のトライのルートでもある[10]。従って、SkipNetは2つの別個のデータ構造を単一の構造内で同時に実施する。1つの含意は、トライ分析を再使用して、SkipNetノードの疎R−Table内での予測される非nullポインタ数を決定することができるということである。これは、N個のノードおよびパラメータpを備えたスキップリスト予測高さは、均一な[0,1]分布から引き出されたN+1個のキーを備えた
Figure 0004358581
に帰属するトライの予測高さに正確に対応する、という[22、pp.38]のPapadakisによる、スキップリストおよびトライを関連付ける以前の研究を拡張するものである。
SkipNet内のリングメンバシップは、i≧0の場合、2つのノードが、それらの数値IDの第1のi桁が正確に一致すればレベルiで同じリングに属する、というように決定されることを想起されたい。すべてのノードは、レベル0で1つのリングに属し、これがルートリングと呼ばれる。2つのノードがレベルi>0のリングRに属する場合、それらはレベルi―1の同じリングにも属していなければならず、これはリングRの親リングと呼ばれることに留意されたい。さらに、レベルi≧0のあらゆるリングRは、レベルi+1の多くともkの接合していないリングに区分され、これはリングRの子リングと呼ばれる。従って、リングは本来、ルートリングに根付いているリングツリーを形成する。
リングツリーを考えると、トライは以下のように構築することができる。第1に、親リングが単一のノードを含んでいるすべてのリングを除去し、これによって単一のノードしか含んでいないトライのどんなサブツリーも隠れることになる。単一のノードを含む残りのあらゆるリングはリーフリングと呼ばれ、リーフリングは、その単一ノードの数値IDでラベル表示される。結果としてリング上に生じる構造が、SkipNet内のノードのすべての数値IDを含むトライである。
を、N個のノードを含むSkipNet内の特定ノードでの非nullの右の(同様な意味で左の)ポインタの数を示す、ランダム変数とする。Papadakisは、Dを、均一な[0,1]分布から引き出されたキーを備えたkに帰属するトライ内のノード深さを与えるランダム変数とする。Yは、上記で構築されたトライ内のノードの数値IDの深さを与えるランダム変数と同一であり、従って、Y=Dが得られることに留意されたい。
この対応関係およびPapadakisの分析を使用して、
Figure 0004358581
を明らかにすることが可能であり、上式で、
Figure 0004358581
は([17]で定義されるように)
Figure 0004358581
となる。
Knuthは、[17、例6.3.19]で、
Figure 0004358581
であることを証明しており、従って右の(同様な意味で左の)非nullポインタの予測数は、E[Y]=log N+O(1)によって与えられる。
8.3 数値IDによる検索
SkipNetは、数値IDによる検索ならびに名前IDによる検索をサポートする。密なSkipNetにおける数値IDによる検索は、予測ではO(log N)ホップが必要であり、疎SkipNetではO(k log N)が必要である。直感的に言えば、数値IDによる検索は1回に桁1を訂正し、多くともO(log N)桁を訂正する必要がある。疎SkipNetでは、単一の桁を訂正するにはおよそO(k)ホップが必要であるのに対して、密な場合はO(1)ホップしか必要としない。
定理8.6. 疎R−Tableを使用した数値IDによる検索で予測されるホップ数はO(k log N)である。密R−Tableでは、ホップの予測数はO(log N)である。さらに、これらの限度は高い確率で保持される(すなわち、ホップ数は予測数に近い)。
証明:以下のように定理8.2の証明と同じ上限を使用し、
Pr[検索はmより多くのホップを必要とする]
≦Pr[mより多くのホップおよび多くともgレベル]
+Pr[gより多くのレベル]
2つの項を別々に制限する。定理8.2では、1つのノードを固有に識別するのに必要な最大桁数は、高い確率でg=O(log N)であり、従ってこの多くのレベルより上にあがるために、数値IDによる検索は必要でない。これが右側の項の上限を決める。疎R−Tableの任意の所与のレベルで次の一致する桁が見つかるまでに必要なホップ数は、パラメータ1/kを備えた幾何ランダム変数によって上限が決められる。これらのランダム変数のgの合計は予測値gkを有し、このランダム変数は高い確率でその予測値に近い(標準的な議論(argument)による)。従って疎R−Tableを使用した数値IDによる検索におけるホップの予測数は、O(k log N)であり、さらにこの限度は高い確率で保持される。
密R−Tableを使用した数値IDによる検索の場合、任意の所与のレベル上で必要なホップ数の上限は、別々に決める。略式では、確率1/kで繰り返し成功する1つの実験を実行する代わりに、こうした実験をk−1回同時に実行する。正式には、1つのホップ内で一致する桁を見つける確率は、これで1−(1−1/k)k−1≧1/2となる。従って、疎R−Tableのケースでの分析は、パラメータ1/kを1/2に置き換えることによって修正するだけでよい。従って、密R−Tableを使用した数値IDによる検索で予測されるホップ数は、O(log N)であり、さらにこの限度は高い確率で保持される。
8.4 ノードの接合および離脱
次に、前の項からの名前IDによる検索および数値IDによる検索の両方の分析を使用して、ノードの接合および離脱オペレーションを分析する。第3.5で述べたように、ノード接合は数値IDによる検索を使用し、その後名前IDによる検索を使用して実施することが可能であり、疎または密のどちらのSkipNetでもO(k log N)ホップが必要となる。ノード離脱の実施も簡単であり、第3.5項で述べたように、離脱ノードに必要なのは、あらゆるレベルでその右および左の隣接に離れることを通知するだけであり、離脱ノードの左および右の隣接は互いを指すものとする。これにより、疎SkipNetの場合はO(log N)ホップ、密SkipNetの場合はO(k log N)の限度が得られ、ここでホップはメッセージによってトラバースされるホップの合計数を示すが、これは、これらのメッセージが平行に送信できるためである。
定理8.7. ノード接合オペレーションによって要求されるホップ数は、予測ではO(k log N)であり、疎または密のどちらのSkipNetでも高い確率である。
証明:接合オペレーションは、数値IDによる検索、およびその後の名前IDによるスキップリスト検索に分解することが可能である。そのため、ホップ数の限度は、定理8.2および8.6に即時に従う。これで後は、接合オペレーションが接合するノードのすべての必要な隣接を見つけることを確立するだけである。
疎SkipNetの場合、接合するノードは、名前IDの順で右に最も近いかまたは左に最も近い、数値IDが各レベルhでh個の桁で一致するノードを指すポインタを必要とする。密SkipNetの場合、接合ノードは疎SkipNetの場合と同じノードを見つけて、その後各レベルでk−2の追加隣接に通知しなければならない。
接合オペレーションは、接合ノードと共有の最も多い数値ID桁を備えたノードの検索で始まる。接合ノードに関する名前IDによる検索オペレーションは、このノードで始まり、名前IDによるスキップリスト検索として実施され、通常の名前IDによるSkipNet検索とは対照的に、トラバースされるポインタは高さが減少を続ける。スキップリスト検索パスがレベルを下げる場合は必ず、レベルhでの現在のノードが接合ノードを超えたノードを指すためである。従って、スキップリスト検索パス上のレベルhでのこの最後のノードは、h桁で接合ノードに一致する最も近いノードである。これにより、一方の側でのレベルhの隣接が与えられ、他方の側での接合ノードのレベルhの隣接は、そのノードの以前の隣接である。スキップリスト検索パスをトラバースするメッセージは、接合ノードまでの道のりでのすべての必要な隣接に関するこの情報を累積する。これにより、接合オペレーションの正確さが確立される。
8.5 ノードストレス
次に、R−Tableを使用して名前IDによる検索を実行する場合の、負荷の分散を分析する。ルーティング負荷を分析するには、ルーティングトラフィックの何らかの分散を想定しなければならない。すべてのルーティングトラフィックのソースと宛先の両方の分布が一様であると仮定する。何らかのルーティングアルゴリズム(偶然にパス局所性を保持していない)の下では、ルーティング負荷の分散は明らかに均一である。例えば、ルーティングトラフィックが常に右側にルーティングされる場合、負荷は均一になる。ソースおよび宛先の名前IDが共通の接頭部を共用していない場合、パス局所性は問題ではなく、SkipNetルーティングアルゴリズムはルーティングの方向をランダムに選択することが可能であり、こうしたトラフィックは均一に分散される。
SkipNetルーティングアルゴリズムがパス局所性を保持できる場合は、常に宛先の方向にルーティングすることによってこれを実行する(すなわち、宛先がソースの右側の場合は、ルーティングが右方向に進行する)。この場合にはほぼ負荷のバランスがとられ、ごくわずかなノードの負荷は平均負荷よりもかなり少なくなることを明らかにする。ノードの負荷が高い確率で一定の係数より多く平均負荷を超えることはないことも明らかにするが、この結果は、ルーティングアルゴリズムがパス局所性を保持しているか否かに関連する。わかりやすくするために、本発明の証明ではk=2と想定するが、任意のkでも同様の結果が得られる。また以前に、距離dの2つのノード間のホップ数に関して、O(log d)の上限を与えた。平均負荷を推定するために、証明なしでθ(log d)の緊密な限度を想定する。
定理8.8. N個のノードを含むパス局所性を保持する間隔を考えてみる。次に、間隔のu番目のノードは、予測で
Figure 0004358581
分数の平均負荷を負う。
証明:第1に、特定のソースlと宛先rとの間でのトラフィックのルーティングのためにノードu上で予測される負荷を確立する。検索パスは、何らかのhの場合、lおよびuの数値IDが長さhの共通の接頭部を有するが、uとrとの間のノードはそれよりも長いlとの共通の接頭部を有することのない場合に、uのみに遭遇する可能性がある。あらゆるノードの数値IDの桁のランダム選択が独立していることに注目し、検索がuに遭遇する確率に関して以下の上限を得るために、hにわたって合併限度を適用する。uからrまでの距離はdで表す。
Figure 0004358581
上記の合計における項はH(h)で表す。hが1ずつ増加する場合、H(h)は多くとも2分の1ずつ減少するので、合計の上限は
Figure 0004358581
を使用して決定することができる。
変数
Figure 0004358581
Figure 0004358581
に変更し、以下を得る。
Figure 0004358581
これで、単一のソース/宛先ペアの分析が完了する。同様の単一ペアの分析は、[1]でも記載された。すべてのソース/宛先ペアを考えることで、本発明の定理を完了する。
ノードの平均負荷に関する限度は、ソース/宛先ペアの合計数に検索ホップの限度を掛け、ノードの合計数で割ることによって与えられる。uを通過するすべてのルーティングトラフィックを合計し、平均負荷で割ることにより、uが負う平均負荷の割合が得られる。一定の係数の範囲内にするためには、以下のようになる。
Figure 0004358581
推論8.9. θ(α・平均負荷)より少ない予測負荷を伴うノード数はNαである。
証明:定理8.8を適用すると、
Figure 0004358581
となることに留意されたい。
これで、パス局所性が存在する状態で、わずかなノードが平均ノードよりもかなり少ない作業を実行すると予測されることを明らかにする分析は完了する。次の定理は、任意のノードが平均負荷の一定倍を超える負荷を負うことになる可能性は非常に低いことを明らかにするものであり、この分析は、ルーティングポリシーがパス局所性を維持しているか否かに関連する。
定理8.10. 高い確率で、平均負荷の一定倍を超える負荷を負うノードはない。
証明:任意のノードuを考えてみる。uの左側には多くともN個のノード、右側には多くとのN個のノードがある。以前の定理の場合と同様に、lおよびrはそれぞれuの左側および右側のノードを示す。次に、スキップリストのlからrへのパス(その後にSkipNetのパスが続く)は、lおよびuは厳密にhビットを共用するが、uとrの間には厳密にhビットをuと共用するノードがないような何らかのhがある場合にのみ、uに遭遇する。ルーティングトラフィックが左から右へのみ通過すると考えると、限度に多くとも2倍の影響を与える。
を、uと厳密にhビットを共用するlの数を示すランダム変数とする。Rを、uとrの間にuと厳密にhビットを共用するノードがないようなrの数を示すものとする。(rがuと厳密にhビットを共用する場合、lとはhより多くのビットを共用するはずであり、従ってlからrへのルーティングトラフィックはuを通過しないことに留意されたい。)前の段落での分析は、uにかかる負荷が厳密にΣであることを含意している。この数量が高い確率でO(N log N)であることを明らかにしたい。
ランダム変数Lはパラメータ1/2h+1の2項分布を有する。この考えから、標準的な議論(本項の前述の証明で明白にした)では、LはN/2h+1の予測値を有し、h∈[0,log N−log log N]の場合、高い確率でL=O(N/2h+1)であることが明らかである。uとlog N−log log Nビットよりも多くを共用するlの数は、予測ではlog Nであり、高い確率でO(log N)であって、これらのl(そのuとの共通ビット数は制限しない)は、最終合計に多くともO(N log N)を寄与することができる。
ランダム変数Rを分析するために、Rを確率的に支配する新しいランダム変数
Figure 0004358581
を導入する。具体的に言えば、
Figure 0004358581
を、uから、厳密にhビットでuに一致するノード
Figure 0004358581
後の最初のノードまでの距離とする。さらに、
Figure 0004358581
とする。繰り返し
Figure 0004358581
を使用して、追加のランダム変数Yを定義する。Yは互いに完全に独立しており、YはYh−1を決定するノード後のノードのランダムビット選択にのみ依存する。
ランダム変数Yは、パラメータ1/2h+1の幾何ランダム変数として分布している(さらに上限はNに決められている)。制限したい数量を、以下のように書き直す。
Figure 0004358581
N/2h+1が幾何級数を形成することを使用して、以下の上限を適用する。
Figure 0004358581
Σが、O(N log N)に、独立したランダム変数(わずかに少ない)log Nの合計を加えたものと等しいことが得られ、ここでh番目のランダム変数は、パラメータ1/2の幾何ランダム変数にO(N/2)を掛けたと同様に分布され、従って予測値O(N)を有する。これにより、高い確率で限度O(N log N)が得られる。
8.6 仮想ノード分析
第5.5項で、単一の物理ノードが複数の可能ノードをホストする場合に使用できるスキームについて概説した。このスキームを使用すると、検索ホップの限度には影響を与えず、物理ノードあたりのポインタ数は密な場合でO(k log N+kv)のみであって、この式でvは仮想ノードの数である。疎な場合、ポインタ数はO(log N+v)のみである。
直感的に言えば、これが、第1のノードの後のノードが高さO(log N)を有するという要件を緩和することによって得られる。代わりに、ノード高さがスキップリスト内にあるときに、ランダムに分布できるようにする。スキップリストノードは、予測では一定数のポインタを維持するため、密な場合には仮想ノードあたりO(k)のポインタのみを追加し、疎な場合にはO(1)を追加する。検索は、スキップリスト内の場合とまったく同様に効率的なままである。
定理8.11. 第5.5項のスキームを使用してv個の仮想ノードをサポートする、単一の物理ノードを考えてみる。密な場合、検索にはO(log D)のホップが必要であり、ポインタ数はO(k log N+kv)である。疎な場合、検索にはO(k log D)のホップが必要であり、ポインタ数はO(log N+v)である。これらの限度は、すべて予測および高い確率で保持される。
証明:ポインタ数に関する限度は構造体によるものである。疎な場合を考えてみる。限度の先行項であるO(log N)は、すべてのSkipNetポインタが与えられた1つの仮想ノードによるものである。追加の仮想ノードの高さは、パラメータ1/2の幾何ランダム変数によって与えられ、これは予測ではO(1)である。その直後にポインタ数に関する要求された限度が続き、追加の係数kを備えた同一の議論により密な場合が続く。
次に、第1に疎な場合に焦点を当てながら、検索ホップ数を分析する。全高さを持たない仮想ノードから検索を開始し、2つの段階に分けて分析していく。第1段階では、検索パスはレベルが増加するポインタを使用する。ある地点で、最高位のポインタが宛先を越えるノードに遭遇する。この地点以降(第2段階)は、このノードから開始する宛先へのスキップリスト検索パスを考えてみる。定理8.2の場合と同様に、実際の検索パスの残りの部分はこのスキップリストパスの続きとなる。
定理8.2の場合と同様に、このD個のノードの間隔にある任意のポインタの最高レベルは、高い確率でO(log D)である。何らかの特定ノードtは最初に遭遇したノードであり、そのノードの最高位ポインタは宛先を越えた向こうを指していると想定する。この場合、第1段階は厳密に、tの数値IDに関する数値IDによる検索であり、従って、ホップ数に関する定理8.6の高い確率の限度が適用される。第2段階は、tからdまでの検索であり、ホップ数に関する定理8.2の高い確率の限度が適用される。この第2の議論には微妙な違いがあり、一部またはすべての中間ノードは仮想であってもよいが、実際の検索パスは、必然的にtによって誘導されたスキップリスト内の検索パスのサブセットである(補助定理8.1および補助定理8.3の議論による)。以前に、tは固定されていると想定したが、これは、tには多くてもDの可能性があり、こうした可能性はすべて、O(k log D)ホップの多くてもD倍より多くを要求する可能性を増加させると考えるからである。初期に限度が高い確率で保持されるため、この限度を超える可能性は引き続きごくわずかである。
これにより、疎な場合の結果が得られる。同じ議論が密な場合にも保持される。
8.7 リングマージ
次に、第6項で述べたように、接合していないSkipNetセグメントをマージするための事前対応型アルゴリズムの性能を分析する。M個のノードを含む単一のSkipNetセグメントの、N個のノードを含む大規模なSkipNetセグメントとのマージを考えてみる。わかりやすくするために、考察ではk=2であると想定し、同様の分析を任意のkに適用する。マージされたSkipNet内のリングの予測最大レベルは、高い確率でO(log N)である(第8.2項)ことを想起されたい。直感的に言えば、所与のレベルで、そのレベルに到達した後にリングを修復するための予測時間はO(1)であり、リングの修復は、所与のレベルのすべてのリングにまたがって平行に発生する。これは、マージオペレーションを実行するのに必要な予測時間がO(log N)であることを示唆するものであり、これについては、基礎となるネットワークが修復トラフィックの無制限の並列化に対処するという想定の下で、定理8.12で正式に明らかにする。実際には、ネットワークの帯域幅は制限を加える場合があり、多くの修復を平行して実行すると、ネットワークを飽和させ、より多くの時間がかかる可能性がある。
マージが必要とする作業の予測量は、O(M log(N/M))=O(N)である。これに対して、第1に直感的な正当化を与える。マージオペレーションでは、SkipNetリングあたり多くとも4つのポインタを修復する。マージされたSkipNet内のリングの合計数はO(N)であり、リングの修復に必要な予測作業はO(1)であるため、マージオペレーションによって実行される予測合計作業はO(N)である。さらに、MがNよりもかなり小さい場合、定理8.13で証明された限度、O(M log(N/M))は、O(N)よりもかなり小さくなる。
次に、それぞれのサイズが多くてもMであり、サイズNのグローバルSkipNetにマージされる、S個の接合していないSkipNetセグメントからなる組織を考えてみる。この場合、マージアルゴリズムは、組織の各セグメントを1回に1つずつ、グローバルSkipNetに逐次マージする。この場合、必要な合計時間はO(S log N)であり、実行される作業合計はO(SM log(N/M))であって、これらは定理8.12および定理8.13の直接的な推論である。
定理8.12. サイズMのSkipNetセグメントとサイズNのより大きなSkipNetセグメントとをマージするための時間が、高い確率でO(log N)であり、基礎となるネットワーク内で十分な帯域幅であると想定する。
証明:リングを修復した後、マージオペレーションは、これ以上子リングがなくなるまで、どちらの子リングも平行して修復するように分岐する。第8.2項からのトライを伴う類推を使用して、ルートリングから子を持たないリングまでの分岐に沿った任意のパスを考える。このパスが、高い確率でO(log N)のホップを使用することを明らかにする。すべてのこうしたパスにわたる合併限度付けにより、この定理は完了する。
任意のポインタの高さは、多くともc log Nであると想定することができる。このパスをトラバースするためのホップ数は、パラメータ1/2でのc log Nの幾何ランダム変数の合計によって上限が決められる。次に、高い確率でこの合計が多くともc log N=O(log N)であることを明らかにする。恒等式5および恒等式6を使用して、第8.1項と同じ低減(reduction)を適用することにより、c log Nより多くのホップを必要とする可能性に関して以下の上限を得る。
Figure 0004358581
=max{7c,7}を選択するが、これは多くとも2N−2である。N個の可能なパスにわたって合併限度を適用すると、この証明は完了する。
定理8.13. サイズMのSkipNetセグメントとサイズNのより大きなSkipNetセグメントとをマージするための予測作業合計は、O(M log(N/M))である。
証明:レベルiのすべてのポインタが修復されたと想定し、単一のレベルiリングの子である任意の2つのレベルi+1リングを考えてみる。これら2つの子リング内のポインタを修復するには、レベルiのセグメント境界に隣接するノードは、それぞれが、セグメント境界から離れる方向でi番目のビットで異なる第1のノードを見つけなければならない。いずれかのノードを見つけるために必要なホップ数は、パラメータ1/2で幾何ランダム変数によって上限が決められる。修復オペレーションを完了するためには、O(1)の追加ホップのみが必要である。
ランダムビット選択に関する特定の順序を考えることによって、あらゆるリング修復オペレーションで被る追加のホップ数が独立したランダム変数であることを明らかにする。すべてのレベルiビットが、レベルi+1ビットより前に選択されるようにする。次に、同じレベルiリングの子である任意の2つのレベルi+1リングの修復で被るホップ数は、それら2つのリングのレベルi+1ランダムビットにのみ依存する。また、修復が必要なリングのみが、それらの子での修復オペレーションを開始する。従って、マージオペレーションを続行することになるレベルiリングは、レベルi+1ビットを選択する前に修復されると想定することができる。そこで、これら2つの子リングの修復で被るホップ数は、任意の他のリングの修復で被るホップ数とは無関係である。
次に、修復が必要なポインタのレベルを考えてみる。レベルが低い場合、レベルiで修復が必要なポインタ数は、このレベルには多くとも2のリングがあることから、多くとも2であるという限度を使用する。レベルが高い場合、修復が必要なポインタ合計数に関する高い確率の限度について証明し、Mにおいて高い確率で合計数がM(log N+O(1))であることを明らかにする。
高さiのノードは、修復が必要な合計数にiより多くのポインタを寄付することはできない。特定ノードの高さがhを超える確率の上限は、以下によって決められる。
Figure 0004358581
従って、各ノードの高さは、パラメータ1/2で(log N+1)で始まる幾何ランダム変数によって上限が決められ、これらのランダム変数は独立している。標準的な論議によれば、これらの合計は、Mにおいて高い確率で合計が多くてM(log N+3)である。
第1のlog Mレベルの寄付は多くとも2Mポインタであり、残りのレベルの寄付は多くとも高い確率でM(log N+3−log M)である。全体で、ポインタ数はO(M log(N/M))である。ホップの合計数は、この多くの幾何ランダム変数の合計によって限度が決められる。この合計は予測値O(M log(N/M))であり、ここでも標準的な議論によれば、高い確率でこの予測値に近い。
8.8 P−TableおよびC−Tableの組込み
第1に、数値IDによる検索、ノードの接合、およびノードの逸脱に関する限度が、C−TableのSkipNetへの追加で引き続き保持されることについて論議する。数値IDによる検索は各ホップ上の少なくとも1桁を訂正し、訂正する桁がO(log N)より多いことは決してない(第8.2項)。ノード接合時のC−Tableの構築は、結果的にC−Tableを使用した任意のSkipNetノードから接合ノードまでの数値IDによる検索に等しい。これにより、数値IDによる検索の場合と同じノード接合の限度が与えられる。ノード逸脱時に、C−Tableを維持するために実行される作業はない。
名前IDによる検索、ノード接合、および逸脱がP−Tableの追加でも引き続き効率的であることについては、略式でのみ議論する。直感的に言えば、P−Tableを使用した名前IDによる検索は、R−Tableノードをインタリーブするノードに遭遇し、R−Tableノードは予測では指数的に分布されるため、P−Tableノードも同様にほぼ指数的に分布されると予測する。従って、検索は依然として、宛先までの距離を各ホップ上でkごとにおおよそ分けるものでなければならない。
ノード接合中のP−Tableの構築は、さらに複雑である。R−Tableによって定義された間隔が、完全に指数的に分布していると想定する。最も遠い間隔内のノードを見つけることは、本来名前IDによる単一の検索であり、従ってO(log N)時間を要する。現在自分のいる間隔内にg個のノードが含まれると想定する。次の最も近い(少なくともg/kノードを含む)間隔内のノードを見つけるには、ホップを1つだけ必要とする少なくとも一定の確率を有する。第1のホップの後、次の最も近い間隔に到達しない場合、かなり近づいたと予測し、第2のホップがかなりの確率で次の最も近い間隔に到達することに成功すると予測する。すべての間隔にわたって反復すると、あらゆるP−Tableエントリに充填するためのホップの合計数はO(k log N)である。
これで、ノード接合時にP−Tableを構築するための略式の論議は完了する。C−Tableを使用する場合と同様に、ノード逸脱時にP−Tableを維持するために実行される作業はない。
9 実験に基づく評価
SkipNetの設計および性能を理解および評価するために、物理リンクを介して送信されたパケット数をカウントし、使用されるトポロジに応じて単位ホップカウントまたは指定された遅延のいずれかを各リンクに割り当てる、単純なパケットレベルの離散型イベントシミュレータを使用した。これは、待ち行列遅延またはパケット損失のいずれかをモデリングすると、大規模ネットワークのシミュレーションを妨げることになるため、これらをモデリングすることはない。
Pastry、Chord、およびSkipNetの、3つのオーバレイネットワーク設計を実施した。Pastry実施については、RowstronおよびDruschel[27]に記載されている。Chordの実施は、MIT Chord Webサイト[14]から入手可能であり、発明者のシミュレータ内で動作可能なように適合されている。シミュレーションのために、すべてのノードが接合された後、フィンガポインタの更新が必要なくなるまで、Chord安定化アルゴリズムを実施する。第3項の設計に基づいた「基本的な」実施、および第5項に記載した拡張機能を使用する「完全な」実施の、2つの異なるSkipNetの実施を使用する。「完全な」SkipNetの場合、各実験の前に、P−Tableエントリ用の安定化を2ラウンド実施する。
Mercatorトポロジ[32]およびGT−ITMトポロジ[35]の両方で、すべての実験を実行した。Mercatorトポロジは、102、639のノードおよび142、303のリンクを有する。各ノードには、2662の自律システム(AS)のうちの1つが割り当てられる。トポロジ内のAS間には4851のリンクがある。Mercatorトポロジは、各リンクに単位ホップカウントを割り当てる。本項で示されたすべての図面は、Mercatorトポロジに関するものである。GT−ITMトポロジに基づいた実験も、同様の結果を出した。
GT−ITMトポロジは、トランジットスタブ(transit-stub)モデルに従ったGeorgia Techランダムグラフ生成器を使用して生成された、5050のコアルータを有する。アプリケーションノードは、均一の確率でコアルータに割り当てられた。各エンドシステムは、その割り当てられたルータへのLANリンクによって、直接取り付けられた([5]での実施と同様)。IPユニキャストルーティングを実行するために、Georgia Techランダムグラフ生成器によって生成されたルーティングポリシー重みを使用した[35]。各LANリンクの遅延は1ミリ秒に設定され、コアリンクの平均遅延は40.5ミリ秒であった。
9.1 方法論
以下の評価基準を使用して、ルックアップの性能特徴を測定した。
相対遅延ペナルティ(RDP):2つのノード間でのオーバレイネットワークパスの長さと、それらの間でのIPレベルパスの長さとの比率。
物理ネットワーク距離:基礎となるネットワーク距離を基準にした、2つのノード間でのオーバレイパスの絶対長さ。これに対してRDPは、IPと比較した、オーバレイネットワークの使用のペナルティを測定する。ただし、SkipNetの目標の一部が、クライアントの近くにデータを配置できるようにすることであるため、DHTルックアップによってトラバースされたパスのネットワーク距離における絶対長さについても注目する。Mercatorトポロジの場合、Mercatorトポロジがリンク待ち時間を提供しないため、パスの長さは物理ネットワークホップに関して与えられる。GT−ITMトポロジの場合、ミリ秒基準で測定された待ち時間を使用する。
障害ルックアップの数:障害が発生した場合の、成功しなかったルックアップ要求の数。
各参加ノードが単一の組織に属する、オーバレイネットワーク内での組織の存在もモデル化する。組織の数は、オーバレイにおけるノード合計数と同様に、実験のパラメータである。各実験では、クライアントルックアップの合計数はオーバレイにおけるノード数の2倍である。
参加ノードの名前のフォーマットは、org-name/node-nameである。データオブジェクト名のフォーマットは、org-name/node-name/random-obj-nameである。従って、特定のデータオブジェクトの「所有者」は、所有者のノード名の後にノードローカルオブジェクト名をつけることになる。その結果、SkipNetでは、データオブジェクトが所有者のノード上に配置されることになり、ChordおよびPastryでは、オブジェクトはオブジェクト名のMD−5ハッシュに対応するノード上に配置される。制約付きロードバランシングの実験では、「!」区切り文字およびその後に続く組織名を含むデータオブジェクト名を使用する。
組織サイズは、均一モデルおよびジップ様(Zipf-like)モデル、という2つの方法でモデル化する。
・均一モデルでは、各組織のサイズは1からNの間で均一に分布され、Nはオーバレイネットワークにおけるアプリケーションノードの合計数である。
・ジップ様モデルでは、組織のサイズは、x−1.25+0.5によって決定される分布に従って決定され、システム内にあるオーバレイノードの合計数に正規化される。本項で言及する他のすべてのジップ様分布は、同様の方式で定義される。
均一、クラスタ化、およびジップクラスタ化の、3種類のノード局所性をモデル化する。
・均一モデルでは、ノードはオーバレイ全体にわたって均一に拡散する。
・クラスタ化モデルでは、組織のノードは、Mercatorトポロジ内で単一のランダムに選択された自律システム全体、およびGT−ITMでランダムに選択されたスタブネットワーク全体にわたって、均一に拡散する。Mercatorでは、選択されたASが、オーバレイノードと同じ数のコアルータノードの少なくとも1/10を有することを保証する。GT−ITMでは、一定サイズより上の組織を「スタブクラスタ」上に配置する。これらは、すべて同じトランジットリンクに接続されたスタブネットワークである。
・ジップクラスタ化の場合、前述のように、組織はASまたはスタブネットワーク内に配置する。ただし組織のノードは、「ルート」物理ノードはASまたはスタブネットワーク内にランダムに配置され、すべてのオーバレイノードはこのルートを基準にしてジップ様分布によってモデル化された距離で配置されるという具合に、そのASまたはスタブネットワーク全体にわたって拡散される。この構成では、組織のほとんどのオーバレイノードは、そのASまたはスタブネットワーク内に緊密にまとめてクラスタ化されることになる。この構成は、一部のASがトポロジ全体の広い部分にわたって拡散されるMercatorトポロジに、特に関連するものである。
データオブジェクト名、従ってデータの配置も、同様にモデル化される。均一モデルでは、データ名は、組織をランダムに選択した後、その組織内でランダムノードを選択することによって生成される。クラスタ化モデルでは、データ名は、ジップ様分布に従って組織を選択した後、その組織内でランダムメンバノードを選択することによって生成される。ジップクラスタ化の場合、データ名は、ジップ様分布に従って組織をランダムに選択した後、組織の「ルート」ノードから、その距離のジップ様分布に従ってメンバノードを選択することによって生成される。ChordおよびPastryの場合は、これら3つのモデルすべてにおいて、ハッシングがすべてのオーバレイノード間で均一にデータオブジェクトを拡散するが、SkipNetではそうでないことに留意されたい。
すべてのデータルックアップのうちのどの部分が、要求側の組織に対してローカルなデータを強制的に要求させられることになるかを指定することによって、データアクセスの局所性をモデル化する。最終的に、インターネット様障害の下でのシステム挙動をモデル化し、切断された組織内での文書可用性について研究する。組織のASをMercator内のネットワークの残りの部分に接続するリンクの障害、およびGT−IM内の関連するトランジットリンクの障害による、ドメインの分離をシミュレートする。
各実験は、異なるランダムシードで別々に10回実行され、平均値が提示される。SkipNetの場合、128ビットのランダム識別子および16ノードのリーフセットサイズを使用した。PastryおよびChordの場合、それらのデフォルト構成を使用した[14、27]。
実験では、オーバレイメッセージをオーバレイノードに送信するコストを、ノードおよびコンテンツの様々な分布の下で様々なオーバレイを使用して測定した。集められたデータには、以下のものが含まれた。
アプリケーションホップ:オーバレイを介して宛先にメッセージをルーティングするのに必要な、アプリケーションレベルのホップ数
相対遅延ペナルティ:オーバレイルーティングを使用する平均遅延とIPルーティングを使用する平均遅延との比率。
変更された実験パラメータには以下のものが含まれた。
オーバレイタイプ:Chord、Pastry、基本SkipNet、または完全SkipNet
トポロジ:Mercator(デフォルト)またはGT−ITM
メッセージタイプ:メッセージがDHTルックアップであることを示すDHT Lookup(デフォルト)、またはメッセージがランダムに選択されたオーバレイノードに送信されることを示すSendのいずれか
ノード(N):オーバレイノードの数。ほとんどの実験ではNを2から216まで、2の累乗ずつ変更する。Nを216に固定する場合もある。
ルックアップ:実験あたりのルーティングされたルックアップ要求数。通常は2×N。
試行:各実験が、それぞれ異なるランダムシード値で実行される回数。通常は10。報告された結果は、すべての実行の結果である。
組織:中にコンテンツが位置する別個の組織名の数。典型的な値には、1、10、100、および1000組織が含まれる。1組織内のノードは、シミュレートされたネットワークトポロジの同じ領域内に位置する。Mercatorトポロジの場合、同じ自律システム(AS)内に位置する。GT−ITMトポロジでは、小規模な組織の場合、同じスタブネットワークに接続されたすべてのノードであり、大規模な組織の場合、選択されたコアノードに接続されたすべてのノードである。
組織サイズ:サイズが1からNまでの、ランダムに選択された組織サイズを示すUniform、または、
Figure 0004358581
ジップ分布を使用して選択された組織サイズを示し、最大組織サイズが
Figure 0004358581
となるZipf、のうちの1つ。
ノード局所性:UniformまたはZipfのうちの1つ。各組織内でノード位置がクラスタ化される方法を制御する。Uniformは、組織のトポロジ内のノード間で、ノードをランダムに拡散させる。Zipfは、組織のトポロジ内で選択されたルートノードからの距離によって候補ノードを分類し、ジップ分布を使用してそのノードに近いノードをクラスタ化する。
文書局所性:Uniform、By Org、またはBy Nodeのうちの1つ。Uniformは、すべてのノードにわたって文書名を均一に拡散させる。By Orgは、より規模の大きい組織により多くの文書が割り当てられるジップ分布を適用し、文書は各組織内のノードにわたって均一に分布される。
%ローカル:クライアントの組織内の文書に対してローカルであるように制約された、ルックアップの部分。ローカルでないルックアップは、実験のすべての文書間で分布される。
オーバレイ特有のパラメータのデフォルト値は、以下のとおりであった。
Chord:ノードIDビット=40
Pastry:ノードIDビット=128、桁あたりビット数(b)=4、リーフセットサイズ=16
SkipNet:基本構成:ランダムIDビット=128、リーフセットサイズ=16、リング分岐係数(k)=2。完全構成:k=8であり、近接認識にはP−Tableの使用、効率的な数値ルーティングにはC−Tableの使用を追加することを除き、基本と同じである。
9.2 基本ルーティングコスト
SkipNetのルーティング性能を理解するために、N=2ノードでオーバレイネットワークをシミュレートし、ここでiは10から16の範囲である。実験は、10、100、および1000の組織、ならびに、組織サイズ分布、ノード配置、およびデータ配置に関して取得可能なすべての順列を使用して実施した。その意図は、様々な構成の下でRDPがどのように挙動するかをみるためであった。特に、データオブジェクト名の非均一な分布が、ChordおよびPastryに比べて、SkipNetルックアップの性能に悪い影響を与えるかどうかをみることに関心があった。
図18は、組織サイズ、ノード配置、およびデータ配置がすべてジップ様分布によって決められる構成の場合の、SkipNetの実施、ならびにChordおよびPastryの両方について測定したRDPを示す図である。表1は、216ノードのオーバレイ内での、ノードあたりの固有のルーティングテーブルエントリの平均数を示す表である。完全に均一なものを含む他のすべての構成が、ここで示されたものと同様の結果を示した。
発明者の結論は、基本SkipNetはChordと同様に実行し、完全SkipNetはPastryと同様に実行するということである。これは、基本SkipNetおよびChordがどちらもネットワーク近接認識ルーティングをサポートしておらず、完全SkipNetおよびPastryはサポートしていることから、驚くには当たらない。他のすべての構成が同様の結果を出したため、SkipNetの性能が名前の非均一分布によって悪い影響を受けることはないと結論付ける。
Figure 0004358581
9.3 配置の局所性の活用
RDPは、IPベースのルーティングを基準にした性能のみを測定する。ただし、SkipNetの重要な得点の1つは、データの局所的配置を可能にすることである。図19は、216のオーバレイノードおよび100の組織を含み、組織サイズ、ノード配置、およびデータ配置がすべてジップ様分布によって決められる、実験構成に関するルックアップ要求用の、物理ネットワークホップの平均数を示す図である。x軸は、ルックアップのどの部分が強制的にローカルデータとされたか(すなわち、ルックアップされたデータオブジェクト名が要求側クライアントと同じ組織からのものであった)を示す。y軸は、ルックアップ要求に対する物理ネットワークホップの数を示す。
予測どおり、ChordおよびPastryはそれらのオーバレイネットワーク全体にデータを拡散させるため、どちらもデータ参照の局所性は気に留めない。これに対して、SkipNetはどちらのバージョンも、データ参照の局所性が増加するにつれて大幅な性能向上を示す。Mercatorトポロジでは、ドメイン間リンクにはドメイン内リンクと同様のコストがかかることから、図19が実際にはSkipNetによって得られる特典を控えめに表していることに留意されたい。GT−ITMトポロジに関して実行された同等の実験では、SkipNetのエンドツーエンドルックアップ待ち時間は、100%ローカルルックアップについて、Pastryのものよりも少なく、7分の1を超えた。
9.4 組織切断に対する耐障害性
配置の局所性は、耐障害性も向上させる。図20は、組織がネットワークの残りの部分から切断されたときに障害が発生したルックアップ要求の数を示す図である。
この(一般的な)インターネットに似た障害は、ChordおよびPastryにとって破局的な結果をもたらした。この実験で分離された組織のサイズは、システム内のノード合計のおよそ15%であった。従って、ChordおよびPastryは、どちらも組織のデータのほぼ85%を、組織外のノード上に配置することになる。さらに、(切断された組織から見て)オーバレイネットワークのノードの85%に事実上障害が生じながら、ルックアップ要求をルーティングさせる試みも実行しなければならない。このレベルの障害では、ルーティングは事実上不可能である。最終的な結果として、障害ルックアップの比率はほぼ100%に近い。
これに対して、SkipNetはどちらのバージョンも、基準となる局所性が多いほど良好に実施される。強制的にローカルとされるルックアップがない場合、SkipNetは、組織に対してローカルでないデータの85%のアクセスに失敗する。ローカルルックアップの割合が100%に近づくにつれて、障害を起こすルックアップの割合は0に近づく。
第6項で述べたSkipNetの切断アルゴリズムおよびマージアルゴリズムの挙動を実験に基づいて確認するために、シミュレータがASサブネットワークの切断をサポートするように拡張した。図21は、組織のSkipNetがレベル0でいったんグローバルSkipNetに接続された場合の、以前に切断された組織とシステムの残りの部分との間で観察したルーティング性能を示す図である。また、すべての高位レベルポインタが修復された場合に観察されたルーティング性能も示す。
9.5 制約付きロードバランシング
図22は、2つの異なるCLB構成のルーティング性能を探求し、それらの性能をPastryと比較した図である。各システムでは、すべてのルックアップトラフィックが組織的にローカルなデータである。組織サイズならびにノードおよびデータの配置は、ジップ様分布でクラスタ化される。基本CLB構成は第3項で述べたR−Tableのみを使用し、完全CLBは第5.4項で述べたC−Tableを使用する。
完全CLB曲線は、基本CLBを超えるかなりの性能向上を示し、特別なルーティング状態を維持するコストを正当化している。ただし、たとえ追加のルーティングテーブルを使用しても、完全CLBの性能はPastryの性能に劣る。ただし主な観察点は、従来のピアツーピアオーバレイネットワークを備えたCLB機能を模倣するためには、全体にロードバランシングを実行したい各ドメインにつき1つの、複数のルーティングテーブルが必要なことである。
10 結論
他のピアツーピアシステムは、すべてのピアが等しいと想定している。任意の特定のピアに対して、同じ組織内にあるピアはシステム内のほとんどのピアよりも重要であると想定することによって、これを補足説明する。具体的に言えば、それらは障害を起こす確率が低く、ネットワーク距離が近い確率が高く、さらに攻撃のソースとなる確率が低い。
SkipNetは、機能レベルでのこの哲学的想定を、コンテンツ局所性およびパス局所性、すなわち、データ配置を制御する機能、および可能であればいつでもルーティングが管理ドメイン内に留まることの保証を提供することによって、実現する。ピアツーピアシステムが分散型アプリケーション用のインフラストラクチャとして広く成功していくものである場合、この機能は不可欠であると信じる。発明者の知る限りでは、SkipNetはコンテンツ局所性およびルーティングパス局所性の両方を達成する、第1のピアツーピアシステム設計である。SkipNetは、以前のピアツーピアシステムの性能目標を犠牲にすることなくこれを達成するものであり、SkipNetノードは状態の対数量を維持し、SkipNetオペレーションはメッセージの対数数を必要とする。
SkipNetは、任意の所望の細分度でコンテンツ局所性を提供する。制約付きロードバランシングは、データの特定ノード上への配置、ならびに従来のDHT機能、および任意の中間レベルの細分性を包含する。この細分性は、ノードの名前IDによって符号化された階層によってのみ制限される。
SkipNetの設計は、他のピアツーピアシステムが提供していない、一般的なインターネット障害に対する弾力性を提供するものである。組織境界線に沿ったネットワーク区分の場合、SkipNetは少数のセグメントに断片化される。さらにSkipNetは、ネットワーク分割が解消されたときに、これらのセグメントをグローバルSkipNetと効率良く再マージするためのメカニズムも提供する。相関していない独立したノードの障害に直面した場合、SkipNetは、他のピアツーピアシステムにも同様の保証を提供する。
発明者の評価努力は、SkipNetが、均一のアクセスパターンの下で、ChordおよびPastryなどの他のピアツーピアシステムと同様の性能を有することを実証した。組織内トラフィックが優位を占めるアクセスパターンの下で、SkipNetはより優れた性能を提供する。さらに、SkipNetが、他のピアツーピアシステムよりもネットワーク区分に対してかなりの弾力性があることも、実験に基づいて検証した。
今後の研究では、WANをエミュレートする2000マシンのテストベッドをまたがってSkipNetを展開していく計画である。この展開により、動的なホストの接合および離脱、ネットワークの輻輳、および他の実世界のシナリオに直面した場合の、SkipNetの挙動をさらに理解していくことになろう。スケーラブルなイベント通知サービス[2]を実施するためのインフラストラクチャとしてのSkipNetの好適性を評価することも計画している。
謝辞
Antony Rowstron、Miguel Castro、およびAnne-Marie Kermarrecに対し、彼らのPastryの実施およびネットワークシミュレータの使用を許可いただけたことに感謝する。また、Scott Sheffieldに対しても、名前による検索の分析に関する彼の洞察に感謝する。
参考文献
[1]J.Aspnes, G.Shah著。スキップグラフ。SODA 2003への出版認可済み。
[2]L.F.Cabrera, M.B.Jones, M.Theimer著。Herald:グローバルイベント通知サービスの達成。2001年5月HotOS VIIIにて。
[3]M.Castro, P.Druschel, A.Ganesh, A.Rowstron, D.Wallach著。ピアツーピアオーバレイルーティングに関するセキュリティ。Operating System Design and Implementation(OSDI)第5回シンポジウム議事録より。2002年12月、USENIX。
[4]M.Castro, P.Druschel, Y.C.Hu, A.Rowstron著。構造化ピアツーピアオーバレイネットワークにおけるトポロジ認識ルーティング。Microsoftテクニカルレポート #MSR-TR-2002-82、2002年より。
[5]Y.H.Chu, S.G.Rao, H.Zhang著。エンドシステムマルチキャストの事例。ACM SIGMETRICS 2000、1〜12ページより。2000年6月 カリフォルニア州サンタクララ。ACM。
[6]I.Clarke, O.Sandberg, B.Wiley, T.W.Hong著。フリーネット:分散匿名情報記憶および検索システム。2000年7月、匿名および不可観測性における設計問題に関するワークショップ、311〜320ページより。ICSI、米国カリフォルニア州バークレー。
[7]T.H.Cormen, C.E.Leiserson, R.L.Rivest著。アルゴリズム入門。MITプレス、1990年マサチューセッツ州ケンブリッジ。
[8]F.Dabek, M.F.Kaashoek, D.Karger、R.Morris, I.Stoica著。CFSによる広域協同記憶域。2001年10月、オペレーティングシステムの原理に関する第18回ACMシンポジウムより。
[9]J.R.Douceur著。Sybilアタック。第1回ピアツーピアシステムに関する国際ワークショップ(IPTPS '02)より。2002年3月。
[10]E.Fredkin著。トライメモリ。Communications of the ACM、3(9):490−499、1960年9月。
[11]Gnutella。http://www.gunutelliums.com/
[12]S.Gribble, E.Brewer, J.Hellerstein, D.Culler著。インターネットサービス構造向けのスケーラブルな分散データ構造。Operating System Design and Implementation(OSDI 2000)第4回シンポジウム議事録、2000年10月より。
[13]S.Iyer, A.Rowstron, P.Druschel著。Squirrel:分散型ピアツーピアWebキャッシュ。Principles of Distributed Computing(PODC)第21回ACM年次シンポジウム議事録、2002年7月より。
[14]F.Kaashoek, R.Morris, F,Dabek, I.Stoica, E.Brunskill, D.Karger, R.Cox, A.Muthitacharoen著。Chordプロジェクト2002。http://www.pdos.jcs.mit.edu/Chord/。
[15]D.Karger, E.Lehman, F.Leighton, M.Levine、D.Lewin, R.Panigraphy著。整合的ハッシングおよびランダムツリー:World Wide Web上のホットスポットを軽減するための分散キャッシングプロトコル。計算理論に関する第29回ACM年次シンポジウム議事録、654〜663ページ、1997年5月より。
[16]P.Keleher, S.Bhattacharjee, B.Silaghi著。仮想化オーバレイネットワークの氾濫を見過ごせるか。第1回ピアツーピアシステムに関する国際ワークショップ(IPTPS '02)、2002年3月。
[17]D.E.Knuth著。コンピュータプログラミングの芸術、第3巻:ソートと検索。Addison-Wesley、マサチューセッツ州リーディング、1973年。
[18]C.Labovitz, A.Ahuja著。インターネットの安定化および広域バックボーン障害に関する実験に基づく研究。耐障害性コンピューティングシンポジウム(FTCS)、1999年6月より。
[19]D.Malkhi, M.Naor, D.Ratajczak著。Viceroy:Butterflyのスケーラブルかつ動的なエミュレーション。Principles of Distributed Computing(PODC)第21回ACM年次シンポジウム議事録、ACM、2002年7月より。
[20]P.Maymounkov, D.Mazieres著。Kademilia:XOR測定規準に基づくピアツーピア情報システム。第1回ピアツーピアシステムに関する国際ワークショップ(IPTPS '02)、MIT、2002年3月。
[21]D.Oppenheimer, D.A.Patterson著。大規模インターネットサービスからの障害データの研究および使用。第10回ACM SIGOPS ヨーロッパワークショップ、2002年9月より。
[22]T.Papadakis著。スキップリストおよびアルゴリズムの確率分析。ワーテルロー大学博士論文、1993年。テクニカルレポートCS93-28としても入手可。
[23]W.Pugh著。スキップリスト:平衡木の確率的代替。アルゴリズムおよびデータ構造に関するワークショップ、437〜449ページ、1989年より。
[24]W.Pugh著。スキップリスト解説書。メリーランド大学テクニカルレポートCS-TR-2286.1,1990年。
[25]S.Ratnasamy, P.Francis, M.Handley, R.Karp, S.Shenker著。スケーラブルコンテンツアドレス可能ネットワーク。ACM SIGCOMM議事録、2001年8月より。
[26]S.Ratnasamy, M.Handley, R.Karp, S.Shenker著。コンテンツアドレス可能ネットワークを使用するアプリケーションレベルマルチキャスト。ネットワーク化グループ通信に関する第3回国際ワークショップ議事録、2001年11月より。
[27]A.Rowstron, P.Druschel著。Pastry:大規模ピアツーピアシステムに関するスケーラブルな分散オブジェクトのロケーションおよびルーティング。分散システムプラットフォーム(ミドルウェア)に関する国際会議、329〜350ページ、ドイツ、ハイデルベルグ、2001年11月より。
[28]A.Rowstron, P.Druschel著。PAST(大規模永続ピアツーピア記憶ユーティリティ)における記憶管理およびキャッシング。オペレーティングシステムの原理に関する第18回ACMシンポジウム、2001年10月より。
[29]A.Rowstron, A.M.Kermarrec, M.Castro, P.Druschel著。Scribe:大規模イベント通知インフラストラクチャの設計。ネットワーク化グループ通信に関する第3回国際ワークショップ、2001年11月より。
[30]I.Stoica, R.Morris, D.Karger, M.F.Kaashoek, H.Balakrishnan著。Chord:インターネットアプリケーションのためのスケーラブルピアツーピアルックアップサービス。ACM SIGCOMM '01会議議事録、149〜160ページ、カリフォルニア州サンディエゴ、2001年8月より。
[31]I.Stoica, R.Morris, D.Karger, M.F.Kaashoek, H.Balakrishnan著。Chord:インターネットアプリケーションのためのスケーラブルピアツーピアルックアップサービス。テクニカルレポートTR-819、MIT、2001年3月。
[32]H.Tangmunarunkit, R.Govindan, S.Shenker, D.Estrin著。インターネットパスにおけるルーティングポリシーの影響。INFOCOM、736〜742ページ、2001年4月より。
[33]M.Theimer, M.B.Jones著。Overlook:オーバレイネットワーク上でのスケーラブルな名前サービス。第22回分散コンピューティングシステム国際会議(ICDCS)議事録より。IEEE Computer Society、2002年7月。
[34]A.Vahdat, J.Chase, R.Braynard, D.Kostic, A.Rodriguez著。自己編成サブセット:From Each According to His Abilities, To Each According to His Needs。第1回ピアツーピアシステムに関する国際ワークショップ(IPTPS '02)より。2002年3月。
[35]E.W.Zegura, K.L.Calvert, S.Bhattacharjee著。インターネットワークのモデル化方法。IEEE Infocom '96、1996年4月、議事録より。
[36]B.Y.Zhao, J.D.Kubiatowiez, A.D.Joseph著。Tapestry:障害弾力性のある広域ロケーションおよびルーティングに関するインフラストラクチャ。テクニカルレポートUCB//CSD-01-1141、U.C.バークレー、2001年4月。
本発明の実施形態を実施するために使用可能なコンピュータネットワークシステムの一例を一般的に示す概略図である。 本発明の実施形態を実施するために使用可能なコンピュータシステムの一例を一般的に示す概略図である。 本発明の一実施形態に従ったスキップネット構造を示すネットワーク図である。 本発明の一実施形態に従ったポインタテーブル構造を示すデータ構造図である。 本発明の一実施形態に従ったスキップネット構造を示す代替ネットワーク図である。 本発明の一実施形態に従ったスキップネット構造を示す他の代替ネットワーク図である。 辞書編集的に別個のノードが単一の物理位置でホストされる、本発明の一実施形態に従ったスキップネット構造を示すネットワーク図である。 辞書編集的に別個のノードが単一の物理位置でホストされる、本発明の一実施形態に従ったノード構造およびポインタテーブル構造を示す概略図である。 完全スキップリストを示すスキップリスト図である。 確率的スキップリストを示すスキップリスト図である。 本発明の一実施形態に従った完全スキップリストに対応するポインタ図である。 本発明の一実施形態に従ったスキップネットリングを示すネットワーク概略図である。 本発明の一実施形態に従ったスキップネットを示すネットワーク概略図である。 本発明の一実施形態に従ったルーティングアルゴリズムを示す図である。 本発明の一実施形態に従った他のルーティングアルゴリズムを示す図である。 本発明の一実施形態に従ったスキップネットノード挿入アルゴリズムを示す図である。 本発明の一実施形態に従ったスキップネット区画の合併を示すネットワーク概略図である。 本発明の一実施形態に従ったスキップネットレベルゼロのリング接続アルゴリズムを示す図である。 本発明の一実施形態に従った修復後の境界ノードでのノードポインタを示すポインタ図である。 本発明の一実施形態に従ったスキップネットレベルhのリング修復アルゴリズムを示す図である。 本発明の実施形態に従ったネットワークを含む様々なネットワークのネットワークサイズの関数として相対的な遅延ペナルティを示すグラフである。 本発明の実施形態に従ったネットワークを含む様々なネットワークのデータアクセス局所性の関数として絶対的な検索要求待ち時間を示すグラフである。 本発明の実施形態に従ったネットワークを含む様々なネットワークのデータアクセス局所性の関数として失敗した検索要求の数を示すグラフである。 本発明の実施形態に従ったネットワークサイズの関数として組織間メッセージをルーティングするために使用したルーティングホップの数を示すグラフである。 本発明の実施形態に従ったネットワークサイズの関数として制約付きでロードバランシングされたデータの検索の相対的遅延ペナルティを比較したグラフである。
符号の説明
500、504、516 仮想ノード
600 単一の物理位置
612 log(n)ポインタ
614 部分ルーティングテーブル
616 リーフノードポインタ

Claims (23)

  1. ネットワーク化されたノードのセットからオーバレイネットワークを作成するための方法であって、各ノードはポインタを有し、ピアツーピアのメッセージをルーティングし、前記方法は、
    各ノードに異なる名前を割り当てることであって、同じドメイン内にあるノードは、名前によって辞書編集的に順序付けされたときに互いに隣接すること
    各ノードに異なる番号を割り当てることであって、各々の番号は、前記ネットワーク化されたノードのセットに対して固有であり、ノードにかかる番号の分布は、確率的に一様であること
    各ノードにテーブルを作成することであって、前記テーブルは、レベル番号hで表される2以上のレベルを有し、(a)レベル番号h=0のノードにおいて、辞書編集的に隣接するノードポインタを含み、さらにレベル番号h>1のノードにおいて、それぞれ辞書編集的に ノード離れたノードポインタを含み、(b)レベル番号h=0において、全てのノードは1つのリングに割り当てられ、さらにレベル番号h>1において、レベルh+1のリングはレベルhのリングが2つの接合されていないリングに分割され各々のノードはランダムに、一様に前記2つの接合されていないリングのいずれかに割り当てられおよび
    各ノードにおいて、前記メッセージの宛先を越えて指示することのない最高位のポインタに従って、前記オーバレイネットワークを介して前記メッセージをルーティングすること
    を備えたことを特徴とする方法。
  2. 各ノードのテーブル内にある第1のポインタは、前記ノードが名前によって辞書編集的に順序付けされたときに、直後のノードを指すことを特徴とする請求項1に記載の方法。
  3. 各ノードのテーブル内にある第2のポインタは、前記ノードが名前によって辞書編集的に順序付けされたときに、直前のノードを指すことを特徴とする請求項に記載の方法。
  4. 各ノードのテーブル内にある第3のポインタは、前記ノードが名前によって辞書編集的に順序付けされたときに、Kポジションだけ前にある距離ノードを指すことを特徴とする請求項に記載の方法。
  5. 各ノードのテーブル内にある第4のポインタは、前記ノードが名前によって辞書編集的に順序付けされたときに、Kポジションだけ後ろにある距離ノードを指すことを特徴とする請求項に記載の方法。
  6. 前記ポインタは、ノードのネットワークアドレスであることを特徴とする請求項1に記載の方法。
  7. 前記ネットワークアドレスは、IPアドレスであり、前記オーバレイネットワークは、インターネットに接続されたノードのサブセットを含むことを特徴とする請求項に記載の方法。
  8. 各ノードのテーブルに追加のポインタを加えることによって前記オーバレイネットワーク内に1つまたは複数のサブリングを形成することであって、前記追加のポインタは、同じサブリングに属する他のノードを識別することをさらに備えたことを特徴とする請求項1に記載の方法。
  9. 前記ノード名は、ユーザの電子メールアドレスであることを特徴とする請求項1に記載の方法。
  10. 前記ノード名は、ユニフォームリソースロケータ(URL)であることを特徴とする請求項1に記載の方法。
  11. 前記ノード名は、DNS(ドメインネームサービス)名であることを特徴とする請求項1に記載の方法。
  12. 各ノードについて近接テーブルを作成することであって、前記近接テーブルは、ネットワーク位置に基づいて隣接ノードを指す1つまたは複数のポインタを格納することをさらに備えたことを特徴とする請求項1に記載の方法。
  13. 各ノードについて2以上のリーフセットポインタを格納することをさらに備えたことを特徴とする請求項1に記載の方法。
  14. 広域一意識別子(GUID)を取得するためにファイル名をハッシュすること、
    GUIDに最も近い番号を備えた前記オーバレイネットワーク上のノードを見つけること、および
    前記ファイルをそのノードに格納すること
    をさらに備えたことを特徴とする請求項1に記載の方法。
  15. ファイル名を受け取り、前記ファイル名に最も緊密に一致する名前の、前記オーバレイネットワーク上にあるノードを識別すること、および
    前記ファイル名に関連付けられた前記ファイルを、前記識別されたノードに格納すること
    をさらに備えたことを特徴とする請求項1に記載の方法。
  16. 広域一意識別子(GUID)を取得するためにファイル名をハッシュすることであって、前記ファイル名は、前記オーバレイネットワーク上のどのドメインに前記ファイルを格納すべきであるかを示すドメイン識別子接頭部を含むこと、
    前記ドメイン識別子に一致するノード名を備えた前記オーバレイネットワーク上のノードのGUIDに最も近い番号を有する前記オーバレイネットワーク上のノードを見つけること、および
    前記ファイルをそのノードに格納すること
    をさらに備えたことを特徴とする請求項1に記載の方法。
  17. 前記オーバレイネットワーク上に格納するためにファイルを受け取り、制約付きロードバランシングを実行することをさらに備えたことを特徴とする請求項1に記載の方法。
  18. 前記ノードに関連付けられた番号は、ノードをほぼ均等にサブリングに分散させるために使用され、特定のサブリングに属する各ノードは、前記サブリング内にあるノードがノード名により辞書編集的に順序付けられる場合に、前記サブリング内のすぐ隣にあるノードを指す少なくとも1つのポインタを有することを特徴とする請求項に記載の方法。
  19. 記ノードを各ノード名により辞書編集的に論理リングに配置構成することであって、各ノードのテーブルは、1つまたは複数の前記リング上の隣接ノードのアドレスを格納すること、
    前記ノードを2つの論理サブリングに分割することであって、前記ノードの一部は、各サブリング内にあり、各ノードのテーブルは、前記1つまたは複数の前記サブリング上のノードのアドレスを格納すること、および
    前記分割を複数のノードを有する各サブリングにつき1または複数回反復すること
    さらに備えたことを特徴とする請求項1に記載の方法。
  20. 各ノードに割り当てられた前記番号は、ほぼランダムおよび固有であり、前記ノードは、ランダム数に基づいてサブリングに分割されることを特徴とする請求項19に記載の方法。
  21. 前記ノードは、パスに従って辞書編集的に順序付けられ、各ノードのパスは、少なくとも1つのドメイン名およびノード名を含むことを特徴とする請求項19に記載の方法。
  22. 少なくとも1つのノードのパスは、複数のネストされたドメイン名を含むことを特徴とする請求項21に記載の方法。
  23. コンピュータ読取り可能媒体上で実施されるコンピュータプログラムであって、前記コンピュータプログラムは、請求項1ないし22のいずれか一項に記載の方法を実施するように実行可能であることを特徴とするコンピュータプログラム。
JP2003316039A 2002-09-11 2003-09-08 効率的な分散データ構造を備えた改良されたオーバレイネットワークを生成するシステムおよび方法 Expired - Fee Related JP4358581B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US40973502P 2002-09-11 2002-09-11
US10/356,961 US7613796B2 (en) 2002-09-11 2003-02-03 System and method for creating improved overlay network with an efficient distributed data structure

Publications (2)

Publication Number Publication Date
JP2004266796A JP2004266796A (ja) 2004-09-24
JP4358581B2 true JP4358581B2 (ja) 2009-11-04

Family

ID=31891075

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003316039A Expired - Fee Related JP4358581B2 (ja) 2002-09-11 2003-09-08 効率的な分散データ構造を備えた改良されたオーバレイネットワークを生成するシステムおよび方法

Country Status (5)

Country Link
US (1) US7613796B2 (ja)
EP (2) EP1398924B1 (ja)
JP (1) JP4358581B2 (ja)
AT (1) ATE399416T1 (ja)
DE (1) DE60321759D1 (ja)

Families Citing this family (207)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7379857B2 (en) * 2002-05-10 2008-05-27 Lockheed Martin Corporation Method and system for simulating computer networks to facilitate testing of computer network security
EP1514183A2 (en) * 2002-06-20 2005-03-16 BRITISH TELECOMMUNICATIONS public limited company Distributed computer
US20040064725A1 (en) * 2002-09-18 2004-04-01 Microsoft Corporation Method and system for detecting a communication problem in a computer network
US20040088274A1 (en) * 2002-10-31 2004-05-06 Zhichen Xu Semantic hashing
US20040088301A1 (en) * 2002-10-31 2004-05-06 Mallik Mahalingam Snapshot of a file system
US7421433B2 (en) * 2002-10-31 2008-09-02 Hewlett-Packard Development Company, L.P. Semantic-based system including semantic vectors
US7289520B2 (en) * 2002-11-20 2007-10-30 Hewlett-Packard Development Company, L.P. Method, apparatus, and system for expressway routing among peers
GB0230331D0 (en) * 2002-12-31 2003-02-05 British Telecomm Method and apparatus for operating a computer network
US7043470B2 (en) * 2003-03-05 2006-05-09 Hewlett-Packard Development Company, L.P. Method and apparatus for improving querying
US20040205242A1 (en) * 2003-03-12 2004-10-14 Zhichen Xu Querying a peer-to-peer network
US7039634B2 (en) * 2003-03-12 2006-05-02 Hewlett-Packard Development Company, L.P. Semantic querying a peer-to-peer network
US20040181607A1 (en) * 2003-03-13 2004-09-16 Zhichen Xu Method and apparatus for providing information in a peer-to-peer network
US7907544B2 (en) * 2003-03-14 2011-03-15 Hewlett-Packard Development Company, L.P. Overlay network for location-independent communication between computer systems
US8145699B2 (en) 2003-05-30 2012-03-27 Microsoft Corporation Generalized proximity service
US7792915B2 (en) * 2003-06-04 2010-09-07 Sony Computer Entertainment Inc. Content distribution overlay network and methods for operating same in a P2P network
US7916739B2 (en) * 2003-06-24 2011-03-29 Ntt Docomo, Inc. Location privacy for internet protocol networks using cryptographically protected prefixes
US7990948B2 (en) * 2003-08-15 2011-08-02 Quintence Properties Kg, Llc Serverless and switchless internet protocol telephony system and method
US6956827B2 (en) * 2003-08-15 2005-10-18 Popular Telephony, Inc. Distribution of identifiers in serverless networks
TWI225999B (en) * 2003-08-22 2005-01-01 Ind Tech Res Inst A method for searching Peer-based security policy database
US7702882B2 (en) * 2003-09-10 2010-04-20 Samsung Electronics Co., Ltd. Apparatus and method for performing high-speed lookups in a routing table
US7523220B2 (en) * 2003-09-17 2009-04-21 Microsoft Corporation Metaspace: communication middleware for partially connected mobile ad hoc networks
US7809843B1 (en) * 2003-09-18 2010-10-05 Intel Corporation Globally unique identification in communications protocols and databases
US7788400B2 (en) * 2003-09-19 2010-08-31 Hewlett-Packard Development Company, L.P. Utilizing proximity information in an overlay network
US6988180B2 (en) * 2003-09-29 2006-01-17 Microsoft Corporation Method and apparatus for lock-free, non-blocking hash table
US7570600B1 (en) * 2003-12-17 2009-08-04 Symantec Operating Corporation Overlay network with efficient routing and recovery
US20050154794A1 (en) * 2004-01-14 2005-07-14 Deshpande Sachin G. Systems and methods for providing a discovery protocol
US7827279B2 (en) * 2004-01-30 2010-11-02 Hewlett-Packard Development Company, L.P. Selecting nodes close to another node in a network using location information for the nodes
US7961650B2 (en) * 2004-02-16 2011-06-14 Christopher Michael Davies Network architecture
US20050198351A1 (en) * 2004-02-20 2005-09-08 Microsoft Corporation Content-based routing
US8782654B2 (en) 2004-03-13 2014-07-15 Adaptive Computing Enterprises, Inc. Co-allocating a reservation spanning different compute resources types
WO2005089241A2 (en) 2004-03-13 2005-09-29 Cluster Resources, Inc. System and method for providing object triggers
US7730207B2 (en) * 2004-03-31 2010-06-01 Microsoft Corporation Routing in peer-to-peer networks
US7536467B2 (en) * 2004-04-20 2009-05-19 Microsoft Corporation Peer-to-peer (P2P) mobility system, and method
JP2005333374A (ja) * 2004-05-19 2005-12-02 Toshiba Corp ネットワーク検索システム、情報検索方法、ブリッジ装置及びプログラム
WO2005120102A1 (en) * 2004-05-19 2005-12-15 Wurld Media, Inc. Dynamic connection structure topologies and methods for facilitating the peer-to-peer transfer of digital files
GB0412655D0 (en) * 2004-06-07 2004-07-07 British Telecomm Distributed storage network
US20070266388A1 (en) 2004-06-18 2007-11-15 Cluster Resources, Inc. System and method for providing advanced reservations in a compute environment
US7877476B2 (en) * 2004-06-25 2011-01-25 Hajime Fukushima Communication model, counter sign signal, method, and device
JP3987512B2 (ja) * 2004-07-15 2007-10-10 株式会社東芝 メッセージ配送方法、計算機及びプログラム
US7715396B2 (en) * 2004-08-19 2010-05-11 Microsoft Corporation Network routing
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
US20070133520A1 (en) * 2005-12-12 2007-06-14 Microsoft Corporation Dynamically adapting peer groups
US7613703B2 (en) * 2004-09-30 2009-11-03 Microsoft Corporation Organizing resources into collections to facilitate more efficient and reliable resource access
US7640299B2 (en) * 2004-09-30 2009-12-29 Microsoft Corporation Optimizing communication using scaleable peer groups
US9298513B2 (en) * 2004-10-07 2016-03-29 International Business Machines Corporation Method and structure for autonomic application differentiation/specialization
US20110082928A1 (en) 2004-10-22 2011-04-07 Microsoft Corporation Maintaining consistency within a federation infrastructure
US20080288659A1 (en) 2006-11-09 2008-11-20 Microsoft Corporation Maintaining consistency within a federation infrastructure
US20060090003A1 (en) * 2004-10-22 2006-04-27 Microsoft Corporation Rendezvousing resource requests with corresponding resources
US8549180B2 (en) * 2004-10-22 2013-10-01 Microsoft Corporation Optimizing access to federation infrastructure-based resources
US8095601B2 (en) * 2004-10-22 2012-01-10 Microsoft Corporation Inter-proximity communication within a rendezvous federation
US7958262B2 (en) 2004-10-22 2011-06-07 Microsoft Corporation Allocating and reclaiming resources within a rendezvous federation
US8014321B2 (en) * 2004-10-22 2011-09-06 Microsoft Corporation Rendezvousing resource requests with corresponding resources
US8095600B2 (en) * 2004-10-22 2012-01-10 Microsoft Corporation Inter-proximity communication within a rendezvous federation
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
US7730220B2 (en) * 2004-10-22 2010-06-01 Microsoft Corporation Broadcasting communication within a rendezvous federation
US8271980B2 (en) 2004-11-08 2012-09-18 Adaptive Computing Enterprises, Inc. System and method of providing system jobs within a compute environment
WO2006068365A1 (en) * 2004-12-21 2006-06-29 Electronics And Telecommunications Research Institute P2p overlay network construction method and apparatus
US8102837B2 (en) * 2004-12-30 2012-01-24 Massachusetts Institute Of Technology Network coding approach to rapid information dissemination
US8046426B2 (en) * 2004-12-30 2011-10-25 Massachusetts Institute Of Technology Random linear coding approach to distributed data storage
US7587367B2 (en) * 2004-12-31 2009-09-08 Ebay Inc. Method and system to provide feedback data within a distributed e-commerce system
JP4371056B2 (ja) * 2005-01-07 2009-11-25 ブラザー工業株式会社 ノード装置、ネットワーク参加処理プログラム、及びネットワーク参加処理方法等
US8683020B2 (en) * 2005-02-26 2014-03-25 Coco Communications Corp. Naming system layer
US8631130B2 (en) 2005-03-16 2014-01-14 Adaptive Computing Enterprises, Inc. Reserving resources in an on-demand compute environment from a local 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
CA2603577A1 (en) 2005-04-07 2006-10-12 Cluster Resources, Inc. On-demand access to compute resources
US7895270B2 (en) * 2005-04-21 2011-02-22 Microsoft Corporation Transport abstraction for multiparty replication
KR100636232B1 (ko) * 2005-04-29 2006-10-18 삼성전자주식회사 해시 체인을 이용하여 디바이스들간의 인접성을 검사하는방법 및 장치
US20060271638A1 (en) * 2005-05-27 2006-11-30 Beigi Mandis S Method and apparatus for improving data transfers in peer-to-peer networks
US7831624B2 (en) * 2005-06-24 2010-11-09 Seagate Technology Llc Skip list with address related table structure
DE502005001390D1 (de) * 2005-07-14 2007-10-11 Konrad Zuse Zentrum Fuer Infor Vorrichtung und Verfahren zum Abrufen/Speichern von elektronischen Daten in einem System mit mehreren Datenverarbeitungseinheiten
US8208477B1 (en) * 2005-08-24 2012-06-26 Hewlett-Packard Development Company, L.P. Data-dependent overlay network
WO2007034313A1 (en) * 2005-09-23 2007-03-29 Thomas Friedrich Theo Fuhrmann Routing method and apparatus
JP2007148545A (ja) * 2005-11-24 2007-06-14 Brother Ind Ltd 情報配信システム、情報配信方法、ノード装置、及びノード処理プログラム
US7468952B2 (en) * 2005-11-29 2008-12-23 Sony Computer Entertainment Inc. Broadcast messaging in peer to peer overlay network
JP2007200203A (ja) * 2006-01-30 2007-08-09 Brother Ind Ltd 情報配信システム、再登録メッセージ送信方法、ノード装置、及びノード処理プログラム
US7860106B2 (en) * 2006-02-13 2010-12-28 Wind River Systems, Inc. System and method for routing table computation and analysis
JP2007235243A (ja) * 2006-02-27 2007-09-13 Brother Ind Ltd 情報通信システム、情報収集方法、ノード装置、及びノード処理プログラム
US20070233832A1 (en) * 2006-03-30 2007-10-04 Matsushita Electric Industrial Co., Ltd. Method of distributed hash table node ID collision detection
US7881223B2 (en) * 2006-03-31 2011-02-01 Panasonic Corporation Method for on demand distributed hash table update
US7516116B2 (en) * 2006-04-07 2009-04-07 Microsoft Corporation Range and cover queries in overlay networks
CN100433657C (zh) * 2006-05-11 2008-11-12 蓝汛网络科技(北京)有限公司 适用于大规模流媒体直播系统的对等网络成员管理方法
US8605721B1 (en) * 2006-05-25 2013-12-10 The Hong Kong University Of Science And Technology Scalable island multicast for peer-to-peer media delivery
US7925781B1 (en) * 2006-05-26 2011-04-12 The Hong Kong University Of Science And Technology Distributed storage to support user interactivity in peer-to-peer video streaming
EP1868114B1 (de) * 2006-06-12 2015-11-18 Konrad-Zuse-Zentrum für Informationstechnik Berlin Vorrichtung und Verfahren zum Speichern und Abrufen von Objekten mit mehrdimensional adressierten, elektronischen Daten
JP2008059398A (ja) * 2006-08-31 2008-03-13 Brother Ind Ltd 識別情報割当装置及びその情報処理方法並びにそのプログラム
US8041942B2 (en) * 2006-09-05 2011-10-18 Panasonic Corporation Robust peer-to-peer networks and methods of use thereof
JP2008090564A (ja) * 2006-09-29 2008-04-17 Brother Ind Ltd コンテンツ配信システム及び同システムにおける識別情報割当方法及び同システムにおける識別情報割当装置及び同装置のプログラム
WO2008037758A1 (de) * 2006-09-29 2008-04-03 Siemens Aktiengesellschaft Physikalischer netzwerkknoten eines mesh-netzwerks sowie mesh-netzwerk
US7684352B2 (en) * 2006-11-02 2010-03-23 Nortel Networks Ltd Distributed storage of routing information in a link state protocol controlled network
US20100281165A1 (en) * 2006-11-14 2010-11-04 Christoph Gerdes Method for the load distribution in a peer-to-peer-overlay network
KR101305397B1 (ko) * 2006-11-24 2013-09-06 네이버 주식회사 P2p 시스템에서 피어 랜덤 선택을 위한 피어 관리 서버및 피어 관리 방법
EP2087667A4 (en) * 2006-11-27 2015-03-04 Ericsson Telefon Ab L M METHOD AND SYSTEM FOR PROVIDING A ROUTING ARCHITECTURE FOR OVERLAY NETWORKS
US8737261B2 (en) * 2006-11-27 2014-05-27 Telefonaktiebolaget L M Ericsson (Publ) Node registering method
US9026628B2 (en) * 2007-01-22 2015-05-05 Xerox Corporation Two-level structured overlay design for cluster management in a peer-to-peer network
JP4952276B2 (ja) * 2007-02-05 2012-06-13 日本電気株式会社 分散データ管理システムおよび方法
WO2008102195A1 (en) * 2007-02-22 2008-08-28 Telefonaktiebolaget Lm Ericsson (Publ) Consistent and fault tolerant distributed hash table (dht) overlay network
US8108918B2 (en) * 2007-02-27 2012-01-31 Red Hat, Inc. Zero knowledge attribute storage and retrieval
US8028019B2 (en) * 2007-02-28 2011-09-27 Solid State Networks, Inc. Methods and apparatus for data transfer in networks using distributed file location indices
JP4926763B2 (ja) * 2007-03-06 2012-05-09 三菱電機株式会社 パケット転送方法および制御装置
US7895345B2 (en) * 2007-04-13 2011-02-22 Microsoft Corporation Distributed routing table architecture and design
US8739123B2 (en) * 2007-05-28 2014-05-27 Google Inc. Incorporating gadget functionality on webpages
US7809785B2 (en) * 2007-05-28 2010-10-05 Google Inc. System using router in a web browser for inter-domain communication
WO2008151674A1 (en) * 2007-06-15 2008-12-18 Telefonaktiebolaget Lm Ericsson (Publ) Method of discovering overlapping cells
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
CA2693312A1 (en) * 2007-06-22 2008-12-31 Telefonaktiebolaget L M Ericsson (Publ) System and method for access network multi-homing
JP4770804B2 (ja) * 2007-07-03 2011-09-14 ブラザー工業株式会社 オーバレイネットワーク型通信システム、オーバレイネットワーク型ノード装置およびプログラム
US7882327B2 (en) * 2007-07-31 2011-02-01 Advanced Micro Devices, Inc. Communicating between partitions in a statically partitioned multiprocessing system
US7961711B2 (en) * 2007-08-06 2011-06-14 Microsoft Corporation Fitness based routing
US8041773B2 (en) 2007-09-24 2011-10-18 The Research Foundation Of State University Of New York Automatic clustering for self-organizing grids
US9407693B2 (en) * 2007-10-03 2016-08-02 Microsoft Technology Licensing, Llc Network routing of endpoints to content based on content swarms
EP2215770B1 (en) * 2007-10-18 2013-03-20 Telefonaktiebolaget L M Ericsson (publ) Merging of overlay networks in distributed data structures
US8375062B2 (en) * 2007-11-19 2013-02-12 Oracle America, Inc. Simple optimistic skiplist
JP4417997B2 (ja) * 2007-12-13 2010-02-17 株式会社東芝 オーバーレイネットワークシステム、同システムにおけるオーバーレイネットワーク構築・維持方法、及びプログラム
US7870133B2 (en) * 2008-01-14 2011-01-11 Infosys Technologies Ltd. Method for semantic based storage and retrieval of information
US20100315945A1 (en) * 2008-01-25 2010-12-16 Nokia Corporation Method, apparatus, and computer program product for providing device monitoring in a network
US7636759B1 (en) 2008-09-29 2009-12-22 Gene Fein Rotating encryption in data forwarding storage
US7636760B1 (en) 2008-09-29 2009-12-22 Gene Fein Selective data forwarding storage
US7599997B1 (en) 2008-08-01 2009-10-06 Gene Fein Multi-homed data forwarding storage
US7636761B1 (en) 2008-09-29 2009-12-22 Gene Fein Measurement in data forwarding storage
US9203928B2 (en) 2008-03-20 2015-12-01 Callahan Cellular L.L.C. Data storage and retrieval
US8458285B2 (en) 2008-03-20 2013-06-04 Post Dahl Co. Limited Liability Company Redundant data forwarding storage
US8386585B2 (en) 2008-04-25 2013-02-26 Tajitshu Transfer Limited Liability Company Real-time communications over data forwarding framework
KR101472936B1 (ko) 2008-04-30 2014-12-17 삼성전자주식회사 피투피 네트워크 시스템 및 그의 지역 기반 운용 방법
US8452844B2 (en) 2008-05-07 2013-05-28 Tajitshu Transfer Limited Liability Company Deletion in data file forwarding framework
US7792992B2 (en) * 2008-05-29 2010-09-07 Xerox Corporation Serverless distributed monitoring and anomaly detection for a service oriented architecture
US8130773B2 (en) * 2008-06-25 2012-03-06 Honeywell International Inc. Hybrid topology ethernet architecture
US8599678B2 (en) 2008-07-10 2013-12-03 Tajitshu Transfer Limited Liability Company Media delivery in data forwarding storage network
US8370446B2 (en) 2008-07-10 2013-02-05 Tajitshu Transfer Limited Liability Company Advertisement forwarding storage and retrieval network
JP2010028551A (ja) * 2008-07-22 2010-02-04 Brother Ind Ltd コンテンツ分散保存システム、ノード装置、ノード処理プログラム、及びアドレス情報変更通知方法
WO2010011342A1 (en) * 2008-07-25 2010-01-28 Brown University Apparatus, methods, and computer program products providing dynamic provable data possession
US8200915B2 (en) * 2008-08-22 2012-06-12 Cadence Design Systems, Inc. Management of very large streaming data sets for efficient writes and reads to and from persistent storage
JP5390814B2 (ja) * 2008-09-04 2014-01-15 Kddi株式会社 リング型の出力値サークル、認証システム、鍵配布システム、メンバー確認システムおよび認証方法、鍵配布方法、メンバー確認方法
US8478823B2 (en) 2008-09-29 2013-07-02 Tajitshu Transfer Limited Liability Company Selective data forwarding storage
US8352635B2 (en) 2008-09-29 2013-01-08 Tajitshu Transfer Limited Liability Company Geolocation assisted data forwarding storage
CN101741715B (zh) * 2008-11-20 2013-03-20 华为技术有限公司 发送消息的方法、接入路由节点设备和数据缓存系统
US9344438B2 (en) * 2008-12-22 2016-05-17 Qualcomm Incorporated Secure node identifier assignment in a distributed hash table for peer-to-peer networks
KR100983479B1 (ko) * 2009-02-11 2010-09-27 엔에이치엔(주) 분산 스페이스를 이용하여 분산 프로그래밍 환경을 제공하기 위한 방법, 시스템 및 컴퓨터 판독 가능한 기록 매체
US8301654B2 (en) * 2009-02-24 2012-10-30 Hitachi, Ltd. Geographical distributed storage system based on hierarchical peer to peer architecture
US9240927B2 (en) * 2009-02-26 2016-01-19 Qualcomm Incorporated Methods and apparatus for enhanced overlay state maintenance
US8484382B2 (en) * 2009-03-11 2013-07-09 Qualcomm Incorporated Methods and apparatus for merging peer-to-peer overlay networks
EP2234055A1 (en) * 2009-03-27 2010-09-29 Siemens Aktiengesellschaft Method for installing a web package within an manufacturing executing system
WO2010124355A1 (en) 2009-05-01 2010-11-04 Nortel Networks Limited E-spring support of ethernet protection
US8100755B2 (en) * 2009-05-11 2012-01-24 Multimedia Games, Inc. Method, apparatus, and program product for distributing random number generation on a gaming network
JP4947106B2 (ja) * 2009-07-27 2012-06-06 ブラザー工業株式会社 情報通信システム、情報通信方法、情報通信システムに含まれるノード装置、情報処理プログラムおよびノード装置のプログラム
US20110078779A1 (en) * 2009-09-25 2011-03-31 Song Liu Anonymous Preservation of a Relationship and Its Application in Account System Management
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
CN102088450B (zh) * 2009-12-08 2014-03-19 中兴通讯股份有限公司南京分公司 一种多域对等网络中域的拆分与合并方法及系统
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
US8549126B2 (en) 2010-04-09 2013-10-01 Sony Computer Entertainment Inc. Application level broadcast in peer overlay network
US8799438B2 (en) * 2010-12-14 2014-08-05 Microsoft Corporation Generic and automatic address configuration for data center networks
TW201251376A (en) * 2011-06-09 2012-12-16 Ind Tech Res Inst Method and device for distribution of nodes, and computer program products thereof
US8443086B2 (en) 2011-06-22 2013-05-14 National Chiao Tung University Decentralized structured peer-to-peer network and load balancing methods thereof
US8880880B2 (en) * 2011-07-29 2014-11-04 Qualcomm Incorporated Facilitating access control in peer-to-peer overlay networks
CN103093140B (zh) * 2011-10-31 2015-11-25 腾讯科技(深圳)有限公司 权限管理方法及系统
JP5759881B2 (ja) * 2011-12-08 2015-08-05 株式会社日立ソリューションズ 情報処理システム
US10044582B2 (en) 2012-01-28 2018-08-07 A10 Networks, Inc. Generating secure name records
US9515920B2 (en) * 2012-04-20 2016-12-06 Futurewei Technologies, Inc. Name-based neighbor discovery and multi-hop service discovery in information-centric networks
JP6168052B2 (ja) * 2012-05-31 2017-07-26 株式会社ニコン 移動電子機器およびプログラム
US20130332992A1 (en) * 2012-06-12 2013-12-12 Xerox Corporation Methods and systems for identifying a trustable workflow based on a comprehensive trust model
GB2505230B (en) * 2012-08-23 2019-10-16 Metaswitch Networks Ltd Leader node appointment
US9634922B2 (en) * 2012-09-11 2017-04-25 Board Of Regents Of The Nevada System Of Higher Education, On Behalf Of The University Of Nevada, Reno Apparatus, system, and method for cloud-assisted routing
US8965845B2 (en) * 2012-12-07 2015-02-24 International Business Machines Corporation Proactive data object replication in named data networks
US9722918B2 (en) 2013-03-15 2017-08-01 A10 Networks, Inc. System and method for customizing the identification of application or content type
US9912555B2 (en) 2013-03-15 2018-03-06 A10 Networks, Inc. System and method of updating modules for application or content identification
US9838425B2 (en) 2013-04-25 2017-12-05 A10 Networks, Inc. Systems and methods for network access control
US9525726B2 (en) * 2013-06-24 2016-12-20 Nec Corporation Compute followed by network load balancing procedure for embedding cloud services in software-defined flexible-grid optical transport networks
US9294503B2 (en) 2013-08-26 2016-03-22 A10 Networks, Inc. Health monitor based distributed denial of service attack mitigation
US9705801B2 (en) * 2013-10-07 2017-07-11 Facebook, Inc. Systems and methods for mapping and routing based on clustering
US9684737B2 (en) * 2014-02-18 2017-06-20 International Business Machines Corporation Accessing an N-way linked list
US9906422B2 (en) 2014-05-16 2018-02-27 A10 Networks, Inc. Distributed system to determine a server's health
TW201545510A (zh) * 2014-05-30 2015-12-01 Ibm 在分散式計算系統中進行訊息路由的方法
US9819573B2 (en) 2014-09-11 2017-11-14 Microsoft Technology Licensing, Llc Method for scalable computer network partitioning
US9756071B1 (en) 2014-09-16 2017-09-05 A10 Networks, Inc. DNS denial of service attack protection
US9544225B2 (en) 2014-09-16 2017-01-10 Microsoft Technology Licensing, Llc Method for end point identification in computer networks
US10447676B2 (en) * 2014-10-10 2019-10-15 Adp, Llc Securing application programming interfaces (APIS) through infrastructure virtualization
US9537886B1 (en) 2014-10-23 2017-01-03 A10 Networks, Inc. Flagging security threats in web service requests
US9769536B2 (en) 2014-12-26 2017-09-19 System73, Inc. Method and system for adaptive virtual broadcasting of digital content
US9621575B1 (en) 2014-12-29 2017-04-11 A10 Networks, Inc. Context aware threat protection
US9584318B1 (en) 2014-12-30 2017-02-28 A10 Networks, Inc. Perfect forward secrecy distributed denial of service attack defense
US9900343B1 (en) 2015-01-05 2018-02-20 A10 Networks, Inc. Distributed denial of service cellular signaling
US9848013B1 (en) 2015-02-05 2017-12-19 A10 Networks, Inc. Perfect forward secrecy distributed denial of service attack detection
US10063591B1 (en) 2015-02-14 2018-08-28 A10 Networks, Inc. Implementing and optimizing secure socket layer intercept
US10248678B2 (en) * 2015-08-25 2019-04-02 International Business Machines Corporation Enabling placement control for consistent hashing-based object stores
US9787581B2 (en) 2015-09-21 2017-10-10 A10 Networks, Inc. Secure data flow open information analytics
US10469594B2 (en) 2015-12-08 2019-11-05 A10 Networks, Inc. Implementation of secure socket layer intercept
US10291470B1 (en) * 2016-07-01 2019-05-14 Juniper Networks, Inc. Selective storage of network device attributes
US10812348B2 (en) 2016-07-15 2020-10-20 A10 Networks, Inc. Automatic capture of network data for a detected anomaly
US10341118B2 (en) 2016-08-01 2019-07-02 A10 Networks, Inc. SSL gateway with integrated hardware security module
US10382562B2 (en) 2016-11-04 2019-08-13 A10 Networks, Inc. Verification of server certificates using hash codes
US10250475B2 (en) 2016-12-08 2019-04-02 A10 Networks, Inc. Measurement of application response delay time
US10397270B2 (en) 2017-01-04 2019-08-27 A10 Networks, Inc. Dynamic session rate limiter
US10187377B2 (en) 2017-02-08 2019-01-22 A10 Networks, Inc. Caching network generated security certificates
US10735268B2 (en) 2017-04-21 2020-08-04 System73 Ltd. Predictive overlay network architecture
US11606263B2 (en) * 2017-10-17 2023-03-14 Science Applications International Corporation Large network simulation
US10803196B2 (en) * 2018-03-30 2020-10-13 Microsoft Technology Licensing, Llc On-demand de-identification of data in computer storage systems
WO2020081727A1 (en) * 2018-10-16 2020-04-23 Eluvio, Inc. Decentralized content fabric
JP7074018B2 (ja) * 2018-10-22 2022-05-24 日本電信電話株式会社 分散処理システムおよび分散処理方法
CN113132147B (zh) * 2020-01-15 2024-06-21 伊姆西Ip控股有限责任公司 管理网络中的节点的方法、设备和计算机程序产品
GB2592211A (en) * 2020-02-19 2021-08-25 Nchain Holdings Ltd Adapting connections of a layered network
GB2594684A (en) 2020-02-19 2021-11-10 Nchain Holdings Ltd Layered network
US11949595B2 (en) * 2020-06-26 2024-04-02 Intel Corporation Reflection routing as a framework for adaptive modular load balancing for multi-hierarchy network on chips
US11256678B2 (en) * 2020-06-30 2022-02-22 EMC IP Holding Company LLC Reconstruction of links between logical pages in a storage system
US11775530B2 (en) * 2020-12-08 2023-10-03 Huawei Technologies Canada Co., Ltd. Method to improve global query performance in an edge network
CN115277864B (zh) * 2022-07-27 2024-01-26 海通证券股份有限公司 路由确定方法及装置、计算机可读存储介质、终端

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4142069A (en) 1977-06-20 1979-02-27 The United States Of America As Represented By The Secretary Of The Army Time reference distribution technique
US5253248A (en) 1990-07-03 1993-10-12 At&T Bell Laboratories Congestion control for connectionless traffic in data networks via alternate routing
ES2129038T3 (es) 1992-11-27 1999-06-01 Ibm Encaminamiento a destinos multiples entre dominios.
JP3425192B2 (ja) * 1993-08-25 2003-07-07 富士通株式会社 アドレス情報の自動設定処理方法およびアドレス情報の設定装置
US5978364A (en) 1996-02-29 1999-11-02 Philips Electronics North America Corporation Method for routing data packets within a wireless, packet-hopping network and a wireless network for implementing the same
US5970489A (en) * 1997-05-20 1999-10-19 At&T Corp Method for using region-sets to focus searches in hierarchical structures
US6029168A (en) 1998-01-23 2000-02-22 Tricord Systems, Inc. Decentralized file mapping in a striped network file system in a distributed computing environment
US6667957B1 (en) * 1998-03-14 2003-12-23 University Of Maryland Adaptive routing method for a dynamic network
US6522632B1 (en) * 1998-05-06 2003-02-18 Avici Systems Apparatus and method for efficient prefix search
US6430527B1 (en) * 1998-05-06 2002-08-06 Avici Systems Prefix search circuitry and method
US6975631B1 (en) * 1998-06-19 2005-12-13 Juniper Networks, Inc. Network packet forwarding lookup with a reduced number of memory accesses
US6249813B1 (en) 1998-08-06 2001-06-19 Mci Communications Corporation Automated method of and apparatus for internet address management
US6611872B1 (en) 1999-01-11 2003-08-26 Fastforward Networks, Inc. Performing multicast communication in computer networks by using overlay routing
US6338082B1 (en) * 1999-03-22 2002-01-08 Eric Schneider Method, product, and apparatus for requesting a network resource
US6836463B2 (en) * 1999-10-15 2004-12-28 Nokia Corporation System for communicating labeled routing trees to establish preferred paths and source routes with local identifiers in wireless computer networks
US6490592B1 (en) 1999-12-30 2002-12-03 Nortel Networks Limited Method of and apparatus for generating a tree data structure supporting longest match lookup
US7412462B2 (en) 2000-02-18 2008-08-12 Burnside Acquisition, Llc Data repository and method for promoting network storage of data
US6636854B2 (en) * 2000-12-07 2003-10-21 International Business Machines Corporation Method and system for augmenting web-indexed search engine results with peer-to-peer search results
US7188145B2 (en) * 2001-01-12 2007-03-06 Epicrealm Licensing Llc Method and system for dynamic distributed data caching
US7043644B2 (en) * 2001-01-31 2006-05-09 Qurio Holdings, Inc. Facilitating file access from firewall-protected nodes in a peer-to-peer network
US20020116533A1 (en) * 2001-02-20 2002-08-22 Holliman Matthew J. System for providing a multimedia peer-to-peer computing platform
US7149797B1 (en) * 2001-04-02 2006-12-12 Akamai Technologies, Inc. Content delivery network service provider (CDNSP)-managed content delivery network (CDN) for network service provider (NSP)
US7065587B2 (en) 2001-04-02 2006-06-20 Microsoft Corporation Peer-to-peer name resolution protocol (PNRP) and multilevel cache for use therewith
US7310666B2 (en) * 2001-06-29 2007-12-18 International Business Machines Corporation Method and system for restricting and enhancing topology displays for multi-customer logical networks within a network management system
US20030110252A1 (en) * 2001-12-07 2003-06-12 Siew-Hong Yang-Huffman Enhanced system and method for network usage monitoring
JP4154893B2 (ja) 2002-01-23 2008-09-24 株式会社日立製作所 ネットワークストレージ仮想化方法
US20030196024A1 (en) * 2002-04-16 2003-10-16 Exanet, Inc. Apparatus and method for a skip-list based cache
US7096228B2 (en) * 2002-03-27 2006-08-22 Microsoft Corporation Method and system for managing data records on a computer network
KR100429900B1 (ko) * 2002-05-07 2004-05-03 한국전자통신연구원 IPv4 주소체계 확장방법 및 확장된 IPv4주소체계를 이용하여 계층적으로 레이블을 스위칭하는방법 및 그 기록매체
US7089323B2 (en) * 2002-06-21 2006-08-08 Microsoft Corporation Method for multicasting a message on a computer network
US7266082B2 (en) * 2002-08-30 2007-09-04 Hewlett-Packard Development Company, L.P. Expressway routing among peers
US7554988B2 (en) * 2002-09-10 2009-06-30 Hewlett-Packard Development Company, L.P. Creating expressway for overlay routing

Also Published As

Publication number Publication date
US7613796B2 (en) 2009-11-03
EP1968257A2 (en) 2008-09-10
US20040054807A1 (en) 2004-03-18
JP2004266796A (ja) 2004-09-24
EP1968257A3 (en) 2008-09-17
EP1398924A2 (en) 2004-03-17
EP1398924A3 (en) 2004-05-19
DE60321759D1 (de) 2008-08-07
EP1398924B1 (en) 2008-06-25
ATE399416T1 (de) 2008-07-15

Similar Documents

Publication Publication Date Title
JP4358581B2 (ja) 効率的な分散データ構造を備えた改良されたオーバレイネットワークを生成するシステムおよび方法
Harvey et al. {SkipNet}: A Scalable Overlay Network with Practical Locality Properties
Jafari Navimipour et al. A comprehensive study of the resource discovery techniques in Peer-to-Peer networks
Ratnasamy et al. A scalable content-addressable network
Lua et al. A survey and comparison of peer-to-peer overlay network schemes
Wang et al. Peer-to-peer overlay networks: A survey
Ratnasamy et al. Routing algorithms for DHTs: Some open questions
KR101183050B1 (ko) 자기조직화 네트워크들을 위한 분산 해싱 메커니즘
EP1351141B1 (en) Method and system for managing data records on a computer network
Zhang et al. Distributed hash table: Theory, platforms and applications
Gupta et al. Efficient and adaptive epidemic-style protocols for reliable and scalable multicast
Confais et al. Data location management protocol for object stores in a fog computing infrastructure
Al-Oqily et al. SORD: A fault-resilient service overlay for mediaport resource discovery
Vishnevsky et al. Scalable blind search and broadcasting over distributed hash tables
Zeinalipour-Yazti Information retrieval in peer-to-peer systems
Bauer et al. Replica placement and location using distributed hash tables
Confais et al. SToN: A New Fundamental Trade-off for Distributed Data Storage Systems
Richa et al. Overlay networks for peer-to-peer networks
Sethom et al. Palma: A P2P based Architecture for Location Management
Fantar et al. Exploiting locality using geographic coordinates and semantic proximity in Chord
Mischke et al. Design space for distributed search (DS) ²: a system designers' guide
Zheng et al. Peer-to-peer: A technique perspective
Xu et al. Enhancing Routing Robustness of Unstructured Peer-to-Peer Networks Using Mobile Agents
Cojocar BBUFs: A new lookup mechanism based on IPV6
Mary et al. Peer-to-Peer Overlays: Issues and Trends

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060814

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090122

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090203

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090501

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

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

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

Free format text: PAYMENT UNTIL: 20120814

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4358581

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20130814

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

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