350 likes | 595 Views
Skip Graphs の仕組みと 関連研究. 大阪大学工学部 電子情報エネルギー工学科 小西 佑治. 株式会社 BBR 吉田 幹. 発表構成. 前半(小西) Skip Graph の仕組みの解説 後半(吉田) 地理的探索オーバレイ LL-Net の Skip Graph を使った実装. 前半の概要. 自己紹介 イントロ Skip Graphs について 関連研究の紹介. 自己紹介. 大阪大学の4回生です ただいま卒業研究の真最中 の管理人
E N D
Skip Graphs の仕組みと関連研究 大阪大学工学部電子情報エネルギー工学科小西 佑治 株式会社 BBR 吉田 幹
発表構成 • 前半(小西) • Skip Graph の仕組みの解説 • 後半(吉田) • 地理的探索オーバレイ LL-Net の Skip Graphを使った実装
前半の概要 • 自己紹介 • イントロ • Skip Graphs について • 関連研究の紹介
自己紹介 • 大阪大学の4回生です • ただいま卒業研究の真最中 • の管理人 • skip graph や SkipNetで検索した人は見たことがあるかも・・・
P2Pネットワーク • 分散処理システム • ピアが集まって形成されるネットワーク • Keyによって識別されるリソースを保持 どのようにピアを配置すると効率的か??
データの有効性 非集中 スケーラビリティ フォールトトレランス 負荷分散 ネットワークの維持 自己安定化 ピアの動的な追加や削除 効率的な探索 地理的位置の考慮 時間的・空間的なリソースの配置 理想的なP2Pネットワークの特徴
初期のP2Pシステム • Napster • インデックスサーバがボトルネック • Gnutella • 非効率なフラッディングによる検索 • Freenet • 検索待ち時間の保証がない
DHT(分散ハッシュテーブル) • Structuredオーバーレイの代表格 • CAN、Chord、Pastry、Tapestry、・・・ • リソースのKeyをハッシュして、スケーラビリティと負荷分散を実現 ハッシュにより Key の順序が崩れ、範囲検索が困難
Skip Graphs 論文:"Skip Graphs"James Aspnes, Gauri ShahSODA, Jan. 2003, pp.384-393 • 双方向リンクの Skip List をP2Pシステムに適用 • ルーティングテーブルのリンク数: • Keyをハッシュしない • 範囲検索に対応(1次元) • システム全体のノード数を知る必要がない
HEAD TAIL Level 2 33 Level 1 13 33 48 Level 0 13 21 33 48 75 99 Skip List • ノードは Key 順に並ぶ • Level 0 は全てのノードが含まれたリスト • Level (i-1) に現れるノードはある確率 p で Level i にも現れる 数字が Key
HEAD TAIL success failure Level 2 33 Level 1 13 33 48 Level 0 13 21 33 48 75 99 Skip List での検索 • 上位レベルから下位レベルに降りてくる • 平均探索時間 : HEAD から Key “75”を検索
21 33 Membershipvector Level 2 10 01 13 48 75 99 11 00 00 11 21 75 99 Level 1 11 10 11 13 33 48 Skip List 00 00 01 13 21 33 48 75 99 Level 0 11 00 10 01 00 11 Skip Graph の構成 • N ノードの skip graph のレベル数は • Level i では Membership vector の接頭辞が i 桁一致するもの同士がリンクをはる
検索・ノード追加・ノード削除 • 検索 • 平均時間: • ノードの追加・削除 • 平均時間:
21 33 Level 2 success failure 10 01 13 48 75 99 11 00 00 11 21 75 99 Level 1 11 10 11 13 33 48 00 00 01 13 21 33 48 75 99 Skip List Level 0 11 00 10 01 00 11 Skip Graph での検索 Key “33”のノードから Key “75”を検索 Skip List と同様に検索を行う 一致する Key がない場合は Key が近いノードまで届く
21 33 Level 2 10 01 13 48 75 99 11 00 00 11 21 75 99 Level 1 11 10 11 13 33 48 00 00 01 13 21 33 48 75 99 Level 0 11 00 10 01 00 11 Skip Graph でのノード追加 Introducer から Level 0 での新規ノードの位置を 検索し、新規ノードを Level 0 に追加する introducer new 40 00
21 21 21 33 33 33 Level 2 Level 2 Level 2 10 10 10 01 01 01 13 13 13 48 48 48 75 75 75 99 99 99 40 11 11 11 00 00 00 00 00 00 11 11 11 00 21 21 21 75 75 75 99 99 99 Level 1 Level 1 Level 1 11 11 11 10 10 10 11 11 11 40 40 13 13 13 33 33 33 48 48 48 00 00 00 00 00 00 00 00 01 01 01 13 13 13 21 21 21 33 33 33 40 40 40 48 48 48 75 75 75 99 99 99 Level 0 Level 0 Level 0 11 11 11 00 00 00 10 10 10 01 01 01 00 00 00 00 00 00 11 11 11 Skip Graph でのノード追加 Level i-1 (i>0) で接頭辞の i 桁目が同じノードを 探して、 Level i でリンクをつくる
自己安定性 • Skip Graph のノードの制約条件 • 制約条件が破られる場合 • 修復機構
ノードの制約条件 x の Level i における左右のノードを xLi、xRiとする xLi< x < xRi xLiRi= xRiLi= x xLi = xLki-1 xRi = xRki-1 xRi key x Level i x Level i-1 x xLi xRi 01 00 00 xR1i-1 xR2i-1 invariant 条件:未配達のメッセージのない全ての状態で満たされる条件(ノード故障があっても満たされる) L & R successor 条件:ノードやリンクの故障で満たされなくなる条件修復機構の対象になる
Successor 制約条件が破られる場合 • xRi= xRki-1だが ∃a = xRk’i-1、k’< k 、m(x)i= m(a)i • ∀k に対して xRi ≠ xRki-1 xRi Membership vector が i 桁同じ a が xRiになっ ていない x Level i Level i-1 x a …00… …00… …00… xRk’i-1 xRki-1 xRi x Level i xRiが Level i-1 に存在しない Level i-1 x
zipperOpF zipperOpB a Level i Level i xRi x x x x Level i-1 Level i-1 a a …00… …00… …00… …00… …00… …00… xRk’i-1 xRk’i-1 xRki-1 xRki-1 修復機構:Case1 x と a 、xRiと a に対して、Level i でそれぞれ リンクのつなぎ換えを行う
aLi-1 xRi Level i-1 L R a x 修復機構:Case2-1 xRi x Level i Level i-1 において、a と xRiに接続するノード群は マージされ同じリスト上になる aLi-1 x a Level i-1 zipperOpB zipperOpF L R xRi より小さく aLi-1より大きい 最小の key を持つノード xRi より大きく a より小さい 最大の key を持つノード
xRi aRi-1 Level i-1 x a M 修復機構:Case2-2 xRi x Level i aRi-1 x a zipperOpF Level i-1 zipperOpB M xRiLk’i-1で a より大きい最小のノード
xRi Level i-1 x a R 修復機構:Case2-3 xRi x Level i a x zipperOpB Level i-1 R xRiLk’i-1で a より大きい最小のノード
フォールトトレランス • Adversarial failures • Random failures
expansion ratio = min |δA | / | A | (1 ≦ | A | ≦ n/2) f ノードの故障で のノードが分離する可能性あり Adversarial failures • Adversarial failures の対象ノードのセット:A • Aにリンクを張っているノードのセット:δA • もし A を分離しようとすると、δA のノード全てを故障させなければならない
Random failures 131072 nodes
Random failures 時の探索 131072 nodes 10000 messages
負荷分散 s から t への検索経路上に u が存在する確率 PP=(Level k の経路に存在する u の数の期待値)/(d+1) < 2/(d+1) s s から t への検索経路 u : s < u < t なるノード d : u < v < t なる v の数 u u t u
1.1 1.0 負荷の期待値 実際の負荷 目的ノード = 76542 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0.0 76400 76450 76500 76550 76600 76650 実験結果 ノードの負荷 ノードの場所
論文で述べられている課題 • 効率的な修復機構を考える • 地理的位置の近接性の考慮 • 実環境での性能の評価 • 多次元 Skip Graph • ビザンチン障害の影響の研究
関連研究 • SkipNet :A scalable overlay network with practical locality properties • Nicholas J. A. Harvey, Michael B. Jones, Stefan Saroiu, Marvin Theimer, and Alec Wolman. In Proceedings of USITS, USENIX., 2003 • Skip List の P2P 適用だが、構造はリストではなくリング
関連研究 • The Rainbow Skip Graph : Fault-Tolerant Constant-Degree Distributed Data Structure • Michael T. Goodrich, Michael J. Nelson, and Jonathan Zheng Sun.SODA ’06, January 22-26, Miami, FL • Level 0 のリストを Θ(logn) の Core List に区切り、その Core List を1つのノード(Super Node)として扱って Skip Graph を構築する • Core List 内のノードは分担して各レベルを担当する • 検索などのコストを Skip Graph と変えずに、ポインタの保持数を減らしている
関連研究 • Skip B-Trees • Ittai Abraham, James Aspnes, and Jian Yuan. OPODIS Dec. 2005, pp. 284–295. • タイトル通り、Skip Graph に B木の考え方を組み合わせたもの。 • Skip Graph の各レベルの各リストはブロックに分けられる
個人的な所感 範囲検索ができるというのは、 ユビキタスとかP2Pとかが流行るにつれて ますます重要になるのではないか。 範囲検索できる Skip Graph は魅力的。 Key と ID をうまく使い分けしてやるといろいろな用途に使えそう。 ご清聴ありがとうございました。 次は吉田さんです。