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

Buku Putih Lag Game › Akar penyebab retransmisi TCP

Zero window (jeda yang terlihat seperti retransmisi) Zero window, often mistaken for retransmission

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

Buka kartu interaktif dengan gambar dan simulasi →

Jika program penerima tidak membaca socket tepat waktu sehingga buffer penuh, pengirim menghentikan pengiriman dan hanya mengirim zero window probe. Koneksinya sendiri baik-baik saja.

Mengapa Frame di klien berhenti atau thread server tertahan sehingga socket tidak terbaca → Akibatnya Receive window menjadi 0 sehingga pengirim berhenti mengirim dan hanya mengirim probe (intervalnya makin panjang) → Di layar Freeze lalu fast forward. Packet capture menunjukkan “ZeroWindow” dan tidak ada packet loss

Gejala
Freeze, Fast forward
Faktor
Stall
Siapa yang mengalami
Hanya saya, Seluruh server
Kapan
Saat banyak pemain berkumpul, Sesekali secara acak
Penanggung jawab
Penanggung jawab utama Pengembangan klien (Tim Pengembang Game) · Turut terlibat Pengembangan server (Tim Pengembang Game), Infrastruktur server (Tim Infrastruktur)
Tugas Tim Pengembang Game
Periksa dulu sisi yang mengirim ZeroWindow di packet capture (sisi yang tidak sempat membaca socket), terus baca data jaringan di thread terpisah, atur ukuran buffer terima yang sesuai. Klien: atasi penyebab frame berhenti seperti loading dan GC. Server: atasi penyebab thread pembaca socket tertahan.
Tugas Tim Infrastruktur
Tambahkan TcpExtTCPToZeroWindowAdv di nstat server (berapa kali server memberi tahu receive window 0) ke monitoring (jika naik, masalahnya di sisi server, jadi teruskan ke Pengembangan server), sediakan packet capture sisi server.
Di grafik
Kosong lalu datang sekaligus · Volume terima per koneksi, jumlah zero window
Yang diperiksa
Di packet capture, cari sisi yang memberi tahu window 0 dengan filter Wireshark tcp.analysis.zero_window. Di nstat server, periksa terpisah TcpExtTCPToZeroWindowAdv (server memberi tahu window 0) dan TcpExtTCPWinProbe (server mengirim probe karena window pihak lawan 0), lalu periksa Recv-Q socket server (byte di ss yang belum dibaca program)
Cocok jika
Selama koneksi berhenti, tidak ada retransmisi, hanya paket zero window dan probe yang lalu-lalang. TcpExtTCPToZeroWindowAdv di server atau Recv-Q socket server naik: server tidak membaca tepat waktu. TcpExtTCPWinProbe naik: klien tidak membaca tepat waktu
Tidak cocok jika
Tidak ada zero window di capture dan data yang sama dikirim ulang: lebih mungkin packet loss atau retransmisi yang tidak perlu
Sarana pemeriksaan
Tools infrastruktur (tanpa perlu kode game)
Kasus nyata
Roblox 2021: Gangguan 73 jam di Roblox: perebutan sumber daya di cluster service discovery (Consul)

Sumber

  1. RFC 9293: Transmission Control Protocol (TCP) IETF
    Jika receive window 0, pengirim mengirim zero window probe dan interval probe diperpanjang secara eksponensial
  2. 7.5. TCP Analysis Wireshark
    TCP ZeroWindow: paket tempat penerima memberi tahu window 0 sehingga pengirim berhenti mengirim
  3. Display Filter Reference: Transmission Control Protocol Wireshark
    Filter tampilan tcp.analysis.zero_window, tcp.analysis.zero_window_probe
  4. SNMP counter Linux kernel
    TcpExtTCPToZeroWindowAdv: berapa kali receive window diberitahukan berubah dari nilai lebih dari 0 menjadi 0
  5. net/ipv4/proc.c Linux kernel
    Nama counter yang ditampilkan nstat: TCPToZeroWindowAdv, TCPWinProbe
  6. net/ipv4/tcp_output.c Linux kernel
    TCPWinProbe: naik setiap kali probe (tcp_send_probe0) dikirim saat receive window pihak lawan 0
  7. net/ipv4/tcp_diag.c Linux kernel
    Untuk socket yang terhubung, Recv-Q di ss adalah jumlah byte yang sudah diterima tetapi belum dibaca program

Lihat juga

Lapisan yang sama: Akar penyebab retransmisi TCP

Penyebab di lapisan lain dengan gejala yang sama (Freeze)

Lihat kartu interaktif dengan gambar dan simulasi