home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Simtel MSDOS - Coast to Coast
/
simteldosarchivecoasttocoast2.iso
/
fido
/
ftsc_all.z43
/
FSC-0048.001
< prev
next >
Wrap
Text File
|
1990-06-17
|
14KB
|
311 lines
Document: FSC-0048
Version: 001
Date: 17-Jun-90
A Proposed Type-2 Packet Extension
Jan Vroonhof
2:281/1.12@fidonet
June 17, 1990
Status of this document:
This FSC suggests a proposed protocol for the FidoNet(r) community,
and requests discussion and suggestions for improvements.
Distribution of this document is unlimited.
Fido and FidoNet are registered marks of Tom Jennings and Fido
Software.
Purpose
The final goal of this document is to become a widely used
standardised extension to FTS-0001 like FTS-0006,0007 and 0008 are and
provide and elegant way for switching to to a new bundling method
without requiring major effort or breaking anything.
===============
Prolog
The main thing that needs stressing is that the additions covered by this
document are FULLY (I repeat FULLY) BACKWARDS COMPATIBLE with FTS-0001
(and other existing standards and practices in FidoNet and
WhatEverOtherNets that I know of) in the sense that problems, that it
still would create (e.g. zoneconflicts when dealing with a non
compliant system) are already in the current system (FTS-0001). In
short it it only correct some flaws in FTS-0001 WHITOUT generating new
ones.
In this Document I have tried to stay as much as possible on the paths
of extisting practices. Therefor I think implementing the additions it
proposes will not be to hard.
===============
My thoughts about FSC-0039 and FST-0001 rev 12.
The revision 12 of FTS-0001 introduced the term "(some impls)" to indicate
that the some implementations used their own extensions to FTS-0001.
The problem with this is that this info cannot be relied upon because
there is no way to actually validate the data. One can only check
wether these fields' values are in the range of valid values and hope
for the best.
Secondly FSC-0039 introduced the idea of having a bitfield (called the
capability word) indicating wether extension data was valid and also
supporting indicating the ability to support other non type 2
packets, thus allowing for flexible migration towards type 3.
It also documented the adression extension used by various programs.
However FSC-0039 has two flaws:
1. One cannot be sure the bitfield is zero because other
implementations might use this field for there own purposes.
Therefor this document includes a second validation copy for the
Capability Word (CW hereafter). This copy allows the FSC-xxxx
compliant software to validate the CW by comparing the two. The
change of some junk portraiting itself as a CW is therefor
significantly reduced.
2. Although FSC-0039 provides a way to make packet headers 4D it is
not backwards compatible. It there for cannot be used in FTS-0001
sessions to unknown systems. Therefor FidoNet is still not
totally 4D capabable. This is because while it implements fields
for zone and pointnumber, a FTS-0001 compliant application is not
required to look at these fields.
When a point mails using these fields to implement it's 4D
adress, a system only looking at the net/node info, as is required
by FTS-0001 still sees it as it's bossnode, bringing about the
obvious problems.
This document provides a way for transparant pointhandling, making
use of a technique already exploited by many mailers internally.
This will allow for this document to be implemented and used to
mailers not supporting it, while the danger that you are detected
as the bossnode is eleminated.
It does NOT provide full interzone backwards compatability but that
is not needed as badly while problems are not yet that bad. Any
measures to ensure backwards compatability on this side might harm
communciations with non supporting system when the old system could
handle the situation.
| indicates extensions made by FTS-0001 rev 12 and
: those made by this document and FSC-0039.
Packet Header
Offset
dec hex
.-----------------------------------------------.
0 0 | origNode (low order) | origNode (high order) |
+-----------------------+-----------------------+
2 2 | destNode (low order) | destNode (high order) |
+-----------------------+-----------------------+
4 4 | year (low order) | year (high order) |
+-----------------------+-----------------------+
6 6 | month (low order) | month (high order) |
+-----------------------+-----------------------+
8 8 | day (low order) | day (high order) |
+-----------------------+-----------------------+
10 A | hour (low order) | hour (high order) |
+-----------------------+-----------------------+
12 C | minute (low order) | minute (high order) |
+-----------------------+-----------------------+
14 E | second (low order) | second (high order) |
+-----------------------+-----------------------+
16 10 | baud (low order) | baud (high order) |
+-----------------------+-----------------------+
18 12 | 0 | 2 | 0 | 0 |
+-----------------------+-----------------------+
20 14 | origNet (low order) | origNet (high order) |
: | Set to -1 if from point |
+-----------------------+-----------------------+
22 16 | destNet (low order) | destNet (high order) |
+-----------------------+-----------------------+
| 24 18 | ProductCode (low ord) | Revision (Major) |
| +-----------------------+-----------------------+
| 26 1A | password |
| | 8 bytes null padded |
| +-----------------------+-----------------------+
|: 34 22 | origZone (low order) | origzone (Highorder ) | }
| +-----------------------+-----------------------+ } As in
|: 36 24 | DestZone (low order) | DestZone (Highorder ) | } QMail
: +-----------------------+-----------------------+
: 38 26 | AuxNet (low order) | AuxNet (high order) |
: +-----------------------+-----------------------+
: 40 28 | CWvalidationCopy (hi) | CWvalidationCopy (low)|
: +-----------------------+-----------------------+
: 42 2A | ProductCode (high ord)| Revision (Minor) |
: +-----------------------+-----------------------+
: 44 2C | CapabilWord (low ord) | CapabilWord (high ord)|
: +-----------------------+-----------------------+
: 46 2E | origZone (low order) | origzone (Highorder ) | }
: +-----------------------+-----------------------+ } As in
: 48 30 | DestZone (High order) | DestZone (Highorder ) | } FD etc
: +-----------------------+-----------------------+
: +-----------------------+-----------------------+
: 50 32 | origPoint(low order) | origPoint(Highorder ) | }
: +-----------------------+-----------------------+ } As in
: 52 34 | DestPoint(High order) | DestPoint(Highorder ) | } FD etc
: +-----------------------+-----------------------+
: 54 46 | Prod Specific Data |
: + +
: | 4 Bytes |
+-----------------------+-----------------------+
58 3A | zero or more |
~ packed ~
| messages |
+-----------------------+-----------------------+
| 0 | 0 | 0 | 0 |
`-----------------------------------------------'
Packet = PacketHeader { PakdMessage } 00H 00H
PacketHeader = origNode (* of packet, not of messages in packet *)
destNode (* of packet, not of messages in packet *)
year (* of packet creation, e.g. 1986 *)
month (* of packet creation, 0-11 for Jan-Dec *)
day (* of packet creation, 1-31 *)
hour (* of packet creation, 0-23 *)
minute (* of packet creation, 0-59 *)
second (* of packet creation, 0-59 *)
baud (* max baud rate of orig and dest *)
PacketType (* old type-1 packets now obsolete *)
origNet (* of packet, not of messages in packet
set to -1 if orig=point *)
destNet (* of packet, not of messages in packet *)
+ productCode Lo (* 0 for Fido, write to FTSC for others *)
|+ serialNo Maj (* binary serial number (otherwise null)*)
| password (* session pasword (otherwise null) *)
| origZone (* zone of pkt sender (otherwise null) *)
| destZone (* zone of pkt receiver (otherwise null)*)
| auxNet (* contains Orignet if Origin is a point *)
+ CW validation copy (* Must be equal to CW to be valid *)
+ ProductCode Hi
+ revision Minor
+ origZone (* zone of pkt sender (otherwise null) *)
+ destZone (* zone of pkt receiver (otherwise null)*)
+ ProdData (* Product specific filler *)
When the two copies of the CW match they can be asumed to valid and used.
Stone-Aged: Old FTS-0001
Type-2+ : ,, + Changes indicated by | and : are valid
A Type-N Bundle will always advertise it's capabilities in the CW
regardless of the type being sent. As shown in the below example,
it allows Type-N processors to automatically track the capability
of your system. Again, in cases where a stone-age processor is
being used, this field will be ignored, and in the unusual event
that it is not ignored, and is somehow harmful to the far system,
the Type-N processor can be configured to send a CW of 0.
The format of the Capability Word is designed to support up to 15 future
bundle types, and is bit-mapped to facilitate the easy determination of
the maximum common level supported between two nodes:
msb Capability Word lsb
Node Supports ------------FTSC Type Supported **)------------
* 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2+
2+,3, and 7 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1
2+,3, and 5 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1
2+(this Doc ) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
Stone Age 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
* - reserved for future use
** - Example bit definitions only 2 is and Stone-Age
defined now. The rest are to be concidered
"reserved by FTSC".
In this example, the Type-N bundler would AND the two words, obtaining a
word expressing the Types which are in common to both systems. The most
significant Type will be used, by default, but note that this assumes that
new bundling Types will be increasingly more efficient or in some way more
beneficial. Because this may not always be the case, there should be a
method provided, as illustrated above, to override the automatic upgrade
should this become the case.
Processing Type-2+ bundles:
Generating:
Do we have a CW Does CW indicate
stored for dest? YES ----> higher packets YES ---> Generate higher
NO we support? packet
| NO
\|/ |
+-----<----------------------+
|
Fill header with all info
|
\|/
|
Are we sending from a point? (origPoint != 0) YES --+
| |
NO |
| \|/
| set AuxNet = OrigNet
\|/ Set OrigNet = -1
| |
+-----<----------------------------------------+
|
Add Messages
|
Terminate packet
|
Send packet
Recieving:
Recieve Packet
|
Packettype = 2 NO -------------> Process Type-Other
YES
|
|
CWcopies match NO --------+------> Treat as normal Stone-Age packet
YES | |
| | |
Store CW /|\ |
| | /|\
CW is 0 YES --------------+ |
NO |
| |
| |
CW indicates support for 2+ NO --+
YES
|
|
OrigPoint is 0 NO ---------------+
YES |
| \|/
\|/ Set OrigNet is Baud
| |
+------<-----------------------+
|
Process using added info
Epilog
======
I'll be glad to get some feedback. You can put it in NET_DEV or
netmail me.
Jan Vroonhof (2:281/1.12@fidonet)