MQTT: Unterschied zwischen den Versionen

Aus xinux.net
Zur Navigation springen Zur Suche springen
Zeile 1: Zeile 1:
=MQTT: Einführung und Grundlagen=
+
= MQTT (Message Queuing Telemetry Transport) =
*MQTT (ursprünglich MQ Telemetry Transport) ist ein offenes Netzwerkprotokoll, das für Machine-to-Machine-Kommunikation (M2M) entwickelt wurde.  
+
 
*Es ermöglicht, trotz hoher Verzögerungen oder beschränkter Netzwerke die Kommunikation zwischen Geräten.
+
== Einleitung ==
*Entsprechende Geräte reichen von Sensoren und Aktoren, Mobiltelefonen, eingebetteten Systemen in Fahrzeugen oder Laptops bis zu voll entwickelten Rechnern.
+
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 war bis zur Version 3.1 ein Akronym für MQ Telemetry Transport,wobei MQ von MQSeries abgeleitet ist und für Message Queueing steht.  
+
 
*Mit Version 3.1.1 wurde definiert, dass MQTT für kein Akronym steht.
+
== Geschichte und Entwicklung ==
*Das MQTT-Protokoll ist auch unter älteren Namen wie „WebSphere MQTT“ (WMQTT), „SCADA-Protokoll“ oder „MQ Integrator SCADA Device Protocol“ (MQIsdp) bekannt.
+
* Ursprünglich in den späten 1990ern entwickelt, gewann MQTT mit dem Aufkommen des IoT an Bedeutung.
*Die Internet Assigned Numbers Authority (IANA) reserviert für MQTT die Ports 1883 und 8883. MQTT-Nachrichten können mit dem TLS-Protokoll verschlüsselt werden.
+
* Entwickelt, um minimalen Netzwerkverkehr und Ressourcenverbrauch zu garantieren, ideal für Geräte mit begrenzter Leistung.
*Ein MQTT-Server („Broker“) hält die gesamte Datenlage seiner Kommunikationspartner und kann so als Zustands-Datenbank benutzt werden.  
+
 
*So ist es möglich, kleine unperformante MQTT-Geräte mit einem MQTT-Broker zu verbinden*
+
== Grundlagen von MQTT ==
*Die Geräte sammeln Daten oder nehmen Befehle entgegen, während ein komplexes Lagebild nur auf dem MQTT-Broker entsteht.
+
* Definiert als ein Messaging-Protokoll, das einem Publish/Subscribe-Modell folgt.
*Stelleingriffe können so von einer oder mehreren leistungsfähigen Instanzen an den MQTT-Broker übermittelt und auf die einzelnen Geräte verbreitet werden.  
+
* Ein MQTT-Broker fungiert als zentraler Kommunikationspunkt, der Nachrichten von Publishern empfängt und an Subscriber weiterleitet.
*Dadurch eignet sich MQTT sehr gut für Automatisierungslösungen und findet im Bereich IoT durch die einfache Verwendung große Verbreitung.
+
* Unterstützt drei Qualitätsstufen der Nachrichtenzustellung, von "höchstens einmal" bis "genau einmal".
=Spezifikation=
+
 
*Die MQTT-Spezifikation unterscheidet TCP/IP-basierte und Nicht-TCP/IP-Netzwerke und Systeme.
+
== Technische Merkmale ==
;Haupt-Spezifikation:
+
* Ermöglicht eine effiziente Nachrichtenübermittlung selbst über unzuverlässige Netzwerke.
*Das Protokoll ermöglicht auf eine einfache Art ein Beobachter-Verhaltensmuster. Es ist besonders geeignet für Verbindungen, die nur einen geringen Verwaltungsdatenanteil erlauben. Der OASIS-*Standardisierungsprozess basiert auf Version 3.1 der MQTT-Spezifikation.
+
* Unterstützt Last-Will- und Testament-Nachrichten für Fälle, in denen Clients unerwartet die Verbindung verlieren.
*Im Januar 2018 wurde Version 5 veröffentlicht, die die Verwendung für Entwickler komfortabler machen soll.
+
* Ermöglicht sowohl temporäre als auch dauerhafte Sessions, was eine flexible Nutzungsmöglichkeit bietet.
;Spezifikation von MQTT-SN (ehemals MQTT-S), Version 1.2 (MQTT für Sensorgeräte):
+
 
*Ausgelegt für eingebettete Geräte in non-TCP/IP-Netzwerken, wie zum Beispiel ZigBee. MQTT-SN ist ein Nachrichtenprotokoll nach dem Beobachter-Muster für Sensornetze.  
+
== MQTT Broker ==
*Es erweitert MQTT für die Nutzung über TCP/IP-Infrastruktur hinaus und ist besonders optimiert für die Nutzung mit Sensor- und Aktor-Lösungen.
+
* Open Source Broker wie Mosquitto bieten eine weit verbreitete und kostengünstige Lösung.
*Der ursprüngliche Name war MQTT-S. Dieser erzeugte jedoch Missverständnisse (s für secure?), so dass 2013 eine Umbenennung in MQTT-SN angestoßen wurde (SN für Sensor Networks).
+
* Kommerzielle Broker wie HiveMQ bieten erweiterte Funktionen und Support für Unternehmen.
=Protokoll=
+
 
*MQTT ist ein Client-Server-Protokoll.
+
== Nutzdaten: Topics und Payloads ==
*Clients senden dem Server (“Broker”) nach Verbindungsaufbau Nachrichten mit einem Topic, welches die Nachricht hierarchisch einstuft.
+
* Topics dienen der strukturierten Organisation der Nachrichtenübermittlung und ermöglichen eine feingranulare Kontrolle über die Nachrichtenverteilung.
*Zum Beispiel Küche/Kühlschrank/Temperatur oder Auto/Rad/3/Luftdruck.  
+
* Payloads können jegliche Daten enthalten, JSON ist dabei ein populäres Format aufgrund seiner Lesbarkeit und Effizienz.
*Die Topics müssen vorher auch nicht konfiguriert werden. Clients können diese Topics abonnieren, wobei der Server die empfangenen Nachrichten an die entsprechenden Abonnenten weiterleitet.
+
 
*Nachrichten bestehen immer aus einem Topic und dem Nachrichteninhalt.  
+
== Einsatzgebiete ==
*Nachrichten werden mit einer definierbaren Quality of Service versendet:
+
* In der industriellen Automatisierung, um eine nahtlose M2M-Kommunikation zu ermöglichen.
*at most once (die Nachricht wird einmal gesendet und kommt bei Verbindungsunterbrechung möglicherweise nicht an),
+
* In Smart-Home-Anwendungen für die effiziente Steuerung und Überwachung von Geräten.
*at least once (die Nachricht wird so lange gesendet, bis der Empfang bestätigt wird, und kann beim Empfänger mehrfach ankommen)
+
* In Fahrzeugtelematiksystemen, um Fahrzeugdaten in Echtzeit zu übermitteln.
*exactly once (hierbei wird sichergestellt, dass die Nachricht auch bei Verbindungsunterbrechung genau einmal ankommt).
+
 
*Außerdem kann mit dem Retain-Flag der Server angewiesen werden, die Nachricht zu diesem Topic zwischenzuspeichern.  
+
== Sicherheit ==
*Clients, die dieses Thema neu abonnieren, bekommen als erstes die zwischengespeicherte Nachricht zugestellt.
+
* MQTT unterstützt SSL/TLS zur Verschlüsselung der Datenübertragung.
*Beim Verbindungsaufbau können Clients einen „letzten Willen“ in Form einer Nachricht definieren.
+
* Mittels ACLs (Access Control Lists) und Client-Zertifikaten kann die Zugriffskontrolle verstärkt werden.
*Falls die Verbindung zum Client verloren geht, wird diese Nachricht publiziert und dabei an die entsprechenden Abonnenten gesendet.
+
 
*MQTT wird üblicherweise über TCP benutzt und hat einen fixen Header. Das erste Byte enthält den Nachrichtentyp (4 Bit) und, je nach Nachrichtentyp, weitere Flags.
+
== Herausforderungen und Zukunftsaussichten ==
=Es gibt folgende Nachrichtentypen=
+
* Wie alle IoT-Protokolle steht MQTT vor Herausforderungen in Bezug auf Skalierbarkeit und Sicherheit.
*CONNECT
+
* Fortlaufende Entwicklungen in MQTT 5 verbessern Funktionen wie Fehlerberichterstattung und Nachrichteneigenschaften.
*CONNACK
+
 
*PUBLISH
+
== Fazit ==
*PUBACK
+
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.
*PUBREC
 
*PUBREL
 
*PUBCOMP
 
*SUBSCRIBE
 
*SUBACK
 
*UNSUBSCRIBE
 
*UNSUBACK
 
*PINGREQ
 
*PINGRESP
 
*DISCONNECT
 
*AUTH (ab MQTT Version 5.0)
 
=Quelle=
 
*https://de.wikipedia.org/wiki/MQTT
 

Version vom 27. März 2024, 16:54 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 und Spezialisierung auf hohe Latenz aus, was es zum bevorzugten Protokoll für Machine-to-Machine (M2M) Kommunikation macht.

Geschichte und Entwicklung

  • Ursprünglich in den späten 1990ern 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.

Grundlagen von MQTT

  • Definiert als ein Messaging-Protokoll, das einem Publish/Subscribe-Modell folgt.
  • 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".

Technische Merkmale

  • 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.
  • Ermöglicht sowohl temporäre als auch dauerhafte Sessions, 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.

Nutzdaten: Topics und Payloads

  • Topics dienen der strukturierten Organisation der Nachrichtenübermittlung und ermöglichen eine feingranulare Kontrolle über die Nachrichtenverteilung.
  • 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.
  • Mittels ACLs (Access Control Lists) und Client-Zertifikaten kann die Zugriffskontrolle verstärkt werden.

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 und Nachrichteneigenschaften.

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.