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

Sách trắng lag game › L5 Thiết bị mạng trung tâm dữ liệu

Bảng phiên của tường lửa bị đầy Firewall session table exhaustion

ID nguyên nhân dc-firewall · 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), Phát triển client (Đội phát triển game)

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

Tường lửa ghi mọi kết nối đã cho đi qua vào bảng phiên để theo dõi. Khi bảng đầy, tường lửa không nhận thêm được kết nối mới.

Vì sao Số phiên chạm giới hạn do kết nối dồn dập hoặc bị tấn công → Dẫn đến Không còn mục trống để ghi kết nối mới nên kết nối bị từ chối → Trên màn hình Người đang cố vào game thì không vào được·kẹt loading, một số kết nối hiện có cũng bị mất kết nối

Triệu chứng
Không vào được·kẹt loading, Mất kết nối
Yếu tố
Mất gói
Ai gặp phải
Cả server
Khi nào
Ngay sau đăng nhập hoặc bảo trì, Khi đông người
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), Phát triển client (Đội phát triển game)
Việc cần làm (Đội phát triển game)
Server: dùng hệ thống hàng chờ đăng nhập để điều tiết lượng kết nối dồn đến cùng lúc, tái sử dụng kết nối thay vì mở kết nối ngắn lặp đi lặp lại, chủ động dọn các kết nối đã mất heartbeat (để kết nối chết không chiếm bảng phiên quá lâu). Client: gửi heartbeat với khoảng cách không quá một nửa idle timeout ngắn nhất, mất kết nối thì tự động kết nối lại nhưng tăng dần khoảng chờ giữa các lần thử và rải ngẫu nhiên (để không dồn lại cùng lúc).
Việc cần làm (Đội hạ tầng)
Tăng kích thước bảng phiên, dọn nhanh các kết nối kết thúc sớm (rút ngắn timeout của phiên đã đóng), khi giảm idle timeout của phiên thì báo giá trị đó cho đội phát triển game để chỉnh khoảng cách heartbeat, chặn tấn công, cảnh báo theo mức sử dụng số phiên.
Trên đồ thị
Chạm giới hạn rồi đi ngang · Số phiên của tường lửa, số kết nối mới thất bại
Chỗ cần xem
Vẽ số phiên đồng thời của tường lửa cùng với giới hạn phiên, và tìm trong log thiết bị các bản ghi bỏ gói vì không tạo được phiên. Với tường lửa Linux, so sánh nf_conntrack_count với nf_conntrack_max và tìm “nf_conntrack: table full, dropping packet” trong dmesg; với instance AWS, xem conntrack_allowance_exceeded trong ethtool -S
Đúng nếu
từ lúc số phiên đi ngang ở mức giới hạn, số kết nối mới thất bại tăng, đồng thời bản ghi tạo phiên thất bại hoặc bộ đếm gói bị bỏ cũng tăng
Loại trừ nếu
số phiên còn cách xa giới hạn mà vẫn không vào được → xem “Tràn hàng đợi kết nối (backlog)” hoặc phía server đăng nhập; chỉ kết nối nhàn rỗi bị ngắt → xem “Hết hạn theo dõi kết nối của security group trên cloud”
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. Netfilter Conntrack Sysfs variables Linux kernel
    Số mục tối đa của bảng theo dõi kết nối (nf_conntrack_max), thời gian giữ kết nối đang đóng (TIME_WAIT, FIN_WAIT mặc định 120 giây), TCP đã thiết lập mặc định 5 ngày, số mục hiện tại (nf_conntrack_count)
  2. Amazon EC2 security group connection tracking AWS
    Vượt số kết nối có thể theo dõi trên mỗi instance thì gói của kết nối mới bị bỏ; kết nối nhàn rỗi có thể làm cạn bảng theo dõi
  3. Infrastructure layer attacks AWS
    Các cuộc tấn công như SYN flood giữ chặt tài nguyên của server, tường lửa, bộ cân bằng tải
  4. net/netfilter/nf_conntrack_core.c (Linux v6.12) Linux kernel
    Khi bảng theo dõi kết nối đầy, kernel ghi “nf_conntrack: table full, dropping packet” và bỏ gói của kết nối mới
  5. Monitor network performance for ENA settings on your EC2 instance AWS
    conntrack_allowance_exceeded: số gói bị bỏ do vượt giới hạn theo dõi kết nối của instance, xem bằng ethtool -S

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

Cùng tầng: L5 Thiết bị mạng trung tâm dữ liệu

Nguyên nhân ở tầng khác gây cùng triệu chứng (Không vào được·kẹt loading)

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