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

Game-Lag-Whitepaper › L9 Spielprozess auf dem Server

Patch verändert das Traffic-Muster Patch changes traffic pattern

Ursachen-ID sp-patch-traffic · Hauptzuständig Server-Entwicklung (Entwicklungsteam) · Beteiligt Server-Infrastruktur (Infrastrukturteam), Netzwerk-Infrastruktur (Infrastrukturteam)

In der interaktiven Fassung mit Grafiken und Experimenten öffnen →

Vergrößern neue Inhalte, Effekte oder synchronisierte Felder die Pakete oder erhöhen ihre Frequenz, stößt ein bisher stabiler Server nach dem Patch an Grenzen bei MTU, Bandbreite oder Paketzahl.

Warum Durch neue Skill-Effekte, synchronisierte Felder und Item-Daten im Patch werden Pakete größer oder häufiger → Folge Große Pakete überschreiten die MTU und werden fragmentiert, das zusätzliche Volumen stößt an Bandbreite, PPS-Limit der Cloud und Sendepuffer → Auf dem Bildschirm Ab dem Patch an belebten Orten Teleportieren, verschluckte Skills und Input-Lag. An der Infrastruktur wurde nichts geändert, trotzdem steigt der Paketverlust

Symptome
Teleportieren, Verschluckte Aktion / Rollback, Input-Lag
Faktoren
Paketverlust, Latenz
Wer ist betroffen
Ganzer Server, Bestimmter Ort oder Kanal, Bestimmte Region oder Provider
Wann
Bei großem Andrang, Abendliche Stoßzeit, Immer
Zuständigkeit
Hauptzuständig Server-Entwicklung (Entwicklungsteam) · Beteiligt Server-Infrastruktur (Infrastrukturteam), Netzwerk-Infrastruktur (Infrastrukturteam)
Aufgaben Entwicklungsteam
Pakete selbst auf höchstens 1.200 Byte aufteilen, für neue synchronisierte Felder nur Änderungen senden und die Frequenz nach Entfernung und Wichtigkeit senken, vor dem Deployment auf dem Testserver Pakete und Bytes pro Spieler und Sekunde sowie die größte Paketgröße mit dem vorherigen Build vergleichen, Build-Version in den Traffic-Metriken mitschreiben.
Aufgaben Infrastrukturteam
Server/OS: Deployment-Zeitpunkte im Graphen markieren und Pakete und Bytes pro Spieler und Sekunde sowie die durchschnittliche Paketgröße vor und nach dem Deployment vergleichen, Alarm auf die Zähler für Limitüberschreitungen der Instanz, bei Bedarf größere Instanzen. Netzwerk: Verarbeitungslimits von Firewall, Load-Balancer und DDoS-Schutz prüfen, ebenso ob sie Fragmente blockieren.
Größenordnungen
Sicher sind UDP-Pakete mit höchstens 1.200 Byte. Die Path-MTU im Internet beträgt meist 1.500 Byte, durch Tunnel ist sie kleiner (bei einem GRE-Tunnel 1.476 Byte). Pakete über der Path-MTU werden fragmentiert oder verworfen. Geht bei einem fragmentierten Paket auch nur ein Fragment verloren, ist das ganze Paket verloren. Steigen die Pakete pro Spieler und Sekunde um 20 %, steigt auch die Gesamtmenge des Servers um 20 %. Eine Instanz, die schon nahe am Limit lief, läuft dann sofort über.
Im Graphen
Stufe ab einem bestimmten Zeitpunkt · Pakete und Bytes pro Spieler und Sekunde, durchschnittliche Paketgröße
Wo nachsehen
Pakete und Bytes pro Sekunde der Server-NIC (rxpck/s, txpck/s, rxkB/s, txkB/s aus sar -n DEV, bei EC2 NetworkPacketsOut und NetworkOut) vor und nach dem Deployment durch die Zahl gleichzeitiger Verbindungen teilen und vergleichen. Durchschnittliche Paketgröße = Bytes ÷ Pakete, Größenverteilung über die Statistik Packet Lengths in Wireshark aus einem Paketmitschnitt
Spricht dafür
Ab dem Deployment steigen Pakete und Bytes pro Spieler oder die durchschnittliche Paketgröße stufenartig an und bleiben oben, ab demselben Zeitpunkt steigen die vom Server erzeugten Fragmente (fragcrt/s in sar -n IP) oder die Zähler für Limitüberschreitungen der Instanz (pps_allowance_exceeded und bw_out_allowance_exceeded bei AWS ENA)
Spricht dagegen
Traffic-Muster vor und nach dem Deployment gleich, nur Latenz und Paketverlust gestiegen: Infrastrukturänderungen zur selben Zeit prüfen (Konfiguration, Routen, Geräte, OS- und Kernel-Updates)
Prüfmittel
Mit Infrastruktur-Tools prüfbar (ohne Spielcode)
Mehr dazu
Kommt die Meldung „Vor dem Patch lief es gut“, ist dies neben Infrastrukturänderungen die erste Ursache auf Seiten des Spiels, die zu prüfen ist. Auch wenn die Patchnotes keine Netzwerkänderung nennen: An belebten Orten fällt ein einziger neuer Effekt oder ein neues synchronisiertes Feld für Hunderte Spieler gleichzeitig an. Wo das zusätzliche Volumen tatsächlich an Grenzen stößt, behandeln die Einträge „IP-Fragmentierung von UDP-Paketen“, „Überschrittenes PPS-Limit in der Cloud“, „Vollauslastung der NIC-Bandbreite“, „Zu kleine Socket-Puffer im Kernel“ und „Überschrittenes Verarbeitungslimit von Zwischengeräten (Firewall, IPS, DDoS-Schutz)“. Dieser Eintrag beschreibt den Fall, dass ein Spiel-Patch den Traffic erst an diese Grenzen bringt. Bevor man Limits anhebt, reduziert man deshalb zuerst den durch den Patch gestiegenen Traffic. Wurden zur selben Zeit auch OS oder Kernel aktualisiert, zeigt der Traffic pro Spieler, welcher Fall vorliegt: Hat er sich verändert, gilt dieser Eintrag, sonst eher „Leistungsänderung nach OS-, Kernel-, Treiber- oder Firmware-Update“.

Quellen

  1. RFC 8085: UDP Usage Guidelines IETF
    UDP-Anwendungen sollen keine Datagramme senden, die die Path-MTU überschreiten (SHOULD NOT), geht ein Fragment verloren, ist das ganze fragmentierte Paket verloren, manche NATs und Firewalls verwerfen alle Fragmente
  2. RFC 8899: Packetization Layer Path MTU Discovery for Datagram Transports IETF
    Für Datagramm-Transporte wie UDP werden 1.200 Byte als sichere Grundgröße (BASE_PLPMTU) empfohlen
  3. Maximum transmission unit and maximum segment size Cloudflare
    Path-MTU im Internet 1.500, durch einen GRE-Tunnel 1.476
  4. Monitor network performance for ENA settings on your EC2 instance AWS
    pps_allowance_exceeded und bw_out_allowance_exceeded: Zahl der Pakete, die wegen Überschreitung des PPS- oder Sendebandbreiten-Limits der Instanz in die Queue gestellt oder verworfen wurden
  5. sar(1) — Linux manual page sysstat
    rxpck/s und txpck/s (Pakete pro Sekunde) sowie rxkB/s und txkB/s (KB pro Sekunde) in sar -n DEV, fragcrt/s in sar -n IP (erzeugte IP-Fragmente pro Sekunde, ipFragCreates)
  6. CloudWatch metrics that are available for your instances AWS
    NetworkPacketsOut (von der Instanz über alle Netzwerkschnittstellen gesendete Pakete) und NetworkOut (gesendete Bytes)
  7. 8.7. Packet Lengths Wireshark
    Teilt mitgeschnittene Pakete in Längenbereiche ein und zeigt Anzahl, Mittelwert, Minimum und Maximum

Verwandte Ursachen

Gleiche Schicht: L9 Spielprozess auf dem Server

Ursachen aus anderen Schichten mit demselben Symptom (Teleportieren)

Karte in der interaktiven Fassung mit Grafiken und Experimenten ansehen