Skip to content

Remove code that reconfigures hoods when a mesh router is moved from one hood to another

Was tut der Code?

Wenn Koordinaten gegeben sind und eine Hood für diese Koordinaten existiert aber kein Batman advanced GW in Reichweite ist...

		local geo_hood = gethood_by_geo(jhood, geo)
		-- Prüfe hood auf fehler
		if geo_hood ~= nil then
			io.stderr:write('Hole hood bei position\n')
			if get_gw_range() then
				io.stderr:write('Batman GWs in reichweite\n')

...dann setze die zu den Koordinaten passende Hood nicht. Stattdessen schaue ob ein anderer Freifunk Router in der Nähe ist und setze die Hood dieses Routers. Wenn das nicht erfolgreich ist, dann setze doch noch die Hood passend zu den gegebenen Koordinaten.

Was ist Ziel des Tests?

Ziel des Tests ist, festzustellen ob ein bereits auf eine Hood konfigurierter Router mit fest eingetragenen Koordinaten physikalisch an eine andere Position in einer anderen Hood gebracht wurde und dadurch keinen Kontakt mehr zur vorher konfigurierten Hood hat. Dieser Test führt im Erfolgsfall zur Rekonfiguration des Routers auf die neue Hood trotz der fest gesetzten alten Position. Im Anschluss kann ein Router auch seine Position automatisch korrigieren da er dann wieder Verbindung zum Internet hat.

Für welche Router ist dieser Test gedacht?

Dieser Test ist für reine Mesh-Router gedacht. VPN Router können in dem oben skizzierten Szenario ihre Position per Internet updaten und triggern im Anschluss daran eine Rekonfiguration.

Was für Seiteneffekte können auftreten?

  • Es tritt eine beliebige Störung auf in deren Folge der Batman advanced Gateway für einen oder mehrere Router nicht mehr sichtbar ist (Ausfall des Internets, schlechte Verbindung, Ausfall des Gateways selbst)
  • Folge: Alle Router führen eine Rekonfiguration durch und konfigurieren sich auf die Hood mit der BSSID ihres Nachbarn sofern diese von BSSID der aktuell gesetzten Hood abweicht. Normalerweise ist das nicht der Fall und es passiert nichts. Betreibt aber jemand innerhalb einer Hood einen Router, der auf eine andere Hood konfiguriert ist (an einer Hoodgrenze, zu Testzwecken oder aus Spaß), führt dies zu einem Dominoeffekt bei dem sich alle umliegenden Router auf die Hood dieses Testrouters konfigurieren.
  • Relevantes Beispiel: bei einer Vernetzungsdichte wie in Wittmund kann das relevante Folgen haben

Lösungsvorschlag

Der Fall, dass ein bereits konfigurierter Router in eine andere Hood getragen wird und dort nur per Mesh angebunden wird ohne dabei die Koordinaten des Routers zu ändern ist ein Spezialfall der auch durch manuelles Setzen der korrekten Koordinaten abgedeckt werden kann. Da der Code nicht seiteneffektfrei ist und ein Knotenbetreiber die Koordinaten sowieso manuell ändern sollte, wenn er seinen Router durch die Gegend trägt, schlage ich vor den Code zu entfernen.

Allgemein kann dieses Problemen meines Wissens nach gar nicht seiteneffektfrei durch Prüfen einer Batman advanced Metrik gelöst werden. Das Prüfen dieser Batman advanced Metrik hat in jedem Fall Seiteneffekte.

Merge request reports