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