fix(lab): flood deception-syncookie with reduced-set spec (fix throughput flake) #262

Merged
vxfemboy merged 1 commit from fix/deception-syncookie-reduced-spec into main 2026-08-03 22:55:45 +00:00
Owner

Root cause

deception-syncookie floods the victim while a real client verifies the
syn-cookie banner still serves under load. Its real assertion —
ok 3 - ... /dev/tcp/10.0.0.1/8080 returns STATELESS-COOKIE-OK — passed in
every run. The gate failed only on trafficgen's send fidelity precondition:

trafficgen: generator fidelity: achieved 36344 pps < 50% of target 77000

The victim runs the NFQUEUE responder per packet (parse + cookie + raw sendto
that ENETUNREACHes for every spoofed source) and competes with the co-located
generator for host CPU on the shared runner. full-set's 77k pps is simply
unreachable there (observed 30-36k across runs), so the self-check flakes. This
is host-CPU contention, not a product defect.

An earlier attempt to cut the victim's CPU by throttling its per-packet drop log
(#260) did not move the number (36344 throttled vs 30-35k not) - so this fixes
the precondition directly instead.

Change

  • Add a reduced-set spec: full-set scaled to 1/5 (15.4k pps), same pattern
    mix. It sits ~2x under the generator's contended ceiling, so fidelity holds.
  • Point the deception-syncookie scenario at reduced-set. Still a real
    spoofed-SYN flood (4k SYN-pps x 10s = 40k SYNs exercise the cookie path), so
    the gate keeps verifying banner-served-under-flood - unlike quarantining it,
    which would make the gate verify nothing.

Verification

clippy/fmt/unit tests green for blackwall-trafficgen (new
reduced_set_is_full_set_at_one_fifth test). The lab gate itself is confirmed
by CI - on a branch that also carries the flow-live hsflowd fix (#259) this run
should be the first fully-green lab.

## Root cause `deception-syncookie` floods the victim while a real client verifies the syn-cookie banner still serves under load. Its **real** assertion — `ok 3 - ... /dev/tcp/10.0.0.1/8080` returns `STATELESS-COOKIE-OK` — passed in every run. The gate failed only on trafficgen's `send` **fidelity precondition**: ``` trafficgen: generator fidelity: achieved 36344 pps < 50% of target 77000 ``` The victim runs the NFQUEUE responder per packet (parse + cookie + raw `sendto` that `ENETUNREACH`es for every spoofed source) and competes with the co-located generator for host CPU on the shared runner. `full-set`'s 77k pps is simply unreachable there (observed 30-36k across runs), so the self-check flakes. This is host-CPU contention, not a product defect. An earlier attempt to cut the victim's CPU by throttling its per-packet drop log (#260) did not move the number (36344 throttled vs 30-35k not) - so this fixes the precondition directly instead. ## Change - Add a `reduced-set` spec: `full-set` scaled to 1/5 (15.4k pps), same pattern mix. It sits ~2x under the generator's contended ceiling, so fidelity holds. - Point the `deception-syncookie` scenario at `reduced-set`. Still a real spoofed-SYN flood (4k SYN-pps x 10s = 40k SYNs exercise the cookie path), so the gate keeps verifying banner-served-under-flood - unlike quarantining it, which would make the gate verify nothing. ## Verification `clippy`/`fmt`/unit tests green for `blackwall-trafficgen` (new `reduced_set_is_full_set_at_one_fifth` test). The lab gate itself is confirmed by CI - on a branch that also carries the flow-live hsflowd fix (#259) this run should be the first fully-green lab.
fix(lab): flood deception-syncookie with reduced-set, not full-set
All checks were successful
CI / check (pull_request) Successful in 11m20s
CI / lab (pull_request) Successful in 8m57s
35d687300e
The deception-syncookie gate floods the victim while a real client checks
the syn-cookie banner still serves under load. The victim runs the NFQUEUE
responder per packet (parse + cookie + raw sendto that ENETUNREACHes for
every spoofed source) and competes with the co-located trafficgen generator
for host CPU on the shared CI runner. full-set's 77k pps is unreachable
there: the generator's `send` fidelity self-check (achieved >= 50% of
target) saw only 30-36k pps and failed the gate — even though the gate's
actual assertion (banner served under flood) passed both runs.

Add a reduced-set spec (full-set scaled to 1/5, 15.4k pps) and point the
scenario at it. Still a real spoofed-SYN flood (4k SYN-pps x 10s = 40k SYNs
exercise the cookie path) but well under the contended generation ceiling,
so fidelity holds without weakening what the gate verifies.
vxfemboy deleted branch fix/deception-syncookie-reduced-spec 2026-08-03 22:55:45 +00:00
Sign in to join this conversation.
No description provided.