問題タブ [kademlia]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
p2p - Kademlia への新しいノードの追加、Kademlia ルーティング テーブルの構築
Kademlia DHT の結合プロセスについて頭を悩ませることはできません。オンラインでいくつかのチュートリアルとプレゼンテーションを見てきましたが、それらはすべて同じように言っているようで、すべての疑似コードなどはほとんど同じです (実際のコピー/貼り付け)。
誰かがこれについて高レベルのウォークスルーを提供できますか?
routing - ピアツーピア システムは位置を認識できますか?
Chord や Kademlia などのピアツーピア システムについて読んでいると、オーバーレイでのルーティングは最適化されているかもしれませんが、アンダーレイでは同じではないことがわかりました。実際にはリクエストのホップ数は少なくなりますが、その際に物理的に世界中にルーティングされます。これがすべてのピア ツー ピア システムの欠点なのか (まったく不利なのか、それとも何か不足しているのでしょうか?)、ピア ツー ピア システムは、に基づいて効率的なルーティングを行うために何らかの要因を考慮に入れているのかを知りたいだけです。ピアの実際の位置認識?
kademlia - C++ での Kademlia の実装
C ++での完全なkademlia DHT実装を探していますか? 私は十分に文書化されておらず、完全に実装されていないbitdhtを試しました。また、madesafe-dht は複雑すぎます。上記以外の実装を参照できる人はいますか?
bittorrent - 個別の DHT タブを持つことは可能ですか?
私は慣れてきておりDHT
、それがどのように機能するかをほとんど理解しています。DHT
ただし、それぞれに異なるエントリタイプを持つ個別の s が必要な場合にどうなるかはよくわかりません。これは可能ですか?
私が人気のあるDHT
ライブラリを使用している場合、それは私put
とget
エントリがそのライブラリDHT
のすべてのユーザーと同じものを使用していることを意味しますか? それともDHT
誰にとっても普遍的なものですか?の をどのように定義しますかowner
、DHT
または別の含まれる をどのように定義しますDHT
か?
distance - Kademlia XOR メトリック プロパティの目的
Petar Maymounkov と David Mazières による Kademlia の論文では、XOR 距離は有効な非ユークリッド メトリックであり、有効なメトリックの各プロパティが必要または興味深い理由についての説明が限られていると言われています。
- d(x,x) = 0
- d(x,y) > 0、x != y の場合
- forall x,y : d(x,y) = d(y,x) -- 対称性
- d(x,z) <= d(x,y) + d(y,z) -- 三角形の不等式
一般に、メトリクスがこれらのプロパティを持つことが重要なのはなぜですか? Kademlia Distributed Hash Table 実装でクエリをルーティングするコンテキストで、これらの各プロパティが必要なのはなぜですか?
さらに、この論文では、一方向性 (特定の x と距離 l に対して、d(x,y) = l となる単一の y のみが存在する) により、すべてのクエリが同じパスに沿って収束することが保証されると述べられています。どうしてこんなことに?
java - 効率的な Kademlia バケット
私は修正された Kademlia P2P システムをここに書いていますが、ここで説明している問題は元のシステムの実装と非常によく似ています。
では、k-Buckets を実装する最も効率的な方法は何でしょうか? 私にとって重要なのは、アクセス時間、並列処理 (読み取りと書き込み)、およびメモリ消費です。
ConcurrentLinkedQueue と ConcurrentHashMap でそれを行うことを考えましたが、それはかなり冗長で厄介ですよね?
現時点では、LinkedList を同期しているだけです。
これが私のコードです:
不思議に思わないでください、私は別のネイバー立ち退きプロセスを実装しました。
protocols - BT クライアントが指定どおりに get_peer にトークンを返さない
ここの仕様に従っていたメインラインのkademliaプロトコルと通信できるプログラムを実装しようとしていますhttp://www.bittorrent.org/beps/bep_0005.html
インターネットのランダムなノードに対して get_peer クエリを実行すると、書き込みトークンが返されるはずですが、いくつのノードを試しても書き込みトークンがありません
私が送ったサンプルデータ:
d1:ad2:id20:-WP0001-4145477439689:info_hash20:-WP0000-5555555555556:noseedi1ee1:q8:get_peer1:v4:WPvA1:t2:aa1:y1:qe
私が試したノード:多くのランダムノードがfind_nodeクエリを使用して取得され、ブートストラップノードはrouter.bittorrent.comです
見返りにノードのリストを取得します。トークンが欠落していることを除いて、すべて正常です
トークンを取得するために従わなければならないルールはありますか?