Shadow: Experimentation tool simplifies research, dev, testing and eval of app

teleforce1 pts0 comments

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

shadow network research real simulated networks

Related Articles