Lightweight MQTT Protocol

The most adopted messaging protocol for IoT

What is MQTT?

A simple, light-weight as well as open source message queuing protocol called Message Queuing Telemetry Transport (MQTT) was developed for Internet of Things (IoT) data sharing between several devices with limited bandwidth. To run, it relies on TCP/IP. Clients of this publish and subscribe system can receive and transmit messages. The use of real time connections speeds up the data transfer.

MQTT Specifications

The MQTT Protocol is an OASIS standard. All specifications are overseen by the OASIS Technical Committee.

How it works?

MQTT Architecture

It operates as a specific kind of client-server message transmission protocol. It makes use of TCP/IP. The publish-subscribe functionality of  MQTT enables the transfer of data between various devices. Both the client and the broker are subjects of this protocol. The server is the broker, while the connected devices are the clients. It is a lightweight protocol because of its minimal code footprint and lack of a direct connection between the clients. It’s known as ‘publish’ when the customer wishes to publish data to a broker. The broker uses the term ‘subscribe’ to describe the process of sending data to a client.

Clients don’t transfer data to other clients directly; instead, they send messages on a topic. A receiver client subscribes to a topic to get the publisher’s messages. The broker handles the subscription of subjects. The publisher can send a “Last Will Message” if it is enabled and sends a cached message containing the publishers’ instructions to the subscribing clients in the event of network problems or other factors that prevent it from sending messages. However, if there is a problem with the connection between the broker and the subscriber, the broker will store messages and send them to the subscriber once the connection is restored.

MQTT clients are the publishers who send the messages and the subscribers who receive them.

Why you need MQTT?

It is suitable for machine to machine communication as it decreases the need for network bandwidth, accommodates unstable networks, and requires less development effort. The protocol serves to exchange data between controlled devices and server applications. A system that uses the Internet of Things (IoT) is a collection of interconnected objects that can communicate with one another. For this concept, MQTT works well. Some justifications are listed below.

➤ It is possible for device to cloud communication to go both ways, and this capability makes it simple to broadcast messages to large groups of objects and facilitates the efficient transfer of data.

➤ Since it uses the ISO standard for messages, it can connect to a huge number of IoT devices.

➤ As reliability is important, it has three levels of Quality of Service (QoS) settings that can be employed to ensure delivery.

➤ Clients are portable, use the least amount of hardware resources, and can be set up on tiny microcomputers.

➤ Even if the client disconnects from the network, it supports persistent sessions to guarantee that the client is rejoined as quickly as feasible.

MQTT Components

MQTT Clients and MQTT Broker/Server are the two main components. An ongoing MQTT connection connects the clients and the broker. The broker serves as an intermediary for the clients because there is no direct connection between them. Let’s examine the two important elements described above in more detail.

Broker - Client

MQTT Clients

 

An MQTT client is a device that connects to the broker across a network using a TCP or IP stack that supports this protocol to speak. Clients that runs an MQTT library have the option of being subscribers or publishers. The labels publisher and subscriber show whether the client is currently sending or receiving messages. It is possible to incorporate the publish and subscribe features into one MQTT client. In the MQ Telemetry Transport (MQTT) infrastructure, every device or edge application needs a client in order to read and transmit edge data obtained from sensors.

When a connection is made with the server, the client is given the option to subscribe to subjects of interest while also having the option to post messages to other clients. Broker acts as a connection point between clients because they are unable to communicate directly with one another. Each client functions both as a transmitter and a receiver. This protocol has a very simple and efficient client implementation.

MQTT Broker

 

The core of every publish/subscribe protocol is the MQTT Broker, which is the client’s equivalent. It serves as a data warehouse for all messages exchanged via this protocol between clients and devices. Receiving messages, filtering them, figuring out who has subscribed to each message, and forwarding the message to those clients who have subscribed are all tasks that fall under the broker’s authority. To subscribe to the topics that the broker requires messages for, clients need to establish a connection. As soon as a sensor-related event occurs, edge clients are able to broadcast data.

All clients with persistent sessions have access to the broker’s session data. Broker’s session data contains subscription and missed message information. Another important duty of the broker is the authentication and authorisation of the clients. The broker always keeps track of subscriptions and recently published messages. Based on the QoS levels, retention definition, and clean sessions specified by the customers, the broker delivers data. The MQTT 5 Specification specifies how the broker should handle shared subscriptions and client disconnections.

In a nutshell, broker acts as the hub through which all messages must travel.

MQTT Devices

As there is no distinction between apps and devices in terms of the broker, the term “Things” applies to both in a MQTT network. Both the devices and apps allow publishing on and subscribing to the subjects that the broker controls. Today, there are many different kinds of MQTT-capable devices. Current mission-critical commercial, industrial, and smart home applications use a variety of devices, from straightforward Arduino-based models to more sophisticated ones. There are many smart homes and businesses using connected gadgets nowadays.

IoT Applications Development

Using this, there are two ways to create an IoT application.

Application Over MQTT Broker

 

The collection of data from multiple sources accounts for 90% of today’s application requirements. As the data gets collected, it gets transferred to the central broker. As a result, it’s preferable to design the application just behind the Broker, where we’ll acquire the most meta data about the data. We reduce the flow of data from the broker to the application client by building the application over the MQTT broker. The Broker got transformed into an IoT Application Framework that performed the same process. Currently building IoT products and applications can take place over MQTT broker. Broker that supports MQTT version 3.1.1 & version 5.0 and may be easily extended to create a complete application.

Application behind MQTT Client

There will be a master client in this approach of IoT Application development that subscribes to all of the subjects either one by one or using the # subscription. The subscribed clients will receive all data sent to the broker. The client will have a framework in place to store data, process it, analyse it, and offer it to the client as needed. However, if the number of real time data providers grows, data flow to this client will increase. To avoid data overloading, use version 5.0 shared subscription.

IoT Edge Development

Installation of MQTT clients and brokers is possible on IoT gateways and specialised devices. To publish messages to a central broker, deploy a MQTT client on the device edge. By deploying a MQTT broker to the device’s edge, the device can perform more autonomous data processing and coordination among its sensors. A broker, for example, maybe deployed in an auto-mobile to coordinate messaging between the various components. The processing power of edge devices is often insufficient to facilitate clustering. As a result, deploying a single instance of the MQTT broker takes place.

MQTT Gateway

MQTT Gateway

In general, it is possible to consider the MQTT gateway as an intermediary between any IoT platform and sensors. It operates by converting data from these sensors or smart devices into MQTT messages. It collects messages, gets data from edge sensors, turns it to messages, and sends it to IoT apps or the MQTT platform. Between the sensors and the server, the gateway serves as a middle ware broker. This gateway includes a feature that detects all available sensors on the network that surrounds it. Central IoT platform gives permission to the discovered sensors and device to connect with one another and manages them.The self-advertising of sensors and devices helps to find the client’s gateway. Consideration of gateway as an IoT edge device happens in this framework.

How is MQTT superior compared to all other IoT Protocols?

MQTT vs HTTP :

The Hyper Text Transfer Protocol (HTTP) is a web protocol which frequently works in conjunction with HTML to communicate with web apps. It is an open standard protocol.

MQTT is data-centric, whereas HTTP is document-centric. It uses more memory and power than MQTT and other lightweight protocols. MQTT offers three levels of Quality of Service whereas HTTP only relies on TCP as a guarantee of message delivery. HTTP lacks other services or Quality of Service. Metrics on 3G networks show that MQTT’s performance is 93 times quicker than HTTP’s.

The MQTT protocol has choices for Last Will & Testament and Retained messages. But neither of these capabilities are accessible with the HTTP standard. When compared to MQTT requirements, HTTP specifications are significantly lengthier. Comparing the MQTT protocol to HTTP, MQTT is more simpler to use. Although HTTP is valuable and extensible, MQTT is best suited for Internet of Things development.

When compared to MQTT, HTTP has a higher level of complexity. In contrast to MQTT, HTTP does not disclose device connection status. The MQTT protocol encrypts data prior to transmission; the HTTP protocol does not.

MQTT vs CoAP :

The IETF developed the binary Constrained Application Protocol (CoAP) as an open standard protocol. CoAP is widely accessible. It makes it possible to communicate via the publish/subscribe and request/response methods. In contrast to MQTT, which provides a Quality of Service, CoAP uses UDP, which has no guarantee of delivery.

CoAP is generally a one-to-one protocol that connects server and client to convey data. MQTT, on the other hand, uses a central broker to route messages between several clients. CoAP is less developed and is less stable than MQTT. In comparison to CoAP, MQTT has a greater packet size. CoAP only permits 4 message kinds, but MQTT supports 16 different message types. There are three levels of application reliability for MQTT whereas, CoAP has only 2 levels. CoAP lacks persistence support, but MQTT offers.

MQTT vs AMQP :

The Advanced Message Queuing Protocol (AMQP) is an open messaging and standard protocol for financial systems. It is binary TCP-based and claims to support both the publish/subscribe and request/response patterns.

MQTT offers three levels of QoS, whereas AMQP only provides two. Additionally, AMQP does not have the “last will and testament” capability that MQTT does. It guarantees that the client will receive a message in the event of a disconnect. The AMQP protocol does not reveal the connection status, which is still known in the MQTT protocol.

AMQP is a general-purpose message queuing protocol that is more complex than MQTT. MQTT has a higher degree of scalability than AMQP. MQTT is easier to set up than AMQP since it is a shorter, simpler protocol. When compared to AMQP, MQTT has a quicker response time.

MQTT vs XMPP :

Extensible Messaging and Presence Protocol (XMPP) is an instant communication protocol. XMPP provides a publish/subscribe technique for data sharing, like the MQTT protocol. All communication formats are explicitly defined by XMPP. MQTT offers three levels of QoS to ensure reliable message transport while XMPP lacks it. MQTT uses tiny, simple-to-encode and decode messages. Whereas XMPP uses massive, complex messages that relies on Extensible Markup Language (XML).

MQTT vs DDS :

Data Distribution Service (DDS) is broker free protocol for machine-to-machine communication. It has the capacity to ease data interchange using publish/subscribe methodologies. Unlike MQTT, DDS is not compatible with embedded systems. It is because it is a heavyweight protocol. DDS uses twice as much bandwidth as the MQ Telemetry Transport protocol does. QoS features are only used in stringent DDS environments.  

All of these factors combine to make MQTT a good choice for your IoT device.

Common Questions on MQTT

Why MQTT is the leading message protocol for IIoT?
It is a machine to machine (M2M) data transfer protocol. The extremely lightweight overhead, publish/subscribe model, bidirectional capabilities and the tcp based connected communication are uniquely suited to meet the demands of industrial control systems. Hence it is the leading message protocol for IIoT.
Why is MQTT used in IoT?
It initially referred as “MQ Telemetry Transport” is a simple, lightweight publish / subscribe messaging protocol, designed for constrained devices with low-bandwidth. So it is perfect for internet of things applications.
Name some practical uses of this protocol?
  • Monitoring production in manufacturing Industry.
  • Automated Metering in Energy Industries.
  • Location awareness and safety.
Is MQTT UDP or TCP ?
MQTT is an application layer protocol built on top of the TCP protocol for data transmission. A variant, MQTT-Sn designed exclusively for edge sensor networks is over UDP.
What are the three levels of QoS?
MQTT QoS comprise of three levels which got classified as per increasing order of overhead.

QoS 0 – At most once

QoS 1 – At least once

QoS 2 – Exactly once

To know more about QoS, navigate to MQTT QoS article.

How MQTT is better than other Protocols ?
MQTT is easy of use and it  is essential when response time, throughput, lower battery and bandwidth usage are on the first place for future solutions. Though HTTP is worthy and extendable, It is more suitable in case of IoT development.
What is the most common MQTT port?
1883 is the default port.
Do you need a broker to use MQTT?
Yes, Of course.
Is it possible to publish the same topic from several clients?
Yes. Multiple clients subscribe to the same topic in message queuing telemetry protocol.
Can another person determine the identity of the client who sent a message?
No, unless the client includes it in the topic or payload.
What happens to messages sent to topics to which no one has subscribed?
The broker will discard the messages.
Can I subscribe to a topic in which no one is publishing?
Absolutely yes.
Do messages get stored on the broker?
Yes, but only for a brief duration. After sending it to all the subscribers, they got discarded. However, in retained messages, when you publish a message, the broker can save the most recently published message. When new subscribers subscribe to that topic, this will be the first message they see. MQTT only retains one message.
How do I find out the published topics?
You won’t be able to do this easily because the broker doesn’t seem to keep a list of published topics because they aren’t permanent.

Key Features

MQTT QoS level

Quality of Service Levels

Understanding each level of QoS
MQTT LAST WILL

Last WILL & Testament

Effective use of Last WILL messages
Broker - Client

MQTT Topics

Term to address that allows clients to share information.
Persistence Session and Message Queuing

Persistent Sessions & Message Queuing

Representing an ongoing connection between a client and a Broker
MQTT Retained Messages

Retained Messages

Storing the “Last Good Message” on a topic
minimize-message-flow

Keep Alive & Client Take Over

Checking the status of the TCP/IP connection
MQTT over websockets

MQTT over Websockets

Allows you to receive data directly into a web browser