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)
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
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
Netfilter Conntrack Sysfs variablesLinux 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)