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

Sách trắng lag game › L3 Mạng gia đình

Ánh xạ NAT hết hạn NAT mapping timeout

ID nguyên nhân hn-nat · Phụ trách chính Phát triển client (Đội phát triển game) · Phối hợp 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 →

Router xóa khỏi bảng NAT các kết nối nhàn rỗi không có gói tin qua lại trong một thời gian. Đây là nguyên nhân phổ biến khiến người chơi đứng yên một lúc, vừa di chuyển là mất kết nối.

Vì sao Router ghi kết nối “thiết bị bên trong ↔ server bên ngoài” vào bảng NAT (bảng chuyển đổi địa chỉ) → Dẫn đến Không có gói tin trong một thời gian thì bị xóa khỏi bảng (với UDP thường là 30–120 giây) → Trên màn hình Gói tin từ server không vào được trong nhà nên mất kết nối

Triệu chứng
Mất kết nối
Yếu tố
Mất gói
Ai gặp phải
Chỉ mình tôi, Cùng một nhà
Khi nào
Sau khi để yên một lúc
Phụ trách
Phụ trách chính Phát triển client (Đội phát triển game) · Phối hợp Phát triển server (Đội phát triển game)
Việc cần làm (Đội phát triển game)
Client: gửi heartbeat với khoảng cách không quá một nửa idle timeout ngắn nhất (ánh xạ UDP chỉ chắc chắn được làm mới bởi gói đi ra từ trong nhà, nên client phải là bên gửi), mất kết nối thì tự kết nối lại. Server: phản hồi heartbeat, không nhận được trong một khoảng thời gian thì chủ động dọn kết nối trước; khi ánh xạ bị xóa khiến địa chỉ và cổng bên ngoài đổi, dùng session token (mã xác nhận nhận được lúc kết nối) để xác nhận vẫn là người chơi đó và nối tiếp.
Trên đồ thị
Rớt kết nối hàng loạt · Số lần mất kết nối (heartbeat timeout), thời gian nhàn rỗi trước khi mất kết nối
Chỗ cần xem
Thu thập lý do ngắt kết nối phía server và thời gian đã trôi qua kể từ gói tin cuối cùng trên kết nối đó trước khi ngắt (thời gian nhàn rỗi), rồi xem phân bố. Để thử nghiệm, tăng dần khoảng cách gửi gói UDP lên 30 giây, 60 giây, 120 giây và đo xem ở khoảng nào thì không còn phản hồi
Đúng nếu
chỉ kết nối đang nhàn rỗi mới bị ngắt, và thời gian nhàn rỗi dồn ngay sau một giá trị nhất định trong khoảng 30–120 giây. Rút khoảng cách heartbeat ngắn hơn giá trị đó thì hết
Loại trừ nếu
đang di chuyển cũng mất kết nối → phía đường truyền hoặc tuyến đường. Chỉ ở một nhà mạng di động nhất định mà dồn vào giá trị ngắn → “IP dùng chung của nhà mạng (CGNAT)”
Cách kiểm tra
Cần log và chỉ số của server, client game

Nguồn

  1. RFC 4787: Network Address Translation (NAT) Behavioral Requirements for Unicast UDP IETF
    Timer ánh xạ UDP không được hết hạn trước 2 phút, khuyến nghị mặc định từ 5 phút; làm mới bằng gói đi ra từ bên trong là bắt buộc, làm mới bằng gói đi vào từ bên ngoài là tùy chọn
  2. An Experimental Study of Home Gateway Characteristics (IMC 2010) ACM
    Đo 34 mẫu router gia đình: ánh xạ UDP được giữ 30–691 giây, trung vị 90 giây, hơn một nửa dưới 2 phút; với TCP trung vị khoảng 60 phút
  3. RFC 9308: Applicability of the QUIC Transport Protocol IETF
    Trên Internet có NAT dọc đường, keep-alive khoảng 30 giây một lần là hợp lý; dày hơn thì lãng phí lưu lượng và điện năng

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

Cùng tầng: L3 Mạng gia đình

Nguyên nhân ở tầng khác gây cùng triệu chứng (Mất kết nối)

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