Files
bf-infra/docs/call-quality-diagnosis.md
Christoph Emsenhuber f1147d0fb3 Call-Quality 🔍 IPv6-Stand korrigiert: FB-6to4 nur am VLAN1, intern v4-only
Verifiziert am VLAN1-Host (FB-nah): FB annonciert 2002::-Prefix per RA,
curl -6 klappt, ping6 Google v6 = 100% Loss (flatterhaftes 6to4).
Intern NICHT durchgereicht: Mac mini (VLAN20 hinter ap1) v6-los —
ap1 kein RA/DHCPv6-PD, Branch-Switch nicht v6-konfiguriert,
Core-Switch v6-FĂ€higkeit unklar. 6to4 untauglich fĂŒr RT-Medien;
saubere Alt = 6in4-Tunnelbroker (HE). Geli-CGNAT-Bypass unberĂŒhrt.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 19:47:02 +02:00

221 lines
18 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Call-Quality-Diagnose & Handoff — Christoph ↔ Geli Video-Calls
> **Zweck:** Self-contained Übergabe an eine separate Session. EnthĂ€lt Symptom, **was bereits
> ausgeschlossen ist (mit Messdaten + zwei natĂŒrlichen Kontrollexperimenten)**, die leitende
> Hypothese und den AusfĂŒhrungsplan.
> Stand: 2026-06-16 (**revidiert** nach Anamnese mit Christoph). UrsprĂŒnglich im Rahmen von „TP6"
> entstanden, das sich als **Nicht-QoS-Problem** entpuppt hat.
---
## TL;DR
**Video-Calls zwischen Christoph und Geli** (Telegram u.a.) ruckeln/droppen, **andere Calls nicht**.
Die zuerst vermutete **WLAN-Roaming-These ist auf Nebenfaktor herabgestuft.** Zwei natĂŒrliche
Kontrollexperimente verschieben den Verdacht klar auf die **Geli-seitige ISP-Strecke**:
- Christophs **nationale** Videocalls (vor Geli) liefen sauber → seine lokale Seite ist *nicht* die Wurzel.
- Geli wechselte **Cable/DSL → Fiber** (jetzt FB 5530 Fiber) → Problem **bleibt** → ihre Last-Mile-Bandbreite ist *nicht* die Wurzel.
→ **Leitende Hypothese:** Hochbitratiges Echtzeit-Video ĂŒber die **AT↔Geli-Strecke** (kleiner Dorf-ISP
`on-isp.net` / AS202245 GeroldsgrĂŒn, **CGNAT**, vermutlich dĂŒnnes/abends ĂŒberlastetes Auslands-Peering)
kippt unter schwer komprimierbarem Bild (**Gegenlicht/Dunkel → Bitraten-Spike**) in Loss/Jitter und
lÀsst die **Congestion-Control kollabieren**. Roaming/Handover ist additiver Nebenfaktor.
---
## Symptom (vollstÀndig)
- Betroffen: **Christoph ↔ Geli**, **mehrere Messenger** (Telegram u.a.) → **nicht app-spezifisch**.
- **Geli-Calls = 99 % Video.** Christophs **nationale Videocalls vor Geli liefen problemlos** (gleicher
Upload, gleiches WLAN, gleiche Kamera). → starkes Kontrollexperiment fĂŒr „nicht Christophs Seite".
- **Asymmetrie (SchlĂŒssel):** Christoph ↔ andere = gut; Christoph ↔ Geli = schlecht. (Geli ↔ ihre
deutschen Freunde laut frĂŒherer Aussage ebenfalls gut.)
- **Licht-AbhĂ€ngigkeit (SchlĂŒssel):** GehĂ€uft bei **Dunkelheit**; **Gegenlicht bei Geli** (helles
Fenster, dunkler Rest) erzeugt sichtbare **Artefakte** auch tagsĂŒber. → zeigt auf **Video-Bitrate**
(Sensorrauschen/Kontrast schwer komprimierbar), nicht auf Bewegung.
- **Bewegung** verschlechtert zusÀtzlich; **still sitzen = etwas besser, aber weiter mies**.
- **Congestion-Signatur:** **Neuer Call = schlagartig besser, dann „nĂ€chster Abbruch vorprogrammiert"**;
**Kamera aus/ein hilft**, solange es „noch nicht zu arg" ist. → klassisch **bandbreiten-/ratengebunden**
mit kollabierendem Bitraten-SchÀtzer, **nicht** sauberer Pfad mit zufÀlligem Paketverlust.
- **Jitter-/Burst-Signatur (neu, SchlĂŒssel):** Stille **und/oder Standbild**, **verzerrter Ton („wie E-Gitarre")**,
danach **Turbo-Aufholen der letzten GesprĂ€chsfetzen**. → Pakete werden **nicht nur verloren, sondern in
einem Buffer verzögert und stoßweise nachgeliefert** (Jitter/Queuing/Bufferbloat auf der Strecke).
E-Gitarre = Packet-Loss-Concealment des Codecs; Turbo-Catch-up = verspÀtet im Pulk angekommene Pakete.
- **Richtung GEKLÄRT (neu):** **Christoph hört/sieht Geli deutlich schlechter; Geli hat es mit Christoph seltener.**
→ dominanter Engpass = **Geli→Christoph**, also **Gelis Senderichtung (Upload)**.
- **WLAN-Korrelat bei Geli (neu):** schlechter mit **Distanz zum AP** und an **schlecht ausgeleuchteten Ecken** —
konkret **draußen auf der Bank an der dicken Hausmauer** (weit/abgeschirmt + dunkel = WLAN-Uplink *und* Bitrate gestresst).
- **WLAN-Architektur ist NICHT das Problem (neu, wichtig gegen Fehlfix):** Coverage gut, **keine Nachbar-WLANs**,
TX 100 %, Dual-Band. Der Engpass ist **nicht Design/Abdeckung**, sondern **Timing auf dem Uplink**:
(a) **Halb-Duplex/Airtime-Contention** (nur einer funkt zugleich; fallweise durch andere aktive GerĂ€te, PS meist aus) → Jitter;
(b) **Retransmits** bei Distanz/Mauer/Bewegung → verspĂ€tet-im-Pulk = Jitter (Durchsatz sieht „ok" aus);
(c) **TX 100 % hilft nur Downstream** (AP→Handy) — der **Handy-Uplink** (Gelis ausgehendes Video) bleibt schwach,
v. a. hinter der dicken Mauer; (d) abgelesene **RSSI = Momentaufnahme**, verdeckt kurze **Spikes/EinbrĂŒche**.
- **„Seit Fiber generell schlechter" (Geli, subjektiv) — Confound (neu):** mit dem Fiber-Umbau zog der Router um.
Die **PlayStation** (per WLAN, **aber regulĂ€r ausgeschaltet** → kein laufender Call-Contention-Faktor) hat **beim
Gaming Aussetzer** → bleibt als **Indiz fĂŒr WLAN-Schwachstellen** an ihrem Standort, nicht als Dauer-Ursache.
„Fiber schlechter" = der **Umbau/Router-Standort**, nicht die Leitung.
- **GerĂ€te-unabhĂ€ngig (neu):** Geli Galaxy Note 10+ (test: A35), Christoph frĂŒher S22 → jetzt iPhone 16 Pro —
Problem ĂŒber alle Wechsel hinweg → **nicht gerĂ€tespezifisch**.
- **„Nie das Bandbreitenlimit gesehen" (Christoph) — Mess-Caveat (neu):** FB-Charts zeigen **gemittelte (Mean-)Werte**;
die tödlichen **Sub-Sekunden-Microbursts** (Video-Spikes, WLAN-Retransmits) tauchen darin **nie** auf →
**kein Freispruch** fĂŒr transiente SĂ€ttigung.
### Hardware-Timeline (beide Seiten, identische WLAN-Idee)
- **Christoph:** FB 6660 + 1 Repeater (OG, LAN-„Mesh") → **2× Cudy (2×2)**. ISP = Liwest (DOCSIS), Upload ~10 Mbit.
- **Geli:** FB 6660 + FRITZ-Repeater → Cudy → *(Glasfaser-Umstellung)* → **FB 5530 Fiber + Cudy**.
**APs = Cudy WR3600E** (Wi-Fi 6, Dual-Band 2.4+5 GHz), **TX 100 %**. ISP ĂŒber alle Epochen konstant =
**`on-isp.net` / AS202245 GeroldsgrĂŒn**.
- **Gelis Anschluss (FB-5530-Settings, 2026-06-16):** **2.5↓ / 1.3↑ Gbit** (Bandbreite endgĂŒltig kein Faktor).
**IPv4 = CGNAT bestĂ€tigt:** WAN-IP `100.72.62.31` ∈ **100.64.0.0/10** (RFC 6598), außen `94.154.138.11`.
**IPv6 = nativ öffentlich:** Prefix `2a0e:7a02:31c:3000::/56`, **kein CGNAT auf v6** (Prefix rotiert ~30 h → DDNS nötig).
DNS = Quad9 (`2620:fe::fe:11`) + ISP-EDNS0 (`37.60.7.2`).
- **Christophs IPv6-Stand (Stand 2026-06-16, korrigiert):** **Liwest bietet KEIN natives IPv6** (techn. Support bestÀtigt).
Die **FritzBox macht 6to4** und annonciert ein **2002::-Prefix per RA ins VLAN1** → der **FB-nahe VLAN1-Host** hat damit
**(flatterhaftes) 6to4-v6**: `curl -6` zu ifconfig.co klappt (`2002:5638:c211:
`, eingeb. v4 86.56.194.17), aber
**`ping6` Google v6 = 100 % Loss** (Google-6to4-Relays abgeschaltet) = klassische 6to4-Teilerreichbarkeit.
**Intern NICHT durchgereicht:** Mac mini (VLAN20 hinter **ap1**) hat **kein v6** — ap1 macht **kein RA/DHCPv6-PD** auf den
VLANs (TP4 v4-only), **Branch-Switch (Omada) nicht v6-konfiguriert**, **Core-Switch (ALLNET) v6-FĂ€higkeit unklar**.
⚠ **6to4 relay-abhĂ€ngig/flatterhaft (empirisch: Google-ping scheitert) → KEINE Basis fĂŒr Echtzeit-Medien.**
Saubere Alternative bei Bedarf: **6in4-Tunnelbroker** (Hurricane Electric, geroutetes /48). Details: Memory `project-ipv6-state`.
---
## Zwei natĂŒrliche Kontrollexperimente (das RĂŒckgrat der Diagnose)
1. **Christophs nationale Videocalls = gut.** Damit sind bei *gleichem* Upload / WLAN / Kamera/Low-Light
ausgeschlossen: sein Upload, sein Roaming, seine Kamera-Bitrate **als Alleinursache**.
2. **Geli Cable/DSL → Fiber, Problem bleibt.** Damit ist Gelis **Last-Mile-Bandbreite** als Wurzel raus.
Was auf ihrer Seite konstant blieb: **derselbe Mini-ISP + CGNAT + die internationale Strecke** und die Cudy-WLAN.
→ Schnittmenge beider Experimente = die **Geli-seitige ISP-/Peering-/CGNAT-Strecke** als gemeinsamer Nenner.
---
## Was bereits AUSGESCHLOSSEN / herabgestuft ist
Messungen vom **Mac mini (Kabel, en0, VLAN20/INFRA, GW 10.40.20.1)**, 2026-06-16, **tagsĂŒber im gesunden
Zustand** (deshalb sauber — der Mehrwert liegt im Mitschnitt **WÄHREND eines miesen Abend-Calls**).
| Hypothese | Befund | Urteil |
|---|---|---|
| Heim-Bufferbloat Christoph (Upload) | 3 Flows = 10.3 Mbit gesĂ€ttigt → idle 12 ms, Vollast avg 17 / max 26 ms = A/A+ | ❌ kein Problem |
| Generischer AT→DE-Pfad | heise.de: 20.7 ms / Jitter 1.6 ms / 0 % Loss (40) | ❌ Pfad (tagsĂŒber) top |
| Christoph → nĂ€chstes Telegram-DC | 149.154.167.50 (NL): 27 ms / Jitter 1.3 ms | ❌ Pfad (tagsĂŒber) top |
| CAKE / QoS | kein Bufferbloat-Spielraum | ❌ **nicht deployt** (wĂ€re marginal) |
| WARP / internat. Pfad | AT→DE tagsĂŒber bereits 20 ms | ❌ **nicht deployt** |
| S2S-VPN-Tunnel (BF-FB ↔ Geli-FB WG) | Messenger = Cloud-Relay, nicht im Tunnel | ❌ **nicht im Call-Pfad** |
| Christophs lokale Seite (Upload/WLAN/Kamera) | **nationale Videocalls = gut** (Kontrollexp. 1) | ❌ keine Alleinursache |
| Gelis Last-Mile-**Bandbreite** | **Cable/DSL→Fiber, Problem bleibt** (Kontrollexp. 2) | ❌ nicht die Wurzel |
| **WLAN-Roaming/Handover** (ehem. Lead) | Cudy half *etwas*; still sitzen *etwas* besser, aber weiter mies; Hauptkorrelat ist **Licht**, nicht Bewegung | ⚠ **Nebenfaktor**, nicht Wurzel |
| ~~Gelis CGNAT/Dorf-ISP durch Asymmetrie entlastet~~ | **VOID.** Gilt nur, wenn der Flaschenhals ihr *Access-Link* wĂ€re. Sitzt er im **internat. Peering**, laufen Gelis *innerdeutsche* Calls nicht drĂŒber → Asymmetrie bleibt erklĂ€rt | ⚠ **wieder im Spiel** |
| Telegram-App-Bug/Codec | mehrere Messenger betroffen | ❌ entlastet |
| ~~Christoph WLAN -76 dBm auf `install-10`~~ | `install-10` = Testnetz, nicht produktiv | ⚠ Fehlmessung, ignorieren |
---
## Leitende Hypothese: ratengebundenes Video ĂŒber die Geli-Strecke
**Mechanik:** Echtzeit-Video-Congestion-Control (WebRTC/Telegram-artig) sucht die maximale Bitrate.
Schwer komprimierbares Bild (Gegenlicht/Dunkel → Sensorrauschen + Kontrast) treibt die **geforderte
Bitrate hoch**. Trifft das auf einen **engen/variablen Punkt der Geli-Strecke** (CGNAT-Session-Limit,
abends ĂŒberlastetes Auslands-Peering eines Mini-AS), entstehen **Loss/Jitter**; der Bitraten-SchĂ€tzer
kollabiert und erholt sich nicht → genau das beobachtete „neuer Call kurz gut, dann Abbruch".
**Warum das alle Beobachtungen erklÀrt:**
| Beobachtung | ErklÀrung |
|---|---|
| Gegenlicht/Dunkel → Artefakte (auch tagsĂŒber) | hohe Entropie → Bitraten-Spike → ĂŒber den Engpass |
| „dunkel" gehĂ€uft | Sensorrauschen **+** Abend-Peak-Last (dieselbe Richtung) |
| neuer Call kurz gut, dann Abbruch | Congestion-Control rampt in die Ratenwand, kollabiert, Reset hilft kurz |
| Kamera aus/ein hilft | senkt Bitrate → entlastet Engpass = bandbreitengebunden |
| nur mit Geli | nur dieser Pfad hat Mini-ISP + CGNAT + Auslands-Strecke; nationale Calls nicht |
| Roaming nur Nebenfaktor | „still = etwas besser, aber mies"; „Cudy half *etwas*" |
**Lokalisierung GEKLÄRT:** Christoph leidet stĂ€rker (hört/sieht Geli schlechter), Geli seltener →
Engpass sitzt dominant auf **Geli→Christoph = Gelis Senderichtung**. Innerhalb dieser Richtung ist die
Kette: **(1) Gelis WLAN-Uplink** (schwach an dicker Hausmauer/Distanz; Airtime nur fallweise, PS meist aus)
→ **(2) hohe Video-Bitrate** (Gegenlicht/Dunkel) → **(3) CGNAT/Auslands-Peering**
(abends). Die **Jitter-/Burst-Signatur** (verzögert-dann-stoßweise) zeigt: es ist primĂ€r **Queuing/Bufferbloat
auf dieser Senderichtung**, nicht reiner Random-Loss.
---
## AusfĂŒhrungsplan (fĂŒr die separate Session)
**Reihenfolge: erst beweisen, dann fixen.** Constraint: **passiv messen** wÀhrend echter Calls
(„cave: verĂ€ndert den Datenstrom"); **kein iperf/SĂ€ttigen** wĂ€hrend eines laufenden Calls.
1. **Billige Sofort-Tests (heute Abend, ~0 €):**
- **Bitrate/Auflösung im Messenger deckeln** (z. B. Telegram-Datensparmodus) → wird's spĂŒrbar stabiler? = Mechanismus bestĂ€tigt.
- **Gelis Gegenlicht eliminieren** (Lampe von vorn, nicht Fenster im RĂŒcken) → Artefakte weg/weniger?
- **Richtungstest:** beide notieren, wer wessen Aussetzer sieht (s. Lokalisierung oben).
2. **Messen — was lokalisiert wirklich? (wichtig: Sniffer-Grenze)**
- **Ein Call-Sniffer NUR auf Christophs Seite lokalisiert NICHT.** Was bei dir ankommt, hat Funk + ISP +
Transit bereits vermischt → zeigt nur das **Symptom** (eingehender Stream ruckelt/verliert, mit
Zeitstempel + Relay-IP), nicht **wo**. Verbleibende Unsicherheit = **Gelis Funk-Uplink vs. Gelis
ISP-Pfad** (≠ Fix!). DafĂŒr braucht es einen Messpunkt **auf Gelis Seite**.
- **Remote machbar & aussagekrĂ€ftig:** MTR/Ping-Log **Mac mini → Geli-FB `94.154.138.11`**, **abends
unter echter Call-Last vs. Tageswert** (22.2 ms / 0.88 ms / 0 % Loss). Degradiert der Pfad abends →
**ISP/Peering** schuld. Bleibt er sauber, Call trotzdem mies → Engpass liegt **in Gelis Funk/Relay**,
nicht im Transit. (Misst nur bis zur CGNAT-Grenze, nicht in ihr LAN.)
- **Auf Gelis Seite ohne Infra, nur per Handy:** **Bufferbloat-Test** (z. B. waveform.com/tools/bufferbloat)
auf **Gelis Handy abends** → zeigt direkt, ob **ihr Uplink unter Last aufblĂ€ht** (Latenz steigt) =
Anschluss/Funk. Einmalig, kein Setup.
- **A/B-Verhaltenstest (Handout) schlÀgt passives Sniffen:** Àndert kontrolliert **eine** Variable
(nah am AP / gutes Licht / Audio-only / tags vs. abends) → lokalisiert besser, weil es Ursache *isoliert*.
- **Roaming nur sekundĂ€r:** Cudy-Stationen (RSSI/TX-RX/Retries/Assoc-Events) bei bewegtem Call —
Cudy ≠ MikroTik → kein MikroMCP; Cudy SSH+`iw station dump` rein lesend, falls möglich.
3. **Fix-Pfade (nach Lokalisierung) — Geli-Tal: nur dieser ISP oder schlechter Mobilfunk:**
- **(sofort, ISP-unabhĂ€ngig)** Bitrate-Deckel (Telegram „weniger Daten") + **Ausleuchtung/kein Gegenlicht**
+ **Position nah am AP** + Calls eher **tagsĂŒber** (Peak meiden) + **Audio-only** bei Bewegung.
- **(WLAN)** ZusĂ€tzlicher AP/nĂ€here Funkstation an Gelis ĂŒblichem Call-Platz → stĂ€rkerer **Uplink** dort;
Band/Position so, dass das Handy nicht am fernen AP „klebt". TP3/CAPsMAN-802.11r adressiert den Roaming-Nebenfaktor.
- **(App/Codec)** **A/B mit anderem Dienst** (WhatsApp/Signal) abends — andere Congestion-Control kann auf
schlechtem Link robuster sein. Billiger Test, evtl. echter Gewinn. (FaceTime fÀllt aus: Geli = Android.)
- **(IPv6 — billigster Hebel, braucht NUR Gelis v6):** **Korrektur:** Telegram **unterstĂŒtzt IPv6** (DCs dual-stack,
frĂŒher expliziter „Use IPv6"-Schalter); frĂŒhere Annahme „kann kein v6" war falsch. Die **schlechte Richtung
ist Geli→Christoph** (ihr Upload), erster Sprung = **Gelis Handy → Telegram-Reflector**. Geht *dieser* Leg ĂŒber
v6, ist **Gelis CGNAT auf genau der kaputten Richtung umgangen** — das braucht **nur Gelis v6 (vorhanden),
NICHT Christophs**. Da ihre FB das LAN bereits mit v6 versorgt, **lÀuft das evtl. schon / ist 1 Schalter entfernt.**
**Verify (kein Ausbau):** auf Gelis Handy `test-ipv6.com` (Score) + Telegram-Daten-Einstellungen auf v6-Option prĂŒfen.
**Offen/zu verifizieren:** ob aktuelle Clients den **VoIP-Reflector** ĂŒber v6 ansprechen (Messaging-zu-DC = ja, Call-Reflector = wahrscheinlich).
**Caveat:** v6 umgeht nur die **CGNAT-Box**, NICHT das **Transit-Rohr** — bei Abend-Peering-Stau hilft v6 nicht.
- **(ISP-Intervention, falls Transit/Peering der Stau ist):** kleiner Lokal-ISP = eher erreichbar; Abend-Congestion
+ Peering nach AT schildern. CGNAT-Opt-out/öffentliche v4 nur nötig, falls v6-Weg nicht tragfÀhig.
- **(strukturell, TP10 — NUR Notnagel, kein Default):** eigener Medienpfad (WG-ĂŒber-v6 FB↔ap1, dann self-hosted
Jitsi/SIP) **erst erwĂ€gen, wenn die Messung „Transit-Rohr" sagt** — also wenn auch v6 staut und der ISP nicht
hilft. FĂŒr den CGNAT-Fall **nicht nötig** (Gelis vorhandenes v6 reicht). ⚠ **Christoph-seitig v6 blockiert**
(Liwest kein v6; 6to4 untauglich fĂŒr RT-Medien) → brĂ€uchte erst **6in4-Tunnelbroker (HE)** + DDNS fĂŒr Gelis rotierendes /56.
---
## Benötigte Infos / ZugÀnge (von Christoph)
- **Richtung der Artefakte** (wer sieht wessen Aussetzer) — der wichtigste offene Fakt.
- **Cudy-Modell** + Zugangsweg (SSH/Web-UI/App, Creds) — fĂŒr den sekundĂ€ren Roaming-Check, beide Seiten.
- **Anruf-GerĂ€t** (Handy/Modell) — Client-seitige Korrelation, Kamera/Codec-Verhalten bei Low-Light.
- Gelis **Fiber-Tarif** (Up/Down) + BestÀtigung **weiterhin CGNAT** (`on-isp.net`).
## Constraints / Caveats
- **Passiv only** wÀhrend echter Calls.
- **MikroMCP** verwaltet die **Cudys nicht**.
- **ap1 ist unverĂ€ndert** — keine QoS-/Firewall-/Queue-Änderung appliziert (Details unten).
- Tagesmessungen waren sauber, **weil im gesunden Zustand** — nicht als Entlastung des Abend-Pfads werten.
## Zustand ap1 (zur Sicherheit dokumentiert — NICHTS wurde geĂ€ndert)
- Keine Queues, kein CAKE. **Fasttrack `*8` weiter aktiv.** Keine neuen Mangle-Regeln.
- WAN-Egress aktuell = `bridge` → FB (10.40.41.254); masquerade `out-interface=bridge` (TP4).
- ether1-Direkt-WAN bleibt vorkonfiguriert/down (gated auf TP10).
## Querverweise
- **TP10** (VPN/CGNAT) — jetzt **aufgewertet**: Gelis FB `94.154.138.11:52727` (Fiber, CGNAT), AS202245
GeroldsgrĂŒn; Hub-Spoke auf ap1 (Geli wĂ€hlt ausgehend ein, PersistentKeepalive ~25 s). Memory:
`project_ap_vpn_bridge_blocker.md`.
- **TP3** (WLAN/CAPsMAN, 802.11r/k/v) — Fix fĂŒr den **Roaming-Nebenfaktor**, nicht die Wurzel.
- `docs/research/routeros-capabilities.md` — Fast-Roaming-Konzept.
## Messdaten-Anhang (Rohwerte 2026-06-16, Tageslicht/gesund)
- Upload-SĂ€ttigung Christoph: 3 Flows × ~430 KB/s = 1.28 MB/s = **10.3 Mbit** (sustained).
- Bufferbloat Christoph: idle 12 ms; Vollast avg 17.5 / max 26 ms (24 Pings).
- AT→heise.de: min 19.3 / avg 20.7 / max 27.6 / stddev 1.6 ms, 0 % Loss (40).
- AT→Telegram 149.154.167.50: avg 26.9 ms / stddev 1.3 ms (29/30); 91.108.56.130 = 173 ms (fernes DC, irrelevant).
- BF→Geli-FB 94.154.138.11: avg 22.2 / stddev 0.88 ms, 0 % Loss (30); rDNS `nat-3.aigbng02.bng.on-isp.net` = CGNAT.
⚠ **Tageswert** — Referenz fĂŒr den Abend-Vergleich, kein Freispruch.
- Testnetz-Client (VOID): `install-10`, 5 GHz, WPA3-PSK, -76 dBm — nicht das produktive Netz.