services
A holistic approach that accelerates your current vision while also making you future-proof. We help you face the future fluidically.
Digital Engineering

Value-driven and technology savvy. We future-proof your business.

Intelligent Enterprise
Helping you master your critical business applications, empowering your business to thrive.
Experience and Design
Harness the power of design to drive a whole new level of success.
Events and Webinars
Our Event Series
Featured Event
14 - 15 May
Olympia London | Booth AI Zone - AI32
Our Latest Talk
By Kanchan Ray, Dr. Sudipta Seal
video icon 60 mins
About
nagarro
Discover more about us,
an outstanding digital
solutions developer and a
great place to work in.
Investor
relations
Financial information,
governance, reports,
announcements, and
investor events.
News &
press releases
Catch up to what we are
doing, and what people
are talking about.
Caring &
sustainability
We care for our world.
Learn about our
initiatives.
Fluidic
Enterprise
Beyond agility, the convergence of technology and human ingenuity.
talk to us
Welcome to digital product engineering
Thanks for your interest. How can we help?
 
 
Author
Swanand Purankar
Swanand Purankar
connect

The Internet of Things (IoT) is experiencing rapid expansion, connecting everything from fridges to factories. But with this interconnected world comes a new problem: how to ensure efficient communication between these devices? That's where communication protocols come into play, acting as the language that enables devices to talk to each other. One such protocol is CoAP, it offers a lightweight solution for resource-constrained IoT devices.

Nagarro has delivered high-performance CoAP communication solutions that meet the stringent demands of modern IoT applications. This article presents an overview of the CoAP and Nagarro’s middleware solution – CoAPConnect, designed to facilitate seamless CoAP integration into both new and existing applications.

CoAP and other IoT protocols

Consider a smart home with dozens of thermostats constantly monitoring room temperatures. Traditional protocols like HTTP struggle due to bulky headers and TCP connections that drain battery life. MQTT offers reliable delivery but increases complexity and power consumption. CoAP emerges as the winner. Designed for constrained devices, it significantly reduces data size and resource consumption.

For instance, CoAP's streamlined headers allow thermostats can transmit data with only 144mAh/day compared to HTTP's 576mAh.  The impact of CoAP goes beyond individual devices. Imagine a central hub controlling these thermostats. With CoAP's lower latency (20–50 ms vs. 50-100ms for MQTT and 100–200 ms for HTTP) and reduced memory footprint (1-3 MB vs. 3-5 MB for MQTT and 5–10 MB for HTTP), the hub can receive real-time data and adjust settings efficiently, creating a better, more energy-conscious future.
This concept applies to various domains, such as agriculture, wearables, and industrial automation, where efficient communication with resource-constrained devices is crucial.

  CoAP MQTT HTTP AMQP
Transport UDP TCP TCP TCP
Multicast support Yes No No No
Header size 4 Bytes 2 Bytes Variable 8 Bytes
Communication type Request - Response Publish - Subscribe Request - Response Publish - Subscribe
QoS Confirmable Message\ Non-confirmable Message 0 - At most once,
1 - At least once,
2 - Exactly once
Limited (via Transport Protocol - TCP) Settle (like at most once)/ Unsettle (like At least once)
Latency Low Medium High Low
Resource usage Low Low High High
Dynamic discovery Yes No No No
Architecture style P2P Broker P2P P2P, Broker
Cache and proxy Yes Partial Yes Yes
Serialization of data Configurable Undefined No AMQP Type defined
Security DTLS SSL SSL/TLS TLS
Energy consumption Low Moderate High  Very high
Interoperability Yes No Yes Yes

How does CoAP work?

CoAP operates on a streamlined client-server dance for efficient communication within the resource-constrained world of the IoT. Here's the core exchange:

  • Client initiates: A resource-constrained device (client) sends a CoAP request specifying the desired operation (GET, PUT, etc.) and the data source (resource identifier).
  • UDP delivery: CoAP uses UDP for message transport, prioritizing speed over guaranteed delivery for reduced overhead.
  • Message types: CoAP offers flexibility with message types. Confirmable messages prioritize reliability with retransmissions, while non-confirmable messages prioritize speed for real-time scenarios.
  • Server processing: After receiving the request, the server processes it based on the operation and resource identifier.
  • Server response: The server generates a CoAP response containing a status code (success/failure) and potentially data or an error message.
  • Response delivery: The server sends the response that contains messages to the client, completing the communication cycle.

This efficient exchange allows CoAP to excel in IoT applications where bandwidth and processing power are limited.

Introducing “CoAPConnect”

CoAP integration in applications is commonly implemented using a CoAP adaptation library. However, this approach introduces challenges in resource management, while limiting flexibility and fault tolerance. Nagarro has developed a middleware service, “CoAPConnect”, for Linux-based systems, designed to integrate seamlessly with the operating system through Yocto recipes or Buildroot package definitions. Starting automatically at system boot, the service allows applications to easily create, configure, and manage CoAP clients and servers through D-Bus, a widely used IPC mechanism in Linux.

This design abstracts the complexity of CoAP, allowing developers to focus on application logic without worrying about protocol intricacies or memory management.

Architecture

Without CoAPConnect

Integrating CoAP into a Linux application typically involves embedding a CoAP library within the application itself. 

Integrating CoAP into a Linux application

While this approach provides flexibility and direct control over the protocol, it comes with significant challenges.

Protocol complexity:

  • Applications require direct handling of low-level protocol intricacies such as message management, retransmissions, and resource constraints.
  • This increases development effort and the likelihood of bugs.

Resource overhead:

  • The library's footprint can impose significant demands on memory and CPU on resource-constrained systems.
  • These demands grow as more applications use separate instances of the CoAP library.

Inefficiency in multi-application scenarios:

  • When multiple applications require CoAP functionality, each must include its own instance of the library.
  • This duplication leads to redundant memory and CPU usage, as well as increased network utilization.
  • Resource usage scales linearly with the number of applications, potentially overwhelming the device.

Maintenance complexity:

  • Library updates must be applied to each application individually, complicating the update process.
  • Version mismatches across applications can lead to inconsistent behavior and system instability.

With CoAPConnect

Using a centralized service for CoAP offers a robust alternative to embedding CoAP libraries within each application.

Using a centralized service for CoAP

Nagarro's CoAPConnect streamlines development, optimizes resource utilization, and provides applications with the flexibility to configure their roles as a client, a server, or both, based on their specific requirements.

The following points highlight the key features and technical advantages of CoAPConnect:

Simplified protocol management:

  • CoAPConnect abstracts low-level CoAP protocol details, such as message handling, retransmissions, and resource management.
  • This reduces the complexity for individual applications, allowing them to focus solely on their core functionality rather than managing protocol-specific tasks.

Efficient resource utilization:

  • CoAPConnect handles all protocol operations, eliminating the need for redundant library instances across multiple applications.
  • This minimizes memory, CPU, and network usage, making it ideal for resource-constrained devices.

Easier configuration:

  • CoAPConnect requires minimal configuration to establish a CoAP connection.
  • Applications can dynamically create multiple sessions and publish new resources as needed.
  • CoAPConnect allows each session to choose secured or unsecured communication.

Dual role and P2P support:

  • CoAPConnect supports both client and server roles, allowing applications to operate in either capacity as needed.
  • In Peer-to-Peer (P2P) mode, each application functions as both a client and a server, enabling direct communication between devices without intermediaries.

Secure communication:

  • CoAPConnect uses OSCAR (Open Security for CoAP and REST) to provide secure, encrypted communication between CoAP clients and servers.
  • CoAPConnect leverages OSCAR’s authentication mechanisms to ensure that only authorized devices can interact with the system, safeguarding against unauthorized access.
  • With OSCAR's data integrity checks, CoAPConnect guarantees the authenticity of transmitted messages, ensuring reliable and tamper-proof communication.

Scalability:

  • Adding new applications does not significantly increase resource demands, as all applications share the single instance of CoAPConnect service.
  • The architecture supports multi-application scenarios without the linear scaling of resource usage.

Ease of maintenance and fault management:

  • Updates and bug fixes are applied to the service, ensuring consistent behavior across all applications.
  • This reduces the complexity of maintaining and upgrading CoAP functionality across multiple applications.
  • In contrast to a library, a critical fault in the service will not disrupt the operation of the entire application.

CoAPConnect WorkflowCoAPconnect workflow

 

CoAPConnect Workflow

Initialization and startup

During system boot, CoAPConnect is initialized and automatically registers itself on the D-Bus, which acts as the communication bus for inter-process communication. This allows CoAPConnect to be immediately accessible by applications upon startup, providing a ready-to-use environment for CoAP operations without additional network configurations.

Interaction via D-Bus

Applications interact with CoAPConnect by sending high-level commands through D-Bus messages. These messages typically include instructions to create CoAP clients or servers, configure resources, send CoAP requests, and handle incoming responses. CoAPConnect processes these D-Bus requests, using internal mechanisms to translate the commands into CoAP-specific operations, such as message formatting, routing, and response handling.

Network handling

CoAPConnect is responsible for all network-level operations, including socket management. It utilizes the UDP protocol (as CoAP is based on UDP) to open and configure the necessary sockets for communication. CoAPConnect binds the sockets to specific ports and IP addresses, managing socket states and ensuring they remain open for continuous communication. If configured before communication begins, OSCAR facilitates a secure key exchange between the communicating entities (client and server) using asymmetric cryptography or pre-shared keys. This key is used to encrypt and decrypt the messages.

Protocol Encapsulation

CoAPConnect encapsulates CoAP messages into UDP packets, adhering to the CoAP protocol specification. It handles message construction, including header management (e.g., CoAP code, token, message ID, and options), and ensures correct segmentation for large payloads. For reliability, CoAPConnect also handles retransmissions of messages that did not receive an acknowledgment within a defined timeout, managing retransmission timers and keeping track of message states. When configured, CoAPConnect encrypts the outgoing data while authenticating and decrypting the incoming data.

Session and resource management

CoAPConnect provides session management for CoAP clients and servers. It tracks the state of each CoAP session, including session creation, maintenance, and termination. For resource management, CoAPConnect maintains an internal registry of resources available on the server side, mapping each resource to its associated URI. CoAPConnect handles incoming CoAP requests, checks the resource registry, and processes responses in real-time. It also manages observe relationships, timeouts, and other session-related attributes, ensuring that resources are available for client interactions when needed.

Error handling and retransmission:

CoAPConnect detects communication errors and manages retransmissions automatically. It leverages a reliable message delivery mechanism using CoAP's Confirmable messages (CON) for transactions that require acknowledgement. If a CoAP message does not receive a response within a defined timeout period, CoAPConnect triggers a retransmission. Additionally, it handles error scenarios like malformed messages, timeout conditions, and unreachable endpoints, ensuring robustness even in unreliable network environments. CoAPConnect uses exponential backoff strategies for retries and tracks retransmission attempts to avoid excessive retries or packet flooding.

Conclusion

CoAP stands out as a compelling choice for communication in resource-constrained IoT environments. Its lightweight design, asynchronous messaging, built-in discovery, and multicast support make it ideal for battery-powered devices and dynamic networks. Furthermore, CoAP's adherence to RESTful architecture allows for seamless integration with existing knowledge of HTTP methods, enhancing developer efficiency. 
By abstracting protocol complexities and centralizing resource management, Nagarro’s CoAPConnect significantly reduces product development time and cost, providing a competitive advantage. Contact embedded@nagarro.com to interact with our CoAP, IoT, and Security experts and build smart and secure IoT devices.

Author
Swanand Purankar
Swanand Purankar
connect