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

Sách trắng lag game › Nguyên nhân gốc của truyền lại TCP

Đổi tuyến đường hoặc tuyến ECMP lỗi Route change / bad ECMP member

ID nguyên nhân rt-path · Phụ trách chính Hạ tầng mạng (Đội hạ tầng) · Phối hợp Phát triển server (Đội phát triển game), Bên ngoài (Bên ngoài)

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

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.

Vì sao BGP tính lại tuyến đường, hoặc thiết bị hay đường truyền của một tuyến trong số nhiều tuyến (ECMP, LAG) bị lỗi → Dẫn đến Mất gói tạm thời trong lúc chuyển tuyến, hoặc chỉ kết nối đi tuyến đó bị mất gói đều đặn → Trên màn hình Đột nhiên đứng hình vài giây rồi tua nhanh, hoặc “kết nối lại thì đỡ” (được gán sang tuyến khác)

Triệu chứng
Đứng hình, Tua nhanh, Dịch chuyển tức thời
Yếu tố
Mất gói
Ai gặp phải
Một khu vực hoặc nhà mạng
Khi nào
Thỉnh thoảng bất chợt
Phụ trách
Phụ trách chính Hạ tầng mạng (Đội hạ tầng) · Phối hợp Phát triển server (Đội phát triển game), Bên ngoài (Bên ngoài)
Việc cần làm (Đội phát triển game)
Ghi lại thống kê truyền lại theo từng kết nối (TCP_INFO) để có thể lọc ra IP, cổng và thời điểm của người gặp lỗi; không ngắt ngay kết nối bị đứng vài giây.
Việc cần làm (Đội hạ tầng)
Giám sát tỷ lệ truyền lại theo khu vực và nhà mạng, kiểm tra kết nối lại có làm đổi tuyến không, có đường truyền của nhiều nhà mạng, kiểm tra link lỗi trong các tuyến ECMP và LAG trên thiết bị của mình, đo tuyến đường cũng bằng cùng cổng TCP với game (mtr --tcp --port; tuyến đường được chọn theo địa chỉ và cổng nên ping thông thường có thể đi tuyến khác và cho kết quả bình thường).
Việc cần làm (Bên ngoài)
Báo tuyến lỗi cho nhà mạng, đính kèm kết quả đo tuyến đường bằng cùng cổng TCP và bản so sánh trước và sau khi kết nối lại.
Trên đồ thị
Tăng như bậc thang từ một thời điểm · RTT (ping), tỷ lệ truyền lại theo khu vực hoặc nhà mạng
Chỗ cần xem
Gom truyền lại theo từng kết nối bằng bcc tcpretrans -c để lọc ra địa chỉ và cổng của người chơi gặp lỗi; chạy mtr bằng cùng cổng TCP với game (mtr -T -P PORT) theo cả hai chiều, từ server tới người chơi và từ người chơi tới server, rồi so sánh. So sánh cả kết quả trước và sau khi kết nối lại
Đúng nếu
từ một thời điểm, RTT của một khu vực hoặc nhà mạng đổi theo kiểu bậc thang và mất gói dồn lại trong vài giây; hoặc ngay trong cùng nhà mạng, chỉ một số kết nối (tổ hợp địa chỉ và cổng) truyền lại đều đặn và kết nối lại thì đỡ. Có khi ping thông thường vẫn bình thường mà chỉ mtr TCP mới thấy mất gói
Loại trừ nếu
mọi kết nối của nhà mạng đó cùng xấu đi vào giờ cao điểm buổi tối → “Tràn hàng đợi ở điểm nghẽn”. Chỉ một người chơi bị và mất gói ngay từ ping tới router → “Mất gói ở chặng không dây”
Cách kiểm tra
Kiểm tra bằng công cụ hạ tầng (không cần code game)
Sự cố thực tế
Cloudflare 2020: Cloudflare: lỗi cấu hình backbone làm mất lưu lượng ở một số thành phố

Nguồn

  1. RFC 2991: Multipath Issues in Unicast and Multicast Next-Hop Selection IETF
    Mô tả việc kết quả của các công cụ chẩn đoán như ping, traceroute khó tin cậy khi có nhiều tuyến song song, và cách hash luồng để cố định tuyến đường
  2. RFC 2992: Analysis of an Equal-Cost Multi-Path Algorithm IETF
    ECMP chọn tuyến tiếp theo bằng hash của các trường header dùng để phân biệt luồng (cùng luồng thì cùng tuyến)
  3. tcp(7) — Linux manual page Linux man-pages
    TCP_INFO: truy vấn trạng thái của từng socket (struct tcp_info)
  4. mtr(8) manual page source mtr
    -T (--tcp) dùng TCP SYN thay cho ICMP, -P (--port) chỉ định cổng đích
  5. Demonstrations of tcpretrans, the Linux eBPF/bcc version IO Visor
    Hiển thị mỗi lần truyền lại trên một dòng kèm địa chỉ, cổng của phía bên kia; -c đếm tổng số lần truyền lại theo từng luồng

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

Cùng tầng: Nguyên nhân gốc của truyền lại TCP

Nguyên nhân ở tầng khác gây cùng triệu chứng (Đứng hình)

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