MQTT Grundlagen

Das MQTT Nachrichtenprotokoll steht für Message Queuing Telemetry Transport und wurde 1999 zur Maschine zu Maschine-Kommunikation von dem IBM Mitarbeiter Andy Stanford-Clark und dem ehemaligen Acron Mitarbeiter Arlen Nipper erfunden. Es wurde ursprünglich zur Überwachung einer Ölpipeline entwickelt, welche spezielle Anforderungen an das Protokoll stellte.

Das Protokoll eignet sich für Machine-to-Machine Kommunikation oder für Internet of Things Anwendungen, da es darauf ausgelegt ist, kleine Nachrichten in sehr kurzer Zeit an eine möglichst große Anzahl an Geräten zu senden. MQTT ermöglicht die zuverlässige und effiziente Kommunikation zwischen einer sehr großen Anzahl an Geräten.

Seit 2013 gilt MQTT offiziell als Protokoll des Internets der Dinge und wird von der OASIS (Organization for the Advancement of Structured Information Standards) spezifiziert. 2016 wurde die Version 3.1.1 als ISO-Standard (ISO/IEC 20922:16) zertifiziert. 2019 wurde die Version 5.0 veröffentlicht.

Physik / Topologie

Allgemein arbeitet MQTT nach dem Client-Server-Prinzip. Der Server stellt den sogenannten MQTT Broker dar, welcher für die Nachrichtenverwaltung, die Nachrichtenverteilung und die Speicherung zuständig ist. Die Clients werden bei MQTT als Publisher und Subscriber bezeichnet. Die Nachrichten werden von den Clients entweder gesendet oder empfangen. Die Publisher übernehmen die Aufgabe der Veröffentlichung und senden Nachrichten aktiv an den Broker. Die Subscriber dagegen abonnieren bestimmte Informationen und bekommen die für sie relevanten Daten vom Broker zugeschickt. Dadurch sind Sender und Empfänger unabhängig voneinander und können nicht direkt miteinander kommunizieren, somit besteht keine Ende-zu-Ende-Verbindung.

Das Nachrichtenformat bei MQTT ist in sogenannten Topics strukturiert.
Das Prinzip dieser Topics ist beispielsweise wie folgt aufgebaut: Haus/Etage/Raum/Temperatur.
Dadurch können Subscriber verschiedene Varianten dieser Topics abonnieren, um die geforderten Daten vom MQTT Broker zu erhalten. Hierfür können gezielt Daten von Häusern, Etagen und Räumen einzeln oder durch das Einsetzen einer Wildcard "#" mehrere Daten beim Broker abonniert werden.
Für diese Datenübertragung verwendet MQTT TCP als Transportprotokoll. Hierfür wurden für MQTT die Ports 1883 und 8883 von der IANA (Internet Assigned Numbers Authority) reserviert.

Für den Fall eines Verbindungsabbruches kann im Vorfeld festgelegt werden, ob und wie die Datenübertragung nach der Wiederherstellung fortgesetzt werden soll. In diesem Szenario kann zwischen den drei Arten von Quality of Service gewählt werden (QoS0, QoS1, QoS2). QoS0 steht für At-most-once Delivery und wird verwendet wenn nur eine geringe Übertragungsgarantie benötigt wird. Es wird zwar versucht die Nachricht zu überliefern, jedoch kommt sie entweder einmal oder keinmal beim Empfänger an. QoS1 steht dagegen für At-least-once Delivery. Hierbei wird eine Bestätigung des Empfängers erwartet, falls diese nicht erhalten wird, kommt es zur erneuten Sendung der Nachricht. QoS2, Exactly-once Delivery, garantiert die Übertragung einer Nachricht genau einmal.

Cybersicherheit

MQTT verwendet als Basisauthentifizierung lediglich die Möglichkeit die Clients durch den Server zu authentifizieren. Dieser Mechanismus arbeitet mit der Kennwortauthentifizierung und verwendet dafür Benutzername und Passwort. Hierfür werden über ein User Name Flag und ein Password Flag die erforderlichen Daten übermittelt und die Werte auf 1 gesetzt. Diese Kennwortauthentifizierung, kann aber auch beispielsweise für die Übergabe eines Tokens verwendet werden.
Eine Form der erweiterten Authentifizierung ist die Verwendung von TLS-Zertifikaten, wodurch dem Client ermöglicht wird ebenfalls den Server zu authentifizieren. Allgemein sollte bei der Verwendung von TLS der TCP-Port 8883 gewählt werden, welcher den IANA-Dienstnamen Secure-MQTT besitzt und speziell für solche Anwendungen zugewiesen wurde.

TLS bietet nicht nur die Möglichkeit der Authentifizierung durch Zertifikate, sondern kann ebenfalls eine Verschlüsselung der übertragenen Daten realisieren. Um den Datenschutz zu erhöhen sollten durch server- und clientseitige Implementierungen die internen Speicher verschlüsselt werden, um Angriffen von außen vorzubeugen.

Zusammenfassend verfügt das Transportprotokoll TLS über Authentifizierung, Integrität und Datenschutz; viele wichtige Sicherheitsaspekte.

Eine alternative Authentifizierungsmethode zu TLS bietet der Simple Authentication and Security Layer (SASL)-Mechanismus. Diese stellt eine Methode dar, die verbindungsbasierte Protokolle bei der Identifikation und Authentifizierung der Clients gegenüber einem Server unterstützt.

Des Weiteren können virtuelle Netzwerkverbindungen über Virtual Private Network (VPN) realisiert werden. VPN verfügt über integrierte Sicherheitskontrollen, wodurch ein sicherer Datenaustausch zwischen den Kommunikationspartnern gewährleistet wird.

Varianten / Versionen


MQTT-SN (ehemals MQTT-S) ist eine ähnliche aber eingeschränkte Variante von MQTT nach dem Beobachter-Muster und wurde speziell für Sensornetzwerke entwickelt. Die Anforderung an diese Variante war eine extrem niedrige Übertragungsrate und der Schutz gegen Übertragungsfehler.

MQTT v3.1 war die erste Version mit OASIS-Standard und ISO/IEC 20922:2016 (2016).

MQTT v5.0 ist die aktuelle Version des Protokolls und als OASIS-Standard spezifiziert (2018).

 

Weitere Informationen:

Unser MQTT-Portfolilo:

Fernwartung

Modular aufgebaute Fernwartungs- und M2M-Router Ewon Flexy für Fernwartung und Datendienste

 zu den Fernwartungs-Routern

Bedienen & Beobachten

Die Smarten HMIs der cMT-Serie - Server / Client HMI-Architektur - Hohe Flexibilität und starke Verbesserung der Arbeitseffizienz.

 zu den Smart HMI (IIoT)

Gateways

Verbindung zu einem MQTT-Broker(Server) möglich
TLS / SSL-Verschlüsselung möglich
unterschiedlichste Busprotokolle möglich

 zu den MQTT-Gateways