feat(flow): anycast telemetry ingest — POP identity, tagging, liveness, sampling sanity #165
No reviewers
Labels
No labels
bug
deploy
documentation
duplicate
enhancement
good first issue
help wanted
invalid
pull-request
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
femboy/blackwall!165
Loading…
Reference in a new issue
No description provided.
Delete branch "sp-telemetry-spec"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
What
M0 telemetry foundation for the AS214806 deployment (backlog #1 POP sensor + #2 anycast-aware aggregation). Lets the central
flowdaemon treat the sFlow feeds from multiple anycast POPs as one logical view.Key insight
The detector already keys per-victim and scales by per-sample rate, so cross-POP volume aggregation already works. This change threads the POP identity that's already in every sFlow datagram (the agent address, previously parsed-then-discarded) and builds per-agent robustness on top — it is not a detector rebuild.
Changes
FlowObservation.agentextracted from the sFlow agent address (v4 + v6).pop <name> agent=<ip> sampling=<n>config directive →Policy.pops→blackwall_flow::AgentRegistry(rejects duplicate/malformed entries).Detection.pops(which POPs contributed, with per-POP est pps/bps).agent_last_seen, bounded to known-registry agents — closes a spoofed-agent memory-DoS), and a sampling-sanity clamp (a rogue agent's rate → its configured expected rate).Detection.top_source_blocks(top-5 attacker /24 v4 / /48 v6 blocks).blackwall_flow_pop_last_seen_seconds{pop},blackwall_flow_agent_sampling_mismatch_total{pop},blackwall_flow_unknown_agent_observations_total.render_hsflowd_conf+blackwalld sensor render-hsflowd(generates each POP's hsflowd.conf from the POP-map) + adocs/deployment.mdPOP-sensor section.Safety
Non-breaking: with no
popblock, behavior equals today exceptagentis populated and all traffic tagsunknown(no clamp, aggregation unchanged). The mitigation controllers are untouched.Quality
Subagent-driven: 6 tasks each spec+quality reviewed + a final whole-branch review (opus). The final review's one Important finding (missing duplicate-
poprejection — which would corrupt a Prometheus scrape) was fixed. clippy--workspace --all-targets --deny warningsclean; fmt clean; coverage 95.33%. Noascasts,#[expect]not#[allow], exact pins.🤖 Generated with Claude Code