twping(1)

twping(1) General Commands Manual twping(1)

NAME

twping - Client application to request two-way latency tests.

SYNOPSIS

twping [options] testpeer [server]

DESCRIPTION

twping is a command line client application that is used to initiate two-way latency tests.

Round-trip latency measurements using ping are an accepted technique to look for network problems primarily because the local and remote clocks do not need to be synchronised and no storage or much logic is need on the reflector. However, such a technique suffers from the problem of inaccurate results due to processing delays on the reflector. One-Way measurements require that the local and remote clocks be synchronised for accurate results. The TWAMP protocol allows informative measurements without this requirement and it is much easier to isolate the effects of traffic on specific parts of a network compared to ping.

twping works by contacting a TWAMP server and reflector on the remote peer host.

testpeer can be specified using rfc2396 and rfc2732 syntax for both host and port specification:

node:port

IPv4 syntax where node is either a DNS name or a numeric host address string consisting of a dotted decimal IPv4 address. The port is an optional port specifier to contact servers running on a non-default port and can be left off in most cases. This syntax also works for IPv6 addresses specified using DNS names.
[node]:port
IPv6 syntax where node is specified using a numeric IPv6 host address string. The []'s are required only if the optional port port specifier is used.

server is an optional argument that indicates the TWAMP server address if it is different from the testpeer. This is mostly useful in the case of hosts with more than one network interface where the TWAMP server is not listening on the interface that you want to test. The server can be specified using the same syntax as the testpeer.

The twping client is used to request the type of test wanted. The parameters allow the user to select the full send schedule, as well as packet size.

With no options specified, twping will perform tests of 100 packets each at a rate of approximately 1 packet every 0.1 seconds to and reflected from the testpeer. Then, the receiver will wait a reasonable period after that to count possible duplicate packets. (See the -L option.) Upon completion of the sessions, summary statistics are printed to STDOUT.

TWAMP supports three reporting formats. A textual summary that was designed to be as similar to the results that ping produces as possible. A machine readable summary format (-M). And finally a raw format that prints out the data from each and every packet in as compact of a format as possible (-R). The textual summary also allows the information from each packet to be reported using the -v option. The default textual summary will be used if neither the -M or the -R options are specified. It includes:

SID

Session Identifier. This value is unique for every test session.
Sent, Lost, Duplicates

Number of packets that were sent, lost, and duplicated as seen by TWAMP.
Min Delay, Median Delay, Max Delay, Error Estimate

Minimum, median and maximum delay seen for sample. Maximum error estimate for the sample. (The median is determined using a histogram, so the resolution of this value is bounded by the -b parameter. This can lead to misleading results, for example, for very small values of latency it is possible to see a value for the median that is greater than the maximum, but this is simply due to the resolution of the median measurement.)
Jitter

An estimate of how "stable" the delay samples are. TWAMP reports the the 95th percentile of delay - 50th percentile of delay.
Additional percentiles

If the -a option is used, those additional percentiles from the sample are displayed.
TTL (hops) information

As a packet traverses the network, the IP TTL field is decremented each time the packet crosses a router. TWAMP has been designed to collect the TTL information from the packets. The TWAMP sender sets the TTL of all outgoing packets to 255. The TWAMP receiver retrieves the TTL from the packet. The normal textual report uses this information to report the number of hops (number of routers) the packet traversed. The number of distinct values is reported as well as the minimum and maximum number of hops seen in the given session. The other reporting formats just report raw TTL values as seen in the packets. (It should be noted that if the number of hops reported seems unusually large, it probably means the TWAMP sender was not able to set the TTL value correctly. The traceroute(1) program can be used to verify what TWAMP is reporting.)
Reordering

Finally TWAMP reports the amount of re-ordering it observed. A description of the metric used to report this can be found at:
http://www.internet2.edu/performance/owamp/draft-shalunov-reordering-definition-02.txt.html

OPTIONS

-h

Print a usage message and exit.
Default:
Unset.

Test Configuration Options:

-c count

Number of test packets to send in the test session.
Default:
100
-D DSCP

Set an RFC 2474 style DSCP value for the TOS byte in the sending packets. This can be set using a 6-bit numeric value in decimal, hex, or octal. Additionally, the following set of symbolic DSCP name constants are understood. (Example applications are taken from RFC 4594.)

Name Value Service Class Examples
NONE 000000 Standard Undifferentiated
DEFAULT
DF
CS0
CS1 001000 Low-Priority Data No BW assurance
AF11 001010 High-Throughput Data Store and forward
AF12 001100
AF13 001110
CS2 010000 OAM OAM&P
AF21 010010 Low-Latency Data Web-based ordering
AF22 010100
AF23 010110
CS3 011000 Broadcast Video TV & live events
AF31 011010 Multimedia Streaming Streaming video and audio
AF32 011100
AF33 011110
CS4 100000 Real-Time Interactive Video conf and gaming
AF41 100010 Multimedia Conferencing H.323 video conferencing
AF42 100100
AF43 100110
CS5 101000 Signaling Video conf and gaming
EF 101110 Telephony IP Telephony bearer
CS6 110000 Network Control Network routing
CS7 111000
Default:
Unset.
-F outputfile

Save the results in outputfile for later output with owstats.
Default:
Don't save the results.
-i send_schedule

send_schedule indicates the scheduled delay between sent packets. This is done by specifying a list of delays in a comma separated string (spaces are not allowed). Each delay is indicated by a value and a type. There are two currently available types of delays that can be specified:
f
[f]ixed offsets. This is used to indicate that the value is a real offset.
e
[e]xponential. This is used to indicate an exponentially distributed pseudo-random quantity with a mean about the value given. (This is the default if no alpha qualifier is specified. The intent of this is to negate periodicity effects.)

When the sending process starts, it looks at the first delay in the list and waits that long to send the first packet. It takes the next delay from the list to determine how much longer to wait before sending the second packet. This process continues until there are no more delay values specified in the list. At this point the sending process loops back to the beginning of the complete send_schedule and this process begins again. This continues until the sending process has sent count packets as specified by the -c option.

Default:
0.1e (seconds)
-E enddelay

Amount of time for a sender to wait after session completion (last packet send-time plus timeout) before sending the stop sessions message.

This is important if the sender clock is running ahead of the receiver clock.

A session is complete timeout after the send time of the final packet. If the sender clock is ahead of the receivers clock, the sender will declare the session complete before the receiver. The receiver is only allowed to retain records for the packets that were sent at least timeout before it receives the stop sessions message from the sender. Therefore, if the sender clock is running ahead of the receiver clock, the receiver will be forced to delete some number of the final packets from the session.

This parameter directs the sender to wait enddelay after session completion allowing the receiver clock to be essentially enddelay later than the sender clock and still retain full sessions.

Default:
1.0 (seconds)
-L timeout

Amount of time to wait for a packet to be received before declaring it lost. As such, it is also the amount of time the test session has to stay active after the last packet is sent to be able to count duplicate packets. I.e., add this number to the duration of your session to determine how long to expect a test session to take.

Note: The default of 2 seconds longer than a round-trip estimate was simply a guess for how long a typical user would be willing to wait after the end of the test for the results. For the TWAMP results to be statistically relevant and to be able to compare data between two sessions the timeout option should be specified.

Default:
2 seconds longer than the round-trip estimate. (seconds)
-P 0 | lowport-highport

Specify the specific port range to use for TWAMP-Test packets. This can be specified in two ways. First, as 0 which would indicate the client should allow the system to pick the port (ephemeral). Second, as a range. lowport must be a smaller value than highport and both numbers must be valid port values. (16 bit unsigned integer values)
Default:
0
-s size

Size of the padding to add to each minimally-sized test packet. The minimal UDP payload for a test packet in open mode is 14 bytes. The minimal UDP payload for a test packet in authenticated or encrypted mode is 48 bytes.
Default:
0 (bytes)
-z delayStart

Time to wait before starting a test. The client attempts to calculate a reasonable minimum delay to ensure that the start of the test happens after completion of the setup protocol. If delayStart is specified as a value less than this reasonable minimum delay, the reasonable minimum will be used instead.
Default:
2-3 times the round-trip estimate plus 1 (seconds)

Connection/Authentication Options:

-4

Forces the client to use IPv4 addresses only.
Default:
Unset. Client will use IPv4 or IPv6 address, but tries IPv6 first.
-6

Forces the client to use IPv6 addresses only.
Default:
Unset. Client will use IPv4 or IPv6 address, but tries IPv6 first.
-A authmode

Specify the authentication modes the client is willing to use for communication. authmode should be set as a character string with any or all of the characters "AEO". The modes are:
A
[A]uthenticated. This mode encrypts the control connection and digitally signs part of each test packet.
E
[E]ncrypted. This mode encrypts the control connection and encrypts each test packet in full.
O
[O]pen. No encryption of any kind is done.

The client can specify all the modes with which it is willing to communicate. The most strict mode that both the TWAMP server and the TWAMP client are willing to use will be selected. Authenticated and Encrypted modes require a "shared secret" in the form of a pass-phrase that is used to generate the AES and HMAC-SHA1 session keys.

Default:
"AEO".
-k pfsfile

Use the pass-phrase in pfsfile for username to derive the symmetric AES key used for encryption. username must have a valid entry in pfsfile. pfsfile can be generated as described in the pfstore(1) manual page.
Default:
Unset. (If the -u option was specified without the -k, the user will be prompted for a passphrase.)
-S srcaddr

Bind the local address of the client socket to srcaddr. srcaddr can be specified using a DNS name or using standard textual notations for the IP addresses. (IPv6 addresses are of course supported.)
Default:
Unspecified (wild-card address selection).
-B interface

Bind the client sockets to the network interface interface with SO_BINDTODEVICE.
Default:
Unspecified (sockets not bound to a particular interface).
-Z

Do not specify sender and receiver IP addresses for tests packets when creating a TWAMP session. This allows the UDP test packets to pass through some types of NAT. This option is not available for OWAMP.
Default:
Unspecified (addresses for test packets are defined by the client).
-u username

Specify the username that identifies the shared secret (pass-phrase) used to derive the AES and HMAC-SHA1 session keys for authenticated and encrypted modes. If the -k option is specified, the pass-phrase is retrieved from the pfsfile, otherwise the user is prompted for a pass-phrase.
Default:
Unset.

Output Options:

-a percentile_list

percentile_list indicates the list of quantiles to be reported out in addition to median. This is done by specifying a list of percentiles in a comma separated string (spaces are not allowed). Each percentile is indicated by a floating point value between 0.0 and 100.0.

This value is only used if reporting summary statistics.

Default:
Unset.
-b bucket_width

A histogram of delays is created to compute the summary statistics. (This is used to compute percentiles of delay such as median.) The bucket_width indicates the resolution of the bins in the histogram. This value is specified using a floating point value and the units are seconds.

Because a histogram to compute the median (and other percentiles of delay) the results can be misleading if the bucket_width is not appropriate. For example, if all of the delays in the sample are smaller than the value of bucket_width then the median will be reported as bucket_width, a value that is greater than the maximum delay in the sample. To avoid this, bucket_width should be picked to be smaller than (max - min). The default value was selected to be reasonable for most real network paths, it is not appropriate for tests to the localhost however.

This value is only used if reporting summary statistics.

Default:
0.0001 (100 usecs)
-d dir

dir indicates the directory in which to save summary files if the -p option is used.
Default:
(current working directory)
-M

Print summary information in a more computer pars-able format. Specifically, values are printed out in a key/value style. Units are seconds for all time values.

The -M option is ignored if -Q is set.

Default:
Unset.
-N count

Number of test packets to put in sub-session summaries when computing statistics on owamp session data.

This option is used to break down the summary statistics in smaller sample sizes than a complete owp file. This is useful when breaking up very long running sessions.

This option is only used for statistical output, and therefore has no effect on the -R output mode.

Default:
Unset. (complete files are treated as the sample size)
-n units

units indicates what units time values should be reported in. units is specified using a single character specifying the units wanted.

The available units are:

´n´ nanoseconds (ns)
´u´ microseconds (us)
´m´ milliseconds (ms)
´s´ seconds (s)

This is only used for the human-readable summary statistics and the -v mode of reporting individual records. In particular, it is not used for the -R or -M output modes.

Default:
Unset.
-p

Save output summary information into files instead of printing it to STDOUT. Also, print the names of the files to STDOUT. The files will be saved in the directory specified by the -d option.

The summary filenames are in the format:

${START_TIME}_${END_TIME}.${FILETYPE}

STARTTIME and ENDTIME are the start and end timestamps for the session or sub-session. The timestamps are ASCII representation of 64 bit integers with the high-order 32 bits representing the number of seconds since Jan 1, 1900 and the low-order 32 bits representing fractional seconds. The FILETYPE is sum for -M summary files, and txt for the default human-readable summary information.

This option is ignored if the -R option is specified.

Default:
Unset.
-Q

Suppress the printing of all summary statistics and human-readable individual delays (-v).
Default:
Unset.
-R

Print individual packet records one per line in the raw format:

SEQNO SENDTIME SSYNC SERR RECVTIME RSYNC RERR TTL

SEQNO Sequence number.
SENDTIME Send timestamp.
SSYNC Sending system synchronized (0 or 1).
SERR Estimate of SENDTIME error.
RECVTIME Receive timestamp.
RSYNC Receiving system synchronized (0 or 1).
RERR Estimate of RECVTIME error.
TTL TTL IP field.

The timestamps are ASCII representation of 64 bit integers with the high-order 32 bits representing the number of seconds since Jan 1, 1900 and the low-order 32 bits representing fractional seconds. Lost packet records are indicated with a RECVTIME of 0 (zero). The sequence number is simply an integer. The error estimates are printed as floating-point numbers using scientific notation. TTL is the IP field from the packet. The TTL in sending packets should be initialized to 255, so the number of hops the packet traversed can be computed. If the receiving host is not able to determine the TTL field, this will be reported as 255. (Some socket API's do not expose the TTL field.)

The -R option implies -Q.

Default:
Unset.
-v

Print delays for individual packet records. This option is disabled by the -Q and -R options.
Default:
Unset.

ENVIRONMENT VARIABLES

OWAMP Environment Variable Description
OWAMP_DEBUG_TIMEOFFSET Offset time by this amount (float)

EXAMPLES

twping somehost.com

Run two concurrent ~10-second test sessions at a rate of a packet every 0.1 seconds. One session sending packets from the local host to somehost.com, the other session receiving packets from somehost.com.) Print summary statistics of the results only.

twping somehost.com:98765

Run the same two concurrent test sessions to a server running on somehost.com but on a non-default port.

twping -u someuser somehost.com

Run the default test as in the first example. Authenticate using the identity someuser. twping will prompt for a passphrase.

twping -F from.twp somehost.com

Same as the previous example, with the resulting data saved in from.twp. The owstats program can be used to decode that datafile using the same Output options that are available in owping.

twping -i 1e -c 10 somehost.com

Run a ~10-second test session at an average rate of 1 packet every second. Send packets, which are reflected by somehost.com, and then received. Print summary statistics of the results only.

twping -i 1f -c 10 somehost.com

Run a ~10-second test session at a rate of 1 packet every second. Send packets, which are reflected by somehost.com, and then received. Print summary statistics of the results only.

twping -i 1.0e,0f -c 20 somehost.com

Run a ~10-second test session. Send back-to-back packet pairs at an average rate of a packet pair every 1 seconds. Send packets, which are reflected by somehost.com, and then received. Print summary statistics of the results only.

SEE ALSO

twampd(8), owstats(1), and the http://e2epi.internet2.edu/owamp/ web site.

ACKNOWLEDGMENTS

This material is based in part on work supported by the National Science Foundation (NSF) under Grant No. ANI-0314723. Any opinions, findings and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the NSF.