MQTT
Message Queuing Telemetry Transport
MQTT ist ein leichtgewichtiges Publish-Subscribe-Protokoll für IoT und Machine-to-Machine-Kommunikation. Es wurde für Geräte mit wenig Ressourcen und instabile Verbindungen entwickelt – ein Sensor kann mit wenigen Kilobyte Daten Messwerte an Millionen Empfänger senden.
Entstehung und Beteiligte
MQTT wurde 1999 von Andy Stanford-Clark bei IBM und Arlen Nipper bei Arcom entwickelt. Es sollte Sensor- und Telemetriedaten über teure, instabile Satellitenverbindungen zu Ölpipelines übertragen. OASIS standardisierte spätere Versionen.
Welches Problem sollte gelöst werden?
Kleine Geräte und langsame Leitungen benötigten ein Protokoll mit wenig Overhead, das Sender und Empfänger zeitlich und organisatorisch entkoppelt. Ein Broker sollte Nachrichten anhand von Themen verteilen.
Technische Hürden und Lösungen
Verbindungsabbrüche, begrenzte Energie und unzuverlässige Netze erfordern verschiedene Zustellqualitäten, Sitzungen und Retained Messages. Höhere QoS verhindert nicht automatisch doppelte Verarbeitung. Sicherheit muss über TLS und Zugriffskontrollen ergänzt werden.
Standardisierung und Einordnung
Internetprotokolle werden überwiegend in offenen RFC-Dokumenten beschrieben. Ein RFC kann ein historischer Vorschlag, ein aktueller Standard oder inzwischen überholt sein. Implementierungen müssen nicht nur das Papier befolgen, sondern mit fehlerhaften Gegenstellen, Paketverlust, Zeitüberschreitungen, Sicherheitsangriffen und jahrzehntealten Erweiterungen umgehen. Interoperabilität entsteht dadurch, dass unabhängige Hersteller dieselben Zustandsautomaten, Nachrichtenformate und Fehlerfälle testen.
Technik im praktischen Betrieb
Für den produktiven Einsatz zählt die konkrete Protokollversion. Alte und neue Varianten können denselben Port verwenden, besitzen aber völlig unterschiedliche Sicherheits- und Funktionsmerkmale. Administratoren sollten daher Aushandlung, Zertifikate, Timeouts, maximale Nachrichtengrößen und Fehlercodes sichtbar machen. Proxys, NAT und Firewalls verändern häufig den Datenpfad. Gute Tests erfolgen aus derselben Netzposition wie die betroffene Anwendung und prüfen nicht nur einen offenen Port, sondern einen vollständigen gültigen Vorgang.
Warum das Thema heute noch relevant ist
Die ursprüngliche Entstehungszeit erklärt viele heutige Sicherheitslücken: Frühe Internetgemeinschaften waren klein und Vertrauen wurde vorausgesetzt. Authentifizierung, Verschlüsselung und Missbrauchsschutz kamen oft erst später als Erweiterung hinzu. Moderne Implementierungen müssen deshalb sichere Voreinstellungen verwenden, alte Varianten abschalten und dennoch mit Gegenstellen kommunizieren, die einen älteren Stand besitzen. Versionsnummer, Aushandlung und tatsächlich aktive Option sind aussagekräftiger als der bloße Protokollname.
Daten und Meilensteine
- 1999 entwickeln Stanford-Clark und Nipper MQTT.
- Publish/Subscribe entkoppelt Erzeuger und Verbraucher.
- QoS 0, 1 und 2 bieten unterschiedliche Zustellgarantien.
- MQTT 5.0 wurde 2019 OASIS-Standard.
Was ist MQTT?
MQTT (Message Queuing Telemetry Transport) wurde 1999 von IBM und Arcom für die Überwachung von Ölpipelines über Satelliten entwickelt. Das Designziel: minimaler Bandbreitenverbrauch, geringe Akkubelastung, Robustheit bei instabilen Verbindungen.
Heute ist MQTT das De-facto-Standardprotokoll für IoT (Internet of Things). Es läuft auf Mikrocontrollern mit 256 Byte RAM, überlebt Verbindungsunterbrechungen dank LWT (Last Will and Testament) und skaliert auf Millionen gleichzeitiger Verbindungen.
Publish-Subscribe-Muster
MQTT nutzt das Publish-Subscribe-Pattern: Publisher und Subscriber kommunizieren nicht direkt miteinander, sondern über einen zentralen Broker. Publisher senden Nachrichten zu einem Topic (z.B. "haus/eg/temp"). Subscriber haben bestimmte Topics abonniert und erhalten automatisch alle Nachrichten dazu.
Topics sind hierarchisch mit "/" getrennt. Wildcards erlauben flexible Abonnements: "+" ersetzt genau eine Ebene, "#" ersetzt alle nachfolgenden Ebenen.
QoS-Levels
MQTT bietet drei Zustellgarantien:
- QoS 0 – At most once: Keine Garantie, keine Bestätigung. Schnellstes, geringstes Overhead. Gut für Messwerte, die häufig kommen.
- QoS 1 – At least once: Zustellung mindestens einmal garantiert (ACK). Duplikate möglich – Empfänger muss idempotent sein.
- QoS 2 – Exactly once: 4-Wege-Handshake (PUBLISH, PUBREC, PUBREL, PUBCOMP). Teuerste aber sicherste Methode – für Zahlungsbestätigungen, kritische Befehle.
MQTT in der Praxis
Beliebte Broker: Eclipse Mosquitto (leichtgewichtig, Open Source), EMQX (enterprise, bis 100M Verbindungen), HiveMQ, AWS IoT Core, Azure IoT Hub.
Typische Anwendungen: Smart-Home (Home Assistant nutzt MQTT nativ), Industrieautomation (SCADA), Fahrzeugtelematik, Smart-City-Sensoren, medizinische Geräte. Das MQTT-Protokoll kann auch über WebSocket transportiert werden – dann auch im Browser nutzbar ohne native TCP-Verbindung.