Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
| retry-schleife [29.09.2026 22:45] – polly | retry-schleife [29.09.2026 23:57] (aktuell) – polly | ||
|---|---|---|---|
| Zeile 5: | Zeile 5: | ||
| **Datum:** 2026-07-29 | **Datum:** 2026-07-29 | ||
| - | == Kurzfassung == | + | ===== Kurzfassung |
| Request/ | Request/ | ||
| 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# |
| - | == 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, | Kriterium A — pro (Sender→Ziel)-Paar, | ||
| 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 '' | Der '' | ||
| Zeile 155: | Zeile 155: | ||
| ^ Sender ^ Heimat-Repeater ^ Standort ^ | ^ Sender ^ Heimat-Repeater ^ Standort ^ | ||
| - | | ``bb`` | ''' | + | | '' |
| - | | ``f4`` | ''' | + | | '' |
| - | | ``91`` | + | | '' |
| - | | ``db`` | ''' | + | | '' |
| - | | ``13`` | ''' | + | | '' |
| - | ''' | + | **Diese Repeater sind nicht die Ursache.** Ein Heimat-Repeater ist die erste |
| - | Station, die das Paket weitergeleitet hat — der pollende Client steht '' | + | Station, die das Paket weitergeleitet hat — der pollende Client steht //in seiner// |
| Funkreichweite. Das ist eine Nachbarschaftsbeziehung, | Funkreichweite. Das ist eine Nachbarschaftsbeziehung, | ||
| Die Betreiber sind nützliche Ansprechpartner, | Die Betreiber sind nützliche Ansprechpartner, | ||
| erkennen können, mehr nicht. | erkennen können, mehr nicht. | ||
| - | Für ``27`` (den grössten Verursacher) gibt es nur 1-Byte-Hops: | + | Für '' |
| - | beginnt mit ``ae`` (99,6 % konsistent — also ''' | + | beginnt mit '' |
| - | über zwei unabhängige Datenpfade belegt: erster Hop im Hinweg | + | über zwei unabhängige Datenpfade belegt: erster Hop im Hinweg |
| - | der ``27`` mit Abstand am häufigsten antwortet (186 Responses, mehr als alle | + | der '' |
| 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 '' |
| - | Repeater senden Adverts, und ein Advert enthält den ''' | + | 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 ''' | + | Das reduziert 21–38 Namensvetter auf **0–6 echte Kandidaten**: |
| ^ Paar ^ Kandidaten ^ Namen ^ | ^ Paar ^ Kandidaten ^ Namen ^ | ||
| - | | ``bb``→``30`` | + | | '' |
| - | | ``7f``→``b5`` | 2 | Taacha🛩️Flugplatz, | + | | '' |
| - | | ``5d``→``98`` | 3 | D-NW-E-TripleZ, | + | | '' |
| - | | ``13``→``89`` | 3 | DLW_REP01_LS, | + | | '' |
| - | | ``7f``→``74`` | 3 | HAS Suedwest JO50EB, Heltec Repeater Algermi, nhf-li9urian | | + | | '' |
| - | | ``69``→``1f`` | 4 | DE-NW-ME-VBT10, | + | | '' |
| - | | ``f4``→``19`` | 5 | NL-ZH-LID-LaMo-RPT☀, | + | | '' |
| - | | ``27``→``f1`` | 6 | NL-OV-FIETS, | + | | '' |
| - | | ``10``→``3e`` | 16 | zu breit gestreut, nicht aussagekräftig | | + | | '' |
| Zwei Lesehilfen: | Zwei Lesehilfen: | ||
| - | - '' | + | * **'' |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | - Bei ``27``→``f1`` sind ''' | + | |
| - | | + | |
| - | | + | |
| - | ''' | + | **Das sind Kandidatenlisten, |
| Beweisführung zu; die Liste sagt „einer von diesen", | Beweisführung zu; die Liste sagt „einer von diesen", | ||
| - | == 7. Was im Script zu ändern ist == | + | ===== 7. Was im Script zu ändern ist ===== |
| - | Das Problem ist nicht das Pollen. Es ist das ''' | + | 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 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, |
| - | 2. ''' | + | - **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, | + | |
| - | ein totes kostet dann fast nichts. | + | |
| - | 3. ''' | + | |
| - | 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, |
| - | Das Absenderfeld ist ein 1-Byte-Hash; | + | * **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. |
| - | * ''' | + | |
| - | 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. | + | |
| - | * ''' | + | |
| - | 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 |
| ü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// — '' |
| - | geliefert), echte 0-Hop-Sichtungen machen nur 0,1 % aus. Die Datenmenge trägt | + | * //Signalstärke// — die Observer mit dem stärksten Empfang von '' |
| - | keine Aussage, und NULL darf nicht als 0 gelesen werden. | + | |
| - | * '' | + | |
| - | (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 |
| (Ø 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 ''' | + | 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 |
| - | Zonen der '' | + | 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. | ||