M2M & IoT Protocols: An Introduction
M2M and IoT are taking the world by storm. The things around us are becoming smarter, intelligent, seamlessly connected and interacting with each other. However, the real question is what language or protocol will all these devices use to communicate with the internet.
During the time of internet evolution, there was a strong desire among all the stake holders that all the computers connected to the Internet should be talking in the same language/ same protocol. TCP, IP, UDP etc. were some of the results of a quest around that search. However, M2M/ IoT world still lacks a widely accepted and standard protocol, apart from a few protocols that are being currently used.
The IoT Communication Challenges
In Machine to Machine and IoT, the interconnected devices are usually of short range low power wireless devices with their own predefined set of operations or purpose. Because of this, the protocols that are currently used on the internet cannot be directly used in these devices. This brought in the need for creating a new set of protocols which can be catered to the requirements of the M2M/ IoT world. Some of the most widely used protocols in M2M/ IoT are MQTT, CoAP, OMA LWM2M etc. These protocols specifically target low power devices which have to conserve power so that they can operate for a long time. Compared to the internet protocols where the pay load is heavy along with big headers and footers, in M2M/ IoT protocols the payload is very small. So if internet protocols are being used, the work will be more to reduce the size of the headers and footers for aiding fast communication between the devices and the servers.
The three major IoT protocols
Let us have a look into the three major IoT protocols here.
MQTT (Message Queue Telemetry Port)
MQ Telemetry Transport (MQTT) an open source publish/subscribe messaging transport protocol is designed for power constrained devices and low-bandwidth, high-latency networks. . Despite the word Queue is in the name, MQTT is not a queue based protocol. It is lightweight in nature and is ideal for connecting small devices to constrained networks. MQTT with bandwidth efficiency, data agnostic nature, and continuous session awareness, helps in minimizing the resource requirements for IoT devices. It ensures reliability and assurance of delivery to a larger extent. The protocol is based on topics and hence the receivers of the messages can make sense of the data without even knowing who the sender is. This kind of behavior encourages usage of high-latency and low bandwidth networks which seems to be the norm of the M2M and IoT communication channels. The ports assigned for MQTT are 1883 without SSL and 8883 for MQTT with SSL. Not designed for device-to-device transfer or for “multicasting” data to many receivers, MQTT is ideal for large networks of small devices that need to be monitored or controlled from a back-end server on the Internet.
CoAP (Constrained Application Protocol)
CoAP or the Constrained Application Protocol is a specialized web transfer protocol that is suitable for constrained nodes and constrained networks in Internet of Things. This protocol is described in the RFC 7252 and is taken forward by IETF Constrained RESTful Environments (CoRE) working group. It is designed for M2M applications such as smart energy and building automation. Based on REST model like HTTP, in CoAP also the servers make resources available under a URL, and clients can access these resources using methods such as GET, PUT, POST, and DELETE. The close resemblance of CoAP with HTTP makes it very user-friendly and also makes it easier for making them connected easily using application-agnostic cross-protocol proxies. Like HTTP, it can also carry different types of payloads and is able to integrate with XML, JSON, CBOR, or any data format of your choice. The strong security capabilities of CoAP is another factor which makes it a desired choice among the available IoT protocols. CoAP makes use of Datagram Transport Layer Security (DTLS), with the default level of encryption equivalent to a 3,072-bit RSA key. Designed to use minimal resources, both on the device and on the network it works on microcontrollers with as low as 10 KiB of RAM and 100 KiB of code space (RFC 7228).
OMA LWM2M (Open Mobile Alliance Light Weight M2M)
LWM2M is a light weight protocol developed by Open Mobile Alliance and is specifically for device and service management. The device management includes device statistics, firmware update, access controls etc. It helps in implementing an interface between M2M device and M2M Server and also provides a choice for the M2M Service Provider to deploy an M2M system to provide service to the M2M user. LWM2M helps to implement an interface between M2M device and M2M Server and also provides a choice for the M2M Service Provider to deploy an M2M system to offer service to the M2M user. Designed with the performance constraints of M2M devices in mind to enable low-cost devices and build on CoAP, the state of the art architectural design, extensibility, efficient security features based on DTLS Makes it a preferred option among the IoT protocols.