Definition Was ist Message Queuing Telemetry Transport (MQTT)?

Autor / Redakteur: Dipl.-Ing. (FH) Stefan Luber / Nico Litzel

Message Queuing Telemetry Transport (MQTT) ist ein Protokollstandard, mit dem sich Nachrichten zwischen Maschinen übertragen lassen. Er kommt im Internet der Dinge und für die Machine-to-Machine-Kommunikation (M2M) zum Einsatz und basiert auf einer Publish-Subscribe-Architektur mit einem Message-Broker als MQTT-Server.

Anbieter zum Thema

(Bild: © aga7ta - stock.adobe.com)

Die Abkürzung MQTT steht für Message Queuing Telemetry Transport. Es handelt sich um ein standardisiertes Protokoll zum Austausch von Nachrichten zwischen Maschinen. Das Nachrichtenprotokoll kommt in der M2M-Kommunikation und im Internet der Dinge (Internet of Things – IoT) zum Einsatz und erlaubt beispielsweise die Übertragung der Telemetriedaten von Sensoren an Aktoren.

MQTT basiert auf einer Publish-Subscribe-Architektur mit einem Message-Broker, der als MQTT-Server fungiert. Das sehr einfach aufgebaute Protokoll eignet sich auch für unzuverlässige Netze mit geringen Bandbreiten und hohen Verzögerungszeiten. Im Gegensatz zu Protokollen wie HTTP, die die Kommunikationspartner im Request-/Response-Verfahren direkt Ende-zu-Ende miteinander verbinden, arbeitet MQTT mit einem zentralen Message-Broker. Der Broker entkoppelt die Kommunikationspartner voneinander und reduziert den technischen Aufwand in den Endgeräten. Die Kommunikation findet TCP/IP-basiert statt.

Von der IANA (Internet Assigned Numbers Authority) sind die Ports 1883 und 8883 für MQTT reserviert. Für eine geschützte Datenübertragung lassen die Nachrichten per TLS verschlüsseln und Clients authentifizieren. Entwickelt wurde Message Queuing Telemetry Transport ursprünglich von IBM und Cirrus Link Solutions. Seit dem Jahr 2013 ist die OASIS (Organization for the Advancement of Structured Information Standards) für die Weiterentwicklung des Standards verantwortlich. Der Standard MQTT 5 erschien im Jahr 2018. Im Vergleich zum Vorgänger MQTT 3.1.1 sind zahlreiche Erweiterungen wie eine verbessertes Fehlerbehandlung oder eine Flusskontrolle enthalten. Alte, nicht mehr gebräuchliche Bezeichnungen für MQTT sind SCADA, MQ Integrator SCADA Device Protocol (MQIsdp) oder WebSphere MQTT (WMQTT).

Die Publish-Subscribe-Architektur von MQTT

Message Queuing Telemetry Transport basiert auf einer Ereignis-gesteuerten Client-Server-Architektur, auch Publish-Subscribe-Architektur genannt. Im Gegensatz zu Protokollen wie HTTP existieren keine Ende-zu-Ende-Verbindungen zwischen den Sendern und Empfängern der Nachrichten. Sender und Empfänger verbinden sich mit einem zentralen Message-Broker, der die Kommunikation steuert. Der Publisher (Datenquelle) sendet Nachrichten an den Broker. Subscriber (Datensenken) abonnieren die Nachrichten beim Broker und bekommen sie von diesem zugesandt.

Durch dieses Verfahren sind Sender und Empfänger der Nachrichten voneinander entkoppelt und benötigen weniger Intelligenz. Bei Verbindungsproblemen speichert der Broker Nachrichten zwischen und stellt sie zu, sobald eine Verbindung wieder möglich ist. Darüber hinaus besteht die Möglichkeit, dass ein Client beim Verbindungsaufbau mit dem Broker eine Art „letzten Willen“ mitteilt. Dieser wird den Abonnenten veröffentlicht, falls der Client seine Verbindung verliert.

Aufbau der MQTT-Nachrichten

MQTT-Nachrichten besitzen einen einfachen, hierarchischen Aufbau. Sie bestehen aus einem Nachrichtenheader, einem Topic und der eigentlichen Nachricht. Das Topic klassifiziert die Nachricht hierarchisch und kann beispielsweise folgendermaßen aussehen:

Keller/Gefrierkombination/Gefrierfach1/Temperatur

Die eigentliche Nachricht enthält in diesem Beispiel die gemessene Temperatur. Die Nachrichten lassen sich mit einer eingestellten Quality of Service (QoS) versenden. Diese ist im zwei Byte langen Nachrichtenheader spezifiziert. Es existieren folgende drei QoS-Stufen:

  • QoS 0 – at most once (eine Nachricht wird höchstens einmal gesendet und kann bei Verbindungsproblemen verloren gehen)
  • QoS 1 – at least once (eine Nachricht wird bis zur Bestätigung durch den Empfänger bei Bedarf mehrfach versendet)
  • QoS 2 – exactly once (ein mehrstufiges Quittierungsverfahren stellt sicher, dass eine Nachricht genau einmal beim Empfänger ankommt)

Weitere Informationen im Nachrichtenheader sind der Nachrichtentyp und das Retain-Flag. Das Retain-Flag fordert den Server auf, die Nachricht zwischenzuspeichern. Mögliche Nachrichtentypen sind beispielsweise CONNECT, CONNACK, PUBLISH, PUBACK, SUBSCRIBE, SUBACK, UNSUBSCRIBE, UNSUBACK und weitere.

Die Rolle des Message-Brokers, Publishers und Subscribers

Der Message-Broker, auch MQTT-Server genannt, nimmt bei Message Queuing Telemetry Transport eine zentrale Rolle ein. Er verwaltet eine Vielzahl verbundener Clients. Der Broker nimmt die Nachrichten der Publisher entgegen, filtert sie, speichert sie zwischen und leitet sie an die jeweiligen Abonnenten weiter. Um die Kommunikation abzusichern, müssen sich Clients in der Regel gegenüber dem Broker authentifizieren. Dies ist besonders wichtig bei öffentlich über das Internet erreichbaren Brokern.

Broker sollten hoch verfügbar, zuverlässig und skalierbar sein. In großen Installationen managen Message-Broker mehrere tausend oder hunderttausend Clients. Bei den Publishern handelt es sich um Clients wie Sensoren, die ihre erfassten Messdaten über den Broker an einen oder mehrere Subscriber senden. Subscriber sind Geräte wie Aktoren, die Nachrichten von einem oder mehreren Publishern abonnieren und abhängig von den über den Broker erhaltenen Nachrichten eine bestimmte Funktion wie das Schalten eines elektrischen Verbrauchers ausführen. Damit der Message-Broker die Nachrichten an die richtigen Subscriber weiterleitet, verwalten er eine Art Liste. Diese ist hierarchisch nach Topics organisiert. Der Broker ordnet erhaltene Nachrichten einem bestimmten Topic zu und leitet sie an die Subscriber weiter, die dieses Topic abonniert haben.

(ID:46024467)