CS262B Reading Summary

Chord: A Scalable Peer-to-peer Lookup Service for Internet Applications

Ion Stoica et al

Summary by Feng Zhou
3/17/04

Strong points of the paper are:

  1. One strong point of Chord is its simplicity, at least as long as the basic design is concerned. The basic algorithm is simpler than other designs and achieves log(n) lookup distance. Every node only needs to keep log(n) state including the finger table, a successor list and a predecessor node. Then lookup involves following the finger table entries to logarithmically approaches the destination. Joining involves a lookup and updating states of neighbors.
  2. One key point about the robustness of Chord is that only the successor list and the predecessor node are aggressively kept up-to-date. Because the key space is a one-dimension space, the system is guaranteed to find a key as long as these data structures are correct. This minimalistic approach makes Chord robust to changes in the network. Given the assured rebustness (at least in theory), the finger table and other more complex data structures like the location cache in current Chord implementation are free from ensuring absolute correctness. Thus the whole system design is simplified.
  3. One interesting question about DHTs in general is how they compare to centralize servers or clusters in real world. In terms of scalability, DHT is the obvious winner. But in a lot of cases, we simply do not need the scalability. Moreover, behavior of DHT-like systems in a dynamic environment is neither accurately provable nor well supported by existing implementations. My experience with Chord and Tapestry implementations strongly suggest that building such a system that always work as expected is very hard. This supports the argument that simplicity, robustness and provable behavior may be more important than scalability/performance for distributed algorithms/systems. Following this line, building such a system that simply always works may be an intersting project.