The Shadow Network Simulator
Shadow
real applications, simulated networks
Get Started<br>Github
Latest Release
All Releases
Fork
Download
Star
Watch
Issue
Discuss
What is Shadow?
Shadow is a scientific experimentation tool that simplifies research,<br>development, testing, and evaluation of real networked applications by<br>connecting them through an internally simulated distributed network.
Rapid Prototyping
Quickly develop your network research prototypes (e.g., a<br>performance enhancing algorithm or protocol) without committing<br>the time and effort that would be required to produce<br>production-quality code.
Testing and Debugging
Run large and diverse test networks to exercise complex corner<br>cases and improve test coverage. Run multiple versions of your<br>code to test interoperability. Shadow simulations are<br>deterministic, so bugs are identically reproduced by re-running<br>the simulation.
Flexible Evaluations
Immediately deploy thousands of network application processes<br>using a customizable network topology. Evaluate network<br>performance, tune parameters, and gain confidence in your<br>experiments, results, and code before deploying to a live network.
Safety and Privacy
Shadow simulations are completely private and segregated from the<br>Internet, providing an environment in which you can safely run<br>network experiments with absolutely no privacy risks.
How does Shadow work?
--><br>Shadow directly executes real applications as native Linux processes and<br>connects them through a simulated network, enabling you to simulate<br>distributed systems with thousands of nodes in realistic and scalable<br>private network experiments using your laptop, desktop, or server<br>running Linux.
Real Applications
Shadow directly executes real, unmodified application binaries<br>natively in Linux as standard OS processes and co-opts them into a<br>discrete-event simulation.
Simulated Networks
Shadow intercepts and emulates system calls made by the co-opted<br>processes, connecting them through an internal network using<br>simulated implementations of common network protocols (e.g., TCP<br>and UDP).
High Performance
Shadow focuses on high performance simulation, efficiently<br>simulating both small client/server networks and large distributed<br>systems. Shadow has been used to simulate real-world peer-to-peer<br>networks such as Tor and Bitcoin.
Grounded in Research
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:
Original Design Publication
"Shadow: Running Tor in a Box for Accurate and Efficient Experimentation"<br>by Rob Jansen<br>and Nicholas Hopper<br>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!
Read Article<br>View Media
Latest Design Publication
"Co-opting Linux Processes for High Performance Network Simulation"<br>by Rob Jansen,<br>Jim Newsome,<br>and Ryan Wails<br>in the USENIX Annual Technical Conference, 2022.
Winner of the Best Paper Award at the 2022 USENIX Annual Technical Conference!
Read Article<br>View Media
Open Source Development
Shadow is 100% open-source software, written primarily in<br>Rust and C.
Fork on Github
Read the User Guide
Ask Questions