What works:

Hashing
Generate ID from IP+port
Lookup mechanism using CHORD
Joining Servers


What does not work:

When a request is routed through different servers, for example A->B->C->D, the reply does not go through all the servers again, and also it does not go from D to client directly. Instead, we reached a middle ground in which D sends the response to A which is then sent to client.
