Pengaturan RTO tidak sesuai dengan lingkungan RTO min too low or too high
ID penyebab rt-rto-setting · Penanggung jawab utama Infrastruktur server (Tim Infrastruktur) · Turut terlibat Pengembangan server (Tim Pengembang Game)
Jika nilai minimum RTO diturunkan terlalu rendah, keterlambatan kecil saja sudah memicu retransmisi yang tidak perlu. Sebaliknya, nilai default (200 ms) terlalu panjang untuk game sehingga setiap kali paket hilang, game berhenti lama.
Mengapa Nilai minimum RTO diturunkan drastis untuk keperluan data center, atau nilai default dipakai apa adanya di jalur internet → Akibatnya Terlalu rendah: retransmisi membanjir bahkan saat latensi naik sesaat. Terlalu tinggi: setiap packet loss harus ditunggu lama → Di layar Dengan nilai default, satu kali packet loss membuat freeze ratusan ms lalu fast forward; jika diturunkan terlalu rendah, freeze memendek, tetapi retransmisi yang tidak perlu melonjak dan memboroskan bandwidth
Penanggung jawab utama Infrastruktur server (Tim Infrastruktur) · Turut terlibat Pengembangan server (Tim Pengembang Game)
Tugas Tim Pengembang Game
Di Linux 6.15 ke atas, pertimbangkan menurunkan batas atas RTO untuk koneksi game dengan TCP_RTO_MAX_MS (waktu sampai koneksi menyerah juga ikut memendek, jadi tentukan sekalian waktu deteksi terputus dengan TCP_USER_TIMEOUT), turunkan nilai minimum RTO hanya untuk koneksi internal antarserver dengan opsi socket TCP_RTO_MIN_US (6.15 ke atas), pertimbangkan opsi socket TCP_THIN_LINEAR_TIMEOUTS agar RTO berturut-turut tidak berlipat dua khusus pada koneksi game.
Tugas Tim Infrastruktur
Turunkan rto_min per rute hanya untuk koneksi internal antarserver, pertahankan nilai default di jalur internet dan lengkapi dengan RACK-TLP serta pengaturan thin stream (tcp_thin_linear_timeouts).
Kisaran angka
RTO di Linux = round-trip time + max(200 ms, deviasi RTT × 4). Nilainya berlipat dua setiap kali gagal, maksimal 120 detik. Di Linux 6.15 ke atas, batas atas ini bisa diturunkan hingga 1 detik dengan TCP_RTO_MAX_MS.
Di grafik
Selalu tinggi sejak awal · RTO per koneksi, jumlah RTO yang tidak perlu
Yang diperiksa
Periksa pengaturan nilai minimum RTO di server (rto_min di ip route show; di Linux 6.11 ke atas, sysctl net.ipv4.tcp_rto_min_us) serta rto dan rtt di ss -ti, lalu periksa kenaikan TcpExtTCPSpuriousRTOs di nstat
Cocok jika
Di server yang nilai minimumnya diturunkan, rto koneksi internet menempel ketat pada rtt dan TcpExtTCPSpuriousRTOs naik banyak. Dengan nilai default, rto koneksi game 200 ms atau lebih di atas rtt, dan setiap packet loss membuat game berhenti selama itu
Tidak cocok jika
rto sesuai perhitungan default (sekitar rtt + 200 ms) dan RTO yang tidak perlu juga sedikit, tetapi jedanya sangat lama: lebih mungkin packet loss berturut-turut atau cara pemulihannya (“Pemulihan lambat pada thin stream”, “Opsi TCP dihapus oleh perangkat perantara”)
Sarana pemeriksaan
Tools infrastruktur (tanpa perlu kode game)
Sumber
RFC 6298: Computing TCP's Retransmission TimerIETF RTO = SRTT + max(G, 4·RTTVAR), minimum yang direkomendasikan 1 detik, berlipat dua setiap kali gagal, dan jika ada nilai maksimum, nilainya minimal 60 detik
include/net/tcp.hLinux kernel TCP_RTO_MIN di Linux 200 ms, TCP_RTO_MAX 120 detik
net/ipv4/tcp_input.cLinux kernel RTO di Linux adalah SRTT + rttvar, dan rttvar tidak pernah turun di bawah nilai minimum RTO (default 200 ms)