Session Layer Messaging Protocols in IoT
Prerequisite – Introduction to Internet of Things (IoT)
The Session Layer manages connection between two endpoints of a network by controlling data between sender and receiver where session layer protocols are responsible for actual transmission of data in IoT ecosystem. That’s why these Session Layer protocols are called as IoT Messaging Protocols or sometimes referred as IoT Data Protocols. Most of IoT applications use TCP and UDP for transport and these messaging protocols can operate over TCP or UDP.
There are different types of messaging protocols that are present by different standardization organizations and depending upon their implementations they are used. Below are some of popular IoT Messaging protocols used in IoT eco-system.
- Message Queue Telemetry Transport (MQTT) :
MQTT is most widely adopted M2M(Machine to Machine) messaging protocol which was introduced by IBM in 1999. It uses a Publisher-Subscriber mechanism to operate means Publishers are lightweight sensors that collect data and connect to a mediation layer i.e to a broker(or dealer) to send their data. Then subscribers are applications that collect required sensory data from broker. This mechanism minimizes payload. It is mainly used when a huge network of low power small devices or where IoT devices may have limited bandwidth and need to be monitored or managed via Internet.
- Advanced Message Queuing Protocol (AMQP) :
AMQP is an open standard session layer protocol useful for sending transnational messages that’s why mainly used in financial industry. It runs over TCP (Transmission Control Protocol) or UDP (User Datagram Protocol) which is nearly similar to that of MQTT. But only difference is that Broker(Dealer) contains Exchange and Queues as a result it is focused on not losing messages. The exchange receives messages from publishers and distributes them to respective queues. Different subscribers collect topic wise sensory data from respective topic queues.
- Constrained Application Protocol (CoAP) :
CoAP is a session layer protocol that uses RESTful architecture which is a standard interface between HTTP clients and servers. It uses UDP (User Datagram Protocol) protocol for lightweight implementation so it is based on two sublayers i.e messaging and request/response for interaction. This protocol is designed to address IoT systems based on HTTP protocols. So, CoAP utilizes all HTTP methods like GET, PUT, PUSH, DELETE for message transmission, and accessing resources. It is a specialized web transfer protocol which uses constrained nodes/devices on same constrained networks in Internet of Things.
- Secure Message Queue Telemetry Transport (SMQTT) :
SMQTT works as an extension to MQTT protocol. It is based on an encryption messaging mechanism that’s why it provides a secure messaging standard. In this protocol, subscriber sends encrypted messages to all nodes and nodes receive encrypted message and use message after decryption. The encryption and decryption activities are carried out by using master key.
This protocol follows four main stages i.e., Setup, Encryption, Publish, Decryption.
- In Setup, both publisher and subscriber register themselves near broker and get master keys.
- In the Encryption stage, broker encrypts published message.
- In the Published stage, broker gives encrypted data to subscribers.
- In the Decryption stage which is last stage, data /message is decrypted by subscriber using that master key.
- Data Distribution Service (DDS) :
DDS is another publish-subscribe protocol but it is different from MQTT which connects them to server but here DDS protocol is a Broker-less architecture that’s why it is a high speed and high-performance protocol than MQTT as it is not dependent upon any intermediary system. It is designed by the OMG (Object Management Group) for device to device communications. This protocol has two fundamental sublayers i.e., Data-Centric Publish-Subscribe (DCPS) and Data Local Reconstruction Layer (DLRL). The DCPS layer is responsible for message delivering to subscriber and DLRL layer is responsible for simple integration of DDS in application layer but it is optional.