Protocolos Envolvidos na IoT

Trabalha-se para definir um modelo ou arquitetura para a IoT (Internet of Things – Internet das Coisas), mas já existem alguns protocolos que estão na vanguarda desta tecnologia. São os protocolos CoAP, MQTT, XMPP e AMQP.

Neste artigo, estaremos apresentando, de forma resumida, a função de cada um destes protocolos para que possamos tratar mais profundamente os elementos sensores, o transporte de informação e a atuação de elementos por meio de aplicações.

 

CoAP (Constrained Application Protocol)

CoAP (Constrained Application Protocol – Protocolo de Aplicação Restrita), definido pela RFC 7252, é um protocolo de transferência Web especializado para uso com nós restritos e redes na Internet das Coisas. O protocolo é projetado para M2M (de-máquina-para-máquina), como, por exemplo, aplicações em energia inteligente e automação predial.

Como o HTTP, o CoAP é baseado no modelo REST: servidores disponibilizam recursos em um URL e os clientes acessam esses recursos usando métodos como GET, PUT, POST e DELETE.

Do ponto de vista do desenvolvedor, o CoAP se parece muito com o HTTP. Obter um valor de um sensor de pressão, temperatura, entre outros, não é muito diferente de obter um valor de uma API da Web.

Como o HTTP e o CoAP compartilham o modelo REST, eles podem ser facilmente conectados usando proxies inter-protocolos, independentes do aplicativo. Um cliente da Web pode nem sequer perceber que ele acessou apenas um recurso de sensor.

Como o HTTP, o CoAP pode carregar diferentes tipos de cargas úteis e pode identificar qual tipo de carga útil está sendo usado. CoAP integra-se com XML, JSON, CBOR, ou qualquer formato de dados de sua escolha.

A Internet das Coisas precisará de bilhões de nós, muitos dos quais precisam ser baratos. CoAP foi projetado para trabalhar com microcontroladores com baixa capacidade de memória como 10 KiB de RAM e 100 KiB de espaço de código (RFC 7228).

O CoAP foi projetado para usar recursos mínimos, tanto no dispositivo quanto na rede. Em vez de uma pilha de transporte complexa, é encapsulado no UDP e no IP respectivamente.  Um cabeçalho fixo de 4 bytes e uma codificação compacta de opções permite mensagens pequenas que causam pouca ou nenhuma fragmentação na camada de enlace. Muitos servidores podem operar de uma forma completamente sem estado, além de permitir um diretório de recursos que fornece uma maneira de descobrir as propriedades dos nós em sua rede.

Este protocolo foi projetado para durar décadas, principalmente levando em conta o controle de congestionamento usando o estado da arte.

Em relação à segurança, o CoAP utiliza parâmetros DTLS, que é equivalente a chaves RSA de 3072 bits, funcionando bem nos menores nós.

 

MQTT (Message Queue Telemetry Transport)

O MQTT é um protocolo de conectividade de-máquina-para-máquina (M2M) também utilizado em Internet das Coisas. Foi projetado para ser extremamente leve e publicar/subscrever o transporte de mensagens. É útil para conexões remotas com pequena largura de banda, como é o caso de informações extraídas de sensores. Por exemplo, tem sido utilizado em sensores que se comunicam por meios físicos via satélite ou numa gama de domótica e cenários de dispositivos pequenos. Também é ideal para aplicações móveis devido ao seu pequeno tamanho, baixo consumo de energia, pacotes de dados minimizados e distribuição eficiente de informações para um ou mais receptores.

O MQTT foi projetado para redes de baixa largura de banda e alta latência no final da década de 1990/início de 2000. Como resultado, os designers fizeram uma série de escolhas fundamentais que influenciaram a forma como “olha e sente”, além de fornecer um sólido bloco de construção que pode ser facilmente integrado em outras soluções.

É útil para a maioria das aplicações de sensor e permite que os dispositivos fiquem online e publiquem “material” que não tenha sido previamente conhecido ou predefinido.

Arquitetura:

  • MQTT tem um modelo cliente/servidor, onde cada sensor é um cliente e se conecta a um servidor, conhecido como um agente (broker), sobre TCP.
  • MQTT é orientado a mensagem. Cada mensagem é um pedaço discreto de dados, opaco para o agente.
  • Cada mensagem é publicada para um endereço, conhecido como um tópico. Os clientes podem assinar vários tópicos. Cada cliente inscrito em um tópico recebe todas as mensagens publicadas no tópico.

Exemplo:

Imagine uma rede simples com três clientes e um agente central. Todos os três clientes abrem conexões TCP com o agente. Os Clientes B e C subscrevem a temperatura do tópico, como mostra a figura 1.

 

Exemplo Protocolo MQTT
Figura 1 – Exemplo Protocolo MQTT

 

Posteriormente, o Cliente A publica um valor de temperatura de  22,5 ºC para a temperatura do tópico. O agente encaminha a mensagem para todos os clientes inscritos, como na figura 2.

 

Exemplo Protocolo MQTT
Figura 2 – Exemplo Protocolo MQTT

 

O modelo de assinante permite que clientes MQTT comuniquem-se de um-para-um, um-para-muitos e muitos-para-um.

 

XMPP (Extensible Messaging and Presence Protocol)

O XMPP é um protocolo para streaming de elementos XML (Extensible Markup Language), a fim de trocar mensagens e informações de presença em tempo aproximado. O principal recurso do XMPP é: Core [XMPP-CORE]. Esse recurso, principalmente os fluxos de XML, fornecem os blocos de construção para muitos tipos de eventos, quase reais, que podem ser colocados em camadas no topo do núcleo enviando dados específicos do aplicativo qualificados por espaços de nomes XML específicos [XML-NAMES].

É um protocolo de comunicação para middleware orientado a mensagens, baseado em XML. Permite o intercâmbio em tempo quase real de dados estruturados, porém extensíveis, entre quaisquer duas ou mais entidades de rede. Originalmente chamado Jabber, o protocolo foi desenvolvido pela comunidade de código aberto Jabber em 1999 para mensagens instantâneas em tempo real (IM), informações de presença e manutenção de listas de contatos. Projetado para ser extensível, o protocolo tem sido usado também para sistemas de subscrição de publicação, sinalização para VoIP, vídeo, transferência de arquivos, jogos etc.

Ao contrário da maioria dos protocolos de mensagens instantâneas, o XMPP é definido em um padrão aberto e usa uma abordagem de sistemas abertos de desenvolvimento e aplicação, através da qual qualquer pessoa pode implementar um serviço XMPP e interoperar com implementações de outras organizações. As implementações podem ser desenvolvidas usando qualquer licença de software. Embora muitas implementações de servidor, cliente e biblioteca sejam distribuídas como software livre e de código aberto, também existem numerosas implementações de software comercial.

 

AMQP (Advanced Message Queuing Protocol)

AMQP é um padrão aberto para passar mensagens de negócios entre aplicativos ou organizações. Ele conecta sistemas, alimenta os processos de negócios com as informações de que eles precisam, transmitindo de forma confiável as instruções que atingem seus objetivos, criando interoperabilidade entre clientes e intermediários (ou seja, middleware de mensagens). O objetivo é permitir que uma ampla gama de diferentes aplicações e sistemas sejam capazes de trabalhar em conjunto com mensagens padronizadas em escala industrial.

O AMQP inclui definições tanto para a forma como a rede deve funcionar, como para a forma que os aplicativos de mensagens de agente funcionam. Isto significa que as especificações são para:

  • operações de roteamento e armazenamento de mensagens;
  • definir um conjunto de regras de funcionamento dos componentes envolvidos;
  • implementar como as comunicações entre os clientes e os agentes que executam as operações funcionam.

 

Conclusão:

A Internet das Coisas concebeu um sistema de sensores onipresentes conectando o mundo físico à Internet. Embora as coisas, a Internet e a conectividade sejam os três componentes principais da IoT, ainda é necessário trabalhar as lacunas entre os mundos físico e digital. Vamos estar atentos às oportunidades que esta tecnologia irá nos proporcionar.

 

Bibliografia

http://coap.technology/

https://eclipse.org/community/eclipse_newsletter/2014/february/article2.php

https://xmpp.org/rfcs/rfc3921.html

https://www.amqp.org/

 

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *