mirror of
https://github.com/jmcorgan/fips.git
synced 2026-07-30 19:46:15 +00:00
Three infrastructure bugs fixed: - DNS resolution never populated the identity cache because Docker overwrites /etc/resolv.conf at container start. Fix: bind-mount resolv.conf in the chaos compose template, matching the static and sidecar test configs. - Traffic generator used config-time npubs for iperf3 targets, but ephemeral nodes generate fresh keypairs at startup. Fix: share the peer churn manager's runtime npub cache with the traffic manager. - Log analysis had no discovery counters and used wrong patterns. Fix: add discovery section with correct log message matching. Also adds timestamped output directories (YYYYMMDD-HHMMSS-scenario), coord_ttl_secs override in maelstrom.yaml, FIPS_SIM_OUTPUT env var support, and maelstrom-sparse scenario for sparse topology testing.
83 lines
1.7 KiB
YAML
83 lines
1.7 KiB
YAML
# Maelstrom-sparse: sparse geometric topology for discovery stress testing
|
|
#
|
|
# Uses random geometric graph with low radius to produce sparse connectivity
|
|
# (~3-4 peers per node), forcing multi-hop routing and heavy discovery usage.
|
|
# The short coord cache TTL (10s) ensures transit-warmed entries expire
|
|
# quickly, requiring rediscovery.
|
|
#
|
|
# Default: 50 nodes. Override with --nodes flag.
|
|
|
|
scenario:
|
|
name: "maelstrom-sparse"
|
|
seed: 42
|
|
duration_secs: 600
|
|
|
|
topology:
|
|
num_nodes: 50
|
|
algorithm: random_geometric
|
|
params:
|
|
radius: 0.20
|
|
ensure_connected: true
|
|
subnet: "172.20.0.0/16"
|
|
ip_start: 10
|
|
transport_mix:
|
|
udp: 0.8
|
|
tcp: 0.2
|
|
|
|
netem:
|
|
enabled: true
|
|
default_policy:
|
|
delay_ms: { min: 5, max: 50 }
|
|
jitter_ms: { min: 1, max: 10 }
|
|
loss_pct: { min: 0, max: 2 }
|
|
mutation:
|
|
interval_secs: { min: 20, max: 45 }
|
|
fraction: 0.3
|
|
policies:
|
|
normal:
|
|
delay_ms: [5, 20]
|
|
loss_pct: [0, 1]
|
|
degraded:
|
|
delay_ms: [50, 100]
|
|
jitter_ms: [10, 30]
|
|
loss_pct: [3, 8]
|
|
|
|
link_flaps:
|
|
enabled: true
|
|
interval_secs: { min: 30, max: 60 }
|
|
max_down_links: 3
|
|
down_duration_secs: { min: 10, max: 30 }
|
|
protect_connectivity: true
|
|
|
|
traffic:
|
|
enabled: true
|
|
max_concurrent: 10
|
|
interval_secs: { min: 5, max: 30 }
|
|
duration_secs: { min: 5, max: 60 }
|
|
parallel_streams: 4
|
|
|
|
node_churn:
|
|
enabled: true
|
|
interval_secs: { min: 60, max: 120 }
|
|
max_down_nodes: 5
|
|
down_duration_secs: { min: 30, max: 90 }
|
|
protect_connectivity: false
|
|
|
|
peer_churn:
|
|
enabled: true
|
|
interval_secs: { min: 8, max: 12 }
|
|
ephemeral_fraction: 0.5
|
|
|
|
bandwidth:
|
|
enabled: true
|
|
tiers_mbps: [1, 10, 100, 1000]
|
|
|
|
logging:
|
|
rust_log: "debug"
|
|
output_dir: "./sim-results"
|
|
|
|
fips_overrides:
|
|
node:
|
|
cache:
|
|
coord_ttl_secs: 10
|