Skip to main content

Module config

Module config 

Source
Expand description

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

FailureConfig FieldDefaultReal-World Scenario
Random closerandom_close_probability0.001%Reconnection logic, message redelivery, connection pooling
Asymmetric closerandom_close_explicit_ratio30% explicitHalf-closed sockets, FIN vs RST handling
Connect failureconnect_failure_modeProbabilisticConnection establishment retries, timeout handling

§Network Latency & Congestion

Delay TypeConfig FieldDefaultReal-World Scenario
Operation latencybind/accept/connect/read/write_latencyVarious rangesTimeout settings, async operation ordering
Write cloggingclog_probability + clog_duration0%, 100-300msBackpressure handling, flow control
Read cloggingSame as writeSameSymmetric flow control
Clock driftclock_drift_enabled + clock_drift_maxtrue, 100msLease expiration, distributed consensus, TTL handling
Buggified delaybuggified_delay_enabled + buggified_delay_maxtrue, 100msRace conditions, timing-dependent bugs

§Network Partitions

Partition TypeConfig/MethodDefaultReal-World Scenario
Random partitionpartition_probability + partition_duration0%, 200ms-2sSplit-brain, quorum loss, leader election
Bi-directionalpartition_pair()ManualComplete isolation between nodes
Send-only blockpartition_send_from()ManualAsymmetric network failures
Recv-only blockpartition_recv_to()ManualAsymmetric network failures
Partition strategypartition_strategyRandomDifferent failure patterns (uniform, isolate)

§Data Integrity Faults

FaultConfig FieldDefaultReal-World Scenario
Bit flipbit_flip_probability + bit_flip_min/max_bits0.01%, 1-32 bitsCRC/checksum validation, data corruption detection

§Partial Write/Read Simulation

FeatureConfig FieldDefaultReal-World Scenario
Short writespartial_write_max_bytes1000 bytesTCP fragmentation handling, message framing
Short readspartial_read_max_bytes1000 bytesTCP short reads, message reassembly / framing

§Configuration Examples

§Fast Local Testing (No Chaos)

use moonpool_sim::network::{NetworkConfiguration, ChaosConfiguration};

let config = NetworkConfiguration::fast_local();
// All chaos disabled, minimal latencies

§Full Chaos Testing

use moonpool_sim::network::{NetworkConfiguration, ChaosConfiguration};

let config = NetworkConfiguration::random_for_seed();
// Randomized chaos parameters for comprehensive testing

§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; // 5%

§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

Structs§

ChaosConfiguration
Configuration for chaos injection in simulations.
NetworkConfiguration
Configuration for network simulation parameters

Enums§

ConnectFailureMode
Connection establishment failure mode for fault injection.
LatencyDistribution
A pluggable latency distribution for per-operation latency sampling.
PartitionStrategy
Network partition strategy for chaos testing.

Functions§

sample_duration
Sample a random duration from a range
sample_latency
Sample a latency from a LatencyDistribution using the simulation RNG.