KademliaはXORメトリックを使用します。とりわけ、これは「単方向」特性(=任意の点xと距離e> 0に対して、d(x、y)= eとなるようにちょうど1つの点yがある)と呼ばれています。Kademliaメトリックの変更 - 単方向プロパティの重要性
最初の質問は、メデリックのこのプロパティがKademliaの機能に欠かせないのか、それとも特定のノードからの圧力を明らかにするのに役立つものなのか(元の論文が示唆しているように)。言い換えれば、メトリックを変更したい場合は、「一方向性」のメトリックを使用することがどれだけ重要なのでしょうか?
第2の質問は、メトリックの具体的な変更についてです。ノード識別子(アドレス)がXビットの数字であると仮定します。次のメトリックのいずれかがKademliaで使用できますか?
d(x,y) = abs(x-y)
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
です。
実際のコードでは、 'd(x、y)= abs(xy)+ 1 /(x xor y)'は理論レベルでのもので、分割なしで実装を使用します。例えば、 IDは最下位半分が空(0)の320ビット数であり、距離関数は320ビットの数を生成し、より高い160bitsはIDの上位160bitsの「xy」であり、下位160bitsは「xxor y」となる。元のxorメトリックのすべての属性を保持する必要があります。 – Wapac
私はKademlia、Chord、Pastryを知っているので、他のalgsについても聞きたいと思うでしょう。そこから、Kademliaはメトリック関数を除いて私の使用例に最も適切だと思われます。 – Wapac
あなたの使用方法を実際に記述すると、場合?とにかく、いくつかの有用なGoogleのキーワード "P2Pオーバーレイネットワーク"、 "ルーティング"と "距離メトリック"(様々な組み合わせで適用可能)。例えば。私が読んだ論文の1つはLevenshteinの距離を使っていましたが、ひどいクラスタリングのためにノードの位置を動的に調整しなければなりませんでした。 CANは、より高次元のメトリックを使用する例になります。 – the8472