APPLICATION & LOAD

Kiểm thử SYN backlog và SYN cookie: dịch vụ còn phục vụ được dưới connection flood?

17/8/2026 · 16 phút

Client hợp lệ và nguồn SYN flood đi qua firewall load balancer tới cụm máy chủ với điểm đo handshake
Mục lục bài viết 9 phần

Server có thể trả SYN-ACK trong lúc người dùng vẫn không đăng nhập được vì half-open queue, accept queue, state table hoặc worker pool đã nghẽn. Kiểm thử connection flood phải theo dõi từ TCP handshake tới giao dịch hoàn tất và recovery, không dùng một counter SYN cookie làm kết luận an toàn.

ĐỌC NHANH

Bài viết giúp bạn

  • Connection flood cần chứng minh điều gì
  • Topology và ranh giới an toàn
  • Traffic profile và biến số phải khóa
Tùy chỉnh đọc
01

Connection flood cần chứng minh điều gì

#

TCP server nhận SYN, tạo hoặc mã hóa trạng thái, trả SYN-ACK rồi chờ ACK cuối. Sau handshake, kết nối còn phải vào accept queue, được process/thread/event loop nhận và xử lý request. Nghẽn ở bất kỳ tầng nào đều có thể làm dịch vụ thất bại dù packet capture cho thấy ba bước handshake hoàn tất.

RFC 4987 mô tả nhiều biện pháp chống TCP SYN flooding và trade-off, trong đó SYN cache/cookie là các lựa chọn khác nhau. SYN cookie giúp giảm state trong một số điều kiện nhưng không thay capacity của firewall, load balancer, NIC, CPU, TLS handshake hay application worker.

Định nghĩa mục tiêu theo traffic hợp lệ: trong khi offered SYN rate không mong muốn tăng, tỷ lệ người dùng hợp lệ kết nối và hoàn tất giao dịch phải nằm trong SLO; sau khi flood dừng, dịch vụ phục hồi trong budget và không để backlog/state rò rỉ.

02

Topology và ranh giới an toàn

#

Topology đại diện gồm legitimate client generator, flood generator cô lập, router/firewall/DDoS control nếu có, load balancer, nhiều backend và transaction endpoint. Capture trước/sạu mỗi enforcement point; thu NIC/interface counter, conntrack/state, SYN backlog, listen/accept queue, CPU, memory, worker và application latency.

Chỉ chạy trong lab hoặc môi trường được phê duyệt, dùng địa chỉ/đường truyền cô lập, rate cap và stop condition. Không dùng source spoofing ra Internet. Nếu test anti-spoofing, thực hiện trong broadcast domain khép kín với sink rõ ràng.

Đặt service transaction đơn giản nhưng có ý nghĩa: TCP connect, TLS handshake nếu production dùng TLS, HTTP request và response marker. Một health endpoint tĩnh có thể che dependency; thêm ca đại diện authentication/database nhưng giới hạn để khoanh vùng.

Minh họa: Topology và ranh giới an toàn
Minh họa: Topology và ranh giới an toàn
03

Traffic profile và biến số phải khóa

#

Legitimate profile cần mô tả client count, new connection rate, keep-alive/reuse, TLS resumption, request rate, payload và think time. Flood profile thay đổi SYN rate, source cardinality, source validity, port spread, MSS/options và burst duration. Không gọi mọi lượng SYN cao là tấn công; một reconnect storm hợp lệ có thể tạo pattern tương tự.

Khóa kernel/OS, backlog sysctl, syncookie mode, conntrack, firewall policy, LB algorithm, health check, backend count, NIC offload, CPU pinning và application limit. Với cloud/managed service, ghi tier/quota và feature version thay vì suy đoán cấu hình hạ tầng.

Chạy steady flood, ramp, microburst và on/off wave. Tách SYN không hoàn tất, TCP connect rồi đóng, TLS handshake flood và request flood vì chúng tiêu thụ tài nguyên khác nhau. Bài SYN chỉ kết luận được phạm vi SYN/connection establishment.

04

KPI từ SYN đến giao dịch ứng dụng

#

KPI packet/TCP gồm SYN received, SYN-ACK sent, retransmission, handshake completion, reset, timeout và connect latency. KPI system gồm backlog occupancy/drop, syncookie sent/validated/failed, conntrack/state usage, CPU softirq, interrupt, socket memory và accept rate. KPI application gồm transaction success, p95/p99 latency, error code, throughput và dependency saturation.

Tầng · KPI · Bằng chứng · Sai lầm thường gặp Edge · SYN pass/drop · Capture + counter · Counter gộp nhiều policy TCP · Handshake success/latency · Client log + pcap · Chỉ đếm SYN-ACK Kernel · Backlog/cookie/state · OS telemetry · Cookie tăng = dịch vụ khỏe LB · Active/pending connection · LB telemetry · Health check vẫn xanh App · Transaction success/p99 · Correlation ID · Connect pass nhưng request fail Recovery · Time về baseline · Time series · Dừng tải là kết thúc test

Pass/fail phải ưu tiên legitimate traffic. Ví dụ, không quá X% connect failure và p99 trong budget với legitimate profile, trong khi flood đạt profile đã chốt. X là yêu cầu dịch vụ, không lấy từ RFC.

05

Ma trận mitigation và failure mode

#

Thử baseline không flood, flood dưới/ngang/trên ngưỡng và từng mitigation riêng. Nếu có scrubbing hoặc SYN proxy, xác nhận đường đi, source attribution, MSS/options và health behavior; proxy có thể thay đổi semantics quan sát được ở backend.

Tình huống · Biến · Điều cần đo · Rủi ro Baseline · Legitimate only · SLO và headroom · Baseline đã nghẽn Ramp SYN · SYN/s tăng dần · Điểm bắt đầu loss/latency · Cliff behavior Burst · Peak ngắn · Queue/drop window · Average che microburst SYN cookie · Off/on theo lab · Legitimate success, options · Trade-off/compatibility SYN proxy · Edge xử lý handshake · End-to-end success · Edge khỏe, backend nghẽn Backend loss · Một node down · LB redistribution · Retry amplification Recovery · Dừng flood · Drain, state, latency · State tồn dư Reconnect storm · Client thật cùng lúc · Fairness/rate limit · Chặn người dùng hợp lệ

06

Test plan theo pha

#

Pha A hiệu chuẩn legitimate traffic và xác nhận capture/counter. Pha B ramp SYN rate chậm để tìm knee. Pha C giữ legitimate traffic, chạy burst/on-off. Pha D bật từng mitigation đã phê duyệt. Pha E gây mất backend/edge failover. Pha F dừng flood và theo dõi tới khi mọi KPI về baseline.

Tìm bottleneck đầu tiên, không chỉ giá trị lớn nhất. Nếu edge drop tăng nhưng legitimate SLO vẫn tốt, mitigation có thể đúng. Nếu backend SYN giảm mà TLS/app CPU tăng, vector đã chuyển tầng. Nếu connect success tốt nhưng p99 giao dịch xấu, cần bài test application/dependency riêng.

  • Đặt hard rate cap, thời lượng và abort threshold.
  • Chạy legitimate profile trước ít nhất vài cửa sổ ổn định.
  • Gắn test ID/correlation cho client hợp lệ.
  • Ramp flood theo bậc; giữ mỗi bậc đủ đo percentile.
  • Thu packet, OS, LB, application và dependency telemetry cùng clock.
  • Lặp với frame/TCP options và source cardinality đã chọn.
  • Bật một mitigation mỗi lần; ghi cấu hình/version.
  • Thử backend removal và edge failover có kiểm soát.
  • Dừng flood; đo drain, state cleanup và SLO recovery.
  • So raw evidence, lập causal timeline và verdict.
Minh họa: Test plan theo pha
Minh họa: Test plan theo pha
07

Runbook quan sát và phục hồi

#

Dashboard sự cố cần tách legitimate/flood traffic khi có thể, hiển thị handshake completion, backlog/state pressure, application success và recovery. Alert chỉ trên SYN rate dễ báo giả khi deploy, outage hoặc client reconnect; tương quan với completion ratio và source/ASN/geo theo chính sách dữ liệu.

Runbook gồm kiểm tra saturation, kích hoạt mitigation theo thẩm quyền, xác nhận route/policy, theo dõi false positive và rollback. Sau sự cố, lưu window trước–trong–sau, không xóa counter quá sớm. Kiểm tra state đã drain và capacity trở lại trước khi đóng incident.

Không thay đổi kernel/network protection trên diện rộng chỉ dựa vào một benchmark. Cần canary, rollback và kiểm tra regression với TCP options, IPv6, TLS và ứng dụng đại diện.

08

Giới hạn của kết luận

#

SYN flood pass không chứng minh chống ACK/RST, TLS, HTTP, UDP/QUIC hoặc volumetric attack. Lab không đại diện upstream link saturation nếu traffic chưa chạm bandwidth thật. Source spoofing, anycast, scrubbing và cloud edge thay đổi topology đáng kể.

SYN cookie/queue behavior phụ thuộc OS/version/config. Không công bố rate tối đa nếu thiếu wire accounting, legitimate mix, duration và hardware. Kết quả là envelope của profile đã đo, không phải chứng nhận miễn nhiễm DDoS.

09

Khái niệm cần nhớ

#
  • Half-open connection: Server đã nhận SYN nhưng handshake chưa hoàn tất.
  • SYN backlog: Hàng đợi/trạng thái cho kết nối đang thiết lập, tùy implementation.
  • Accept queue: Kết nối đã hoàn tất handshake chờ ứng dụng nhận.
  • SYN cookie: Cách mã hóa thông tin vào sequence number để giảm state trong điều kiện nhất định.
  • SYN proxy: Thiết bị trung gian hoàn tất/kiểm tra handshake trước backend.
  • Knee point: Mức tải nơi latency/loss bắt đầu tăng nhanh.
  • Recovery time: Thời gian KPI trở lại baseline sau sự kiện.
THUẬT NGỮ NHANH

Khái niệm cần nhớ

DUT / SUT
Thiết bị hoặc toàn bộ hệ thống đang là đối tượng của bài kiểm thử.
Steady state
Giai đoạn tải đã ổn định và đủ điều kiện để lấy số liệu đại diện.
Pass / fail
Kết luận dựa trên ngưỡng đã thống nhất, luôn đi cùng topology, cấu hình và điều kiện đo.
TÀI LIỆU ĐỐI CHIẾUTài liệu tham khảo3 nguồn

Nội dung được biên soạn độc lập, theo hướng vendor-neutral và đối chiếu các tài liệu gốc dưới đây. Tính năng sản phẩm cần được kiểm tra lại theo phiên bản đang sử dụng.

Nguyên tắc biên tập

NetVali ưu tiên nguồn tiêu chuẩn và tài liệu chính thức; phân biệt khuyến nghị triển khai với yêu cầu của tiêu chuẩn; không công bố thông số sản phẩm chưa gắn với phiên bản và điều kiện đo.

Thông số và khả năng sản phẩm có thể thay đổi theo phiên bản. Hãy đối chiếu tài liệu chính thức trước khi xây dựng cấu hình hoặc tiêu chí nghiệm thu.
BẮT ĐẦU TỪ BÀI TOÁN

Cần chuyển kiến thức thành test plan?

Chia sẻ mục tiêu, topology và ràng buộc kỹ thuật. NetVali sẽ cùng bạn xác định bài đo phù hợp.

Trao đổi yêu cầu kỹ thuật