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

Buku Putih Lag Game › Akar penyebab retransmisi TCP

Buffer dangkal meluap akibat burst pengiriman Sender bursts overflow shallow buffers

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

Buka kartu interaktif dengan gambar dan simulasi →

Jika setiap tick server mengirim update untuk ribuan pemain sekaligus dalam sekejap, buffer kecil di switch atau batas sesaat di cloud meluap dalam waktu kurang dari 1 ms dan sebagian paket dibuang.

Mengapa Paket untuk semua pemain dikirim sekaligus tepat saat tick dimulai → Akibatnya Buffer port switch tempat trafik banyak server berkumpul (ratusan KB hingga beberapa MB per port) atau batas instance cloud meluap sesaat (utilisasi rata-rata tetap rendah) → Di layar Banyak pemain teleport atau tersendat sesaat secara bersamaan, penyebabnya tidak terlihat dari metrik rata-rata

Gejala
Teleport, Freeze, Fast forward
Faktor
Packet loss
Siapa yang mengalami
Lokasi/channel tertentu, Seluruh server
Kapan
Saat banyak pemain berkumpul
Penanggung jawab
Penanggung jawab utama Pengembangan server (Tim Pengembang Game) · Turut terlibat Infrastruktur server (Tim Infrastruktur), Infrastruktur jaringan (Tim Infrastruktur)
Tugas Tim Pengembang Game
Sebar pengiriman satu tick di sepanjang durasi tick (lonjakan ribuan koneksi di awal tick sulit diatasi dengan pacing per koneksi), sebar waktu mulai tick antarserver, batasi kecepatan koneksi yang mengirim data besar dengan SO_MAX_PACING_RATE.
Tugas Tim Infrastruktur
Server/OS: batasi laju kirim total server (shaper di OS server, tc di Linux), ratakan burst dari satu koneksi dengan pacing (qdisc fq di Linux, BBR). Jaringan: pakai switch dengan buffer besar, periksa counter drop output port switch dengan interval pendek (tidak terlihat dari utilisasi rata-rata).
Kisaran angka
Port 10 Gbps bisa mengirim sekitar 1,25 MB dalam 1 ms. Jika tick dari beberapa server bertepatan dan trafiknya terkumpul di satu port, buffer penuh dalam sekejap.
Di grafik
Naik mengikuti beban · Jumlah drop output port switch, tingkat retransmisi
Yang diperiksa
Kumpulkan drop output (ifOutDiscards) di port switch tempat server terhubung dan port di atasnya setiap beberapa detik; di cloud, periksa bw_out_allowance_exceeded dan pps_allowance_exceeded di ethtool -S. Kumpulkan retransmisi pada saat yang sama dengan bcc tcpretrans, lalu cocokkan
Cocok jika
Utilisasi rata-rata per menit rendah, tetapi drop output atau allowance yang terlampaui bertambah, dan jumlahnya membesar mengikuti CCU dan jumlah pemain yang berkumpul di satu tempat. Retransmisi tidak terpusat pada rentang IP pemain tertentu (ISP atau wilayah) dan muncul di banyak koneksi server itu pada saat yang sama
Tidak cocok jika
Error CRC dan error input di port yang sama ikut naik: lebih mungkin “Error fisik”. Counter drop NIC atau softnet dropped di server penerima naik: lebih mungkin “Paket dibuang di host server penerima”
Sarana pemeriksaan
Tools infrastruktur (tanpa perlu kode game)
Pelajari lebih lanjut
Pacing bekerja per koneksi. Lonjakan saat ribuan koneksi masing-masing mengirim satu atau dua paket di awal tick sulit diatasi dengan pacing per koneksi, sehingga server game sendiri harus menyebar waktu pengirimannya. Sebaliknya, saat satu koneksi mengirim data besar, NIC memotong data puluhan KB menjadi seukuran paket lalu mengirimnya beruntun (TSO), dan burst seperti ini bisa diratakan dengan baik oleh pacing.

Sumber

  1. High-Resolution Measurement of Data Center Microbursts Meta
    Lebih dari 70% burst di switch rak data center selesai dalam puluhan µs, dan hubungan antara utilisasi rata-rata per menit dan drop lemah (IMC 2017)
  2. tc-fq(8) — Linux manual page iproute2
    Qdisc fq melakukan pacing per socket (koneksi), dan SO_MAX_PACING_RATE menentukan kecepatan maksimum per koneksi
  3. net/ipv4/tcp_bbr.c Linux kernel
    BBR menentukan pacing_rate dari estimasi bandwidth bottleneck
  4. IP Sysctl Linux kernel
    TCP menentukan ukuran frame TSO sesuai laju flow (maksimal 64 KB, tcp_min_tso_segs)
  5. Monitor network performance for ENA settings on your EC2 instance AWS
    bw_out_allowance_exceeded, pps_allowance_exceeded: jumlah paket yang dimasukkan ke antrean atau dibuang karena instance melewati batas bandwidth atau batas paket per detik
  6. RFC 2863: The Interfaces Group MIB IETF
    ifOutDiscards: jumlah paket keluar yang dibuang tanpa dikirim walaupun tidak ada error, misalnya untuk mengosongkan ruang buffer
  7. Demonstrations of tcpretrans, the Linux eBPF/bcc version IO Visor
    Menampilkan satu baris untuk setiap retransmisi, berisi alamat dan port lawan serta status koneksi

Lihat juga

Lapisan yang sama: Akar penyebab retransmisi TCP

Penyebab di lapisan lain dengan gejala yang sama (Teleport)

Lihat kartu interaktif dengan gambar dan simulasi