Was ist MQTT?

MQTT (Message Queuing Telemetry Transport) ist ein kleines einfaches Transportprotokoll um Daten zwischen Clients über einen Broker zu transportieren. Mehr dazu auf Wikipedia: https://de.wikipedia.org/wiki/MQTT

Distributed MQTT

Es gibt MQTT Broker die man verteilt ohne eigentlichen Master betreiben kann. Somit kann jeder einen eigenen Broker betreiben und sich dem Cluster anschließen. Wenn nun im Router der MQTT Broker manuell konfigurierbar ist, kann jeder User jeden Broker nutzen. Da auch jeder Daten an den Broker schickek kann ist somit das System komplett dezentral ausgelegt. Theoretisch können auch eigene Broker ohne Cluster betrieben werden, wenn jemand sein eigenes Netz bauen will. Dezentralität fördert Möglichkeiten.

vernemq

Hier hatte ich leider Probleme das ordentlich zum laufen zu bekommen. Das Clustering hat immer wieder in einzelne Richtungen nicht funktioniert tlw. kam ein CLusterjoin gar nicht zustande.

EMQ-X

Läuft aktuell und macht einen guten Eindruck.

mosquitto-cluster

https://github.com/hui6075/mosquitto-cluster noch ungetestet

Einsatzzwecke

Monitoring

Wenn der Router seine Monitoringdaten an den MQTT Broker schickt, kann sie dort jeder abgreifen und jeder ein eigenes Monitoring betreiben. Monitoringbetreiber können auf Wunsch filtern welche Router sie haben wollen und welche nicht. Es ist dem Monitoringbetreiber überlassen, welche Daten er einliest und welche nicht, vorhanden sind alle die dort Daten hinschicken. Ein erstes Patchset für die Router ist bereits erstellt: https://git.freifunk-franken.de/freifunk-franken/firmware/pulls/24

Konfiguration Austausch

Über MQTT können auch Konfigurationsdateien ausgetauscht werden. Wenn man das für die komplette /etc/config/gateway macht, ist es möglich mit einem Mausklick einen Router komplett automatisch zu konfigurieren. Dies soll aber expliziet optional sein und eine manuelle Konfiguration nach wie vor möglich sein.

Beispiel IPv6 Adressen

Router können zum Beispiel IPv6 Adressen am Broker abfragen und verschiedene Betreiber können IPv6 Adressen anbieten. Somit muss der User sich keine Adressen mehr manuell klicken sondern kann mit einen Knopfdruck sich automatisch Adressen auf seinen Layer 3 Router konfigurieren. Aussehen kann so etwas etwa so: https://git.freifunk-franken.de/ChristianD/firmware/commit/3fd605fff24a5095d02dcb02d47d69f1ff05c9d8 (ACHTUNG noch in Arbeit und aktuell nicht wirklich lauffähig!)

Aktuelle Broker

Aktuell betreibe ich ein eigenes Test-MQQ-Cluster Netzwerk auf Basis von emqx. Zugreifen kann man auf das Cluster über:

2a01:4f8:221:2d08::129 2a01:4f8:221:2d08::130 jeweils Port 1883.

Der MQTT Server wird komplett offen betrieben. Das Clustering läuft aktuell noch auf Freifunk IPv4 Adressen da ich dort mit IPv6 Probleme hatte. Wer gerne mit experiementieren will, bitte bei mir melden dann kannst du dich gerne den Cluster anschließen und wir probieren das ganze weiter aus. Das ganze sind aktuell noch erste Versuche.