[net.dcom] How and Why to build an Echo Host

jbn@wdl1.UUCP (11/07/85)

      		How to Build an Echo Host, and Why

     One useful device for the network software implementor working without
access to a big network is an echo host.  An echo host (in the IP world)
receives datagrams, interchanges the source and destination IP addresses,
recomputes the IP checksum, and sends them out again.

     This is a useful device to have around.  It's a mirror.  If you try
to make a connection to it, you end up with a connection to yourself.
You can exercise protocols with only one copy of your development system
yet actually generate traffic over the network hardware.  Especially useful
are echo hosts that introduce errors and delays.  With these, one can find
out if your transport protocol really works.

     There are several echo hosts on the ARPANET; they all have names
with "ECHO" in them.  You can TELNET or FTP to them, but you end up connected
back to yourself.  Some of them are far away, and allow testing over satellite
links.  Some fragment IP datagrams.  Some have limited bandwidth.  These are
good for exercising an implementation.

     It is left as an exercise to the reader to implement echo host software
for the IBM PC, starting from the MIT package.  Such a device would be
excellent for testing out TCP implementations to make sure that the hard
cases really work, especially if error insertion (change one bit in every
Nth packet), delay (hold all packets N seconds before returning), and
congestion (if more than N packets are in the delay queue, send back a
Source Quench and/or drop one) are provided.

				John Nagle

chris@umcp-cs.UUCP (Chris Torek) (11/09/85)

It is surprisingly easy to build an Echo Host for 4.2 or 4.3 BSD.
Try connecting to umd-echo:  it is a poor underpowered 750 doing
the IP packet turnaround in user code.  Jim O'Toole wrote the `IP
Magic Address' hacks we are using to implement this.  Basically,
it allows a raw socket to turn on a new IP address.  The Ethernet
ARP code is modified to respond to requests for the magic address;
the inet input code is modified to accept packets destined for the
magic address and hand them to the raw socket code; and the raw
code knows to hand these only to the magic socket.

(In case it is not in your host tables, umd-echo is 128.8.128.30.)
-- 
In-Real-Life: Chris Torek, Univ of MD Comp Sci Dept (+1 301 454 4251)
UUCP:	seismo!umcp-cs!chris
CSNet:	chris@umcp-cs		ARPA:	chris@mimsy.umd.edu