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

Buku Putih Lag Game › Akar penyebab retransmisi TCP

MTU black hole (hanya paket besar yang berulang kali hilang) PMTU black hole

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

Buka kartu interaktif dengan gambar dan simulasi →

Jika ukuran maksimum yang bisa dilewati suatu jalur di tengah rute mengecil dan notifikasi “terlalu besar” (ICMP) diblokir, paket besar terus hilang berapa kali pun dikirim ulang.

Mengapa Ukuran maksimum mengecil di segmen VPN atau tunnel, dan notifikasi ukuran terlampaui diblokir firewall → Akibatnya Pengirim terus mengirim ulang paket besar yang sama tanpa tahu sebabnya, dan RTO berlipat dua setiap kali → Di layar Biasanya normal, tetapi saat data besar lewat (inventory, tempat ramai, loading saat masuk), paket kecil di belakangnya pun ikut berhenti, lalu berakhir dengan disconnect atau loading tanpa henti

Gejala
Freeze, Disconnect, Tidak bisa masuk / loading tanpa henti
Faktor
Packet loss
Siapa yang mengalami
Wilayah/ISP tertentu, Hanya saya
Kapan
Saat melakukan aksi tertentu, Tepat setelah login atau maintenance
Penanggung jawab
Penanggung jawab utama Infrastruktur jaringan (Tim Infrastruktur) · Turut terlibat Infrastruktur server (Tim Infrastruktur), Pengembangan server (Tim Pengembang Game)
Tugas Tim Pengembang Game
Untuk menurunkannya langsung dari sisi server, atur ukuran segmen maksimum socket (TCP_MAXSEG); memecah pesan menjadi kecil-kecil di kode game saja tidak mencegah masalah ini (TCP menggabungkan lagi data yang akan dikirim seukuran MSS).
Tugas Tim Infrastruktur
Jaringan: lakukan penyesuaian MSS (clamping) di perangkat tepi jaringan, izinkan ICMP ukuran terlampaui (tipe 3 kode 4, fragmentation needed) di firewall dan network ACL cloud. Server/OS: atur path MTU, pastikan ICMP ukuran terlampaui juga tidak diblokir di firewall server dan security group cloud, aktifkan tcp_mtu_probing=1 di Linux sebagai jaring pengaman terakhir.
Kisaran angka
Biasanya 1.500 byte, dan sekitar 1.400 jika melewati tunnel. Jika paket yang sama dikirim ulang 5–6 kali, jedanya lebih dari 10 detik.
Di grafik
Hanya sebagian yang tinggi · RTO dan backoff per koneksi, jumlah disconnect per wilayah dan ISP
Yang diperiksa
Periksa retransmisi pada koneksi bermasalah dengan packet capture di sisi server atau bcc tcpretrans -s (menampilkan nomor urut), lalu periksa mss, pmtu, dan backoff koneksi itu dengan ss -ti. Dari server, kirim ping kecil dan ping 1.500 byte dengan DF aktif (ping -M do -s 1472) ke alamat pemain itu, lalu bandingkan
Cocok jika
Paket seukuran MSS penuh terus dikirim ulang dengan nomor urut yang sama dan interval yang berlipat dua, sedangkan paket yang lebih kecil lolos. ICMP ukuran terlampaui (filter Wireshark icmp.type == 3 and icmp.code == 4) tidak datang, dan ping kecil dibalas, tetapi ping DF besar hilang tanpa balasan
Tidak cocok jika
Paket kecil juga ikut hilang: packet loss yang tidak terkait ukuran (“Antrean bottleneck meluap”, “Perubahan rute dan jalur ECMP bermasalah”). ICMP ukuran terlampaui datang dan pmtu di ss -ti mengecil: path MTU discovery berjalan dengan benar
Sarana pemeriksaan
Tools infrastruktur (tanpa perlu kode game)
Pelajari lebih lanjut
tcp_mtu_probing=1 baru menganggap ada black hole dan menurunkan MSS ke 1.024 byte setelah timeout retransmisi berlangsung beberapa detik (setara dengan tcp_retries1=3). Selama itu koneksi berhenti, jadi jadikan opsi ini jaring pengaman terakhir dan dahulukan penyesuaian MSS yang mencegah masalah sejak awal.

Sumber

  1. RFC 1191: Path MTU discovery IETF
    Path MTU discovery: paket yang terlalu besar diberitahukan lewat ICMP “fragmentation needed and DF set” (tipe 3 kode 4)
  2. RFC 2923: TCP Problems with Path MTU Discovery IETF
    Masalah PMTU black hole, yaitu ICMP diblokir sehingga hanya paket besar yang terus hilang
  3. RFC 4821: Packetization Layer Path MTU Discovery IETF
    Cara lapisan transport menemukan ukuran paket tanpa ICMP (dasar tcp_mtu_probing di Linux)
  4. IP Sysctl Linux kernel
    tcp_mtu_probing: 0 nonaktif, 1 hanya saat black hole terdeteksi, 2 selalu (MSS awal adalah tcp_base_mss). Default tcp_retries1 adalah 3
  5. net/ipv4/tcp_timer.c Linux kernel
    Jika retransmisi RTO berlangsung sebanyak tcp_retries1, kernel menganggapnya sebagai black hole, mengaktifkan MTU probing, dan menurunkan MSS
  6. include/net/tcp.h Linux kernel
    TCP_BASE_MSS = 1.024 byte
  7. RFC 6298: Computing TCP's Retransmission Timer IETF
    Menggandakan RTO setiap kali timer retransmisi habis
  8. iptables-extensions(8) — Linux manual page netfilter
    TCPMSS --clamp-mss-to-pmtu: mengatasi paket besar yang tertahan di segmen yang memblokir ICMP dengan menyesuaikan MSS di SYN
  9. tcp(7) — Linux manual page Linux man-pages
    TCP_MAXSEG: ukuran segmen maksimum paket keluar; jika diatur sebelum koneksi dibuat, MSS yang diberitahukan ke pihak lawan juga berubah
  10. Network maximum transmission unit (MTU) for your EC2 instance AWS
    Internet gateway dan VPN memakai MTU 1.500; PMTUD membutuhkan ICMP tipe 3 kode 4, yang tidak akan diterima jika diblokir security group atau network ACL
  11. MTU considerations | Cloud VPN Google Cloud
    MTU gateway Cloud VPN 1.460 byte, MTU payload tunnel IPv4 1.406 byte (sekitar 1.400 jika melewati tunnel)
  12. Demonstrations of tcpretrans, the Linux eBPF/bcc version IO Visor
    Menampilkan satu baris untuk setiap retransmisi, dan -s juga menampilkan nomor urut paket yang dikirim ulang
  13. ss(8) — Linux manual page iproute2
    mss, pmtu (path MTU), dan backoff (berapa kali RTO digandakan) di ss -i
  14. ping(8) — Linux manual page iputils
    -M do mengaktifkan DF dan tidak mengirim paket yang lebih besar daripada path MTU yang diketahui kernel; -s adalah ukuran data (belum termasuk header ICMP 8 byte)
  15. Display Filter Reference: Internet Control Message Protocol Wireshark
    Filter tampilan icmp.type dan icmp.code

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