The Internet of things (IOT) will utilize the existing networking infrastructure, technologies and protocols currently used in homes/offices and on the Internet, and will introduce many more.
The purpose of this tutorial is to give you a quick overview of what networking and application protocols are likely to be used to build the IOT.
Note: You should have a understanding of basic Networking and Networking technologies before you continue.
IOT Networking
The IOT will run over the existing TCP/IP network.
The existing TCP/IP networking model uses a 4 layer model with protocols def ined at each level. See understanding the TCP/IP 4 layer model.
The diagram below shows a side by side comparison of the Internet protocols currently in use and those that are likely to be used for the IOT.
Diagram Notes:
1. I have used larger font sizes to depict the protocol popularity. For example IPv4 is larger on the left as it is far more popular on the current Internet. However on the right it is smaller as IPv6 is expected to be more popular in the IOT.
2. Not all protocols are shown.
3. The areas that are showing the greatest activity are the datalink (levels 1and 2) and application layer (level 4).
4. The network and transport layers are likely to remain unaltered.
Data Link Level Protocols
At this layer you will have a requirement to connect devices that are nearby e.g. on Local networks, and that are more distant e.g. Metropolitan and wide area networks.
Current computer networks use Ethernet and Wi-Fi at this level for home/office networking (LANs) and 3G/4G for Mobile connections (WANs).
However many IOT devices, like sensors, will be low powered (battery only).
Ethernet isn’t suitable for these applications but low powered W-fi and low powered Bluetooth are.
Although existing wireless technologies (Wi-Fi, Bluetooth,3G/4G) will be used to connect these devices, other newer wireless technology, especially designed for IOT applications, will also need to be considered, and will likely grow in importance.
Among these are:
- BLE– Blue tooth Low Energy
- LoRaWAN –
- SigFox
- LTE-M
These are covered in more detail in An overview of IOT wireless technologies
Networking Level or Layer
The protocol that is set to dominate at the networking level in the long term is IPv6.
It is very unlikely that IPv4 will be used, but it may play a role in the initial stages.
For example, most Home IOT devices e.g smart lights currently use IPv4.
Transport Level or Layer
At the transport level TCP has dominated the Internet and the web. It is used by HTTP and many other popular Internet protocols (SMTP, POP3, IMAP4 etc).
MQTT which I expect to be one of the dominant messaging application protocols currently using TCP and is already deployed.
However because of the requirement for low protocol overhead I would expect UDP to feature much more in the future IOTs.
MQTT-SN –which runs over UDP is likely to see more widespread use in the future.
See TCP vs UDP for more details
Application Level and Messaging Protocols
Important Characteristics for IOT Protocols
- Speed – Amount of data that can be transferred/second
- Latency – amount of time a message takes to be transferred
- Power consumption
- Security
- Availability of software stacks.
There are currently two main protocols being actively used at this level.
They are HTTP and MQTT.
HTTP is probably the best known protocol at this level as it it the protocol that powers the Web (WWW).
HTTP is also going to be important to the Internet of things as it is used for REST APIs which are becoming the main mechanism for Web Applications and services to communicate.
However because of the high protocol overhead HTTP is not likely to be a major IOT protocol, but will still enjoy widespread usage on the Internet.
MQTT (Message Queuing Telemetry Transport) has emerged as the main IOT messaging protocol because it is lightweight and easy to use. See an Introduction to MQTT for beginners
HTTP vs MQTT for IOT
MQTT is fast becoming the de-facto standard for IOT applications.
This is because it is very lightweight and fast when compared to http and is a one to may protocol as opposed to a 1 to 1 protocol (http).
There are many current web applications that would have used MQTT as opposed to http if had been available when they were being developed.
A good example is when information needs to be sent to many receiving clients like in train/bus/aircraft arrivals and departures.
In this scenario a 1 to 1 protocol like http has a large overhead and places lots of load on the web servers.
Scaling these web server can be difficult.
With MQTT the clients only connect to a broker and it is easy to add additional brokers to balance the load.
I did tutorial and video demonstration this – See Republish HTML Data Over MQTT (Flight Arrivals Example)
Other references:See MQTT vs HTTP for IOT.
Other IOT Messaging Protocols
HTTP wasn’t designed for IOT applications but as mentioned it will enjoy widespread use for a time due to its widespread use in APIs.
Almost all IOT platforms support HTTP as well as MQTT.
However there are other protocols which are worth considering and are listed below along with links to their wiki page.
Protocols
- MQTT– (Message Queuing Telemetry Transport) Uses TCP/IP. Publish subscribe model (P/S)requires a message broker (switch).
- AMQP -( Advanced Message Queuing Protocol) Uses TCP/IP. Publish subscribe model and Point to Point .
- COAP-(Constrained Application Protocol) -Uses UDP designed specifically for IOT uses request response model like HTTP. RFC 7252
- DDS– (Data Distribution Service) –
This article covers the main protocols and their main uses.
The conclusion of this articles seems to be that the IOT will consist of a collection of protocols depending on their intended use.
However if you look back to the early days of the Internet HTTP was just one of many protocols, but it has become the dominant one.
Even though HTTP wasn’t designed for file transfer it is used for file transfer. It wasn’t designed for email either, but it is used for email.
I expect IOT messaging protocols will follow a similar pattern with most of the services using 1 dominant protocol.
Below are the Google trend charts showing how the popularity of MQTT, COAP and AMQP has changed over the last few years.
Google Trends Overview
Protocol Support by Platform
- Microsooft Azure -MQTT,AMQP,HTTP and HTTPS
- AWS -MQTT,HTTPS,MQTT over websockets
- IBM Bluemix – MQTT,HTTPS,MQTT
- Thingwrox -MQTT,HTTPS,MQTT,AMQP
Summary
The areas that are showing the greatest activity are the datalink (levels 1and 2) and application layer (level 4).
The network and transport layers are likely to remain unaltered.
At the Application level messaging protocols will be used for Interconnecting IOT components.
Although we are still in the early stages of IOT adoption it is likely that the Industry will consolidate around 1 or possibly 2 messaging protocols.
My Opinion
Over the last few years MQTT has emerged as the most popular, and is the one I’m currently focusing on on this site.
HTTP will also continue to be used as it is already well embedded in current IOT platforms.
Background Articles
- What’s the Right Messaging Standard for the IoT?
- Choice of IOT Messageing protocols(MQTT,COAP,AMQP,HTTP)
Related Tutorials
- Beginners Guide to The IOT
- IOT Wireless Networking Notes
- Introduction to MQTT
- HTTP Basics For Beginners
Great information on IOT protocols. I always refer and recommend this site to everyone when it is related to networking concepts. looking forward to more articles like this. Cheers to the author.
Hi Steve, Do you have any experience in using AMQP over 4G/3G? I have not been able to get any communications between a Raspberry Pi and a cloud base RabbitMQ instance using AMQP, whereas if I use MQTT it works perfectly. I have done hundreds of tests with various devices using WiFi, Hard-wired Ethernet and 4G/3G. My application, when using AMQP works over WiFi, and hard-wired ethernet but not over 4G/3G. When using MQTT, my application works over all three without problems. I have not found a single instance on the web of anyone using AMQP over 4G/3G!
Any input greatly appreciated please 🙂
Regards Simon
Simon
Sorry but I have never used AMQP.
Rgds
Steve