MQTT : comment fonctionne ce protocole ?

MQTT : comment fonctionne ce protocole ?

MQTT. Le MQTT est un protocole qui assure une communication entre deux appareils utilisant des technologies différentes. Quels sont ses caractéristiques, qu'est-ce que les QoS et quel usage sur Raspberry Pi ?

Qu'est-ce que MQTT ?

MQTT, pour "Message Queuing Telemetry Transport", est un protocole open source de messagerie qui assure des communications non permanentes entre des appareils par le transport de leurs messages. 

Il a été créé en 1999 par Andy Stanford-Clark, ingénieur chez IBM, et Arlen Nipper, chez EuroTech, principalement dans la communication M2M pour permettre à deux appareils utilisant des technologies différentes de communiquer. "Devenu une norme ISO en 2016, MQTT connectait déjà à cette date des millions d'appareils dans le monde entier, dans toutes sortes d'applications et d'industries. C'est une technologie d'avenir", affirme Fabien Pereira Vaz, technical sales manager chez Paessler AG. Les géants du web parmi lesquels AWS ou Microsoft utilisent MQTT pour remonter les données sur leur plateforme cloud

Qu'est-ce qu'un broker MQTT ?

Pour communiquer avec MQTT, les objets connectés utilisent un broker, c'est-à-dire un programme en charge de la réception des informations publiées afin de les transmettre aux clients abonnés. Le broker a un rôle de relais. Il existe plusieurs types de brokers : ActiveMQ, JoramMQ, Mosquitto ou encore, RabbitMQ.

Comment fonctionne ce protocole ?

MQTT est un protocole standardisé reposant sur TCP/IP. "Il est particulièrement utilisé pour transporter des données des objets connectés sur le cloud. Son processus se divise en quatre étapes distinctes : connexion, authentification, communication, terminaison. MQTT permet la gestion des déconnexions et des reconnexions de devices de manière simplifiée. La taille maximale d'un message envoyé avec MQTT est de 256 Mo.

La Qualité de Service (QoS) est ainsi une caractéristique clé du protocole MQTT. Il s'agit d'un accord qui définit la garantie de livraison d'un message spécifique et le type d'authentification utilisé. Il y a trois niveaux de QoS dans MQTT : plus une fois, au moins une fois et exactement une fois.

Les deux côtés d'un message envoyé sont à prendre en compte : la remise du message du client au broker et le message du broker au client abonné. Le client qui publie le message sur le broker définit le niveau de QoS du message lorsqu'il envoie le message au broker. Le courtier transmet ce message aux clients abonnés, tout en utilisant le niveau de QoS que chaque client abonné définit au cours du processus d'abonnement. Si le client abonné définit une qualité de service "inférieure" à celle du client, le broker transmet le message avec un QoS inférieur. La QoS donne ainsi au client le pouvoir de choisir un niveau de service correspondant à la fiabilité de son réseau ainsi qu'à sa logique d'application.

Qu'est-ce que le broker Mosquitto et comment débuter avec ?

Mosquitto est le broker le plus souvent utilisé pour les projets ESP8266 (Arduino et Raspberry). Lancé en 2008, il est disponible sur toutes les plateformes (MacOS, Windows XP-10, Linux). Deux méthodes sont possibles pour l'installer : depuis le terminal d'un ordinateur (en connectant au préalable le clavier, la souris et le moniteur à un Pi), avant de le lancer depuis le terminal, ou (toujours par le biais d'un ordinateur) de l'installer en utilisant putty (SSH) et en accédant au Root.

Quelles alternatives à MQTT ?

Le protocole MQTT est le plus utilisé dans les environnements IoT, mais il existe d'autres alternatives :

  • modbus, 
  • HTLM, 
  • OPC-UA
  • AMQP,
  • CoAP,
  • etc.

MQTT sur NB-IoT avec le broker Nebraska 

"Même s'il est conçu pour être léger et n'utilise qu'une faible bande passante, les mécanismes de retransmission du MQTT basés sur TCP ainsi que sa sécurité basées sur TLS rend pratiquement impossible son utilisation sur NB-IoT à cause de la latence et des limitations de transmission sur ce type de connectivité", précise Hatem Oueslati, CEO d'IoTerop, start-up française spécialisée dans le device management. IoTerop a ainsi conçu un broker MQTT sécurisé pour récupérer les messages avec le protocole CoAP ou LWM2M des objets connectés utilisant le réseau NB-IoT, pour les transporter en MQTT vers la plateforme AWS IoT Core. Appelé Nebraska, ce broker développé par les deux entreprises offre une infrastructure légère. 

MQTT et la sécurité

"La sécurisation des équipements connectés doit être une priorité", rappelle Fabien Pereira Vaz, de Paessler AG. MQTT facilite le chiffrement des messages à l'aide de la couche de sécurité TLS et l'authentification des clients à l'aide de protocoles d'authentification modernes, tels que OAuth. Les entreprises qui utilisent MQTT doivent être attentives à ce que cela soit bien le cas car si un tiers accède à l'environnement, il peut s'abonner à tous les messages qui circulent. "Les actions effectuées sont toutes enregistrées, pour s'assurer qu'il n'y ait pas d'anomalie il suffit de tracer les opérations", indique Thomas Gayet, à la tête du CERT Digital Security.

Pourquoi utiliser MQTT ?

La principale caractéristique de MQTT est sa légèreté, le protocole ne requiert que des ressources minimales et peut donc être utilisé sur de petits microcontrôleurs. "L'idée de MQTT est de faire dialoguer des équipements qui ne disposent pas de ressources propres pour assurer une connexion permanente", détaille Fabien Pereira Vaz, de Paessler AG. Pour lui, MQTT se démarque par sa souplesse et sa simplicité de mise en œuvre, en plus d'assurer une transmission de données bidirectionnelle. Le protocole prend ainsi de l'importance dans les technologies opérationnelles de l'industrie.