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 |
§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 |
| 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 |
§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 |
§Partial Write/Read Simulation
| Feature | Config Field | Default | Real-World Scenario |
| Short writes | partial_write_max_bytes | 1000 bytes | TCP fragmentation handling, message framing |
| Short reads | partial_read_max_bytes | 1000 bytes | TCP short reads, message reassembly / framing |
§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, PartitionStrategy};
let mut config = NetworkConfiguration::default();
config.chaos.partition_strategy = PartitionStrategy::IsolateSingle;
config.chaos.partition_probability = 0.05;
§FDB/TigerBeetle References
- Random close: FDB sim2.actor.cpp:580-605
- 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