The recent algorithms pertaining to the lookup problem in a P2P system present a simple and general interface, a distributed hash table (DHT). From the term itself, the idea is that each node in the decentralized and distributed system maintains a hash table (key, value) pair which is used to track the location of some data items within the system.
The authors also mention some of the difficulties attached with the approaches used by some P2P applications in the spring of its implementation. Hierarchies, centralized database, and unbalanced nodes were some of the hitches in the system. The paper then introduces more stable algorithms that have been designed recently as both structured and symmetric and implement the DHT abstraction. What each algorithm makes them distinct from one another is the data structure that they uses as a routing table to provide O(log N) look ups. Chord uses a skiplist structure while Kademlia, Pastry, and Tapestry utilize a tree-like data structure. Viceroy maintains a butterfly data structure while allowing only a constant number of nodes for look up while being consistent with O(log N) lookup. Lastly, CAN uses a d-dimensional Cartesian coordinate space to implement the DHT abstraction.
The design of each approach depends upon the priorities of different issues: distance function, operation costs, fault tolerance and concurrent changes, proximity routing, malicious nodes, and indexing and keyword search.
Reference:
[1] H. Balakrishnan, F.M. Kaashoek, D. Karger, R. Morris and. I. Stoica, '"Looking up Data in P2P Systems", Communcations of the ACM, Vol. 46, No. 2. (February 2003), pp. 43-48.
