Khi MTU (kích thước gửi được trong một lần) của một chặng ở giữa nhỏ đi mà thông báo vượt kích thước lại bị chặn, chỉ các gói lớn liên tục bị mất.
Vì sao MTU nhỏ đi ở chặng tunnel hoặc VPN → Dẫn đến Thông báo vượt kích thước (ICMP) bị tường lửa chặn nên bên gửi không biết → Trên màn hình Chỉ khi mở màn hình lớn như túi đồ, danh sách nhân vật thì đứng hình rồi mất kết nối
Khi làm một thao tác nhất định, Ngay sau đăng nhập hoặc bảo trì
Phụ trách
Phụ trách chính Hạ tầng mạng (Đội hạ tầng) · Phối hợp Hạ tầng server (Đội hạ tầng), Phát triển server (Đội phát triển game)
Việc cần làm (Đội phát triển game)
Nếu muốn giảm trực tiếp từ phía server thì đặt kích thước segment tối đa (TCP_MAXSEG) cho socket, vì chỉ chia nhỏ message trong code game thì không tránh được; giữ gói UDP ở mức 1.200 byte trở xuống.
Việc cần làm (Đội hạ tầng)
Mạng: giảm kích thước gói TCP ở chặng tunnel (điều chỉnh MSS), cho phép thông báo vượt kích thước (ICMP) trên tường lửa và network ACL của cloud. Thiết bị server·OS: cho phép thông báo vượt kích thước (ICMP) cả trên tường lửa server và security group của cloud, bật dò MTU của kernel server (tcp_mtu_probing=1), đây là lưới an toàn cuối cùng vì chỉ hoạt động sau khi đã đứng vài giây.
Con số tham khảo
Thường là 1.500 byte, đi qua tunnel thì giảm còn khoảng 1.400.
Trên đồ thị
Chỉ một phần cao · Mất kết nối theo khu vực, nhà mạng, phản hồi lớn thất bại
Chỗ cần xem
Từ PC của người chơi gặp vấn đề, gửi ping bật cờ không phân mảnh (DF) tới server với nhiều kích thước khác nhau. Windows: ping /f /l 1472 SERVER_IP, Linux: ping -M do -s 1472 SERVER_IP (1.472 là MTU 1.500 trừ 20 byte header IP và 8 byte header ICMP). Giảm dần kích thước để tìm kích thước lớn nhất đi qua được, và kiểm tra security group, tường lửa phía server có cho phép thông báo vượt kích thước ICMP (Fragmentation Needed) không
Đúng nếu
ping nhỏ đi được nhưng ping DF 1.472 byte thất bại (không phản hồi hoặc báo lỗi cần phân mảnh), và kích thước lớn nhất đi qua được nhỏ, khoảng 1.400. Người chơi cùng khu vực chỉ đứng hình khi mở màn hình lớn
Loại trừ nếu
ping DF 1.472 byte vẫn đi tốt → không phải vấn đề path MTU; ping nhỏ cũng không đi → bản thân ICMP bị chặn, cách này không kết luận được
Cách kiểm tra
Kiểm tra ở môi trường phía người chơi
Nguồn
RFC 2923: TCP Problems with Path MTU DiscoveryIETF Nếu tường lửa chặn ICMP (Fragmentation Needed), dò path MTU thất bại và chỉ gói lớn liên tục bị mất (black hole); ping và giao tiếp nhỏ vẫn chạy nên khó chẩn đoán
IP SysctlLinux kernel tcp_mtu_probing=1 bình thường tắt, chỉ bật dò path MTU của TCP khi phát hiện ICMP black hole
ping(8) — Linux manual pageiputils -M do bật cờ DF và từ chối gói lớn hơn path MTU, -s chỉ định kích thước dữ liệu (mặc định 56 byte, cộng 8 byte header ICMP)
pingMicrosoft /f bật cờ DF để tìm vấn đề path MTU, /l chỉ định kích thước dữ liệu