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
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.
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 Displays the compiled-in configuration of echoping. Useful for
-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
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
-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
-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
-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)
Fill the packet with this character (default is random filling)
-D Tries to display actual data transfer duration only, not total
-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.
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.
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
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
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
See the README for information about other network measurements
Stephane Bortzmeyer <firstname.lastname@example.org>