Qu'est-ce que le protocole MQTT ?

MQTT est un protocole de messagerie basé sur des normes, ou un ensemble de règles, utilisé pour la communication de machine à machine. Les capteurs intelligents, les objets portés sur soi (wearables) et les autres appareils de l'Internet des objets (IoT) doivent généralement transmettre et recevoir des données sur un réseau aux ressources limitées et à la bande passante restreinte. Ces appareils IoT utilisent MQTT pour la transmission des données, car il est facile à implémenter et peut communiquer efficacement les données IoT. MQTT prend en charge la messagerie des appareils vers le cloud et du cloud vers l'appareil.

Pourquoi le protocole MQTT est-il important ?

Le protocole MQTT est devenu une norme pour la transmission de données IoT, car il offre les avantages suivants :

Léger et efficace

L'implémentation de MQTT sur l'appareil IoT nécessite des ressources minimales, de sorte qu'il peut même être utilisé sur de petits microcontrôleurs. Par exemple, un message de contrôle MQTT minimal peut ne contenir que deux octets de données. Les en-têtes des messages MQTT sont également de petite taille afin que vous puissiez optimiser la bande passante du réseau.

Évolutif

L'implémentation de MQTT nécessite une quantité minimale de code qui consomme très peu d'énergie en fonctionnement. Le protocole possède également des fonctionnalités intégrées pour prendre en charge la communication avec un grand nombre d'appareils IoT. Vous pouvez donc implémenter le protocole MQTT pour vous connecter à des millions de ces appareils.

Fiable

De nombreux appareils IoT se connectent sur des réseaux cellulaires peu fiables, avec une faible bande passante et une forte latence. MQTT possède des fonctionnalités intégrées qui réduisent le temps que le dispositif IoT prend pour se reconnecter au cloud. Il définit également trois niveaux de qualité de service différents pour garantir la fiabilité des cas d'utilisation IoT : au plus une fois (0), au moins une fois (1) et exactement une fois (2).

Sécurisé

MQTT permet aux développeurs de chiffrer facilement les messages et d'authentifier les appareils et les utilisateurs à l'aide de protocoles d'authentification modernes, tels que OAuth, TLS1.3, Customer Managed Certificates, etc.

Bonne prise en charge

Plusieurs langages comme Python disposent d'un support étendu pour implémenter le protocole MQTT. Les développeurs peuvent donc l'implémenter rapidement avec un codage minimal dans tout type d'application.

Quelle est l'histoire du protocole MQTT ?

Le protocole MQTT a été inventé en 1999 pour être utilisé dans l'industrie pétrolière et gazière. Les ingénieurs avaient besoin d'un protocole offrant une bande passante et une consommation batterie minimales pour surveiller les oléoducs par satellite. Au départ, le protocole était connu sous le nom de Message Queuing Telemetry Transport, en raison du produit MQ Series d'IBM qui a pris en charge sa phase initiale. En 2010, IBM a publié MQTT 3.1 en tant que protocole libre et ouvert que tout le monde peut implémenter, qui a ensuite été soumis, en 2013, à l'organisme de spécification OASIS (Organization for the Advancement of Structured Information Standards) pour être maintenu. En 2019, une version 5 améliorée de MQTT a été publiée par OASIS. Désormais, MQTT n'est plus un acronyme, mais est considéré comme le nom officiel du protocole. 

Quel est le principe de MQTT ?

Le protocole MQTT fonctionne sur les principes du modèle de publication/abonnement. Dans la communication réseau traditionnelle, les clients et les serveurs communiquent directement entre eux. Les clients demandent des ressources ou des données au serveur, puis le serveur les traite et renvoie une réponse. Cependant, MQTT utilise un modèle de publication/abonnement pour découpler l'expéditeur du message (éditeur) du récepteur du message (abonné). Au lieu de cela, un troisième composant, appelé agent de messagerie, gère la communication entre les éditeurs et les abonnés. La tâche de l'agent est de filtrer tous les messages entrants des éditeurs et de les distribuer correctement aux abonnés. L'agent découple les éditeurs et les abonnés comme ci-dessous :

Découplage spatial

L'éditeur et l'abonné ne connaissent pas l'emplacement du réseau de l'autre et n'échangent pas d'informations telles que les adresses IP ou les numéros de port.

Découplage temporel

L'éditeur et l'abonné ne fonctionnent pas ou n'ont pas de connectivité réseau au même moment.

Découplage de la synchronisation

Les éditeurs et les abonnés peuvent envoyer ou recevoir des messages sans s'interrompre mutuellement. Par exemple, l'abonné ne doit pas attendre que l'éditeur envoie un message.

Que sont les composants MQTT ?

MQTT implémente le modèle de publication/abonnement en définissant les clients et les agents comme ci-dessous.

Client MQTT

Un client MQTT est tout appareil, du serveur au microcontrôleur, qui exécute une bibliothèque MQTT. Si le client envoie des messages, il agit comme un éditeur, et s'il reçoit des messages, il agit comme un récepteur. Fondamentalement, tout appareil qui communique à l'aide de MQTT sur un réseau peut être appelé un appareil client MQTT.

Agent MQTT

L'agent MQTT est le système dorsal qui coordonne les messages entre les différents clients. Les responsabilités de l'agent comprennent la réception et le filtrage des messages, l'identification des clients abonnés à chaque message et l'envoi des messages à ces derniers. Il est également responsable d'autres tâches telles que :

  • Autoriser et authentifier les clients MQTT
  • Transmettre des messages à d'autres systèmes pour une analyse plus approfondie
  • Traiter les messages et les sessions clients manqués

Connexion MQTT

Les clients et les agents commencent à communiquer en utilisant une connexion MQTT. Les clients initient la connexion en envoyant un message CONNECT à l'agent MQTT. L'agent confirme qu'une connexion a été établie en répondant par un message CONNACK. Le client MQTT et l'agent ont tous deux besoin d'une pile TCP/IP pour communiquer. Les clients ne se connectent jamais entre eux, uniquement avec l'agent.

Comment fonctionne MQTT ?

Un aperçu du fonctionnement de MQTT est donné ci-dessous. 

  1. Un client MQTT établit une connexion avec l'agent MQTT.
  2. Une fois connecté, le client peut soit publier des messages, soit s'abonner à des messages spécifiques, soit faire les deux.
  3. Lorsque l'agent MQTT reçoit un message, il le transmet aux abonnés qui sont intéressés.

Examinons les détails pour mieux comprendre.

Rubrique MQTT

Le terme « rubrique » (topic) fait référence aux mots-clés que l'agent MQTT utilise pour filtrer les messages destinés aux clients MQTT. Les rubriques sont organisées de manière hiérarchique, à l'instar d'un répertoire de fichiers ou de dossiers. Par exemple, considérons un système de maison intelligente fonctionnant dans une maison à plusieurs niveaux qui possède différents appareils intelligents à chaque étage. Dans ce cas, l'agent MQTT peut organiser les rubriques comme suit :

notremaison/rez-de-chaussée/salon/lumière

notremaison/premierétage/cuisine/température

Publication MQTT

Les clients MQTT publient des messages qui contiennent la rubrique et les données au format octet. Le client détermine le format des données, comme les données textuelles, les données binaires, les fichiers XML ou JSON. Par exemple, une lampe dans le système de maison intelligente peut publier un message allumer pour la rubrique salon/lumière.

Abonnement MQTT

Les clients MQTT envoient un message SUBSCRIBE (S'ABONNER) à l'agent MQTT, pour recevoir des messages sur les rubriques qui les intéressent. Ce message contient un identifiant unique et une liste d'abonnements. Par exemple, l'application de maison intelligente sur votre téléphone veut afficher le nombre de lumières allumées dans votre maison. Il s'abonnera à la rubrique lumière et augmentera le compteur pour tous les messages allumer

Qu'est-ce que MQTT over WSS ?

MQTT over WebSockets (WSS) est une implémentation de MQTT permettant de recevoir des données directement dans un navigateur Web. Le protocole MQTT définit un client JavaScript pour fournir un support WSS aux navigateurs. Dans ce cas, le protocole fonctionne comme habituellement, mais ajoute des en-têtes supplémentaires aux messages MQTT pour prendre également en charge le protocole WSS. Vous pouvez le considérer comme la charge utile du message MQTT enveloppée dans une enveloppe WSS.

MQTT est-il sécurisé ?

La communication MQTT utilise le protocole SSL pour protéger les données sensibles transmises par les appareils IoT. Vous pouvez mettre en œuvre l'identité, l'authentification et l'autorisation entre les clients et l'agent en utilisant des certificats SSL et/ou des mots de passe. L'agent MQTT authentifie généralement les clients à l'aide de leurs mots de passe ainsi que des identifiants client uniques qu'il attribue à chaque client. Dans la plupart des implémentations, le client authentifie le serveur à l'aide de certificats ou de consultations DNS (DNS lookups). Vous pouvez également mettre en œuvre des protocoles de chiffrement avec MQTT. 

MQTT est-il conforme au style d'architecture REST (RESTful) ?

MQTT n'est pas conforme au style d'architecture REST (RESTful). REST (Representational State Transfer) est une approche architecturale de la communication réseau qui utilise le modèle de communication demande-réponse entre les émetteurs et les récepteurs de messages. En revanche, MQTT (Message Queuing Telemetry Transport) utilise le modèle de communication publish/subscribe (publier/s'abonner) dans la couche d'application et nécessite une connexion TCP permanente pour transmettre les messages en mode push. Cependant, la version 5 de MQTT ajoute une nouvelle méthode de demande/réponse pour agir de manière similaire à REST, dans laquelle l'éditeur peut joindre une rubrique de réponse spécial, que le récepteur traite et génère une réponse appropriée.

Comment AWS peut-il prendre en charge votre implémentation MQTT ?

AWS IoT Core est un service entièrement géré qui vous permet de connecter des milliards d'appareils IoT et d'acheminer des milliers de milliards de messages vers les services AWS. Vous pouvez :

  • Connecter, gérer et mettre à l'échelle vos flottes d'appareils de manière simple et fiable sans avoir à provisionner ou gérer des serveurs.
  • Choisissez votre protocole de communication préféré, dont MQTT, HTTPS, MQTT sur WSS et LoRaWAN.
  • Sécurisez les connexions et les données des appareils grâce à l'authentification mutuelle et au chiffrement de bout en bout.
  • Filtrer, transformer et traiter les données des appareils à la volée, en fonction des règles de gestion que vous avez définies.

Démarrez avec MQTT sur AWS en créant un compte gratuit dès aujourd'hui.

MQTT avec AWS : prochaines étapes

Consulter les ressources supplémentaires relatives au produit
En savoir plus sur les services d'internet des objets 
Créer gratuitement un compte

Obtenez un accès instantané à l'offre gratuite AWS. 

S'inscrire 
Commencer à créer sur la console

Commencez à créer avec AWS dans la Console de gestion AWS.

Se connecter