Scriptroute University of Washington Department of Computer Science & Engineering
 Scriptroute: A facility for distributed Internet debugging and measurement
  CSE Home  About Us    Search    Contact Info 

  Neil Spring
  David Wetherall
  Tom Anderson


Scriptroute is a flexible network measurement and debugging system. Measurements are expressed as scripts that run as an ordinary user, and a priviledged daemon schedules and manages the packet exchange. The goal is to allow any user to connect to any server and execute any safe network measurement.

Features for users:

  • Remote measurement execution. PlanetLab generously hosts over 200 servers. Just grab a cookie.
  • Unpriviledged logic. If you want to use a different traceroute, there's no need to have it approved and made setuid by your admin, just run it.
  • Several tools. Scriptroute ships with various implementations of ping, sprobe, and traceroute, and even a hop-by-hop bandwidth measurement tool.
  • Better tools. Scriptroute integrates with Rocketfuel's undns library of router name-to-location mappings to tell where routers are geographically.

Features for developers:

  • Generic mechanism. The scriptroute daemon matches responses to the probes you send, even if you send an NTP packet as a probe.
  • Portability layer. Existing measurement tools require low-level hacking to implement, so sometimes they depend on specific features of BSD, IRIX, or older Linux firewall code, for example. Scriptroute has been tested on BSD, OS X, Linux, and even PlanetLab's safe raw sockets.
  • Accurate timing. The daemon schedules packet transmission, busy-waiting as necessary for precise intervals, and uses libpcap to extract packet timings from the kernel.
  • Unpriviledged logic. There is no need for sudo or root to test your measurement, and your users can install your tool themselves. Be a researcher, not a system administrator.
  • Parse measurement output. Format measurement output to simplify parsing for visualization and storage. Don't write a flex parser for traceroute.

Features for administrators:

  • Resource limits. Restrict the bandwidth consumed by network measurements.
  • Flexible security. Prohibit bad packets before they are sent, don't audit tools.
  • Isolation. Only the Scriptroute daemon filters packets -- measurement tools see only the traffic they need.
  • No setuid programs. Provide traceroute as a CGI service without using a setuid binary.

Live Tools

Active servers
A bare-bones, dynamically generated list of currently active servers. Many are part of PlanetLab.

Reverse Path Tree
Build a tree that represents the set of links used to reach an address from all scriptroute sites. Be gentle! This service executes a modified traceroute to a destination you specify from every scriptroute site, and generates a pdf file with the tree for you to browse. The tool requires supervision, so is not always operating: send mail if you see trouble.


Neil Spring, David Wetherall, and Tom Anderson
Scriptroute: A Public Internet Measurement Facility pdf ps
USENIX Symposium on Internet Technologies and Systems (USITS), 2003.


Scriptroute Administrator's Guide (work in progress) pdf ps
Information about building, installing, and configuring Scriptroute at your site.

Scriptroute Scriptwriter's Guide (work in progress) pdf ps
Information about writing and executing measurement tools using Scriptroute.

Program man pages:

  • scriptrouted (the daemon) ps pdf
  • srinterpreter (the script interpreter) ps pdf
  • sr-remotely.rb (remote executor) ps pdf
  • sr-listservers (server lister) ps pdf

Measurement script man pages:

  • sr-ally (alias resolver) ps pdf
  • sr-rockettrace (robust traceroute) ps pdf
  • sr-sprobe (packet-pair bandwidth) ps pdf


Neil Spring, David Wetherall, and Tom Anderson
Scriptroute: A facility for distributed Internet measurement flash
USENIX Symposium on Internet Technologies and Systems (USITS '03), March 2003.

Neil Spring, David Wetherall, and Tom Anderson
Scriptroute: A facility for distributed Internet measurement pdf ps
North American Network Operator's Group (NANOG 26), October 2002.


Please subscribe to the Scriptroute mailing list before downloading and installing scriptroute software. This is important for providing timely distribution of software fixes.


Scriptroute source code is available at: It has been tested to run on Linux, FreeBSD, and OS X.


Scriptroute's subversion repository contains unreleased modifications and planetlab maintenance code that is not included in the distribution. To access, install a subversion client and use svn co (that url).


Add to your /etc/apt/sources.list file:
deb stable main
deb-src stable main

Don't forget to edit /etc/scriptroute/scriptrouted.conf.


Redhat packages are available at: I am not a Redhat user: these packages are not as well engineered as their debian counterparts.

Don't forget to edit /etc/scriptroute/scriptrouted.conf. The package will not start up the daemon automatically on initial installation: this is intentional, to give you a chance to edit the configuration file.

Mac OS X 10.3

10.3 (or perhaps later) is required. Install the most recent disk image from This installer includes a recent copy of undns.


This is an older way to get scriptroute on a mac, not well supported.
Add to your /sw/etc/apt/sources.list file:
deb ./

Don't forget to edit /sw/etc/scriptrouted.conf.


A script to install redhat packages for use in PlanetLab vserver slices is available at: Read the first line, and follow the instructions. This client software will connect to the local daemon running in my vserver. If you have a planetlab account, this is the recommended way to use scriptroute. It is reasonably well tested.

Example scripts

Example scripts are dissected in the Scriptroute Scriptwriter's guide. To execute them, you'll want the rest of the Scriptroute distribution, which includes both scripts to execute measurements remotely and the interpreter and daemon that enable Scriptroute for your site. tulip is a script based on Scriptroute that finds links with packet reordering, loss, and queueing delay.

Mailing List

The scriptroute mailing list exists to facilitate exchanges between users and developers of the Scriptroute system. You can send mail to nspring at if you want to contact me directly.

CSE logo Department of Computer Science & Engineering
University of Washington
Box 352350
Seattle, WA  98195-2350
[comments to Neil Spring]