MQTT

MQTT
Modifica el valor a Wikidata

TipusProtocol
Versió inicial1999 Modifica el valor a Wikidata
Versió estable3.1 / 2013
Llicènciaestàndard ISO
Part deInternet de les coses Modifica el valor a Wikidata
Característiques tècniques
Sistema operatiuMultiplataforma
Equip
Creador/sAndy Stanford-Clark i Arlen Nipper de Cirrus Link
Més informació
Lloc webmqtt.org
Stack ExchangeEtiqueta Modifica el valor a Wikidata

MQTT[1] (Message Queuing Telemetry Transport) és un protocol de missatgeria publish-subscribe basat en el protocol TCP/IP. Inicialment desenvolupat per Andy Stanford-Clark (IBM) i Arlen Nipper (EuroTech), i després publicat com a codi obert. MQTT v3.1.1 és ara un estàndard d'OASIS, l'especificació d'aquest protocol és disponible en HTML i PDF.[2][3]

Funcionalitat

Propietats de MQTT :

  • Estàndard obert.
  • Estructura senzilla (mínim nombre de bytes per cada missatge).
  • Fiabilitat (existeix la funció QoS Quality of Service), que ens informa de l'estat de la comunicació.
  • Simplicitat (protocol que està definit en 43 pàgines).
Fig.1 Missatge tipus CONNECT

MQTT defineix un petit conjunt de missatges : [4]

Tipus de missatge Valor Descripció
CONNECT 1 Petició del client per a connectar-se al servidor (vegeu Fig1)
CONNACK 2 Reconeixement de la connexió
PUBLISH 3 Edició missatge
PUBACK 4 Reconeixement de l'edició
PUBREC 5 Edició rebuda (part 1)
PUBREL 6 Edició alliberada (part 2)
PUBCOMP 7 Edició completa (part 3)
SUBSCRIBE 8 Petició de subscripció de client
SUBACK 9 Reconeixement de subscripció
UNSUBSCRIBE 10 Petició de desubscripció de client
UNSUBACK 11 Reconeixement de desubscripció
PINGREQ 12 Petició de PING
PINGRESP 13 Resposta de PING
DISCONNECT 14 Client deconnectant

Comparativa de protocols MQTT versus HTTP

Benchmarking de mida de trama: [5]

Acció Protocol HTTP Protocol MQTT Relació HTTP/MQTT
Rebre una unitat de dades (la mínima) 320 bytes 69 bytes 4,6
Enviar una unitat de dades (la mínima) 320 bytes 47 bytes 6,8
Rebre 100 unitats de dades (la mínima) 12600 bytes 2445 bytes 5,1
Enviar 100 unitats de dades (la mínima) 14100 bytes 2126 bytes 6,6

Benchmarking de característiques :

Característica Protocol HTTP Protocol MQTT
Model Centrat a les dades Centrat al document
Accions GET, POST, DELETE

especificació complexa

Pub/Sub/Unsub

especificació senzilla

Mida dels missatges Missatges llargs Missatges curts
Quality of service No, cal implementar en

la capa d'aplicació

3 nivells : el millor, almenys 1 cop

i exactament 1 cop

Distribució de dades NO, només 1 a 1 Sí, 1 a n

Brokers MQTT

Fig.2 Exemple de Broker

Existeixen molts brokers MQTT disponibles, varien en la seua funcionalitat, alguns d'ells ofereixen funcionalitats addicionals.

Els principals brokers de codi obert són:

[6]

Un estudi comparatiu de les característiques d'aquests diferents brokers (ActiveMQ, Apollo, JoramMQ, Mosquitto i RabbitMQ) es troba disponible aquí.

Biblioteques de clients

Nombroses biblioteques estan disponibles per programar clients MQTT, per a la majoria dels llenguatges (C, C++, Java, JavaScript, PHP, Python, etc.) i per a la majoria de les plataformes (Linux, Windows, iOS, Android, Arduino, etc.).[7]

El projecte Eclipse/Paho ofereix implementacions de codi obert dels protocols de missatgeria oberts i estàndards destinats a les aplicacions noves i emergents per a la comunicació M2M (màquina-a-màquina) i de l'Internet de les coses (IoT).

Aplicacions reals

En el món real, hi ha nombrosos projectes que utilitza el protocol MQTT :

  • Facebook Messenger : Facebook ha utilitzat aspectes de MQTT en Facebook Messenger.
  • L'ultima_versio del sistema de control de senyalització de l'IECC Scalable DeltaRail utilitza MQTT per les comunicacions entre les diferents parts del sistema i els components del sistema de senyalització.
  • CloudMQTT és un servei de missatgeria que utilitza el protocol MQTT.

[8]

Referències

  1. MQTT 3.1.1 specification
  2. [enllaç sense format] http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.pdf
  3. «MQTT Essentials» (en anglès). HiveMQ, 20-09-2015.
  4. «Programming with Reason» (en anglès). http://programmingwithreason.com.+Arxivat de l'original el 2017-07-07. [Consulta: 3 juliol 2017].
  5. «Internet of things» (en anglès). https://www.slideshare.net.+[Consulta: 6 juliol 2017].
  6. Podem trobar una llista dels brokers disponibles aquí.
  7. La llista de les biblioteques de clients disponibles és accessible des d'aquí.
  8. En un llibre titulat "Building Smarter Planet Solucions with MQTT and IBM WebSphere MQ Telemetry" IBM descriu diversos exemples d'aplicacions en el domini de la salut i de l'energia.