Sách trắng lag game › Tra theo triệu chứng
Dịch chuyển tức thời: 47 nguyên nhân và đội phụ trách
Tên gọi khác: warp, teleport, đứng im rồi nhảy sang chỗ khác
Mở từ điển triệu chứng gốc có hình minh họa →
Nhân vật nhảy thẳng tới một vị trí ở xa mà không thấy quá trình di chuyển.
Đối phương đang đứng yên một chỗ thì bỗng xuất hiện ở vị trí đã đi rất xa.
Thường có nghĩa là gói tin bị gián đoạn một lúc. Hãy xem mất gói, đường truyền đứt trong chốc lát, server đứng, ngoại suy sai. Nếu mọi người khác đều ổn mà chỉ một người bị nhảy thì nghi ngờ đường truyền của người đó trước.
Nguyên nhân gây ra triệu chứng này
L1 Tiến trình game phía client
- Ngoại suy quá mức (dead reckoning): Trong lúc không có gói tin, client cho đối tượng tiếp tục di chuyển theo vận tốc cuối cùng, rồi khi biết là sai thì kéo lại. (Phát triển client (Đội phát triển game))
L2 OS và thiết bị phía client
- Tràn bộ đệm nhận: Khi game bận và lấy gói tin ra khỏi socket (giao diện gửi nhận qua mạng do OS cung cấp) chậm, bộ đệm của OS bị tràn. (Phát triển client (Đội phát triển game))
- Wi-Fi quét nền: OS định kỳ chuyển qua các kênh để dò Wi-Fi xung quanh, và trong lúc đó việc truyền dữ liệu tạm dừng. (Bên ngoài (Bên ngoài))
L3 Mạng gia đình
- Nhiễu và sóng Wi-Fi yếu: Khi sóng yếu hoặc bị nhiễu, đoạn không dây phải gửi lại nhiều lần nên thời điểm gói tin đến lúc nhanh lúc chậm. (Bên ngoài (Bên ngoài))
- Bufferbloat (hàng đợi của router): Khi ai đó trong nhà tải video lên hoặc tải file lớn xuống, hàng đợi của router dồn lượng gói tin tương đương hàng trăm ms, và gói tin game cũng phải chờ phía sau. (Bên ngoài (Bên ngoài))
- Handover trạm phát sóng (khi đang di chuyển): Khi di chuyển bằng xe buýt hay tàu điện ngầm, kết nối bị gián đoạn trong lúc máy đổi trạm phát sóng. (Bên ngoài (Bên ngoài))
- Sóng di động yếu hoặc vùng lõm sóng: Trong thang máy, tầng hầm hay sâu bên trong tòa nhà, số lần truyền lại tăng, tốc độ giảm và cuối cùng mất kết nối. (Bên ngoài (Bên ngoài))
- Chuyển qua lại 5G↔LTE liên tục (vùng rìa phủ sóng 5G): Ở trong tòa nhà có sóng 5G yếu hoặc vùng rìa phủ sóng 5G, điện thoại liên tục chuyển qua lại giữa 5G và LTE, và mỗi lần chuyển ping lại vọt lên hoặc kết nối bị ngắt chốc lát. (Bên ngoài (Bên ngoài))
L4 Đường truyền Internet
- Internet vệ tinh (quỹ đạo thấp, địa tĩnh): Với Internet vệ tinh, sóng phải đi lên vũ trụ rồi quay về. Vệ tinh địa tĩnh chỉ riêng thời gian khứ hồi đã hơn 0,5 giây. Vệ tinh quỹ đạo thấp như Starlink bình thường thì nhanh, nhưng vào lúc tuyến đường được phân lại, độ trễ dao động và đôi khi kết nối đứt quãng trong chốc lát. (Bên ngoài (Bên ngoài))
- Nghẽn peering vào giờ cao điểm: Khoảng 9–11 giờ tối, lưu lượng video tăng vọt nên đoạn kết nối giữa các nhà mạng (peering) dễ bị nghẽn. (Hạ tầng mạng (Đội hạ tầng))
- Sự cố cáp quang biển, đường truyền quốc tế: Khi cáp quang biển bị đứt, dữ liệu phải đi vòng theo tuyến xa trong nhiều tuần (có khi nhiều tháng) cho đến khi sửa xong, và các đường truyền còn lại bị nghẽn. (Bên ngoài (Bên ngoài))
- Thay đổi tuyến BGP và hội tụ: Khi thông tin định tuyến trên Internet thay đổi, gói tin bị mất trong vài giây đến vài chục giây (hiếm khi vài phút) cho đến khi định tuyến hội tụ trở lại. (Hạ tầng mạng (Đội hạ tầng))
- Một đường ECMP bị lỗi: Nhà mạng và trung tâm dữ liệu thường có nhiều đường cùng đi tới một đích, và mỗi kết nối được gán cố định vào một đường. Nếu chỉ một đường bị hỏng, chỉ những người được gán vào đường đó liên tục bị lag. (Hạ tầng mạng (Đội hạ tầng))
- Nhà mạng giới hạn tốc độ và quản lý lưu lượng: Khi dùng vượt dung lượng data, hoặc với gói cước có quản lý một số loại lưu lượng, gói tin bị làm chậm hoặc bị bỏ. (Bên ngoài (Bên ngoài))
- Hạn chế UDP và kiểm tra gói tin ở cấp quốc gia hoặc nhà mạng: Một số mạng chặn một số địa chỉ và cổng UDP nhất định hoặc giới hạn tốc độ UDP, còn thiết bị kiểm tra gói tin thì lọc bỏ các giao thức mà nó không nhận ra. Game giao tiếp bằng UDP sẽ không kết nối được hoặc hay bị mất kết nối trên các mạng đó. (Bên ngoài (Bên ngoài))
- Chất lượng đường truyền kém: Đầu nối tiếp xúc kém, dây cũ hoặc modem trục trặc gây mất gói đều đặn và làm đường truyền bị ngắt theo chu kỳ. (Bên ngoài (Bên ngoài))
- Đường truyền dùng chung bị DDoS làm bão hòa: Các cuộc tấn công quy mô lớn nhắm vào công ty game, hoặc vào nơi khác trong cùng mạng, làm đầy đường truyền dùng chung. (Hạ tầng mạng (Đội hạ tầng))
- Đi qua VPN hoặc phần mềm tăng tốc game: Khi bật VPN hoặc phần mềm tăng tốc game, gói tin sẽ đi qua server trung chuyển của công ty đó. Nếu server trung chuyển ở xa hoặc đông, kết nối lại chậm hơn cả khi không bật. (Bên ngoài (Bên ngoài))
L5 Thiết bị mạng trung tâm dữ liệu
- Đi qua hệ thống chống DDoS, chặn nhầm: Để chặn tấn công, lưu lượng được chuyển qua trung tâm lọc DDoS nên tuyến đường dài ra, và đôi khi người chơi bình thường bị nhầm là kẻ tấn công và bị chặn. (Hạ tầng mạng (Đội hạ tầng))
- Microburst ở switch: Khi nhiều server cùng lúc gửi dồn gói tin tới hàng nghìn người, bộ đệm nhỏ của cổng switch nơi lưu lượng đó hội tụ sẽ tràn trong chưa tới 1 ms. (Phát triển server (Đội phát triển game))
- Đường truyền trung tâm dữ liệu bị bão hòa: Nếu việc phân phối bản cập nhật, gửi log, sao lưu dùng chung đường truyền với game thì đường truyền bị đầy. (Hạ tầng mạng (Đội hạ tầng))
- Cáp hỏng và lỗi cổng: Nếu module quang hoặc cáp bị lỗi, gói tin đi qua đường đó bị hỏng theo một tỷ lệ nhất định. (Hạ tầng mạng (Đội hạ tầng))
L6 Card mạng server
- Ngắt NIC dồn vào một core: Nếu NIC chỉ gửi ngắt báo gói tin đến cho một core CPU, core đó sẽ thành điểm nghẽn. (Hạ tầng server (Đội hạ tầng))
- Ring buffer không đủ: Nếu ring buffer, nơi NIC tạm giữ gói tin, quá nhỏ thì khi gói dồn đến trong tích tắc, bộ đệm sẽ tràn và gói bị bỏ. (Hạ tầng server (Đội hạ tầng))
- Vượt giới hạn PPS trên cloud: Server cloud có giới hạn số gói mỗi giây và băng thông theo từng loại instance, vượt quá thì gói bị bỏ âm thầm. (Hạ tầng server (Đội hạ tầng))
- Băng thông NIC bị bão hòa: Khi dùng tới giới hạn của card 1 Gbps hay 10 Gbps, hàng đợi gửi dài ra và cuối cùng gói bị bỏ. (Phát triển server (Đội phát triển game))
- Bảo trì host cloud và live migration: Khi nhà cung cấp cloud bảo trì server vật lý (host), họ chuyển máy ảo sang host khác (live migration) hoặc tạm dừng máy ảo một lúc. Trong lúc đó cả server bị đứng, nếu thời gian dừng dài thì kết nối bị ngắt. (Hạ tầng server (Đội hạ tầng))
L7 OS server (kernel)
- Bộ đệm socket của kernel quá nhỏ: Khi bộ đệm gửi và nhận nhỏ, lúc lưu lượng dồn thành burst, gói UDP nhận về sẽ bị bỏ, còn việc gửi qua TCP bị chặn vì bộ đệm hết chỗ. (Hạ tầng server (Đội hạ tầng))
- Bảng conntrack của server bị đầy: Khi bảng theo dõi kết nối (conntrack), nơi tường lửa Linux ghi lại mọi kết nối, chạm giới hạn, gói tin mới sẽ bị bỏ. (Hạ tầng server (Đội hạ tầng))
L8 Socket và giao thức
- Chính sách xử lý client chậm (slow consumer): Với client mà dữ liệu cần gửi cứ dồn lên mãi, server bỏ bớt các bản cập nhật cũ hoặc ngắt kết nối. (Phát triển server (Đội phát triển game))
- Phân mảnh IP của gói UDP: 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ỏ. (Phát triển server (Đội phát triển game))
L9 Tiến trình game phía server
- Broadcast bùng nổ: Gửi chuyển động của một người cho tất cả những ai nhìn thấy người đó thì số bản cập nhật phải gửi tăng theo bình phương số người tụ tập. (Phát triển server (Đội phát triển game))
- Bản cập nhật làm thay đổi mô hình lưu lượng: Khi nội dung, hiệu ứng hoặc trường đồng bộ mới làm tăng kích thước và tần suất gói tin, server đang chạy tốt bắt đầu chạm giới hạn MTU, băng thông và số gói kể từ sau bản cập nhật. (Phát triển server (Đội phát triển game))
Thiết kế đồng bộ
- Client có thẩm quyền: Nếu mỗi client tự quyết định kết quả của mình, màn hình của bạn mượt mà nhưng kết quả lệch với màn hình người khác và dễ bị hack. (Phát triển server (Đội phát triển game))
- Rollback netcode dự đoán sai: Game dự đoán input của đối thủ để hiển thị trước, nếu sai thì quay ngược lại và tính lại. Ping càng lớn thì khoảng quay ngược càng lớn. (Phát triển client (Đội phát triển game))
- Tính toán đường đi không khớp khi đồng bộ lệnh: Nếu hai bên chỉ trao đổi “đi tới đây” còn đường đi thì mỗi bên tự tính, chỉ cần tính lệch một chút là nhân vật hay quái sẽ đi theo đường khác rồi bị kéo về chỗ cũ. (Phát triển server (Đội phát triển game))
- Tần suất gửi snapshot thấp: Nếu server chỉ gửi bản cập nhật vị trí (snapshot) vài lần trong 1 giây, bộ đệm nội suy phải đặt dài tương ứng, nên bạn thấy các nhân vật khác ở quá khứ xa hơn. (Phát triển server (Đội phát triển game))
Sự cố chỉ một số người gặp
- Người chơi chậm di chuyển dồn cục trên màn hình người khác: Input của người có đường truyền kém tới server lúc thưa lúc dồn. Nếu server áp dụng đúng số lượng nhận được ở mỗi tick, trong mắt người khác nhân vật đó sẽ khựng lại rồi đi một lúc nhiều bước. (Phát triển server (Đội phát triển game))
- Quyền điều khiển quái nằm ở client chậm: Có những game giao việc tính di chuyển của quái cho client của một người chơi ở gần để giảm tải server. Nếu đường truyền của người đó kém, con quái đó di chuyển kỳ lạ trên màn hình của mọi người. (Phát triển server (Đội phát triển game))
- Mất snapshot gốc (baseline): Với cách server chỉ gửi “những gì khác so với lần trước”, nếu mất thông tin đầy đủ (bản gốc) gửi một lần lúc đầu thì các phần thay đổi sau đó không thể áp dụng được. (Phát triển server (Đội phát triển game))
Nguyên nhân gốc của truyền lại TCP
- Mất gói ở chặng không dây: Wi-Fi và mạng di động tự truyền lại vài lần trên chặng không dây, nếu vẫn không được thì bỏ gói tin. Gói đã bị bỏ phải đợi khá lâu sau đó TCP mới gửi lại. (Bên ngoài (Bên ngoài))
- Burst gửi làm tràn bộ đệm nhỏ: Mỗi tick, nếu server dồn bản cập nhật cho hàng nghìn người rồi gửi đi trong một khoảnh khắc, bộ đệm nhỏ của switch hoặc giới hạn tức thời của cloud sẽ tràn trong chưa đầy 1 ms và một phần gói tin bị bỏ. (Phát triển server (Đội phát triển game))
- Policer bỏ phần vượt mức: Gói cước của nhà mạng, giới hạn của instance cloud và thiết bị chống DDoS đôi khi bỏ ngay các gói vượt tốc độ quy định mà không đưa vào hàng đợi. (Hạ tầng mạng (Đội hạ tầng))
- Lỗi vật lý (cáp, module quang, đầu nối hỏng): Cáp bị hỏng, đầu nối quang bám bụi, module quang hết tuổi thọ sẽ gây lỗi bit, và thiết bị âm thầm bỏ các gói bị hỏng. (Hạ tầng mạng (Đội hạ tầng))
- Host server nhận bỏ gói tin: Gói tin đã đến được server nhưng bị bỏ vì ring buffer của NIC (bộ đệm tạm giữ gói tin vừa đến) bị tràn, hoặc core xử lý nhận gói của kernel bị bão hòa. (Hạ tầng server (Đội hạ tầng))
- Thiết bị trung gian vượt giới hạn xử lý (tường lửa, IPS, chống DDoS): Tường lửa, thiết bị chống xâm nhập (IPS) và thiết bị chống DDoS kiểm tra từng gói tin đi qua. Từ lúc vượt năng lực kiểm tra, thiết bị bỏ những gói không xử lý kịp. (Hạ tầng mạng (Đội hạ tầng))
- Đổi tuyến đường hoặc tuyến ECMP lỗi: Gói tin biến mất trong vài giây lúc tuyến đường Internet thay đổi, hoặc trên kết nối được gán vào tuyến lỗi trong số nhiều tuyến ECMP. (Hạ tầng mạng (Đội hạ tầng))
Xem từ điển triệu chứng gốc có hình minh họa