PCHAR:  A TOOL FOR MEASURING NETWORK PATH CHARACTERISTICS
Bruce A. Mah
<bmah@kitchenlab.org>
$Id: CHANGES 1086 2005-02-12 20:31:40Z bmah $
---------------------------------------------------------
	
This file lists changes to pchar, in reverse chronological order
(i.e. most recent entries at the top of the file).

pchar-1.5:  Compile fixes, minor bug fixes.  Last planned release of pchar.
(12 February 2005)

	Source code moved from CVS to Subversion.  Although generally
	not user-visible, the version control strings now use
	Subversion's format.

	Builds on recent (RH 9.0-vintage) Linux systems seem to work
	now.

	Some off-by-one errors have been fixed, based on
	patches submitted by Anil Madhavapeddy <anil@recoil.org>.

	pchar with SNMP enabled now has at least a chance of working
	correctly.

	pchar no longer incorrectly aborts after a hop with 100%
	packet loss.

	pchar now does a better job of linking libraries using
	--with-snmp on machines where libsnmp depends on libcrypto,
	thanks to Matt Zimmerman <mdz@debian.org>.

	Some problems using --with-pcap on RedHat 7.0/7.1 (possibly
	other Linux distributions as well) were found thanks to a
	debugging session with Fran Boon <flavour@partyvibe.com>.

pchar-1.4:  Multi-packet probes, TCP probes, kernel-level timestamps.
(13 June 2001)

	pchar now has some limited compatability with the NRL IPv6
	implementation in BSDI 4.1, thanks to some patches originally
	submitted by Antonio Querubin <tony@lava.net>.

	pchar now supports TCP over IPv4 and TCP over IPv6 probes.

	pchar now will use the pcap packet capture library if given
	the --with-pcap flag at configure time (the motivation for
	this is to enable TCP probes, as well as to give potentially
	more accurate timestamps).  It is enabled at
	run-time with the new -C flag.  The selection of which network
	interface to snoop is now controlled by the -i flag (in the
	same way as tcpdump(1)).

	The packet-size increment is now controlled by the -I flag
	(it used to be controlled by -i).

	Add -b burst parameter for measuring store-and-forward
	switched subnets, inspired by LBL's pipechar.  It works for
	most, but not all, protocol types (so far, it is supported by 
	everything except UDP over IPv4; note that raw UDP over IPv4
	supports -b just fine).

	Add a time_t cast to fix building on OpenBSD, submitted by 
	"Angelos D. Keromytis" <angelos@keromytis.org>.

pchar-1.3.2: Solaris and IRIX compatability, a few bugfixes, SUID root
installation as an option.  (9 April 2001)

	Compatability with IRIX has been improved, thanks to 
	Ayamura KIKUCHI <ayamura@ayamura.org>.  A related
	compatability fix was provided by Jeffrey Mogul
	<mogul@pa.dec.com>.

	pchar should now use less memory to hold its results, due to a
	change in the way memory is allocated and managed.

	Henk Langeveld <Henk.Langeveld@holland.sun.com> discovered
	some alignment bugs that were breaking on the Sun compiler.
	These have been fixed.

	pchar now prints the start and end times at the end of each
	run (in local time).

	When reading from tracefiles, the origin address in printed
	output used to be taken from the local machine.  This was a bug.  
	The origin address is now properly taken from the tracefile.

	Handle route changes more gracefully, and keep track of up to
	ten alternative routes for a hop.  Asked for by many folks.

	Providing an invalid argument to the -m argument no longer
	produces a core dump.  Submitted by Pete Wyckoff <pw@osc.edu>.

	pchar now has a compile-time option to build and install
	as SUID root (--with-suid).  It's off by default, and needs to
	be explicitly enabled.

pchar-1.3.1:  Compatability release, as noted below. (29 January 2001)

	Fixed a typo that broke SNMP support.  Reported by "Soren
	S. Jorvang" <soren@wasabisystems.com> and 
	Karl Auerbach <karl@CaveBear.com>.

	Version 5.0 of the Sun C++ compiler defines some slightly
	different preprocessor variables; account for this.  Pointed
	out by Erik Nordmark <Erik.Nordmark@eng.sun.com>.

	The Sun compiler doesn't like arrays whose sizes are
	determined at runtime; this has been fixed.  Pointed out
	by Henk Langeveld <Henk.Langeveld@holland.sun.com>.

	Added a prototype for srandom(3) to support Linux
	compilation on more recent gcc versions.  This requirement
	pointed out by Jaiwant Mulik <jmulik@unix.temple.edu> and
	Karl Auerbach <karl@CaveBear.com>.

pchar-1.3 ("Year of the Snake" release): New analysis types, support
for ICMP and ICMPv6 probe packets, "tiny traceroute" mode, outgoing
interface selection, bugfixes. (24 January 2001)

	Added -M option for operational mode.  This controls whether
	pchar retains its original behavior or collects "trouts"
	(tiny traceroutes).

	Added ICMPv6 over IPv6 probes.

	pchar will no longer try output negative RTT or BW estimates.
	They don't have any physical meaning, and they generate the most
	frequent FAQ.  There were a few more cosmetic changes made to
	the output.

	pchar's analysis methods now take into account the size of the
	response packet when computing bandwidth and delay estimates.
	This makes it possible for to use probes which may return
	non-constant-sized responses (such as the ICMP probes below).

	As a consequence of considering response packet sizes, the UDP
	over IPv6 probes will now return more sane values on the last
	hop (they were too low by about 50%).

	Added ICMP over IPv4 and TCP over IPv4 probes.  (TCP over IPv4
	is not completely functional as of this writing.)

	As a consequence of supporting multiple probe types,
	tracefiles for pchar-1.3 and later are not compatible with
	pchar-1.2 and earlier.  The new tracefiles are smaller than
	the old tracefiles due to less redundant information being
	included.

	Added -l flag to set the source address of outgoing probe
	packets.  If this flag is not specified, attempt to use the
	target address to figure out what the correct source address
	should be.  This is a change in behavior from prior versions,
	but it should behave the same on most sanely-configured hosts.
	"Angelos D. Keromytis" <angelos@keromytis.org> gave some
	useful suggestions for implementing this, over a prior, less
	reliable, implementation.

	Added lmsint analysis type, which is the same algorithm as
	LMS, but implemented using integers only.

	Multiple build directories are supported properly, thanks to
	a patch from Paul Southworth <pws@cisco.com>.

	Add least median of squares (LMS) analysis.  This is work
	completed at Sandia/CA, but not committed until now.

pchar-1.2:  Miscellaneous bugfixes, some SNMP support, better use of
IPv6. (5 June 2000)

	SNMP query feature (-S flag) from Karl Auerbach
	<karl@cisco.com>.  This feature requires the UCD SNMP library,
	and is enabled with --with-snmp at configure time.  This
	feature works only with IPv4, and has not been extensively
	tested in its current integration.

	Better portability with glibc2 and gcc-2.95.  Originally
	found on Linux by Lutz Sammer <johns98@gmx.net> and
	"Aaron Seelye" <aseelye@dynacom.net>.

	Handle more gracefully the case where we read in a tracefile
	with a target host who can't be resolved.  (We don't care
	in this case because we're not going to use the resolved
	addresses for anything but printing.)

	Fix a problem with CMSG_* macros on FreeBSD 4.0-STABLE and
	5.0-CURRENT.

	If no protocol is specified with -p, pchar automatically
	selects between IPv4/UDP and IPv6/UDP by doing a DNS query and
	using the address family of the first returned response.
	Enhancement suggested by Erik Nordmark
	<Erik.Nordmark@eng.sun.com>.

        Fix off-by-one handling of filenames which could have caused
        tracefiles to break again.

	Use <sys/socket.h> to determine IPv6 status at configure time,
	and let --with-ipv6 and --without-ipv6 override the test.
	Suggested by "Angelos D. Keromytis"
	<angelos@dsl.cis.upenn.edu> and Erik Nordmark
	<Erik.Nordmark@eng.sun.com>.  Also cache the results of the
	IPv6 test between configure runs.

	Changes for better compatability with Solaris 8 native IPv6,
	from Erik Nordmark <Erik.Nordmark@eng.sun.com>.

pchar 1.1.1:  Fixed a bug which caused reading back of tracefiles
to be broken. (24 January 2000)

	Tracefiles were temporarily broken.

pchar 1.1:  Better compatability with more OSs (in particular, IRIX and
OSF).  Better IPv6 compatability (on BSDs and glibc systems with
integrated IPv6).  Numerous small bugfixes and usability enhancements.
(24 January 2000)

	Remove a KAME assumption as to where IPv6 support lives.  Note
	that KAME users will now need to explicitly configure
	--with-ipv6=/usr/local/v6 on systems that don't have KAME
	integrated into the base OS.  Patch from
	<sumikawa@ebina.hitachi.co.jp>.

	Incorporate patches from "Angelos D. Keromytis"
	<angelos@dsl.cis.upenn.edu> for compilation under the IPv6
	support included in OpenBSD-current.  As a side effect, all
	getipnodename(3), et al. calls were changed to getaddrinfo(3), 
	et al.

	Incorporate patches from "Jeffrey R. Hay (CIC-5)"
	<jrhay@lanl.gov> for SGI IRIX and the SGI vendor compiler.

	Incorporate patches from Jeffrey Mogul <mogul@pa.dec.com> for
	Tru64/Digital Unix/OSF compatability.  These patches also
	attempt to alleviate problems caused by the fact that the
	default clock resolution is 1024 Hz under Tru64 (which is
	too coarse to measure nearby or fast links).

	Try three probes before running the entire measurement
	algorithm to find out if the destination host is really alive.  
	Inspired by a comment by Jeffrey Mogul <mogul@pa.dec.com>.

	Move manual page to section 8 from section 1.

	Minor fixes for IPv6 from <sumikawa@ebina.hitachi.co.jp>.

	bcopy, et al. changed to memcpy, et al.

	Handle more gracefully the case where all packets on a link
	are dropped, based on a patch from Pete Wyckoff
	<pw@dancer.ca.sandia.gov>.

	Fixed calculation of total queueing along the path.

	Fixed buglet in install of manpage, patch from
	SUMIKAWA Munechika <sumikawa@ebina.hitachi.co.jp>.
	
	Fixed FAQ Q1 to handle configure-time shared library problems
	on Solaris.

	"make pristine" really does now.  Omissions pointed out by
	Pete Wyckoff <pw@dancer.ca.sandia.gov>.

pchar 1.0: First externally announced version.  Lots of changes,
including IPv6 support, better Linux compatability, more useful
tracefiles, bugfixes, etc. (3 November 1999)

	Limited IPv6 functionality (./configure --with-ipv6 to enable).

	Portability mods for the Sun SparcWorks compiler.

	Repetitions flag is now -R, to free up -r for...

	-r flag to read in a previously collected set of measurements.
	Inspired by clink, a very similar pathchar reimplementation,
	written by Allen Downey <downey@cs.colby.edu>.

	Measurements written to -w data files are now written
	immediately after each probe measurement, rather than at the
	completion of each hop.  The data file format has changed
	somewhat as well to provide more information, although it 
	is still line-oriented.

	More Linux compatability from Pete Wyckoff 
	<pw@dancer.ca.sandia.gov>.  Also, try to detect firewalls 
	that might be blocking our packets and quit if we find one.

	Add -G gaptype flag to select between fixed inter-probe gaps and
	exponentially-distributed inter-probe gaps.

	Change parameter estimation to perform linear regressions of
	min-filtered datapoints, then a subtraction of parameters.
	Previous behavior was to difference the min-filtered datapoints, then
	perform a simple linear regression.

	Add functionality (and -a command-line option) to select a
	linear regression based on Kendall's test statistic T.

	Fix a problem with -q disabling the bottleneck bandwidth
	computation.

	Add aclocal.m4 to distribution (omitted by mistake).

	Support for multiple/separate build directories contributed 
	by Assar Westerlund <assar@sics.se>.

pchar 0.3: Bugfixes, some internal code rearrangement, and raw IPv4
support (13 August 1999).

	Minor documentation cleanups suggested by Rose Tsang
	<rtsang@ca.sandia.gov>.

	"make install" now works, reported and fixed by Pete Wyckoff
	<pw@dancer.ca.sandia.gov>, along with sundry other embarassing
	bugs.

	-c option now works, problem reported by Linda Winkler 
	<winkler@mcs.anl.gov>.

	Multi-protocol support...pchar now supports both
	normal UDP/IPv4 and raw IPv4 (constructing UDP packets
	internally).  -p option is now enabled.

	Cleanup Makefile.in so that installs use more of the autoconf
	variables and now correctly install the manpage.

	Default install directory moved from ${prefix}/bin
	to ${prefix}/sbin.

pchar 0.2: First externally-available release (23 February 1999).

	Fix Makefile typos which broke non-GNU make builds.

	Portability for IRIX 6.X builds.

	Use tcpdump tests in aclocal.m4 for sa_len and network library
	checks at configure time.

	Add some sanity checking of command-line options, motivated by
	BUGTRAQ posting 
	<Pine.LNX.3.96.990213013035.1224A-100000@server.speedcom.it> 
	regarding the use of traceroute as a packet flooder.

pchar 0.2pre1: Software release for Sandia review and approval (4 February
1999).

	New name:  pc has been renamed pchar.

	Import fresh versions of autoconf files from autoconf-2.13.

	Add -T option to set IPv4 TOS bits, based on discussions with
	Joe Burrescia <joeb@es.net>, Mike Collins <collins@es.net>,
	and Rebecca Nitzan <nitzan@es.net>.

pc 0.1:  Semi-release, internal to SNL/CA (15 January 1999).

	Add -P flag to set an initial UDP port number.

	Corrected interpretation of partial path SLR slope results
	(was formerly being misinterpreted as partial path bandwidth).

	Fixed computation of path pipe.

	Improved Linux compatability, thanks to a patch by Pete
	Wyckoff <pw@dancer.ca.sandia.gov>.

	Fix divide-by-zero problems when no packets come back from the
	far end of a hop.  Noted by Pete Wyckoff
	<pw@dancer.ca.sandia.gov>.

pc 0.0:  Semi-release, internal to SNL/CA (12 January 1999).



