The more I think about it, the more fascinating the possibilities of the Raspberry Pi become. It occupies a really interesting spot between traditional embedded controllers like Arduino, pics and the like at one end, and "proper" computers at the other. It has enough GPIO to do some of the things the embedded controllers can do, yet it has the memory, processing power and network connectivity of a (albeit low-end) much larger computer. And all at a price which makes it easy to consider buying more than one and using them each for separate purposes.
It is this opportunity that interests me today. I started this line of thinking when I encountered the Alternate Universe MUD, happily running on a Raspberry Pi with arguably more power than its original host. While simply replacing a larger, noisier, more power-hungry server with a Raspberry Pi is a step forward, the low cost and easy connectivity raise interesting possibilities of plugging several in and having them join a loose network of collaborating devices located all around the world.
Ideally such a network would be flexible and redundantly provisioned, so that no single node failing (or just not being available) should damage the whole system. It should be easy to join and take part, but at the same time secure against being co-opted by any one person or system - after all such a loose collection has a lot of the characteristics of a formidable "botnet"
The idea in my mind at the moment works roughly as folows:
- Somewhere in "the cloud" are a few well-known URLs. The servers sitting on these URLs don't have much data themselves, but function as an easily accessible "jumping on point" for the network. Each holds a rough cache of details about some of the nodes in the system.
- A new member of the network connects to one of these jumping on points, exchanges certificates to enable secure communication, and is then given details (IP address, port, status, protocol support and so on) of a selection of other peer nodes.
- The new node can now engage in communication with the other nodes it knows about, and other nodes can talk to it. This communication may also include revealing details of yet more nodes, or acting as a relay to pass messages between nodes who don't know enough to contact each other directly.
I'm sure this stuff is not new. There are plenty of peer-to-peer networks and protocols already in existence. What does seem significant is the possibilities offered by the low cost and commodity nature of Raspberry Pi devices. Getting a Pi, sticking some software on it, and connecting it to the internet costs less than many games or other software packages, yet can provide a fascinating and scalable networked system.