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.
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.
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.
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.
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.
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.
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.
Shadow directly executes real, unmodified application binaries natively in Linux as standard OS processes and co-opts them into a discrete-event simulation.
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).
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.
Shadow is a research product with more than 200 citations in the academic literature.
Please cite the following foundational publications if you use Shadow in your work:
"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!
"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!
Shadow is 100% open-source software, written primarily in Rust and C.