PupEchoToolDoc.tioga
Hal Murray December 30, 1985 5:12:51 pm PST
Hal Murray, January 30, 1986 0:33:38 am PST
Pup Echo Tool
CEDAR 6.0 — FOR INTERNAL XEROX USE ONLY
Pup Echo Tool
Hal Murray
© Copyright 1985, 1986 Xerox Corporation. All rights reserved.
Abstract: PupEchoTool lets you bounce Pups off of other machines. It optionally prints a response time histogram.
Created by: Hal Murray
Maintained by: Hal Murray <Murray.PA>
Keywords: Pup, Echo, Response time
XEROX  Xerox Corporation
   Palo Alto Research Center
   3333 Coyote Hill Road
   Palo Alto, California 94304

For Internal Xerox Use Only
1. What's an Echo Tool?
Short of a scope on the coax, Echoing is the lowest level of network debuging. You fling a packet at a machine. If everything goes right, it sends one back to you. The PupEchoTool uses Pups (as compared to EDP format packets) so you can echo through gateways and around corners. If something doesn't work, try some other things. The parts in common probably do work, so the untested parts probably contain the broken piece.
Most interesting machines now contain Pup Echo Servers. Of course, Gateways do. So do IFSs and Grapevine servers. So do all Cedar 6 machines. (Except for the ones that are powered off.) Thus all Alpine servers are also Echo servers. You can Echo to Luther or Ebbetts to see if they are alive. Dovers are the only exceptions I can think of.
Aside from just an up/down test of a server (or phone line, or ...) you can also learn a lot about a system by timing the replies.
2. Bells, Whistles, and Buttons
When you first run it, PupEchoTool registers the PupEchoTool command with the CommandTool. The PupEchoTool command creates another instance of an PupEchoTool. (You can happily run several at the same time.) Each instance of an PupEchoTool has the following switches and command bottons:
!, ., ?, #, $
These are switches that control the printout of the corresponding character.
If ! is black, a ! will be printed every time an echo packet returns. The interaction between ! and . is a bit complicated, but it seems to have the right feel. If . and ~!, a dot will be printed every 1000 packets. This saves a lot of CPU cycles that would otherwise be used to update the display. If . and !, a new line will be started every 1000 packets.
? (when black) is printed whenever a packet doesn't get back in time. (Currently, the timeout is 3 seconds.) # is printed whenever the packet doesn't match. The combination ?# usually means that a packet returned after the timeout.
A $ is printed by the Server whenever it echoes a packet. Again, this only happens if it's black. The first instance of an PupEchoTool includes a server that overrides the one that is built into Cedar.)
D-ck
D-ck is a switch that lets you disable the byte for byte compare on the returned data. This lets you fling packets faster in case you want to harass your software or warm up the ether.
FixedLength
FixedLength is a switch that lets you force all packet to be the same length. Long packets put more load on slow phone lines.
Length
Length is number of bytes in ecch packet if FixedLength is black.
Timeout
Timeout is number of milliseconds to wait before assuming that a packet has been lost. (If you see ?#?#?# patterns, timeout is probably too low.
Dally
Dally is number of milliseconds to dally after sending each packet. (It gets severly rounded by the process machinery.) Dally will be off the right edge of the screen unless the viewer is wide enough. The normal right column isn't wide enough. That's unlikley to be a serious problem since the default is 0, and that's probably what you want.
Target
Target is the name of the machine you want to echo to. You can also use the 3#313# format. That's especially handy if you get nasty comments like "No response from Name Lookup Server".
Poke
Poke sends one packet, and prints a line for each response it gets back. This is just a somewhat antisocial hack for locating machines on other nets. (It's also good for making sure a net can tolerate a big collision. Think what happens when 100 machines answer the same packet.)
Start
Start forks an Echoer process to bounce packets off of Target. If ! is off, a "." will be printed every 256 packets.
Normally, only 1 packet at a time is in flight. If the shift key is down, Start keeps 2 packets in flight. Ctrl-Start keeps 3, and Shift-Ctrl-Start keeps 6 packets in flight.
Beware, if you are echoing to a server, you can put quite a load on it's CPU, especially if you are sending from a Dorado and you have more than one packet in flight. You can also dump a big load on a phone line.
Hist
Hist stops the Echoer process if it is running, and then prints out a response time histogram. This can get a bit verbose if there is normally a long tail.
Stop
Stop just stops the Echoer process and prints the number of packets sent, received, and missed. (It does not print out the response time histogram.)
Route
Route just prints the local Pup routing table.
Stats
Stats just prints the accumulated device statistics. (They get reset each time you Boot, and they get restored when you Rollback.)
3. Packet format
Look at the code if you really need to know the fine print.
The first byte of the packet is a 0, and each byte after that is 1 bigger. They obviously wrap around (and start over) at 256.
Unless FixedLength is on, packets start at 0 (data) bytes, and grow by 1 byte with each packet. When the reach the max length, they start over again.