4.1 Vantagens e limitações

O CoAP é um protocolo da camada de aplicação similar ao HTTP, porém projetado para ser mais simples, demandando menos memória, processamento e, consequentemente, energia. Ele provê uma solução RESTFUL, seguindo a semântica HTTP, entretanto com um cabeçalho mais leve e uma abordagem binária e não textual.

O que garante menor complexidade ao CoAP com relação ao HTTP é o uso do protocolo de transporte UDP. O CoAP possui um tratamento para o problema de perda de pacotes, não solucionado pelo UDP, adicionando uma camada à mensagem para detecção e retransmissão dos pacotes. Um cabeçalho CoAP tem apenas quatro bytes somados a dois bytes para opções e a resposta da requisição ocupa apenas um byte. Assim, uma requisição geralmente usa de 10 a 20 bytes.

O CoAP, como outros protocolos, é passível de ataques e ameaças. Estão listados abaixo os mais frequentes no CoAP:

Ataques no CoAP
Tabela 2: Tipos de ataque no CoAP.
Reproduzido de W. E. Santo, E. D. Ordoñez, A. Ribeiro. Uma revisão sistemática sobre a Segurança nos Protocolos de Comunicação para Internet das Coisas, página 6, 2018.

Limitações do CoAP:

  • CoAP tem problemas na comunicação com dispositivos que estão atrás de uma NAT (Network Address Translation).

  • Mensagem não confiável (message unreliability): UDP não garante que datagramas foram entregues. Embora empregue o método CON-ACK para suas mensagens, isso não verifica se foi recebido em sua totalidade e decodificado corretamente.

  • Não é criptografado e depende de DTLS para prover segurança.

  • 4.2 Alternativa ao CoAP

    Um outro protocolo de aplicação alternativo para o CoAP é o MQTT (Message Queue Telemetry Transport) que atua sobre TCP, assim como o HTTP. Foi desenvolvido no final dos anos 90 com o intuito de vincular sensores em pipelines de petróleo a satélites.

    Com relação ao protocolo MQTT, o CoAP difere, principalmente, na arquitetura e na forma de comunicação. Este estabelece conexões M2M entre cliente e servidor, enquanto o MQTT é baseado na arquitetura client-broker. Ambos protocolos tem como objetivo pouco esforço computacional e “low data overhead”. Dessa forma, atuam bem em ambientes com recursos limitados de rede.

    MQTT atua em cima de TCP, enquanto CoAP usa UDP. Além disso, MQTT é orientado publish-subscribe e CoAP orientado request-response. No MQTT todas as mensagens devem ser publicadas para um endereço, chamado de tópico (topic). Os clientes podem se inscrever em mais de um tópico, recebendo todas as mensagens enviadas para tais tópicos.

    4.3 Comparação de performance entre CoAP e MQTT

    Ambos os protocolos citados são largamente utilizados na indústria tecnológica, porém eles possuem diferenças cruciais que vão caracterizar a tomada de decisão sobre qual utilizar.

    O MQTT é um protocolo de comunicação de muitos-para-muitos, explicitando, ele pode transmitir mensagens entre vários clientes por meio de um intermediário central, o qual chamamos de Broker. Isso dissocia o servidor e o cliente, permitindo que os clientes publiquem e fazendo com que o broker decida para onde rotear as mensagens. Embora o MQTT tenha suporte para persistência, já que trabalha sobre o protocolo de transporte TCP, ele funciona melhor como um barramento de comunicação para dados ativos.

    O princípio de funcionamento do CoAP é, principalmente, de um-para-um, ou M2M, para transferir informações de estado entre o cliente e o servidor. Embora tenha suporte para a observação de recursos, o CoAP é mais adequado para um modelo de transferência de estado.

    O MQTT não oferece suporte para classificar mensagens com tipos ou outros metadados para ajudar os clientes a entendê-los. As mensagens MQTT podem ser usadas para qualquer finalidade, mas todos os clientes devem conhecer os formatos de mensagens antecipadamente para permitir a comunicação. O CoAP, no entanto, possui suporte para descoberta de serviços e recursos, permitindo que os dispositivos investiguem uns aos outros para encontrar formas de trocar dados.

    4.4 Perspectiva atual e futura do CoAP em IoT

    O CoAP trouxe para o mundo da Internet das Coisas a possibilidade de fluxos de mensagens e gerência dos recursos da rede com dispositivos de capacidade restrita. Atualmente, o CoAP é bastante utilizado para soluções de mercado que necessitam interoperabilidade em redes de baixa capacidade ou, simplesmente, quando um tráfego elevado de informações não é o esperado.

    O universo IoT está usando amplamente o CoAP como um protocolo para automação residencial e em inúmeras aplicações industriais. Ele também é usado para gerenciar dispositivos usando o protocolo LWM2M (Lightweight Machine-to-Machine) da Open Mobile Alliance (OMA) e outras organizações - incluindo The Open Connectivity Foundation e ZigBee estão usando o CoAP como um protocolo central para suas estruturas e implementações de produtos.

    Em 2016, a Cisco Systems utilizou o CoAP como uma ferramenta para acelerar a sua transformação digital, conectando pessoas, lugares e dispositivos com maior segurança, automatização e análise de dados. A Cisco chamou de Digital Ceiling a convergência de sistemas diferentes nos seus postos de trabalho, como iluminação e refrigeração, visando reduzir custos, melhorar a experiência do utilizador e diminuir desperdícios. No seu framework de transformação foi criado o pilar Information Exchange , o qual visa a utilização do protocolo CoAP para a interoperabilidade entre os dispositivos, sensores e módulos de ativação.

    O CoAP tem evoluído rapidamente, segundo a Open Mobile Alliance (OMA). Como em todas as novas implantações de protocolos, está em andamento o trabalho para continuar melhorando o CoAP. O trabalho futuro da IETF CoAP inclui novos modos de segurança diferentes de DTLS, comunicação de grupo, gerenciamento e modelos de interação.