599 lines
32 KiB
Plaintext
599 lines
32 KiB
Plaintext
![]() |
FidoNet Route Files Explained
|
|||
|
Part 1 -- The Many Faces of FidoNet
|
|||
|
|
|||
|
by Ben Baker, Fido 100/76
|
|||
|
|
|||
|
There is no aspect of FidoNet more universally mis-
|
|||
|
understood than routing. It is the intent of this foru-
|
|||
|
part series to clear some of the fog.
|
|||
|
|
|||
|
The justification for nets and routing has been
|
|||
|
discussed many times and will NOT be discussed again here.
|
|||
|
Given that routing is good, how is it done? What's the
|
|||
|
meaning of the various statements that go into route files?
|
|||
|
Indeed, what's the meaning of route files?
|
|||
|
|
|||
|
Let's first take a look at "the network." But how do we
|
|||
|
do that? In reality, there is no "the network." FidoNet is
|
|||
|
a different thing when viewed by each different Fido! The
|
|||
|
only formal definition of FidoNet is the node list, and it
|
|||
|
serves as an adaquate view of "the network" for most
|
|||
|
independent Fidos but only the members of some nets.
|
|||
|
|
|||
|
Consider the hypothetical node, Fido 21/7. He's an
|
|||
|
independent member of a "Region." To him, "the network" is a
|
|||
|
couple of hundred other independent nodes to whom he sends
|
|||
|
messages directly and another couple of hundred to which he
|
|||
|
has access through 36 defined "Hosts." If he receives a
|
|||
|
message not addressed to his node, his Fido "orphans" it.
|
|||
|
He has no intention of forwarding someone else's mail. They
|
|||
|
can pay their own phone bills! When he sends a message to
|
|||
|
18/3, Fido knows (from the node list) that is another
|
|||
|
independent and sends the message direct. When he sends a
|
|||
|
message to 100/76, Fido knows (from the node list) that is a
|
|||
|
member of net 100 and sends it to 100/0. Fido 21/7 executes
|
|||
|
only schedule A during the national mail window. He has no
|
|||
|
use for ANY route files.
|
|||
|
|
|||
|
Another hypothetical node, Fido 201/4 is a member of an
|
|||
|
"inbound only" net. Since the sysop has used the '4'
|
|||
|
command properly, Fido knows he is a member of net 201 and
|
|||
|
will treat other members of that net as though they were
|
|||
|
independent nodes. When he sends a message to 201/5, Fido
|
|||
|
will send it direct and not to 201/0. Messages headed out-
|
|||
|
side net 201 will be handled for 201/4 just as they were for
|
|||
|
21/7. Fido 201/4 executes two schedules, A during the
|
|||
|
national window followed immediatly by B when he just sits
|
|||
|
quietly and waits for 201/0 to send him any mail he
|
|||
|
received. He has no use for ANY route files.
|
|||
|
|
|||
|
Everyone else has a view of "the network" more
|
|||
|
complicated than Fido can discover from just the node list.
|
|||
|
If you're a Southern California Hub, or a local node in the
|
|||
|
New York Megalopolis, or maybe the host of a modest network
|
|||
|
in Memphis "the network" looks different to you than to
|
|||
|
other sysops. It is the function of route files to modify
|
|||
|
Fido's view of "the network" to conform to yours.
|
|||
|
|
|||
|
If your Fido is executing any mail event and any other
|
|||
|
Fido calls it up and offers it a mail packet, your Fido will
|
|||
|
graciously receive that packet and at the end of the mail
|
|||
|
event, he will unpack it into messages. These actions have
|
|||
|
nothing whatever to do with route files!
|
|||
|
|
|||
|
Reread that last paragraph two or three times until it
|
|||
|
sinks in. It is a very important, very misunderstood point.
|
|||
|
Route files do not and cannot control the way you receive
|
|||
|
mail. ROUTE FILES CONTROL ONLY THE WAY YOU SEND MAIL!!!
|
|||
|
After all, that's when you're paying the phone bill.
|
|||
|
|
|||
|
Furthermore, what you say in ROUTE.B has absolutely
|
|||
|
nothing to do with how Fido behaves in schedule C. I will
|
|||
|
come back to this point later.
|
|||
|
|
|||
|
Ever since we first began routing FidoNet messages to
|
|||
|
places other than their final destination, route files have
|
|||
|
used three basic commands to mold Fido's view of FidoNet to
|
|||
|
correspond with your view. In part 2 we will look at
|
|||
|
SCHEDULE, ROUTE-TO and ACCEPT-FROM and see just how they
|
|||
|
influence Fido.
|
|||
|
|
|||
|
Part 3 will examine a bevy of new routing commands
|
|||
|
available with Fido V11 and see how they have made automatic
|
|||
|
distribution at last possible.
|
|||
|
|
|||
|
LISTGEN V2 is capable of generating route files auto-
|
|||
|
matically. Part 4 will discuss how ROUTE.CTL statements map
|
|||
|
to route file commands.
|
|||
|
|
|||
|
Stay with me for the next few weeks and maybe we can
|
|||
|
burn off the fog and find a bright sky, a calm sea and clear
|
|||
|
sailing. (And don't throw away your newsletters, you'll
|
|||
|
want to refer back from time to time.)
|
|||
|
|
|||
|
------------------------------------------------------------
|
|||
|
|
|||
|
|
|||
|
|
|||
|
FidoNet Route Files Explained
|
|||
|
Part 2 -- In the Beginning
|
|||
|
|
|||
|
by Ben Baker, Fido 100/76
|
|||
|
|
|||
|
From the time he first began "routing" messages, Fido
|
|||
|
has used "route files" to tell him what messages to send
|
|||
|
where when. Three basic route file commands do this;
|
|||
|
SCHEDULE aka SEND-TO, ROUTE-TO and ACCEPT-FROM. This week,
|
|||
|
we'll look at these commands in depth.
|
|||
|
|
|||
|
Before going farther, I need to define a couple of
|
|||
|
terms. A "target" is a node to which your Fido will connect
|
|||
|
and directly send a message. An "addressee" is the ultimate
|
|||
|
destination node for a message. This is an important
|
|||
|
distinction. Because of routing, the addressee and the
|
|||
|
target for a particular message are often different nodes.
|
|||
|
|
|||
|
A "packet" is a collection of messages all to be sent
|
|||
|
to a single target (though perhaps several addressees). At
|
|||
|
the beginning of each schedule Fido builds all the packets
|
|||
|
he will be permitted to send during that schedule.
|
|||
|
|
|||
|
Now, let's take a look at the three basic commands that
|
|||
|
may appear in a route file, and see how each of them can
|
|||
|
modify Fido's behavior.
|
|||
|
|
|||
|
SCHEDULE <tag> <target list> or
|
|||
|
SEND-TO <target list>
|
|||
|
|
|||
|
These commands are equivalent. They tell Fido "During
|
|||
|
this schedule, you may build packets for any target in
|
|||
|
<target list>. Include all messages to different addressees
|
|||
|
which may be routed to these targets. Do not consider any
|
|||
|
outgoing messages which cannot be sent to one of these
|
|||
|
targets." Unless there is an ACCEPT-FROM statement (see
|
|||
|
below) only messages originating on your Fido qualify to go
|
|||
|
into packets. If <target list> is empty (and this is NOT
|
|||
|
schedule A), Fido will not build any packets. If he doesn't
|
|||
|
build any packets he will not send any mail, even if he is
|
|||
|
POLLed (see next week).
|
|||
|
|
|||
|
ROUTE-TO <target> <addressee list>
|
|||
|
|
|||
|
This command will override any node list implied
|
|||
|
routing affecting these nodes. It tells Fido "If <target>
|
|||
|
is in <target list> and there are outgoing messages for any
|
|||
|
nodes in <addressee list>, put them in <target>'s packet."
|
|||
|
If <target> is not in <target list> you blew it. It's
|
|||
|
almost, but not quite a "no operation." No packets will be
|
|||
|
built for nodes in <addressee list>, even if they are in
|
|||
|
<target list>! Don't route messages to a <target> that's
|
|||
|
not in the <target list> for this schedule.
|
|||
|
|
|||
|
By the way, a bug in an earlier version of Fido pre-
|
|||
|
vented messages to <target> from being sent unless he was
|
|||
|
also in <addressee list>. I don't know if that has been
|
|||
|
corrected, but it's still good general practice to put
|
|||
|
<target> in <addressee list>.
|
|||
|
|
|||
|
ACCEPT-FROM <originating list>
|
|||
|
|
|||
|
Normally, Fido only sends mail originating on your
|
|||
|
board. If you receive a message originating on A and
|
|||
|
addressed to B, without this statement, your Fido will not
|
|||
|
attempt to send it along to B. Instead, he will mark it
|
|||
|
"orphan" to give you an indication that he had a problem
|
|||
|
with it and otherwise ignore it. This statement in a route
|
|||
|
file tells Fido "When you build packets, if you find any
|
|||
|
messages from any nodes in <originating list>, treat them as
|
|||
|
if they originated here. In other words FORWARD any
|
|||
|
messages from the nodes in <originating list> that you can
|
|||
|
get into packets FOR THIS SCHEDULE's <target list>."
|
|||
|
|
|||
|
I actually suggested this verb for this action and have
|
|||
|
regretted it ever since! It's a misnomer. A better verb
|
|||
|
might be "FORWARD-FOR" but hindsight is always 20-20. It
|
|||
|
really means "Accept, for forwarding, only messages from
|
|||
|
these guys." It's designed to prevent you from paying
|
|||
|
someone else's phone costs without prior arrangement.
|
|||
|
|
|||
|
So where do you put this statement? Remember two
|
|||
|
important points I've mentioned before. 1) Route files
|
|||
|
affect how you SEND mail, not how you receive it. 2) A
|
|||
|
particular route file affects only the schedule with the
|
|||
|
matching <tag>. Consider Fido 202/0, a hypothetical bi-
|
|||
|
directional host. He executes three schedules each night.
|
|||
|
During schedule B, before the national window, he collects
|
|||
|
outgoing mail from his locals. During schedule C he sends
|
|||
|
mail from himself and his locals to "the network" and
|
|||
|
receives mail for himself and his locals from it. Then in
|
|||
|
schedule D, after the national window, he distributes the
|
|||
|
mail he received for his locals.
|
|||
|
|
|||
|
ROUTE.B needs neither a <target list> nor an ACCEPT-
|
|||
|
FROM statement. Indeed, he doesn't really need any ROUTE.B
|
|||
|
file at all because HE ISN'T SENDING ANY MAIL DURING
|
|||
|
SCHEDULE B.
|
|||
|
|
|||
|
ROUTE.C has the national net excluding 202/0's locals
|
|||
|
in its <target list>. It also has "ACCEPT-FROM 1, 2, 3,
|
|||
|
(all locals)." Now let's say that 202/3 received a message
|
|||
|
from 125/1 last night, but it wasn't delivered because 202/3
|
|||
|
was down. The message is still here. Won't it be
|
|||
|
"orphaned" because 125/1 isn't in the ACCEPT-FROM list? NO!
|
|||
|
Because 202/3 isn't in the <target list>, the message won't
|
|||
|
even be considered DURING THIS SCHEDULE.
|
|||
|
|
|||
|
ROUTE.D has all the nodes in net 202 in the <target
|
|||
|
list>, and an "ACCEPT-FROM ALL" statement. Now the fore-
|
|||
|
going message will be processed correctly and forwarded to
|
|||
|
202/3.
|
|||
|
|
|||
|
Now let's say that 100/76 tries to forward a message to
|
|||
|
Jakarta through 202/0. 202/0 cannot refuse delivery of the
|
|||
|
offending message, so there it sits in his mail area.
|
|||
|
During schedule B, he ignores all outgoing mail because he
|
|||
|
doesn't have a <target list>. During schedule C Jakarta is
|
|||
|
in his <target list>, but 100/76 is not in his <originating
|
|||
|
list>, so the message is orphaned. During schedule D 100/76
|
|||
|
IS in the <originating list>, but Jakarta is not in the
|
|||
|
<target list> so the message is again ignored.
|
|||
|
|
|||
|
Make no mistake, if Jakarta had been in the <target
|
|||
|
list> in schedule D, the message would have been sent, even
|
|||
|
though it had been marked an orphan during schedule C
|
|||
|
(provided, of course that a connection could be made and
|
|||
|
Jakarta happened to be in a mail schedule at that time).
|
|||
|
This means that if messages are orphaned because of errors
|
|||
|
in your routing files, the routing files can be corrected
|
|||
|
and the messages can still be sent. The orphan flag is NOT
|
|||
|
a dead end!
|
|||
|
|
|||
|
A similar kind of bug existed (and may still; I don't
|
|||
|
know) with ACCEPT-FROM as with ROUTE-TO (above). If a route
|
|||
|
file contains an ACCEPT-FROM statement, make sure your own
|
|||
|
node is in the <originating list>. (The first time I used
|
|||
|
this statement, I forwarded a lot of messages, but
|
|||
|
"orphaned" my own messages!)
|
|||
|
|
|||
|
Well, that's how routing is achieved. Remember, all
|
|||
|
these statements control out-going mail. You can receive
|
|||
|
mail even if you don't have any route files!
|
|||
|
|
|||
|
A final point on routing. If a message says it has a
|
|||
|
file attached (even if the file doesn't exist) all bets are
|
|||
|
off. Routing is suspended and the message will be sent
|
|||
|
direct from the originator to the addressee. Fido has
|
|||
|
several built-in safeguards to prevent you from forwarding
|
|||
|
someone else's files, or forwarding your files through
|
|||
|
someone else for that matter.
|
|||
|
|
|||
|
Next week we'll take a close look at the goodies TJ has
|
|||
|
provided in version 11 and see how they are making automatic
|
|||
|
node list distribution at long last a reality.
|
|||
|
|
|||
|
------------------------------------------------------------
|
|||
|
|
|||
|
|
|||
|
|
|||
|
FidoNet Route Files Explained
|
|||
|
Part 3 -- Keep the Old, Ring In the New
|
|||
|
|
|||
|
by Ben Baker, Fido 100/76
|
|||
|
|
|||
|
Last week we looked at the basic routing statements
|
|||
|
that have been with us since version 7 or so. Now let's
|
|||
|
look at what's been added in version 11.
|
|||
|
|
|||
|
Please refer back to last weeks definitions. I con-
|
|||
|
tinue to use them as defined.
|
|||
|
|
|||
|
RECV-ONLY
|
|||
|
|
|||
|
This tells Fido "Go ahead and build packets for any
|
|||
|
targets in the SCHEDULE command's <target list>, but DON'T
|
|||
|
ATTEMPT TO CALL ANYBODY. If any targets happen to call in
|
|||
|
for any reason, try to give them their packets before they
|
|||
|
get away."
|
|||
|
|
|||
|
There MUST be a <target list> for this statement to
|
|||
|
mean anything. It is not intended for normally "receive
|
|||
|
only" schedules like 202/0's collection schedule (see last
|
|||
|
week). Instead, it prevents you from originating calls
|
|||
|
during schedules when you are trying to SEND mail. (Route
|
|||
|
files control how you send mail, not how you receive it.)
|
|||
|
You are really trying to send mail on the other guy's
|
|||
|
nickel, but as you will see, he has to cooperate in that
|
|||
|
venture.
|
|||
|
|
|||
|
This statement might be used by the locals during the
|
|||
|
collection schedule in a large, busy net. Collisions are
|
|||
|
avoided because there's only one node, the outbound host,
|
|||
|
placing calls. He POLLs (see below) the locals for their
|
|||
|
outgoing traffic.
|
|||
|
|
|||
|
HOLD <hold target list>
|
|||
|
|
|||
|
"OK, Fido, build packets for targets in the <target
|
|||
|
list>, but don't attempt to actually call any targets in
|
|||
|
<hold target list>." This is a limited "RECV-ONLY" command.
|
|||
|
Any packets for targets not in <hold target list> will be
|
|||
|
sent normally (if they haven't been picked up), but packets
|
|||
|
for <hold target list> have to be "picked up."
|
|||
|
|
|||
|
There's a hidden gimmick here that bears further
|
|||
|
exploration. Ken Kaplan (Fido 100/22 AKA 1/0) is the
|
|||
|
original source in the national nodelist distribution
|
|||
|
system. Regional coordinators call his Fido each week to
|
|||
|
pick up copies of the latest nodelist. The route file for
|
|||
|
his national window contains the statement "HOLD <regional
|
|||
|
coordinator list>." Fido will not attempt to send any
|
|||
|
packets targetted for a regional coordinator. Does this
|
|||
|
mean that he can't send "normal" messages to the
|
|||
|
coordinators? Not at all. Because he is a member of net
|
|||
|
100, all his "normal" messages, including those addressed to
|
|||
|
the coordinators, wind up in a packet targetted for 100/10,
|
|||
|
the outbound host. Since 100/10 is not in the <hold target
|
|||
|
list>, that packet is sent and the messages go out. HOLD
|
|||
|
APPLIES TO THE TARGETS OF PACKETS, NOT TO THE ADDRESSEES OF
|
|||
|
MESSAGES! It is only when Ken sends messages to the
|
|||
|
coordinators with the nodelist (or other files) attached to
|
|||
|
them that Fido builds packets targetted for them instead of
|
|||
|
100/10.
|
|||
|
|
|||
|
Does that mean that Ken can't send the coordinators
|
|||
|
other files without waiting for them to pick them up? Well,
|
|||
|
yes and no. Because of the HOLD statement, he can't say
|
|||
|
send FIDO_IBM.EXE to 14/61 (see PICK-UP below for why 14/61
|
|||
|
and not 14/0). But he can use another gimmick. The
|
|||
|
coordinators have dual identities (set by the '4' command of
|
|||
|
Fido) and he can certainly send a file to 14/0. Fido is
|
|||
|
smart, but so smart he'll notice that 14/0 and 14/61 happen
|
|||
|
to have the same phone number. He'll send the packet for
|
|||
|
14/0 and hold the one for 14/61. By the same token, if both
|
|||
|
packets are still present when 14/61 calls in, he'll only
|
|||
|
pick up the the nodelist targetted for 14/61 and not the new
|
|||
|
Fido targetted for 14/0. (You can't have your cake and eat
|
|||
|
it too.)
|
|||
|
|
|||
|
PICKUP <pickup target list>
|
|||
|
|
|||
|
Whenever any other Fido calls your Fido for any reason,
|
|||
|
your Fido looks to see if there is a packet targetted for
|
|||
|
him. If there is, your Fido will try to deliver it then and
|
|||
|
there and avoid making the phone call which you have to pay
|
|||
|
for. Without this statement (or the next one) in his route
|
|||
|
file, the other Fido will simply hang up on you, leaving you
|
|||
|
with a phone call to make in order to deliver your packet.
|
|||
|
This statement says to Fido "If you happen to call any
|
|||
|
target in <pickup target list>, hang around to see if he has
|
|||
|
mail for me."
|
|||
|
|
|||
|
This is a two-edged sword. It can speed up mail
|
|||
|
exchange, but the Fido that places the call pays for it. It
|
|||
|
works best within a local net where the calls are all toll
|
|||
|
free anyway. In fact, it won't work at all between larger
|
|||
|
nets supported by distinct inbound and outbound hosts.
|
|||
|
Specifying "PICKUP 100/0" in your national window schedule
|
|||
|
would only get you messages originating on 100/0 (or 100/51
|
|||
|
actually) with files attached. Any other mail for you might
|
|||
|
be in a packet addressed to you, but on 100/10, the outbound
|
|||
|
host, and that's not who you called.
|
|||
|
|
|||
|
Even worse, let's say Tom Jennings is sending a file to
|
|||
|
100/10 and wants to pick up any mail from St. Louis for San
|
|||
|
Francisco while he's at it. He's the host of net 125, and
|
|||
|
that's perfectly legitimate, right? Wrong! His primary
|
|||
|
identity (the '4' command again) is 125/1 and 100/10 may
|
|||
|
have a packet for 125/0, but he won't have a packet for
|
|||
|
125/1. This command deals at the packet/target level just
|
|||
|
as the HOLD command does. Furthermore, it deals with real
|
|||
|
identities, not alternate identities.
|
|||
|
|
|||
|
As I said, this is most useful within a local net, and
|
|||
|
that's where it probably should be applied.
|
|||
|
|
|||
|
POLL <poll target list>
|
|||
|
|
|||
|
This tells Fido "Even if I don't have any mail for the
|
|||
|
targets in <poll target list> generate empty packets
|
|||
|
addressed to them so you have an excuse to call them. Then
|
|||
|
when you do call them, pick anything they have for me."
|
|||
|
|
|||
|
"POLL <poll target list>" implies "PICKUP <poll target
|
|||
|
list>" which need not be specified. This is the statement
|
|||
|
an outbound host might use to poll his locals or hubs for
|
|||
|
outgoing traffic prior to national mail time. Together with
|
|||
|
the next statement, this method can be very efficient.
|
|||
|
|
|||
|
The regional coordinators run a special schedule each
|
|||
|
Saturday morning during the national mail window. It's
|
|||
|
route file is identical to their normal national schedule
|
|||
|
route file except that it contains the statement "POLL 1/0."
|
|||
|
That's how they get the nodelist for subsequent redis-
|
|||
|
tribution.
|
|||
|
|
|||
|
As I see it, POLL has a lot more uses than PICKUP.
|
|||
|
|
|||
|
SEND-ONLY
|
|||
|
|
|||
|
This one is mainly for outbound hosts. It says "I'm
|
|||
|
not expecting any mail during this schedule, so don't wait
|
|||
|
the normal one or two minutes for incomming calls after
|
|||
|
making an outgoing call. As soon as you finish one, dial
|
|||
|
another until all packets have been sent."
|
|||
|
|
|||
|
As I said above, this can be very efficient, but
|
|||
|
there's a problem you need to be aware of. Fido will make a
|
|||
|
maximum of 30 attempts without connect to send a packet to a
|
|||
|
particular target. If you have only one packet addressed to
|
|||
|
a busy target, Fido would normally take about an hour to use
|
|||
|
up 30 attempts, but in SEND-ONLY mode he can attempt 30
|
|||
|
calls in about 20 minutes! If you have a Courier and are
|
|||
|
running it in "X4" response code mode, he'll make 30
|
|||
|
attempts in 10 to 15 minutes. (The Courier doesn't waste a
|
|||
|
lot of time in "fast-dial, busy-detect" mode.)
|
|||
|
|
|||
|
If you're an outbound host and want to try SEND-ONLY
|
|||
|
during the national window, you risk using up your call
|
|||
|
attempts while your target is busiest, then when he's
|
|||
|
quieted down and you could get through, you've given up! I
|
|||
|
suggest you break your national time into two schedules, and
|
|||
|
only use SEND-ONLY during the last 20 minutes or so of the
|
|||
|
national window.
|
|||
|
|
|||
|
On the other hand, polling your locals or hubs is a
|
|||
|
different matter. They should be in RECV-ONLY mode and you
|
|||
|
can expect every call to connect the first try. The call
|
|||
|
attempt limit doesn't apply to this situation and the SEND-
|
|||
|
ONLY command should be used to shorten the time needed to
|
|||
|
POLL everyone.
|
|||
|
|
|||
|
NO-ROUTE <addressee list>
|
|||
|
|
|||
|
This command tells Fido "Do not send messages addressed
|
|||
|
to these nodes anywhere but to the addressed nodes. Treat
|
|||
|
them as though they have files attached, whether they do or
|
|||
|
not."
|
|||
|
|
|||
|
This lets you say things like Fido 100/76 (in Illinois)
|
|||
|
might:
|
|||
|
|
|||
|
SEND-TO 100/10 ; Outbound Host (in Missouri)
|
|||
|
ROUTE-TO 100/10 ALL ; Send everything to accross the river
|
|||
|
NO-ROUTE 100/482 ; Except other Illinois traffic
|
|||
|
|
|||
|
The only other way to achieve this end is to list in
|
|||
|
the ROUTE-TO command all 500 odd nodes whose messages should
|
|||
|
be routed to 100/10, and that list changes every week!
|
|||
|
|
|||
|
Now you should have a good handle on how the commands
|
|||
|
used in ROUTE.<tag> control how Fido SENDS files during
|
|||
|
schedule <tag>. But sometimes these commands require very
|
|||
|
long lists of node numbers which change from week to week as
|
|||
|
the node list changes. LISTGEN 2 will generate the route
|
|||
|
files automatically and let you specify the long lists
|
|||
|
symbolically in terms of nets, area codes, etc.. Next week
|
|||
|
in the last part of this series, we'll see how the
|
|||
|
statements in LISTGEN's ROUTE.CTL file correspond to the
|
|||
|
commands in ROUTE.<tag>.
|
|||
|
|
|||
|
------------------------------------------------------------
|
|||
|
|
|||
|
|
|||
|
|
|||
|
FidoNet Route Files Explained
|
|||
|
Part 4 -- LISTGEN and ROUTE.CTL
|
|||
|
|
|||
|
by Ben Baker, Fido 100/76
|
|||
|
|
|||
|
|
|||
|
LISTGEN Version 2 will automatically generate route
|
|||
|
files for you if you desire. The advantage is that LISTGEN
|
|||
|
is driven by a control file, ROUTE.CTL, in which you specify
|
|||
|
the statements necessary with symbolic parameters that you
|
|||
|
define in terms of nets, area codes, etc.. A properly
|
|||
|
designed ROUTE.CTL need only change when your routing needs
|
|||
|
change. LISTGEN will continue to create correct route files
|
|||
|
week after week as the nodelist changes.
|
|||
|
|
|||
|
Before I begin, I'd like to do a quick review of the
|
|||
|
route file commands and their effect.
|
|||
|
|
|||
|
SCHEDULE <tag> <list> or
|
|||
|
SEND-TO <list> Determines which nodes may have
|
|||
|
packets build to SEND mail to.
|
|||
|
ROUTE-TO <target> <list> Directs that messages to par-
|
|||
|
ticular addressees be SENT in
|
|||
|
packets to another node.
|
|||
|
ACCEPT-FROM <list> Specifies which oritinators'
|
|||
|
messages may be SENT.
|
|||
|
RECV-ONLY States that packets may only be
|
|||
|
SENT by being picked up.
|
|||
|
HOLD <list> States that packets to part-
|
|||
|
icular nodes may only be SENT
|
|||
|
by being picked up.
|
|||
|
PICK-UP <list> States that it is OK to receive
|
|||
|
mail from particular nodes when
|
|||
|
we originate calls to SEND them
|
|||
|
packets.
|
|||
|
POLL <list> Directs that packets (empty if
|
|||
|
necessary) be generated and
|
|||
|
SENT to particular nodes in
|
|||
|
order to pick up mail.
|
|||
|
SEND-ONLY States that calls may be made
|
|||
|
rapid-fire to SEND as many
|
|||
|
packets as possible.
|
|||
|
|
|||
|
Note that each definition above includes the verb SEND
|
|||
|
or SENT. I did that deliberately to emphasize that these
|
|||
|
commands all control some aspect of sending mail.
|
|||
|
|
|||
|
LISTGEN has been adaquately documented and I do not
|
|||
|
intend to re-document it here, but I would like to show you
|
|||
|
how ROUTE.CTL commands map to the ROUTE.<tag> commands
|
|||
|
covered above.
|
|||
|
|
|||
|
SCHEDULE <tag> <target list>
|
|||
|
|
|||
|
When LISTGEN encounters this command in ROUTE.CTL it
|
|||
|
does two things. First it closes any route file it may be
|
|||
|
working on and creates a new ROUTE.<tag> file for the new
|
|||
|
<tag>. Then it generates a SCHEDULE statement from the
|
|||
|
specifications in this one for the new ROUTE.<tag>,
|
|||
|
expanding any symbolic parameters to lists of nodes from the
|
|||
|
nodelist. In other words, it begins a new route file as you
|
|||
|
would expect it to by defining the <target list>.
|
|||
|
|
|||
|
FROM <accept list>
|
|||
|
|
|||
|
This phrase, when encountered, generates an ACCEPT-FROM
|
|||
|
statement.
|
|||
|
|
|||
|
TO <addressee list> [ VIA <target> ]
|
|||
|
|
|||
|
If the VIA clause is present, this statement generates
|
|||
|
a "ROUTE-TO <target> <addressee list>." Successive TO
|
|||
|
phrases without VIA clauses accumulate to make a larger
|
|||
|
<addressee list> until a VIA clause IS found. Then the
|
|||
|
entire list is routed to the <target>. (I'm not entirely
|
|||
|
happy with this "feature," but that's the way it works.) If
|
|||
|
no VIA clause is ever found, the TO phrase generates no
|
|||
|
output at all! It does serve as documentation in your
|
|||
|
ROUTE.CTL file, saying "I expect to be sending mail TO these
|
|||
|
nodes in this schedule."
|
|||
|
|
|||
|
All of the other route file commands discussed above
|
|||
|
map one-for-one in the same format from ROUTE.CTL to
|
|||
|
ROUTE.<tag>.
|
|||
|
|
|||
|
The big advantage in using LISTGEN is to be able to use
|
|||
|
simple symbols which it will translate into long lists of
|
|||
|
nodes. To illustrate, net 100 spans two area codes, 314 in
|
|||
|
Missouri and 618 in Illinois. To minimize the number of
|
|||
|
toll calls placed accross the Mississippi, I serve as "Metro
|
|||
|
East" hub to concentrate the Illinois traffic. I have the
|
|||
|
following statements (among others) in my ROUTE.CTL file:
|
|||
|
|
|||
|
define Metro-East as Net-100 except Area-314 ; Area 618
|
|||
|
define Outbound as 100/10
|
|||
|
define World as all except Metro-East
|
|||
|
* * *
|
|||
|
FROM Metro-East TO World VIA Outbound
|
|||
|
|
|||
|
Nodes may come and go, both in our net and across the
|
|||
|
country, and these statements need not change. LISTGEN
|
|||
|
interprets them week after week and builds the right route
|
|||
|
files every time. And in several months, if our outbound
|
|||
|
host should change making it necessary to change ROUTE.CTL,
|
|||
|
I can look at this and not have to say to myself "What on
|
|||
|
earth was I trying to do here?" It's all pretty obvious.
|
|||
|
|
|||
|
Before I wrap it up, there are two important exceptions
|
|||
|
to the things I have said. First, schedule A is special in
|
|||
|
that the <target list> always is the entire nodelist, no
|
|||
|
matter what ROUTE.A says. For that reason, if you do any
|
|||
|
routing not defined by the node list, I recommend that you
|
|||
|
DO NOT USE SCHEDULE A. For all other schedules, Fido does
|
|||
|
exactly what ROUTE.<tag> tells it to do and nothing more.
|
|||
|
And second, ROUTE.BBS is a special route file that affects
|
|||
|
all schedules for which there are no ROUTE.<tag> files. For
|
|||
|
that reason, I recommend that you FORGET YOU EVER HEARD OF
|
|||
|
ROUTE.BBS. It'll cause more problems than it'll ever solve!
|
|||
|
|
|||
|
So, routing can get pretty complex (just ask 'em in
|
|||
|
Southern California), but it doesn't need to be complicated
|
|||
|
once you know what the objective of each schedule is from
|
|||
|
your point of view, and what your Fido needs to do to meet
|
|||
|
those objectives.
|
|||
|
|
|||
|
In fact, it's pretty easy if you just remember the two
|
|||
|
points I have been hammering at you since we began:
|
|||
|
|
|||
|
1) Route files control the way you send messages, not
|
|||
|
the way you receive them. Every command we discussed above
|
|||
|
controls some aspect of sending messages. And. . .
|
|||
|
|
|||
|
2) A particular route file only affects the schedule
|
|||
|
with the matching <tag>. What you say in ROUTE.B has no
|
|||
|
bearing whatever on schedule C. Each schedule must be
|
|||
|
separately spelled out. |