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.