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

Game Lag White Paper › L8 Sockets and protocols

Sending rate plunges under congestion control Congestion control backoff

Cause ID sk-congestion · Primary owner Infra team (Server infrastructure) · Also Game team (Server development)

Open the interactive card with figures and simulations →

TCP treats loss as a sign of congestion and cuts its sending rate by 30–50%. It reacts the same way to Wi-Fi loss.

Why A little loss on Wi-Fi or the connection while there’s a lot to send → Effect TCP cuts its sending rate sharply and recovers slowly (CUBIC, the Linux and Windows default, cuts by 30%) → On screen Updates fall behind in crowded areas: fast-forward, input lag

Symptoms
Fast-forward, Input lag
Factors
Latency, Stall
Who’s affected
Just me
When
When crowds gather
Owner
Primary owner Infra team (Server infrastructure) · Also Game team (Server development)
Game team action items
Send less (area of interest, changes only), spread sends out so they don’t go out in one burst.
Infra team action items
Switch to a congestion control algorithm such as BBR (tcp_congestion_control).
On the graph
Sawtooth · Per-connection congestion window (cwnd) and sending rate
Where to look
Several ss -ti snapshots of a lagging player’s connection for changes in cwnd and ssthresh and the congestion control name (cubic, bbr), plus whether Send-Q builds up
Confirmed if
After each loss, cwnd drops sharply and climbs back slowly, and Send-Q builds up while it’s low, lining up with the times of fast-forward and input lag reports
Ruled out if
cwnd is ample, yet updates still fall behind: the receiver’s window (“Zero window (a stall that looks like retransmission)”) or the server’s sending side
Check with
Infra tools (no game code needed)

Sources

  1. RFC 9438: CUBIC for Fast and Long-Distance Networks IETF
    On loss, CUBIC scales the window by 0.7 (a 30% cut) and Reno by 0.5; CUBIC is the default on Linux, Windows, and Apple platforms
  2. TCP BBR congestion control comes to GCP – your Internet just got faster Google Cloud
    Loss-based congestion control cuts the sending rate sharply even for loss that congestion didn’t cause; BBR decides based on delivery rate and RTT
  3. IP Sysctl Linux kernel
    tcp_congestion_control selects the congestion control algorithm for new connections
  4. ss(8) — Linux manual page iproute2
    cwnd, ssthresh, and the congestion control algorithm name in -i
  5. net/ipv4/tcp_diag.c (Linux v6.12) Linux kernel
    Recv-Q and Send-Q in ss: for a listening socket, connections waiting for accept and the backlog limit; for a connected socket, bytes the app hasn’t read yet and sent bytes not yet ACKed

See also

Same layer: L8 Sockets and protocols

Same symptom (Fast-forward), other layers

View the interactive card with figures and simulations