It’s simple to use, simple to get your hands on and simple to share but P2P doesn’t appear that simple when you want to implement it. Don’t get me wrong, the concept is not totally alien to me: Sure I set up a client and it makes itself known to others, possibly advertising a hash bucket of wares that it possesses. Other clients can search this mesh of public hash buckets for things that they want and retrieve a link to download. That’s it in a nutshell? Sadly not, the real deal embodies far more – I like this description on Wikipedia. Amongst the most challenging of tasks is how to write a sophisticated and scalable overlay network for the P2P architecture. It’s non-trivial to say the least. I remember a colleague of mine sending me a link many years ago to an article on why Gnutella Can’t Scale. The calculations presented in this article are all simple math and some of the figures are quite frankly astounding. The article openly admits that many assumptions are made throughout but the case presented is no less tarnished for them. P2P networks truly are a bandwidth killer if not structured and controlled in some thoughtful fashion.