Technologie

Maîtriser MQTT afin de libérer la puissance de l’IoT

Un billet de
Hugo Pelletier
10/10/2023
Image d'une personne tenant une tablette devant son visage. Sur la tablette il est marqué MQTT

Table des Matières

Maîtriser MQTT afin de libérer la puissance de  l’IoT

Qu'est-ce que MQTT  ?

Le protocole MQTT (Message Queuing Telemetry Transport) est un pilier de la communication dans l'arène de l'IoT. Il s'agit d'un protocole de messagerie léger conçu pour les situations où une faible empreinte bande passante est primordiale, ce qui en fait un choix idéal pour les applications IoT.

Origine et Évolution du MQTT

Le protocole MQTT a été créé en 1999 par le Dr Andy Stanford-Clark d'IBM et Arlen Nipper d'Arcom dans le but de répondre aux besoins de connectivité dans des environnements à faible bande passante et à haute latence. Avec l'évolution de l'Internet des Objets, MQTT a trouvé sa place en tant que protocole de choix pour de nombreuses applications IoT, en raison de sa nature légère et de sa capacité à maintenir des connexions fiables même dans des conditions réseau difficiles.

Principes fondamentaux du protocole MQTT

MQTT est un protocole basé sur le modèle de publication/abonnement qui offre une communication simplifiée entre les appareils. Dans ce modèle, les clients peuvent publier des messages sur un topic (sujet), et d'autres clients peuvent s'abonner à ce topic pour recevoir ces messages. Le protocole utilise un broker central pour gérer les messages et les distribuer aux clients abonnés, garantissant ainsi que les messages atteignent leur destination même en cas de déconnexions temporaires. Cette flexibilité et fiabilité font de MQTT un choix solide pour les communications IoT.

Pourquoi le MQTT est crucial pour l'IoT ?

L'Internet des Objets repose sur la capacité des appareils à communiquer efficacement entre eux et avec les systèmes centraux. MQTT excelle dans ce domaine grâce à sa faible empreinte, sa capacité à gérer de grandes quantités de clients simultanément, et son mécanisme de qualité de service qui assure que les messages sont livrés au niveau de fiabilité requis. De plus, la capacité de MQTT à maintenir des connexions stables sur des réseaux instables est inestimable dans des scénarios IoT où les appareils peuvent être situés dans des endroits éloignés ou difficiles d'accès.

Comment fonctionne le protocole MQTT ?

Mécanisme de fonctionnement du MQTT

MQTT, fonctionnant sur la base du protocole TCP/IP, opère suivant un schéma structuré englobant quatre phases principales : l'établissement de la connexion, l'authentification, l'échange de message et la clôture de la connexion. L'architecture MQTT se compose de deux entités fondamentales : les clients et les brokers. Les clients sont responsables de la publication des messages sur des canaux spécifiques, appelés topics, tandis que les brokers, jouant le rôle de serveurs, réceptionnent ces messages et les redirigent vers les clients qui sont abonnés aux topics en question.

Modèles de messagerie MQTT

Dans l'écosystème de messagerie de MQTT, les dispositifs incarnent des clients MQTT, habilités à publier un message sur des topics. Ces messages sont ensuite acheminés par un broker central qui se charge de les distribuer aux clients inscrits à ces topics. Cette configuration épurée favorise l'interaction entre un grand nombre de dispositifs, élément capital dans le contexte des applications IoT.

Ainsi, le mécanisme de fonctionnement et le modèle de messagerie de MQTT, bien que distincts, collaborent étroitement pour faciliter la circulation efficace des informations au sein d'un réseau, ce qui est primordial dans l'univers connecté des objets.

Niveaux de qualité de Service

La qualité de service (QoS) dans MQTT est assurée par trois niveaux. Le premier niveau, QoS 0, garantit une livraison de message au plus une fois, et la livraison n'est pas confirmée. Le deuxième niveau, QoS 1, assure que les messages sont livrés au moins une fois et que la livraison est confirmée. Le troisième niveau, QoS 2, garantit que les messages sont livrés exactement une fois en vérifiant la livraison de message et en éliminant les doublons.

Comment mettre en œuvre le MQTT ?

La mise en œuvre du protocole MQTT implique la configuration de brokers et de clients, ainsi que l'exploration d'outils spécifiques pour le développement et les tests. Voici comment vous pouvez procéder :

Configuration des Brokers et Clients MQTT 

La mise en place d'une architecture MQTT implique la configuration tant des brokers que des clients, afin d'assurer une communication fluide et sécurisée entre les différents acteurs du réseau.

1. Installation et Configuration des Brokers :

  • Choix du Broker : Le choix du broker est primordial, car il agit comme un pivot central pour la gestion des messages entre les clients. Mosquitto, HiveMQ et EMQX sont des brokers MQTT populaires, chacun ayant ses avantages et caractéristiques spécifiques.
  • Installation : L'installation d'un broker dépend du système d'exploitation en usage. Par exemple, sur un système Linux, l'installation de Mosquitto peut être réalisée via la commande sudo apt-get install mosquitto mosquitto-clients.
  • Démarrage et Contrôle : Post-installation, la plupart des brokers se lancent automatiquement. Leur statut peut être vérifié et contrôlé via des outils systèmes tels que systemctl pour Mosquitto.
  • Sécurisation de la Communication : Il est crucial de sécuriser la communication en configurant SSL/TLS sur le broker MQTT. L'obtention de certificats SSL, comme ceux proposés gratuitement par Let's Encrypt, est une étape nécessaire pour cette configuration.

2. Configuration des Clients :

  • Création de Clients : Les clients MQTT peuvent être créés dans divers langages de programmation. La configuration spécifique dépend du langage et de la bibliothèque utilisée.
  • Exemple avec C++ et Qt : Pour un client MQTT en C++, avec l'utilisation de Qt, il suffit d'ajouter le module MQTT dans le fichier .pro avec QT += mqtt, puis d'instancier QMqttClient.
  • Souscription à des Topics : Une fois le client configuré, la souscription à des topics spécifiques peut être effectuée pour recevoir les messages correspondants.

Le processus de configuration des brokers et des clients est un prérequis essentiel pour exploiter pleinement les capacités du protocole MQTT, facilitant ainsi la mise en place d'applications de communication efficaces et sécurisées.

Exploration des outils MQTT pour le developpement et les tests

1. Outils de Client MQTT :

  • MQTTX : Il s'agit d'un client desktop MQTT 5 élégant et multiplateforme qui fonctionne sur macOS, Linux et Windows. Il offre une interface conviviale de style chat qui permet de créer facilement plusieurs connexions MQTT/MQTTS et de publier/s'abonner à des messages MQTT.
  • MQTT Explorer : C'est un outil client MQTT open-source qui propose une interface utilisateur graphique (GUI) facile à utiliser avec une vue hiérarchique des topics. Il est multiplateforme et peut fonctionner sur Windows, macOS et Linux.

2. Outils en Ligne :

  • MQTT.fx : Un autre outil efficace en ligne est MQTT.fx, qui s'avère être un client MQTT robuste et populaire. Il propose une interface utilisateur simplifiée qui facilite la connexion à un broker MQTT, la publication et l'abonnement à des topics. Il est compatible avec diverses plateformes, offrant ainsi une flexibilité appréciable aux développeurs.
  • HiveMQ Websocket Client : Cet outil en ligne permet une interaction aisée avec votre broker MQTT via une interface Web. Il supporte la publication et la souscription à des topics MQTT tout en fournissant une vue claire des messages reçus et envoyés. La facilité d'utilisation de HiveMQ Websocket Client en fait un choix judicieux pour les tests et le débogage des configurations MQTT.

3. Outils de Simulation :

  • MQTT Simulator : Pour ceux qui cherchent à tester la performance et la robustesse de leur infrastructure MQTT, MQTT Simulator est l'outil de prédilection. Il simule un environnement avec des milliers de clients MQTT et de messages, permettant ainsi d'analyser la réactivité et la stabilité du système.
  • Broker Simulator : Un outil complémentaire au MQTT Simulator, le Broker Simulator permet de tester la performance des brokers MQTT dans divers scénarios. Il offre une analyse approfondie des métriques clés, aidant les développeurs à optimiser la configuration de leur broker pour une performance optimale.

4. Outils de Monitoring et d'Analyse :

  • MQTT Inspector : L'inspection et le monitoring des données MQTT sont cruciaux pour garantir un fonctionnement sans faille. MQTT Inspector est un outil puissant qui offre une visualisation complète des activités MQTT, facilitant ainsi la détection et la résolution des problèmes.
  • MQTT Stats : Pour une analyse approfondie, MQTT Stats recueille et présente les statistiques d'utilisation de votre infrastructure MQTT. Il permet une évaluation précise de la performance, aidant à identifier les zones d'amélioration pour une exploitation plus efficace.

5. Ressources Complémentaires :

  • Documentation et Communauté : La mise en place et le débogage des applications MQTT peuvent être grandement facilités par l'accès à une documentation complète et une communauté active. Des forums et des groupes de discussion dédiés, tels que Stack Overflow ou les forums officiels des brokers et outils MQTT, sont des ressources précieuses pour obtenir des conseils et résoudre les problèmes rencontrés.

Ces outils et ressources sont essentiels pour tout développeur travaillant avec MQTT. Ils facilitent non seulement le développement et les tests, mais contribuent également à l'optimisation et au monitoring des systèmes MQTT, assurant ainsi leur bon fonctionnement et leur performance optimale.

Comment sécuriser les communications MQTT ?

Fondamentaux de la sécurité dans MQTT

La sécurité dans MQTT est cruciale pour garantir la confidentialité, l'intégrité et l'authenticité des données transmises. Voici quelques fondamentaux pour sécuriser les communications MQTT :

  • SSL/TLS : L'utilisation de SSL (Secure Sockets Layer) ou TLS (Transport Layer Security) est une approche standard pour sécuriser les canaux de communication MQTT. Ces protocoles cryptographiques fournissent une connexion sécurisée en utilisant la cryptographie à clé symétrique pour assurer la confidentialité des données transmises sur le canal.
  • Authentification : L'authentification du serveur et des clients est également importante pour garantir que seules les entités autorisées peuvent communiquer via le broker MQTT. MQTT supporte l'authentification du client et du serveur au niveau du protocole, ainsi que les vérifications d'autorisation sur les clients.
  • Autorisation : Définir des politiques d'autorisation pour contrôler les actions que peuvent effectuer les clients MQTT, comme la publication ou l'abonnement à des topics spécifiques, est une autre étape cruciale pour renforcer la sécurité.
  • Infrastructure Réseau : La compréhension et la sécurisation de l'infrastructure réseau sur laquelle le broker MQTT est déployé sont également fondamentales. Par exemple, l'utilisation de pare-feu pour filtrer le trafic non désiré et bloquer les attaquants potentiels est une pratique courante.

Meilleures pratiques pour des déploiement MQTT sécurisés

1. Mise en œuvre de SSL/TLS :

  • Configurez SSL/TLS sur votre broker MQTT pour chiffrer les données transmises sur le réseau.
  • Utilisez des certificats SSL provenant de sources fiables comme Let's Encrypt.

2. Authentification et Autorisation :

  • Mettez en place une authentification forte pour les clients et les serveurs.
  • Définissez des politiques d'autorisation précises pour contrôler l'accès aux différents topics MQTT.

3. Configuration du Pare-feu :

  • Configurez les règles du pare-feu pour ne permettre que le trafic attendu vers et depuis le broker MQTT, en bloquant tout le trafic non désiré.
  • Ne bloquez pas les ports standard MQTT (1883 pour MQTT sur TCP et 8883 pour MQTT sur TLS) à moins que vous ayez des raisons spécifiques de le faire.

4. Surveillance et Audit :

  • Mettez en place une surveillance continue du système pour détecter toute activité suspecte en temps réel.
  • Effectuez des audits réguliers de la sécurité pour identifier et corriger les vulnérabilités potentielles.

5. Mise à jour régulière :

  • Gardez votre système à jour avec les dernières versions du broker MQTT et des bibliothèques clientes pour bénéficier des correctifs de sécurité et des améliorations de performances.

6. Formation et Sensibilisation :

  • Formez votre équipe sur les meilleures pratiques de sécurité MQTT et assurez-vous qu'elle est consciente des risques associés aux communications non sécurisées.

En suivant ces pratiques recommandées et en comprenant les fondamentaux de la sécurité MQTT, vous pouvez grandement améliorer la sécurité de vos déploiements MQTT et assurer la protection de vos données et de votre infrastructure contre les menaces potentielles.

Quelles sont les avancées et l'avenir du MQTT ?

MQTT dans l'Internet Industriel des Objets (IIoT)

L'adoption croissante de MQTT dans l'Industrie 4.0 et l'IIoT est un signe clair de sa pertinence et de son évolution.

MQTT a été initialement conçu pour la transmission de données depuis des dispositifs sur le terrain vers un emplacement central, se distinguant par son efficacité, sa rapidité et sa sécurité. L'engouement pour MQTT s'est accentué avec l'émergence de l'IIoT, le rendant crucial pour moderniser l'automatisation des usines et la gestion des actifs à distance en brisant les silos de données propriétaires.

L'une des avancées notables est l'introduction de MQTT Sparkplug b. Cette version propose des améliorations significatives telles que le support de MQTT 5, l'optimisation de la transmission de données, un modèle de données élargi, une sécurité améliorée, et une gestion simplifiée des dispositifs. Ces améliorations visent à simplifier la connexion et la communication entre différents dispositifs industriels, tout en optimisant l'acquisition, le traitement et l'analyse des données industrielles.

Tendances émergentes dans la technologie MQTT

Parmi les tendances émergentes dans la technologie MQTT, l'introduction du MQTT sur QUIC se distingue. Cette évolution promet des connexions plus rapides et une latence réduite, ce qui est particulièrement avantageux pour les applications industrielles IoT nécessitant une faible latence, comme les voitures connectées.

Le concept de MQTT sans serveur est également en vogue, permettant une mise en service rapide des services MQTT avec une flexibilité remarquable, ce qui est propice à une adoption plus large de MQTT dans diverses industries.

De plus, l'extension prévue de MQTT Streams vise à gérer des flux de données à haut volume et à haute fréquence en temps réel, facilitant ainsi la gestion des flux de données en temps réel dans les applications IoT basées sur MQTT.

Conclusion

MQTT s'est érigé comme un pilier central dans l'écosphère de l'IoT, en offrant un protocole de communication léger et efficace. Son architecture basée sur un modèle de publication/abonnement, facilitant ainsi les échanges de données entre les dispositifs et les systèmes centraux, est devenue cruciale dans des domaines variés, notamment l'IIoT. La mise en œuvre et la sécurisation de MQTT, bien que techniques, sont simplifiées par une gamme d'outils et de ressources, aidant les développeurs à configurer, tester et monitorer les systèmes efficacement. Avec l'évolution constante du protocole, notamment à travers des innovations comme MQTT Sparkplug B et MQTT sur QUIC, MQTT continue de s'adapter aux besoins changeants de l'industrie, renforçant ainsi son rôle incontournable dans le paysage de l'IoT.

Prêt à reprendre le contrôle
de vos données industrielles ?

Parler à un expert