Scriptroute Network Measurement
Overview
Scriptroute is a flexible network measurement and debugging system. Measurements are expressed as scripts that run as an ordinary user, and a privileged 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 300 servers. Just grab a cookie.
- Unprivileged 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 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 and rdtsc to read processor cycle counters unaffected by NTP.
- Unprivileged 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
A bare-bones, dynamically generated list of currently active servers. Many are part of PlanetLab.
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.
Documentation
Papers
Neil Spring, David Wetherall, and Tom AndersonScriptroute: A Public Internet Measurement Facility pdf
USENIX Symposium on Internet Technologies and Systems (USITS), 2003.
Manuals
Scriptroute Administrator's Guide (work in progress) pdfInformation about building, installing, and configuring Scriptroute at your site. Scriptroute Scriptwriter's Guide (work in progress) pdf
Information about writing and executing measurement tools using Scriptroute.
Program man pages:
- scriptrouted (the daemon) pdf
- srinterpreter (the script interpreter) pdf
- sr-remotely.rb (remote executor) pdf
- sr-listservers (server lister) pdf
Measurement script man pages:
- sr-ally (alias resolver) pdf
- sr-rockettrace (robust traceroute) pdf
- sr-sprobe (packet-pair bandwidth) pdf
Talks
Neil Spring, David Wetherall, and Tom AndersonScriptroute: 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
North American Network Operator's Group (NANOG 26), October 2002.
Software
Please subscribe to the Scriptroute mailing list before downloading and installing scriptroute software. This is important for providing timely distribution of software fixes.Source
Scriptroute source code is available at: www.scriptroute.org/source.Subversion
Scriptroute's subversion repository contains unreleased modifications and planetlab maintenance code that is not included in the distribution. https://subversion.umiacs.umd.edu/scriptroute/scriptroute. svn co (that url).Binary Packages
Debian
Add to your /etc/apt/sources.list file:deb http://www.scriptroute.org/debian/ stable main deb-src http://www.scriptroute.org/debian/ stable main
Don't forget to edit /etc/scriptroute/scriptrouted.conf.
Redhat
Redhat packages are available at: www.scriptroute.org/redhat 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 scriptroute.org/mac.Fink
This is an older way to get scriptroute on a mac, not well supported.Add to your /sw/etc/apt/sources.list file:
deb http://www.scriptroute.org/fink ./
Don't forget to edit /sw/etc/scriptrouted.conf.
PlanetLab
A script to install redhat packages for use in PlanetLab vserver slices is available at: www.scriptroute.org/planetlab/planetlab-install 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.- simple traceroute
- poisson ping
- 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 cs.umd.edu if you want to contact me directly.