decentralised centers

Tue 14 January 2014

[caption id="" align="alignright" width="350"]English: Archery Robin-Hood-Shot Deutsch: Boge... Multiple centers (Photo credit: Wikipedia)[/caption]

The Internet should resist to nuclear attacks. I don't know if this is urban legend or real specification. The result is:

  • any service can (and should) be decentralised
  • infrastructure is quite simple, end user devices have to be smart

All that can be seen from historical RFC. All services that must be centralised (e.g. DNS) are distributed. The usual mecanisms to decentralize a service are:

  • delegation (e.g. DNS)
  • center mulitiplication (e.g. mail)
  • P2P protocols (e.g. Kadmelia)

This mecanisms allow the services to be able to run even if any part of the Internet is shut down. Even the DNS whose single point of failure is the root server cannot be shut down easily (thanks to anycast mecanisms).

Another internet specificity is the genericity of internet protocol. It is as generic as a box sent by mail. you can. The internet's mission is to take some IP packet in a place and deliver it elsewhere. This way, if you want to transport something new, you can put what you want in this box, just telling your correspodant and no one else. No need to update the network even if many new services are run on it. Quite useful for reactivity. It also means anyone can create a software generating a receiving IP packets. To ease that stuff, the IETF  invented protocols allowing end user's device to add some basic services (integrity, order, errors detection, and other guarantees) so that you need not to reinvent the wheel.

That's why I consider decentralized alternatives to centered services. Note that there are mainly three way to get a decentralized service:

  • peer to peer architecture: no distinction between client and server, each peer send and receive requests
  • delegation: the resources are centralized and distributed in a tree, each sub-tree's operation can be delegate by the parent node
  • multiple centers: anyone can run a server, all servers have to communicate (directly or not) and each end user connect to the server of its choice

As this is just a reminder for me, I won't go in detail for each solution. I must try them before. Note that this list is not exhaustive (this is not possible as many new services are created every day)

service centralized alternatives decentralized alternatives
microblogging twitter twister
social networking facebook, linkedin, Xing diaspora
chat and VoIP skype SIP, p2pSIP, XMPP, IRC
file sharing dropbox, FTP DHT-based file sharing (e.g. bittorent)
packages retrieval direct download (FTP, HTTP) apt-p2p
web http freenet, gnunet
financial transaction paypal bitcoin, litecoin
multiplayer gaming steam mediator
search engine google, bing, yahoo yacy, seeks
code versionning/distribution subversion, CVS GIT, bazaar


  • P2P architectures are usually based on DHT
  • P2P architecture used a centralised bootstrap mecanism (e.g. torrent tracker, list of know avalable hosts,...). This is only used for bootstrapping. Without this mecanism, the network still work, but no new peer can join it.
  • the multiple servers architecture tend to be centralised as many users trust a small number of actors to run servers (e.g. number of gmail and yahoo mail account vs number of people running its own mail server)
  • some P2P architecture tend to be centralised according more importance to one node (e.g. github)
  • I already spoke about search engines

(Non-)related articles

Related articles (or not):

Category: reflections Tagged: Alternative Decentralization Internet Protocol Peer-to-peer Protocols Request for Comments tools reflections