As per Relevance of the word required, we have this rfc below:
Network Working Group S.
Request for Comments: 2398 C.
FYI: 33 Sun Microsystems, Inc
Category: Informational August 1998
Some Testing Tools for TCP
Status of this
This memo provides information for the Internet community. It
not specify an Internet standard of any kind. Distribution of
memo is unlimited
Copyright
Copyright (C) The Internet Society (1998). All Rights Reserved
1.
Available tools for testing TCP implementations are catalogued
this memo. Hopefully disseminating this information will
those responsible for building and maintaining TCP to make the
use of available tests. The type of testing the tool provides,
type of tests it is capable of doing, and its availability
enumerated. This document lists only tools which can evaluate one
more TCP implementations, or which can privde some specific
which describe or evaluate the TCP being tested. A number of
tools produce time-sequence plots,
Tim Shepard's thesis [She91] for a general discussion of these plots
Each tools is defined as follows
The name associated with the testing tool
One or more categories of tests which the tools are capable
providing. Categories used are: functional correctness, performance
stress. Functional correctness tests how stringent a
implementation is to the RFC specifications. Performance tests
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.
tests how a TCP implementation is effected under high
conditions
A description of the tools construction, and the
methodology of the tests
What steps are required to complete the test? What
intervention is required
How do you retrieve this tool and get more information about it
Required
Compilers, OS version, etc. required to build and/or run
associated tool
A list of publications relating to the tool, if any
2.
2.1.
Yukio
Performance /
Dbs is a tool which allows multiple data transfers to be coordinated
and the resulting TCP behavior to be reviewed. Results are
as ASCII log files
Command of execution is driven by a script file
Parker & Schmechel Informational [Page 2]
RFC 2398 Some Testing Tools for TCP Implementors August 1998
See http://www.ai3.net/products/dbs for details of precise
versions supported, and for download of the source code.
implementation supports BSDI BSD/OS, Linux, mkLinux, SunOS, IRIX
Ultrix, NEWS OS, HP-UX. Other environments are likely easy to add
Required
C language compiler, UNIX-style socket API support
2.2.
Luigi
Functional Correctness /
Dummynet is a tool which simulates the presence of finite
queues, bandwidth limitations, and communication delays.
inserts between two layers of the protocol stack (in the
implementation between TCP and IP), simulating the above effects
an operational system. This way experiments can be done using
protocol implementations and real applications, even running on
same host (dummynet also intercepts communications on the
interface). Reconfiguration of dummynet parameters (delay,
size, bandwidth) can be done on the fly by using a sysctl call.
overhead of dummynet is extremely low
Requires merging diff files with kernel source code. Command-
driven through the sysctl command to modify kernel variables
See http://www.iet.unipi.it/~luigi/research.html or e-mail
Rizzo (l.rizzo@iet.unipi.it). Source code is available for
2.1 and FreeBSD 2.2 (easily adaptable to other BSD-derived systems).
Required
C language compiler, BSD-derived system, kernel source code
[Riz97]
Parker & Schmechel Informational [Page 3]
RFC 2398 Some Testing Tools for TCP Implementors August 1998
2.3.
Rick
Single connection bandwidth or latency tests for TCP, UDP, and DLPI
Includes provisions for CPU utilization measurement
Requires compilation (K&R C sufficient for all but-DHISTOGRAM,
require ANSI C in the future) if starting from source. Execution
child of inetd requires editing of /etc/services and /etc/inetd.conf
Scripts are provided for a quick look (snapshot_script),
throughput of TCP and UDP, and latency for TCP and UDP. It
command-line driven
See http://www.cup.hp.com/netperf/NetperfPage.html or e-mail
Jones (raj@cup.hp.com). Binaries are available here for HP/UX Irix
Solaris, and Win32.
Required
C language compiler, POSIX.1, sockets
2.4. NIST
Mark
Functional Correctness /
NIST Net is a network emulator. The tool is packaged as a
kernel patch, a kernel module, a set of programming APIs,
command-line and X-based user interfaces
NIST Net works by turning the system into a "selectively bad"
- incoming packets may be delayed, dropped, duplicated, bandwidth
constrained, etc. Packet delays may be fixed or
distributed, with loadable probability distributions. Packet
may be uniformly distributed (constant loss probability)
congestion-dependent (probability of loss increases with packet
lengths). Explicit congestion notifications may optionally be
Parker & Schmechel Informational [Page 4]
RFC 2398 Some Testing Tools for TCP Implementors August 1998
in place of congestion-dependent loss
To control the operation of the emulator, there is an
user interface, a non-interactive command-line interface, and a
of APIs. Any or all of these may be used in concert.
interactive interface is suitable for simple, spur-of-the-
testing, while the command-line or APIs may be used to
scripted, non-interactive tests
NIST Net is available for public download from the NIST Net web site
http://www.antd.nist.gov/itg/nistnet/. The web site also
installation instructions and documentation
Required
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
and install the NIST Net components. Building the X
requires a version of XFree86 (Current Version is 3.3.2).
Athena-replacement widget set such as
(http://www.inf.ufrgs.br/~kojima/nextaw/) is also desirable for
improved user interface
NIST Net should run on any i386-compatible machine capable of
Linux, with one or more interfaces
2.5.
Scott Dawson, Farnam Jahanian, and Todd
Functional Correctness /
This tool is a library which provides the user with an ability
build a protocol layer capable of performing fault injection
protocols. Several fault injection layers have been built using
library, one of which has been used to test different
implementations of TCP. This is accomplished by probing the
implementation from one machine containing a protocol stack that
been instrumented with Orchestra. A connection is opened from
vendor TCP implementation to the machine which has been instrumented
Faults may then be injected at the Orchestra side of the
and the vendor TCP's response may be monitored. The most
version of Orchestra runs inside the X-kernel protocol stack on
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
placed below the target protocol in the protocol stack. This
either be done on one machine on the network, if protocol stacks
the other machines cannot be modified (as in the case of
TCP), or can be done on all machines on the network (as in the
of testing a protocol under development). Once the fault
layer is in the protocol stack, all messages sent by and destined
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
messages. It can also introduce new messages into the system
desired
The actions of the Orchestra fault injection layer on each
are determined by a script, written in Tcl. This script
interpreted by the fault injection layer when the message enters
layer. The script has access to the header information about
message, and can make decisions based on header values. It can
keep information about previous messages, counters, or any other
which the script writer deems useful. Users of Orchestra may
define their own actions to be taken on messages, written in C,
may be called from the fault injection scripts
Scripts can be specified either using a graphical user
which generates Tcl, or by writing Tcl directly. At this time
post-analysis of the results of the test must also be performed
the user. Essentially this consists of looking at a packet
that Orchestra generates for (in)correct behavior. Must compile
link fault generated layer with the protocol stack
See http://www.eecs.umich.edu/RTCL/projects/orchestra/ or e-
Scott Dawson (sdawson@eecs.umich.edu).
Required Environment OSF MK operating system, or X-kernel like
architecture, or adapted to network stack
[DJ94], [DJM96a], [DJM96b
Parker & Schmechel Informational [Page 6]
RFC 2398 Some Testing Tools for TCP Implementors August 1998
2.6. Packet
Steve Parker and Chris
Functional Correctness /
An extensible Tcl/Tk based software toolset for protocol
and testing. Tcl (Tool Command Language) is an embeddable
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
each protocol are supplied by a dynamic linked library called
protocol library. These libraries are silently linked in from
special directory when the Packet Shell begins execution. The
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
creating test scripts within the Packet Shell. It includes tests
no initial slow start, and retain out of sequence data as TCP
cases mentioned in [PADHV98].
It includes tcpgraph, which is used with a snoop or tcpdump
file to produce a TCP time-sequence plot using xplot
Command-line driven through Tcl commands, or graphical user
models are available through the harness format
See http://playground.sun.com/psh/ or e-mail owner-packet
shell@sunroof.eng.sun.com
Required
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.
Vern
Functional Correctness /
This is a tool for automatically analyzing a TCP implementation'
behavior by inspecting packet traces of the TCP's activity. It
so through packet filter traces produced by tcpdump. It has
within it knowledge of a large number of TCP implementations.
this, it can determine whether a given trace appears consistent
a given implementation, and, if so, exactly why the TCP chose
transmit each packet at the time it did. If a trace is
inconsistent with a TCP, tcpanaly either diagnoses a
measurement error present in the trace, or indicates exactly
the activity in the trace deviates from that of the TCP, which
greatly aid in determining how the traced implementation behaves
Tcpanaly's category is somewhat difficult to classify, since
attempts to profile the behavior of an implementation, rather than
explicitly test specific correctness or performance issues. However
this profile identifies correctness and performance problems
Adding new implementations of TCP behavior is possible with
through the use of C++ classes
Command-line driven and only the traces of the TCP sending
receiving bulk data transfers are needed as input
Contact Vern Paxson (vern@ee.lbl.gov).
Required
C++ compiler
[Pax97a
Parker & Schmechel Informational [Page 8]
RFC 2398 Some Testing Tools for TCP Implementors August 1998
2.8.
Shawn
Functional Correctness /
This is a TCP trace file analysis tool. It reads output trace
in the formats of : tcpdump, snoop, etherpeek, and netm
For each connection, it keeps track of elapsed time, bytes/
sent and received, retransmissions, round trip times,
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
function of time
Instantaneous Throughput (shows the instantaneous, averaged over
few segments, throughput of the connection as a function of time).
Round Trip Times (shows the round trip times for the ACKs as
function of time
Command-line driven, and uses the xplot program to view the graphs
Source code is available, and Solaris binary along with
traces. See http://jarok.cs.ohiou.edu/software/tcptrace/tcptrace.
or e-mail Shawn Ostermann (ostermann@cs.ohiou.edu).
Required
C compiler, Solaris, FreeBSD, NetBSD, HPUX, Linux
Parker & Schmechel Informational [Page 9]
RFC 2398 Some Testing Tools for TCP Implementors August 1998
2.9.
Greg
Functional Correctness /
This is a Tcl/Tk program for graphically viewing the contents
tcpdump trace files. When plotting a connection, a user can
various variables to be plotted. In each direction of the connection
the user can plot the advertised window in each packet, the
sequence number in each packet, the lowest sequence number in
packet, and the acknowledgement number in each packet
Command-line driven with a graphical user interface for the graph
See http://www.ipsilon.com/~minshall/sw/tracelook/tracelook.html
e-mail Greg Minshall (minshall@ipsilon.com).
Required
A modern version of awk, and Tcl/Tk (Tk version 3.6 or higher).
program xgraph is required to view the graphs under X11.
2.10.
Matt Mathis and Jamshid
This is a TCP throughput measurement tool based on sending UDP
ICMP packets in patterns that are controlled at the user-level
that their timing reflects what would be sent by a TCP that
proper congestion control (and implements SACK). This allows it
measure throughput independent of the TCP implementation of end
and serve as a useful platform for prototyping TCP changes
Command-line driven. No "server" is required, and it only requires
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
See http://www.psc.edu/networking/treno_info.html or e-mail
Mathis (mathis@psc.edu) or Jamshid Mahdavi (mahdavi@psc.edu).
Required
C compiler, POSIX.1, raw sockets
2.11.
Originally written to move files around, ttcp became the
throughput benchmark or load generator, with the addition of
for sourcing to/from memory. It can also be used as a
absorber. It has spawned many variants, recent ones include
for UDP, data pattern generation, page alignment, and even
offset control
Command-line driven
See ftp://ftp.arl.mil/pub/ttcp/ or e-mail ARL (ftp@arl.mil)
includes the most common variants available
Required
C compiler, BSD sockets
2.12.
Tim
Functional Correctness /
This is a fairly conventional graphing/plotting tool (xplot itself),
a script to turn tcpdump output into xplot input, and some
code to generate xplot commands to plot the TCP time-sequence graph).
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
See ftp://mercury.lcs.mit.edu/pub/shep/xplot.tar.gz or e-mail
Shepard (shep@lcs.mit.edu).
Required
C compiler, X11.
[She91]
3.
This memo lists all TCP tests and testing tools reported to
authors as part of TCP Implementer's working group and is
exhaustive. These tools have been verified as available by
authors
4. Security
Network analysis tools are improving at a steady pace.
continuing improvement in these tools such as the ones described
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
require changes to the kernel (foreign code) and might require
privileges to execute. So you are trusting code that you
fetched from some perhaps untrustworthy remote site. This code
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
that you are now able to read other people's mail, files, etc.
impacts more than just the host running the tool but all
crossing the host's physical network
5.
[DJ94] Scott Dawson and Farnam Jahanian, "Probing and
Injection of Distributed Protocol Implementations",
University of Michigan Technical Report CSE-TR-217-94,
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,
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
Software Fault Injection Tool", University of
Technical Report CSE-TR-298-96, EECS Department
[Pax97a] Vern Paxson, "Automated Packet Trace Analysis of
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
Progress
[Riz97] Luigi Rizzo, "Dummynet: a simple approach to the
of network protocols", ACM Computer Communication Review
Vol. 27, N. 1, January 1997, pp. 31-41.
[She91] Tim Shepard, "TCP Packet Trace Analysis", MIT
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'
Steve
Sun Microsystems, Inc
901 San Antonio Road, UMPK17-202
Palo Alto, CA 94043
Phone: (650) 786-5176
EMail: sparker@eng.sun.
Chris
Sun Microsystems, Inc
901 San Antonio Road, UMPK17-202
Palo Alto, CA, 94043
Phone: (650) 786-4053
EMail: cschmec@eng.sun.
Parker & Schmechel Informational [Page 14]
RFC 2398 Some Testing Tools for TCP Implementors August 1998
7. Full Copyright
Copyright (C) The Internet Society (1998). All Rights Reserved
This document and translations of it may be copied and furnished
others, and derivative works that comment on or otherwise explain
or assist in its implementation may be prepared, copied,
and distributed, in whole or in part, without restriction of
kind, provided that the above copyright notice and this paragraph
included on all such copies and derivative works. However,
document itself may not be modified in any way, such as by
the copyright notice or references to the Internet Society or
Internet organizations, except as needed for the purpose
developing Internet standards in which case the procedures
copyrights defined in the Internet Standards process must
followed, or as required to translate it into languages other
English
The limited permissions granted above are perpetual and will not
revoked by the Internet Society or its successors or assigns
This document and the information contained herein is provided on
"AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET
TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED,
BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE
Parker & Schmechel Informational [Page 15]
if you see any problems within the linking, don't worry be happy,
this is version 0.1 of the Relevance System and you gotta expect some crappy subroutines sometimes,
just be content we did not write this in Java, which would have made this "bigger and better" HAHAHHA.
RFC documents can be found at I.E.T.F.
Relevance System Copyright © 2002 Spectrum WorldResearch
other technical nosh by ServerMasters Corporation
collaboration of BobX