MQTT Grundlagen: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: „ = MQTT (Message Queuing Telemetry Transport) = == Einleitung == MQTT (Message Queuing Telemetry Transport) ist ein zunehmend beliebtes Protokoll für die Dat…“)
 
 
Zeile 1: Zeile 1:
 
 
= MQTT (Message Queuing Telemetry Transport) =
 
= MQTT (Message Queuing Telemetry Transport) =
  
 
== Einleitung ==
 
== 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 und Spezialisierung auf hohe Latenz aus, was es zum bevorzugten Protokoll für Machine-to-Machine (M2M) Kommunikation macht.
+
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 ==
 
== Geschichte und Entwicklung ==
* Ursprünglich in den späten 1990ern entwickelt, gewann MQTT mit dem Aufkommen des IoT an Bedeutung.
+
* 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.
 
* 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 ==
 
== Grundlagen von MQTT ==
 
* Definiert als ein Messaging-Protokoll, das einem Publish/Subscribe-Modell folgt.
 
* 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.
 
* Ein MQTT-Broker fungiert als zentraler Kommunikationspunkt, der Nachrichten von Publishern empfängt und an Subscriber weiterleitet.
* Unterstützt drei Qualitätsstufen der Nachrichtenzustellung, von "höchstens einmal" bis "genau einmal".
+
* 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 ==
 
== Technische Merkmale ==
 
* Ermöglicht eine effiziente Nachrichtenübermittlung selbst über unzuverlässige Netzwerke.
 
* Ermöglicht eine effiziente Nachrichtenübermittlung selbst über unzuverlässige Netzwerke.
* Unterstützt Last-Will- und Testament-Nachrichten für Fälle, in denen Clients unerwartet die Verbindung verlieren.
+
* Unterstützt Last-Will-and-Testament-Nachrichten (LWT): Der Broker sendet eine vordefinierte Nachricht, wenn ein Client unerwartet die Verbindung verliert.
* Ermöglicht sowohl temporäre als auch dauerhafte Sessions, was eine flexible Nutzungsmöglichkeit bietet.
+
* 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 ==
 
== MQTT Broker ==
* Open Source Broker wie Mosquitto bieten eine weit verbreitete und kostengünstige Lösung.
+
* 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.
 
* Kommerzielle Broker wie HiveMQ bieten erweiterte Funktionen und Support für Unternehmen.
 +
* Weitere verbreitete Broker: EMQX, VerneMQ.
  
 
== Nutzdaten: Topics und Payloads ==
 
== Nutzdaten: Topics und Payloads ==
 
* Topics dienen der strukturierten Organisation der Nachrichtenübermittlung und ermöglichen eine feingranulare Kontrolle über die Nachrichtenverteilung.
 
* Topics dienen der strukturierten Organisation der Nachrichtenübermittlung und ermöglichen eine feingranulare Kontrolle über die Nachrichtenverteilung.
 +
* Hierarchischer Aufbau mit Schrägstrich, z. B. <code>haus/wohnzimmer/temperatur</code>.
 +
* Wildcards beim Abonnieren:
 +
:; + (Single-Level): <code>haus/+/temperatur</code> trifft alle Räume.
 +
:; # (Multi-Level): <code>haus/#</code> trifft alles unterhalb von <code>haus</code>.
 
* Payloads können jegliche Daten enthalten, JSON ist dabei ein populäres Format aufgrund seiner Lesbarkeit und Effizienz.
 
* Payloads können jegliche Daten enthalten, JSON ist dabei ein populäres Format aufgrund seiner Lesbarkeit und Effizienz.
  
Zeile 33: Zeile 45:
  
 
== Sicherheit ==
 
== Sicherheit ==
* MQTT unterstützt SSL/TLS zur Verschlüsselung der Datenübertragung.
+
* MQTT unterstützt SSL/TLS zur Verschlüsselung der Datenübertragung (Port 8883).
* Mittels ACLs (Access Control Lists) und Client-Zertifikaten kann die Zugriffskontrolle verstärkt werden.
+
* 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 ==
 
== Herausforderungen und Zukunftsaussichten ==
 
* Wie alle IoT-Protokolle steht MQTT vor Herausforderungen in Bezug auf Skalierbarkeit und Sicherheit.
 
* Wie alle IoT-Protokolle steht MQTT vor Herausforderungen in Bezug auf Skalierbarkeit und Sicherheit.
* Fortlaufende Entwicklungen in MQTT 5 verbessern Funktionen wie Fehlerberichterstattung und Nachrichteneigenschaften.
+
* Fortlaufende Entwicklungen in MQTT 5 verbessern Funktionen wie Fehlerberichterstattung (Reason Codes), benutzerdefinierte Nachrichteneigenschaften (User Properties) und Shared Subscriptions zur Lastverteilung.
  
 
== Fazit ==
 
== 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.
 
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.

Aktuelle Version vom 20. Juni 2026, 06:39 Uhr

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/+/temperatur trifft alle Räume.
# (Multi-Level)
haus/# trifft alles unterhalb von haus.
  • 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.