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
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
RFC 8085: UDP Usage GuidelinesIETF 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
sar(1) — Linux manual pagesysstat 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)