Abstract
Abstract
Abstract
As the number of Internet of Things (IoT) devices proliferates, the magnitude and velocity of data
continues to increase rapidly. IoT systems rely primarily on using messaging protocols for exchanging IoT
data and there exists several protocols or frameworks that support distinct types of messaging patterns.
Given that IoT devices typically have limited computational resources and processing power, choosing a
lightweight, reliable, scalable, interoperable, extensible and secure messaging protocol becomes a very
challenging task. As a result, it is not uncommon that IoT systems may employ multiple messaging
protocols for supporting device heterogeneity and different message exchange patterns. In addition,
basic similarities among existing several messaging protocols or frameworks that exist today for
exchanging IoT data within IoT systems suggest the potential of interoperability. Given that IoT systems
help facilitate the interconnectivity among distributed, heterogeneous entities, interoperability among
existing messaging protocols will play an increasingly important role in simplifying the development and
deployment of IoT systems. In this paper, we present a comprehensive review of the existing messaging
protocols that can be used in deploying IoT systems. Throughout this paper, we highlight the protocols'
distinctive approaches and applicability of using them across various IoT environments. In addition, we
highlight challenges, strengths and weaknesses of these messaging protocols in the context of IoT.
We present a Communication-Centric IoT Reference Model (CIoT). Although there exists a significant
number of initiatives or standards that attempt to solve IoT challenges across different domains, they
vary considerably in terms of the following factors: (a) architecture, (b) communication, (c) security and
privacy, (d) interoperability, (e) integration, (f) device types and sensor technology, (g) deployment
models (h) services’ provisioning and (i) application and device management. In this paper, we provide a
comprehensive study that investigates the use of existing messaging protocols for IoT application and
identify the challenges associated with their usage across various IoT deployment strategies (e.g. edge-
or fog- versus cloud-based).
SECTION I.
Introduction
Advances in networking technology have profoundly contributed to how IoT devices produce, exchange
and perceive data. This is becoming more evident as the magnitude and rate at which data is generated
by IoT devices is rapidly increasing. This has also contributed to the deployment of a wide array of
messaging protocols that enabled IoT devices to exchange messages more efficiently. Application layer
protocols are considered as the underlying layers used by applications in defining the structure of
message exchanges and how they can be transmitted. In this paper, we primarily focus on the messaging
protocols at the application layer of the Open System Interconnection (OSI) model [8].
There are a number of communication or middleware protocols that are commonly used in the
deployment of IoT applications including HyperText Transfer Protocol (HTTP), Message Queuing
Telemetry Transport (MQTT), Advanced Message Queuing Protocol (AMQP), Constrained Application
Protocol (CoAP), Extensible Messaging and Presence Protocol (XMPP), and Data Distribution Service
(DDS), among others. Such protocols support to some extent similar features in terms of connectivity,
however, they vary in the degree to which these features are offered. Given that IoT systems primarily
depend on IoT devices for data collection and message exchanges for the overall functioning of the
system, the choice of which communication or messaging protocol to use for device interconnectivity
becomes a very time consuming and challenging task. Furthermore, when choosing a suitable messaging
protocol, it is imperative to consider the hardware characteristics of IoT devices and type of data link
layer protocols employed.
In addition, IoT devices can vary significantly in terms of the bandwidth they support. That is, IoT devices
do not use a universal radio technology and therefore the physical data rate they support varies
considerably depending on the size and hardware components used to build these devices. For example,
low-rate wireless personal area networks (LR-WPANs) leverage the IEEE 802.15.4 physical layer that
supports data rates up to 250 Kbps with packet length of approximately 127 bytes. Other variations also
exist at other layers of the OSI model such as HTTP.
A common request header size in HTTP, which includes basic attributes such as user-agent, is
approximately 700–800 bytes. However, an uncompressed request header may vary in size ranging from
200 bytes to more than 2KB. Moreover, using application layer protocols that are capable of capturing
data much faster than actual physical data rates often leads to high latency. Therefore, it would be
desirable when developing IoT applications to consider messaging protocols that can accommodate or
support physical data rates at the data link layer.
IoT devices producing data at a high velocity often require lightweight communication protocols. For
example, a small battery-supported IoT temperature device programmed to send localized temperature
readings at a fixed frequency (e.g. every 10 seconds) to an IoT hub (e.g. Microsoft Azure IoT Hub) may
not have sufficient power by the time it transmits a day-long temperature readings using HTTP. It would
be desirable in this case to alternatively use a lightweight messaging protocol such as Message Queuing
Telemetry Transport (MQTT) in which the smallest packet size is 2 bytes (compared to 200 bytes in HTTP
in the uncompressed header size scenario). MQTT is a Machine-to-Machine (M2M)/ Internet of Things
(IoT) connectivity protocol designed as an asynchronous lightweight publish/subscribe messaging
transport protocol [1].
Performance of IoT devices and applications can be significantly influenced by the choice of messaging
protocol used. By employing a suitable messaging protocol helps reduce network traffic and latency and
thus increases an IoT application’s reliability [8]. However, there exists no universal protocol that can be
used across heterogeneous IoT environments. To this extent, choosing an appropriate messaging
protocol depends on a number of factors including IoT application’s business requirements, software
capabilities, device or hardware capabilities, and average size of data exchanges, among many others.
Furthermore, in deploying IoT devices and developing an IoT application, it is imperative to consider the
main characteristics and distinctive features offered by existing protocols. Hence, throughout this study
we focus primarily on present messaging or middleware protocols that are commonly used in deploying
IoT systems.
There are a number of survey research studies that have examined protocols used for IoT connectivity at
the data link layer [120]–[129]. However, the diversity which exists at this layer in terms of protocols’
goals, architecture and capabilities makes it progressively difficult to relate these protocols with those
that interface at the application level. That is, understanding protocols at the data link layer is not
sufficient to build IoT applications. It is essential to also consider protocols that exist at the application
level complementing those that exist at the data link layer.
Understanding data link protocols that indirectly interact with those at application layer through the OSI
model is essential. Because data link layer protocols (e.g. WirelessHART, Sigfox, LoRa, among others)
have different goals and target different types of IoT devices, carefully choosing a protocol closer to the
application layer (e.g. HTTP, CoAP, MQTT, among others) while also considering crucial system
requirements such as Quality of Service (QoS), bandwidth, interoperability and security becomes
inevitable. Although there exists a number of studies that have examined protocols at the data link
layer [120]–[129] and the application layer [2]–[7], [130]–[140], there exists a gap on how these studies
connect protocols across a number of layers of the OSI model. That is, complementing the knowledge
area across multiple layers of the protocol stack for supporting an application’s lifecycle is therefore
needed. This paper attempts to reduce this gap by providing technical details and thorough analysis of
protocols that can be used for developing IoT applications.
This research paper is organized as follows. Section II discusses some of the related work. Section
III discusses existing protocols and the different layers of the OSI model. Section IV presents a detailed
analysis of existing messaging or middleware protocols including HTTP, CoAP, MQTT, AMQP, XMPP and
DDS. Section V provides a comprehensive comparison of the features of existing messaging
protocols. Section VI discusses how messaging protocols address the challenges associated with building
IoT applications. Section VII highlights the strengths and weaknesses of each protocol in the context of
IoT. Finally, Section VIII provides the conclusion and future work suggestions.
SECTION II.
Related Work
Research and investigation in the IoT domain has focused primarily on data accumulation, data analysis
and transformation and collaborative processes implemented in the form of RESTful services. To organize
IoT data flows, a multilevel model of IoT or an IoT reference model is employed consisting of a number
of layers including: (a) physical device and controllers, (b) connectivity, (c) data accumulation and
abstraction (e.g. big data) and (d) application. In this section, we identify key research studies at the
application layer protocol.
In [2], the authors conduct a comparison study into the usefulness of utilizing CoAP and MQTT in smart
healthcare IoT applications. The paper identifies weaknesses of each of these protocols and security
implications in the context of healthcare. Furthermore, the study focuses on the security aspects and
identifying weaknesses in protecting sensitive and private patient data. The authors attempt to classify
the types of threats as Privacy and Confidentiality, Availability and Integrity [2]. In [3], Naik provides a
study surveying some of the existing messaging protocols and identifying their pros and cons [3]. In [7],
Dizdarević et al. provide another survey study of existing application layer protocols while distinguishing
their operability for possible integration into fog- and cloud-based systems [7].
In [4], Thangavel et al. examine the end-to-end performance of MQTT and CoAP using a common
middleware. The study focuses primarily on the usefulness of such protocols in wireless sensor networks
(WSNs). The authors propose a middleware for extending existing and future protocols. Results from this
study show that MQTT messages have lower delay compared to those of CoAP when considering lower
packet loss rates. However, MQTT’s performance degrades compared to that of CoAP when considering
messages at higher data loss rates. The study also identifies that CoAP generates much less traffic
overhead compared to MQTT when message sizes are small and loss rate is equal to or less than twenty-
five percent [4].
Tandale et al. performed a similar study in which they considered CoAP, MQTT and HTTP REST [5]. The
authors used an arm-based device (Raspberry Pi 3) acting as a gateway to examine the reliability and
network traffic of these protocols while considering various network conditions. That is, the study
included two types of networks: (a) cellular 4G and (b) high-speed broadband connection. The authors
conclude that CoAP performs more efficiently for small payloads and its performance deteriorates as the
size of messages increases [5].
In [6], the authors focus in their study on the implementation and comparison of Machine-to-Machine
(M2M) protocols for IoT. The study was centered on the deployment of an IoT system that collects
temperature data while using both the MQTT and CoAP protocols. The study determines that both of
these protocols achieve 100% data transfer with minimal packet loss induced and have relatively efficient
support for re-transmitting data packets. Furthermore, the study finds that CoAP protocol’s data loss rate
is low when handling smaller data sizes. The study concludes that the performance of each protocol is
fairly dependent on various network conditions (e.g. in the case of data retransmission as data size
increases) [6].
Apart from research efforts that investigated the use of messaging protocols at the application layer,
there have been a number of research studies that focused on the network layer protocols. Network
layer protocols enable technologies at that layer to communicate in a unidirectional or bidirectional
capability [119]. For example, network protocols have different identification techniques for locating
devices over different types of networks (i.e. small or large). Such identification can be achieved, for
example, through network addresses using IPv4, IPv6 or 6LoWPAN [120]. Because IoT devices vary in
hardware capabilities (e.g. power consumption, connectivity medium, transmission coverage),
identifying a suitable communication medium that can be used within the boundaries of IoT devices is
challenging [121]–[123]. A number of survey studies examined the various differences amongst existing
network layer protocols in the context of IoT.
In [124], the authors discuss key identification and tracking technologies for IoT devices. For example,
the Radio Frequency Identification (RFID) is a suitable technology that is generally used for tracking and
identification. RFID devices are commonly used in applications such as transportation, logistics,
manufacturing, and equipment tracking, among others [119], [122]. However, IoT systems require smart
devices that go beyond the traditional identification capabilities [124].
In addition, there exists multiple different types of networks that can be employed in IoT systems such as
wireless sensor networks (WSNs). WSNs support longer transmission ranges and, unlike RFID sensor
networks, offer a peer-to-peer communication mode. Because of the need for enhancing the network
identification of IoT devices, improving data transmission rates and supporting mobility, a number of
activities or alliances have evolved in recent years including, but not limited to, Electronic Product Code
(EPC) led by EPCGlobal, Machine-to-Machine (M2M), 6LoWPAN, ZigBee, WirelessHART, NFC, ANT+,
Thread, MiWi, and Weightless, among many others [119]. Many of these activities vary in terms of
communication strategies they support or enable.
The authors in [125] provide a survey of the communication strategies that can be applied for building or
deploying smart IoT applications. In this study, the authors identify four main communication strategies:
(a) device-to-device (D2D), (b) device-to-cloud (D2C), (c) device-to-gateway (D2G) and (d) device-to-
application (D2A). The authors examined the current state-of-the-art for identifying a technical taxonomy
that can potentially cover all possible IoT communication types [124]. However, the study focused
primarily on a broad taxonomy for covering these communication strategies. It would be desirable to
include, in addition to considering this high-level overview of the communication strategies, more
granular technical details that can help identify the scope to which existing messaging protocols map or
support these communication strategies. This research study attempts to reduce this gap by identifying
the level of support provided by existing messaging protocols for each of these communication
strategies.
Furthermore, other studies have limited their scope to focus mainly on a particular applied area of IoT.
For example, the authors in [120] reviewed communication technologies primarily for smart home
systems. The survey study provides a feature comparison of many elements including architecture,
software implementations, privacy and security and communication. The study also discusses the
advantages and disadvantages of applying wired and wireless communication protocols in terms of
frequency, data rates, and network topology, among others. However, the primary focus of the study
in [120] is on short range technologies at the data link layer protocols without connecting them to those
that exist at the application layer.
Although many of the existing research studies have focused on identifying the advantages and
disadvantages of a number of communication protocols, the need for having a research study that
provides detailed comparison with relevant IoT use cases of the existing messaging protocols at the
application layer while considering differentiating factors such as interoperability, scalability and
performance adaptability and extensibility, security and reliability becomes inevitable. In this paper, we
provide a comprehensive study that investigates the use of existing messaging protocols for IoT
application and identify the challenges associated with their usage across various IoT deployment
strategies (e.g. edge- or fog- versus cloud-based). The following section describes a communication-
centric IoT reference model, IoT application requirements and various IoT-related specifications,
standards and alliances that exist today.
SECTION III.
IoT Messaging Protocols
In a traditional IoT cloud architecture, the plurality of data generated by IoT devices relocate to the cloud
for data accumulation (i.e. storage) and abstraction (i.e. aggregation and access). In contrast, an IoT
edge-based architecture reduces the amount of data in which only partial data relocates to the cloud for
further storage and processing.
In the edge-based model, network and system architectures are generally responsible for not only
collecting data at the edge of the network but also performing advanced functions such as data analysis
and processing. That is, the data accumulation and abstraction partially shift from the cloud to the edge
of the network which significantly contributes to reduction in network traffic as the number of IoT
devices increases. Therefore, it is imperative when choosing a deployment architecture to identify a
suitable messaging protocol. To this extent, in the following section, we discuss a communication-centric
IoT reference model for the purpose of distinguishing the various protocols and specifications that exist
across the various IoT layers.
Despite the differences between IoT deployment approaches, producing data which occurs at various
rates is achieved by the physical layer to which IoT devices connect to a network (i.e. wired or wireless).
Given that IoT devices at this layer may have limited power, the rate at which data generates requires
special consideration to the amount of power consumed by these devices. That is, reducing the velocity
or the rate at which data generates on the edge of the network translates into longer battery life of IoT
devices while reducing bandwidth.
A plethora of standards, specifications and technologies at this layer exist including Ethernet 802.3, Wi-Fi
802.11 a/b/g/n, Low Power Wide Area Network (LWPAN), Long Range Radio (e.g. LoRa, Sigfox,
Narrowband IoT – NB-IoT), Zigbee, Cellular (2G, 3G, 4G, LTE, 5G), 802.15.4, among many others. Figure
1 presents a Communication-centric Internet of Things (CIoT) reference model.
FIGURE 1.
In the following sections, we describe the main functionality supported by the layers presented in Figure
1 and briefly discuss the relevant protocols, specifications or standards that exist at each layer.
At the lowest level of the IoT reference model presented in Figure 1 is the physical layer which contains
the electronic circuitry for transmissions. The data link layer is responsible for data transfers between
network entities. There are a large number of technologies that exist at the data link layer each of which
has been designed to target specific applications or connectivity strategy. For example, Z-Wave enables
IoT devices to be controlled via the Internet and is very common among smart home systems.
On the other hand, the Weightless technology uses a set of Low-Power Wide-Area Network (LPWAN)
standards for data exchanges primarily between a base station and thousands of IoT nodes. There are
three types of Weightless protocols including: (a) Weightless-N, Weightless-W and Weightless-P. Each of
these Weightless protocols is designed for specific use cases. Weightless-W, for example, operates in the
TV White Space (TVWS) spectrum and takes advantage of the ultra-high frequency (UHF). Weightless-N
uses an ultra-narrowband which is ideal for sensor-based networks and metering systems, among
others. Weightless-P offers bi-directional support and operates in both licensed and unlicensed ISM radio
bands. Common applications using Weightless-P include industrial machine monitoring and health
equipment monitoring, among others.
Sigfox is another data link layer technology which offers subscription-based connectivity services over a
dedicated LPWAN networks and can be used in smart alarm systems and metering systems, among
others. LoRaWAN provides a low-cost and secure bi-directional long-range transmissions supporting very
large networks that consist of hundreds, thousands or millions of nodes. Ideal applications of LoRaWAN
include smart cities, smart street lighting and smart waste management, among many others.
ZigBee, a technology developed by the ZigBee Alliance, is based on the IEEE 802.15.4 standard and
operates in unlicensed radio bands while it supports a number of topologies including the star, cluster
tree and mesh topologies. ZigBee can support up to 65,000 nodes over a network and has low data
rates. Table 1 provides a feature comparison for a subset of the existing data link layer technologies
sorted by the transmission range in an ascending order.
Above the data link layer as can be seen in Figure 1 is the network layer. This layer is responsible for the
logical addressing and delivery of packets between source and destination, which generally requires
routing. Hence, a lightweight routing process is essential for IoT devices particularly constrained devices
while maintaining a high level of scalability. Because some IoT devices may operate using low-power
radio communication, IPv6 Low Power Wireless Personal Area Network (6LoWPAN) provides an optimal
method for transmitting IPv6 packets for low-power or constrained devices.
The transport layer is mainly responsible for the end-to-end communication via a network and provides
many services such as data-stream support, reliability, multiplexing and security, among others. For
connection-oriented transmissions, Transmission Control Protocol (TCP) is used for messaging
transmissions. Although TCP is considered one of the most widely used protocols over the Internet, TCP
may not be ideal for all types of IoT systems. An IoT system that uses a large number of constrained
devices disseminated across multiple geographical areas may benefit significantly from using a
connectionless service protocol such as User Datagram Protocol (UDP) for messaging transmissions
versus TCP.
D. Application Layer
The application layer is an abstraction layer that identifies a variety of protocols and interfacing
methods [8]. There exists several application layer protocols that address a wide range of application
requirements. Each of these protocols provide various features that vary in terms of reliability, quality of
service, performance, functionality and scalability, among other factors.
Some of the protocols that exist at the application layer include: (a) HyperText Transfer Protocol (HTTP),
(b) Secure HTTP (HTTPS), (c) Message Queueing Telemetry Transport (MQTT), (d) Advanced Message
Queuing Protocol (AMQP), (e) Extensible Messaging and Presence Protocol (XMPP) and (f) Constrained
Application Protocol (CoAP), among many others. In addition, a number of industry-specific protocols
used primarily in IoT environments (mainly industrial) also exist such as Modbus, Distributed Network
Protocol (DNP3), OLE for Process Control (OPC), Manufacturing Message Specification (MMS), among
many others. A software developer, system designer or network administrator needs to consider not
only an application protocol but also relevant protocols employed at other layers in the OSI model by an
IoT system. In Section IV, we discuss in details each of the IoT messaging protocols that exist at the
application layer.
Because of the diversity of IoT devices, there exists no single communication technology that is capable
of supporting heterogeneous environments. To have a more thorough understanding of the transmission
requirement ranges for the various IoT application domains, we present in Table 2 a list of some of the
common IoT application domains with corresponding ranges based on data we collected from existing
research work [2]–[7], [120]–[123], [130]–[140].
Over the past few years, there have been a significant increase in the number of standards’ governing
bodies and alliances that have been formed for enhancing communication technologies for the IoT
landscape. Identifying the scope and goals of these initiatives is beyond the scope of this paper.
However, we would like to provide the reader an overview of some of these initiatives that we believe
would be relevant to this study. In Figure 2, we present a subset of the organizations and alliances that
have been playing an increasingly important role in solving challenges that exist in the IoT paradigm in
recent years.
FIGURE 2.
The initiatives, specifications and standards presented by the various organizations and alliances shown
in Figure 2 have different focuses and target specific stakeholders or markets. For example, some of
these initiatives offer solutions that aim to solve challenges for Business to Consumer (B2C) or Business
to Business (B2B) applications. Other initiatives were developed to accommodate specific vertical or
horizontal domains in the IoT landscape. Consider, for example, organizations or alliances such as the
IEEE, ZigBee Alliance, ISO, CEN and ULE. All of these organizations or alliances have proposed standards
or specifications for a vertical domain which primarily focus on solving a very specific area such as home
and building automation.
Other organizations such as the IEC, ISO, oneM2M, OPC and OpenIndustry 4.0 Alliance provide
specifications or recommendations that are domain-specific or solve problems within the manufacturing
and industrial automation vertical domain. Furthermore, organizations such as the W3C, ITU, OASIS,
OMG, IETF and HyperCat [163] provide standards, specifications and recommendations that provide
broader support for a number of IoT applications while encompassing many different domains (e.g.
industrial, home automation, healthcare, energy, oil and gas, among many others.
Although there exists a significant number of initiatives or standards that attempt to solve IoT challenges
across different domains, they vary considerably in terms of the following factors: (a) architecture, (b)
communication, (c) security and privacy, (d) interoperability, (e) integration, (f) device types and sensor
technology, (g) deployment models (h) services’ provisioning and (i) application and device
management. Some of these features are also supported by a number of protocols that exist across the
link and application layers. Examining similarities and differences among existing data link layer’s
specifications, standards or initiatives is beyond the scope of this paper. However, due to the fact that
exchanging data through messages is fundamental for the development and deployment of IoT
applications, we focus primarily in this paper on investigating messaging protocols that support IoT data
exchange.
As a first step into identifying the protocols to be part of this research paper, we conducted a review of
the existing research studies that have examined protocols for IoT applications [7], [118], [121]–[138]. As
part of our selection strategy, we also considered the following factors:
What are the system requirements and challenges that may influence choosing an application
protocol for IoT development?
What is the depth of the examined literature in terms of coverage, comprehensibility and
technical knowledge?
What is the adoption rate of the existing protocols used for IoT applications?
For considering the communication scope, we reviewed the current state-of-art literature to identify the
IoT communication types based on environments running IoT applications. The authors
in [124] identified four classical communication types for IoT environments. We summarize these
communication types below.
Device-to-Cloud (D2C) where communication is achieved directly between IoT devices and cloud
service providers.
We use these communication types to identify existing application layer protocols that provide support
for D2D, D2A, D2G and D2C. Not all protocols support all of the identified communication types. For
example, MQTT functions in the communication type D2C whereas CoAP only supports D2D. In addition,
supporting the communication scope depends on a number of factors such as device capabilities. For an
IoT device to send data streams to an IoT cloud platform directly (e.g. Azure IoT Hub), the device must be
equipped with networking technology (e.g. WiFi or Ethernet) to send data to the cloud. However, if the
device does not support direct connectivity to the cloud (e.g. an RFID tag), performing a D2C
communication is not possible. Hence, a gateway may be used to collect data streams from the IoT
device and then forward the stream to the cloud. As part of our comprehensive analysis and review of
IoT application protocols, we take into consideration these variations and compare these protocols
based on the scope of the communication type they support.
In addition, we considered published literature for identifying the adoption rate of the plurality of
messaging protocols that exist today. To this extent, we reviewed existing surveys conducted across the
IoT developers’ community. We make use of the results from surveys conducted by the Eclipse
Foundation between 2015 and 2019 that received significant feedback from the IoT developers’
community [155]. We collected statistical data about the adoption rate published by Eclipse Foundation
through these surveys and used it to identify protocols that we should consider as part of our study.
Combining the data we collected from our literature review and the results of the surveys published by
the Eclipse Foundation, we identify the following messaging protocols as part of our comprehensive
review: (a) HTTP(S), (b) CoAP, (c) MQTT, (d) AMQP, (e) XMPP and (f) DDS. We believe that by thoroughly
investigating these protocols while having general understanding of the existing data link layer protocols,
it is then possible to determine how each of these protocols can address system requirements or
challenges that exist across the IoT communication landscape while also identifying suitable IoT cloud
service providers for deploying crucial IoT services.
Apart from examining adoption rates for IoT messaging protocols, it would be desirable to identify any
patterns or trends for protocols that are supported by existing IoT cloud platforms. To this extent, we
conducted a literature review examining support levels of messaging protocols across the plurality of
existing IoT cloud platforms [166]–[175]. Table 3 presents a detailed list of supported protocols that we
gathered for ten of the major players or the plurality of IoT cloud platforms that exist today.
TABLE 3 List of Protocols/Technologies Supported by Existing IoT Platform Providers for Data
Transmission
As can be seen in Table 3, all of the IoT cloud platforms support
HTTP(S) and MQTT across all ten cloud platforms, followed by
AMQP supported by six platforms, then CoAP supported by four IoT
platforms. These results align with those of the Eclipse Foundation
survey noting that HTTP and MQTT constituted the top two
messaging protocols used by developers according to the survey
results [155]. We discuss the results of the survey in Section VI.I.
Unfortunately, none of the existing IoT cloud platforms provide
support for DDS although it is being used by IoT developers based
on the results gathered from the survey conducted by the Eclipse
Foundation (Section VI.I).
FIGURE 3.
M. HTTP message control flow (left: HTTP 1.0, middle: HTTP 1.1, right: HTTP 2.0.
A request URI can be split into multiple parts: (a) Uri-Host, (b) Uri-Port, (c) Uri-Path and Uri-Query
Options. These features provide easy and intuitive way to communicate using this protocol with RESTful
services. CoAP supports CRUD operations through HTTP methods as shown in Table 4 and provides
status codes that are very similar to those in HTTP.
FIGURE 7.
Table 5 outlines the four different message types that CoAP support. The message types provide a
certain guarantee to the delivery of messages and hence increases the level of quality overall. For
example, when a server processes a response identified by a given code (in the code field) matching the
request, an 8-bit response code identifies the class of the response: (2) success, (4) client error and (5)
server error.
FIGURE 8.
Q. Through the message types and HTTP-like status codes, CoAP becomes an
easy to use protocol for integrating into the existing web. IoTivity, an open
source software framework that enables device-to-device communication,
uses CoAP as its application layer [18]. In addition, CoAP offers extensions
such as the Observe Option which helps in observing the changes in the state
of resources giving it a RESTful architecture support.
R. C. Message Queuing Telemetry Transport (MQTT)
S. Although HTTP and CoAP can be used as a request/response protocols used
by IoT systems or devices, there is a need for a lightweight protocol that is
designed to handle situations in cases of unreliable networks or intermittent
connectivity. MQTT, an OASIS standard, is a publish-subscribe lightweight
messaging protocol designed for constrained devices [12] and is well-suited
for these types of scenarios while enabling the exchange of data with the cloud
in a real-time manner.
T. As outlined in Table 3, nearly all of the existing IoT cloud platform providers
including IBM Watson IoT Platform [13], Microsoft Azure IoT Hub [14],
Google Cloud IoT Core [15], Bosch IoT Hub [16] and AWS IoT [17], among
many others provide support for an IoT application to send data using the
MQTT protocol. MQTT, an application layer protocol designed for Machine-
to-Machine (M2M) communication, uses a publish-subscribe model and runs
on top of the Transmission Control Protocol/Internet Protocol (TCP/IP) as
shown in Figure 9.