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.scamper's developer is Matthew Luckie, member of the WAND group in the Computer Science Department at the University of Waikato.
The development of scamper was funded by the WIDE Project in association with CAIDA for the 12 month period ending April 2005.
Source Code
The current snapshot of scamper's source code is cvs-20070523p, available here. The code should compile and run under FreeBSD, OpenBSD, NetBSD, Linux 2.4 / 2.6, Mac OS X, Solaris, and DragonFly.
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., 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 Mac OS 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.
Matthew Luckie, mjl at wand.net.nz

