# Cost-Based Parent Selection: Bottleneck Avoidance Test # # Topology (explicit 4-node diamond): # # n01 (root — smallest addr) # / \ # fiber fiber # / \ # n02 n03 # \ / # BT fiber # \ / # n04 (test subject) # # n04 has two candidate parents at depth 1: n02 (via Bluetooth L2CAP) # and n03 (via fiber). Cost-based selection should pick n03 because: # effective_depth(n02) = 1 + ~1.4 (Bluetooth) = ~2.4 # effective_depth(n03) = 1 + ~1.01 (fiber) = ~2.01 # # Validation: tree snapshot shows n04's parent is n03. scenario: name: "cost-avoidance" seed: 42 duration_secs: 45 topology: algorithm: explicit num_nodes: 4 params: adjacency: - [n01, n02] - [n01, n03] - [n02, n04] - [n03, n04] subnet: "172.20.0.0/24" ip_start: 10 netem: enabled: true default_policy: # Fiber-like delay_ms: [1, 5] jitter_ms: [0, 1] loss_pct: [0, 0.5] link_policies: # Bluetooth (L2CAP) link from n02 to n04 - edges: ["n02-n04"] policy: delay_ms: [15, 40] jitter_ms: [5, 15] loss_pct: [2, 8] link_flaps: enabled: false traffic: enabled: true max_concurrent: 2 interval_secs: {min: 15, max: 30} duration_secs: {min: 5, max: 10} parallel_streams: 2 logging: rust_log: "info" output_dir: "./sim-results"