updated documentation a bit
[spider.git] / html / adminmanual-1.html
index 500b636472ac37721cea0c2a7260e723f6e803c6..1fb0df409d562287ba0b8d87a6162f032078635d 100644 (file)
@@ -2,7 +2,7 @@
 <HTML>
 <HEAD>
  <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
- <TITLE>The DXSpider Installation and Administration Manual : Installation (Original version by Iain Phillips, G0RDI)</TITLE>
+ <TITLE>The DXSpider Administration Manual v1.48: Routing and Filtering</TITLE>
  <LINK HREF="adminmanual-2.html" REL=next>
 
  <LINK HREF="adminmanual.html#toc1" REL=contents>
 Previous
 <A HREF="adminmanual.html#toc1">Contents</A>
 <HR>
-<H2><A NAME="s1">1. Installation (Original version by Iain Phillips, G0RDI)</A></H2>
+<H2><A NAME="s1">1. Routing and Filtering</A></H2>
 
 <H2><A NAME="ss1.1">1.1 Introduction</A>
 </H2>
 
-<P>This section describes the installation of DX Spider v1.35 on a 
-<A HREF="http://www.redhat.com">RedHat</A> Linux Distribution.  
-I do not intend to try and cover the installation of Linux or the setup 
-of the AX25 utilities.  If you need help on this then read Iains original 
-HOWTO on the 
-<A HREF="http://www.dxcluster.org">DXSpider</A> 
-website.
-<P>
-<P>I am assuming a general knowledge of Linux and its commands.  You should 
-know how to use <EM>tar</EM> and how to edit files using your favourite editor.
-<P>
-<P>The crucial ingredient for all of this is 
-<A HREF="http://www.perl.org">Perl 5.004</A>.  Now I know Perl 5.005 
-is out and this will almost certainly work with it, but 
-<A HREF="http://www.redhat.com">RedHat 5.1</A> comes with 5.004. 
-<EM>Be Warned</EM>, earlier versions of 
-<A HREF="http://www.redhat.com">RedHat</A> <B>do not</B> come 
-with 5.004 as standard, you need to 
-<A HREF="ftp://upgrade.redhat.com">upgrade</A><P>
-<P>In addition to the standard Red Hat distribution you will require the 
-following 
-<A HREF="http://www.cpan.org/CPAN.html">CPAN</A> modules: -
-<P>
-<P>
-<UL>
-<LI>            MD5-1.7.tar.gz</LI>
-<LI>            Data-Dumper-2.10.tar.gz</LI>
-<LI>            FreezeThaw-0.3.tar.gz</LI>
-<LI>            MLDBM-2.00.tar.gz</LI>
-<LI>            TimeDate-1.08.tar.gz</LI>
-<LI>            IO-1.20.tar.gz</LI>
-<LI>            Net-Telnet-3.02.tar.gz</LI>
-<LI>            Curses-1.05.tar.gz</LI>
-<LI>            Time-HiRes-01.20.tar.gz
-</LI>
-</UL>
-<P>
-<P>
-<P><EM>Do</EM> get the latest versions of these packages and install them 
-but use the above list as the earliest versions usable.
-<P>
-<H2><A NAME="ss1.2">1.2 Preparation</A>
+<P>From DXSpider version 1.48, major changes were introduced to the way 
+node connections are treated.  This is part of an ongoing process to
+remove problems with loops and to enable talk and other functions to
+propagate across the whole of the worldwide cluster network.  In fact,
+in a Spider network, it would be useful, perhaps even necessary to
+have loops.  This would give real resilience to the network, meaning
+that if a link dropped, the information flow would simply come in and
+go out via a different route.  Of course, we do not have a complete
+network of Spider nodes, there are other programs out there.  Some of
+these do not have any protection from loops.  Certainly AK1A does not 
+handle loops well at all.  It is therefore necessary to have some form 
+of protection for these nodes.
+<P>
+<P>In fact DXSpider has had a simple system for some time which is called
+<I>isolation</I>. This is similar to what, in other systems such as 
+<B>clx</B>, is called <I>passive mode</I>. A more detailed explanation
+of <I>isolation</I> is given further below. This system is still available
+and, for simple networks, is probably all that you need.
+<P>
+<P>The new functionality introduced in version 1.48 is filtering the node
+and user protocol frames on a "per interface" basis. We call this
+<I>route filtering</I>. This is used <B>instead of</B>
+<I>isolation</I>. 
+<P>
+<P>What this really means is that you can control more or less completely
+which PC protocol frames, to do with user and node management, pass to
+each of your partner nodes. You can also limit what comes into your
+node from your partners. You can even control the settings that your
+partner node has for the routing information that it sends to you
+(using the <I>rcmd</I> command).
+<P>
+<H2><A NAME="ss1.2">1.2 Route Filters</A>
 </H2>
 
-<P>I will assume that you have already downloaded the latest tarball of 
-the DXSpider software and are ready to install it. I am assuming version 
-1.35 for this section but of course you would use the latest version.
+<P>Initially when route filters were being tested we generated a
+"default" filter.  Unfortunately it quickly became apparent that this
+might suit the UK cluster network but didn't really fit anybody else.
+However using a default filter is an appropriate thing to do. How, is
+explained further on.
+<P>
+<P>The first thing that you must do is determine whether you need to do route filtering <B>at all</B>. If you are a "normal" node with two or three partners
+and you arranged in an "official" non-looping tree type network, then <B>you do 
+not need to do route filtering</B> and you will feel a lot better for not 
+getting involved. If you are successfully using <I>isolation</I> then you
+also probably don't need to use route filtering.
+<P>
+<P>You will only require this functionality if you are
+"well-connected". What that means is that you are connected to several
+different parts of (say) the EU cluster and, at the same time, also
+connected to two or three places in the US which, in turn are
+connected back to the EU. This is called a "loop" and if you are
+seriously looped then you need filtering.
+<P>
+<P>I should at this stage give a little bit of background on filters.  All
+the filters in Spider work in basically the same way.  You can either
+accept or reject various options in order to create the filter rules
+you wish to achieve.  Some filters are user settable, others can only
+be altered by the sysop.  Route filtering can only be done by the sysop.
+<P>
+<P> 
+Anyway, without further discouragement, let me start the process
+of explanation.
+<P>
+<H2><A NAME="ss1.3">1.3 The node_default filter</A>
+</H2>
+
+<P>All normal systems should have a default routing filter and it should
+usually be set to send only the normal, unlooped, view of your
+"national" network.  Here in the UK that means nodes from the UK and
+Eire, in EU it is more complex as the networks there grew up in a more
+intertwined way.
+<P>
+<P> 
+The generic commands are:-
+<P>
+<BLOCKQUOTE><CODE>
+<PRE>
+reject/route node_default &lt;filter_option&gt;
+
+or
+
+accept/route node_default &lt;filter_option&gt;
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>where filter_option is one of the following ...
+<P>
+<BLOCKQUOTE><CODE>
+<PRE>
+call &lt;prefixes&gt;
+call_dxcc &lt;numbers&gt;
+call_itu &lt;numbers&gt;
+call_zone &lt;numbers&gt;
+channel &lt;prefixes&gt;
+channel_dxcc &lt;numbers&gt;
+channel_itu &lt;numbers&gt;
+channel_zone &lt;numbers&gt;
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>Please be careful if you alter this setting, it will affect 
+<B><I>ALL</I></B> your links!
 <P>
-<P>Login as root and create a user to run the cluster under.  <B><I>UNDER 
-NO CIRCUMSTANCES USE ROOT AS THIS USER!</I></B>.  I am going to use 
-the name <EM>sysop</EM>.  You can call it anything you wish.  Depending 
-on your security requirements you may wish to use an existing user, 
-however this is your own choice.
+<P>For the default routing filter then you have two real choices: either
+a "national" view or the "safe" option of only your own
+callsign. Examples of each (for my node: GB7DJK) are:-
+<P>
+<BLOCKQUOTE><CODE>
+<PRE>
+acc/route node_default call_dxcc 61,38
+acc/route node_default call gb7djk
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>GB7DJK uses the first of these. The DXCC countries can be obtained from the 
+<I>show/prefix</I> command.
 <P>
+<P>The example filters shown control <I>output</I> <B>TO</B> all your
+partner nodes unless they have a specific filter applied to them (see
+next section).
+<P>
+<P>It is also possible to control the <I>incoming</I> routing
+information that you are prepared to accept <B>FROM</B> your partner
+nodes. The reason this is necessary is to make sure that stuff like
+mail, pings and similar commands a) go down the correct links and b)
+don't loop around excessively. Again using GB7DJK as an example a typical
+default input filter would be something like:
 <P>
 <BLOCKQUOTE><CODE>
 <PRE>
-# adduser -m sysop
+rej/route node_default input call_dxcc 61,38 and not channel_dxcc 61,38
 </PRE>
 </CODE></BLOCKQUOTE>
+<P>What this does is accept node and user information for our national
+network from nodes that are in our national network, but rejects such
+information from anyone else. Although it doesn't explicitly say so,
+by implication, any other node information (not from the UK and Eire)
+is accepted.
+<P>
+<P>As I imagine it will take a little while to get one's head around all of this you
+can study the effect of any rules that you try by watching the debug output
+after having done:-
 <P>
-<P>Now set a password for the user ...
+<BLOCKQUOTE><CODE>
+<PRE>
+set/debug filter
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>After you have got tired of that, to put it back the way it was:-
 <P>
 <BLOCKQUOTE><CODE>
 <PRE>
-# passwd sysop
-# New UNIX password:
-# Retype new UNIX password:
-passwd: all authentication tokens updated successfully
+unset/debug filter
 </PRE>
 </CODE></BLOCKQUOTE>
 <P>
-<H2><A NAME="ss1.3">1.3 Installing the software</A>
+<H2><A NAME="ss1.4">1.4 General route filtering</A>
 </H2>
 
-<P>Now to unpack the DX Spider distribution, set symbolic links and group 
-permissions.  Copy the tarball to /home/sysop and do the following.
+<P>Exactly the same rules apply for general route filtering.  You would
+use either an accept filter or a reject filter like this ...
 <P>
 <BLOCKQUOTE><CODE>
 <PRE>
-# cd ~sysop
-# tar xvfz spider-1.35.tar.gz
-# ln -s ~sysop/spider /spider
-# groupadd -g 251 spider       (or another number)
+reject/route &lt;node_call&gt; &lt;filter_option&gt;
+
+or
+
+accept/route &lt;node_call&gt; &lt;filter_option&gt; 
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>
+<P>Here are some examples of route filters ...
+<P>
+<BLOCKQUOTE><CODE>
+<PRE>
+rej/route gb7djk call_dxcc 61,38 (everything except  UK+EIRE nodes)
+rej/route all     (equiv to [very] restricted mode)
+acc/route gb7djk call_dxcc 61,38 (send only UK+EIRE nodes)
+acc/route gb7djk call gb7djk     (equiv to SET/ISOLATE)
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>In practice you will either be opening the default filter out for a
+partner by defining a specific filter for that callsign:-
+<P>
+<BLOCKQUOTE><CODE>
+<PRE>
+acc/route gb7baa all
+acc/route gb7baa input all
 </PRE>
 </CODE></BLOCKQUOTE>
-<P>If you do not have the command <EM>groupadd</EM> available to you simply 
-add a line in /etc/group by hand.
+<P>or restricting it quite a lot, in fact making it very nearly like an <I>isolated</I> node, like this:-
 <P>
 <BLOCKQUOTE><CODE>
 <PRE>
-# vi /etc/group                (or your favorite editor)
+acc/route pi4ehv-8 call gb7djk
+rej/route pi4ehv-8 input call_dxcc 61,38 
 </PRE>
 </CODE></BLOCKQUOTE>
-<P>You also need to add some others to the group, including your own callsign 
-(this will be used as an alias) and root.  The finished line in /etc/group 
-should look something like this
-<P><CODE>spider:x:251:sysop,g0vgs,root</CODE>
+<P>This last example takes everything except UK and Eire from PI4EHV-8
+but only sends him my local configuration (just a PC19 for GB7DJK and
+PC16s for my local users).
 <P>
-<P>The next step is to set the permissions on the Spider directory tree and files ....
+<P>It is possible to do <B>much</B> more complex rules, there are up to 10
+accept/reject pairs per callsign per filter. For more information see the 
+next section. 
+<P>
+<P>
+<H2><A NAME="ss1.5">1.5 General filter rules</A>
+</H2>
+
+<P>Upto v1.44 it was not possible for the user to set their own filters.  From 
+v1.45 though that has all changed.  It is now possible to set filters for just 
+about anything you wish.  If you have just updated from an older version of 
+DXSpider you will need to update your new filters.  You do not need to do 
+anything with your old filters, they will be renamed as you update.
+<P>
+<P>There are 3 basic commands involved in setting and manipulating filters.  These 
+are <EM>accept</EM>, <EM>reject</EM> and <EM>clear</EM>.  First we will look
+generally at filtering. There are a number of things you can filter in the 
+DXSpider system. They all use the same general mechanism.
+<P>
+<P>In general terms you can create a "reject" or an "accept" filter which can have 
+up to 10 lines in it. You do this using, for example ... 
 <P>
 <BLOCKQUOTE><CODE>
 <PRE>
-# chown -R sysop.spider spider
-# find . -type d -exec chmod 2775 {} \;
-# find . -type f -exec chmod 775 {} \;
+accept/spots .....
+reject/spots .....
 </PRE>
 </CODE></BLOCKQUOTE>
+<P>where ..... are the specific commands for that type of filter. There are filters 
+for spots, wwv, announce, wcy and (for sysops) connects. See each different 
+accept or reject command reference for more details.
+<P>There is also a command to clear out one or more lines in a filter. They are ...
 <P>
-<P>This last step allows various users of the group <EM>spider</EM> to have 
-write access to all the directories.  This is not really needed just yet 
-but will be useful when web interfaces start to appear.
+<BLOCKQUOTE><CODE>
+<PRE>
+clear/spots 1
+clear/spots all
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>There is clear/xxxx command for each type of filter.
 <P>
-<P>Finally, you need to fix the permissions on the ax25_call and netrom_call 
-programs.  Check where they are with the <EM>locate</EM> command and alter 
-the permissions with the <EM>chmod</EM> command like this ..
+<P>and you can check that your filters have worked by the command ... 
 <P>
 <BLOCKQUOTE><CODE>
 <PRE>
-# chown root ax25_call netrom_call
-# chmod 4775 ax25_call netrom_call
+  
+show/filter
 </PRE>
 </CODE></BLOCKQUOTE>
 <P>
-<H2><A NAME="ss1.4">1.4 Setting callsigns etc</A>
+<P>For now we are going to use spots for the examples, but you can apply the same
+principles to all types of filter.
+<P>
+<H2><A NAME="ss1.6">1.6 Types of filter</A>
 </H2>
 
-<P>Now login to your machine as the user you created earlier.  In my case that 
-user is called <EM>sysop</EM>.  Once logged in, issue the following commands ....
+<P>There are two main types of filter, <EM>accept</EM> or <EM>reject</EM>.  You 
+can use either to achieve the result you want dependent on your own preference 
+and which is more simple to do.  It is pointless writing 8 lines of reject 
+filters when 1 accept filter would do the same thing!  Each filter has 10 
+lines (of any length) which are tried in order.  If a line matches then the 
+action you have specified is taken (ie reject means ignore it and accept 
+means take it)
+<P>
+<P>If you specify reject filters, then any lines that arrive that match the filter 
+will be dumped but all else will be accepted.  If you use an accept filter, 
+then ONLY the lines in the filter will be accepted and all else will be dumped.
+For example if you have a single line <EM>accept</EM> filter ...
+<P>
+<BLOCKQUOTE><CODE>
+<PRE>
+accept/spots on vhf and (by_zone 14,15,16 or call_zone 14,15,16)
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>then you will <EM>ONLY</EM> get VHF spots <EM>from</EM> or <EM>to</EM> CQ zones 
+14, 15 and 16.
+<P>
+<P>If you set a reject filter like this ...
+<P>
+<BLOCKQUOTE><CODE>
+<PRE>
+reject/spots on hf/cw
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>Then you will get everything <EM>EXCEPT</EM> HF CW spots.  You could make this 
+single filter even more flexible.  For example, if you are interested in IOTA 
+and will work it even on CW even though normally you are not interested in 
+CW, then you could say ...
+<P>
+<BLOCKQUOTE><CODE>
+<PRE>
+reject/spots on hf/cw and not info iota
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>But in that case you might only be interested in iota and say:-
 <P>
 <BLOCKQUOTE><CODE>
 <PRE>
-$ cd /spider
-$ mkdir local
-$ mkdir local_cmd
-$ cp perl/DXVars.pm.issue local/DXVars.pm
-$ cd local
-$ vi DXVars.pm (or your favourite editor)
+accept/spots not on hf/cw or info iota
 </PRE>
 </CODE></BLOCKQUOTE>
+<P>which achieves exactly the same thing. You should choose one or the other 
+until you are comfortable with the way it works. You can mix them if you 
+wish (actually you can have an accept AND a reject on the same line) but 
+don't attempt this until you are sure you know what you are doing!
 <P>
-<P>Using the distributed DXVars.pm as a a template, set your cluster callsign, 
-sysop callsign and other user info to suit your own environment. Note that 
-this a perl file which will be parsed and executed as part of the cluster. If 
-you get it wrong then perl will complain when you start the cluster process.  
-It is important only to alter the text of any section.  Some of the lines look 
-a little odd.  Take this line for example ....
-<P><CODE>$myemail = "ianmaude\@btinternet.com";</CODE>
+<P>You can arrange your filter lines into logical units, either for your own
+understanding or simply convenience. Here is an example ...
 <P>
-<P>There appears to be an extra slash in there.  However this has to be there 
-for the file to work so leave it in.
+<BLOCKQUOTE><CODE>
+<PRE>
+reject/spots 1 on hf/cw
+reject/spots 2 on 50000/1400000 not (by_zone 14,15,16 or call_zone 14,15,16)  
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>What this does is to ignore all HF CW spots and also rejects any spots on VHF 
+which don't either originate or spot someone in Europe. 
 <P>
-<P><B>PLEASE USE CAPITAL LETTERS FOR CALLSIGNS</B>
+<P>This is an example where you would use a line number (1 and 2 in this case), if 
+you leave the digit out, the system assumes '1'. Digits '0'-'9' are available.  
+This make it easier to see just what filters you have set.  It also makes it 
+more simple to remove individual filters, during a contest for example.
 <P>
-<P>DON'T alter the DXVars.pm (or any other file) in /spider/perl, they are 
-overwritten with every release. Any files or commands you place in /spider/local 
-or /spider/local_cmd will automagically be used in preference to the ones in 
-/spider/perl EVEN while the cluster is running!
+<P>You will notice in the above example that the second line has brackets.  Look 
+at the line logically.  You can see there are 2 separate sections to it.  We 
+are saying reject spots that are VHF or above <EM>APART</EM> from those in 
+zones 14, 15 and 16 (either spotted there or originated there).  If you did 
+not have the brackets to separate the 2 sections, then Spider would read it 
+logically from the front and see a different expression entirely ...
 <P>
-<P>Save the new file and change directory to ../perl ....
+<BLOCKQUOTE><CODE>
+<PRE>
+(on 50000/1400000 and by_zone 14,15,16) or call_zone 14,15,16 
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>The simple way to remember this is, if you use OR - use brackets. Whilst we are 
+here CASE is not important. 'And BY_Zone' is just the same as 'and by_zone'.
+<P>As mentioned earlier, setting several filters can be more flexible than 
+simply setting one complex one.  Doing it in this way means that if you want 
+to alter your filter you can just redefine or remove one or more lines of it or 
+one line. For example ...
 <P>
 <BLOCKQUOTE><CODE>
 <PRE>
-$ cd ../perl
+reject/spots 1 on hf/ssb
 </PRE>
 </CODE></BLOCKQUOTE>
+<P>would redefine our earlier example, or 
 <P>
-<P>Now type the following command which creates the basic user file with you as 
-the sysop.
+<BLOCKQUOTE><CODE>
+<PRE>
+clear/spots 1
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>To remove all the filter lines in the spot filter ...
 <P>
 <BLOCKQUOTE><CODE>
 <PRE>
-$ create_sysop.pl
+clear/spots all
 </PRE>
 </CODE></BLOCKQUOTE>
 <P>
-<H2><A NAME="ss1.5">1.5 Starting up for the first time</A>
+<H2><A NAME="ss1.7">1.7 Filter options</A>
 </H2>
 
-<P>We can now bring spider up for the first time and see if all is well or not!  
-It should look something like this ...
+<P>You can filter in several different ways.  The options are listed in the
+various helpfiles for accept, reject and filter.
+<P>
+<H2><A NAME="ss1.8">1.8 Default filters</A>
+</H2>
+
+<P>Sometimes all that is needed is a general rule for node connects.  This can
+be done with a node_default filter.  This rule will always be followed, even
+if the link is isolated, unless another filter is set specifically.  Default
+rules can be set for nodes and users.  They can be set for spots, announces,
+WWV and WCY.  They can also be used for hops.  An example might look like 
+this ...
 <P>
 <BLOCKQUOTE><CODE>
 <PRE>
-$ cluster.pl
-DXSpider DX Cluster Version 1.35
-Copyright (c) 1998 Dirk Koopman G1TLH
-loading prefixes ...
-loading band data ...
-loading user file system ...
-starting listener ...
-reading existing message headers
-reading cron jobs
-orft we jolly well go ...
+accept/spot node_default by_zone 14,15,16,20,33
+set/hops node_default spot 50
 </PRE>
 </CODE></BLOCKQUOTE>
+<P>This filter is for spots only, you could set others for announce, WWV and WCY.
+This filter would work for ALL nodes unless a specific filter is written to 
+override it for a particular node.  You can also set a user_default should
+you require.  It is important to note that default filters should be
+considered to be "connected".  By this I mean that should you override the
+default filter for spots, you need to add a rule for the hops for spots also.
+<P>
+<H2><A NAME="ss1.9">1.9 Advanced filtering</A>
+</H2>
+
+<P>Once you are happy with the results you get, you may like to experiment. 
 <P>
-<P>If all is well then login on another term or console as <EM>sysop</EM> and 
-cd to /spider/perl.  Now issue the following command ...
+<P>The previous example that filters hf/cw spots and accepts vhf/uhf spots from EU 
+can be written with a mixed filter, for example ... 
 <P>
 <BLOCKQUOTE><CODE>
 <PRE>
-$ client.pl
+rej/spot on hf/cw
+acc/spot on 0/30000
+acc/spot 2 on 50000/1400000 and (by_zone 14,15,16 or call_zone 14,15,16)
 </PRE>
 </CODE></BLOCKQUOTE>
-<P>
-<P>This should log you into the cluster as the sysop under the alias callsign we 
-set earlier.  In this case the callsign is G0VGS.  The cluster callsign is set 
-in the DXVars.pm file in /spider/local.  In this case we will assume that this 
-was set as GB7MBC.  You should therefore see this when you login ....
+<P>Note that the first filter has not been specified with a number.  This will 
+automatically be assumed to be number 1.  In this case, we have said <EM>reject all
+HF spots in the CW section of the bands but accept all others at HF.  Also
+accept anything in VHF and above spotted in or by operators in the zones
+14, 15 and 16</EM>.  Each filter slot actually has a 'reject' slot and 
+an 'accept' slot. The reject slot is executed BEFORE the accept slot.
+<P>
+<P>It was mentioned earlier that after a reject test that doesn't match, the default 
+for following tests is 'accept', the reverse is true for 'accept'. In the example 
+what happens is that the reject is executed first, any non hf/cw spot is passed 
+to the accept line, which lets through everything else on HF.  The next filter line 
+lets through just VHF/UHF spots from EU.
+<P>
+<H2><A NAME="ss1.10">1.10 Basic hop control</A>
+</H2>
+
+<P>In /spider/data you will find a file called hop_table.pl.  This is the file 
+that controls your hop count settings.  It has a set of default hops on the 
+various PC frames and also a set for each node you want to alter the hops for.  
+You may be happy with the default settings of course, but this powerful tool 
+can help to protect and improve the network.  The file will look something 
+like this ...
 <P>
 <BLOCKQUOTE><CODE>
 <PRE>
-G0VGS de GB7MBC 19-Nov-1999 2150Z >
+# 
+# hop table construction
+# 
+
+package DXProt;
+
+# default hopcount to use
+$def_hopcount = 5;
+
+# some variable hop counts based on message type
+%hopcount = 
+(
+ 11 => 10,
+ 16 => 10,
+ 17 => 10,
+ 19 => 10,
+ 21 => 10,
+);
+
+
+# the per node hop control thingy
+
+
+%nodehops = 
+
+ GB7ADX => {            11 => 8,
+                        12 => 8,
+                        16 => 8,
+                        17 => 8,
+                        19 => 8,
+                        21 => 8,
+                   },
+
+ GB7UDX => {            11 => 8,
+                        12 => 8,
+                        16 => 8,
+                        17 => 8,
+                        19 => 8,
+                        21 => 8,
+                   },
+ GB7BAA => {
+                        11 => 5,
+                        12 => 8,
+                        16 => 8,
+                        17 => 8,
+                        19 => 8,
+                        21 => 8,
+                   },
+};
 </PRE>
 </CODE></BLOCKQUOTE>
-<P>If you do, congratulations!  If not, look over the instructions again, you 
-have probably missed something out.  You can shut spider down again with the 
-command ....
+<P>
+<P>Each set of hops is contained within a pair of curly braces and contains a 
+series of PC frame types.  PC11 for example is a DX spot. The figures here 
+are not exhaustive but should give you a good idea of how the file works.
+<P>
+<P>You can alter this file at any time, including whilst the cluster is running.  
+If you alter the file during runtime, the command <EM>load/hops</EM> will 
+bring your changes into effect.
+<P>
+<H2><A NAME="ss1.11">1.11 Hop Control on Specific Nodes</A>
+</H2>
+
+<P>You can set a callsign specific hop count for any of the standard filter
+options so:-
 <P>
 <BLOCKQUOTE><CODE>
 <PRE>
-shutdown
+set/hops gb7djk spot 4
+set/hops node_default route 10
+set/hops gb7baa wcy 5
 </PRE>
 </CODE></BLOCKQUOTE>
+<P>all work on their specific area of the protocol.
+<P>
+<P>The <EM>set/hops</EM> command overrides any hops that you have set otherwise.
 <P>
-<P>and both the cluster and the client should return to Linux prompts.
+<P>You can set what hops have been set using the <EM>show/hops</EM> command.
+<P>
+<H2><A NAME="ss1.12">1.12 Isolating networks</A>
+</H2>
+
+<P>It is possible to isolate networks from each other on a "gateway" node using the
+<EM>set/isolate &lt;node_call&gt;</EM> command.
+<P>
+<P>The effect of this is to partition an isolated network completely from another 
+node connected to your node. Your node will appear on and otherwise behave 
+normally on every network to which you are connected, but data from an isolated 
+network will not cross onto any other network or vice versa. However all the 
+spot, announce and WWV traffic and personal messages will still be handled 
+locally (because you are a real node on all connected networks), that is locally
+connected users will appear on all networks and will be able to access and 
+receive information from all networks transparently.  All routed messages will 
+be sent as normal, so if a user on one network knows that you are a gateway for 
+another network, he can still still send a talk/announce etc message via your 
+node and it will be routed across.
+<P>
+<P>If you use isolate on a node connection you will continue to receive
+all information from the isolated partner, however you will not pass
+any information back to the isolated node.  There are times when you
+would like to forward only spots across a link (maybe during a contest
+for example).  To do this, isolate the node in the normal way and use
+an <EM>acc/spot &gt;call&lt; all</EM>ilter in the
+to override the isolate. 
 <P>
 <HR>
 <A HREF="adminmanual-2.html">Next</A>