mirror of
https://framagit.org/bortzmeyer/echoping
synced 2024-11-10 19:10:34 +00:00
148 lines
5.5 KiB
Plaintext
148 lines
5.5 KiB
Plaintext
Some details about echoping
|
|
------------
|
|
|
|
echoping is a debugging tool. It is not a "end user" tool. For
|
|
instance, HTTP testing takes host names, not URLs as parameters (if
|
|
you want to test in a more HTTPish way, use wget or curl). Also, when
|
|
connecting to a server which has both IPv4 and IPv6 addresses,
|
|
echoping does not try every address in turn like most user-oriented
|
|
programs do. If you want to test only the IPv4 address, use the
|
|
address, not the host name (or use the -4 option).
|
|
|
|
echo service:
|
|
|
|
echoping by default assumes the remote host accepts such
|
|
connections. Experience show that most Internet routers or hosts could
|
|
do it but do not by default. Most Unices are not shipped with this
|
|
service enabled and, anyway, the administrator is always free to close
|
|
it (I think they shouldn't). echoping has therefore less chance to
|
|
succeed than ping or bing. (On a typical Unix box, "echo" service is
|
|
configured in /etc/inetd.conf but see the CERT advisory
|
|
<http://www.cert.org/advisories/CA-96.01.UDP_service_denial.html>.)
|
|
|
|
What does it measure?
|
|
|
|
echoping simply shows the elapsed time, including the time to set up
|
|
the TCP connection and to transfer the data (but excluding the time
|
|
for the - possible - DNS call). Therefore, it is unsuitable to
|
|
physical line raw throughput measures (unlike bing). On the other end,
|
|
the action it performs are close from a HTTP request and it is
|
|
meaningful to use it (carefully) to measure Web performances.
|
|
|
|
UDP and inetd:
|
|
|
|
With UDP servers you can have surprises: the first test is quite often
|
|
much slower since inetd has to launch the process. After that, the
|
|
process stays a while so the next texts run faster.
|
|
|
|
A nice example:
|
|
|
|
There are many, many traps when measuring something on the
|
|
Internet. Just one example: 'echoping -w 0 -n 4 a-sunOS-machine' and
|
|
you'll see the first test succeed in a very short time (if you are
|
|
close from the machine) and all of the others take a much longer time
|
|
(one second). With '-w 1' (wait one second between tests, the
|
|
default), everything works fine: it seems the sockets on SunOS need
|
|
time to recover :-)
|
|
|
|
To measure performances on the Internet you can also see:
|
|
|
|
Unix:
|
|
|
|
- thrulay, measures the capacity of a network by sending a bulk TCP
|
|
stream over it <http://shlang.com/thrulay/>
|
|
- bing, a bandwidth measurement tool
|
|
<http://www.freenix.fr/freenix/logiciels/bing.html>
|
|
- patchchar or pchar <http://www.employees.org/~bmah/Software/pchar/>,
|
|
a bandwidth measurement tool
|
|
- ping, probably available with your system
|
|
- traceroute, idem (otherwise, see <ftp://ftp.ee.lbl.gov/>)
|
|
- ttcp, the best measurement tool but it needs some control over the
|
|
two machines <ftp://ftp.arl.mil/pub/ttcp>
|
|
- Netpipe, it needs some control over the
|
|
two machines <ftp://ftp.scl.ameslab.gov/pub/netpipe/>
|
|
- treno (evaluates available bandwidth for TCP)
|
|
<http://www.psc.edu/~pscnoc/treno_info.html>
|
|
- spray is a tool which I dont't know very well. It is available on some
|
|
machines (Sun, OSF/1).
|
|
I've also heard of but never tried:
|
|
- the very good mon program <http://www.kernel.org/software/mon/> includes a
|
|
up_rtt.monitor which has many similarities with echoping
|
|
- NetPerf <http://www.netperf.org/netperf/NetperfPage.html>
|
|
- a suite of Bandwidth Measuring programs from gnn@netcom.com
|
|
<ftp://ftp.netcom.com/~ftp/gnn/bwmeas-0.3.tar.Z>. These are several
|
|
programs that measure bandwidth and jitter over several kinds of
|
|
IPC links, including TCP and UDP.
|
|
|
|
Macintosh:
|
|
|
|
- TCP Watcher, a very nice "swiss-army knife" tool, to test ping, DNS, echo.
|
|
It includes an echo server. Available on Info-Mac in "comm/inet".
|
|
|
|
MS-Windows:
|
|
|
|
(I have little knowledge of that environment and I tested nothing. The
|
|
references here are quite old and should be checked.)
|
|
|
|
- WSNUTIL. Seems to be an echo client and server.
|
|
<http://www.ccs.org/winsock/xref-e.html#echo_clients>
|
|
- echox32. An echo server.
|
|
<http://www.winsite.com/info/pc/win95/misc/echox32.zip/>
|
|
- cfinger. An echo client and server.
|
|
<http://www.winsite.com/info/pc/win3/winsock/cfing13b.zip/>
|
|
|
|
Windows-NT :
|
|
|
|
echo and other services can (apparently) be provided within 'Simple
|
|
TCP/IP Services' which can be enabled through the Network Control
|
|
Panel
|
|
|
|
Web clients:
|
|
|
|
- You can ping or traceroute on the Web. See
|
|
<http://www.traceroute.org/>.
|
|
|
|
Use all of them with care, the result is not obvious to interpret.
|
|
|
|
If you are interested in Internet measurements, there is an Internet
|
|
Engineering Task Force Working Group, IPPM (IP Performance Metrics)
|
|
which produces many fine RFC that are really good to read. See
|
|
<http://www.ietf.org/html.charters/ippm-charter.html> for a full
|
|
list. I appreciate RFC 2330 and 3148.
|
|
|
|
And don't forget to read RFC 1470 ("Tools for Monitoring and Debugging
|
|
TCP/IP Internets and Interconnected Devices"), specially its
|
|
"Benchmark" section and the W. Richard Stevens' books (all of them),
|
|
published by Addison-Wesley.
|
|
|
|
If you want to modify echoping and test it against slow or lossy
|
|
connections, it is good to be able to reporudce these bad conditions
|
|
at will. To do so, you can use:
|
|
|
|
On Linux, Netem :
|
|
|
|
tc qdisc add dev eth0 root netem delay 50ms loss 10%
|
|
tc qdisc add dev eth1 root netem delay 50ms loss 10%
|
|
|
|
It depends on Netem (network emulation)
|
|
|
|
Networking -->
|
|
Networking Options -->
|
|
QoS and/or fair queuing -->
|
|
Network emulator
|
|
|
|
We can also use a patch to the Linux kernel's Netfilter :
|
|
|
|
<http://www.netfilter.org/patch-o-matic/pom-base.html#pom-base-random>
|
|
|
|
On FreeBSD, dummynet (<http://info.iet.unipi.it/~luigi/ip_dummynet>):
|
|
|
|
ipfw add 1000 pipe 1 tcp from judith to kiwi echo
|
|
ipfw pipe 1 config plr 0.5
|
|
|
|
It works fine to test echoping with 50 % of loss.
|
|
|
|
|
|
|
|
$Id$
|