Netzauslastung & Massnahmen

Wie einige von euch sicher schon gemerkt oder auch hier gelesen haben ist unser Mesh inzwischen relativ gut ausgelastet. Es kommt immer wieder mal zu Problemen beim versenden von Nachrichten oder auch wenn man sich auf einen Repeater einloggen möchte.

Ich würde hier gerne einen zentralen Thread schaffen in welchem wir potentialle Massnahmen diskutieren und definieren können.

Grösstes Problem, soweit ich das verstehe, sind im Moment vor allem die Flood-Messages in den Channels sowie die vielen Adverts. @Paul_Simmen hat da ein paar brutal gute Posts verfasst, würde dringenst empfehlen diese zu lesen:

Scope Region

Die wichtigste Massnahme von MeshCore gegen zu viel Traffic heisst “Regions”. Eine kurze Erklärung sowie eine Anleitung findet man hier: REGIONS | MeshCore Switzerland

Seit der MeshCore Version 1.15.0 ( MeshCore Firmware v1.15.0 ) gibt es hier neue Möglichkeiten:

  1. Auf dem Companion Node eine Standard-Region zu definieren.
  2. Auf dem Repeater eine Standard-Region zu definieren.

Bis Heute mussten wir auf unseren Repeatern die Region “*” zulassen damit das mit den direkten Nachrichten und dem Remote Management vom Repeater geklappt hat. Neu wäre es aber möglich diese zu deaktiveren / löschen, wenn mann auf der Companion Node die Default Region auf etwas definiert was auf dem Repeater zugelassen ist klappt das. Das hätte folgende Konsequenzen:

  • Repeater würden Nachrichten bzw. Pakete die keiner Region zugeordnet sind nicht mehr weiter leiten. Das würde unser Mesh massiv entlasten da unglaublich viele Nachrichten keiner Region zugeordnet sind.
  • Es würde die User dazu erziehen Regions anzuwenden da es ohne schlicht und einfach nicht mehr funktioniert.
  • Nachrichten könnten mit der Region “europe” immer noch übers ganze Netz gesendet werden. Hier besteht aber auch ein Risiko, wenn nämlich jeder User und jeder Bot einfach anfängt diese Region zu verwenden sind wir wieder gleich weit.

Würde zu diesem Thema unglaublich gerne eure Meinungen hören, falls wir uns einig werden könnten wir dann die Empfehlungen auf https://www.meshcore.ch/.

Multi-Byte

Stand Heute werden Repeater mittels einem Byte identifiziert. Mehr Details sowie eine separate Diskussion zum Thema findet man hier: Meshcore multi-byte path hash's

Hier würde ich vorschlagen dass wie unsere Repeater Settings Empfehlungen anpassen und unsere Repeater 2-Byte Adverts versenden lassen. Das blockiert nichts, die Repeater leiten nach wie vor auch 1-Byte Nachrichten weiter.

Das wird nicht wirklich helfen gegen zu viel Traffic, bei direkten Nachrichten und Repeater Remote Admin darf man aber eine Verbesserung erwarten sobald wir genug Repeater auf >=1.14.0 am laufen haben und wir wirklich anfangen können 2-Byte Nachrichten zu versenden.

Repeater Command - Einstellung abfragen:
get path.hash.mode

Repeater Command - Einstellung ändern:
set path.hash.mode 1

Weitere Möglichkeiten

  • Eine weitere Einstellung die Abhilfe schaffen könnten wären die max. Hops. Per default leiten die Repeater 1-Byte Nachrichten bis zu 64 Hops weiter. Wir könnten uns überlegen diese zum Beispiel auf 20 Hops einzuschränken.
Repeater Command - Einstellung abfragen:
get flood.max

Repeater Command - Einstellung ändern:
set flood.max 16
  • Repeater Flood Adverts auf 72 Stunden stellen, einfach damit es weniger Adverts gibt.

Ich habe hier sicher noch einiges vergessen, bin sehr gespannt auf eure Meinungen und Ideen!

8 Likes

Muss aber zuegben dass ich das mit der Default Repeater Region auch noch am studieren bin, das ist also nicht wirklich ein fix fertiger Vorschlag, nur der Start einer Diskussion.

Ich sehe da schon Herausforderungen:

Wenn wir jetzt auf unseren Repeatern die Default Region auf “ch” setzen und “*” entfernen, dann leiten die auch nur noch Adverts weiter von Repeatern und Companion Nodes welche die Default Region auf eine Region gesetzt haben welche unsere Repeater zulassen. So würden wir quasi keine Adverts mehr aus unseren Nachbar-Ländern bekommen.

2 Likes

Ich bleibe bei meinen schon mehrmals gemachten Vorschlägen / Bemerkungen.

Aktuell sind wir an einem Punkt, wie bei MeshTastic. Viele sehen sich, erreichen sich aber nicht wirklich gegenseitig / zuverlässig.

Mein Vorschlag an die Entwickler:

  1. Jeder companion sendet auch automatisch, regelmässig ein Advert. Dadurch sähen sich die Leute wieder direkt und könnten sich vermehrt direkt schreiben. Vor einem halben Jahr, als ich anfing, ging viel mehr (fast alles) direkt. Als dann die Kontakt-Liste begann überzulaufen, war plötzlich alles direkte fertig und verschob sich auf den Public-Kanal.
  2. Das Mesh kalibriert sich selber. In den Zeiten wo wenig läuft, zB zwischen 00 und 06 Uhr werden die Adverts gesendet (Repeater und Companions).
  3. Jeder Repeater kommuniziert in dieser Zeit mit seinen Nachbarn und erstellt eine Rangfolge, wie gut er diese erreicht. Repeater, die er zwar sieht, aber keine Antwort Genen, oder schlechte Werte aufweisen, werden an Folgetag nicht berücksichtigt bzw. bedient.
    Beispiele:
    1. Repeater A hat 50 Kontakte in seiner Liste.
      In der Nacht, fragt er diese der Reihe nach ab. Diejenigen die keine Antwort geben, fliegen raus, bzw. wandern an das Ende der Liste.
    2. mit jedem der Antwortet, handelt er die Empfangsqualität aus und sie setzen sich entsprechend gegenseitig in der Priorität ein.
    3. Am Folgetag, werden nur entweder die besten 5 (bei einer kleinen Liste) oder nur zB. die mit mehr als 0 oder +5 db berücksichtigt.
    4. Wenn nun eine Nachricht reinkommt von einem Repeater mit guter Qualität, wird diese weitergeleitet, da hier auch eine grosse Chance besteht, dass, wenn eine Antwort kommt, diese auch erfolgreich weitergeleitet werden kann.
    5. Wenn eine Nachricht von einem schlechten Repeater kommt, wird diese gar nicht weitergeleitet, da auch eine Antwort mit grösster Wahrscheinlichkeit nicht mehr zugestellt werden kann.
  4. So könnte am Tag viel Traffic eingespart werden.
  5. Zeit würde ich auch bei den Repeatern automatisch synchronisieren. Sie müsste ja nicht sehr genau sein. Das dürfte möglich sein. So weiss zB. eine Firmware 1.15, dass die Zeit und Datum frühestens vom 19.4.26 sein kann und kann somit unterscheiden, ob die gegenstelle eine falsche Zeit/Datum hat, welch selber nicht zu übernehmen ist. Die Zeit von Commpanions dürfte meist stimmen, da diese vom Handy kommt. etc…
  6. Funkdisziplin: wie oben erwähnt, alles daran setzen, dass wieder viel mehr direkt geht.
  7. Alll die CLI / Kommandozeilen-Kommandos wieder (grösstenteils) abschaffen. Da ist viel zu viel Potential drin, etwas kaputt zu machen.
  8. Bei den Repeatern den ungenutzten (RAM-) Speicher dazu nutzen, dass sich diese auch Companions merken und so allenfalls Traffic sparen oder Meldungen mit diesen Informationen direkt zustellen können
  9. Wenn beim Flasher zB nur schon das Land ausgewählt werden könnte, könnten Einstellungen wie Region schon zumindest teilweise voreingestellt werden.

Ich denke, dass noch einiges optimierungs-Potential vorhanden wäre, ohne, dass der User irgendwelche Einstellungen selber machen muss.

1 Like

Hallo Felix,

1. würde ich begrüssen, die Frequenz von Companion Multihop Adverts sollte jedoch massiv auf max 1-3 pro Woche begrenzt sein und möglichst nur mit Region. Ansonsten wird das Netz komplett geflutet. Zu Anfang hatten DM nicht funktioniert da man nicht gegenseitig in den Contacts war. Nun funktionierts nicht mehr weil das Netz häufig zu ist.

2. vermutlich schwierig, jeder kann jedoch auch ohne zusätzliche Funktion dafür sorgen dass die eigenen Repeater nicht unnötig häufig Adverts senden. Wenn Adverts auf ungerade Anzahl Stunden. z.Bsp >= 27 h gestellt werden, dann trifft es auch nicht regelmässig denselben Zeitpunkt in der Peakzeit. Gerade bei Repeaterbetreibern mit überdurchschnittlich grossem Beitrag am Netzausbau sehe ich durchaus noch Optimierungspotential .-)

3-4.Verstehe ich nur bedingt. Das Einordnen von Nachbarn von denen mit gutem Signal empfangen wird, kann auch mit regulären Paketen ( mit 2 Byte Path Hash damit es keine Verwechselung gibt ) geschehen, dazu bräuchte es keine Adverts.

Eine Message welche empfangen wurde hat bereits Airtime konsumiert, wäre eigentlich schade diese zu verwerfen. Und die Pfade müssen ja nicht zwingend für Hin- und Rückweg symetrisch sein. Da jeder Repeater jede Message ( basierend auf Hash_ID) nur einmal weiterleitet, ergibt sich auch kein Unterschied ob er nun dieselbe Message von einem Nachbarn mit guter oder schlechtem Signal empfangen hat.

Ich glaube es gab auch mal einen ähnlich gelagerten PR, aber wie immer ist die Parametrisierung und Einteilung in gut und schlecht äusserst schwierig und kann je nach Situation unterschiedlich sein. Es ging in diesem PR dann glaub auch eher darum je nach Qualität mehr oder weniger Delay beim forwarden einzubauen als darum eine Message komplett zu verwerfen.

9.Es sind Bestrebungen im Gang in der App eine Hilfestellung für die Definition von Regionen zu geben. Die Ansätze setzen aber auf vorhandene Geodaten was in der Schweiz zu einer CH Region und weiterer Unterteilung in Kantone führen würde. Hier müssten wir rechtzeitig reagieren damit unsere Bedürfnisse berücksichtigt werden.

Optimierungspotential ist einiges vorhanden, ich sehe als Lösung vor allem die Einteilung in Regionen und persönlich würde ich sofort dafür stimmen Flood Traffic ohne Region komplett zu unterdrücken.

Für eine Kommunikation zwischen Nordsee und Mittelmeer ist die Technologie einfach nicht geeignet. Weitverkehrsverbindungen mit einer Europaregion könnten funktionieren, dies würde jedoch das Verständnis und die Disziplin aller benötigen und daran glaube ich einfach nicht.

Gruss

Stefan

hallo Stefan

zu 1.
Vor ca. 6 Monaten war es so, dass ein companion nur ca. 50 Kontakteinträge haben konnte (heute 350). Jeder Companion und jeder Repeater waren in dieser Liste drin. Wir waren damals 10 Leute mit 20 Repeatern. Jeder hatte jeden in den Kontakten und jeder konnte direkt mit jedem schreiben. Auf dem Public-Kanal lief so gut wie gar nichts.

zum Rest

Klar hat eine MSG bereits Airtime konsumiert, aber sie muss nicht noch mehr produzieren, wenn der Repeater ganz genau weiss, dass kein zuverlässiger Rückkanal besteht.

Ich möchte nicht weniger sondern eher mehr Adverts, aber nicht zur besten Sendezeit.

Ich möchte, dass sich das Netz / Mesh selber kalibriert

Ich möchte, dass der User etwa gleich viele Einstellmöglichkeiten hat, wie beim Natel-Netz, oder bei einem iPhone vor 10 Jahren, nämlich gar keine.
Das ist auch nicht nötig, so kann man auch nichts kaputt machen.

Ich wage zu behaupten, dass das mit den Regionen für mindestens 50% der User zu komplex, zu unverständlich, zu missverständlich ist. Für mich jedenfalls, ist es.

Aktuell läuft bei mir MeshCore etwa so gut, wie MeshTastic vor 8 Monaten, als ich gewechselt habe… nämlich gar nicht mehr.
Ich erreiche weder meine Repeater noch meine Kollegen (halbwegs zuverlässig).

PS: ich würde Repeater und Companions ohne Koordinaten konsequent ausschliessen. Anhand der Koordinaten könnte man das mit den Regionen automatisch erledigen.

1 Like

bitte vergiss die privacy nicht.

nicht jeder will bei mobiler verwendung jedermann seine position mitteilen.
müsste zumindest optional sein.

und zu den regionen: ich finde “ch” würde genügen, da flood abgeschaltet werden kann (sollte)
da wäre eine default einstellung beim flashen hilfreich

1 Like

Was wirklich passiert: Dem Netz ‘unter die Haube geschaut’!

2 Likes

oder wie bei Meshtastic mit einem Streubereich.

1 Like

Ich freue mich jedenfalls auf die neuen Möglichkeiten. Die bisherigen Erfahrungen haben gezeigt, dass Selbstregulierung bei einigen Mitspielern nicht gut funktioniert. Leider gibt es immer noch zu viele Bots und zu viel “ping-pong” Verkehr. Unsere gut erreichbaren Repeater werden wir zeitnah dahingehend konfigurieren, dass sinnfreie Verbindungen nicht mehr weitergeleitet werden. Die Transalp Repeater werde ich in den nöchsten Wochen voraussichtlich (wetterabhängig) auch auf den zu diesem Zeitpunkt aktuellsten Stand bringen und zweckmässig umkonfigurieren. Auf gute Vorschläge zur Konfiguration bin ich gespannt und werde diese gerne in Abstimmung mit euch umsetzen.

7 Likes

Ich frage mich ja, in wief fern die Leute informieren schon helfen könnte.

Also zum einen ein Popup in der Companion app, oder wenn man sich das erste mal auf einen Repeater einloggt, das Regionen erklärt.

Zum anderen, wenn Nachrichten in der App prominent die Region darstellen, vielleicht neben dem Benutzernamen. Das würde es leichter machen herauszufinden, an welchen Regionen man interessiert sein könnte, vor allem da sicher einige nie auf einer regionalen Meshcore Homepage landen wie der hier. Und auch die Neugierde wecken, nachzulesen, was es mit diesen Regionen auf sich hat. Weil, seien wir mal ehrlich, im Moment sind Regionen in der App recht unsichtbar, wenn man sich nicht durch Untermenus klickt.

Oder dass man im QR Code von nem Channel eine Region vordefinieren kann, die gesetzt wird.

Oder dass man, wenn man einem Channel beitritt, von der App gefragt wird, welche Region man will, vielleicht vorausgefüllt über die “Discover Regions” Funktion. Das selbe könnte auch beim ersten Start der App selber für die Default-Region gemacht werden.

Ich denke, es könnte in der Hinsicht viele “nicht-technische” Verbesserungen geben, sondern einfach Optimierungen, wie User mit der App interagieren.

Ich melde mich wieder mal als “stilles Greenhorn”.

  • Es ist (z.Z. vor allem im Grossraum Bern) schade, wenn Repeater ausgrauen, weil die Advert-Zeiten nicht mit den Mapper abgestimmt sind.
  • Ferner ist es Schade, wenn Analyzer in “wichtigen” Regionen wieder offline gehen, so verschwinden noch mehr Knoten von der Karte.
  • Es ist auch so, dass eigentlich “bekannte” Repeater keine Update an Firmware und Einstellungen erhalten.
    Dies kann auch an der Freiwilligkeit liegen und etliche liegen doch recht abgelegen.
  • Ich finde auf meinem Repeater immer wieder unbekannte Neighbors. Ich hoffe, sie sind wirklich “mobil” unterwegs.

Man merkt also gut, dass es schwierig ist, ein solches Netz zu koordinieren und auch nur wenig steuern zu können. Vorgaben sind nur für die Braven (und werden so zu oft die Beschissenen). Viele Grundeinstellungen könnte man in die neuen Firmwareversionen einbauen und die Langsamen mit der Zeit auch dazu bringen sich anpassen zu müssen. Aber eben, bis diese ein Upate fahren …

2 Likes

Das Thema ‘Einstellungen’ der Repeater ist absolut zentral für die Zuverlässigkeit der Datenübertragung. Die wichtigste Einstellung für die Erhöhung der für Nachrichten verfügbaren Airtime ist die Zeit zwischen den Adverts.

Warum: Ein ‘Advert’ ist ein sehr grosses Datenpaket. Die Aussendung dauert im Schnitt 1.1 bis 1.3 Sekunden! Dieses Datenpaket wird nun netzweit von Repeater zu Repeater weitergereicht (weil Flood)! Man kann mit dem Analyzer Pakete beobachten, welche mehr als 25 Sekunden in der ‘Luft’ sind, sprich Airtime konsumierten! Wenn ein solches Paket einmal in 24-36 Stunden ausgesendet wird ist das für das Netz knapp verkraftbar.

Aber: In der Schweiz sind durchschnittlich 900 Repeater am laufen! Wenn jeder Repeater einmal am Tag einen Advert aussendet und dieser von 5 anderen Repeatern weitergeleitet wird, gibt das etwa 5’000 Sekunden Netzbelastung. Das will heißen: Das Netz konsumiert (um sich zu koordinieren) täglich fast anderthalb Stunden Airtime. Diese Annahmen sind eher konservativ!

Die Realität ist eine andere! Viele Repeater ‘quaken’ alle sechs bis acht Stunden ihren Advert. Die meisten machen alle 12 Stunden Lärm!
Dabei kann gerade diese Einstellung vom Sofa aus, auf einen vernünftigen Wert (z.B. alle 25 oder mehr Stunden) eingestellt werden.

Jeder der MeshCore anwendet muss solche Sachen tun wollen. Es bringt nichts über ein schlechtes Netz zu jammern und von den Entwicklern den Einbau von diesen und jenen Anwendungshilfen zu verlangen, wenn man sich selber nicht schlau macht, verstehen will, wie es funktioniert und welche Parameter was bewirken.

Viele meinen halt immer noch, ein #Channel bei MeshCore entspreche einem Kanal beim CB-Funkgerät.

Einfach mal auf den #Channels lesen: Da denken doch Menschen, wenn ich auf #Test einen ‘Ping’ absetze und der Bot eine Rückmeldung mit Sendezeit von 1,2 Sekunden macht, dass dies nur den Channel #Test belaste. Und sie tun es immer und immer wieder!
In Wirklichkeit konsumieren diese Spielereien netzweit jedes Mal 7 bis 10 Sekunden Airtime! Aber das scheint diesen Menschen ‘Wurscht’ zu sein! Eigennutz vor Gemeinnutz hat Konjunktur!

Alle die davon ausgehen, Pakete durchs Netz schicken sei dasselbe wie ein CB-Funkgerät bedienen liegen halt mit LoRa falsch. Man kann bei MeshCore, ebenso wie bei Meshtastic, nicht einfach eine Batterie und eine Antenne anschliessen und los geht’s! Es braucht etwas mehr! Ich denke, dass es eine Funktion dieses Blogs ist dafür die nötigen Informationen bereit zu stellen. Information, welche helfen kann zu verstehen, weshalb Eigennutz vor Gemeinnutz nie zielführend sein kann.

3 Likes

Hallo zusammen, melde mich auch mal mit meinem ersten Beitrag. Ich bin zwar erst seit ein paar Wochen dabei und habe mich vorwiegend still eingelesen, habe aber schnell mal festgestellt das in letzter Zeit das erreichen der eigenen Repeater schwierig wurde. Habe daher alle Vorschläge umgesetzt: * raus, nur ch, cd-de,ch-fr,-cd-it. Desweiteren Ad-Intervall auf 71 Stunden gesetzt. Sowie beim 2. Repeater testweise rx/tx/ delay raufgesetzt, da ich dort eine viel höhere Paketfehlerrate hatte. Fazit: Admin kontrolle/login bei den Repeater funktioniert wieder beim 1. Versuch; bei den empfangenen versus gesendeten Pakete hat sich eine ziemliche Schere aufgetan: 185000 zu 22000. War vorher fast identisch.

1 Like

Die ‘Schere’ hilft uns allen! Ich hoffe, dass dein Beispiel Schule machen wird! Danke, Florian!

1 Like

ich hoffe du hast dich nur hier im board vertippt … :wink:

sodele - meine 2 repeater, CH_8180_Bulach (D5) & CH_8180_Bulach_Guss (sense cap) sind wie folgt updated:

fw-version : 1.15.0
auto advert (zero hop) 180 min
auto advert (flood) 71 h
regions:

  • without packets region scope: flood denied
  • ch, ch-de, ch-fr, ch-it flood allowed

zum D5 auf dem hochsitz: das spriessende grün hat bis anhin keinen einfluss auf den batteriestand; sie sind immer voll geladen.

ein kleiner beitrag für das meshcore, ein grosser schritt zur stabilität :wink:

NACHTRAG:
set path.hash.mode 1 = 2-Byte-Hash-Größe (65.536 eindeutige IDs) [maximal 32 Floods]

2 Likes

Ups :grinning_face: , ja da gibts ein neues Land im Board…

@ursmii verstehe ich das richtig : bei * Region auf Flood ablehnen stellen?

wenn ich das korrekt verstanden habe, so:

2 Likes

Werde versuchen das bei meinen in Wetzikon und Kalkbreite morgen noch an zu passen… Danke @ursmii !