Update test harness docs and add transport_mix support

Chaos harness enhancements:
- transport_mix config: weighted random transport assignment for random
  topologies (erdos_renyi, random_geometric) with UDP/Ethernet/TCP
- Replace LoRa with Bluetooth L2CAP in cost-based/mixed-tech scenarios
  using realistic netem values (15-40ms delay, 5-15ms jitter, 2-8% loss)
- New churn-20-mixed scenario: 20-node Erdos-Renyi with 60% UDP,
  20% Ethernet, 20% TCP, full netem/link-flap/churn/bandwidth config
- Expanded chaos README with full scenario catalog in four categories

Static harness:
- Updated README with topology table and scenario count
This commit is contained in:
Johnathan Corgan
2026-02-27 00:52:17 +00:00
parent ec64a0dce1
commit cd9289e0f3
12 changed files with 316 additions and 99 deletions

View File

@@ -7,16 +7,26 @@ containers running the full protocol stack.
### [static/](static/) -- Static Docker Network
Fixed topologies (mesh, chain) with 5 nodes. Manual scripts for
building, config generation, connectivity tests (ping, iperf), and
network impairment (netem). Useful for deterministic debugging and
validating specific topology configurations.
Fixed topologies with manual scripts for building, config generation,
connectivity tests (ping, iperf), and network impairment (netem).
Useful for deterministic debugging and validating specific topology
configurations.
| Topology | Nodes | Transport | Description |
| ----------- | ----- | --------- | -------------------------------- |
| mesh | 5 | UDP | Sparse mesh, 6 links, multi-hop |
| chain | 5 | UDP | Linear chain, max 4-hop paths |
| mesh-public | 5+1 | UDP | Mesh with external public node |
| tcp-chain | 3 | TCP | Linear chain over TCP (port 443) |
### [chaos/](chaos/) -- Stochastic Simulation
Automated randomized testing with configurable node counts, topology
algorithms (random geometric, Erdos-Renyi, chain), and fault
Automated network testing with configurable node counts, topology
algorithms (random geometric, Erdos-Renyi, chain, explicit), and fault
injection (netem mutation, link flaps, traffic generation, node
churn). Scenarios are defined in YAML and executed via a Python
harness that manages the full lifecycle: topology generation, Docker
orchestration, fault scheduling, log collection, and analysis.
churn). 16 scenarios covering general stress testing, cost-based parent
selection, mixed link technologies (fiber/Bluetooth/WiFi), and
transport-specific validation (UDP, TCP, Ethernet). Scenarios are
defined in YAML and executed via a Python harness that manages the full
lifecycle: topology generation, Docker orchestration, fault scheduling,
log collection, and analysis.