Mqtt: Unterschied zwischen den Versionen

Aus Freifunk Franken
Wechseln zu:Navigation, Suche
Zeile 24: Zeile 24:
Wenn der Router seine Monitoringdaten an den MQTT Broker schickt, kann sie dort jeder abgreifen und jeder ein eigenes Monitoring o.ä. Sachen 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.
Wenn der Router seine Monitoringdaten an den MQTT Broker schickt, kann sie dort jeder abgreifen und jeder ein eigenes Monitoring o.ä. Sachen 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.
Das ganze ist mittlerweile im aktuellen Layer 3 Release enthalten und kann verwendet werden. Einfach im WebUI unter mqtt Server einen Server eintragen, sinnvollerweise schließt man sich dem MQTT-Cluster an, damit die Daten auch mit anderen MQTT Server getauscht werden.
Das ganze ist mittlerweile im aktuellen Layer 3 Release enthalten und kann verwendet werden. Einfach im WebUI unter mqtt Server einen Server eintragen, sinnvollerweise schließt man sich dem MQTT-Cluster an, damit die Daten auch mit anderen MQTT Server getauscht werden.
Ein Beispiel wie so ein Monitoring ausschauen kann, ist hier zu finden: https://grafana.dresel.systems/d/Freifunkrouter/freifunkrouter?orgId=1&var-Router=Karo&var-s2nproxy=All
Hier ist auch schon der [[s2nproxy]] integriert welcher allderdings noch WIP ist.


== Konfiguration Austausch ==
== Konfiguration Austausch ==

Version vom 10. April 2022, 19:16 Uhr

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.

Installationsanleitung

  • folgt*

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 o.ä. Sachen 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. Das ganze ist mittlerweile im aktuellen Layer 3 Release enthalten und kann verwendet werden. Einfach im WebUI unter mqtt Server einen Server eintragen, sinnvollerweise schließt man sich dem MQTT-Cluster an, damit die Daten auch mit anderen MQTT Server getauscht werden.

Ein Beispiel wie so ein Monitoring ausschauen kann, ist hier zu finden: https://grafana.dresel.systems/d/Freifunkrouter/freifunkrouter?orgId=1&var-Router=Karo&var-s2nproxy=All

Hier ist auch schon der s2nproxy integriert welcher allderdings noch WIP ist.

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!)

Komplett automatische konfiguration

Auch eine komplette automatische Konfiguration ist denkbar wenn noch wireguard und ipv4 mit abgehandelt wird. Dann ist am Ende einen Layer 3 Router in Betrieb nehmen genauso einfach wie aktuell einen v2 Router.

Aktuelle Broker

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

  • 2a01:4f8:221:2d08::129
  • 2a01:4f8:221:2d08::130
  • fd43:5602:29bd:ffff::1883 (Anycast im Freifunknetz)

jeweils Port 1883.

Der MQTT Server wird komplett offen betrieben. Aufgrund der dezentralität ist es wünschenswert das möglichst viele Leute einen eigenen MQTT Server betreiben und sich dem Cluster anschließen. Dazu bitte bei mir (ChristianD) melden.