OverviewScriptroute 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.
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.
PapersNeil Spring, David Wetherall, and Tom Anderson
Scriptroute: A Public Internet Measurement Facility pdf ps
USENIX Symposium on Internet Technologies and Systems (USITS), 2003.
ManualsScriptroute Administrator's Guide (work in progress) pdf ps
Information about building, installing, and configuring Scriptroute at your site.
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
TalksNeil 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.
www.scriptroute.org/source. It has been tested to run on Linux, FreeBSD, and OS X.
SubversionScriptroute's subversion repository contains unreleased modifications and planetlab maintenance code that is not included in the distribution. https://subversion.umiacs.umd.edu/scriptroute/scriptroute. To access, install a subversion client and use svn co (that url).
DebianAdd 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.
RedhatRedhat 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.310.3 (or perhaps later) is required. Install the most recent disk image from scriptroute.org/mac. This installer includes a recent copy of undns.
FinkThis 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 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 scriptsExample 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.
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.