ndn_sim/lib.rs
1//! # ndn-sim — In-process NDN network simulation
2//!
3//! Provides [`SimFace`], [`SimLink`], and a [`Simulation`] topology builder
4//! for constructing multi-node NDN networks entirely in-process. Unlike
5//! Mini-NDN (which orchestrates real processes via Mininet), simulations run
6//! in a single Tokio runtime with configurable link properties.
7//!
8//! ## Quick Start
9//!
10//! ```rust,no_run
11//! use ndn_sim::{Simulation, LinkConfig, NodeId};
12//! use ndn_engine::builder::EngineConfig;
13//!
14//! # async fn example() -> anyhow::Result<()> {
15//! let mut sim = Simulation::new();
16//! let n1 = sim.add_node(EngineConfig::default());
17//! let n2 = sim.add_node(EngineConfig::default());
18//! sim.link(n1, n2, LinkConfig::lan());
19//! sim.add_route(n1, "/prefix", n2);
20//!
21//! let running = sim.start().await?;
22//! // ... run experiment using running.engine(n1), running.engine(n2) ...
23//! running.shutdown().await;
24//! # Ok(())
25//! # }
26//! ```
27//!
28//! ## Components
29//!
30//! | Module | Description |
31//! |--------|-------------|
32//! | [`sim_face`] | `SimFace` — channel-backed face with delay/loss/bandwidth emulation |
33//! | [`sim_link`] | `SimLink` — creates connected face pairs with link properties |
34//! | [`topology`] | `Simulation` — multi-node topology builder and runner |
35//! | [`tracer`] | `SimTracer` — structured event capture for analysis |
36
37#![allow(missing_docs)]
38
39pub mod sim_face;
40pub mod sim_link;
41pub mod topology;
42pub mod tracer;
43
44pub use sim_face::SimFace;
45pub use sim_link::{LinkConfig, SimLink};
46pub use topology::{NodeId, RunningSimulation, Simulation};
47pub use tracer::{EventKind, SimEvent, SimTracer};