Pastryのルーティングテーブルの作成方法


23

Pastry Distributed Hash Tableを実装しようとしていますが、いくつかのことが理解を逃れています。私は誰かが明らかにできることを望んでいた。

免責事項:私はコンピューターサイエンスの学生ではありません。私は人生で正確に2つのコンピューターサイエンスコースを受講しましたが、どちらもリモートで複雑なものを扱っていません。私はソフトウェアで長年働いてきたので、アイデアに頭を包むことができれば、実装タスクに任せていると感じます。だから、明らかな何かを見逃しているだけかもしれません。

著者が発表した論文[1]を読んで、ある程度の進歩を遂げましたが、ルーティングテーブルの動作に関するこの1つの特定のポイントに固執し続けています。

論文は、

ノードのルーティングテーブル、それぞれエントリの 行に編成されます。ルーティングテーブルの行のエントリは、nodeIdが最初のn桁で現在のノードのnodeIdを共有するが、番目の桁が可能な値のいずれかを持つノードを参照します現在のノードのID の番目の数字以外。ログ2 B N 2 B - 1 2 B - 1件の、N 、N + 1 2 B - 1 、N + 1をRlog2bN2b12b1nn+12b1n+1

アプリケーション固有の変数、通常の略。簡単にするために使用しましょう。以上は4 b = 4b4b=4

ノードのルーティングテーブル、、で構成されて ログ16 N と行15個のエントリ毎。15行目のエントリNのルーティングテーブルのそれぞれは、その本のnodeIdノードののnodeIdを共有FIで最初のn桁のノードを参照するが、そのN + 1番目の数字は、の一つを有する2 B - 1以外の可能な値のn +を現在のノードのIDの1番目の数字。Rlog16N1515nn+12b1n+1

よくわかります。さらに、はクラスター内のサーバーの数です。私もそれを得る。N

私の質問は、エントリが配置される行がキーの共有された長さに依存する場合、なぜ行の数に一見ランダムな制限があるのですか?場合、各nodeIdには32桁があります(128ビットのnodeIdをbビットの数字に分割)。ときに何が起こるNが十分に高い取得ログ16 N > 32?このシナリオにヒットするには340,282,366,920,938,463,463,374,607,431,768,211,457(私の計算が正しければ)サーバーが必要だと思いますが、奇妙な包含のように思え、相関関係は説明されません。b=4Nlog16N>32

さらに、サーバーの数が少ない場合はどうなりますか?サーバーが16台未満の場合、テーブルには1行しかありません。さらに、どのような状況でも、行のすべてのエントリに対応するサーバーはありません。エントリを空のままにしておく必要がありますか?私は、少数のサーバーを考えると、リーフセットでサーバーを見つけることができることを理解していますが、2番目の行にも同じ困惑が生じています-nodeIdを持つサーバーがない場合n番目の桁のあらゆる可能な順列を埋めることができますか?最後に、たとえば4台のサーバーがあり、32桁のうち20桁を共有する2つのノードがある場合、何らかのランダムな方法で...そのノードのテーブルの20行にデータを入力する必要がありますいっぱいに近づくよりもはるかに多くの行がありますか?

ここに私が思いついたものがあり、これを自分のやり方で推論しようとしています:

  1. そのプレフィックスに正確に一致するノードが存在しない場合、エントリはヌル値に設定されます。
  2. nodeIdの共有長に一致するのに十分な行が存在するまで、空の行が追加されます。
  3. 目的のメッセージIDに一致するエントリがない場合にのみ、共有長が現在のnodeIdの値以上であり、エントリが現在のノードより数学的に近いnodeIdのルーティングテーブルの検索にフォールバックします。 nodeIdは目的のIDです。
  4. #3で適切なノードが見つからない場合は、これが宛先であると想定し、メッセージを配信します。

これら4つの仮定はすべて維持されますか?これに関する情報を探している他の場所はありますか?


  1. ペストリー: A. Rowstrong and P. Druschel(2001)による大規模なピアツーピアシステム用のスケーラブルな分散オブジェクトの場所とルーティング - こちらからダウンロード

あなたはあなたがほとんどプログラミングを持っていないと言います。この記事では、(直接)プログラミングを実際に扱っているのではなく、2つのノード間の最短経路ネットワーキングを扱っています。それで、次の質問は、どのくらいのネット​​ワークの背景を得たのですか?これは、ネットワーク経由のルーティングに関するものです。

実際に、十分なプログラミング経験があると信じています。それは私が不足していると感じるコンピューターサイエンスの経験です。とにかく、ネットワーキングの経験はほとんどありません。これが主にネットワークに関するものであるというあなたの主張に同意するかどうかはわかりませんが、あなたの考えを聞いてみたいです。

回答:


5

Pastry(およびすべての構造化されたP2Pネットワーク)のルーティングテーブルのアイデアは、より高速なルーティングを保証しながら、サイズを最小化することです。

Pastryのルーティングアルゴリズムは次のとおりです。

AA

u

iuiu

(i+1)thi{0,,2b1}

A

uAuAuu1u1

u1A

log2bb2bb

通常、実際のシナリオは一般的ではありません。ネットワークに多くのノードがない状況があります。これが上記のステップCに従う理由です。-ただし、このアルゴリズムを正しくするために保証する必要があるのは、各ノードがそれに最も近い2つのノード(識別子の観点から)に接続されることです。これは、順序付けられたノードのリングを形成します[例1-> 3-> 4-> 9-> 10-> 11-> 1]


完全に私が尋ねていたものではありませんが、アルゴリズムの非常に良い概要は、とにかくあなたに賛成で受け入れられた答えを与えます。:)
水田
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.