SimBricks

Overview

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.

Example of a SimBricks simulation configuration with three
        simulated hosts, a server and two clients. We simulate the server in
        gem5 and connect to an SSD simulated through FEMU and a Corundum FPGA
        NIC simulated through Verilator. The two clients are simulated in QEMU
        and connect to a PCIe behavioral NIC model. All three hosts are
        connected through a network simulated in ns-3.

Key Features

  • 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.

Techniques

  • Fixed natural component simulator interfaces

    SimBricks defines an interface for each component type to enable modular composition of simulators...
  • Accurate and efficient synchronization

    SimBricks ensures accurate simulation through correct time synchronization, but with minimal runtime overhead...
  • Loose coupling with message passing

    SimBricks runs component simulators as separate processes that communicate through message passing...
  • Parallel execution with shared memory queues

    SimBricks runs simulators in parallel on different host cores and connects them through optimized shared-memory queues...

News

  • AC/DSim poster at SOSP'23 SRC

    2023-09-13

    Jonas' submission on full system energy estimation with modular simulation has passed stage 1 of the SOSP'23 student research competition.

  • Simics integrated into SimBricks

    2023-05-09

    Jonas successfully implemented SimBricks adapters in Intel's Simics simulator for the PCI and memory protocols and we now merged this into the main branch.

  • SplitSim accepted at YArch'23

    2023-02-23

    Hejing will present her ongoing work on parallelizing sequential simulators through decomposition at YArch'23.

  • Memory Disaggregation in SimBricks

    2023-02-14

    We merged initial support for simulating disaggregated memory systems into our main branch.

  • Welcome Marvin

    2023-01-27

    Marvin joined the project for his MSc thesis.

  • Presented at WORDS'22

    2022-11-18

    Bin showcased SimBricks for disaggregated systems research at WORDS'22. Here is a video.

  • Welcome Jakob

    2023-10-18

    Jakob joined the project for his MSc thesis.

  • Presented at SIGCOMM'22

    2022-08-24

    Hejing presented SimBricks at SIGCOMM'22 in Amsterdam. Here is a video of the presentation.

  • Artifact Evaluation Passed

    2022-06-29

    Our SIGCOMM'22 paper received all three artifact evaluation badges: available, functional, and reproduced.

  • Paper Accepted at SIGCOMM'22

    2022-05-07

    Our SimBricks paper will appear at SIGCOMM'22 in Amsterdam!