DriveCon-Lexikon

Zurück zur Übersicht

MQTT

MQTT (Message Queue Telemetry Transport) ist ein schlankes ereignisgesteuertes Nachrichtenprotokoll, das hauptsächlich für die Maschine-zu-Maschine-Kommunikation, die Kommunikation mit mobilen Geräten und im Internet der Dinge eingesetzt wird. Es wurde dafür entwickelt, Informationen über große Distanzen und in instabilen Netzwerken zwischen vielen Geräten zu übertragen. Darüber hinaus zeichnet es sich durch eine einfache Implementierung aus, sodass auch Geräte mit geringen Ressourcen integriert werden können. Inzwischen ist die MQTT Version 3.1.1 ein offizieller Standard und der Nachfolger MQTT 5 wurde bereits final spezifiziert.

 

MQTT nutzt eine ereignisgesteuerte Publish/Subscribe-Architektur, d. h. ein zentraler Server (Broker) verwaltet und administriert den Datenverkehr und alle Datenproduzenten und -nutzer (Clients) verbinden sich mit diesem. Nachrichten bestehen immer aus einem Topic sowie dem Nachrichteninhalt und werden mit einer gewissen Zuverlässigkeit (Quality of Service) versendet. Die Topics sind eine Art Betreff der Nachricht und ähnlich aufgebaut wie eine URL. Clients veröffentlichen (publishen) und abonnieren (subscriben) Inhalte für bestimmte Topics und kommunizieren nur indirekt miteinander. Sendet ein Client eine Nachricht zu einem Topic, wird sie an den Broker übermittelt. Dieser überprüft, von welchen Clients das Topic abonniert wurde und sendet an diese eine Kopie der Nachricht. Da die gesamte Kommunikation über den Broker organisiert wird, bricht das System zusammen, sobald ein Problem mit dem Broker vorliegt, weshalb dieser redundant ausgeführt werden sollte.

 

Das Protokoll nutzt TCP für den Transport, wodurch eine sichere Übertragung gewährleistet ist. Trotzdem kann es bei instabilen Netzwerken zu Übertragungsproblemen kommen, falls der Client gerade nicht verbunden ist und deshalb Nachrichten verpasst. Daher wurden in MQTT unterschiedliche Servicequalitäten definiert, sogenannte Quality of Service (QoS). Bei QoS 0 (at most once) wird eine Nachricht einmal gesendet und es ist offen, ob diese ankommt oder nicht, da keine Bestätigung vom Empfänger gefordert wird. Dieses Verfahren ist daher nicht besonders zuverlässig, aber ressourcenschonend. Mit QoS 1 (at least one) wird garantiert, dass die Nachricht mindestens einmal beim Empfänger ankommt, indem der Empfänger den Erhalt bestätigt. Es kann jedoch zu Duplikaten kommen. QoS 2 (exactly one) wird dann eingesetzt, wenn eine Nachricht genau einmal ankommen muss, ohne dass dabei Duplikate entstehen. Diese Variante benötigt die meiste Bandbreite.

 

Neben dem Grad der Zuverlässigkeit bietet MQTT noch die Features „Last Will und Testament“ und „Retained Message“. Letztere wird an Empfänger gesendet, die ein Topic neu abonnieren. Der „letzte Wille“ kommt zum Einsatz, wenn ein Client vom Broker unsauber getrennt wird, um den abonnierenden Geräten beispielsweise zu sagen, dass der Sender „offline“ ist.