Actually this is my reading list from the last several weeks. I haven’t had the time to write these down, though, since we were preparing for ICNP 2013.
Since me and my teammate are developing an overlay P2P network for Browsers we are especially interested in implementation patterns for such overlays. One very well-known paper is the one from Dabek et al. titled “Towards a Common API for Structured Peer-to-Peer Overlays”. In practice, though, the proposed API isn’t that feasible. It lacks specificity in important aspects and the layered approach doesn’t take into account the quite big interdependency between the various components.
Some weeks ago I discovered this paper:
OverArch: A common architecture for structured and unstructured overlay networks
The first thing the authors mention is that the Dabek paper doesn’t suffice when it comes to actually implementing something so they set their goal directly towards what I was searching for. The authors actually went further and implemented the architecture/API the propose in the paper for various P2P protocols using OverSim.
What we especially liked about OverArch when implementing the BOPlish core library was the concession the author’s made towards the fact that a layered approach cannot work. Rather they propose encapsulating functionality like bootstrappping, routing, connection handling and signaling in different components that expose a standardized API towards each other. This is much more realistic that a layered approach.
So when it comes to implementing a P2P protocol/system I can only highly recommend using OverArch as a template. It takes the pain from developers of having to think too much about componentizing the application.