-- PupNetTool.doc
-- WIrish.pa, 18-Jul-86 13:59:00

PupNetTool monitors all of the PUP nets in the Internet and maintains information about these nets.  When the tool is in the normal sized window state it displays a status grid showing the state of every network.  Additional information about each net is available by clicking the mouse on nets within the grind and in conjunction with various commands and variables in the form subwindow.   When in the tiny window state the words "OK" or "Troubles" are used to reflect the current state of the network.  The Yell feature can be used to indicate problems in the network by flashing the screen and/or generating an audible alarm regardless of whether the tool is in normal or tiny state.

PupNetTool builds and maintains an idea of what networks it expects to see, how far away they are, via what gateway, and whether it is an important net or not.  When a network is farther than it expects (including inaccessible) it indicates so (gray = more hops, inverted = inaccessible).  When it sees a network that it previously didn't expect it adds it to its expected list.  If a network should become closer (fewer hops than previously expected) it updates it's expectations.  These expectations can be saved to, and read from, a file (PupNetTool.netlist) in order to save this information across activations.  If no file is available PupNetTool will build an initial expectation of the network from the current routing table.

PupNetTool.netlist will be read automatically (if available) upon starting the tool or being reactivated, but must be saved explicitly.  The information in this file is in plain ASCII text and may be edited manually if so desired.  (The file format is "undocumented" but should be easy to figure out...)  A PupNetTool.netlist file contains information that is network dependent, that is, a file generated by a machine on one net is of no (sensible) use to a machine on another network.  (But IS usable by other machines on the same network.)

Once you have a reasonable PupNetTool.netlist file it won't need to be changed very often; only when the configuration of the internet changes, or you decide a net has changed importance.  It may take a few days to build a reasonable copy or your net.  To do this, just run the tool and bug SaveNetList! before you deactivate the tool or reboot the machine for the first few days or so.  You will probably get a feel for how it all works after you run it a bit.

There is a facility to "Mark" certain networks as "Important".  What this really means is that the person running the tool is more interested in these networks than in the others.  The state of the network is "OK" if all important nets are accessible and "Troubles" if one or more important nets are inaccessible.  (The OnAny flag treats all nets as important.)

When choosing what nets to mark as important here are some guidelines:  All Ethernets that you are responsible for or communicate with on a daily basis.  All phone lines connected to your site.  All Ethernets on the other end of the phone lines.  This last item is important because things can happen that render the phone line useless but still appears accessible, but the Ethernet on the other end won't (unless there are strange loops in the internet).


Some notes on usage:
--------------------
As time goes on networks are added to and deleted from the network.  PupNetTool automatically notices new nets and adds then to its internal list.  Remember, if you want these new nets remembered between activations then you have to do a SaveNetList!

When nets go away they turn black, because they are not reachable anymore.  The trouble is that this is normal -- on a short term basis -- as nets go down because of problems (and then come back up when things are fixed).  A clue that a net is really dead (as opposed to just down) is if it is black, and it only has a number and no name.  Keep these things in mind when using the tool.  When you decide that a network really is dead then you should edit the PupNetTool.netlist file and delete the line that has an entry for that net number.  Once the file is edited and saved then just bug ReadNetList!

Sometimes the topology might change in such a way that some of the "best" routes become longer than in the previous topology.  (An example is when I added Tweedsmuir to the network.)  In this case you are going to see a lot of gray.  If this is a true change in the topology (as opposed to something just going down) then you will need to build a new PupNetTool.netlist again.

Some more usage notes:

Choose your "important" nets wisely.  If you mark too much stuff as "important" then you tend to ignore stuff because it may not really be important.  If you don't mark anything as "important" then you lose some of the effectiveness of the tool.

When running PupNetTool on my workstation I usually set the CheckInterval to 1 minute.  This seems to catch problems quickly yet doesn't require much CPU time.  YellInterval is largely a function of taste.  I normally use 5 minutes but sometimes select never if things stay down a long time and it becomes obnoxious.  Also, I usually leave YellOnAny, Beep, and ShowMarks on; while leaving OnAny, Blink, and Mark off.  This seems to be a reasonable setup.

When running PupNetTool on a gateway you may want to turn blink on and set YellInterval to a smaller value.


Bugs and caveats:
----------------
The names of both gateways and networks are gotten from a nameserver and the cached by the tool.  The entire cache is flushed when the tool is deactivated or a ReadNetList command is given.  An entry for an individual network is updated when the mouse is used to get info on a particular net.  What this means is that it doesn't simply "notice" when there is a new version of Pup-Network.* and flush the cache.  This can cause some of the names used to be out-of-date if a new version of Pup-Network.* is generated that changes one of the cached names.  If you know or suspect this to be the case do something to flush that entry, or the entire cache.

Invoking commands or changing parameters right after activating the tool might cause it to crash.  Wait a moment or two for it to initialize (it will look "normal" when its done initializing).

When Show: {via} is selected it should say directly connected (or is it "--"?) but it actually seems to give the name of the local net instead.

Report problems or comments to: WIrish.pa



Mouse Operations:
-----------------
Clicking Point on a net gives the following information:
  Network name, as given in Pup-Network.txt.
  Network Number.
  The present gateway and number of hops used to get to the network.
  The gateway and hop count of the best path seen so far.
  The number of times the hop count has changed.
  And the number of times the network has become inaccessible.

Clicking Adjust on a net gives all of the above information plus times.

Commands Items:
---------
SaveNetList!	Save the current expectations to "PupNetTool.netlist".
ReadNetList!	Read "PupNetTool.netlist" for a new set of expectations.

Other Items:
------------
CheckInterval	Every CheckInterval PupNetTool inspects the local routing
		tables and updates its information about the internet.
Show		The information in the grid can be shown in different ways.
		Names uses the name for each network as found in Pup-Network.txt.
		Hops uses the net number and additionally shows the current /
		shortest hops to that net.  Via shows the net number and the
		name (or number) of the first gateway to that network.
		Changes uses the net number and additionally shows the number
		of hop changes / inaccessible count.
Mark		When TRUE (inverted) you are in mark mode.
		In mark mode the mouse marks (left button) or unmarks
		(right button) nets as important rather than giving information.
ShowMarks	A * will mark all important nets.
YellInterval	Every YellInterval the tool will Blink or Beep if an
		important (or any if "OnAny") net is down.  The generated beep is
		a quick high-low-high-low.
YellOnChange	Independent of YellInterval.  YellOnChange will blink and/or beep
		when an important (or any if "OnAny") net goes down or comes up.
		The generated beep will be high-low if it went down, low-high
		if it comes up.
Blink		Blink the display when yelling.
Beep		Beep when yelling.
OnAny		If TRUE (inverted) complain about all nets (not just important).
Debug		Don't use this.