MQTT steht für Message Queuing Telemetry Transport. Es handelt sich um ein leichtgewichtiges Messaging-Protokoll für den Einsatz in Fällen, in denen Clients einen kleinen Code-Fußabdruck benötigen und mit unzuverlässigen Netzwerken oder Netzwerken mit begrenzter Bandbreite verbunden sind. Es wird hauptsächlich für die Maschine-zu-Maschine-Kommunikation (M2M) oder für Verbindungen im Rahmen des Internets der Dinge verwendet.
MQTT wurde ursprünglich von Dr. Andy Stanford-Clark und Arlen Nipper im Jahr 1999 entwickelt. Der ursprüngliche Zweck der Kommunikationsmethode bestand darin, Monitoring-Geräten, die in der Öl- und Gasindustrie eingesetzt werden, die Möglichkeit zu geben, ihre Daten an entfernte Server zu senden. In vielen Fällen wurden solche Monitoring-Geräte an abgelegenen Orten eingesetzt, wo jede Art von Festnetz-, Kabel- oder Funkverbindung nur schwer oder gar nicht hergestellt werden konnte. Damals war die einzige Option für solche Fälle die Satellitenkommunikation, die sehr teuer war und nach der genutzten Datenmenge abgerechnet wurde. Bei Tausenden von Sensoren im Feld brauchte die Industrie eine Kommunikationsform, die Daten zuverlässig genug für den Einsatz bereitstellen konnte und dabei nur eine minimale Bandbreite benötigte.
MQTT wurde 2013 von der Organization for the Advancement of Structured Information Standards (OASIS) als Open Source standardisiert. Die OASIS verwaltet den MQTT-Standard noch immer.
Mit benutzerdefinierten Warnmeldungen und Datenvisualisierung können Sie Probleme mit dem Netzwerkzustand und der Leistung schnell erkennen und vermeiden.
MQTT läuft auf TCP/IP unter Verwendung einer PUSH/SUBSCRIBE-Topologie. In der MQTT-Architektur gibt es zwei Arten von Systemen: Clients und Makler. Ein Broker ist der Server, mit dem die Clients kommunizieren. Der Broker empfängt Mitteilungen von den Clients und sendet diese Mitteilungen an andere Clients weiter. Die Clients kommunizieren nicht direkt miteinander, sondern stellen eine Verbindung mit dem Broker her. Jeder Client kann entweder ein Publisher, ein Subscriber oder beides sein.
MQTT ist ein ereignisgesteuertes Protokoll. Es gibt keine periodische oder laufende Datenübertragung. Dadurch wird die Übertragung auf ein Minimum beschränkt. Ein Client veröffentlicht nur dann, wenn es Informationen zu senden gibt, und ein Broker sendet nur dann Informationen an Abonnenten, wenn neue Daten eintreffen.
Eine weitere Möglichkeit, wie MQTT seine Übertragungen minimiert, besteht in einer eng definierten, kleinen Nachrichtenstruktur. Jede Nachricht hat einen festen Header von nur 2 Byte. Ein optionaler Header kann verwendet werden, erhöht aber die Größe der Nachricht. Die Nutzlast der Nachricht ist auf 256 MB begrenzt. Drei verschiedene Quality of Service (QoS)-Stufen ermöglichen es Netzwerkdesignern, zwischen einer Minimierung der Datenübertragung und einer Maximierung der Zuverlässigkeit zu wählen.
In Situationen, in denen die Kommunikation zuverlässig, aber begrenzt ist, kann QoS 0 die beste Option sein. In Situationen, in denen die Kommunikation unzuverlässig ist, aber die Verbindungen nicht so ressourcenbeschränkt sind, wäre QoS 2 die beste Option. QoS 1 bietet eine Art Best-of-both-Worlds-Lösung, setzt aber voraus, dass die Anwendung, die die Daten empfängt, weiß, wie sie mit Duplikaten umgehen muss.
Sowohl bei QoS 1 als auch bei QoS 2 werden Nachrichten für Clients gespeichert oder in eine Warteschlange gestellt, die offline sind und eine dauerhafte Sitzung aufgebaut haben. Diese Nachrichten werden (gemäß der entsprechenden QoS-Stufe) erneut gesendet, sobald der Client wieder online ist.
Benachrichtigungen in Echtzeit bedeuten eine schnellere Fehlerbehebung, so dass Sie handeln können, bevor ernstere Probleme auftreten.
Nachrichten innerhalb von MQTT werden als Topics veröffentlicht. Topics sind Strukturen in einer Hierarchie mit dem Schrägstrich (/) als Begrenzungszeichen. Diese Struktur ähnelt der eines Verzeichnisbaums in einem Dateisystem eines Computers. Mit einer Struktur wie sensors/OilandGas/Pressure/ kann ein Abonnent angeben, dass er nur Daten von Clients erhalten soll, die im Topic Pressure veröffentlichen, oder, für eine umfassendere Betrachtung, vielleicht alle Daten von Clients, die im Topic sensors/OilandGas veröffentlichen. Topics werden in MQTT nicht explizit erstellt. Wenn ein Broker Daten erhält, die in einem Topic veröffentlicht werden, das derzeit nicht existiert, wird das Topic einfach erstellt, und die Clients können das neue Topic abonnieren.
Um den Speicherplatzbedarf gering zu halten, werden empfangene Nachrichten nur dann im Broker gespeichert, wenn sie mit dem Flag "retained" gekennzeichnet sind. Dies wird als aufbewahrte Nachricht bezeichnet. Benutzer, die empfangene Nachrichten speichern möchten, müssen diese an anderer Stelle außerhalb des MQTT-Protokolls speichern. Es gibt eine Ausnahme.
Da es sich um ein ereignisgesteuertes Protokoll handelt, ist es möglich, ja sogar wahrscheinlich, dass ein Teilnehmer nur sehr wenige Nachrichten für ein bestimmtes Thema erhält, selbst über einen langen Zeitraum hinweg. In der oben erwähnten Themenstruktur werden vielleicht nur dann Nachrichten zum Thema Druck gesendet, wenn ein Sensor feststellt, dass der Druck einen bestimmten Wert überschritten hat. Unter der Annahme, dass der Sensor, den er überwacht, nicht häufig ausfällt, kann es Monate oder sogar Jahre dauern, bis ein Client eine Nachricht zu diesem Thema veröffentlicht.
Um sicherzustellen, dass ein neuer Abonnent die Nachrichten aus einem Thema erhält, können Broker die letzte an jedes Thema gesendete Nachricht aufbewahren. Dies wird als aufbewahrte Nachricht bezeichnet. Immer wenn ein neuer Kunde ein Thema abonniert oder wenn ein bestehender Kunde wieder online geht, wird die aufbewahrte Nachricht an die Abonnenten gesendet, wodurch sichergestellt wird, dass das Abonnement aktiv ist und die neuesten Informationen enthält.
Bei unzuverlässiger Kommunikation kann es vorkommen, dass ein Verlag ohne Warnung die Verbindung zum Netz unterbricht. Ein Verleger kann eine Nachricht registrieren, die an die Abonnenten gesendet wird, falls der Verleger die Verbindung unerwartet unterbricht. Dies ist ein so genannter letzter Wille und ein Testament. Diese Nachricht wird im Cache des Brokers gespeichert und an die Abonnenten verschickt, falls der Verlag die Verbindung vorschriftswidrig unterbricht. In der Regel enthält eine solche Nachricht Informationen, die es ermöglichen, den unterbrochenen Verlag zu identifizieren, so dass die entsprechenden Maßnahmen ergriffen werden können.
Um das Protokoll klein zu halten, gibt es bei jeder Kommunikation nur vier mögliche Aktionen: veröffentlichen, abonnieren, abbestellen oder pingen.
Das ursprüngliche Ziel des MQTT-Protokolls war es, die kleinstmögliche und effizienteste Datenübertragung über teure, unzuverlässige Kommunikationsleitungen zu ermöglichen. Daher war die Sicherheit bei der Entwicklung und Implementierung von MQTT kein Hauptanliegen.
Es gibt jedoch einige Sicherheitsoptionen, die auf Kosten einer größeren Datenübertragung und eines größeren Platzbedarfs gehen.
PRTG ist eine umfassende Monitoring-Software für Netzwerke und überwacht Ihre gesamte IT-Infrastruktur.
Am3. April 2019 hat OASIS den offiziellen MQTT v5.0-Standard veröffentlicht
Wichtige neue Funktionen von MQTT v5.0