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

Buku Putih Lag Game › Akar penyebab retransmisi TCP

Retransmisi permintaan koneksi (SYN) SYN retransmission on connect

ID penyebab rt-syn · Penanggung jawab utama Pengembangan server (Tim Pengembang Game) · Turut terlibat Infrastruktur server (Tim Infrastruktur), Infrastruktur jaringan (Tim Infrastruktur), Pengembangan klien (Tim Pengembang Game)

Buka kartu interaktif dengan gambar dan simulasi →

Jika permintaan koneksi hilang karena antrean koneksi (backlog) meluap atau diblokir firewall, OS klien mengirimnya ulang mulai 1 detik kemudian dengan interval yang makin panjang.

Mengapa Lonjakan koneksi tepat setelah maintenance membuat antrean koneksi server meluap, atau firewall dan proteksi DDoS membuang SYN → Akibatnya OS klien mengirim ulang SYN mulai 1 detik kemudian dengan interval yang sudah ditentukan (Linux versi lama: 1 detik → 2 detik → 4 detik) → Di layar Setelah tombol masuk ditekan, keterlambatannya pas dalam hitungan detik seperti 1 atau 3 detik, dan jika terus gagal, pemain tidak bisa masuk atau mengalami loading tanpa henti

Gejala
Tidak bisa masuk / loading tanpa henti
Faktor
Packet loss
Siapa yang mengalami
Seluruh server, Wilayah/ISP tertentu
Kapan
Tepat setelah login atau maintenance
Penanggung jawab
Penanggung jawab utama Pengembangan server (Tim Pengembang Game) · Turut terlibat Infrastruktur server (Tim Infrastruktur), Infrastruktur jaringan (Tim Infrastruktur), Pengembangan klien (Tim Pengembang Game)
Tugas Tim Pengembang Game
Server: perbesar argumen backlog pada listen (bersama somaxconn), pastikan server game memanggil accept tepat waktu, gunakan sistem antrean login. Klien: perpanjang interval percobaan ulang koneksi (disebar secara acak).
Tugas Tim Infrastruktur
Server/OS: periksa apakah antrean koneksi server meluap lewat TcpExtListenOverflows dan TcpExtListenDrops di nstat serta peringatan “Possible SYN flooding” di log, perbesar somaxconn (bersama argumen listen), aktifkan SYN cookie. Jaringan: longgarkan batas SYN di firewall dan proteksi DDoS.
Kisaran angka
Di Linux (termasuk Android), retransmisi SYN pertama terjadi setelah 1 detik. Kernel lama kemudian menggandakan jedanya setiap kali dan mengirim ulang pada detik ke-1, 3, 7, 15 …, sedangkan kernel 6.5 ke atas mengirim ulang lima kali pada detik ke-1, 2, 3, 4, dan 5, lalu menggandakannya (7, 11, 19 detik …) (tcp_syn_linear_timeouts=4). Ponsel Android sering tetap memakai kernel bawaan saat rilis walaupun OS-nya diperbarui, sehingga perilakunya bisa berbeda antarperangkat walaupun versi Android-nya sama. Apa pun kernelnya, jika semua percobaan gagal, OS menyerah setelah sekitar 2 menit. Windows mulai dari 1 atau 3 detik tergantung versi dan pengaturan, dan mengirim ulang 2–4 kali, sehingga menyerah dalam 20–30 detik (nilai di PC tersebut bisa dilihat di Max SYN Retransmissions pada netsh int tcp show global).
Di grafik
Melonjak tepat setelah server dibuka · Jumlah percobaan koneksi, jumlah kejadian antrean koneksi meluap
Yang diperiksa
Di nstat server, periksa TcpExtListenOverflows dan TcpExtListenDrops serta peringatan “Possible SYN flooding on port” di dmesg, lalu periksa dengan ss -lnt apakah Recv-Q socket listen (jumlah koneksi yang menunggu accept) mencapai Send-Q (batas backlog). Pastikan lewat capture di sisi server apakah SYN tiba dan apakah SYN-ACK dikirim balik
Cocok jika
Saat lonjakan koneksi tepat setelah maintenance, TcpExtListenOverflows naik dan Recv-Q menempel di Send-Q. Di capture, SYN dari klien yang sama datang lagi dengan interval hitungan detik, tetapi server tidak merespons
Tidak cocok jika
SYN tidak sampai ke server dan counter server juga tidak berubah: firewall atau proteksi DDoS di depan yang membuangnya, jadi periksa batas SYN dan log drop di perangkat itu. Server sudah mengirim SYN-ACK, tetapi koneksi tetap lambat: packet loss di arah balik
Sarana pemeriksaan
Tools infrastruktur (tanpa perlu kode game)

Sumber

  1. include/net/tcp.h Linux kernel
    RTO pertama TCP_TIMEOUT_INIT = 1 detik (nilai awal dari RFC 6298)
  2. RFC 6298: Computing TCP's Retransmission Timer IETF
    RTO awal 1 detik, berlipat dua setiap kali retransmisi
  3. IP Sysctl Linux kernel
    Default tcp_syn_retries 6, default tcp_syn_linear_timeouts 4 (RTO SYN 1, 1, 1, 1, 1, 2, 4 …), retransmisi terakhir pada detik ke-67 dan menyerah pada detik ke-131, default somaxconn 4.096, default tcp_syncookies 1
  4. tcp: make the first N SYN RTO backoffs linear Linux kernel
    Commit yang mengubah bagian awal retransmisi SYN menjadi interval tetap, mulai Linux 6.5 (default 4 mengikuti cara macOS dan iOS)
  5. Android common kernels Android (Google)
    Common kernel 5.10–6.18 didukung bersamaan, dan kernel untuk platform sebelumnya (misalnya android14-6.1) bisa dipakai untuk peluncuran atau upgrade perangkat Android baru
  6. TcpMaxConnectRetransmissions Microsoft
    Default Windows versi lama: 2 kali retransmisi SYN, dimulai dengan tunggu 3 detik lalu berlipat dua, dan setelah yang terakhir menunggu dua kali lipat lagi sebelum menyerah (3+6+12=21 detik)
  7. TCP/IP connectivity issues troubleshooting Microsoft
    Jumlah retransmisi SYN berbeda tiap OS dan bisa dilihat di Max SYN Retransmissions pada netsh int tcp show global
  8. listen(2) — Linux manual page Linux man-pages
    Argumen backlog pada listen dipotong ke somaxconn (default 4.096 sejak Linux 5.4, sebelumnya 128)
  9. SNMP counter Linux kernel
    Jika antrean accept penuh, SYN dibuang dan TcpExtListenOverflows serta TcpExtListenDrops naik bersamaan; TcpExtTCPSynRetrans
  10. net/ipv4/tcp_input.c Linux kernel
    Pesan log “Possible SYN flooding on port …”
  11. net/ipv4/tcp_diag.c Linux kernel
    Untuk socket listen, Recv-Q di ss adalah jumlah koneksi yang menunggu accept, dan Send-Q adalah batas backlog

Lihat juga

Lapisan yang sama: Akar penyebab retransmisi TCP

Penyebab di lapisan lain dengan gejala yang sama (Tidak bisa masuk / loading tanpa henti)

Lihat kartu interaktif dengan gambar dan simulasi