O documento descreve o protocolo MQTT, incluindo suas vantagens para dispositivos IoT, como leveza e simplicidade. Ele explica os principais componentes do modelo MQTT (publicadores, assinantes e corretor) e aborda segurança, qualidade de serviço e implementações.
3. Sumário
● O que é o protocolo MQTT?
● Vantagens
● Componentes do Modelo
● Segurança e Qualidade de Serviço
● Implementações e Exemplos
3
4. O que é o protocolo MQTT?
● Message Queue Telemetry Transport (MQTT) é um protocolo leve para
dispositivos de IoT e otimizado para rede TCP/IP, criada pela IBM no final dos
anos 90
● Utiliza o paradigma publish-subscribe
● Criado inicialmente para sistemas de supervisão e coleta de dados (SCADA)
4
5. O que é o protocolo MQTT?
Mas por que o MQTT se tornou um protocolo tão
utilizado para internet das coisas?
5
6. O que é o protocolo MQTT?
● Desenvolvido para hardware de dispositivo altamente restringido em
poder computacional e em redes de largura da banda limitada e de alta
latência
● Sistema de comunicação assíncrona
○ Desacopla emissor de receptor
● Prove distribuição de mensagens um-para-muitos, muitos-para-muitos e
desacoplamento de aplicações
● Apresenta 3 níveis de QoS
6
8. O que é o protocolo MQTT?
● Por que não usar o HTTP?
○ Síncrono
■ Cliente espera que o servidor responda
■ Alta latência
○ Unidirecional
■ Cliente precisa iniciar conexão
○ Um pra um
○ Pesado e cheio de regras
■ Não adequada para redes restritas
8
9. Vantagens do MQTT
● O protocolo oferece algumas vantagens como:
○ Leveza (mínimo de overhead) - Header de 2 bytes
○ Open Source
○ "Confiabilidade"
○ Simplicidade
9
10. Componentes do Modelo
● O MQTT é um protocolo que utiliza o paradigma pub-sub
● Neste paradigma tem-se três componentes principais:
○ Publishers - Elementos que publicam a mensagem em um tópico
○ Subscribers - Elementos que se inscrevem no tópico e recebem as
mensagens
○ Broker - Responsável pelo intermédio das trocas de mensagens
10
14. Segurança e Qualidade de Serviço
● A conexão entre o cliente e o Broker é feita via TCP (com opções
login) e o uso de criptografia (SSL/TLS)
● O protocolo MQTT fornece 3 níveis de qualidade de serviço (QoS)
indicando como deve ser a relação entre os elementos
comunicantes
○ QoS 0 - at most once
○ QoS 1 - at least once
○ QoS 2 - exactly once
14
15. Segurança e Qualidade de Serviço
● QoS 0
○ É conhecido como “best-effort” pois se assemelha ao protocolo UDP pois não se tem
confirmação de entrega de mensagem. Não tem obrigação de manter a mensagem
armazenada.
● QoS 1
○ Existem a confirmação de entrega da mensagem. Atende situações onde quem envia
acaba gerando várias mensagens iguais possivelmente por um atraso na chegada de
confirmação de recebimento.
● QoS 2
○ Garante que a mensagem seja entregue exatamente uma vez, com envio de confirmações
de recebimentos. É o mais próximo do protocolo TCP.
15
16. Segurança e Qualidade de Serviço
16Figura retirada de: https://www.slideshare.net/paolopat/io-t-protocols-landscape
17. Implementações e Exemplos
● Tem-se várias implementações para clientes e Brokers MQTT
○ Open Source ou não
○ Linguagens: Java, C, C#, Javascript e Python
● Broker Open Source Mosquitto
○ Windows, MAC, Linux, Raspberry Pi, …
● Porém, também existem Brokers privados
17
18. Implementações e Exemplos
● Exemplos de comandos do Mosquitto
○ mosquitto_sub → Subscrever em um tópico
○ mosquitto_pub → Publicar em um tópico
○ -m “message” → Mensagens enviadas pelos publicadores
○ -h localhost → Especifica o host o qual deve ser conectado (por default é o localhost)
○ -t topic → O tópico do MQTT sobre o qual publica a mensagem
○ -q 0/1/2 → Especifica a qualidade do serviço a ser usada para a mensagem, de 0, 1 e 2
○ -u username → Especifica o username a ser usado para autenticação com o Broker
○ -d → Habilita mensagens debug
○ -i → Especifica o id do cliente (de quem usa)
○ ...
18
19. Implementações e Exemplos
● Que tal praticarmos um pouco usando o
protocolo MQTT?!
○ Passo 1: instale o Broker Mosquitto em sua
máquina!
■ https://mosquitto.org/download/
○ Passo 2: Abra o terminal e digite o seguinte
comando:
■ mosquitto_sub -t topico/teste
○ Passo 3: Abra outro terminal em sua máquina
e digite o comando:
■ mosquitto_pub -t topico/teste -m “Hello Everybody”
19