Um die Reihenfolge einzuhalten, gibt TCP später eingetroffene Pakete erst an das Spiel weiter, wenn ein verlorenes Paket erneut angekommen ist.
Warum Ein einzelnes Paket geht verloren → Folge Die nachfolgenden Pakete sind angekommen, warten aber im Empfangspuffer → Auf dem Bildschirm Stillstand, dann löst sich alles auf einmal: Zeitraffer
Server: Echtzeitpositionen per UDP, nur Unverzichtbares zuverlässig übertragen, auf mehrere Streams aufteilen. Client: Netzwerkverarbeitung auf dasselbe Verfahren wie beim Server umstellen (UDP, getrennte Kanäle).
Größenordnungen
Geht ein Paket verloren, dauert der Stillstand mindestens eine Umlaufzeit und etwas mehr. Geht auch die Retransmission verloren, sind es mehrere hundert ms bis einige Sekunden.
Im Graphen
Lücke, dann alles auf einmal · Empfangsvolumen pro Verbindung, Retransmissions
Wo nachsehen
Per Paketmitschnitt auf dem Server (tcpdump, Wireshark) in der Verbindung des Spielers die Retransmissions und die Lücken davor und danach prüfen, für den ganzen Server den Zuwachs von TcpRetransSegs in nstat -az ansehen
Spricht dafür
Die Stillstandsphase beginnt mit der Retransmission eines einzelnen Pakets, direkt nach dessen Eintreffen werden die aufgestauten Daten auf einmal verarbeitet (Empfangsvolumen erst bei 0, dann ein Schwall)
Spricht dagegen
Spiel kommuniziert per UDP: trifft nicht zu. Stillstand ohne Retransmission: Server-Tick prüfen („Überschrittenes Tick-Budget“)
RFC 5681: TCP Congestion ControlIETF Verlust wird an 3 doppelten ACKs erkannt und per Fast Retransmit behoben, sonst wird auf den Retransmission-Timer gewartet