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

Sách trắng lag game › L8 Socket và giao thức

Phân mảnh IP của gói UDP IP fragmentation of large UDP

ID nguyên nhân sk-fragment · Phụ trách chính Phát triển server (Đội phát triển game)

Mở thẻ gốc có hình minh họa và thí nghiệm →

Gói UDP lớn hơn MTU (kích thước tối đa gửi được trong một lần) bị phân mảnh ở tầng IP, và chỉ cần mất một fragment là cả gói bị bỏ.

Vì sao Snapshot ở nơi đông người vượt quá 1.500 byte → Dẫn đến Gói bị chia thành nhiều fragment để gửi, mất một fragment là bỏ cả gói → Trên màn hình Gói lớn có tỷ lệ mất cao gấp mấy lần. Chỉ bị dịch chuyển tức thời ở nơi đông người

Triệu chứng
Dịch chuyển tức thời
Yếu tố
Mất gói
Ai gặp phải
Một địa điểm hoặc kênh, Một khu vực hoặc nhà mạng
Khi nào
Khi đông người
Phụ trách
Phụ trách chính Phát triển server (Đội phát triển game)
Việc cần làm (Đội phát triển game)
Tự chia gói xuống từ 1.200 byte trở xuống, chỉ gửi phần thay đổi.
Con số tham khảo
Trên đường truyền mất gói 2%, gói bị chia thành 4 fragment sẽ mất khoảng 8%. Có tường lửa và nhà mạng bỏ hẳn gói bị phân mảnh, nên người chơi dùng mạng đó không nhận được gói lớn nào.
Trên đồ thị
Tăng theo số người và tải · Số lần phân mảnh IP (IpFragCreates), kích thước snapshot
Chỗ cần xem
Trên server, xem mức tăng IpFragCreates (số fragment tạo ra khi gửi) trong nstat -az; ở bên nhận, xem IpReasmFails (số lần ghép lại thất bại). Kiểm tra phân bố kích thước gói UDP qua log server game hoặc bản bắt gói (packet capture)
Đúng nếu
IpFragCreates tăng ở nơi đông người, có gói UDP lớn hơn 1.500 byte, và cùng lúc đó số báo cáo dịch chuyển tức thời tăng
Loại trừ nếu
IpFragCreates không tăng (phía gửi của server không có phân mảnh)
Cách kiểm tra
Kiểm tra bằng công cụ hạ tầng (không cần code game)

Nguồn

  1. RFC 8085: UDP Usage Guidelines IETF
    Mất một fragment thì không ghép lại được và mất cả gói; ứng dụng UDP nên tránh phân mảnh IP
  2. RFC 8900: IP Fragmentation Considered Fragile IETF
    Các trường hợp tường lửa và một số mạng bỏ fragment IP
  3. net/ipv4/proc.c (Linux v6.12) Linux kernel
    Tên bộ đếm mà nstat hiển thị: FragCreates (số fragment đã tạo) và ReasmFails (số lần ghép lại thất bại) trong nhóm Ip

Nguyên nhân nên xem cùng

Cùng tầng: L8 Socket và giao thức

Nguyên nhân ở tầng khác gây cùng triệu chứng (Dịch chuyển tức thời)

Xem thẻ gốc có hình minh họa và thí nghiệm