Wednesday, August 22, 2012

Organize Among Yourselves!

What's in a name? Well, if we're building an Internet of Things, naming becomes a challenge. True, there are existing ways to identify end point devices, such as MAC IDs (Media Access Control) and IPv6 addresses. I'm very familiar with these from my work with wireless mesh networking, which is why I can state with absolute confidence that they won't work for the majority of devices in the Internet of Things.

It comes down to the matters of complexity and lack of centralized control. The simplest of the billions of devices in the IoT can't be burdened with the memory demands, power requirements, and management overhead associated with a heavyweight protocol stack such as IPv6. And since these devices will come from millions of different suppliers of varying degrees of networking know-how, managing a central repository of the equivalent of MAC IDs probably won't work, either. Not to mention that connections to IoT end devices will be lossy, intermittent, and uncertain.

At this scale, only self-organization works, just as it does in nature. In my mind there are two key components of a massively scalable naming scheme: 1) non-guarantee of absolute uniqueness; and 2) derivation from environment.

I can hear the wailing now, "Non-unique addresses, is he crazy?" No, just observant. How many "John Smith"s are there in the world? Probably millions. Yet if we meet someone named John Smith, we can place him in the context of the environment: where he lives and works, who he knows, to whom he is related, etc. John Smith is not a unique name, yet we can keep things straight when communicating with the particular John Smith we are interested in.

The same can be true for the billions of devices of the three main types I identified earlier: End Devices, Propagator Nodes, and Integrator Functions. An individual device may have a relatively simple "base" address (more on that in a minute), but there may be additional context applied to the headers of data "chirps" destined to-and-from that device. These might include the addresses of the propagator node(s) to which it was first (or is now) connected. Just as with our friend John Smith, we'll be able to distinguish among similar device "base" addresses by the company they keep, where they live, and what they do.

What about those base addresses? In my mind, these base addresses for individual end devices come from multiple sources: pre-set factory identities like a model number; one or more environmental inputs such as the time of day of first operation, GPS location, supplied voltage, temperature, etc.; and perhaps the identity of any other devices or propagator nodes that the device detects. All of these inputs are then "hashed" with a simple algorithm into an address that may not be unique in the world, but is very likely to be unique from any other device in the neighborhood. "Neighborhood" here might be geographical, purpose-based, or defined by the integrator functions interested in a particular set of end devices.

Again, as with our "John Smith", even though these end device addresses may not be universally unique, they will be distinctive enough to be recognized individually in context.

The simplest propagator nodes might follow the same sorts of naming conventions. Why not, if the algorithm exists? Or one might choose traditional MAC ID and IPv6 addresses for these devices, since at least some of their communication will be via more traditional protocols and they will already have more processing power and memory than the end devices. And the same is probably true for integrator functions, again because they will be using existing protocols and will have the resources to manage the protocol stacks.

Defining a new naming scheme for the Internet of Things may seem redundant, but that's only if one is looking at the world from a network-centric perspective. When we turn the telescope around to view the world from the perspective of the end device, we can see that the billions of simple, low power, intermittently connected end points have completely different needs than does the traditional Internet. In the IoT, numbers rule – and the numbers favor the end points by multiple orders of magnitude. How those end points communicate will be the subject of the next post.