Aussetzer bei der Alfred-Datenübermittlung

Hallo zusammen!

Nochmals eine Frage zu einem Effekt, zu den ich auch noch nichts greifbares hier oder per Google finden konnte.

Wir setzen batman-adv-14 mit alfred.2014.3 auf unseren Gateways ein, in der site.mk von Gluon 2016.1 wurde das Paket gluon-mesh-batman-adv-14 für die Nodes ausgewählt.

Seit der Umstellung der Knoten auf die neue Firmware scheinen ab und zu einige Knoten laut Alfred mal für ein paar Minuten offline zu gehen, allerdings nur auf der Map. Die Geräte selber laufen durch und haben ihre Verbindung noch.

Die „Aussetzer“ kann man gut im Graphen der Arbeitsspeicher-Belegung der Nodes sehen, hier ein Beispiel:

Beispielbild

Weitere Beispiele: Map Freifunk Lippe

Könnte das durch eine falsche Konfiguration entstehen oder an der neueren Alfred-Version auf den Nodes liegen?

Wir haben das selbe Problem und es durch eine länger Alfred Speicherdauer gelöst/umgangen.

1 „Gefällt mir“

Wie habt ihr den die speichdauer erhoeht?

Man kann die Speicherdauer um Alfredmaster vor dem kompilieren festlegen.

Hat jemand aus unserem Team gemacht. Ich schau mal ob ichs raussuchen kann.

Wir haben das Problem nach Umstellung auf 2016.1 in Hennef auch, die Lösung dafür wäre prima :smile:

1 „Gefällt mir“

@anon68922371: Das waere super, wenn du einen Link haettest.

Naja eine Lösung ist es nicht nur ein Workaround… Wir haben das Problem schon mit 2015.1 … auf 2016.1 haben wir noch nicht gewechselt.

So nur kurz am Handy:
https://git.open-mesh.org/alfred.git/blob_plain/HEAD:/alfred.h

Alfred Data Timeout erhöhen. Wir nutzen im Moment 1200s (20min) das geht ganz gut.

Danke, aber irgenwie stehe ich da auf dem Schlauch. Wo finde ich die Einstellung, wenn ich aus dem Git-Repo von Freifunk Gluon klone?

Gar nicht.

Das ist eine Einstellung die auf dem Gateway gemacht werden muss auf dem der Alfred Master läuft.

Alfred liegt unter /usr/sbin/ und wird ueber einen Aufruf in der /etc/network/interfaces auf dem Gateway gestartet. Eine grundlegende Config fuer alfred finde ich nicht, so dass Parameter wohl nur ueber diesen Aufruf uebergeben werden. Ist diese besagte Einstellung jetzt fest in die Executable einkompiliert so dass ich neu kompilieren muss oder geht das auch anders?

Nein wie ich oben schrieb muss Alfred dafür neu kompiliert und installiert werden, damit diese Änderung greift.

Sie ist hart kodiert.

Ok, dann waere das schon mal ein Ansatz. Weiss denn jemand, was der Grund fuer das Problem ist und ob da ein Fix geplant ist? Das Problem scheinen ja mehrere Communties zu haben.

Bei uns kommen die Alfred Pakete nicht vollständig beim Server an, es fehlen ein paar Bits.

Dadurch werden die Daten vom Server verworfen und für die eingestellte Speicherdauer die aus dem Cache genutzt.

Aber warum die Daten unvollständig sind, wissen wir nicht. Das wird bei UDP sicher auch schwer zu ergründen.

Wohl wahr. Ist nur komisch, dass es bei uns mit der 2015.1.2 nicht auftrat, mit der 2016.1 aber schon.

Alfred wird es in nächsten (Haupt-)gluon-Release vermutlich nicht mehr geben, ist also sowieso nur ein Auslaufmodell.
Wer Probleme mit Gluon hat, der sollte als Lösung besser gleich den den Announced benutzen, das macht auch nur einmal Arbeit.

Also Announced hat bei uns in Tests nicht besser abgeschnitten, es sorgt sogar teils für noch mehr Traffic und oft kommen Metriken noch seltener an als in Alfred.
Wer Probleme mit Alfred hat das die „letzten Bits“ nicht ankommen, sollte Alfred mit einem Mac-Vlan Interface und geringerer MTU betreiben.
Alfred hat das Problem das es manchmal Pakete verwirft wenn diese fragmentiert ankommen.
Wir überlegen noch ob wir Metriken ala „prometheus-style“ via HTTP anbieten anstatt alfred bzw announced zu nutzen. Die Node würde sich dann einmalig via curl call an der Map anmelden und von da aus einfach alle 5 Minuten abgefragt wird.
Allerdings wird dann wohl die ursprüngliche Map nicht mehr klappen, die Topologiedaten werden ja auch via Alfred/Announced übertragen.

1 „Gefällt mir“

UDP ist so lange effektiv, wie es keinen/kaum Packetloss gibt, insbesondere bei Broadcast/Multicast.
Das mit Announced vorgesehene (und beim Node-Informant leider nicht wirklich funktionierend implementierte) Verfahren ist, bei (mehrfach) ausbleibenden Daten direkt bei den „vermissten“ Knoten die Daten zu pullen.

Angedachter Ansatz ist, den 1001er-Broadcast nur nur noch für „Discovery“ zu nutzen. (Und neue Nodes nach dem Boot ebenfalls ein paar Mal broadcasten zu lassen, damit es fixer geht.
Und ab „Knoten gelernt“ nur noch mit unicast zu arbeiten, nach dem Motto „Knoten Online ist häufiger als Knoten offline“. (kann man ja auch einstellen, sobald ein Knoten als Offline erkannt und vielleicht nochmal die doppelte Zeit verstrichen ist.)

Aber das hat jetzt weniger mit dem konkreten Alfred zu tun.
Faktisch ist es für mich, dass meshviewer zu Knoten, die per Alfred sich nicht melden, sagt „offline“ ist für viele Nutzende schlicht irreführend.

Richtig, Alfred nutzt auch UDP aber kommt damit anscheinend besser klar.
Ich nehme an das es daran liegt das es zwischen den Supernodes noch merged und wenn ich das richtig gelesen habe mittels Transaktion arbeitet.

Broadcast wollen wir halt komplett vermeiden für sowas, es gibt fest konfigurierte Fastd/L2TP Server… Da fällt ein zusätzlicher Eintrag für die Map nicht ins Gewicht und macht das ganze auch nicht unbedingt „dezentraler“ :wink:
Lieber eine solide Unicast Umsetzung als weiterhin Broadcast zu verwenden wo wir doch schon so viel davon filtern.

1 „Gefällt mir“

Gibt es einen konkreten Ansatz, den announced in Verbindung mit dem Meshviewer sauber zu implementieren? Hat das schon jemand so gemacht?

1 „Gefällt mir“

Mir ist jetzt nicht klar, worauf Deine Einschränkungen abziehen. (Fettung durch mich)

a) es gibt nicht einen, sonder zwei Ansätze.
b) Einer davon benutzt aber nicht den Meshviewer, sondern einen Fork davon
c) Eventuell sind jedoch beide Deiner Definition nach nicht „sauber genug“.