Network configuration and settings
§Network Chaos Configuration
This module provides configuration for network chaos testing, following
FoundationDB’s battle-tested simulation approach and TigerBeetle’s deterministic
testing patterns.
§Connection Failure Modes
| Failure | Config Field | Default | Real-World Scenario |
| Random close | random_close_probability | 0.001% | Reconnection logic, message redelivery, connection pooling |
| Asymmetric close | random_close_explicit_ratio | 30% explicit | Half-closed sockets, FIN vs RST handling |
| Connect failure | connect_failure_mode | Probabilistic | Connection establishment retries, timeout handling |
| Connection cut | Manual via cut_connection() | N/A | Temporary network outages, transient failures |
§Network Latency & Congestion
| Delay Type | Config Field | Default | Real-World Scenario |
| Operation latency | bind/accept/connect/read/write_latency | Various ranges | Timeout settings, async operation ordering |
| Latency distribution | latency_distribution | Uniform | Tail latency testing, P99 behavior |
| Slow latency | slow_latency_probability | 0.1% | 99.9th percentile testing |
| Write clogging | clog_probability + clog_duration | 0%, 100-300ms | Backpressure handling, flow control |
| Read clogging | Same as write | Same | Symmetric flow control |
| Clock drift | clock_drift_enabled + clock_drift_max | true, 100ms | Lease expiration, distributed consensus, TTL handling |
| Buggified delay | buggified_delay_enabled + buggified_delay_max | true, 100ms | Race conditions, timing-dependent bugs |
| Handshake delay | handshake_delay_enabled + handshake_delay_max | true, 10ms | TLS negotiation, connection startup overhead |
§Network Partitions
| Partition Type | Config/Method | Default | Real-World Scenario |
| Random partition | partition_probability + partition_duration | 0%, 200ms-2s | Split-brain, quorum loss, leader election |
| Bi-directional | partition_pair() | Manual | Complete isolation between nodes |
| Send-only block | partition_send_from() | Manual | Asymmetric network failures |
| Recv-only block | partition_recv_to() | Manual | Asymmetric network failures |
| Partition strategy | partition_strategy | Random | Different failure patterns (uniform, isolate) |
§Data Integrity Faults
| Fault | Config Field | Default | Real-World Scenario |
| Bit flip | bit_flip_probability + bit_flip_min/max_bits | 0.01%, 1-32 bits | CRC/checksum validation, data corruption detection |
§Half-Open Connection Simulation
| State | Method | Real-World Scenario |
| Peer crash | simulate_peer_crash() | TCP keepalive, heartbeat detection, silent failures |
| Half-open detection | should_half_open_error() | Timeout-based failure detection |
§Partial Write Simulation
| Feature | Config Field | Default | Real-World Scenario |
| Short writes | partial_write_max_bytes | 1000 bytes | TCP fragmentation handling, message framing |
§Stable Connections
| Feature | Method | Real-World Scenario |
| Mark stable | mark_connection_stable() | Exempt supervision from chaos, parent-child connections |
§Configuration Examples
§Fast Local Testing (No Chaos)
use moonpool_sim::network::{NetworkConfiguration, ChaosConfiguration};
let config = NetworkConfiguration::fast_local();
§Full Chaos Testing
use moonpool_sim::network::{NetworkConfiguration, ChaosConfiguration};
let config = NetworkConfiguration::random_for_seed();
§Custom Configuration
use moonpool_sim::network::{NetworkConfiguration, ChaosConfiguration, LatencyDistribution, PartitionStrategy};
use std::time::Duration;
let mut config = NetworkConfiguration::default();
config.chaos.latency_distribution = LatencyDistribution::Bimodal;
config.chaos.partition_strategy = PartitionStrategy::IsolateSingle;
config.chaos.partition_probability = 0.05;
§FDB/TigerBeetle References
- Random close: FDB sim2.actor.cpp:580-605
- Latency distribution: FDB sim2.actor.cpp:317-329 (
halfLatency())
- Partitions: FDB SimClogging, TigerBeetle partition modes
- Bit flips: FDB FlowTransport.actor.cpp:1297
- Clock drift: FDB sim2.actor.cpp:1058-1064
- Connect failures: FDB sim2.actor.cpp:1243-1250