Webseiten-Werkzeuge


retry-schleife

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
retry-schleife [29.09.2026 22:45] – pollyretry-schleife [29.09.2026 23:57] (aktuell) – polly
Zeile 5: Zeile 5:
 **Datum:** 2026-07-29 **Datum:** 2026-07-29
  
-== Kurzfassung ==+===== Kurzfassung =====
  
 Request/Response-Pakete sind **38,4 % des gesamten Traffics** im EU-Mesh. Wir Request/Response-Pakete sind **38,4 % des gesamten Traffics** im EU-Mesh. Wir
Zeile 20: Zeile 20:
  
 Wer ein Script betreibt, das Repeater abfragt: **dieser Text handelt Wer ein Script betreibt, das Repeater abfragt: **dieser Text handelt
-wahrscheinlich von deinem Script**, und der Fix sind drei Zeilen (§7).+wahrscheinlich von deinem Script**, und der Fix sind drei Zeilen ([[retry-schleife#was_im_script_zu_aendern_ist|§7]]).
  
-== Datenbasis ==+===== Datenbasis =====
  
 ^ Kennzahl ^ Wert ^ ^ Kennzahl ^ Wert ^
Zeile 40: Zeile 40:
 Observer hören. Observer hören.
  
-== 1. Warum unbeantwortete Abfragen dauerhaft teuer sind ==+===== 1. Warum unbeantwortete Abfragen dauerhaft teuer sind =====
  
 ^ Route ^ Pakete ^ Sichtungen ^ Ø Empfänger pro Paket ^ ^ Route ^ Pakete ^ Sichtungen ^ Ø Empfänger pro Paket ^
Zeile 68: Zeile 68:
 gesendet. gesendet.
  
-== 2. Die Aufteilung der Request-Last ==+===== 2. Die Aufteilung der Request-Last =====
  
 Kriterium A — pro (Sender→Ziel)-Paar, Paar gilt als bedient ab 20 % Antwortrate: Kriterium A — pro (Sender→Ziel)-Paar, Paar gilt als bedient ab 20 % Antwortrate:
Zeile 93: Zeile 93:
 nicht darum, weniger zu pollen. nicht darum, weniger zu pollen.
  
-== 3. Top-Verursacher (FLOOD, ohne Antwort) ==+===== 3. Top-Verursacher (FLOOD, ohne Antwort) =====
  
 ^ Sender ^ Ziel ^ Requests ^ Antworten ^ Sichtungen ^ Req/Tag ^ ^ Sender ^ Ziel ^ Requests ^ Antworten ^ Sichtungen ^ Req/Tag ^
Zeile 121: Zeile 121:
 nirgends gemeldet wird. nirgends gemeldet wird.
  
-== 4. Das sind Scripts, keine Menschen ==+===== 4. Das sind Scripts, keine Menschen =====
  
 **Alle 23 Top-Sender sind über alle 24 Stunden aktiv**, mit einem Nacht/Tag- **Alle 23 Top-Sender sind über alle 24 Stunden aktiv**, mit einem Nacht/Tag-
Zeile 142: Zeile 142:
 Scannen an sich nicht das Problem ist. Scannen an sich nicht das Problem ist.
  
-== 5. Wo die Verursacher stehen ==+===== 5. Wo die Verursacher stehen =====
  
 Der ''src_hash'' im Request ist nur **1 Byte** (Firmware: ''MeshCore.h:18'' Der ''src_hash'' im Request ist nur **1 Byte** (Firmware: ''MeshCore.h:18''
Zeile 155: Zeile 155:
  
 ^ Sender ^ Heimat-Repeater ^ Standort ^ ^ Sender ^ Heimat-Repeater ^ Standort ^
-| ``bb`` | '''DE-NW-Ratingen-1''' (3012 Pk.) + '''DE-NW-Ratingen-3''' (2771 Pk.) | 51.303, 6.866 — identische Koordinaten, '''ein Standort''' | +| ''bb'' | **DE-NW-Ratingen-1** (3012 Pk.) + **DE-NW-Ratingen-3** (2771 Pk.) | 51.303, 6.866 — identische Koordinaten, **ein Standort** | 
-| ``f4`` | '''NL-ZH-NIE-T1''' (908 Pk.) | 51.965, 4.596 (Nieuwerkerk a/d IJssel) | +| ''f4'' | **NL-ZH-NIE-T1** (908 Pk.) | 51.965, 4.596 (Nieuwerkerk a/d IJssel) | 
-| ``91`` | '''NFN-910#59-01(DE.ERL)''' (730) + '''MeschBertsRepeater''' (153) | Erlangen | +| ''91'' | **NFN-910#59-01(DE.ERL)** (730) + **MeschBertsRepeater** (153) | Erlangen | 
-| ``db`` | '''Paul_repeater''' (387) + '''RAKpeater''' (289) | 52.073, 5.089 — ein Standort (Utrecht) | +| ''db'' | **Paul_repeater** (387) + **RAKpeater** (289) | 52.073, 5.089 — ein Standort (Utrecht) | 
-| ``13`` | '''NL-HEN-RP01-PerksMC.nl''' (45) | 50.878, 6.005 |+| ''13'' | **NL-HEN-RP01-PerksMC.nl** (45) | 50.878, 6.005 |
  
-'''Diese Repeater sind nicht die Ursache.''' Ein Heimat-Repeater ist die erste +**Diese Repeater sind nicht die Ursache.** Ein Heimat-Repeater ist die erste 
-Station, die das Paket weitergeleitet hat — der pollende Client steht ''*in seiner*''+Station, die das Paket weitergeleitet hat — der pollende Client steht //in seiner//
 Funkreichweite. Das ist eine Nachbarschaftsbeziehung, keine Betreiberbeziehung. Funkreichweite. Das ist eine Nachbarschaftsbeziehung, keine Betreiberbeziehung.
 Die Betreiber sind nützliche Ansprechpartner, weil sie das Gerät vor Ort Die Betreiber sind nützliche Ansprechpartner, weil sie das Gerät vor Ort
 erkennen können, mehr nicht. erkennen können, mehr nicht.
  
-Für ``27`` (den grössten Verursacher) gibt es nur 1-Byte-Hops: Heimat-Repeater +Für ''27'' (den grössten Verursacher) gibt es nur 1-Byte-Hops: Heimat-Repeater 
-beginnt mit ``ae`` (99,6 % konsistent — also '''ein''' fester Repeater). ``ae`` ist +beginnt mit ''ae'' (99,6 % konsistent — also **ein** fester Repeater). ''ae'' ist 
-über zwei unabhängige Datenpfade belegt: erster Hop im Hinweg ''*und*'' der Peer, +über zwei unabhängige Datenpfade belegt: erster Hop im Hinweg //und// der Peer, 
-der ``27`` mit Abstand am häufigsten antwortet (186 Responses, mehr als alle+der ''27'' mit Abstand am häufigsten antwortet (186 Responses, mehr als alle
 anderen zusammen). anderen zusammen).
  
-== 6. Kandidaten für die Ziel-Repeater ==+===== 6. Kandidaten für die Ziel-Repeater =====
  
-Der ``dest_hash`` ist ebenfalls nur 1 Byte, aber die Ziele sind besser greifbar: +Der ''dest_hash'' ist ebenfalls nur 1 Byte, aber die Ziele sind besser greifbar: 
-Repeater senden Adverts, und ein Advert enthält den '''vollen''' Pubkey. Damit+Repeater senden Adverts, und ein Advert enthält den **vollen** Pubkey. Damit
 lassen sich Kandidaten filtern — plausibel ist nur, wer (a) Repeater oder lassen sich Kandidaten filtern — plausibel ist nur, wer (a) Repeater oder
 Roomserver ist und (b) dessen Advert in einer Zone gehört wird, in der auch die Roomserver ist und (b) dessen Advert in einer Zone gehört wird, in der auch die
 Requests des Senders ankommen (≥10 % der Sender-Sichtungen). Requests des Senders ankommen (≥10 % der Sender-Sichtungen).
  
-Das reduziert 21–38 Namensvetter auf '''0–6 echte Kandidaten''':+Das reduziert 21–38 Namensvetter auf **0–6 echte Kandidaten**:
  
 ^ Paar ^ Kandidaten ^ Namen ^ ^ Paar ^ Kandidaten ^ Namen ^
-| ``bb``→``30`` | '''0''' | ''*kein passender Repeater in der Region — siehe unten*'' | +| ''bb''→''30'' | **0** | //kein passender Repeater in der Region — siehe unten// | 
-| ``7f``→``b5`` | 2 | Taacha🛩️Flugplatz, 📡 Loehne Horst | +| ''7f''→''b5'' | 2 | Taacha🛩️Flugplatz, 📡 Loehne Horst | 
-| ``5d``→``98`` | 3 | D-NW-E-TripleZ, Zwickau Repeateu, Calberlah | +| ''5d''→''98'' | 3 | D-NW-E-TripleZ, Zwickau Repeateu, Calberlah | 
-| ``13``→``89`` | 3 | DLW_REP01_LS, FF MCR \| BE Moabit+ ☀, RockyBeach_P1_Solar | +| ''13''→''89'' | 3 | %%DLW_REP01_LS, FF MCR \| BE Moabit+ ☀, RockyBeach_P1_Solar%% | 
-| ``7f``→``74`` | 3 | HAS Suedwest JO50EB, Heltec Repeater Algermi, nhf-li9urian | +| ''7f''→''74'' | 3 | HAS Suedwest JO50EB, Heltec Repeater Algermi, nhf-li9urian | 
-| ``69``→``1f`` | 4 | DE-NW-ME-VBT10, NL-LTM-RP02, Relais Roxel, BE-PUT-ON1EE-31A | +| ''69''→''1f'' | 4 | DE-NW-ME-VBT10, NL-LTM-RP02, Relais Roxel, BE-PUT-ON1EE-31A | 
-| ``f4``→``19`` | 5 | NL-ZH-LID-LaMo-RPT☀, NL-AME-SR-r-001☀️, NL-ZWL-MeshJoeWindeshei, NL-ZH-LID-MAAR-solar, WNS Romeo 2 🔱 | +| ''f4''→''19'' | 5 | NL-ZH-LID-LaMo-RPT☀, NL-AME-SR-r-001☀️, NL-ZWL-MeshJoeWindeshei, NL-ZH-LID-MAAR-solar, WNS Romeo 2 🔱 | 
-| ``27``→``f1`` | 6 | NL-OV-FIETS, NL-NH-SMT3-Rood (beide AMS+RTM), ipoac.nl zuid/oost, NL6812-16 Yagi SW 240, NL-ZEM-LM, NL-ENS-Stadsveld | +| ''27''→''f1'' | 6 | NL-OV-FIETS, NL-NH-SMT3-Rood (beide AMS+RTM), ipoac.nl zuid/oost, NL6812-16 Yagi SW 240, NL-ZEM-LM, NL-ENS-Stadsveld | 
-| ``10``→``3e`` | 16 | zu breit gestreut, nicht aussagekräftig |+| ''10''→''3e'' | 16 | zu breit gestreut, nicht aussagekräftig |
  
 Zwei Lesehilfen: Zwei Lesehilfen:
  
-- '''``bb``→``30`` mit null Kandidaten ist der stärkste Befund der ganzen Tabelle.''' +  * **''bb''→''30'' mit null Kandidaten ist der stärkste Befund der ganzen Tabelle.** Kein Repeater mit Präfix ''30'' sendet Adverts, die in ''bb'''s Empfangszonen ankommen. Das Ziel ist mit hoher Wahrscheinlichkeit abgeschaltet oder aus der Region verschwunden — und ein Script fragt es seit Tagen 335× täglich per FLOOD ab. Das ist das Fehlermuster in Reinform. 
-  Kein Repeater mit Präfix ``30`` sendet Adverts, die in ``bb``'s Empfangszonen +  * Bei ''27''→''f1'' sind **NL-OV-FIETS** und **NL-NH-SMT3-Rood** die besten Treffer: nur diese beiden werden in //beiden// Hauptzonen des Senders (AMS und RTM) gehört.
-  ankommen. Das Ziel ist mit hoher Wahrscheinlichkeit abgeschaltet oder aus der +
-  Region verschwunden — und ein Script fragt es seit Tagen 335× täglich per +
-  FLOOD ab. Das ist das Fehlermuster in Reinform. +
-- Bei ``27``→``f1`` sind '''NL-OV-FIETS''' und '''NL-NH-SMT3-Rood''' die besten +
-  Treffer: nur diese beiden werden in ''*beiden*'' Hauptzonen des Senders (AMS und +
-  RTM) gehört.+
  
-'''Das sind Kandidatenlisten, keine Zuordnungen.''' Ein 1-Byte-Hash lässt keine+**Das sind Kandidatenlisten, keine Zuordnungen.** Ein 1-Byte-Hash lässt keine
 Beweisführung zu; die Liste sagt „einer von diesen", nicht „dieser". Beweisführung zu; die Liste sagt „einer von diesen", nicht „dieser".
  
-== 7. Was im Script zu ändern ist ==+===== 7. Was im Script zu ändern ist =====
  
-Das Problem ist nicht das Pollen. Es ist das '''unbegrenzte Wiederholen im +Das Problem ist nicht das Pollen. Es ist das **unbegrenzte Wiederholen im 
-vollen Takt gegen ein Ziel, das nie antwortet.'''+vollen Takt gegen ein Ziel, das nie antwortet.**
  
- 1. '''Fehlschläge pro Ziel zählen.''' Antwortet ein Ziel in den letzten N +  - **Fehlschläge pro Ziel zählen.** Antwortet ein Ziel in den letzten N Versuchen nicht (N = 3 reicht), hör auf, es im Normaltakt abzufragen. 
-   Versuchen nicht (N = 3 reicht), hör auf, es im Normaltakt abzufragen. +  - **Exponentiell zurückfahren, mit Deckel.** 5 min → 10 → 20 → … → einmal täglich. Ein Ziel, das zurückkommt, wird binnen eines Tages wieder erfasst; ein totes kostet dann fast nichts. 
- 2. '''Exponentiell zurückfahren, mit Deckel.''' 5 min → 10 → 20 → … → einmal +  - **Die tote Strecke protokollieren.** Hätte das Script gemeldet, dass es seit 5 000 Versuchen keine Antwort bekommt, wäre es in der ersten Woche aufgefallen.
-   täglich. Ein Ziel, das zurückkommt, wird binnen eines Tages wieder erfasst; +
-   ein totes kostet dann fast nichts. +
- 3. '''Die tote Strecke protokollieren.''' Hätte das Script gemeldet, dass es seit +
-   5 000 Versuchen keine Antwort bekommt, wäre es in der ersten Woche +
-   aufgefallen.+
  
 Wenn dein Client tagelang FLOOD an dasselbe Ziel schickt, ist genau das das Wenn dein Client tagelang FLOOD an dasselbe Ziel schickt, ist genau das das
Zeile 226: Zeile 215:
 installiert. installiert.
  
-== 8. Was diese Daten nicht hergeben ==+===== 8. Was diese Daten nicht hergeben =====
  
-  * '''Wir können nicht feststellen, wer du bist, und haben es nicht versucht.''' +  * **Wir können nicht feststellen, wer du bist, und haben es nicht versucht.** Das Absenderfeld ist ein 1-Byte-Hash; bei ~8 900 bekannten Nodes teilen sich im Schnitt 35 davon denselben Wert. 
-   Das Absenderfeld ist ein 1-Byte-Hash; bei ~8 900 bekannten Nodes teilen sich +  * **Inhalte bleiben verschlüsselt.** Request- und Response-Nutzlasten sind zwischen den beiden Endpunkten verschlüsselt (curve25519). Ein passiver Beobachter hat keinen der beiden Schlüssel. Diese Auswertung nutzt ausschliesslich Paket-Header und Zeitstempel — nie Nutzlast. 
-   im Schnitt 35 davon denselben Wert. +  * **Es geht um kein Fehlverhalten von Repeater-Betreibern.** Wir können oft sagen, welcher Repeater ein Paket zuerst weitergeleitet hat. Das verortet einen Client irgendwo in dessen Funkreichweite — mehr nicht.
-  * '''Inhalte bleiben verschlüsselt.''' Request- und Response-Nutzlasten sind +
-   zwischen den beiden Endpunkten verschlüsselt (curve25519). Ein passiver +
-   Beobachter hat keinen der beiden Schlüssel. Diese Auswertung nutzt +
-   ausschliesslich Paket-Header und Zeitstempel — nie Nutzlast. +
-  * '''Es geht um kein Fehlverhalten von Repeater-Betreibern.''' Wir können oft +
-   sagen, welcher Repeater ein Paket zuerst weitergeleitet hat. Das verortet +
-   einen Client irgendwo in dessen Funkreichweite — mehr nicht.+
  
-== 9. Methodik und Grenzen ==+===== 9. Methodik und Grenzen =====
  
-'''Standortbestimmung''' stützt sich ausschliesslich auf den ersten Path-Hash+**Standortbestimmung** stützt sich ausschliesslich auf den ersten Path-Hash
 über die 83,7 % der Sichtungen mit befülltem Pfad. Zwei Wege scheiden aus: über die 83,7 % der Sichtungen mit befülltem Pfad. Zwei Wege scheiden aus:
  
-  * ''*0-Hop-Sichtungen*'' — ``sightings.path`` ist zu 16,2 % NULL (Feld nicht +  * //0-Hop-Sichtungen// — ''sightings.path'' ist zu 16,2 % NULL (Feld nicht geliefert), echte 0-Hop-Sichtungen machen nur 0,1 % aus. Die Datenmenge trägt keine Aussage, und NULL darf nicht als 0 gelesen werden. 
-   geliefert), echte 0-Hop-Sichtungen machen nur 0,1 % aus. Die Datenmenge trägt +  * //Signalstärke// — die Observer mit dem stärksten Empfang von ''bb'' (RSSI −19,3) sehen das Paket bei ''min_hops'' 4–5. Gemessen wird der letzte Repeater, nicht der Sender.
-   keine Aussage, und NULL darf nicht als 0 gelesen werden. +
-  * ''*Signalstärke*'' — die Observer mit dem stärksten Empfang von ``bb`` +
-   (RSSI −19,3) sehen das Paket bei ``min_hops`` 4–5. Gemessen wird der letzte +
-   Repeater, nicht der Sender.+
  
-'''Antwortraten sind eine Untergrenze.''' Responses laufen meist DIRECT+**Antwortraten sind eine Untergrenze.** Responses laufen meist DIRECT
 (Ø 1,36 Empfänger) und werden von den Observern schlecht gehört. Bei den (Ø 1,36 Empfänger) und werden von den Observern schlecht gehört. Bei den
 0-Antworten-Paaren stützt sich der Befund deshalb nicht auf die Zählung allein, 0-Antworten-Paaren stützt sich der Befund deshalb nicht auf die Zählung allein,
-sondern auf den '''100-%-FLOOD-Anteil über alle 7 Tage''' — hätte der Sender je+sondern auf den **100-%-FLOOD-Anteil über alle 7 Tage** — hätte der Sender je
 eine Antwort erhalten, wäre er auf DIRECT umgestiegen. eine Antwort erhalten, wäre er auf DIRECT umgestiegen.
  
-'''IATA-Codes''' in diesem Dokument (RTM, AMS, BER, BWE, LEJ …) bezeichnen die +**IATA-Codes** in diesem Dokument (RTM, AMS, BER, BWE, LEJ …) bezeichnen die 
-Zonen der ''*empfangenden Observer*'' — also wo ein Paket gehört wurde. Sie sind+Zonen der //empfangenden Observer// — also wo ein Paket gehört wurde. Sie sind
 nicht die Flood-Scope-Region des Pakets. nicht die Flood-Scope-Region des Pakets.
  
 Wer dieselbe Auswertung für seine eigene Region fahren möchte: die Methodik Wer dieselbe Auswertung für seine eigene Region fahren möchte: die Methodik
 teilen wir gern. teilen wir gern.
retry-schleife.1790714725.txt.gz · Zuletzt geändert: von polly