The Internet of Things is a buzzword that’s generating quite a bit of hype at the moment. I’m seeing it all over the place to describe all types of disparate things but mostly being used as a marketing term. I suspect that the majority of the people that use the term don’t fully understand its meaning or how it will be implemented/used. That’s why I was very pleasantly surprised when I picked up the book “Interconnecting Smart Objects with IP” by Adam Dunkels (author of the ContikiOS, uIP, lwIP, and general programming extraordinaire) and JP Vasseur (distinguished engineer at Cisco, co-chair of IETF’s ROLL working group, and one of the chairs for IPSO).
I don’t really know JP Vasseur, but I’ve been an admirer of Adam Dunkel’s work since I started in wireless sensor networks. In my mind, ContikiOS is one of the best operating systems/environments ever designed for wireless sensor networks, or what I like to call, "engineering hell". But that’s a different story.
Before I get into what I thought of the book, I think it might be appropriate to give a bit of background on why I’m writing this post. In my opinion, the internet is basically a set of standards that everyone agrees to abide by. That standardization is what allows manufacturers and users to adopt the technology with confidence, knowing that they won’t be the only ones or part of a minority of people using it. That also inspires confidence that time spent learning the technology and standards, how to use it, and developing applications for it won’t be wasted. I think this is the reason why the internet became so popular within the last however many years/decades.
So when I hear the Internet of Things being thrown around nonchalantly by press releases, marketing people, or just in general, I tend to wince a little bit. There’s a misunderstanding that anything that can connect to the internet, i.e. speaks TCP/IP and has a communications interface, forms the Internet of Things. The problem is that they’re missing the whole part about standardization which is why the Internet of Things doesn’t exist yet. There are still many areas that need to be standardized such as using UDP vs TCP, how security will be implemented (did you know that there is no standardized equivalent to SSL for embedded devices?), how device services will be discovered, how data will be exchanged, what types of device profiles will exist, how web services will be implemented, etc. Actually, all of this and more is being discussed and hammered out right now in the IETF working groups. Check out the 6LoWPAN , ROLL , and CoRE groups if you’re interested.
Without the standardization, then what you have are technology islands, archipelagos of data formats, protocols, and other silly things. It’s basically what you see in the wireless sensor network protocol space right now with Zigbee, 6LoWPAN, Z-Wave, Bluetooth Low Energy, Active RFID, ISA100, Wireless HART, and a host of other communications protocols. It was the same way back in the wired networking wars with Ethernet, Token Ring, FDDI, LocalTalk and a host of other communications protocols. The internet as we know it couldn’t exist until everyone standardized on ethernet, TCP/IP, RIP/OSPF, SSL, HTTP, HTML, and a few others that I’m leaving out. That basically takes you up the chain from communications medium, communications protocol, networking protocol, routing implementation, security, and application data exchange. From there, applications like web browsers started popping up and further standardization on data exchange such as formatting, display, and APIs occurred. That’s when things started to really take off and the technology islands turned into one big-ass continent we know as the internet. But today’s internet is mostly designed to be accessed via browsers or GUIs, usually with a person on at least one end, which narrows the application domain.
Now when you start getting into embedded devices accessing the internet and communicating with each other, things get more complicated. Unlike a browser which has a well known/understood profile, each device will support a different set of services, like turning on and off a light, sending a data stream from a sensor, or turning a servo 30.3 degrees. Those devices will need to know what other devices to talk to (service discovery). They'll need to exchange data in a common format, like specifying the sensor data is floating point, 32-bit integer, or an ASCII string. The data exchange will need to happen securely so that some other device can’t spoof the real one and mess up the data readings. And there needs to be some type of web service so that the device can be accessed or access another remote device. And this is just at the application layer.
Well, that was a bit of a wordy introduction to my review of Interconnecting Smart Objects with IP, but I wanted to make sure people knew why a book like this needs to exist. The Internet of Things isn’t as simple as slapping a TCP/IP stack on to an object. There is a lot of standardization that needs to occur before such a large transformation can happen on the Internet. All of these standardization processes are in progress or finished and can be found on the internet (ironic), mostly via IETF RFCs. However if you have ever read an RFC or a standards document, you’ll know that it’s as much fun as reading the fine print on your credit card agreement. What Adam and JP have done with their book is took all of those standards documents, boiled them down to their main points, and presented them in a very readable and interesting way with examples and illustrations. They also discuss competing technologies, such as Wi-Fi vs 802.15.4, binary XML vs JSON, REST vs SOAP, etc. And that’s just the first section of the book. That alone would have been reason enough for me to pick the book up.
However in the middle section of the book, they go into the actual technology implementation, and although it’s more technical, they give very concrete explanations of each of the technologies. They go in-depth from the communications media (802.11, 802.15.4, 802.3), networking protocol (IPv6 and 6LoWPAN), routing (RPL), application protocol (TCP/UDP), and then give a survey of other competing technologies (Zigbee, Z-Wave, Bluetooth, etc). Incidentally, I helped out on the Zigbee part of the book. Just thought you should know…uhhh…a very minor contribution…*sigh*
And finally, the last section of the book talks about how all of this fits into different application areas. They discuss the smart grid, industrial automation, home automation, building automation, health monitoring, and more.
Basically, this book is an impressive piece of work, and the first section alone is worth the price in time saved sifting through standards documents. This is probably the only book that can give a complete and concrete picture of what the real Internet of Things will be. There are very few people I know, quite possibly none, that can discuss this topic from the communications physical layer to the web services so I know that anyone interested in what the Internet of Things actually is will learn something from this book. I certainly did. But most important, it will allow anyone that mentions the term Internet of Things to actually know what they’re talking about.