PCHAR: A TOOL FOR MEASURING NETWORK PATH CHARACTERISTICS Bruce A. Mah $Id: CHANGES,v 1.67 2001/06/13 17:39:48 bmah Exp $ --------------------------------------------------------- This file lists changes to pchar, in reverse chronological order (i.e. most recent entries at the top of the file). pchar-1.4: Multi-packet probes, TCP probes, kernel-level timestamps. pchar now has some limited compatability with the NRL IPv6 implementation in BSDI 4.1, thanks to some patches originally submitted by Antonio Querubin . 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" . pchar-1.3.2: Solaris and IRIX compatability, a few bugfixes, SUID root installation as an option. Compatability with IRIX has been improved, thanks to Ayamura KIKUCHI . A related compatability fix was provided by Jeffrey Mogul . pchar should now use less memory to hold its results, due to a change in the way memory is allocated and managed. Henk Langeveld 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 . 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. Fixed a typo that broke SNMP support. Reported by "Soren S. Jorvang" and Karl Auerbach . Version 5.0 of the Sun C++ compiler defines some slightly different preprocessor variables; account for this. Pointed out by Erik Nordmark . The Sun compiler doesn't like arrays whose sizes are determined at runtime; this has been fixed. Pointed out by Henk Langeveld . Added a prototype for srandom(3) to support Linux compilation on more recent gcc versions. This requirement pointed out by Jaiwant Mulik and Karl Auerbach . 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. 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" 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 . 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. SNMP query feature (-S flag) from Karl Auerbach . 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 and "Aaron Seelye" . 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 . Fix off-by-one handling of filenames which could have caused tracefiles to break again. Use to determine IPv6 status at configure time, and let --with-ipv6 and --without-ipv6 override the test. Suggested by "Angelos D. Keromytis" and Erik Nordmark . Also cache the results of the IPv6 test between configure runs. Changes for better compatability with Solaris 8 native IPv6, from Erik Nordmark . pchar 1.1.1: Fixed a bug which caused reading back of tracefiles to be broken. 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. 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 . Incorporate patches from "Angelos D. Keromytis" 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)" for SGI IRIX and the SGI vendor compiler. Incorporate patches from Jeffrey Mogul 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 . Move manual page to section 8 from section 1. Minor fixes for IPv6 from . 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 . Fixed calculation of total queueing along the path. Fixed buglet in install of manpage, patch from SUMIKAWA Munechika . Fixed FAQ Q1 to handle configure-time shared library problems on Solaris. "make pristine" really does now. Omissions pointed out by Pete Wyckoff . 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 . 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 . 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 . pchar 0.3: Bugfixes, some internal code rearrangement, and raw IPv4 support (13 August 1999). Minor documentation cleanups suggested by Rose Tsang . "make install" now works, reported and fixed by Pete Wyckoff , along with sundry other embarassing bugs. -c option now works, problem reported by Linda Winkler . 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 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 , Mike Collins , and Rebecca Nitzan . 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 . Fix divide-by-zero problems when no packets come back from the far end of a hop. Noted by Pete Wyckoff . pc 0.0: Semi-release, internal to SNL/CA (12 January 1999).