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

Game-Lag-Whitepaper › Grundursachen von TCP-Retransmissions

Warteschlangenüberlauf am Engpass (Verlust durch Überlast) Tail drop at a congested bottleneck

Ursachen-ID rt-queue-drop · Hauptzuständig Netzwerk-Infrastruktur (Infrastrukturteam) · Beteiligt Extern (Extern), Client-Entwicklung (Entwicklungsteam)

In der interaktiven Fassung mit Grafiken und Experimenten öffnen →

Ist die Warteschlange an der engsten Stelle voll, etwa am Router, am Übergabepunkt zwischen Providern oder an der Leitung des Rechenzentrums, werden neu ankommende Pakete verworfen.

Warum Videos, Downloads oder Traffic anderer Nutzer füllen den Engpass → Folge Solange die Warteschlange voll ist, werden neu ankommende Pakete nacheinander verworfen (Tail Drop). Auch die nicht verworfenen Pakete warten am Ende der vollen Warteschlange → Auf dem Bildschirm Mehrere Pakete verschwinden auf einmal: langer Freeze, dann Zeitraffer, häufig abends

Symptome
Freeze, Zeitraffer, Rubberbanding
Faktoren
Paketverlust, Latenz
Wer ist betroffen
Gleicher Haushalt, Bestimmte Region oder Provider, Ganzer Server
Wann
Abendliche Stoßzeit, Bei großem Andrang
Zuständigkeit
Hauptzuständig Netzwerk-Infrastruktur (Infrastrukturteam) · Beteiligt Extern (Extern), Client-Entwicklung (Entwicklungsteam)
Aufgaben Entwicklungsteam
Bei gehäuften Verlusten oder sprunghaft steigendem Ping den Netzwerkstatus auf dem Bildschirm anzeigen (mit Hinweis auf mögliche große Übertragungen über dieselbe Leitung).
Aufgaben Infrastrukturteam
Reserven auf der Leitung des Rechenzentrums schaffen, Zähler für in der Warteschlange verworfene Pakete (output drops) an den eigenen Leitungen und Switch-Ports prüfen, bei verstopfter Providerstrecke über andere Leitungen oder Peerings umleiten.
Aufgaben Extern
Spieler auf SQM (fq_codel, CAKE) und ECN am Router hinweisen (damit die Senderate sinkt, bevor die Warteschlange überläuft), beim Provider einen Ausbau des Engpasses anfragen.
Größenordnungen
Im Moment des Überlaufs verschwindet einige Dutzend ms lang ein großer Teil der ankommenden Pakete auf einmal. Weil Pakete in Folge verloren gehen und dabei leicht auch die Retransmission verloren geht, läuft es oft auf ein RTO hinaus.
Im Graphen
Nur zu bestimmten Tageszeiten hoch · Retransmission-Rate, RTT (Ping)
Wo nachsehen
Retransmission-Rate des Servers (Zuwachs von TcpRetransSegs ÷ TcpOutSegs, nstat im Minutentakt) und RTT pro Verbindung nach Region, Provider und Tageszeit aufschlüsseln, dazu verworfene ausgehende Pakete (ifOutDiscards) an den eigenen Leitungen und Switch-Ports prüfen. mtr zur betroffenen Region zur Stoßzeit und zu ruhigen Zeiten aufzeichnen und vergleichen
Spricht dafür
Retransmission-Rate steigt nur in der abendlichen Stoßzeit, kurz vor dem Verlust steigt zuerst die RTT (die Warteschlange füllt sich). In mtr nehmen nur zur Stoßzeit ab einem bestimmten Hop bis zum Ziel Verlust und Latenz gemeinsam zu
Spricht dagegen
RTT steigt vor dem Verlust nicht: „Policer verwirft Überschuss“. Verlust unabhängig von der Tageszeit immer ähnlich: „Physische Fehler“ oder „Routenwechsel oder defekter ECMP-Pfad“
Prüfmittel
Mit Infrastruktur-Tools prüfbar (ohne Spielcode)
Reale Fälle
Riot Games 2015: League of Legends: Datenverkehr auf Umwegen und Riot Direct

Quellen

  1. RFC 7567: IETF Recommendations Regarding Active Queue Management IETF
    Tail Drop hält Warteschlangen lange voll, erhöht so die Latenz und verursacht gehäufte Verluste, dazu Empfehlungen für AQM
  2. RFC 8290: The Flow Queue CoDel Packet Scheduler and Active Queue Management Algorithm IETF
    fq_codel: hält Warteschlangen mit Queues pro Flow und AQM kurz und verringert so Bufferbloat
  3. RFC 3168: The Addition of Explicit Congestion Notification (ECN) to IP IETF
    ECN: meldet Überlast per Markierung im IP-Header, ohne Pakete zu verwerfen
  4. Smart Queue Management Bufferbloat.net
    SQM: kombiniert Scheduling pro Flow, Verwaltung der Warteschlangenlänge (AQM) und Shaping
  5. Cake Bufferbloat.net
    CAKE: SQM für Router, das einen Shaper mit einer Warteschlangenverwaltung nach Art von fq_codel kombiniert
  6. net/ipv4/proc.c Linux kernel
    In nstat angezeigte TcpRetransSegs und TcpOutSegs (RetransSegs und OutSegs im Abschnitt Tcp)
  7. nstat(8) — Linux manual page iproute2
    nstat zeigt standardmäßig den Zuwachs seit dem letzten Aufruf
  8. RFC 2863: The Interfaces Group MIB IETF
    ifOutDiscards: Zahl ausgehender Pakete, die verworfen wurden, obwohl kein Fehler vorlag, etwa um Pufferplatz freizumachen
  9. An Internet-Wide Analysis of Traffic Policing Google
    Unterscheidung: Bei Warteschlangenüberlauf steigen vor dem Verlust zuerst Wartezeit und RTT, Policing verwirft den Überschuss ohne RTT-Anstieg (SIGCOMM 2016)

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