Quickstart
Run built-in configs, inspect outputs, and debug simulations.
Run the built-in config examples
The repository ships with runnable TOML configs in configs/.
RUST_LOG=info cargo run -- configs/simple.tomlUseful variations:
# TCP example
RUST_LOG=info cargo run -- configs/tcp_simple.toml
# Fat-tree topology examples
RUST_LOG=info cargo run -- configs/fattree.toml
RUST_LOG=info cargo run -- configs/tcp_fattree.toml
RUST_LOG=info cargo run -- configs/bbr_fattree.tomlOutput artifacts
By default, Days writes periodic reports to CSV files under log_path (see /docs/configuration/logging):
sources.csv: per-source send statisticssinks.csv: per-sink receive statisticsswitches.csv: per-scheduler (port) statisticspfc.csv: PFC port statistics (only with--features l2_pfc)dcqcn_events.csv: DCQCN event trace (only with--features dcqcn,lean)cubic_events.csv: TCP CUBIC event trace (only with--features lean)drr_events.csv: DRR event trace (only with--features lean)wfq_events.csv: WFQ event trace (only with--features lean)
Debugging
Increase log verbosity with RUST_LOG:
RUST_LOG=debug cargo run -- configs/simple.tomlMental model
At a high level, Days runs this pipeline for each flow:
PacketSource -> (host) PacketSwitch -> [Scheduler per hop] -> ... -> PacketSwitch -> PacketSink
Packets carry the current simulation timestamp (Packet.time) and accumulate queueing delay. Most components avoid querying the global simulation clock, using packet timestamps instead (see /docs/architecture/time-concurrency).