Shadow

real applications, simulated networks

What is Shadow?

Shadow is a scientific experimentation tool that simplifies research, development, testing, and evaluation of real networked applications by connecting them through an internally simulated distributed network.

Rapid Prototyping

Quickly develop your network research prototypes (e.g., a performance enhancing algorithm or protocol) without committing the time and effort that would be required to produce production-quality code.

Testing and Debugging

Run large and diverse test networks to exercise complex corner cases and improve test coverage. Run multiple versions of your code to test interoperability. Shadow simulations are deterministic, so bugs are identically reproduced by re-running the simulation.

Flexible Evaluations

Immediately deploy thousands of network application processes using a customizable network topology. Evaluate network performance, tune parameters, and gain confidence in your experiments, results, and code before deploying to a live network.

Safety and Privacy

Shadow simulations are completely private and segregated from the Internet, providing an environment in which you can safely run network experiments with absolutely no privacy risks.

How does Shadow work?

Shadow directly executes real applications as native Linux processes and connects them through a simulated network, enabling you to simulate distributed systems with thousands of nodes in realistic and scalable private network experiments using your laptop, desktop, or server running Linux.

Real Applications

Shadow directly executes real, unmodified application binaries natively in Linux as standard OS processes and co-opts them into a discrete-event simulation.

Simulated Networks

Shadow intercepts and emulates system calls made by the co-opted processes, connecting them through an internal network using simulated implementations of common network protocols (e.g., TCP and UDP).

High Performance

Shadow focuses on high performance simulation, efficiently simulating both small client/server networks and large distributed systems. Shadow has been used to simulate real-world peer-to-peer networks such as Tor and Bitcoin.

Grounded in Research

Shadow is a research product with more than 180 citations in the academic literature.
Please cite the following foundational publications if you use Shadow in your work:

Original Design Publication

"Shadow: Running Tor in a Box for Accurate and Efficient Experimentation" by Rob Jansen and Nicholas Hopper in the Symposium on Network and Distributed System Security, 2012.

Runner up for the 2013 Caspar Bowden Award for Outstanding Research in Privacy Enhancing Technologies!

Latest Design Publication

"Co-opting Linux Processes for High Performance Network Simulation" by Rob Jansen, Jim Newsome, and Ryan Wails in the USENIX Annual Technical Conference, 2022.

Winner of the Best Paper Award at the 2022 USENIX Annual Technical Conference!

Open Source Development

Shadow is 100% open-source software, written primarily in Rust and C.