pchar: A Tool for Measuring Internet Path Characteristics

Bruce A. Mah

pchar is a tool to characterize the bandwidth, latency, and loss of links along an end-to-end path through the Internet. It is based on the algorithms of the pathchar utility written by Van Jacobson, formerly of Lawrence Berkeley Laboratories.


2/12/05: pchar-1.5 released. Principally contains build fixes for Linux and other minor bugfixes. This is likely to be the last release of pchar. See the CHANGES file for details.

7/19/04: Made available an unreleased snapshot that fixes (among other things) building on modern Linux systems.

6/13/01: pchar-1.4 released. New features include multi-packet probes (inspired by LBL's pipechar utility), kernel-level timestamps via the pcap library, and TCP probe packets.


The current version of pchar is 1.5. It is available as a gzipped tar file. This distribution is signed with the following PGP public key, available from one of the author's Web pages or from most PGP keyservers:

pub   1024D/5BA052C3 1997-12-08
      Key fingerprint = F829 B805 207D 14C7 7197  7832 D8CA 3171 5BA0 52C3
uid                  Bruce A. Mah <bmah@acm.org>
uid                  Bruce A. Mah <bmah@ca.sandia.gov>
uid                  Bruce A. Mah <bmah@ieee.org>
uid                  Bruce A. Mah <bmah@cisco.com>
uid                  Bruce A. Mah <bmah@employees.org>
uid                  Bruce A. Mah <bmah@freebsd.org>
uid                  Bruce A. Mah <bmah@packetdesign.com>
uid                  Bruce A. Mah <bmah@kitchenlab.org>
sub   2048g/B4E60EA1 1997-12-08

The README and CHANGES files are also available on-line, as well as a short FAQ.

The main development platforms for pchar are FreeBSD and Solaris. There have been reports of success with pchar on:

pchar is written in C++. Various versions of gcc were used during development, although some success has been had with the SparcWorks and IRIX C++ compilers.

IPv6 support in pchar has been tested with various versions of the KAME Project IPv6 stack, and with some of the code integrations of the KAME stack into different BSD versions. pchar is now a part of the ports/pkgsrc collections distributed with the KAME code releases. pchar has also been run successfully on the native IPv6 stack in Solaris 8.

Other Work

Allen B. Downey of Wellesley College has written a very similar program called clink. clink offers some slightly different statistical analysis, as well as the option for Linux in-kernel timestamping of packets.

The original pathchar distributions can be found at the pathchar FTP site. Binary distributions are available for FreeBSD, NetBSD, Solaris, Linux, and OSF/1.

pathrate is a network measurement tool that measures the dispersion of packet pairs to estimate the available bandwidth along a path. It was written by Constantinos Dovolis of the University of Delaware.

Kevin Lai from Stanford University has developed nettimer, a program that, like pchar, does hop-by-hop link characterization. It uses a ``packet tailgating'' technique to help reduce the number of measurements required. nettimer runs on Linux systems only.

pipechar was developed by Jin Guojun of Lawrence Berkeley National Laboratory. It performs hop-by-hop link measurements by using multi-packet probes of varying sizes. It runs on Linux, FreeBSD, and Solaris.

More information on network performance tools can be found in a list maintained by the Cooperative Assocation for Internet Data Analysis (CAIDA).


Feedback on pchar is welcome. Please send mail to bmah@kitchenlab.org.

Last modified: 12 February 2005

Bruce A. Mah