NAME¶
echoping - tests a remote host with TCP or UDP
SYNOPSIS¶
echoping [-4] [-6] [-v] [-V] [-f
fill] [-t
timeout] [-c] [-d]
[-u] [-s
size] [-n
number] [-w
delay] [-h
url-or-path]
[-R] [-i
url] [-p
priority] [-P
tos] [-C] [-S] [-A] [-a]
[-m
plugin] hostname [:port] [plugin options...]
DESCRIPTION¶
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.
ARGUMENT¶
- 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).
OPTIONS¶
- -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.
EXAMPLES¶
- echoping -v foobar.example.com
- Tests the remote machine with TCP echo (one test).
- echoping -n 5 -w 10 foobar.example.com
- Tests the remote machine with TCP echo (five tests, every
ten seconds).
- echoping -h / foobar.example.com
- Tests the remote Web server and asks its home page. Note
you don't indicate the whole URL.
- echoping -h http://www.example.com/ cache.example.com:3128
- Tests the remote Web proxy-cache and asks a Web page. Note
that you must indicate the whole URL.
- echoping -n 3 -m whois foobar.example.com -d tao.example.org
- Loads the whois plugin and query the host
foobar.example.com. "-d tao.example.org" are options specific to
the whois plugin.
- echoping -u -P 0xa0 foobar.example.com
- Sends several UDP Echo packets with an IP Precedence of
5.
IP TYPE OF SERVICE OCTET¶
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).
BUGS¶
See SourceForge bug tracking system at
<
http://sourceforge.net/tracker/?group_id=4581&atid=104581>.
SEE ALSO¶
See the README for information about other network measurements programs.
FILES¶
- /usr/lib/echoping
- Plugins directory
AUTHOR¶
Stephane Bortzmeyer <bortz@users.sourceforge.net>