Scamper
scamper is a program that is able to conduct Internet measurement tasks to large numbers of IPv4 and IPv6 addresses, in parallel, to fill a specified packets-per-second rate. Currently, it supports the well-known ping and traceroute techniques, as well as radargun, ally, mercator, sting, and parts of tbit.scamper's developer is Matthew Luckie, member of the WAND group in the Computer Science Department at the University of Waikato.
Source Code
The current snapshot of scamper's source code is cvs-20100517.
The code should compile and run under FreeBSD, OpenBSD, NetBSD, Linux 2.4 / 2.6, MacOS X, Solaris, and DragonFly. Not all of scamper will run on non-FreeBSD systems: for example, the sting and tbit code requires IPFW, which is found on FreeBSD and MacOS X.
All releases of scamper are licensed under the GPL v2.
Network Research
scamper has been used in a small number of projects to date.
Luckie, M., Stasiewicz, B. (2010)
Measuring Path MTU Discovery Failures. Proceedings of Internet
Measurement Conference 2010.
[PDF]
[usage instructions]
[data]
Alistair King: Efficient Internet Topology Discovery Techniques. MSc thesis, University of Waikato, 2010. [PDF]
Stephen Eichler: IPv4/IPv6 ECN deployment. 2009 Class project: [results]
Luckie, M., Hyun, Y. and Huffaker, B. (2008) Traceroute Probe Method and Forward IP Path Inference. Proceedings of Internet Measurement Conference 2008. [PDF] [scamper 20080808b snapshot] [data]
Luckie, M., Cho, K., and Owens, B.
(2005) Inferring and Debugging
Path MTU Discovery Failures. Proceedings of Internet Measurement
Conference 2005.
[PDF]
[scamper 20060331 snapshot]
Cho, K., Luckie, M., and Huffaker, B.
(2004) Identifying IPv6
Network Problems in the Dual-Stack World. Proceedings of
SIGCOMM Network Troubleshooting Workshop.
[PDF]
[scamper 20040613 snapshot]
[tools]
A third-party library written by Young Hyun at CAIDA for reading warts files is available at RubyForge.
Usage
A man page is available here.
usage: scamper [-?46Pv] [-H holdtime] [-M monitorname] [-p pps]
[-s sport] [-o outfile] [-O outtype]
[-c command]
[-D port | -i addr 1..N | listfile]
-? give an overview of the usage of scamper
-4 only open IPv4 sockets
-6 only open IPv6 sockets
-c command string (default: trace)
-D start as a daemon listening for commands on a port
-H time to hold trace for delayed responses (0 < holdtime < 255)
-i IP addresses to trace provided on the command line
-M specify the canonical name of the monitor
-o specify the file to write output to
-O specify the type of output [warts | traceroute]
-p number of packets per second to send (1 <= pps <= 1000)
-P use a datalink to get tx timestamps for outgoing probes
-s source port to use
-v output the version of scamper this binary is
Features
scamper has three modes of operation.
scamper can be fed a list of IP addresses to probe in a text file e.g.
scamper <file>
scamper -i <addr 1> <addr 2> ... <addr N>or it can be remotely controlled using a control socket, listening on a port specified as follows:
scamper -D <port>scamper can do ICMP-based Path MTU discovery. scamper starts with the outgoing interface's MTU and discovers the location of Path MTU bottlenecks. Recent revision of scamper do a PMTUD search when an ICMP fragmentation required message is not returned to establish the PMTU to the next point in the network, followed by a TTL limited search to infer the where failure appears to occur.
scamper -c "trace -M"scamper will use a datalink such as BPF under BSD or PF_PACKET under Linux > 2.2 to obtain a more accurate transmit timestamp with
scamper -Pscamper will output the supported flags with
scamper -?
Building Scamper
The source code includes both a BSD Makefile and a GNU Makefile.
If you're compiling scamper on FreeBSD / NetBSD / OpenBSD, you can
simply type 'make'. If you're compiling scamper on MacOS X or
Linux, you want to compile with 'make -f Makefile.gnu'
It is strongly recommended that you build with make WITH_DEBUG=yes
scamper will output lots of useful debugging information on stderr and
build with debugging symbols in this case. In the event that
scamper does not behave as expected, the stderr and core files will be
necessary to enable the problem to be debugged. Please redirect
stderr to a file, such as with
scamper -i 130.217.251.39 2>err
Release Announcements
If you would like to receive notifications of future releases of scamper, you may subscribe to the receive only mailing list scamper-announce by filling out this form.
Acknowledgements
The development of scamper was funded by the WIDE Project in association with CAIDA for the 12 month period ending
April 2005.
Matthew Luckie, mjl at wand.net.nz

