Schlankes IoT-Protokoll So funktioniert MQTT

Das schlanke IoT-Protokoll MQTT spielt bei der Vernetzung von IoT-Geräten einen zentrale Rolle. Mit einfachen Grundprinzipien lassen sich hunderttausende Geräte vernetzen.

Die Vernetzung von hunderten, tausenden oder gar hunderttausenden Geräten ist eine zentrale Herausforderung von vielen Internet-of-Things-Projekten. Bei dieser Skalierung stoßen konventionelle Client-Server-Software-Architekturen und Kommunikationsprotokolle auf Server-Seite oft an ihre Grenzen. Auf der Seite der Clients dagegen ist oft mit schlechter Verbindungsqualität zu rechnen, speziell wenn die Datenübertragung über Mobilfunk vonstatten geht.

Das standardisierte und offene IoT-Protokoll MQTT hat sich mittlerweile zu einem der populärsten Standards entwickelt, um Geräte im Internet of Things zu vernetzen, da das Protokoll Antworten auf Themen wie Skalierung, verlässliche Datenübertragung über unzuverlässige Kommunikationskanäle und standardisierte Sicherheitsmaßnahmen gibt. MQTT ist dabei ein sogenanntes Messaging-Protokoll, bietet also eine nachrichtenzentrierte Kommunikation an. Durch die Schlankheit und Einfachheit ist es in vielen Projekten im Einsatz, bei denen andere Protokolle wie etwa OPC UA zu schwergewichtig sind, zu viele unnötige Features anbieten oder zu komplex für den konkreten Anwendungsfall sind.

Einst proprietär

MQTT wurde 1999 von IBM und Arcom entwickelt, um Ölpipelines über Satellitenverbindungen zu vernetzen. Ziel war es dabei, ein Protokoll zu schaffen, welches möglichst bandbreiteneffizient und batterieschonend ist. Das Protokoll selbst war jahrelang proprietär und wurde in vielen SCADA-Szenarien eingesetzt. Im Jahr 2010 veröffentlichte IBM die MQTT-Spezifikation 3.1 lizenzfrei, woraufhin viele proprietäre und freie Software-Produkte sowohl für die Server- als auch die Client-Seite entstanden sind. 2013 begann eine formale Standardisierung von MQTT – u.a. mit Firmen wie IBM, Cisco, Software AG und dc-square. Mittlerweile ist MQTT ein ISO-Standard (ISO/IEC 20922:2016) und ein OASIS-Standard und ist somit offen und frei verfügbar.

Die Gründe für die Popularität von MQTT als Kommunikationsprotokoll für die heutigen Herausforderungen im Internet of Things liegen in einer Reihe von Protokolleigenschaften:

  • Einfachheit des Protokolls
  • Bandbreiteneffizienz
  • Skalierbarkeit bis zu Millionen von vernetzten Geräten
  • Das Protokoll ist standardisiert und zu 100 % offen
  • Die Kommunikation erfolgt ereignisgesteuert
  • MQTT ist datenagnostisch und binär

Durch seine Eigenschaften wird MQTT in sehr vielen Branchen weltweit in unterschiedlichsten Anwendungsfällen eingesetzt: von Connected Cars über militärische Anwendungen, Vernetzung von Industriegeräten, zur Steuerung
von Drohnen, bis zum simplen Datenaustausch von mobilen Geräten und Computern. Die meisten der Anwendungsfälle haben gemeinsam, dass eine Internetverbindung (meist über Mobilfunk) benutzt wird und geringe Latenzen selbst bei geringer Bandbreite elementar ist.

MQTT beschreibt keine Daten semantisch (wie etwa OPC UA) und ist ein reines Datentransportprotokoll. Es folgt dem UNIX-Grundsatz „erledige eine Sache und erledige sie gut“ und ist deshalb extrem flexibel einsetzbar, da es „nur“ die Applikations-Transportschicht definiert. Deshalb wird es in typischen Industrie-4.0-Anwendungsfällen weniger oft verwendet, da hier oft eine semantische Schicht benötigt wird und oft keine Kommunikation über das Internet erfolgt.

MQTT im OSI-Modell

Im OSI-Schichtenmodell ist MQTT auf Applikationsebene anzusiedeln (Bild 1). MQTT versteht sich selbst als Daten­transportprotokoll für Applikationen und ist selbst auch ein Applikationsprotokoll. Dabei wird zwingend TCP als Layer-4-Protokoll vorausgesetzt, da MQTT verbindungsorientiert arbeitet. IPv4 und IPv6 werden unterstützt, wobei IPv4 in der Praxis aktuell deutlich häufiger mit MQTT verwendet wird. MQTT wird fast ausschließlich in Verbindung mit TLS (Transport Layer Security) verwendet, um eine verschlüsselte Übertragung zwischen zwei Kommunikationsteilnehmern zu gewährleisten. TLS ist ein Standardprotokoll und wird beispielsweise auch verwendet, um das HTTP-Protokoll abzusichern (z.B. für Onlineshops). MQTT kann auch über Websockets benutzt werden, weshalb mittlerweile sogar Webseiten bzw. mobile Applikationen (auf Basis von Webtechnologien) MQTT benutzen, um direkt mit Hardware-Geräten zu kommunizieren.