9. Chapter 9: Peer-to-peer networks
9.12. Distributed Hash Tables
One way to do this structured routing
- Assign each node each node an id from space
- eg. 128 bits: SHA-1 salted hash of IP address
- build up a ring: circular hashing
- assign nodes into this space
Value
- diversity of neighbors
- even coverage of space
- less chance of attack?

Why “hash tables”?
- Stored named objects by hash code
- Route the object to the nearest location in space
- key idea: nodes and objects share id space
How do you find an object without its name?
- Close names don’t help because of hashing
Cost of churn?
- In most P2P apps, many joins and leaves
Dangers
- Sybil attacks: one node becomes many
- id attacks: can place your node wherever
- Solutions hard to come by
- crytpo puzzles / money for IDs?
- Certification of routing and storage?
Many routing frameworks in this spirit
- Very popular in late 90s early 00s
- Pastry, Tapestry, CAN, Chord, Kademlia