MQTT est l'acronyme de Message Queuing Telemetry Transport. C'est un protocole de messagerie léger à utiliser dans les cas où les clients ont besoin d'une faible empreinte de code et sont connectés à des réseaux peu fiables ou à des réseaux dont les ressources en bande passante sont limitées. Il est principalement utilisé pour les communications de machine à machine (M2M) ou les connexions de type Internet des objets.
MQTT a été créé par Andy Stanford-Clark et Arlen Nipper en 1999. L'objectif initial de cette méthode de communication était de permettre aux dispositifs de supervision utilisés dans l'industrie pétrolière et gazière d'envoyer leurs données à des serveurs distants. Dans de nombreux cas, ces dispositifs de supervision étaient utilisés dans des endroits éloignés où il était difficile, voire impossible, d'établir une ligne fixe, une connexion câblée ou une connexion par transmission radio. À l'époque, la seule option était la communication par satellite, qui était très coûteuse et facturée en fonction de la quantité de données utilisées. Avec des milliers de capteurs sur le terrain, l'industrie avait besoin d'une forme de communication capable de fournir des données de manière suffisamment fiable pour être utilisée, tout en utilisant une bande passante minimale.
MQTT a été normalisé en tant qu'open source sous l'égide de l'Organisation pour l'avancement des normes d'information structurée (OASIS) en 2013. L'OASIS gère toujours la norme MQTT.
Les alertes personnalisées et la visualisation des données vous permettent d'identifier et de prévenir rapidement les problèmes de santé et de performance du réseau.
MQTT fonctionne au-dessus de TCP/IP en utilisant une topologie PUSH/SUBSCRIBE. Dans l'architecture MQTT, il existe deux types de systèmes : les clients et les courtiers. Le courtier est le serveur avec lequel les clients communiquent. Il reçoit les communications des clients et les transmet à d'autres clients. Les clients ne communiquent pas directement entre eux, mais se connectent au courtier. Chaque client peut être soit un éditeur, soit un abonné, soit les deux.
MQTT est un protocole événementiel. Il n'y a pas de transmission de données périodique ou continue. Cela permet de réduire la transmission au minimum. Un client ne publie que lorsqu'il y a des informations à envoyer, et un courtier n'envoie des informations aux abonnés que lorsque de nouvelles données arrivent.
Une autre façon pour MQTT de minimiser ses transmissions est d'utiliser une construction de messages restreinte et étroitement définie. Chaque message a un en-tête fixe de seulement 2 octets. Un en-tête optionnel peut être utilisé, mais il augmente la taille du message. La charge utile du message est limitée à 256 Mo. Trois niveaux différents de qualité de service (QoS) permettent aux concepteurs de réseaux de choisir entre la minimisation de la transmission des données et la maximisation de la fiabilité.
Dans les cas où les communications sont fiables mais limitées, la qualité de service 0 peut être la meilleure option. Dans les situations où les communications ne sont pas fiables, mais où les connexions ne sont pas aussi limitées en ressources, la qualité de service 2 serait la meilleure option. La qualité de service 1 offre une sorte de solution optimale, mais exige que l'application qui reçoit les données sache comment gérer les doublons.
Pour QoS 1 et QoS 2, les messages sont sauvegardés ou mis en file d'attente pour les clients qui ne sont pas en ligne et qui ont une session persistante établie. Ces messages sont renvoyés (selon le niveau de qualité de service approprié) une fois que le client est de nouveau en ligne.
Les notifications en temps réel sont synonymes de dépannage plus rapide, ce qui vous permet d'agir avant que des problèmes plus graves ne surviennent.
Les messages dans MQTT sont publiés en tant que sujets. Les sujets sont structurés dans une hiérarchie utilisant la barre oblique (/) comme délimiteur. Cette structure ressemble à l'arborescence d'un système de fichiers d'un ordinateur. Une structure telle que sensors/OilandGas/Pressure/ permet à un abonné de spécifier qu'il ne doit recevoir que les données des clients qui publient dans le sujet Pression, ou pour une vue plus large, peut-être toutes les données des clients qui publient dans n'importe quel sujet sensors/OilandGas. Les sujets ne sont pas explicitement créés dans MQTT. Si un courtier reçoit des données publiées sur un sujet qui n'existe pas encore, le sujet est simplement créé et les clients peuvent s'abonner au nouveau sujet.
Pour que l'empreinte reste faible, les messages reçus ne sont pas stockés dans le courtier, sauf s'ils sont marqués d'un drapeau de conservation. C'est ce qu'on appelle un message conservé. Les utilisateurs qui souhaitent stocker les messages reçus devront les stocker ailleurs, en dehors du protocole MQTT. Il y a une exception.
En tant que protocole événementiel, il est possible, voire probable, qu'un abonné reçoive très peu de messages pour un sujet donné, même sur une longue période. Dans la structure thématique mentionnée précédemment, il se peut que les messages relatifs à la rubrique Pression ne soient envoyés que lorsqu'un capteur détecte que la pression a dépassé un certain niveau. En supposant que le capteur supervisé ne tombe pas souvent en panne, il peut s'écouler des mois, voire des années, avant qu'un client ne publie un message à ce sujet.
Pour s'assurer qu'un nouvel abonné reçoit les messages d'un thème, les courtiers peuvent conserver le dernier message envoyé à chaque thème. C'est ce qu'on appelle un message conservé. Chaque fois qu'un nouveau client s'abonne à un thème ou qu'un client existant revient en ligne, le message conservé est envoyé aux abonnés, garantissant ainsi que l'abonnement est actif et qu'il contient les informations les plus récentes.
Lorsque les communications ne sont pas fiables, il est possible qu'un éditeur se déconnecte du réseau sans avertissement. Un éditeur peut enregistrer un message à envoyer aux abonnés au cas où il se déconnecte de manière inattendue, c'est ce qu'on appelle un testament. Ce message est caché dans le courtier et envoyé aux abonnés si l'éditeur se déconnecte de manière inappropriée. En règle générale, ce message contient des informations permettant d'identifier l'éditeur déconnecté afin que les mesures appropriées puissent être prises.
Pour que le protocole reste petit, il n'y a que quatre actions possibles pour toute communication : publier, s'abonner, se désabonner ou faire un ping.
L'objectif initial du protocole MQTT était de réaliser la transmission de données la plus petite et la plus efficace possible sur des lignes de communication coûteuses et peu fiables. À ce titre, la sécurité n'était pas une préoccupation majeure lors de la conception et de la mise en œuvre de MQTT.
Cependant, certaines options de sécurité sont disponibles au prix d'une transmission de données plus importante et d'un encombrement plus grand.
PRTG est un logiciel de supervision Network très complet qui assure le suivi de l'ensemble de votre infrastructure IT.
Le3 avril 2019, l'OASIS a publié la norme officielle MQTT v5.0
Principales nouvelles fonctionnalités de MQTT v5.0