Caída brusca del ritmo de envío por el control de congestión Congestion control backoff
ID de la causa sk-congestion · Responsable principal Infraestructura de servidores (Equipo de infraestructura) · También Desarrollo de servidor (Equipo de desarrollo)
TCP interpreta la pérdida como señal de congestión y reduce la velocidad de envío entre un 30 y un 50%. Reacciona igual ante la pérdida en el Wi-Fi.
Por qué Con mucho que enviar, hay algo de pérdida en el Wi-Fi o en la conexión → Efecto TCP reduce mucho la velocidad de envío y se recupera despacio (CUBIC, el predeterminado en Linux y Windows, la reduce un 30%) → En pantalla En los lugares con mucha gente las actualizaciones se atrasan: cámara rápida e input lag
Responsable principal Infraestructura de servidores (Equipo de infraestructura) · También Desarrollo de servidor (Equipo de desarrollo)
Tareas (Equipo de desarrollo)
Reducir lo que se envía (área de interés, solo los cambios), repartir los envíos para no mandarlo todo de golpe.
Tareas (Equipo de infraestructura)
Cambiar a un control de congestión como BBR (tcp_congestion_control).
En el gráfico
Diente de sierra · Ventana de congestión (cwnd) y tasa de envío por conexión
Dónde mirar
Varias tomas con ss -ti de la conexión del jugador con actualizaciones atrasadas: cambios de cwnd y ssthresh, nombre del control de congestión (cubic, bbr) y si se acumula el Send-Q
Se confirma si
Tras una pérdida, la cwnd cae mucho y sube despacio una y otra vez, y mientras está reducida se acumula el Send-Q, coincidiendo con la hora de los reportes de cámara rápida e input lag
Se descarta si
Si la cwnd es holgada y aun así hay atraso, apunta a la ventana del receptor (“Ventana cero (una detención que parece retransmisión)”) o al envío del servidor
Se verifica con
Con herramientas de infraestructura (no hace falta código del juego)
IP SysctlLinux kernel Elegir el algoritmo de control de congestión de las conexiones nuevas con tcp_congestion_control
ss(8) — Linux manual pageiproute2 cwnd, ssthresh y nombre del algoritmo de control de congestión de -i
net/ipv4/tcp_diag.c (Linux v6.12)Linux kernel Valores Recv-Q y Send-Q de ss: en un socket de escucha, conexiones esperando accept y límite del backlog; en un socket conectado, bytes que la aplicación aún no ha leído y bytes enviados que no han recibido ACK