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)
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
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
RFC 1191: Path MTU discoveryIETF Path MTU discovery: paket yang terlalu besar diberitahukan lewat ICMP “fragmentation needed and DF set” (tipe 3 kode 4)
IP SysctlLinux 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
net/ipv4/tcp_timer.cLinux kernel Jika retransmisi RTO berlangsung sebanyak tcp_retries1, kernel menganggapnya sebagai black hole, mengaktifkan MTU probing, dan menurunkan MSS
iptables-extensions(8) — Linux manual pagenetfilter TCPMSS --clamp-mss-to-pmtu: mengatasi paket besar yang tertahan di segmen yang memblokir ICMP dengan menyesuaikan MSS di SYN
tcp(7) — Linux manual pageLinux man-pages TCP_MAXSEG: ukuran segmen maksimum paket keluar; jika diatur sebelum koneksi dibuat, MSS yang diberitahukan ke pihak lawan juga berubah
ss(8) — Linux manual pageiproute2 mss, pmtu (path MTU), dan backoff (berapa kali RTO digandakan) di ss -i
ping(8) — Linux manual pageiputils -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)