Network Tools

Shadow – Unique Discrete Event Network Simulator

Shadow is a unique discrete-event network simulator that runs real applications like Tor and Bitcoin, and distributed systems of thousands of nodes on a single machine. Shadow combines the accuracy of emulation with the efficiency and control of simulation, achieving the best of both approaches.

Shadow was developed because there was a recognized need for an accurate, efficient, and scalable tool for Tor experimentation: using the PlanetLab platform is undesirable due to management overhead and lack of control; existing emulators are far too inefficient when scaling to thousands of nodes; roll-your-own simulators are often too inaccurate or generic to be useful for multiple projects; and experiments on the live Tor network are often infeasible due to privacy risks.

The goal for Shadow was to provide a tool that can be used by anyone with a Linux machine or access to EC2 to hasten the development of research prototypes and reduce the time to deployment. Although originally written with Tor experimentation in mind, Shadow can also run Bitcoin and is useful for researching or prototyping other distributed or pe er-to-peer systems including multi-party computation protocols.

Feature Overview

Shadow does the following:

  • creates an isolated simulation environment where virtual hosts may communicate with each other but not with the Internet
  • natively executes real applications like Tor and Bitcoin
  • provides efficient, accurate, and controlled experiments
  • models network topology, latency, and bandwidth
  • runs without root on a single Linux machine, or in the cloud
  • simulates multiple virtual hosts in virtual time
  • simulates the network (TCP stack) and CPU processing delays
  • can run private Tor networks with user/traffic models based on Tor metrics
  • much, much more!

Dependencies


Required:

  • gcc, gcc-c++
  • glib (version >= 2.32.0) (*)
  • igraph (version >= 0.5.4)
  • cmake (version >= 2.8.8)
  • make
  • xz-utils
  • glibc debuginfo

(*) on Ubuntu 14.04, you probably need to manually build glib; see https://github.com/shadow/shadow/issues/302#issuecomment-181906148

 

Recommended Python Modules :

  • python, numpy, scipy, matplotlib, networkx, lxml

 

Recommended System Tools:

  • git, dstat, screen, htop

Download Shadow