2016-10-24 2 views
0

KademliaはXORメトリックを使用します。とりわけ、これは「単方向」特性(=任意の点xと距離e> 0に対して、d(x、y)= eとなるようにちょうど1つの点yがある)と呼ばれています。Kademliaメトリックの変更 - 単方向プロパティの重要性

最初の質問は、メデリックのこのプロパティがKademliaの機能に欠かせないのか、それとも特定のノードからの圧力を明らかにするのに役立つものなのか(元の論文が示唆しているように)。言い換えれば、メトリックを変更したい場合は、「一方向性」のメトリックを使用することがどれだけ重要なのでしょうか?

第2の質問は、メトリックの具体的な変更についてです。ノード識別子(アドレス)がXビットの数字であると仮定します。次のメトリックのいずれかがKademliaで使用できますか?

  1. d(x,y) = abs(x-y)
  2. d(x,y) = abs(x-y) + 1/(x xor y)

のID 90および110を有するノードが均等に離れているので、これは一方向メトリックないノードID 100のために第1のメトリックは、単純に、数の差を提供します。後者の場合、(x xまたはy)が単方向であることが分かっているので、1 /(x xまたはy)を加えることで、1 /(x xまたはy)にこのプロパティを保持する必要があります。

ノードID100の場合、ノードID90はd(100,90) = 10 + 1/62であり、ノードID110からの距離はd(100,110) = 10 + 1/10です。

答えて

1

あなたはもうkademliaを扱わないでしょう。異なる距離メトリック、一部の不均一な距離メトリックを使用する他のルーティングアルゴリズムもありますが、それらはkademlia固有の仮定に依存せず、これらのメトリックの望ましくない側面を補うために他の機能を組み込むこともあります。

メトリックに結びつきがある可能性があるため(各点につき2つの候補)、ルックアップは最も近いノードの正確な集合に収束することができませんでした。

バケット分割およびその他のルーティングテーブルメンテナンスアルゴリズムは、同一の距離がノードIDのみで発生すると想定されるため、変更する必要があります。

Big-Oプロパティやその他のkademliaの保証に影響するかどうかはわかりません。

とにかく、これはX-Yの問題のようです。特定の目標を達成するためにメトリックを変更する必要があります。たぶん、その目標に合わせて設計されたルーティングオーバーレイを念頭に置いて探すべきでしょう。

D(X、Y)= ABS(X-Y)+ 1 /(Xの排他的論理和Y)

これは非現実的と思われる、整数に分割丸め苦しんでいます。実際には、このような小さな数字ではなく、より大きな(例えば160ビット)数字を扱うことになり、部門の費用も高くなります。

+0

実際のコードでは、 'd(x、y)= abs(xy)+ 1 /(x xor y)'は理論レベルでのもので、分割なしで実装を使用します。例えば、 IDは最下位半分が空(0)の320ビット数であり、距離関数は320ビットの数を生成し、より高い160bitsはIDの上位160bitsの「xy」であり、下位160bitsは「xxor y」となる。元のxorメトリックのすべての属性を保持する必要があります。 – Wapac

+0

私はKademlia、Chord、Pastryを知っているので、他のalgsについても聞きたいと思うでしょう。そこから、Kademliaはメトリック関数を除いて私の使用例に最も適切だと思われます。 – Wapac

+0

あなたの使用方法を実際に記述すると、場合?とにかく、いくつかの有用なGoogleのキーワード "P2Pオーバーレイネットワーク"、 "ルーティング"と "距離メトリック"(様々な組み合わせで適用可能)。例えば。私が読んだ論文の1つはLevenshteinの距離を使っていましたが、ひどいクラスタリングのためにノードの位置を動的に調整しなければなりませんでした。 CANは、より高次元のメトリックを使用する例になります。 – the8472

関連する問題