Análise de desempenho: MQTT



ANÁLISE DE DESEMPENHO PROTOCOLO MQTT



Introdução 

Como já foi comentado e demonstrado em outras postagens, o MQTT é um protocolo muito utilizado de internet das coisas, por conta disso, foi feito uma análise de desempenho do MQTT e esse estudo será apresentado nesta postagem. 


Desenvolvimento

O protocolo MQTT é um dos mais usados para internet das coisas, utiliza o paradigma “Publisher/Subscriber” e um middleware, chamado “Broker”, para a transmissão de mensagens entre clientes. O MQTT funciona de tal maneira que o cliente “Publisher” envia uma mensagem e a escreve em um determinado tópico, através do broker, que a envia para o cliente “Subscriber” que estiver inscrito neste mesmo tópico. Tendo como objetivo geral realizar uma análise do protocolo MQTT, foram realizados testes, de tal forma que se permitiu analisar e avaliar o tempo em que o protocolo MQTT transmitiu os dados especificados. Através de uma aplicação codificada em Python, foi possível fazer esta avaliação. As seguintes seções explicam alguns pontos que envolveram esta análise, ambiente, aplicação e metodologia. 

Ambiente

Prevendo diferentes aplicações, o ambiente criado constitui-se de um Desktop com sistema operacional Ubuntu 17.04, o qual implementou-se o broker Mosquitto, duas Beagle Bones Black, um módulo ESP8266-12F e um Osciloscópio. O tráfego de rede foi produzido na própria interface local da máquina de aplicação e foi utilizada, para fornecer a conexão de transferência de dados, rede Ethernet e Wi-Fi.  

Aplicação

Para que os testes fossem válidos, elaborou-se uma aplicação específica para o protocolo MQTT, um “pseudo” request/response.O código desenvolvido estabeleceu que ambos os clientes seriam Publisher e Subscriber, fazendo com que o cliente Pubsh que enviou os dados, os receba do cliente Subsc, para analisar e avaliar, foi calculado o tempo dessa transferência, ida e volta, entre os clientes. 

Programação MQTT 

Como já dito anteriormente, a aplicação foi codificada em Python utilizando a IDE PyCharm, através da biblioteca paho-mqtt-client e paho-umqtt-client. As figuras destacadas a seguir apresentam os códigos da aplicação utilizada nos testes feitos. 



Figura 1- Código Subs BeagleBone

Figura 2- Código Pubs BeagleBone




Figura 3- Código Subs Esp8266





Para cada dispositivo foi desenvolvido um código diferente considerando seu sistema operacional e suas portabilidades. 

Testes


Os testes efetuados são direcionados à transferência de dados entre dois clientes, onde ambos são publicadores e inscritos, através da rede Ethernet ou Wi-Fi e do protocolo MQTT analisando sua capacidade e o seu comportamento. Os elementos transmitidos consistiram de um objeto “bytes” criado com um número dado de Bytes, assegurando o tamanho correto dos dados enviados.

As publicações constituíram-se de mensagens de 32bits, definidas através do objeto byte. Para esta análise específica, prevendo algumas aplicações futuras, foram feitos 2 testes diferentes de transferência de mensagens, modificando apenas os clientes.

No primeiro teste a transferência de dados foi entre duas BeagleBonesBlack utilizando Ethernet e o Broker Mosquitto. Afim de medir com osciloscópio a diferença entre o tempo do envio e do recebimento da mensagem, foi instalado um Led em ambas, tornando possível a medição. 



 


Figura 4- Projeto do Teste 1


Figura 5- TestBed teste 1



No segundo teste a troca relacionou uma BeagleBoneBlack e uma ESP8266-12F utilizando as mesmas condições do teste 1, com o adicional do Wi-Fi pela parte do recebimento dos dados com o módulo ESP. 

 

 
Figura 6- Projeto do Teste 2





 Figura 7- TestBed teste2
Resultados e discussões


Os resultados adquiridos nos testes feitos foram discutidos, avaliados e serão apresentados nesta seção.


Figura 8- Resultado do Teste 1


Figura 9- Resultado do Teste 1



Na Figura 6 e 7 os resultados obtidos através do osciloscópio do teste 1 são apresentados. É possível calcular o tempo entre o recebimento a partir da diferença entre as linhas do canal 1 (CH1 em amarelo) e do canal 2 (CH2 em azul), que no teste 1 foi de 10ms. 


Figura 10- Resultado do Teste 2


Figura 11- Resultado do Teste 2


As figuras 8 e 9 apresentam os resultados obtidos do teste 2. O tempo obtido a partir da transferência de dados entre a BeagleBoneBlack e a Esp8266 foi de 25ms.
A aplicação MQTT funcionou conforme o esperado no teste 1, porém no teste 2 os resultados foram um pouco abaixo do desejado, mas ainda bons tendo em vista as futuras aplicações. O baixo desempenho no teste 2 podem ser justificados por conta do Wi-Fi e da rede utilizada, que mesmo sendo privada, possuía algumas limitações.  Porém o MQTT provou ser rápido e eficiente, um ótimo protocolo para internet das coisas para monitoramento, acionamento, ou qualquer outra aplicação em tempo real. 


Códigos: https://github.com/zanettivictoria/DesempenhoMQTT





Comentários

Postagens mais visitadas deste blog

ESP's e Node-Red

Meus primeiros passos com a ESP32