MQTT Grundlagen
Zur Navigation springen
Zur Suche springen
MQTT (Message Queuing Telemetry Transport)
Einleitung
MQTT (Message Queuing Telemetry Transport) ist ein zunehmend beliebtes Protokoll für die Datenübertragung von physischen Geräten in die Cloud und spielt eine zentrale Rolle in der Entwicklung des Internets der Dinge (IoT). Als leichtgewichtiges Protokoll zeichnet sich MQTT durch effiziente Bandbreitennutzung aus und funktioniert auch in Netzen mit hoher Latenz und geringer Zuverlässigkeit, was es zum bevorzugten Protokoll für Machine-to-Machine (M2M) Kommunikation macht.
Geschichte und Entwicklung
- Ursprünglich in den späten 1990ern bei IBM entwickelt, gewann MQTT mit dem Aufkommen des IoT an Bedeutung.
- Entwickelt, um minimalen Netzwerkverkehr und Ressourcenverbrauch zu garantieren, ideal für Geräte mit begrenzter Leistung.
- Seit 2013 ein offener Standard unter dem Dach von OASIS; aktuelle Versionen sind MQTT 3.1.1 und MQTT 5.
Grundlagen von MQTT
- Definiert als ein Messaging-Protokoll, das einem Publish/Subscribe-Modell folgt.
- Publisher und Subscriber kennen sich nicht direkt, sondern sind über den Broker entkoppelt (zeitlich, räumlich, synchronisationstechnisch).
- Ein MQTT-Broker fungiert als zentraler Kommunikationspunkt, der Nachrichten von Publishern empfängt und an Subscriber weiterleitet.
- Clients bauen eine TCP-Verbindung zum Broker auf (Standardport 1883, TLS-verschlüsselt 8883).
- Unterstützt drei Qualitätsstufen der Nachrichtenzustellung:
- QoS 0 (höchstens einmal)
- "Fire and forget", keine Bestätigung.
- QoS 1 (mindestens einmal)
- Zustellung garantiert, Duplikate möglich.
- QoS 2 (genau einmal)
- Zustellung garantiert, keine Duplikate (höchster Overhead).
Technische Merkmale
- Ermöglicht eine effiziente Nachrichtenübermittlung selbst über unzuverlässige Netzwerke.
- Unterstützt Last-Will-and-Testament-Nachrichten (LWT): Der Broker sendet eine vordefinierte Nachricht, wenn ein Client unerwartet die Verbindung verliert.
- Retained Messages: Der Broker speichert die letzte Nachricht eines Topics und stellt sie neuen Subscribern sofort zu.
- Keep-Alive-Mechanismus: Regelmäßige PINGREQ/PINGRESP-Pakete halten die Verbindung offen und erkennen Verbindungsabbrüche.
- Ermöglicht sowohl temporäre als auch dauerhafte Sessions (Clean Session / Persistent Session), was eine flexible Nutzungsmöglichkeit bietet.
MQTT Broker
- Open-Source-Broker wie Mosquitto bieten eine weit verbreitete und kostengünstige Lösung.
- Kommerzielle Broker wie HiveMQ bieten erweiterte Funktionen und Support für Unternehmen.
- Weitere verbreitete Broker: EMQX, VerneMQ.
Nutzdaten: Topics und Payloads
- Topics dienen der strukturierten Organisation der Nachrichtenübermittlung und ermöglichen eine feingranulare Kontrolle über die Nachrichtenverteilung.
- Hierarchischer Aufbau mit Schrägstrich, z. B.
haus/wohnzimmer/temperatur. - Wildcards beim Abonnieren:
- + (Single-Level)
haus/+/temperaturtrifft alle Räume.- # (Multi-Level)
haus/#trifft alles unterhalb vonhaus.
- Payloads können jegliche Daten enthalten, JSON ist dabei ein populäres Format aufgrund seiner Lesbarkeit und Effizienz.
Einsatzgebiete
- In der industriellen Automatisierung, um eine nahtlose M2M-Kommunikation zu ermöglichen.
- In Smart-Home-Anwendungen für die effiziente Steuerung und Überwachung von Geräten.
- In Fahrzeugtelematiksystemen, um Fahrzeugdaten in Echtzeit zu übermitteln.
Sicherheit
- MQTT unterstützt SSL/TLS zur Verschlüsselung der Datenübertragung (Port 8883).
- Authentifizierung über Benutzername/Passwort sowie über Client-Zertifikate (mTLS).
- Mittels ACLs (Access Control Lists) kann gesteuert werden, welcher Client welche Topics publizieren oder abonnieren darf.
- Hinweis: MQTT ist ohne TLS und ohne Authentifizierung standardmäßig offen — ein häufiger Fehler bei exponierten Brokern.
Herausforderungen und Zukunftsaussichten
- Wie alle IoT-Protokolle steht MQTT vor Herausforderungen in Bezug auf Skalierbarkeit und Sicherheit.
- Fortlaufende Entwicklungen in MQTT 5 verbessern Funktionen wie Fehlerberichterstattung (Reason Codes), benutzerdefinierte Nachrichteneigenschaften (User Properties) und Shared Subscriptions zur Lastverteilung.
Fazit
MQTT hat sich als Schlüsseltechnologie für IoT-Anwendungen etabliert, dank seiner Leichtigkeit, Flexibilität und Effizienz. Die zukünftige Entwicklung wird sich darauf konzentrieren, die Skalierbarkeit zu verbessern und die Sicherheitsmerkmale weiter zu stärken.