Questions tagged [dht]

A Hash Table is a data structure used to store data in the form of Key=>Value pairs. A Distributed Hash Table (DHT) is basically a hash table distributed across a network of computers(nodes). A DHT uses a Routing Protocol to determine which node to store a piece of data on.

A distributed hash table (DHT) is a class of a decentralized distributed system that provides a lookup service similar to a hash table; (key, value) pairs are stored in a DHT, and any participating node can efficiently retrieve the value associated with a given key. Responsibility for maintaining the mapping from keys to values is distributed among the nodes, in such a way that a change in the set of participants causes a minimal amount of disruption. This allows a DHT to scale to extremely large numbers of nodes and to handle continual node arrivals, departures, and failures.

A DHT uses a Routing Protocol to determine which node(s) a data should be stored on. This routing protocol usually takes care of replicating data and also updating data stores to make sure that the data survives on the DHT for the long term. Some popular routing protocols are Kademlia, Chord and Pastry

275 questions
11
votes
5 answers

How does consistent hashing work?

I am trying to understand how consistent hashing works. This is the article which I am trying to follow but not able to follow, to start with my questions are: I understand, servers are mapped into ranges of hashcodes and the data distribution is…
zengr
  • 38,346
  • 37
  • 130
  • 192
11
votes
2 answers

Adding new nodes to Kademlia, building Kademlia routing tables

I can't quite wrap my brain around the joining process of Kademlia DHTs. I've seen a few tutorials and presentations online, but they all seem to say things the same way and all psedo code etc is the same in most (actual copy/paste). Can somebody…
JSON
  • 1,819
  • 20
  • 27
10
votes
2 answers

How to understand the Kademlia(KAD) protocol

Recently, I've read a document of the Kademlia Protocol, I tried to understand the protocol, but I still have some question: Why a node must find another node when he knows its ID but ip or port? Why he has the ID while he doesn't know the ip or…
rock_cloud
  • 123
  • 1
  • 1
  • 7
9
votes
1 answer

DHT: BitTorrent vs kademlia vs clones (python)

I'm in the middle of implementing my own dht for internal cluster. Since it will be used in file-sharing program like bittorrent, "Mainline DHT" was the first thing I was look at. After that I found "entangled" (python, dht using twisted matrix),…
Vadim Fint
  • 875
  • 8
  • 9
9
votes
1 answer

Torrent DHT udp

Im trying to get access to a Torrent DHT network, and im having a hard time figuring out howto get access to the "entry" node in DHT. How does a DHT in a Bittorent client get "bootstrapped"? Describes that a couple of standard entry nodes could be…
Mads Lee Jensen
  • 4,570
  • 5
  • 36
  • 53
9
votes
1 answer

Decentralized chat application using IPFS

I am writing a decentralized chat application using nodejs, expressjs, angularjs, socket.io and ipfs.I am using libp2p to form the nodes that will communicate with each other over an open connection. Libp2p is a networking stack modularized out of…
Varun Agarwal
  • 1,587
  • 14
  • 29
9
votes
1 answer

Highly unbalanced Kademlia routing table

In the Kademlia paper, the last paragraph of section 2.4 states that in order to properly handle highly unbalanced trees... Kademlia nodes keep all valid contacts in a subtree of size at least k nodes, even if this requires splitting buckets in…
offbynull
  • 381
  • 3
  • 16
7
votes
1 answer

Kademlia routing table and distance metric

Its been the first time I read about Kademlia today, and some points I don't think I got them right. The distance between nodes and keys is the xor of their values. So, if I have key x and node y, the distance between them is x xor y. But why what…
xander
  • 1,427
  • 2
  • 16
  • 26
6
votes
5 answers

C++ implementation of DHT

I am looking for opensource implementations of Kademlia DHT in C/C++. It must be lightweight and crossplatform (win/linux/mac). It must be able to post information to DHT and retrieve it.
Alexander Shishenko
  • 940
  • 1
  • 11
  • 28
6
votes
2 answers

What exactly K-Bucket means in Kademlia DHT?

I want to confirm my understanding of buckets in Kademlia DHT. Kademlia has m k-buckets where m is the size of the network in bits and k is the number of key-value pairs stored per bucket. for example, let's say m=4 then we can have 2^4 nodes,…
Nawras
  • 181
  • 1
  • 12
6
votes
0 answers

How utorrent implements the "vote" system over the DHT?

Does anyone know how utorrent implements the "vote" system over the DHT? I looked online but there is next to nothing about it. Some…
Tim P.
  • 421
  • 4
  • 10
6
votes
1 answer

Implementing find node on torrent kademlia routing table

I, already, reviewed a number of documents on this topic but there is something not exactly clear. For example bit torrent document (http://www.bittorrent.org/beps/bep_0005.html) states The routing table is subdivided into "buckets" that each…
alex.49.98
  • 609
  • 5
  • 13
6
votes
1 answer

PHP DHT info_hash list?

I'd like to (via PHP) gather the info_hashes currently being downloaded or search the DHT. I've seen BTDigg which uses DHT for a search engine and I'd like to do something similar. Also, after I get the hashes, how do I convert the hash into a…
user1320842
5
votes
1 answer

P2P overlay networks since 2001?

What has been happening with the four big P2P distributed hash table (DHT) overlay networks — Pastry, CAN, Chord, and Tapestry — since they all came out in 2001? I know that academic projects continued for a few years, and sporadic maintenance…
Canuck
  • 565
  • 4
  • 13
5
votes
1 answer

Mainline DHT bootstrap process

Can somebody clarify me the statement from the specification of mainline DHT? Upon inserting the first node into its routing table and when starting up thereafter, the node should attempt to find the closest nodes in the DHT to itself. It does this…
Art Spasky
  • 1,635
  • 2
  • 17
  • 30
1
2
3
18 19