Network Working Group                                       Steve Parker
Internet Draft                                           Chris Schmechel
Expiration Date: May 1998                         Sun Microsystems, Inc.
                                                           November 1997


                  Some Testing Tools for TCP Implementors
                     <draft-ietf-tcpimpl-tools-02.txt>



    1.  Status of this Memo

       This document is an Internet Draft.  Internet Drafts are working
       documents of the Internet Engineering Task Force (IETF), its
       areas, and its working groups.  Note that other groups may also
       distribute working documents as Internet Drafts.

       Internet Drafts are draft documents valid for a maximum of six
       months, and may be updated, replaced, or obsoleted by other docu-
       ments at any time.  It is inappropriate to use Internet Drafts as
       reference material or to cite them other than as ``work in pro-
       gress''.

       To learn the current status of any Internet Draft, please check
       the ``1id-abstracts.txt'' listing contained in the Internet
       Drafts shadow directories on ftp.is.co.za  (Africa),
       nic.nordu.net  (Europe), munnari.oz.au  (Pacific Rim),
       ds.internic.net  (US East Coast), or ftp.isi.edu  (US West
       Coast).

       This memo provides information for the Internet community.  This
       memo does not specify an Internet standard of any kind.  Distri-
       bution of this memo is unlimited.



    2.  Introduction

       Available tools for testing TCP implementations are catalogued by
       this memo.  Hopefully disseminating this information will
       encourage those responsible for building and maintaining TCP to
       make the best use of available tests.  The type of testing the
       tool provides, the type of tests it is capable of doing, and its
       availability is enumerated.  This document lists only tools which
       can evaluate one or more TCP implementations, or which can privde
       some specific results which describe or evaluate the TCP being
       tested.



Parker, Schmechel, Editors                              [Page 1]


INTERNET-DRAFT  Some Testing Tools for TCP Implementors    November 1997


       Each tools is defined as follows:

    Name

       The name associated with the testing tool.

    Category

       One or more categories of tests which the tools is capable of
       providing.  Categories used so far: functional correctness, per-
       formance, stress.

    Description

       A description of the tools construction, and the implementation
       methodology of the tests.

    Automation

       What steps are required to complete the test?  What human inter-
       vention is required?

    Availability

       How do you retrieve this tool and get more information about it?

    Required Environment

       Compilers, OS version, etc. required to build and/or run the
       associated tool.

    References

       A list of publications relating to the tool, if any.



    3.  Tools



    3.1.  Dbs


    Author
       Yukio Murayama





Parker, Schmechel, Editors                              [Page 2]


INTERNET-DRAFT  Some Testing Tools for TCP Implementors    November 1997


    Category
       Performance / Stress


    Description
       Dbs is a tool which allows multiple data transfers to be coordi-
       nated, and the resulting TCP behavior to be reviewed.  Results
       are presented as ASCII log files.


    Automation
       Command of execution is driven by a script file.


    Availability
       See http://www.ai3.net/products/dbs for details of precise OS
       versions supported, and for download of the source code.  Current
       implementation supports BSDI BSD/OS, Linux, mkLinux, SunOS, IRIX,
       Ultrix, NEWS OS, HP-UX.  Other environments are likely easy to
       add.


    Required Environment
       C language compiler, UNIX-style socket API support.



    3.2.  Dummynet


    Author
       Luigi Rizzo


    Category
       Functional Correctness / Performance


    Description
       Dummynet is a tool which simulates the presence of finite size
       queues, bandwidth limitations, and communication delays.  Dum-
       mynet inserts between two layers of the protocol stack (in the
       current implementation between TCP and IP), simulating the above
       effects in an operational system.  This way experiments can be
       done using real protocol implementations and real applications,
       even running on the same host (dummynet also intercepts communi-
       cations on the loopback interface).  Reconfiguration of dummynet
       parameters (delay, queue size, bandwidth) can be done on the fly



Parker, Schmechel, Editors                              [Page 3]


INTERNET-DRAFT  Some Testing Tools for TCP Implementors    November 1997


       by using a sysctl call.  The overhead of dummynet is extremely
       low.


    Automation
       Requires merging diff files with kernel source code.  Command-
       line driven through the sysctl command to modify kernel vari-
       ables.


    Availability
       See http://www.iet.unipi.it/~luigi/research.html or e-mail Luigi
       Rizzo (l.rizzo@iet.unipi.it).  Source code is available for
       FreeBSD 2.1 and FreeBSD 2.2 (easily adaptable to other BSD-
       derived systems).


    Required Environment
       C language compiler, BSD-derived system, kernel source code.


    References
       [Riz97]



    3.3.  Netperf


    Author
       Rick Jones


    Category
       Performance


    Description
       Single connection bandwidth or latency tests for TCP, UDP, and
       DLPI.  Includes provisions for CPU utilization measurement.


    Automation
       Requires compilation (K&R C sufficient for all but -DHISTOGRAM,
       may require ANSI C in the future) if starting from source. Execu-
       tion as child of inetd requires editing of /etc/services and
       /etc/inetd.conf.  Scripts are provided for a quick look
       (snapshot_script), bulk throughput of TCP and UDP, and latency



Parker, Schmechel, Editors                              [Page 4]


INTERNET-DRAFT  Some Testing Tools for TCP Implementors    November 1997


       for TCP and UDP.  It is command-line driven.


    Availability
       See http://www.cup.hp.com/netperf/NetperfPage.html or e-mail Rick
       Jones (raj@cup.hp.com).  Binaries are available here for HP/UX
       Irix, Solaris, and Win32.


    Required Environment
       C language compiler, POSIX.1, sockets.



    3.4.  Orchestra


    Author
       Scott Dawson, Farnam Jahanian, and Todd Mitton


    Category
       Functional Correctness / Performance


    Description
       This tool is a library which provides the user with an ability to
       build a protocol layer capable of performing fault injection on
       protocols.  Several fault injection layers have been built using
       this library, one of which has been used to test different vendor
       implementations of TCP.  This is accomplished by probing the ven-
       dor implementation from one machine containing a protocol stack
       that has been instrumented with Orchestra.  A connection is
       opened from the vendor TCP implementation to the machine which
       has been instrumented.  Faults may then be injected at the
       Orchestra side of the connection and the vendor TCP's response
       may be monitored.  The most recent version of Orchestra runs
       inside the X-kernel protocol stack on the OSF MK operating sys-
       tem.

       When using Orchestra to test a protocol, the fault injection
       layer is placed below the target protocol in the protocol stack.
       This can either be done on one machine on the network, if proto-
       col stacks on the other machines cannot be modified (as in the
       case of testing TCP), or can be done on all machines on the net-
       work (as in the case of testing a protocol under development).
       Once the fault injection layer is in the protocol stack, all mes-
       sages sent by and destined for the target protocol pass through



Parker, Schmechel, Editors                              [Page 5]


INTERNET-DRAFT  Some Testing Tools for TCP Implementors    November 1997


       it on their way to/from the network.  The Orchestra fault injec-
       tion layer can manipulate these messages.  In particular, it can
       drop, delay, re-order, duplicate, or modify messages.  It can
       also introduce new messages into the system if desired.

       The actions of the Orchestra fault injection layer on each mes-
       sage are determined by a script, written in Tcl.  This script is
       interpreted by the fault injection layer when the message enters
       the layer.  The script has access to the header information about
       the message, and can make decisions based on header values.  It
       can also keep information about previous messages, counters, or
       any other data which the script writer deems useful.  Users of
       Orchestra may also define their own actions to be taken on mes-
       sages, written in C, that may be called from the fault injection
       scripts.


    Automation
       Scripts can be specified either using a graphical user interface
       which generates Tcl, or by writing Tcl directly.  At this time,
       post-analysis of the results of the test must also be performed
       by the user.  Essentially this consists of looking at a packet
       trace that Orchestra generates for (in)correct behavior.  Must
       compile and link fault generated layer with the protocol stack.


    Availability
       See http://www.eecs.umich.edu/RTCL/projects/orchestra/ or e-mail
       Scott Dawson (sdawson@eecs.umich.edu).


    Required Environment
       OSF MK operating system, or X-kernel like network architecture,
       or adapted to network stack.


    References
       [DJ94], [DJM96a], [DJM96b]



    3.5.  Packet Shell


    Author
       Steve Parker and Chris Schmechel





Parker, Schmechel, Editors                              [Page 6]


INTERNET-DRAFT  Some Testing Tools for TCP Implementors    November 1997


    Category
       Functional Correctness / Performance


    Description
       An extensible Tcl/Tk based software toolset for protocol develop-
       ment and testing. Tcl (Tool Command Language) is an embeddable
       scripting language and Tk is a graphical user interface toolkit
       based on Tcl.  The Packet Shell creates Tcl commands that allow
       you to create, modify, send, and receive packets on networks.
       The operations for each protocol are supplied by a dynamic linked
       library called a protocol library.  These libraries are silently
       linked in from a special directory when the Packet Shell begins
       execution. The current protocol libraries are: IP, IPv6, IPv6
       extensions, ICMP, ICMPv6, Ethernet layer, data layer, file layer
       (snoop and tcpdump support), socket layer, TCP, TLI.

       It includes harness, which is a Tk based graphical user interface
       for creating test scripts within the Packet Shell.  It includes
       tests for no initial slow start, and retain out of sequence data
       as TCP test cases mentioned in [PADHV98].

       It includes tcpgraph, which is used with a snoop or tcpdump cap-
       ture file to produce a TCP time-sequence plot using xplot.


    Automation
       Command-line driven through Tcl commands, or graphical user
       interface models are available through the harness format.


    Availability
       See http://playground.sun.com/psh/ or e-mail Steve Parker
       (sparker@Eng.Sun.COM) or Chris Schmechel (cschmec@Eng.Sun.COM).


    Required Environment
       Solaris 2.4 or higher.  Porting required for other operating sys-
       tems.



    3.6.  Tcpanaly








Parker, Schmechel, Editors                              [Page 7]


INTERNET-DRAFT  Some Testing Tools for TCP Implementors    November 1997


    Author
       Vern Paxson


    Category
       Functional Correctness / Performance


    Description
       This is a tool for automatically analyzing a TCP implementation's
       behavior by inspecting packet traces of the TCP's activity. It
       does so through packet filter traces produced by tcpdump.  It has
       coded within it knowledge of a large number of TCP implementa-
       tions.  Using this, it can determine whether a given trace
       appears consistent with a given implementation, and, if so,
       exactly why the TCP chose to transmit each packet at the time it
       did.  If a trace is found inconsistent with a TCP, tcpanaly
       either diagnoses a likely measurement error present in the trace,
       or indicates exactly whether the activity in the trace deviates
       from that of the TCP, which can greatly aid in determining how
       the traced implementation behaves.

       Tcpanaly's category is somewhat difficult to classify, since it
       attempts to profile the behavior of an implementation, rather
       than to explicitly test specific correctness or performance
       issues.  However, this profile identifies correctness and perfor-
       mance problems.

       Adding new implementations of TCP behavior is possible with tcpa-
       naly through the use of C++ classes.


    Automation
       Command-line driven and only the traces of the TCP sending and
       receiving bulk data transfers are needed as input.


    Availability
       Contact Vern Paxson (vern@ee.lbl.gov).


    Required Environment
       C++ compiler.








Parker, Schmechel, Editors                              [Page 8]


INTERNET-DRAFT  Some Testing Tools for TCP Implementors    November 1997


    References
       [Pax97a]



    3.7.  Tcptrace


    Author
       Shawn Ostermann


    Category
       Functional Correctness / Performance


    Description
       This is a TCP trace file analysis tool.  It reads output trace
       files in the formats of : tcpdump, snoop, etherpeek, and netm.

       For each connection, it keeps track of elapsed time,
       bytes/segments sent and received, retransmissions, round trip
       times, window advertisements, throughput, etc from simple to very
       detailed output.

       It can also produce three different types of graphs:

       Time Sequence Graph (shows the segments sent and ACKs returned as
       a function of time)

       Instantaneous Throughput (shows the instantaneous, averaged over
       a few segments, throughput of the connection as a function of
       time).

       Round Trip Times (shows the round trip times for the ACKs as a
       function of time)


    Automation
       Command-line driven, and uses the xplot program to view the
       graphs.


    Availability
       Source code is available, and Solaris binary along with sample
       traces.  See
       http://jarok.cs.ohiou.edu/software/tcptrace/tcptrace.html or e-
       mail Shawn Ostermann (ostermann@cs.ohiou.edu).



Parker, Schmechel, Editors                              [Page 9]


INTERNET-DRAFT  Some Testing Tools for TCP Implementors    November 1997


    Required Environment
       C compiler, Solaris, FreeBSD, NetBSD, HPUX, Linux.



    3.8.  Tracelook


    Author
       Greg Minshall


    Category
       Functional Correctness / Performance


    Description
       This is a Tcl/Tk program for graphically viewing the contents of
       tcpdump trace files.


    Automation
       Command-line driven with a graphical user interface for the
       graph.


    Availability
       See http://www.ipsilon.com/~minshall/sw/tracelook/tracelook.html
       or e-mail Greg Minshall (minshall@ipsilon.com).


    Required Environment
       A modern version of awk, and Tcl/Tk (Tk version 3.6 or higher).
       The program xgraph is required to view the graphs under X11.



    3.9.  TReno


    Author
       Matt Mathis and Jamshid Mahdavi


    Category
       Performance





Parker, Schmechel, Editors                             [Page 10]


INTERNET-DRAFT  Some Testing Tools for TCP Implementors    November 1997


    Description
       This is a TCP throughput measurement tool based on sending UDP or
       ICMP packets in patterns that are controlled at the user-level so
       that their timing reflects what would be sent by a TCP that
       observes proper congestion control (and implements SACK).  This
       allows it to measure throughput independent of the TCP implemen-
       tation of end hosts and serve as a useful platform for prototyp-
       ing TCP changes.


    Automation
       Command-line driven.  No "server" is required, and it only
       requires a single argument of the machine to run the test to.


    Availability
       See http://www.psc.edu/networking/treno_info.html or e-mail Matt
       Mathis (mathis@psc.edu) or Jamshid Mahdavi (mahdavi@psc.edu).


    Required Environment
       C compiler, POSIX.1, raw sockets.



    3.10.  Ttcp


    Author
       Unknown


    Category
       Performance


    Description
       Originally written to move files around, ttcp became the classic
       throughput benchmark or load generator, with the addition of sup-
       port for sourcing to/from memory.  It has spawned many variants,
       recent ones include support for UDP, data pattern generation,
       page alignment, and even alignment offset control.


    Automation
       Command-line driven.





Parker, Schmechel, Editors                             [Page 11]


INTERNET-DRAFT  Some Testing Tools for TCP Implementors    November 1997


    Availability
       See ftp://ftp.arl.mil/pub/ttcp/ or e-mail ARL (ftp@arl.mil) which
       include the most common variants available.


    Required Environment
       C compiler, BSD sockets.



    3.11.  Xplot


    Author
       Tim Shepard


    Category
       Functional Correctness / Performance


    Description
       This is a fairly conventional graphing/plotting tool (xplot
       itself), a script to turn tcpdump output into xplot input, and
       some sample code to generate xplot commands to plot collected TCP
       data.


    Automation
       Command-line driven with a graphical user interface for the plot.


    Availability
       See ftp://mercury.lcs.mit.edu/pub/shep/xplot.tar.gz or e-mail Tim
       Shepard (shep@lcs.mit.edu).


    Required Environment
       C compiler, X11.


    References
       [She91]








Parker, Schmechel, Editors                             [Page 12]


INTERNET-DRAFT  Some Testing Tools for TCP Implementors    November 1997


    4.  Summary
       This draft lists all TCP tests and testing tools reported to the
       authors as part of TCP Implementer's working group and is not
       exhaustive.  These tools have been verified as available by the
       authors.



    5.  Security Considerations

       This version of this memo does not discuss any security-related
       issues though general packet manipulation and packet tracing can
       raise significant security issues.  These issues may be covered
       in a later draft.



    6.  References

       [DJ94]    Scott Dawson and Farnam Jahanian, "Probing and Fault
                 Injection of Distributed Protocol Implementations",
                 University of Michigan Technical Report CSE-TR-217-94,
                 EECS Department.

       [DJM96a]  Scott Dawson, Farnam Jahanian, and Todd Mitton,
                 "ORCHESTRA: A Fault Injection Environment for Distri-
                 buted Systems", University of Michigan Technical Report
                 CSE-TR-318-96, EECS Department.

       [DJM96b]  Scott Dawson, Farnam Jahanian, and Todd Mitton, "Exper-
                 iments on Six Commercial TCP Implementations Using a
                 Software Fault Injection Tool", University of Michigan
                 Technical Report CSE-TR-298-96, EECS Department.

       [Pax97a]  Vern Paxson, "Automated Packet Trace Analysis of TCP
                 Implementations", ACM SIGCOMM '97, September 1997,
                 Cannes, France.

       [PADHV98] V. Paxson, M. Allman, S. Dawson, I. Heavens, and B.
                 Volz, "Known TCP Implementation Problems", Work In Pro-
                 gress, March, 1998.

       [Riz97]   Luigi Rizzo, "Dummynet: a simple approach to the
                 evaluation of network protocols", ACM Computer Communi-
                 cation Review, Vol. 27, N. 1, January 1997, pp.  31-41.

       [She91]   Tim Shepard, "TCP Packet Trace Analysis", MIT Labora-
                 tory for Computer Science MIT-LCS-TR-494, February,



Parker, Schmechel, Editors                             [Page 13]


INTERNET-DRAFT  Some Testing Tools for TCP Implementors    November 1997


                 1991.


    7.  Author's Address

       Steve Parker <sparker@Eng.Sun.COM>
       Sun Microsystems, Inc.
       901 San Antonio Road, UMPK17-202
       Palo Alto, CA 94043
       USA
       Phone: (650) 786-5176

       Chris Schmechel <cschmec@Eng.Sun.COM>
       Sun Microsystems, Inc.
       901 San Antonio Road, UMPK17-202
       Palo Alto, CA, 94043
       USA
       Phone: (650) 786-4053

































Parker, Schmechel, Editors                             [Page 14]