echoping - tests a remote host with TCP or UDP
echoping [-4] [-6] [-v] [-V] [-ffill]
[-ttimeout] [-c] [-d] [-u] [-ssize] [-nnumber]
[-wdelay] [-hurl-or-path] [-R] [-iurl]
[-ppriority] [-Ptos] [-C] [-S] [-A] [-a] [-mplugin]
hostname [:port] [plugin options...]
echoping is a small program to test (approximatively)
performances of a remote Internet host by sending it TCP "echo"
packets. It can use other protocols as well (HTTP - which makes it a good
tool to test Web servers, UDP "echo", etc).
echoping simply shows the elapsed time, including the time
to set up the TCP connection and to transfer the data. Therefore, it is
unsuitable to physical line raw throughput measures (unlike bing or treno).
On the other end, the action it performs are close from, for instance, a
HTTP request and it is meaningful to use it (carefully) to measure Web
performances.
- hostname[:port]
- Name (or address) of the server to test. For HTTP, you can specify a port
number. For HTTP and IPv6, you can use RFC 2732 syntax (you will probably
need to escape the brackets from the shell). The name can be an IDN
(Unicode domain name).
- -v
- Verbose
- -V
- Displays the compiled-in configuration of echoping. Useful for bug
reports.
- -s nnn
- Size of the data to send. Large values can produce strange results with
some echo servers.
- -n nnn
- Numbers of repeated tests. With this option, you have also the minimum,
maximum, average and median time, as well as the standard deviation. The
median is the value such that half of the measures are under it and the
other half is above. When you measure highly variables values, like it is
often the case on the whole Internet, median is better than average to
avoid "extreme" values. You can check the "value" of
the average by looking at the standard deviation: very roughly, if the
standard deviation is more than the half of the average, the average does
not mean anything. (See a book about statistics for the details: the
reality is far more complicated.)
- -w nnn
- Number of seconds to wait between two tests (default is one). On systems
which have usleep(), you can write it as a fractional number, such as
3.14. Otherwise, use integers.
- -t nnn
- Number of seconds to wait a reply before giving up. For TCP, this is the
maximum number of seconds for the whole connection (setup and data
exchange).
- -u
- Use UDP instead of TCP
- -d
- Use the "discard" service instead of echo
- -c
- Use the "chargen" service instead of echo
- -h url-or-path
- Use the HTTP protocol (instead of echo) for the given URL. If the hostname
is the Web server, the argument has to be a path, a relative URL (for
instance '/' or '/pics/foobar.gif'). If the hostname is a proxy/cache like
Squid, the argument has to be an absolute URL.
- -R
- Accept HTTP status codes 3xx (redirections) as normal responses (the
default is to regard them as errors)
- -i url
- Use the ICP protocol (instead of echo) for the given URL. The URL has to
be an absolute one. This is mostly for testing Squid Web
proxy/caches.
- -A
- Force the proxy (if you use one) to ignore the cache
- -a
- Force the proxy (if you use one) to revalidate data with the original
server
- -C
- Use the SSL/TLS (cryptography) protocol. For HTTP tests only.
- -S
- Use the SMTP protocol (instead of echo) for the given server.
- -4
- Use only IPv4 (even if the target machine has an IPv6 address)
- -6
- Use only IPv6 (even if the target machine has an IPv4 address)
- -f character
- Fill the packet with this character (default is random filling)
- -D
- Tries to display actual data transfer duration only, not total time
- -N n
- Displays an average which excludes values ("outliers") which are
further than +/- N*standard deviation
- -p n
- Send packets with the socket priority to the integer n. The mapping
of the socket priority into a network layer or a link layer priority
depends upon the network protocol and link protocol in use. For more
details see SO_PRIORITY in socket(7).
- -P n
- Set the IP type of service octet in the transmitted packets to the least
significant eight bits of the integer n. See ip(7) or
ip(4) (depending on your Unix). /usr/include/netinet/ip.h may
contain interesting constants for setting Type Of Service.
- -m plugin
- Load the given plugin. The plugin is first searched in the normal library
directories (see ld.so(8) ) then in /usr/lib/echoping. You can type
ls in /usr/lib/echoping to get an idea of the available plugins.
The documentation for a given plugin is in echoping_PLUGINNAME(1)
The plugin-specific options appear after the hostname.
The IP packet header contains 8 bits named the "type of
service octet". The value of the octet is set with the -P
option. The effects of the octet are defined differently in RFC791
Internet Protocol and RFC2474 Definition of the Differentiated
Services Field (DS Field) in the IPv4 and IPv6 Headers.
RFC791 defines Precedence which has ascending priorities 0
through to 7, and the bits Delay, Throughput,
Reliability, and Cost which indicates the application's
preference for the properties of the packet's path through the network.
Precedence is in the most significant three bits of the type of
service octet, followed in decending significance order by the D,
T, R and C bits. The least significant bit must be
zero. Only one of the D, T, R or C bits may be
set.
RFC2474 defines the Distributed Services Code Point, or DSCP. This
acts as a selector between 64 possible behaviours that the network can apply
to the packet. The DSCP is in the most significant six bits of the
type of service octet. The remaining least significant two bits of the octet
must be zero.
The numeric arguments to -p and -P can be in decimal
(such as 11), octal (such as 013) or hexadecimal (such as 0x0b). So padding
decimal arguments with leading zeros will change the value read.
You may need to be superuser to set some -p or -P
values (precedence on Linux, for instance).
See SourceForge bug tracking system at
<http://sourceforge.net/tracker/?group_id=4581&atid=104581>.
See the README for information about other network measurements
programs.
- /usr/lib/echoping
- Plugins directory
Stephane Bortzmeyer <bortz@users.sourceforge.net>