Usuário(a):Pedrootarga/MQTT
Erro de citação: Etiqueta <ref>
inválida; refs sem parâmetro de nome devem ter conteúdo associado
Esta é uma página de testes de Pedrootarga, uma subpágina da principal. Serve como um local de testes e espaço de desenvolvimento, desta feita não é um artigo enciclopédico. Para uma página de testes sua, crie uma aqui. Como editar: Tutorial • Guia de edição • Livro de estilo • Referência rápida Como criar uma página: Guia passo a passo • Como criar • Verificabilidade • Critérios de notoriedade |
MQTT, sigla de MQ Telemetry Transport[1], é um protocolo de mensagens leve para sensores e pequenos dispositivos móveis otimizado para redes TCP/IP.[2] .
O esquema de troca de mensagens é fundamentado no modelo Publicador-Subscritor, extremamente simples e leve. Os princípios arquitetônicos são minimizar o uso de banda de rede e uso de recursos dos equipamentos com confiabilidade e algum nível de garantia de entrega. Estes princípios tornam o protocolo MQTT ideal para as comunicações emergentes “machine-to-machine” (M2M), e para as aplicações “Internet of Things” (Internet das coisas, IoT), além das aplicações mobile onde banda e potência da bateria são relevantes[3]. Atualmente se encontra na versão 5.0[4] e a 3.1.1[5] (padrão ISO), ambos são padrões OASIS.
MQTT-SN é uma variação do protocolo destinada a redes que não sejam baseadas em TCP/IP, como ZigBee.[6]
História[editar | editar código-fonte]
O MQTT é um protocolo de mensagens (camada de aplicação) projetado para um baixo consumo de banda de rede e recursos de hardware, desenvolvido pela IBM e Eurotech na década de 90[7].
Inicialmente, as letras "MQ" não tinham um significado específico para o protocolo, vinham de uma linha de produtos da IBM chamada 'MQ Series' [8]. O protocolo fornecia mensagens de publicação e subscrição sem filas de espera e foi especificamente projetado para dispositivos com recursos limitados, baixa largura de banda e redes de alta latência, assim como as linhas discadas e ligações via satélite.
Em 1999, Andy Stanford-Clark (IBM) e Arlen Nipper (Cirrus Link, Eurotech) criaram a primeira versão do protocolo MQTT[9]. Sua primeira aplicação foi destinada ao monitoramento de oleodutos. O objetivo era um protocolo leve com economia de banda e baixo consumo de energia e hardware, uma vez que os aparelhos eram conectados via satélite que, na época, era um recurso extremamente caro.[10]
Em 2013, a IBM submeteu o MQTT v3.1 ao organismo de especificação da OASIS com uma carta que assegurava que apenas alterações menores à especificação poderiam ser aceitas.[11]
Atualmente, MQTT é um protocolo de comunicação máquina para máquina (M2M - Machine to Machine) com foco em Internet of Things (IoT).
Príncipios do MQTT[editar | editar código-fonte]
O protocolo MQTT utiliza o padrão Publish-Subscriber no qual quando um elemento da rede deseja obter uma informação, é feita a subscrição para um outro elemento na rede capaz de gerir as publicações e subscrições — este elemento é conhecido como broker. Do mesmo modo, quando um elemento deseja fazer uma publicação com novas informações, o fazem por meio do broker. Atualmente existem brokers MQTT open-source baseados em sistema de nuvem[12]
É através do broker que o MQTT estrutura seu armazenamento de dados, referenciando-os como tópicos. Cada tópico se refere a uma estrutura de publicação (publisher) e também possibilita a leitura (subscriber) de dados. Elementos da rede podem enviar diversos tópicos para o broker e subscribers podem escolher os tópicos que desejam subscrever, há, inclusive, a possibilidade de elementos serem simultaneamente publishers e subscribers.
MQTT métodos (methods)[editar | editar código-fonte]
MQTT define pacotes de controle (Control Packets) [13] para indicar a ação desejada a ser executada pelo recurso desejado. O MQTT possui uma estrutura de pacotes de controle própria, que basicamente é constituída de três partes[14] principais: Cabeçalho fixo, cabeçalho variável e o payload.
Cabeçalho fixo — composto de ao menos [3] 2 bytes, possui 4 bits (posição byte 1, bits 7–4) designados para definir o tipo do pacote de controle, 3 bits para flags (posição byte 1, bits 3–0) e um byte adicional para suportar bits adicionais do cabeçalho variável e payload. Flags: atualmente a maior parte dos parâmetros de flag (CONNECT, CONNACK...) encontram-se reservados para usos futuros. Apenas o tipo PUBLISH possui funções próprias e possui definições para entrega DUP, qualidade de serviço QoS e opções de retenção RETAIN.
Cabeçalho variável — nem todos os tipos de mensagem MQTT possuem um cabeçalho variável, que basicamente traz informações da identificação do pacote. Os tipos de pacotes de controle que usam identificadores são PUBLISH se QoS > 0), SUBSCRIBE, UNSUBSCRIBE e todos os derivados de confirmação (PUBACK, SUBACK, UNSUBACK, PUBREC...). Possui um tamanho de até 2 bytes.
Payload — inclui a mensagem como um todo (normalmente os tópicos). Os pacotes de confirmação (CONNACK, PUBACK, SUBACK…) não necessitam de um payload.
Os métodos são os seguintes:
- CONNECT:
- Cliente solicita uma ligação com um servidor
- CONNACK
- Reconhece solicitação de conexão
- PUBLISH
- publicar mensagem
- PUBACK
- reconhecimento de publicação
- PUBREC
- Publicação recebida. (QoS 2 Publicação recebida., part 1)
- PUBREL
- Publicação publicada. (QoS 2 Publicação recebida., part 2)
- PUBCOMP
- Publicação completada. (QoS 2 Publicação recebida., part 3)
- SUBSCRIBE
- Inscrever-se em um tópico
- SUBACK
- Reconhecimento de inscrição
- UNSUBSCRIBE
- Cancelamento de inscrição em um tópico
- UNSUBACK
- Reconhecimento de cancelamento de inscrição.
- PINGREQ
- PING request
- PINGRESP
- PING response
- DISCONNECT
- Notificação de desconexão
Categoria:Transmissão de dados Categoria:Protocolos de rede Categoria:Protocolos Internet Categoria:Arquitetura de redes
MQTT Broker[editar | editar código-fonte]
O Broker age como um correio, o MQTT não usa o endereço do dispositivo final, mas usa uma linha de assunto chamada "Tópico", e qualquer um que queira uma cópia de determinada mensagem deve se inscrever ao "Tópico". Múltiplos clientes podem receber uma mensagem de apenas um broker e, de maneira similar, também podem enviar mensagens à um só inscrito.
Cada cliente pode produzir ou receber dados atrvés de publicações ou inscrições, por exemplo, dispositivos podem publicar os dados de um sensor e ainda serem capazes de receber comandos de controle (MQTT é um protocolo de comunicação bi-direcional). Esse processo ajuda tanto no compartilhamento de dados como na gerência destes.
A arquitetura MQTT Broker permite que dispositivos e aplicações se tornem desacoplados e mais seguros. MQTT usa encriptação TLS(Transport Layer Security) para nomes de usuários, conexões e certificações adicionais, que requer que o cliente providencie um arquivo de certificação que condiz com o esperado pelo servidor. Os clientes não sabem os endereços IPs uns dos outros.
O Broker suporta tanto o MQTT padrão como MQTT para aplicações específicas como o Sparkplug.
O Broker é capaz de armazenar dados na forma de mensagens retidas, a fim de que novos inscritos a um tópico possam receber a informação mais recente diretamente. O Broker também mantêm dados de todas as informações da sessão conforme os dipositivos ligam e desligam, este processo é chamado de "Sessões persistentes".
As principais vantagens do MQTT Broker são:
- Eliminar vulnerabilidades e conexões inseguras
- Facilmente escalar de um dispositivos à vários
- Controlar e rastreiar todos os estados de conexão, incluindo credenciais de segurança e certificados
- Reduzir o gargalo de rede sem comprometer a segurança.
MQTT v5.0[editar | editar código-fonte]
Em 2019 a OASIS publicou a versão 5.0 do MQTT, os principais objetivos dessa nova função são[15]:
- Melhorias em escalabilidade para sistema de grande escala.
- Melhorias no sistema de detecção de erros.
- Formalizar padrões de projeto comuns.
- Adicionadas novas mecanismos de extensibilidade incluindo propriedades do usarios
- Melhorias de performance e suporte a clientes menores
Aplicações reais do MQTT[editar | editar código-fonte]
- OpenHAB a plataforma de código-aberto para automação residencial, que embarca MQTT bem como outros protocolos.
- Facebook Mesenger. O Facebook tem usado certas propriedades do MQTT no Messenger para conversas online. Contudo é incerto o quanto do MQTT é usado e para que.
- IECC Scalable, a última versão do IECC sistema de controle de sinais da DeltaRail usa MQTT para a comunicação dentro de várias partes de um sistema e dentre outros componentes de um sistema de sinalização. O MQTT providencia o framework de comunicação para um sistema que está de acordo com os padrões CENELEC de comunicação crítica-segura.
- Amazon Web Services anunciou Amazon IoT baseado no MQTT em 2015.
- Os serviços de infraestrutura do OpenStack são conectados por um MQTT, tendo o "Mosquitto" como o Broker.
- A Teltonika Networks RMS Solution usa o protocolo MQTT juntamente com o certificado TLS para prover comunicação segura entre dispositivos.
- A Adafruit lançou um serviço em nuvem baseado em MQTT para pessoas que desejam aprender mais sobre IoT. Este serviço chama-se Adafruit IO.
- O Microsoft Azure IoT Hub usa o MQTT como seu principal protocolo para mensagens de telemetria.
- O framework de automação residencial Pimatic, usado em Raspberry-Pi e baseado em Node.js, oferece plugin MQTT providenciando suporte para o protocolo MQTT.
- McAfee OpenDXL é baseado em MQTT com aprimoramentos aos Brokers de mensagem, para que estes possam entender, intrinsicamente, o formato de mensagem DXL e suportar recursos avançados como serviços.
- O serviço de compartilhamento de carro BMW Share Now usa MQTT.
Referências
- ↑ «FAQ - Frequently Asked Questions | MQTT» (em inglês)
- ↑ Especificação do protocolo MQTT versão 3.1.1 (em inglês)
- ↑ «MQTT» (em inglês). Consultado em 24 de setembro de 2019
- ↑ «MQTT Version 5.0». docs.oasis-open.org. Consultado em 24 de setembro de 2019
- ↑ «MQTT Version 3.1.1». docs.oasis-open.org. Consultado em 24 de setembro de 2019
- ↑ Especificação do protocolo MQTT for Sensor Networks (MQTT-SN) versão 1.2 (em inglês)
- ↑ Oliveira, Bruno (5 de fevereiro de 2020). «Dando uma breve análise no protocolo MQTT». Medium (em inglês). Consultado em 8 de junho de 2020
- ↑ HiveMQ - Introdução ao protocolo MQTT (em inglês)
- ↑ Oliveira, Bruno (5 de fevereiro de 2020). «Dando uma breve análise no protocolo MQTT». Medium (em inglês). Consultado em 28 de setembro de 2020
- ↑ Team, The HiveMQ. «Getting Started with MQTT». www.hivemq.com (em inglês). Consultado em 28 de setembro de 2020
- ↑ «Call for Participation: Message Queuing Telemetry Transport (MQTT) TC». lists.oasis-open.org. Consultado em 28 de setembro de 2020
- ↑ https://pt.wikipedia.org/wiki/Computa%C3%A7%C3%A3o_em_nuvem#:~:text=O%20armazenamento%20de%20dados%20%C3%A9,da%C3%AD%20a%20alus%C3%A3o%20%C3%A0%20nuvem.
- ↑ http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html MQTT Version 3.1.1 OASIS Standard
- ↑ Oliveira, Bruno (5 de fevereiro de 2020). «Dando uma breve análise no protocolo MQTT». Medium (em inglês). Consultado em 8 de junho de 2020
- ↑ «MQTT Version 5.0». docs.oasis-open.org. Consultado em 5 de novembro de 2020
Categoria:Transmissão de dados Categoria:Protocolos de rede Categoria:Protocolos Internet Categoria:Arquitetura de redes