pchar - Perform network measurements along an Internet path
pchar [ -cChnqSvV ] [ -a analysis
] [ -b burst ] [ -d debug ]
[ -g gap ] [ -H hops ] [
-i interface ] [ -I increment ] [
-l origin ] [ -m mtu ] [
-M mode ] [ -p protocol ] [
-P port ] [ -R reps ] [
-s hop ] [ -t timeout ] [
-w file ] -r file | host
Pchar measures the characteristics of the network path
between two Internet hosts, on either IPv4 or IPv6 networks. It is an
independently-written reimplementation of the pathchar utility, using
similar algorithms. Both programs measure network throughput and round-trip
time by sending varying-sized UDP packets into the network and waiting for
ICMP messages in response. Like traceroute, they modulate the IPv4
time-to-live (TTL) field or the IPv6 hop limit field to get measurements at
different distances along a path.
In its default mode, a run of pchar over a short path might
produce an output that looks like this:
pchar to dancer.ca.sandia.gov (146.246.246.1) using UDP/IPv4
Packet size increments by 32 to 1500
46 test(s) per repetition
32 repetition(s) per hop
0:
Partial loss: 0 / 1472 (0%)
Partial char: rtt = 0.657235 ms, (b = 0.000358 ms/B), r2 = 0.989713
stddev rtt = 0.004140, stddev b = 0.000006
Hop char: rtt = 0.657235 ms, bw = 22333.268771 Kbps
Partial queueing: avg = 0.000150 ms (418 bytes)
1: 146.246.243.254 (con243.ca.sandia.gov)
Partial loss: 0 / 1472 (0%)
Partial char: rtt = 0.811278 ms, (b = 0.000454 ms/B), r2 = 0.995401
stddev rtt = 0.003499, stddev b = 0.000005
Hop char: rtt = 0.154043 ms, bw = 83454.764777 Kbps
Partial queueing: avg = 0.000153 ms (336 bytes)
2: 146.246.250.251 (slcon1.ca.sandia.gov)
Partial loss: 0 / 1472 (0%)
Partial char: rtt = 1.044412 ms, (b = 0.002161 ms/B), r2 = 0.999658
stddev rtt = 0.004533, stddev b = 0.000006
Hop char: rtt = 0.233133 ms, bw = 4686.320952 Kbps
Partial queueing: avg = 0.000100 ms (46 bytes)
3: 146.246.246.1 (dancer.ca.sandia.gov)
Path length: 3 hops
Path char: rtt = 1.044412 ms, r2 = 0.999658
Path bottleneck: 4686.320952 Kbps
Path pipe: 611 bytes
Path queueing: average = 0.000100 ms (46 bytes)
The path here passes through three hops. Each hop consists of four
lines of output: Partial loss documents the number and percentage of
probe packets that were lost during the probes for that hop. The partial
char line shows the estimated round-trip time from the probing host
through the current hop. The hop char line shows estimates of the
round-trip time and bandwidth for the current hop. Finally, the partial
queueing shows an estimate of the average queueing along the path, up to
and including the current hop.
Between each hop, pchar prints the IP address and (if
known) name of the host/router at the end of the link.
After the last hop (usually the target host), pchar prints
statistics on the entire path, including the path length and path
pipe (the latter is an estimate of the delay-bandwidth product of the
path).
Pchar has another mode of operation, called trout
(short for “tiny traceroute”). In this mode, packets of random
sizes (one packet per hop diameter) are sent along the path to a
destination. No attempt at estimating link properties is made; however, this
mode is extremely fast. It is intended for use as a part of a larger
measurement infrastructure. The output from this mode might look like:
trout to bmah-freebsd-1.cisco.com (171.70.84.44) using ICMP/IPv4 (raw sockets)
Packet size increments from 28 to 1500 by 32
0: 171.70.84.42 (bmah-freebsd-0.cisco.com)
1: 171.70.84.44 (bmah-freebsd-1.cisco.com) 352 -> 352 bytes: 0.318 ms
- -a analysis
- Set analysis type. Current choices are lsq (the default), which
uses a minimum filter followed by a least sum-of-squares fit to estimate
link bandwidths, kendall, which uses the same minimum filter
followed by a linear fit based on Kendall's test statistic, lms,
which does a minimum filter followed by a least median of squares fit, and
lmsint, which is an implementation of the lms computations
using only integer arithmetic.
- -b burst
- Set the size of packet bursts. A burst parameter > 1 will result in
some number of ICMP_ECHOREPLY packets sent before the probe packet to
induce queueing. These packets are useful for measuring store-and-forward
switched subnets, but make measurements of fast links behind bottlenecks
inaccurate.
- -c
- Ignore routing changes detected during running. Normally, pchar
will exit if it receives responses from more than one host for a given
hop, assuming that this condition is caused by a routing transient.
However, certain load-balancing schemes can also cause this condition. In
such situations, using the -c option may be useful.
- -C
- Use pcap(3) packet capture library (this must have been enabled at
configure time). Note that this option must be specified to enable
TCP-based probes.
- -d debug
- Sets debugging output level. Generally not useful except to the
developer.
- -g gap
- Set the mean inter-probe gap in seconds. The default is 0.25, which
results in approximately four probes per second being run. Care should be
taken not to decrease this gap by too much, in order to avoid flooding the
network. The default value here is deliberately conservative; users with
the need or desire to probe more quickly are presumed to have at least
perused the documentation for the relevant command-line options.
- -G gaptype
- Set distribution used to select interprobe gap times. Current alternatives
are fixed (the default) and exp, which picks gap times from
an exponential distribution. The latter option is an attempt to simulate a
Poisson process of probe packets (a lot of aliteration), however due to
the fact that each probe experiment takes a non-zero amount of time, this
is only an approximation.
- -H hops
- Set the maximum number of hops that pchar will probe into the
network. The default maximum is 30 hops, the same as with pathchar
and traceroute.
- -h
- Print usage information.
- -i interface
- Set the interface to listen on for the -C option.
- -I increment
- Set the probe packet size increment. Pchar will send IP packets
with sizes that are integer multiples of increment, up to the
maximum specified by the -m option. The default is a 32-byte
increment. Small increments should produce more accurate results, but will
result in more probes (thus taking longer to run).
- -l origin
- Set the local source of probe packets. This option is mostly useful on
multi-homed hosts. If not specified, it defaults to the value of
hostname(3). Note that this option must be used if the local
hostname cannot be resolved to an IPv4 or IPv6 address.
- -m mtu
- Set the maximum probe packet size. This value should be no larger than the
path MTU between the two hosts. The default is 1500 bytes, the Ethernet
MTU.
- -M mode
- Set operational mode. The normal operational mode is pchar, which
uses active probes to characterize the bandwidth, latency, loss, and
queueing of the links comprising a path. Another mode is trout, a
“tiny traceroute” that is intended to be used as a portion
of a larger network management infrastructure.
- -n
- Don't attempt to resolve host addresses to names.
- -p protocol
- Select protocol to use. Current options are: ipv4udp (UDP over
IPv4), ipv4raw (UDP over IPv4, using raw IP packets),
ipv4icmp (ICMP over IPv4, using raw IP packets), ipv4tcp
(TCP over IPv4, using raw IP packets), ipv6icmp (ICMPv6 over IPv6,
using raw IP packets), and ipv6udp (UDP over IPv6). The default
protocol is either ipv4udp or ipv6udp, as appropriate to the
network-layer address associated with the hostname provided.
Compared with ipv4udp, the implementation of ipv4raw offers
finer control over the contents of packet fields, but is otherwise
identical. Note that the ipv6icmp and ipv6udp options are
only available if IPv6 support was compiled into pchar, which can
be selected at configure time. Finally, the ipv4tcp option requires
that pcap(3) support be specified at configure time and enabled
with the -C option.
- -P port
- Select starting UDP port number (the default is 32768). Pchar uses
consecutive port numbers starting from this value, counting up. Care
should be taken not to use port numbers that are actually in use by
network services.
- -q
- Quiet mode, suppressing all output. Useful if writing statistics to
standard out (see the -w option).
- -r file
- Read measurements in from a file named file, as written by the
-w option. This option is useful for experimenting with different
analysis algorithms over a fixed data set.
- -R reps
- Set the number of repetitions of each probe packet size to be sent. The
default is 32 packets of each size. Smaller values speed up testing, at
the expense of accuracy.
- -s hop
- Set the starting hop at which to begin probing. The default is 1, so
network probing will begin at the host adjacent to the host where
pchar is being run. Larger values allow probing to begin farther
out from the testing host; this can be helpful when attempting to probe
outside a local internetwork whose characterisics are well-known.
- -S
- Do SNMP queries at each hop to determine each router's idea of what it
thinks its next-hop interface characteristics are. Use of this features
requires the UCD SNMP library, as well as enabling at configure-time using
--with-snmp.
- -t timeout
- Set the amount of time (in seconds) that pchar will wait for an
ICMP error message before declaring a packet loss. The default is 3
seconds.
- -T tos
- Set the IP Type Of Service bits for outgoing UDP packets. This option
isn't terribly useful for a lot of people, but it can be used, for
example, to force a particular DiffServ codepoint within networks that
support this functionality. For values of -p that use IPv6 as a
network-layer protocol, this option sets the traffic class field in the
IPv6 header according to RFC 2460.
- -v
- Verbose mode. While each probe is in progress, print a synopsis of the hop
number, repetition, and probe packet size on standard out. Verbose mode
mimics the output of pathchar.
- -V
- Print version and copyright information and exit.
- -w file
- Write statistics to a datafile named file. This file can be read
back in by specifying the -r option in a subsequent run of
pchar for off-line analysis, or parsed by other programs for
plotting, etc.
- If file is given as - , then the statistics are written to standard
out. In this case, the quiet flag -q may be useful, to avoid
cluttering the standard output stream.
Because pchar relies on measurements to drive its estimates
of network characteristics, it may occasionally produce some seemingly odd
results. Care should be taken when interpreting the output of pchar.
For example, the coeffecients of determination for the least squares fit can
be useful in seeing how “good” of a fit the bandwidth and
round-trip time parameters describe the performance seen by the probe
packets. The coefficient of determination takes values from 0 to 1, where a
value of 1 indicates that the estimated parameters perfectly fit the
data.
Pchar was originally named pc, which was either an
abbreviation for “path characteristics” or “pathchar
clone”.
Pathchar automatically determines an appropriate maximum
packet size to use, based on a Path MTU discovery algorithm. Pchar
relies on the user specifying the maximum packet size manually.
Some versions of Solaris rate-limit the generation of ICMP error
messages. Any run of pchar through, or to, a Solaris machine may show
abnormally high packet loss rates. This feature of Solaris affects
traceroute and pathchar as well, but not ping. Some
versions of Linux appear to have similar rate-limiting. In situations such
as this, the use of ICMP-based probes (selected by the -p option) may
yield more satisfactory (or at least faster) results.
Timestamps printed after each run are printed relative to the
local time zone. Timestamps saved in trace files are expressed as seconds
past the epoch.
There are way too many command-line options.
Bruce A. Mah <bmah@acm.org>. The author of the original
pathchar utility is Van Jacobson <van@ee.lbl.gov>. The
algorithms used by pchar were coded from Van Jacobson's viewgraphs
describing the operation of pathchar.