home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1997 December / Internet_Info_CD-ROM_Walnut_Creek_December_1997.iso / drafts / draft_ietf_q_t / draft-ietf-tcpimpl-tools-00.txt < prev    next >
Text File  |  1997-07-16  |  18KB  |  729 lines

  1.  
  2.  
  3. Network    Working    Group                        Steve Parker
  4. Internet Draft                         Chris Schmechel
  5. Expiration Date: December 1997              Sun Microsystems, Inc.
  6.                                    July 1997
  7.  
  8.  
  9.           Some Testing Tools for TCP Implementors
  10.              <draft-ietf-tcpimpl-tools-00.txt>
  11.  
  12.  
  13.  
  14.     1.    Status of this Memo
  15.  
  16.        This document is    an Internet Draft.  Internet Drafts are    working
  17.        documents of the    Internet Engineering Task Force    (IETF),    its
  18.        areas, and its working groups.  Note that other groups may also
  19.        distribute working documents as Internet    Drafts.
  20.  
  21.        Internet    Drafts are draft documents valid for a maximum of six
  22.        months, and may be updated, replaced, or    obsoleted by other docu-
  23.        ments at    any time.  It is inappropriate to use Internet Drafts as
  24.        reference material or to    cite them other    than as    ``work in pro-
  25.        gress''.
  26.  
  27.        To learn    the current status of any Internet Draft, please check
  28.        the ``1id-abstracts.txt'' listing contained in the Internet
  29.        Drafts shadow directories on ftp.is.co.za  (Africa),
  30.        nic.nordu.net  (Europe),    munnari.oz.au  (Pacific    Rim),
  31.        ds.internic.net    (US East Coast), or ftp.isi.edu     (US West
  32.        Coast).
  33.  
  34.        This memo provides information for the Internet community.  This
  35.        memo does not specify an    Internet standard of any kind.    Distri-
  36.        bution of this memo is unlimited.
  37.  
  38.  
  39.  
  40.     2.    Introduction
  41.  
  42.        Available tools for testing TCP implementations are catalogued by
  43.        this memo.  Hopefully disseminating this    information will
  44.        encourage those responsible for building    and maintaing TCP to
  45.        make the    best use of available tests.  The type of testing the
  46.        tool provides, the type of tests    it is capable of doing,    and its
  47.        availability is enumerated.
  48.  
  49.        Each tools is defined as    follows:
  50.  
  51.  
  52.  
  53.  
  54. Parker,    Schmechel, Editors                [Page 1]
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61. INTERNET-DRAFT    Some Testing Tools for TCP Implementors           July 1997
  62.  
  63.  
  64.     Name
  65.  
  66.        The name    associated with    the testing tool.
  67.  
  68.     Category
  69.  
  70.        One or more categories of tests which the tools is capable of
  71.        providing.  Categories used so far: functional correctness, per-
  72.        formance, stress.
  73.  
  74.     Description
  75.  
  76.        A description of    the tools construction,    and the    implementation
  77.        methodology of the tests.
  78.  
  79.     Automation
  80.  
  81.        What steps are required to complete the test?  What human inter-
  82.        vention is required?
  83.  
  84.     Availability
  85.  
  86.        How do you retrieve this    tool and get more information about it?
  87.  
  88.     Required Environment
  89.  
  90.        Compilers, OS version, etc. required to build and/or run    the
  91.        associated tool.
  92.  
  93.  
  94.  
  95.     3.    Tools
  96.  
  97.  
  98.  
  99.     3.1.  Netperf
  100.  
  101.  
  102.     Author
  103.        Rick Jones
  104.  
  105.  
  106.     Category
  107.        Performance
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114.  
  115. Parker,    Schmechel, Editors                [Page 2]
  116.  
  117.  
  118.  
  119.  
  120.  
  121.  
  122. INTERNET-DRAFT    Some Testing Tools for TCP Implementors           July 1997
  123.  
  124.  
  125.     Description
  126.        Single connection bandwidth or latency tests for    TCP, UDP, and
  127.        DLPI.  Includes provisions for CPU utilization measurement.
  128.  
  129.  
  130.     Automation
  131.        Requires    compilation (K&R C sufficient for all but -DHISTOGRAM,
  132.        may require ANSI    C in the future) if starting from source. Execu-
  133.        tion as child of    inetd requires editing of /etc/services    and
  134.        /etc/inetd.conf.     Scripts are provided for a quick look
  135.        (snapshot_script), bulk throughput of TCP and UDP, and latency
  136.        for TCP and UDP.     It is command-line driven.
  137.  
  138.  
  139.     Availability
  140.        See http://www.cup.hp.com/netperf/NetperfPage.html or e-mail Rick
  141.        Jones (raj@hpisrdq.cup.hp.com).    Binaries are available here for
  142.        HP/UX Irix, Solaris, and    Win32.
  143.  
  144.  
  145.     Required Environment
  146.        C language compiler, POSIX.1, sockets.
  147.  
  148.  
  149.  
  150.     3.2.  Orchestra
  151.  
  152.  
  153.     Author
  154.        Scott Dawson, Farnam Jahanian, and Todd Mitton
  155.  
  156.  
  157.     Category
  158.        Functional Correctness /    Performance
  159.  
  160.  
  161.     Description
  162.        This tool is a library which provides the user with an ability to
  163.        build a protocol    layer capable of performing fault injection on
  164.        protocols.  Several fault injection layers have been built using
  165.        this library, one of which has been used    to test    different vendor
  166.        implementations of TCP.    This is    accomplished by    probing    the ven-
  167.        dor implementation from one machine containing a    protocol stack
  168.        that has    been instrumented with Orchestra.  A connection    is
  169.        opened from the vendor TCP implementation to the    machine    which
  170.        has been    instrumented.  Faults may then be injected at the
  171.        Orchestra side of the connection    and the    vendor TCP's response
  172.        may be monitored.  The most recent version of Orchestra runs
  173.  
  174.  
  175.  
  176. Parker,    Schmechel, Editors                [Page 3]
  177.  
  178.  
  179.  
  180.  
  181.  
  182.  
  183. INTERNET-DRAFT    Some Testing Tools for TCP Implementors           July 1997
  184.  
  185.  
  186.        inside the X-kernel protocol stack on the OSF MK    operating sys-
  187.        tem.
  188.  
  189.        When using Orchestra to test a protocol,    the fault injection
  190.        layer is    placed below the target    protocol in the    protocol stack.
  191.        This can    either be done on one machine on the network, if proto-
  192.        col stacks on the other machines    cannot be modified (as in the
  193.        case of testing TCP), or    can be done on all machines on the net-
  194.        work (as    in the case of testing a protocol under    development).
  195.        Once the    fault injection    layer is in the    protocol stack,    all mes-
  196.        sages sent by and destined for the target protocol pass through
  197.        it on their way to/from the network.  The Orchestra fault injec-
  198.        tion layer can manipulate these messages.  In particular, it can
  199.        drop, delay, re-order, duplicate, or modify messages.  It can
  200.        also introduce new messages into    the system if desired.
  201.  
  202.        The actions of the Orchestra fault injection layer on each mes-
  203.        sage are    determined by a    script,    written    in Tcl.     This script is
  204.        interpreted by the fault    injection layer    when the message enters
  205.        the layer.  The script has access to the    header information about
  206.        the message, and    can make decisions based on header values.  It
  207.        can also    keep information about previous    messages, counters, or
  208.        any other data which the    script writer deems useful.  Users of
  209.        Orchestra may also define their own actions to be taken on mes-
  210.        sages, written in C, that may be    called from the    fault injection
  211.        scripts.
  212.  
  213.  
  214.     Automation
  215.        Scripts can be specified    either using a graphical user interface
  216.        which generates Tcl, or by writing Tcl directly.     At this time,
  217.        post-analysis of    the results of the test    must also be performed
  218.        by the user.  Essentially this consists of looking at a packet
  219.        trace that Orchestra generates for (in)correct behavior.     Must
  220.        compile and link    fault generated    layer with the protocol    stack.
  221.  
  222.  
  223.     Availability
  224.        See http://www.eecs.umich.edu/RTCL/projects/orchestra/ or e-mail
  225.        Scott Dawson (sdawson@eecs.umich.edu).
  226.  
  227.  
  228.     Required Environment
  229.        OSF MK operating    system,    or X-kernel like network architecture,
  230.        or adapted to network stack.
  231.  
  232.  
  233.  
  234.  
  235.  
  236.  
  237. Parker,    Schmechel, Editors                [Page 4]
  238.  
  239.  
  240.  
  241.  
  242.  
  243.  
  244. INTERNET-DRAFT    Some Testing Tools for TCP Implementors           July 1997
  245.  
  246.  
  247.     3.3.  Packet Shell
  248.  
  249.  
  250.     Author
  251.        Steve Parker and    Chris Schmechel
  252.  
  253.  
  254.     Category
  255.        Functional Correctness /    Performance
  256.  
  257.  
  258.     Description
  259.        An extensible Tcl/Tk based software toolset for protocol    develop-
  260.        ment and    testing. Tcl (Tool Command Language) is    an embeddable
  261.        scripting language and Tk is a graphical    user interface toolkit
  262.        based on    Tcl.  The Packet Shell creates Tcl commands that allow
  263.        you to create, modify, send, and    receive    packets    on networks.
  264.        The operations for each protocol    are supplied by    a dynamic linked
  265.        library called a    protocol library.  These libraries are silently
  266.        linked in from a    special    directory when the Packet Shell    begins
  267.        execution. The current protocol libraries are: IP, IPv6,    IPv6
  268.        extensions, ICMP, ICMPv6, Ethernet layer, data layer, file layer
  269.        (snoop and tcpdump support), socket layer, TCP, TLI.
  270.  
  271.        It includes harness, which is a Tk based    graphical user interface
  272.        for creating test scripts within    the Packet Shell.  It includes
  273.        tests for no initial slow start,    and retain out of sequence data
  274.        as TCP test cases mentioned in Vern Paxon's first I-D.
  275.  
  276.        It includes tcpgraph, which is used with    a snoop    or tcpdump cap-
  277.        ture file to produce a TCP time-sequence    plot using xplot.
  278.  
  279.  
  280.     Automation
  281.        Command-line driven through Tcl commands, or graphical user
  282.        interface models    are available through the harness format.
  283.  
  284.  
  285.     Availability
  286.        See http://playground.sun.com/psh/ or e-mail Steve Parker
  287.        (sparker@Eng.Sun.COM) or    Chris Schmechel    (cschmec@Eng.Sun.COM).
  288.  
  289.  
  290.     Required Environment
  291.        Solaris 2.4 or higher.  Porting required    for other operating sys-
  292.        tems.
  293.  
  294.  
  295.  
  296.  
  297.  
  298. Parker,    Schmechel, Editors                [Page 5]
  299.  
  300.  
  301.  
  302.  
  303.  
  304.  
  305. INTERNET-DRAFT    Some Testing Tools for TCP Implementors           July 1997
  306.  
  307.  
  308.     3.4.  Tcpanaly
  309.  
  310.  
  311.     Author
  312.        Vern Paxson
  313.  
  314.  
  315.     Category
  316.        Functional Correctness /    Performance
  317.  
  318.  
  319.     Description
  320.        This is a tool for automatically    analyzing a TCP    implementation's
  321.        behavior    by inspecting packet traces of the TCP's activity. It
  322.        does so through packet filter traces produced by    tcpdump.  It has
  323.        coded within it knowledge of a large number of TCP implementa-
  324.        tions.  Using this, it can determine whether a given trace
  325.        appears consistent with a given implementation, and, if so,
  326.        exactly why the TCP chose to transmit each packet at the    time it
  327.        did.  If    a trace    is found inconsistent with a TCP, tcpanaly
  328.        either diagnoses    a likely measurement error present in the trace,
  329.        or indicates exactly whether the    activity in the    trace deviates
  330.        from that of the    TCP, which can greatly aid in determining how
  331.        the traced implementation behaves.
  332.  
  333.        Tcpanaly's category is somewhat difficult to classify, since it
  334.        attempts    to profile the behavior    of an implementation, rather
  335.        than to explicitly test specific    correctness or performance
  336.        issues.    However, this profile identifies correctness and perfor-
  337.        mance problems.
  338.  
  339.        Adding new implmentations of TCP    behavior is possible with tcpa-
  340.        naly through the    use of C++ classes.
  341.  
  342.  
  343.     Automation
  344.        Command-line driven and only the    traces of the TCP sending and
  345.        receiving bulk data transfers are needed    as input.
  346.  
  347.  
  348.     Availability
  349.        See Vern    Paxson (vern@ee.lbl.gov).
  350.  
  351.  
  352.     Required Environment
  353.        C++ compiler.
  354.  
  355.  
  356.  
  357.  
  358.  
  359. Parker,    Schmechel, Editors                [Page 6]
  360.  
  361.  
  362.  
  363.  
  364.  
  365.  
  366. INTERNET-DRAFT    Some Testing Tools for TCP Implementors           July 1997
  367.  
  368.  
  369.     3.5.  Tcptrace
  370.  
  371.  
  372.     Author
  373.        Shawn Ostermann
  374.  
  375.  
  376.     Category
  377.        Functional Correctness /    Performance
  378.  
  379.  
  380.     Description
  381.        This is a TCP trace file    analysis tool.    It reads output    trace
  382.        files in    the formats of : tcpdump, snoop, etherpeek, and    netm.
  383.  
  384.        For each    connection, it keeps track of elapsed time,
  385.        bytes/segments sent and received, retransmissions, round    trip
  386.        times, window advertisements, throughput, etc from simple to very
  387.        detailed    output.
  388.  
  389.        It can also produce three different types of graphs:
  390.  
  391.        Time Sequence Graph (shows the segments sent and    ACKs returned as
  392.        a function of time)
  393.  
  394.        Instantaneous Throughput    (shows the instantaneous, averaged over
  395.        a few segments, throughput of the connection as a function of
  396.        time).
  397.  
  398.        Round Trip Times    (shows the round trip times for    the ACKs as a
  399.        function    of time)
  400.  
  401.  
  402.     Automation
  403.        Command-line driven, and    uses the xplot program to view the
  404.        graphs.
  405.  
  406.  
  407.     Availability
  408.        Source code is available, and Solaris binary along with sample
  409.        traces.    See
  410.        http://jarok.cs.ohiou.edu/software/tcptrace/tcptrace.html or e-
  411.        mail Shawn Ostermann (ostermann@cs.ohiou.edu).
  412.  
  413.  
  414.  
  415.  
  416.  
  417.  
  418.  
  419.  
  420. Parker,    Schmechel, Editors                [Page 7]
  421.  
  422.  
  423.  
  424.  
  425.  
  426.  
  427. INTERNET-DRAFT    Some Testing Tools for TCP Implementors           July 1997
  428.  
  429.  
  430.     Required Environment
  431.        C compiler, Solaris, FreeBSD, NetBSD, HPUX, Linux.
  432.  
  433.  
  434.  
  435.     3.6.  Tracelook
  436.  
  437.  
  438.     Author
  439.        Greg Minshall
  440.  
  441.  
  442.     Category
  443.        Functional Correctness /    Performance
  444.  
  445.  
  446.     Description
  447.        This is a Tcl/Tk    program    for graphically    viewing    the contents of
  448.        tcpdump trace files.
  449.  
  450.  
  451.     Automation
  452.        Command-line driven with    a graphical user interface for the
  453.        graph.
  454.  
  455.  
  456.     Availability
  457.        See http://www.ipsilon.com/~minshall/sw/tracelook/tracelook.html
  458.        or e-mail Greg Minshall (minshall@ipsilon.com).
  459.  
  460.  
  461.     Required Environment
  462.        A modern    version    of awk,    and Tcl/Tk (Tk version 3.6 or higher).
  463.        The program xgraph is required to view the graphs under X11.
  464.  
  465.  
  466.  
  467.     3.7.  TReno
  468.  
  469.  
  470.     Author
  471.        Matt Mathis and Jamshid Mahdavi
  472.  
  473.  
  474.     Category
  475.        Performance
  476.  
  477.  
  478.  
  479.  
  480.  
  481. Parker,    Schmechel, Editors                [Page 8]
  482.  
  483.  
  484.  
  485.  
  486.  
  487.  
  488. INTERNET-DRAFT    Some Testing Tools for TCP Implementors           July 1997
  489.  
  490.  
  491.     Description
  492.        This is a TCP Internet throughput measurement tool based    on send-
  493.        ing UDP or ICMP packets in patterns that    are controlled at the
  494.        user-level so that their    timing reflects    what would be sent by a
  495.        TCP that    observes proper    congestion control (and    implements
  496.        SACK).  This allows it to measure throughput independent    of the
  497.        TCP implementation of end hosts and serve as a useful platform
  498.        for prototyping TCP changes.
  499.  
  500.  
  501.     Automation
  502.        Command-line driven.  No    "server" is required, and it only
  503.        requires    a single argument of the machine to run    the test to.
  504.  
  505.  
  506.     Availability
  507.        See http://www.psc.edu/networking/treno_info.html or e-mail Matt
  508.        Mathis (mathis@psc.edu) or Jamshid Mahdavi (mahdavi@psc.edu).
  509.  
  510.  
  511.     Required Environment
  512.        C compiler, POSIX.1, raw    sockets.
  513.  
  514.  
  515.  
  516.     3.8.  Ttcp
  517.  
  518.  
  519.     Author
  520.        Unknown
  521.  
  522.  
  523.     Category
  524.        Performance
  525.  
  526.  
  527.     Description
  528.        Originally written to move files    around,    ttcp became the    classic
  529.        throughput benchmark or load generator, with the    addition of sup-
  530.        port for    sourcing to/from memory.  It has spawned many variants,
  531.        recent ones include support for UDP, data pattern generation,
  532.        page alignment, and even    alignment offset control.
  533.  
  534.  
  535.     Automation
  536.        Command-line driven.
  537.  
  538.  
  539.  
  540.  
  541.  
  542. Parker,    Schmechel, Editors                [Page 9]
  543.  
  544.  
  545.  
  546.  
  547.  
  548.  
  549. INTERNET-DRAFT    Some Testing Tools for TCP Implementors           July 1997
  550.  
  551.  
  552.     Availability
  553.        See ftp://ftp.arl.mil/pub/ttcp/ or e-mail ARL (ftp@arl.mil) which
  554.        include the most    common variants    available.
  555.  
  556.  
  557.     Required Environment
  558.        C compiler, BSD sockets.
  559.  
  560.  
  561.  
  562.     3.9.  Xplot
  563.  
  564.  
  565.     Author
  566.        Tim Shepard
  567.  
  568.  
  569.     Category
  570.        Functional Correctness /    Performance
  571.  
  572.  
  573.     Description
  574.        This is a fairly    conventional graphing/plotting tool (xplot
  575.        itself),    a script to turn tcpdump output    into xplot input, and
  576.        some sample code    to generate xplot commands to plot collected TCP
  577.        data.
  578.  
  579.  
  580.     Automation
  581.        Command-line driven with    a graphical user interface for the plot.
  582.  
  583.  
  584.     Availability
  585.        See ftp://mercury.lcs.mit.edu/pub/shep/xplot.tar.gz or e-mail Tim
  586.        Shepard (shep@lcs.mit.edu).
  587.  
  588.  
  589.     Required Environment
  590.        C compiler, X11.
  591.  
  592.  
  593.  
  594.     4.    Summary
  595.        This draft lists    all TCP    tests and testing tools    reported to the
  596.        authors as part of TCP Implementer's working group and is not
  597.        exhaustive.  These tools    have been verified as available    by the
  598.        authors.
  599.  
  600.  
  601.  
  602.  
  603. Parker,    Schmechel, Editors                   [Page 10]
  604.  
  605.  
  606.  
  607.  
  608.  
  609.  
  610. INTERNET-DRAFT    Some Testing Tools for TCP Implementors           July 1997
  611.  
  612.  
  613.     5.    Security Considerations
  614.  
  615.        This version of this memo does not discuss any security-related
  616.        issues though general packet manipulation and packet tracing can
  617.        raise significant security issues.  These issues    may be covered
  618.        in a later draft.
  619.  
  620.  
  621.  
  622.     6.    References
  623.  
  624.        [DJ94]     Scott Dawson and Farnam Jahanian, "Probing and    Fault
  625.          Injection of Distributed Protocol Implementations",
  626.          University of Michigan    Technical Report CSE-TR-217-94,
  627.          EECS Department.
  628.  
  629.        [DJM96a]     Scott Dawson, Farnam Jahanian,    and Todd Mitton,
  630.          "ORCHESTRA: A Fault Injection Environment for Distri-
  631.          buted Systems", University of Michigan    Technical Report
  632.          CSE-TR-318-96,    EECS Department.
  633.  
  634.        [DJM96b]     Scott Dawson, Farnam Jahanian,    and Todd Mitton, "Exper-
  635.          iments    on Six Commercial TCP Implementations Using a
  636.          Software Fault    Injection Tool", University of Michigan
  637.          Technical Report CSE-TR-298-96, EECS Department.
  638.  
  639.        [Pax97a]     Vern Paxson, "Automated Packet    Trace Analysis of TCP
  640.          Implementations", ACM SIGCOMM '97, September 1997,
  641.          Cannes, France.
  642.  
  643.        [Pax97b]     Vern Paxson, "Known TCP Implementation    Problems",
  644.          Internet Draft, March,    1997.
  645.  
  646.        [She91]     Tim Shepard, "TCP Packet Trace    Analysis", MIT Labora-
  647.          tory for Computer Science MIT-LCS-TR-494, February,
  648.          1991.
  649.  
  650.  
  651.     7.    Author's Address
  652.  
  653.        Steve Parker <sparker@Eng.Sun.COM>
  654.        Sun Microsystems, Inc.
  655.        901 San Antonio Road, UMPK17-202
  656.        Palo Alto, CA 94043
  657.        USA
  658.        Phone: (415) 786-5176
  659.  
  660.  
  661.  
  662.  
  663.  
  664. Parker,    Schmechel, Editors                   [Page 11]
  665.  
  666.  
  667.  
  668.  
  669.  
  670.  
  671. INTERNET-DRAFT    Some Testing Tools for TCP Implementors           July 1997
  672.  
  673.  
  674.        Chris Schmechel <cschmec@Eng.Sun.COM>
  675.        Sun Microsystems, Inc.
  676.        901 San Antonio Road, UMPK17-202
  677.        Palo Alto, CA, 94043
  678.        USA
  679.        Phone: (415) 786-4053
  680.  
  681.  
  682.  
  683.  
  684.  
  685.  
  686.  
  687.  
  688.  
  689.  
  690.  
  691.  
  692.  
  693.  
  694.  
  695.  
  696.  
  697.  
  698.  
  699.  
  700.  
  701.  
  702.  
  703.  
  704.  
  705.  
  706.  
  707.  
  708.  
  709.  
  710.  
  711.  
  712.  
  713.  
  714.  
  715.  
  716.  
  717.  
  718.  
  719.  
  720.  
  721.  
  722.  
  723.  
  724.  
  725. Parker,    Schmechel, Editors                   [Page 12]
  726.  
  727.  
  728.  
  729.