한국어English日本語简体中文繁體中文DeutschไทยTiếng ViệtРусскийPortuguês (Brasil)EspañolBahasa Indonesia

Game-Lag-Whitepaper › Grundursachen von TCP-Retransmissions

Routenwechsel oder defekter ECMP-Pfad Route change / bad ECMP member

Ursachen-ID rt-path · Hauptzuständig Netzwerk-Infrastruktur (Infrastrukturteam) · Beteiligt Server-Entwicklung (Entwicklungsteam), Extern (Extern)

In der interaktiven Fassung mit Grafiken und Experimenten öffnen →

Pakete verschwinden in den Sekunden, in denen sich die Internet-Route ändert, oder auf Verbindungen, die unter mehreren ECMP-Pfaden einem defekten Pfad zugeordnet sind.

Warum BGP berechnet Routen neu, oder unter mehreren Pfaden (ECMP, LAG) hat einer ein defektes Gerät oder eine defekte Leitung → Folge Vorübergehender Verlust während der Umschaltung, oder anhaltender Verlust nur auf den Verbindungen über diesen Pfad → Auf dem Bildschirm Plötzlich einige Sekunden Freeze, dann Zeitraffer, oder „nach einem Reconnect wird es besser“ (Zuweisung zu einem anderen Pfad)

Symptome
Freeze, Zeitraffer, Teleportieren
Faktoren
Paketverlust
Wer ist betroffen
Bestimmte Region oder Provider
Wann
Gelegentlich, zufällig
Zuständigkeit
Hauptzuständig Netzwerk-Infrastruktur (Infrastrukturteam) · Beteiligt Server-Entwicklung (Entwicklungsteam), Extern (Extern)
Aufgaben Entwicklungsteam
Retransmission-Statistiken pro Verbindung (TCP_INFO) aufzeichnen, damit sich IP, Port und Zeitpunkt der Betroffenen herausziehen lassen, Verbindungen nach einigen Sekunden Stillstand nicht sofort trennen.
Aufgaben Infrastrukturteam
Retransmission-Rate nach Region und Provider überwachen, prüfen, ob sich die Route durch einen Reconnect ändert, Leitungen mehrerer Provider vorhalten, defekte Links unter den ECMP- und LAG-Pfaden der eigenen Geräte suchen, Routen über denselben TCP-Port wie das Spiel messen (mtr --tcp --port. Die Route hängt von Adresse und Port ab, ein normaler Ping nimmt daher mitunter einen anderen Pfad und sieht unauffällig aus).
Aufgaben Extern
Defekten Pfad beim Provider melden, mit Routenmessungen über denselben TCP-Port und einem Vergleich vor und nach dem Reconnect.
Im Graphen
Stufe ab einem bestimmten Zeitpunkt · RTT (Ping), Retransmission-Rate nach Region und Provider
Wo nachsehen
Mit bcc tcpretrans -c Retransmissions pro Verbindung sammeln und Adressen und Ports der betroffenen Spieler herausziehen, mtr über denselben TCP-Port wie das Spiel (mtr -T -P PORT) vom Server zum Spieler und vom Spieler zum Server aufzeichnen und vergleichen. Auch Ergebnisse vor und nach einem Reconnect vergleichen
Spricht dafür
Ab einem bestimmten Zeitpunkt ändert sich die RTT einer Region oder eines Providers stufenartig, und einige Sekunden lang häufen sich Verluste, oder innerhalb desselben Providers haben nur einige Verbindungen (Kombinationen aus Adresse und Port) anhaltend Retransmissions, die nach einem Reconnect verschwinden. Mitunter ist der normale Ping unauffällig, und nur TCP-mtr zeigt Verlust
Spricht dagegen
Alle Verbindungen dieses Providers verschlechtern sich gemeinsam in der abendlichen Stoßzeit: „Warteschlangenüberlauf am Engpass“. Nur ein Spieler betroffen, Verlust schon beim Ping zum Router: „Verlust auf der Funkstrecke“
Prüfmittel
Mit Infrastruktur-Tools prüfbar (ohne Spielcode)
Reale Fälle
Cloudflare 2020: Cloudflare: Traffic-Verlust in einigen Städten durch Konfigurationsfehler im Backbone

Quellen

  1. RFC 2991: Multipath Issues in Unicast and Multicast Next-Hop Selection IETF
    Bei Mehrwege-Routing sind die Ergebnisse von Diagnosetools wie ping und traceroute wenig verlässlich, Beschreibung des Verfahrens, den Pfad per Hash über den Flow festzulegen
  2. RFC 2992: Analysis of an Equal-Cost Multi-Path Algorithm IETF
    ECMP wählt den nächsten Pfad per Hash über die Headerfelder, die den Flow identifizieren (gleicher Flow, gleicher Pfad)
  3. tcp(7) — Linux manual page Linux man-pages
    TCP_INFO: Abfrage des Zustands pro Socket (struct tcp_info)
  4. mtr(8) manual page source mtr
    -T (--tcp) sendet TCP SYN (Standard ist ICMP), -P (--port) legt den Zielport fest
  5. Demonstrations of tcpretrans, the Linux eBPF/bcc version IO Visor
    Zeigt pro Retransmission eine Zeile mit Adresse und Port der Gegenseite, -c zählt Retransmissions pro Flow

Verwandte Ursachen

Gleiche Schicht: Grundursachen von TCP-Retransmissions

Ursachen aus anderen Schichten mit demselben Symptom (Freeze)

Karte in der interaktiven Fassung mit Grafiken und Experimenten ansehen