SimBricks is a simulation framework that enables full end-to-end evaluation of modern network systems in simulation. Our primary aim is to to enable network systems research and instruction — from rapid prototyping to meaningful performance evaluation.
SimBricks modularly combines and connects multiple battle-tested simulators for different components: machines (e.g. QEMU, gem5), hardware components (e.g. Verilator, Tofino, FEMU SSD), and networks (e.g. ns-3, OMNeT++). SimBricks assembles multiple instances of these simulators into simulated testbeds capable of running unmodified full system stacks, including applications and operating systems such as Linux.
- End-to-End: simulate full network systems, with hosts, devices, network, and the full software stack.
- Scalable: simulate large network systems comprising tens or hundreds of separate hosts and devices.
- Fast: keep simulation times as low as possible.
- Modular: enable flexible composition of simulators, where components can be added and swapped independently.
- Accurate: preserve accuracy of constituent simulators, correctly interface and synchronize components.
- Deterministic: keep end-to-end simulation deterministic when individual simulators are deterministic.
Fixed natural component simulator interfacesSimBricks defines an interface for each component type to enable modular composition of simulators...
Accurate and efficient synchronizationSimBricks ensures accurate simulation through correct time synchronization, but with minimal runtime overhead...
Loose coupling with message passingSimBricks runs component simulators as separate processes that communicate through message passing...
Parallel execution with shared memory queuesSimBricks runs simulators in parallel on different host cores and connects them through optimized shared-memory queues...
Paper Accepted at SIGCOMM'222022-05-07
Our SimBricks paper will appear at SIGCOMM'22 in Amsterdam!
SimBricks Website is Up2022-04-09
Our shiny new SimBricks website has gone live.