# nxtquic-sim
[](https://crates.io/crates/nxtquic-sim)
[](https://docs.rs/nxtquic-sim)
[](https://github.com/nxtstream/nxtquic/blob/main/LICENSE.md)
[](Cargo.toml)
**Deterministic network simulator for NxtQuic testing.**
`nxtquic-sim` is a virtual network environment for the [NxtQuic](https://crates.io/crates/nxtquic) workspace. It allows you to run QUIC endpoints inside a fully controllable, deterministic simulation — without any real OS networking — making it ideal for unit tests, system tests, and reproducing network edge cases reliably.
## Features
- **Deterministic execution** — controllable virtual time; replay any scenario bit-for-bit
- **Configurable link impairment** — inject latency, packet loss, duplication, and bit corruption
- **Multi-node topologies** — model complex networks with multiple endpoints and routers
- **Mobile handoff simulation** — reproduce path migration, failover, and multipath scenarios
- **I/O-free** — runs on top of `nxtquic-proto` with no OS socket involvement
- **No async runtime required** — synchronous simulation loop, zero flakiness
## Usage
```toml
[dependencies]
nxtquic-sim = "0.1.2"
```
```rust
use nxtquic_sim::{Simulator, LinkConfig};
let mut sim = Simulator::new();
let link = sim.add_link(LinkConfig {
latency_ms: 50,
loss_percent: 2,
..Default::default()
});
// Feed packets and advance virtual time
sim.step();
```
## Part of the NxtQuic workspace
| [`nxtquic`](https://crates.io/crates/nxtquic) | Top-level re-export, async API |
| [`nxtquic-proto`](https://crates.io/crates/nxtquic-proto) | Core state machine |
| [`nxtquic-crypto`](https://crates.io/crates/nxtquic-crypto) | Pluggable crypto backends |
| [`nxtquic-udp`](https://crates.io/crates/nxtquic-udp) | Platform-optimized UDP I/O |
| [`nxtquic-api`](https://crates.io/crates/nxtquic-api) | Tokio async/await API |
| [`nxtquic-h3`](https://crates.io/crates/nxtquic-h3) | HTTP/3 + QPACK |
| **`nxtquic-sim`** | **Deterministic network simulator (this crate)** |
| [`nxtquic-qlog`](https://crates.io/crates/nxtquic-qlog) | qlog structured logging |
## License
Licensed under either of [MIT](https://github.com/nxtstream/nxtquic/blob/main/LICENSE.md) or Apache-2.0 at your option.