From 4bfd864f10b68b71482b35c818559068ef8d5797 Mon Sep 17 00:00:00 2001 From: Thomas Voss Date: Wed, 27 Nov 2024 20:54:24 +0100 Subject: doc: Add RFC documents --- doc/rfc/rfc2398.txt | 843 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 843 insertions(+) create mode 100644 doc/rfc/rfc2398.txt (limited to 'doc/rfc/rfc2398.txt') diff --git a/doc/rfc/rfc2398.txt b/doc/rfc/rfc2398.txt new file mode 100644 index 0000000..ece738a --- /dev/null +++ b/doc/rfc/rfc2398.txt @@ -0,0 +1,843 @@ + + + + + + +Network Working Group S. Parker +Request for Comments: 2398 C. Schmechel +FYI: 33 Sun Microsystems, Inc. +Category: Informational August 1998 + + + Some Testing Tools for TCP Implementors + +Status of this Memo + + This memo provides information for the Internet community. It does + not specify an Internet standard of any kind. Distribution of this + memo is unlimited. + +Copyright Notice + + Copyright (C) The Internet Society (1998). All Rights Reserved. + +1. 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. A number of these + tools produce time-sequence plots, see + + Tim Shepard's thesis [She91] for a general discussion of these plots. + + Each tools is defined as follows: + + Name + + The name associated with the testing tool. + + Category + + One or more categories of tests which the tools are capable of + providing. Categories used are: functional correctness, performance, + stress. Functional correctness tests how stringent a TCP + implementation is to the RFC specifications. Performance tests how + + + + + + + +Parker & Schmechel Informational [Page 1] + +RFC 2398 Some Testing Tools for TCP Implementors August 1998 + + + quickly a TCP implementation can send and receive data, etc. Stress + tests how a TCP implementation is effected under high load + conditions. + + 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 + intervention 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. + +2. Tools + +2.1. Dbs + + Author + Yukio Murayama + + Category + Performance / Stress + + Description + Dbs is a tool which allows multiple data transfers to be coordinated, + 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. + + + + + + + +Parker & Schmechel Informational [Page 2] + +RFC 2398 Some Testing Tools for TCP Implementors August 1998 + + + 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. + +2.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. Dummynet + 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 communications on the loopback + interface). Reconfiguration of dummynet parameters (delay, queue + size, bandwidth) can be done on the fly 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 variables. + + 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] + + + + + + + + +Parker & Schmechel Informational [Page 3] + +RFC 2398 Some Testing Tools for TCP Implementors August 1998 + + +2.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. Execution 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 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. + +2.4. NIST Net + + Author + Mark Carson + + Category + Functional Correctness / Performance + + Description + NIST Net is a network emulator. The tool is packaged as a Linux + kernel patch, a kernel module, a set of programming APIs, and + command-line and X-based user interfaces. + + NIST Net works by turning the system into a "selectively bad" router + - incoming packets may be delayed, dropped, duplicated, bandwidth- + constrained, etc. Packet delays may be fixed or randomly + distributed, with loadable probability distributions. Packet loss + may be uniformly distributed (constant loss probability) or + congestion-dependent (probability of loss increases with packet queue + lengths). Explicit congestion notifications may optionally be sent + + + +Parker & Schmechel Informational [Page 4] + +RFC 2398 Some Testing Tools for TCP Implementors August 1998 + + + in place of congestion-dependent loss. + + Automation + To control the operation of the emulator, there is an interactive + user interface, a non-interactive command-line interface, and a set + of APIs. Any or all of these may be used in concert. The + interactive interface is suitable for simple, spur-of-the-moment + testing, while the command-line or APIs may be used to create + scripted, non-interactive tests. + + Availability + NIST Net is available for public download from the NIST Net web site, + http://www.antd.nist.gov/itg/nistnet/. The web site also has + installation instructions and documentation. + + Required Environment + NIST Net requires a Linux installtion, with kernel version 2.0.27 - + 2.0.33. A kernel source tree and build tools are required to build + and install the NIST Net components. Building the X interface + requires a version of XFree86 (Current Version is 3.3.2). An + Athena-replacement widget set such as neXtaw + (http://www.inf.ufrgs.br/~kojima/nextaw/) is also desirable for an + improved user interface. + + NIST Net should run on any i386-compatible machine capable of running + Linux, with one or more interfaces. + +2.5. 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 vendor + 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 system. + + + +Parker & Schmechel Informational [Page 5] + +RFC 2398 Some Testing Tools for TCP Implementors August 1998 + + + 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 protocol stacks on + the other machines cannot be modified (as in the case of testing + TCP), or can be done on all machines on the network (as in the case + of testing a protocol under development). Once the fault injection + layer is in the protocol stack, all messages sent by and destined for + the target protocol pass through it on their way to/from the network. + The Orchestra fault injection 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 message + 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 messages, 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] + + + + + + + + + + + +Parker & Schmechel Informational [Page 6] + +RFC 2398 Some Testing Tools for TCP Implementors August 1998 + + +2.6. Packet Shell + + Author + Steve Parker and Chris Schmechel + + Category + Functional Correctness / Performance + + Description + An extensible Tcl/Tk based software toolset for protocol development + 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 capture + 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 owner-packet- + shell@sunroof.eng.sun.com. + + Required Environment + + Solaris 2.4 or higher. Porting required for other operating systems. + + + + + + + + + + + +Parker & Schmechel Informational [Page 7] + +RFC 2398 Some Testing Tools for TCP Implementors August 1998 + + +2.7. Tcpanaly + + 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 implementations. 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 performance problems. + + Adding new implementations of TCP behavior is possible with tcpanaly + 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. + + References + [Pax97a] + + + + + + + + + + +Parker & Schmechel Informational [Page 8] + +RFC 2398 Some Testing Tools for TCP Implementors August 1998 + + +2.8. 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). + + Required Environment + C compiler, Solaris, FreeBSD, NetBSD, HPUX, Linux. + + + + + + + + + + + + + + +Parker & Schmechel Informational [Page 9] + +RFC 2398 Some Testing Tools for TCP Implementors August 1998 + + +2.9. Tracelook + + Author + Greg Minshall + + Category + Functional Correctness / Performance + + Description + This is a Tcl/Tk program for graphically viewing the contents of + tcpdump trace files. When plotting a connection, a user can select + various variables to be plotted. In each direction of the connection, + the user can plot the advertised window in each packet, the highest + sequence number in each packet, the lowest sequence number in each + packet, and the acknowledgement number in each packet. + + 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. + +2.10. TReno + + Author + Matt Mathis and Jamshid Mahdavi + + Category + Performance + + 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 implementation of end hosts + and serve as a useful platform for prototyping 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. + + + + + +Parker & Schmechel Informational [Page 10] + +RFC 2398 Some Testing Tools for TCP Implementors August 1998 + + + 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. + +2.11. 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 support + for sourcing to/from memory. It can also be used as a traffic + absorber. 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. + + Availability + See ftp://ftp.arl.mil/pub/ttcp/ or e-mail ARL (ftp@arl.mil) which + includes the most common variants available. + + Required Environment + C compiler, BSD sockets. + +2.12. 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 the TCP time-sequence graph). + + Automation + Command-line driven with a graphical user interface for the plot. + + + +Parker & Schmechel Informational [Page 11] + +RFC 2398 Some Testing Tools for TCP Implementors August 1998 + + + 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] + +3. Summary + + This memo 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. + +4. Security Considerations + + Network analysis tools are improving at a steady pace. The + continuing improvement in these tools such as the ones described make + security concerns significant. + + Some of the tools could be used to create rogue packets or denial- + of-service attacks against other hosts. Also, some of the tools + require changes to the kernel (foreign code) and might require root + privileges to execute. So you are trusting code that you have + fetched from some perhaps untrustworthy remote site. This code could + contain malicious code that could present any kind of attack. + + None of the listed tools evaluate security in any way or form. + + There are privacy concerns when grabbing packets from the network in + that you are now able to read other people's mail, files, etc. This + impacts more than just the host running the tool but all traffic + crossing the host's physical network. + +5. 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 Distributed Systems", + University of Michigan Technical Report CSE-TR-318-96, EECS + Department. + + + +Parker & Schmechel Informational [Page 12] + +RFC 2398 Some Testing Tools for TCP Implementors August 1998 + + + [DJM96b] Scott Dawson, Farnam Jahanian, and Todd Mitton, + "Experiments 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] Paxson, V., Allman, M., Dawson, S., Heavens, I., and B. + Volz, "Known TCP Implementation Problems", Work In + Progress. + + [Riz97] Luigi Rizzo, "Dummynet: a simple approach to the evaluation + of network protocols", ACM Computer Communication Review, + Vol. 27, N. 1, January 1997, pp. 31-41. + + [She91] Tim Shepard, "TCP Packet Trace Analysis", MIT Laboratory + for Computer Science MIT-LCS-TR-494, February, 1991. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Parker & Schmechel Informational [Page 13] + +RFC 2398 Some Testing Tools for TCP Implementors August 1998 + + +6. Authors' Addresses + + Steve Parker + Sun Microsystems, Inc. + 901 San Antonio Road, UMPK17-202 + Palo Alto, CA 94043 + USA + + Phone: (650) 786-5176 + EMail: sparker@eng.sun.com + + + Chris Schmechel + Sun Microsystems, Inc. + 901 San Antonio Road, UMPK17-202 + Palo Alto, CA, 94043 + USA + + Phone: (650) 786-4053 + EMail: cschmec@eng.sun.com + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Parker & Schmechel Informational [Page 14] + +RFC 2398 Some Testing Tools for TCP Implementors August 1998 + + +7. Full Copyright Statement + + Copyright (C) The Internet Society (1998). All Rights Reserved. + + This document and translations of it may be copied and furnished to + others, and derivative works that comment on or otherwise explain it + or assist in its implementation may be prepared, copied, published + and distributed, in whole or in part, without restriction of any + kind, provided that the above copyright notice and this paragraph are + included on all such copies and derivative works. However, this + document itself may not be modified in any way, such as by removing + the copyright notice or references to the Internet Society or other + Internet organizations, except as needed for the purpose of + developing Internet standards in which case the procedures for + copyrights defined in the Internet Standards process must be + followed, or as required to translate it into languages other than + English. + + The limited permissions granted above are perpetual and will not be + revoked by the Internet Society or its successors or assigns. + + This document and the information contained herein is provided on an + "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING + TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION + HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF + MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. + + + + + + + + + + + + + + + + + + + + + + + + +Parker & Schmechel Informational [Page 15] + -- cgit v1.2.3