Qu’est-ce que le MQTT ?

Message Queuing Telemetry Transport (MQTT) est un protocole de messagerie de publication et d’abonnement populaire et léger, idéal pour connecter des appareils et des applications de l’internet des objets (IdO) ou de machine à machine (M2M) sur internet. MQTT est conçu pour fonctionner efficacement dans des environnements à faible bande passante ou à faible consommation, ce qui en fait un choix idéal pour les applications comportant un grand nombre de clients distants. Il est utilisé dans divers secteurs, notamment l’électronique grand public, l’automobile, les transports, la fabrication et les soins de santé.

Comment fonctionne le MQTT ?

Les appareils ou applications connectés via MQTT sont appelés clients. Ces clients publient et/ou s’abonnent à des messages sur un sujet spécifique ou sur plusieurs sujets. Les clients abonnés reçoivent tous les messages publiés sur ce sujet, ce qui permet un échange de données efficace et tolérant aux pannes entre un grand nombre d’appareils et de services.

Au cœur de l’architecture MQTT se trouve un courtier, c’est-à-dire un serveur chargé de suivre les clients (et les sujets auxquels ils sont abonnés), de traiter les messages et de les acheminer vers les systèmes appropriés.

Versions du protocole MQTT

Plusieurs versions clés du protocole MQTT ont été adoptées en tant que norme. L’organisation OASIS gère les révisions du protocole et maintient une spécification complète pour chaque version. Chaque révision de MQTT a élargi l’ensemble des fonctionnalités du protocole, il est donc important de savoir à quelle version de MQTT vos appareils et votre courtier adhèrent.

Types et format des messages MQTT

Il existe plusieurs types de messages MQTT, et chaque type de message contient un format spécifique que les appareils et applications conformes doivent respecter. Les révisions du protocole MQTT varient en termes de format et de types de messages. Une liste complète des types de messages est disponible dans chaque spécification du protocole MQTT.

Les trois types de messages les plus courants sont CONNECT, PUBLISH et SUBSCRIBE. Chaque message MQTT contient un en-tête, une charge utile et des drapeaux facultatifs. Selon le type de message, la charge utile peut être de longueur variable. Par exemple, dans un message PUBLISH, la charge utile contient les données à envoyer à tous les dispositifs abonnés et la longueur du champ de données a une incidence directe sur la taille du message. Par défaut, les dispositifs MQTT se connectent sur le port 1883 de manière non sécurisée ou sur le port 8883 lorsque le cryptage SSL/TLS a été activé.

Voici un exemple de MQTT en action

Les voitures intelligentes sont un excellent exemple de MQTT en action. Comme les constructeurs automobiles ajoutent de nouvelles fonctionnalités pour tout prendre en charge, des diagnostics à distance et de la gestion de flotte aux paiements de carburant et aux divertissements, MQTT est devenu une norme commune pour les voitures connectées. Contrairement au protocole Hypertext Transfer Protocol (HTTP), MQTT peut maintenir une session persistante même lorsqu’une voiture entre et sort de zones mortes ou si sa connexion change de tour cellulaire. MQTT prend également en charge les communications bidirectionnelles, ce qui facilite l’envoi et la réception de données par la voiture et l’application en cloud sans attendre la réponse de l’autre partie.

Quelle est la différence entre HTTP et MQTT ?

HTTP et MQTT sont tous deux des protocoles réseau utilisés pour transmettre des données sur internet. Voyons leurs différences.

HTTP

  • Protocole demande-réponse dans lequel un client envoie une demande à un serveur et le serveur répond avec les données demandées.
  • Principalement conçu pour transmettre des contenus web (tels que des documents HTML, des images et des données de formulaire) entre les serveurs web et les navigateurs.
  • Exemple : un navigateur web (le client) envoie une requête à un serveur web, et le serveur répond avec des données sous la forme d’une page web.

MQTT

  • Protocole de messagerie léger de type « publier-abonner » dans lequel les clients s’abonnent à des sujets et reçoivent des messages publiés sur ces sujets par d’autres clients.
  • Conçu pour les topologies de réseau et les dispositifs où la faible bande passante, la stabilité de la connexion et la consommation d’énergie sont des considérations importantes.
  • Exemple : le scénario de la voiture intelligente ci-dessus.
Pourquoi utiliser MQTT dans l’Internet des objets (IdO) ?

De nombreuses caractéristiques de MQTT en font le protocole idéal pour la messagerie entre les appareils IdO (les « objets » de l’IdO) et les systèmes dorsaux. Nous nous concentrons ici sur quatre caractéristiques :

  • Léger - MQTT a une empreinte de code réduite qui fonctionne bien dans les appareils ayant une puissance de traitement et une mémoire limitées, tels que les capteurs.
  • Fiable - De nombreux appareils IdO se connectent sur des réseaux cellulaires. MQTT est un protocole adapté aux réseaux à faible bande passante qui nécessitent des messages compacts utilisant moins de données. Cela rend MQTT plus fiable, même lorsque la bande passante du réseau est limitée ou instable.
  • Évolutif - Le modèle de publication et d’abonnement est facile à faire évoluer avec l’ajout de dispositifs et de systèmes dorsaux. Un exemple de dispositif unique publiant vers deux réseaux dorsaux distincts (abonnés) est celui d’un compteur résidentiel intelligent qui envoie des données sur l’utilisation des services publics à la fois aux systèmes du service public pour la facturation et à une application orientée client à laquelle le propriétaire peut accéder pour garder un œil sur la consommation d’énergie de sa résidence.
  • Sécurisé - Les messages MQTT peuvent être cryptés avec la norme Transport Layer Security (TLS) et prendre en charge les informations d’identification qui peuvent être utilisées pour l’authentification. Cela fait de MQTT un protocole de messagerie sécurisé dans les applications IdO qui peuvent gérer des informations sensibles telles que les relevés de moniteurs de santé provenant de divers appareils médicaux.
Quel est le protocole de transport utilisé par MQTT ?

MQTT utilise le protocole TCP/IP (Transmission Control Protocol/Internet Protocol) comme protocole de transport sous-jacent. Ce protocole de réseau largement utilisé garantit que les messages sont envoyés de manière fiable entre les clients et les courtiers.

Plusieurs raisons expliquent pourquoi TCP/IP est considéré comme fiable et efficace :

  • Détection et correction des erreurs - Diverses techniques permettent de vérifier l’intégrité des paquets de données et des mécanismes de retransmission permettent de récupérer les paquets perdus.
  • Contrôle de flux - Les données sont transmises à des taux optimaux pour un réseau donné, ce qui permet d’éviter les retards de transmission et de favoriser une communication efficace.
  • Multiplexage - Plusieurs flux de données peuvent être envoyés sur une seule connexion, de sorte que plusieurs applications peuvent utiliser la même connexion en même temps.
  • Compatibilité - Fonctionne avec une grande variété d’appareils et de systèmes d’exploitation.
  • Évolutivité - Conçu pour fonctionner dans des réseaux vastes et complexes sans compromettre les performances, même en cas de trafic important.

Bien qu’il soit le plus courant, le protocole TCP/IP n’est pas le seul choix pour le transport des messages MQTT. Le protocole MQTT fonctionne également avec le protocole UDP (User Datagram Protocol) et les WebSockets.

Ressources supplémentaires

Nous sommes fiers d’offrir les ressources gratuites suivantes pour vous aider à poursuivre vos recherches sur la façon dont NGINX peut sécuriser, équilibrer la charge et fournir une haute disponibilité pour les systèmes IdO basés sur MQTT.

Blog

Docs