Close

On Address Allocation

A project log for Hardware-orientated mesh networks

Our attempts to create a mesh network, plug-'n'-play product.

connorwood71connorwood71 07/15/2014 at 14:462 Comments

One of the large problems with mesh nets, that has plagued experts for many years, is the allocation and management of IP addresses. A short summary of this issue follows.

For the allocation of IP addresses in a functioning network, 2 options exist:

  1. Static IP allocation through the network administrator
  2. Dynamic IP allocation using DHCP or DHCPv6

In a given mesh network, the above solutions carry serious flaws, given the nature of mesh nets themselves: static IPs are insufficient, given the nature of our work, due to the fact that it raises the barrier to entry. Detailed instructions could work around this problem, however users are typically not willing to go to these kinds of lengths. Furthermore, it also loses significant flexibility, in that setting up a new node requires knowledge of every existing node on the network - meaning that nodes cannot change second by second, in an environment such as, for example, a municipal network consisting, in part, of roaming mobile telephones.

The other option, running a DHCP server, introduces a single point of failure in the system - should, for any reason, the network become segregated into 2, or the node hosting the DHCP server fail, the network is left in a state wherein no new nodes can request an IP address, meaning that, for all intents and purposes, the network is no longer functional. There is currently no way of synchronising 2 DHCP servers for automatic failover, barring the current standard for data centers, of having one server with 70% of the addresses in the address pool, and another server with the remaining 30% to act as a backup.


Since, in a mesh environment, there is no way of knowing which nodes will be accessible from where at a given time, since nodes could fail and the network could segregate, an alternative, or extension, to DHCP must be available to allow the splitting, merging, and reallocation of active DHCP servers, address pools, and node addresses.

Discussions

PointyOintment wrote 07/15/2014 at 19:31 point
It might be useful to look into how Google Docs/Wave keeps edits in sync during collaboration. Maybe you could use a similar technique to keep DHCP servers in sync.

Alternatively, maybe a node joining the network could just pick an address at random, see if anybody else has it, and if so, pick a different one. I'd only recommend that for IPv6 though.

  Are you sure? yes | no

connorwood71 wrote 07/18/2014 at 20:52 point
Your second idea was something we discussed, but ultimately decided against - see our latest log for why. The first one we didn't think of though, and I will take a look into the Google Docs/Wave thing, but we do now have a working spec for a protocol to handle all this, so unless it's a lot better than what we have, we might not go with it, due to time constraints. I wish I'd have seen your comment earlier than I have, I might have been able to take this into account before committing to a spec. Thanks for the info though!

  Are you sure? yes | no