home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 2 BBS / 02-BBS.zip / FSC.ZIP / FSC-0024.TXT < prev    next >
Text File  |  1988-08-24  |  36KB  |  794 lines

  1. FSC-0024 - A Proposal for a Type-3 Mail Bundle - Oliver McDonald
  2.  
  3.  
  4.  
  5.  
  6.             Notes on Type three bundlers.            Notes on Type three bundlers.
  7.  
  8.                  The first  important note is that without Wynn Wagner's
  9.             work on FTSC-0014, none of this would have come to fruition.
  10.             I owe him a great debt in this area, as well as the debt for
  11.             Opus itself that got me into this.  Thanks Wynn.
  12.  
  13.                  Type 3  bundlers offer  opportunities for new levels of
  14.             sophistication in mail processing.  As the first step Aurora
  15.             Computer Technologies plans to provide the minimum specified
  16.             by the  existing Type 3 bundle specifications with one minor
  17.             addition.  This addition is the inclusion of the features of
  18.             ReMapper.   This addition  is not  a required  inclusion for
  19.             other software authors producing a Type 3 bundler.
  20.  
  21.                  To sum up, standard required features are:
  22.  
  23.               Must be able to create and unbundle Type 2 Bundles (See
  24.                 FSC-0001)
  25.               Must be able to create and unbundle Type 3 Bundles (See
  26.                 attached)
  27.               Must be able to Toss EchoMail from either Type 2 OR 3
  28.                 bundles
  29.               Must generate an update-required message for the sysop if
  30.                 the MinorVersion changes.
  31.               Must generate an update-required message if it encounters
  32.                 a misc packet type it does not recognize.
  33.  
  34.                  Initial optional features are:
  35.  
  36.               May Duplicate the functionality of ReMapper.
  37.               May automatically generate an F.Req. from source of bundle
  38.                 when the minor version changes.
  39.               May generate an F.Req from source of bundle if it
  40.                 encounters a misc packet type it does not recognize.
  41.               All error messages are placed in Matrix Mail messages to
  42.                 the Sysop.
  43.               Will create outbound bundles on the fly from the inbound
  44.                 bundle.  Does not need to scan these messages.  Note, if
  45.                 this option is exercised it is IMPERATIVE that the areas
  46.                 are scanned prior to the unbundle process.
  47.  
  48.                  Type 3.0 proposal (preliminary)                 Type 3.0 proposal (preliminary)
  49.  
  50.                  This proposal allows for automatic updating of the Type
  51.             3 bundle  to allow  for further  revisions and enhancements.
  52.             Thus we will refer to it as a Type 3.0 with further versions
  53.             becoming Type 3.1 etc.
  54.  
  55.                  All multi-byte  data forms (int/long) are considered to
  56.             have the  MSB first and the LSB last.  Int is two bytes, and
  57.             Long is four.
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.                       Bundle Header                      Bundle Header
  65.  
  66.               struct _BundleHeader {
  67.                          struct _Address  B_Destination;
  68.                          struct _Address  B_Origination;
  69.                          unsigned nybble  B_BundlerVersionMajor;
  70.                          unsigned nybble  B_BundlerVersionMinor;
  71.                          unsigned byte    B_ProductCode;
  72.                          unsigned byte    B_VersionMinor;
  73.                          unsigned byte    B_VersionMajor;
  74.                          unsigned long    B_CreationTime;
  75.                          unsigned byte    B_Password[8];
  76.               };
  77.  
  78.                            Bundle Header Notes
  79.  
  80.                  This works out to 32 bytes which is a nice size to work
  81.             with.
  82.  
  83.                  Here follows a short explanation for each field:
  84.  
  85.                  "B_BundlerVersionMajor/Minor"   provide   for   version
  86.             numbers from  0.0 to  16.16, this  should be  enough for all
  87.             except TJ.
  88.  
  89.                  "B_ProductCode" is  the  FTSC  assigned  product  code.
  90.             This can  be used  to identify  just which  type  3  bundler
  91.             created the  bundle; it should not be considered an error if
  92.             this  is   unidentified,  and   need  not  be  processed  on
  93.             unbundling but  MUST be included _correctly_ at the bundling
  94.             stage.
  95.  
  96.                  "B_VersionMinor"  is   a  version   number  that   will
  97.             initially start  at Zero  and is  used to allow non backward
  98.             compatible changes  to Type 3 bundles, such as header length
  99.             change.     If  this   is  LOWER  in  the  bundle  than  the
  100.             corresponding version  number in  the  unbundler  it  should
  101.             abend.   It is  suggested that a short message be written to
  102.             the Sysop  in NETMAIL  with as much information gleaned from
  103.             the header  as possible.  (All  info  up  to  and  including
  104.             "B_VersionMajor".)
  105.  
  106.                  "B_VersionMajor", always 3.  This and all data prior to
  107.             this point  is position  dependant and will never be changed
  108.             in future Type 3.0 bundle revisions.
  109.  
  110.                  "B_CreationTime" is  an Unix  1970 based  creation time
  111.             indicating the time/date the bundle was created.
  112.  
  113.                  "B_Password" is  a NULL padded character array that may
  114.             contain uppercase  alpha bytes  or ASCII  digits.  It should
  115.             not  contain   lowercase  characters,  punctuation,  control
  116.             characters etc.  A maximum of 8 characters are significant.
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  
  123.                       Struct _Address                      Struct _Address
  124.  
  125.               struct _Address {
  126.                          unsigned int     Zone;
  127.                          unsigned int     Net;
  128.                          unsigned int     Node;
  129.                          unsigned int     Point;
  130.               };
  131.  
  132.               struct _AddressShort {
  133.                          unsigned int     Net;
  134.                          unsigned int     Node;
  135.               };
  136.  
  137.                       Bundle Footer                      Bundle Footer
  138.  
  139.               Struct _BundleEnd {
  140.                          Unsigned Byte    E_Packet_Type  /* Always 0    *
  141.                 /
  142.               };
  143.  
  144.                            Bundle Footer notes.
  145.  
  146.                  All bundles  end with  this packet.  It is not optional
  147.             and the  packet should  be  considered  grundged  if  it  is
  148.             missing.
  149.  
  150.                       Area header                      Area header
  151.  
  152.               Struct _AreaHeader
  153.                          Unsigned byte    E_Packet_Type  /* Always 1 */
  154.                          Unsigned byte    E_NameLength   /* Actual bytes
  155.                 in E_NAME */
  156.                          Unsigned Byte    E_Name[1]      /* Variable
  157.                 length field */
  158.  
  159.                            Area Header Notes
  160.  
  161.                  The area header packet marks the start of a sequence of
  162.             messages destined  to the  same  message  area.    The  area
  163.             indicated in  the Area Header will remain valid until either
  164.             the end of the bundle OR another Area Header is encountered.
  165.  
  166.                  E_Name will  usually contain  the area name of the echo
  167.             area that subsequent messages should go.  If E_NameLength is
  168.             zero then  the subsequent  messages should  go  the  NetMail
  169.             area.   Any messages  that occur  prior to  the  first  Area
  170.             Header in a bundle should also go to the Netmail area.
  171.  
  172.                  The Maximum value for E_NameLength is 63.
  173.  
  174.                  E_Name is NOT null terminated.
  175.  
  176.  
  177.  
  178.  
  179.  
  180.  
  181.                       Message Header                      Message Header
  182.  
  183.               Struct _MessageHeader {
  184.                          Unsigned byte    M_Packet_Type  /* Always 2 */
  185.                          Struct _Address  M_Destination  /* Final
  186.                 Destination */
  187.                          Struct _Address  M_Origin       /* Where the
  188.                 message was entered */
  189.                          Unsigned Long    M_CreationTime /* When the
  190.                 message was entered */
  191.                          Unsigned int     M_Attributes   /* FTSC
  192.                 bitweights */
  193.                          Unsigned byte    M_FromLength
  194.                          Unsigned byte    M_ToLength
  195.                          Unsigned byte    M_SubLength
  196.                          Unsigned byte    M_From[1]
  197.                          Unsigned byte    M_To[1]
  198.                          Unsigned byte    M_Sub[1]
  199.               };
  200.  
  201.                            Message Header Notes
  202.  
  203.                  Every message  begins with a message header packet.  It
  204.             should  be   created  by   the  system   where  the  message
  205.             originated.   If there  are any intermediate stops along the
  206.             way it  is the  responsibility of  the intermediate  systems
  207.             along the  way to  maintain all  of the  information without
  208.             modification.
  209.  
  210.                  None  of   M_From,  M_To,  or  M_Sub  are  to  be  NULL
  211.             terminated.
  212.  
  213.                       Message Body                      Message Body
  214.  
  215.               Struct _Text {
  216.                          Unsigned byte    T_Packet_Type  /* Always 3 */
  217.                          Unsigned int     T_ByteCount    /* # of bytes (
  218.                 < 0x1000 ) */
  219.                          Unsigned byte    T_Data[1]      /* Variable
  220.                 length field */
  221.  
  222.                            Message Body Notes:
  223.  
  224.                  The message  body  is  considered  one  or  more  _Text
  225.             packets.
  226.  
  227.                  No _Text  packet will  be more  that 1000H  bytes  long
  228.             (that's 4096  to the  terminally base  10 folks).  Of course
  229.             there may  be a  near infinite  number of  _Text packets per
  230.             bundle/Message header,  but you  are  absolutely  positively
  231.             guaranteed that with the type 3.x method you will never need
  232.             a buffer larger than 1000H.
  233.  
  234.  
  235.  
  236.  
  237.  
  238.  
  239.                  In addition to ASCII values 20h through 7Eh (inclusive)
  240.             the following  control codes  are legal for TEXT data.  Note
  241.             that <CR> and <softCR> are NOT in this list, thus type three
  242.             packers will eliminate spurious 0Dh's.
  243.  
  244.               <LF>                        0Ah            Forced
  245.                 <CR>/<LF>
  246.               <dle>      10h              Replicate
  247.  
  248.                  Other control  characters and  values 7Fh and above are
  249.             symptomatic of a grundged message.
  250.  
  251.                  Replicate is  a  three  byte  sequence:  <dle>  <value>
  252.             <length>.   For example  if a packet contains the bytes 10h,
  253.             20h, 09h  it should  be expanded in the message body as nine
  254.             <space> characters.
  255.  
  256.                  There is  no minimum  or maximum  line  length,  it  is
  257.             assumed that  the reader  can supply  the  appropriate  line
  258.             wraps.
  259.  
  260.                  One "line" of a message may cross from one _Text packet
  261.             to another.
  262.  
  263.                       EchoMail:                      EchoMail:
  264.  
  265.               Struct _EchoMailInfo {
  266.                          Unsigned byte    EI_Packet_Type /* Always 4 */
  267.                          Struct _EID      EI_Parent      /* Up message
  268.                 thread */
  269.                          Struct _EID      EI_Child       /* Down message
  270.                 thread */
  271.                          Unsigned byte    EI_SeenByCount
  272.                          Unsigned byte    EI_PathCount
  273.                          Struct _AddressShort            EI_SeenBy[1]
  274.                          Struct _Address  EI_Path[1]
  275.               );
  276.  
  277.                            EchoMail notes:
  278.  
  279.                  The  EI_Child   and  EI_Parent   fields  are   used  to
  280.             reconstruct the message thread.
  281.  
  282.                  Type 3 bundles uses binary seenby and path information,
  283.             but should  convert to a normal seenby/path in the unbundled
  284.             messages.   If  the  auto-rebundleing  is  used  it  is  not
  285.             necessary  to   process  the   seenby's  into  the  unpacked
  286.             messages.   It is suggested that if this approach is used it
  287.             is HEAVILY tested prior to implementation, and that it still
  288.             store the data somewhere for retrieval in case of unresolved
  289.             dupe problems.
  290.  
  291.  
  292.  
  293.  
  294.  
  295.  
  296.                       Cargo Info.                      Cargo Info.
  297.  
  298.               Struct _PointInfo {
  299.                          Unsigned byte    CI_Packet_Type /* always 05h
  300.                 */
  301.                          Unsigned byte    CI_File Count  /* Number of
  302.                 files */
  303.                          Unsigned byte    CI_FileName[1] /* Filenames
  304.                 (10 bytes */
  305.               };
  306.                            Cargo Info Notes
  307.  
  308.                  The Cargo  info packet  will only  be found in a Type 3
  309.             arcmail bundle  that contains  files.  It will always be the                                                           always
  310.             second packet in a bundle.
  311.  
  312.                       Node info                      Node info
  313.  
  314.               Struct _NodeInfo
  315.                          Unsigned byte    NI_Packet_Type /* always 06h  *
  316.                 /
  317.                          Unsigned int     NI_Flags       /* Flags for
  318.                 node     */
  319.               };
  320.  
  321.                  This packet  is sent  to a  Type 3.x  node in the first
  322.             bundle to  be sent  to that node.  The bundler should detect
  323.             that the  node can  accept a Type 3.x bundle from a nodelist
  324.             flag.   It will  automatically generate  this packet at that
  325.             point.   Should a  type 3.x  bundle come from a node that is
  326.             not identified  in the  nodelist as  type  3.x  capable  the
  327.             bundler should  mark that  node  as  Type  3.x  capable  and
  328.             generate a warning message.
  329.  
  330.                  NI_Flags, is  a bit  mapped field  that identifies  the
  331.             characteristics of  the node.  Some of this information will
  332.             duplicate that  information found  in the nodelist.  This is
  333.             used as a check.
  334.  
  335.               Bit:       Meaning:
  336.  
  337.  
  338.               0:                          Type 3
  339.               1:                          Packing Protocol Bits.
  340.               2:                             "        "      "
  341.               3:                             "        "      "
  342.               4:                          |Bits 3 & 4 are used together
  343.               5:                          |to determine mail handleing.
  344.               6:                          Ingate
  345.               7:                          OutGate
  346.               8:                          Net Host
  347.               9:                          Net Hub
  348.               A:                          <Reserved>
  349.               B:                          <Reserved>
  350.  
  351.  
  352.  
  353.  
  354.  
  355.  
  356.               C:                          <Reserved>
  357.               D:                          <Reserved>
  358.               E:                          Sent info
  359.               F:                          Got Info
  360.  
  361.                  Bits 1,  2, &  3 are  used to determine how mail may be
  362.             packed for this node (SEA, PKWare, ZOO)
  363.  
  364.               Bits 1 & 2 & 3:             Meaning:
  365.               000:       No packing.
  366.               001:       SEA Archive format.
  367.               011:       PKWare LZW packing format.
  368.               100:       ZOO Compression system.
  369.  
  370.                  Note that  these bits  were intended to be combined, so
  371.             that if  a node  could handle  ZOO and SEA Archives it would
  372.             set the  bits to  '101'.   Since by  definition  PKWare  can
  373.             handle SEA  format Arc's  it is  considered standard  to set
  374.             both bits for a PKWare capable system.
  375.  
  376.                  Bits 4  and 5  are used to determine how mail should be
  377.             sent to this node (CM, hold, direct)
  378.  
  379.               Bit 4 & 5: Meaning:
  380.  
  381.               00:        Direct
  382.               01:        Continous
  383.               11:        Hold
  384.  
  385.                  The sysop  should be  able to  clear the  sent info bit
  386.             should the status of his system change (ie becomeing an NC).
  387.             Zone gates  may be  identified by  the fact that they are in
  388.             Net 1  and they are both an ingate and an outgate.  The zone
  389.             they are the gate for is identified by their node number.
  390.  
  391.                       MiscInfo (IFNA Kludge).                      MiscInfo (IFNA Kludge).
  392.  
  393.               Struct _MiscInfo {
  394.                          Unsigned byte    MI_Packet_Type /* Always 06h -
  395.                 FFh, assigned by FTSC */
  396.                          Unsigned byte    MI_ByteCount   /* # of bytes
  397.                 of miscinfo */
  398.                          Unsigned Byte    MI_WhoKnows[1] /* Misc Stuff
  399.                 */
  400.               };
  401.  
  402.                            MiscInfo Notes:
  403.  
  404.                  The Misc info packet(s) are the last packets associated
  405.             with a  message, there  may be  more  than  one  in  extreme
  406.             circumstances, but  this should  prove to  be unlikely.  The
  407.             bundler  must   retain  any  information  in  these  packets
  408.             unchanged if it is a routed message.
  409.  
  410.  
  411.  
  412.  
  413.  
  414.  
  415.                  This is  a catch  all packet  that replaces the dreaded
  416.             IFNA kludge.   It  is designed to only be used as an interim
  417.             method.   At present  all IFNA  kludges are handled in other
  418.             special purpose  packets, it  is foreseen  that any  further
  419.             kludges will  be handled  only by miscinfo packets until the
  420.             Type 3.x  bundle specification  can be  updated and coded to
  421.             handle the new data.
  422.  
  423.                  MiscInfo packets  in the  range 80h  -  F0h  should  be
  424.             preserved if  not understood.   It  should be  considered an
  425.             error condition  to find a MiscInfo packet with in the range
  426.             04h -  7Fh, this  range is reserved for future expansions on
  427.             Type 3  packets.   Packets in  the range F1h - FFh should be
  428.             unpacked AND  a warning  message should be generated.  These
  429.             numbers will be used on an extremely temporary basis as they
  430.             are designed  for ESSENTIAL  IFNA kludges  and will be added
  431.             into the Type 3.x specification as quickly as possible.
  432.  
  433.                       Arcmail and Type 3.x                      Arcmail and Type 3.x
  434.  
  435.                  Type 3.x  bundlers support  arcmail much  the same  way
  436.             that the type 2 bundlers do.  There are some enhancements in
  437.             the arcmail  naming scheme  however, that help reduce system
  438.             overhead for routed mail.
  439.  
  440.                  For arcmail  destined for  type 2 based systems the old
  441.             reliable method of arcmail file naming will be used, IE:
  442.  
  443.               NNNNnnnn.ww#
  444.  
  445.                  Where NNNN  is a  four hex  digit net number, nnnn is a
  446.             four hex  digit node  number, ww is a two character weekday-
  447.             name identifier,  and #  is the  packet number for that day.
  448.             Type 3.x  packers SHOULD  generate the  day  name  correctly
  449.             rather than the OMMM 1.08 cyclic method.
  450.  
  451.                  Here  follows  a  suggested  Type  3.x  ArcMail  naming
  452.             scheme, basically a modification of Roeland Meyer's original
  453.             proposal.   I have  been made  aware that  Roeland has  some
  454.             things  to   say  on   this,  but   there  seems   to  be  a
  455.             communications break  between us, so until I can contact him
  456.             I will stick with this.
  457.  
  458.                  For Arcmail  destined to  a Type  3.x system (with Type
  459.             3.x bundles  internally), a  variation of  the method  first
  460.             proposed by  Roeland Meyer  will be  used.   Here follows  a
  461.             quick synopsis:
  462.  
  463.                  New address  specifier   (Re-edited by Oliver McDonald)
  464.             This is  designed for the Type 3.0 Arcmail naming convention
  465.             of:
  466.  
  467.               ZZNNNOOO.Fxx
  468.               |  |  |  ||
  469.  
  470.  
  471.  
  472.  
  473.  
  474.  
  475.               |  |  |  |`----> Incremental sequence number, base 10, max
  476.                 = 99d
  477.               |  |  |  |           Starts at 00 and counts to '99' then
  478.                 wraps
  479.               |  |  |  |           back to 00. No "Day-of-week" info.
  480.               |  |  |  |           This is strictly to avoid bundle
  481.                 collisions.
  482.               |  |  |  |           An 'empty' version of the bundle is
  483.                 kept
  484.               |  |  |  |           around to help the router remember
  485.                 what the
  486.               |  |  |  |           last sequence number was.
  487.               |  |  |  |
  488.               |  |  |  `-----> Flag to indicate bundle type
  489.               |  |  |              Allowed values:
  490.               |  |  |                 'All non-specified flags are
  491.                 reserved.
  492.               |  |  |                 'U' - ZOO File bundle
  493.               |  |  |                 'V' - ZOO Mail only bundle for a
  494.                 Point.
  495.               |  |  |                 'W' - ZOO Mail only bundle
  496.               |  |  |                 'X' - File bundle
  497.               |  |  |                 'Y' - Mail only bundle for a
  498.                 point.
  499.               |  |  |                 'Z' - Mail only bundle
  500.               |  |  |               For files with the 'Y' flag it is
  501.               |  |  |                sent as per normal until it reaches
  502.                 the
  503.               |  |  |                node specified by the arcname.  At
  504.                 this
  505.               |  |  |                point the node will unarc the FIRST
  506.                 bundle
  507.               |  |  |                in the arc, and read the Message
  508.                 Header,
  509.               |  |  |                and then attach the bundle to the
  510.                 point
  511.               |  |  |                specified.
  512.               |  |  |               For File bundles if the files are to
  513.                 be
  514.               |  |  |                forwarded, the node will unarc the
  515.                 bundle
  516.               |  |  |                in the arc.  It will check the
  517.                 message header
  518.               |  |  |                for address (match against name),
  519.                 and will open
  520.               |  |  |                the Cargo Info Bundle, and attach
  521.                 those files
  522.               |  |  |                to the destination.
  523.               |  |  |                 Note: If the addresses do not
  524.                 match it considered
  525.               |  |  |                an error to forward the files.
  526.               |  |  |                 Note: The point address is not
  527.                 considered for
  528.               |  |  |                matching purposes.
  529.  
  530.  
  531.  
  532.  
  533.  
  534.  
  535.               |  |  |
  536.               |  |  `--------> Node address,  base 36, max = 56,654d
  537.               |  |                 Allowed values: '000' to 'ZZZ'
  538.               |  |                 This is the Node part of the
  539.                 destination
  540.               |  |                 address of the bundle.
  541.               |  |                 Special values:
  542.               |  |                    '000'- Destination is the Net Host
  543.                 given by
  544.               |  |                           ZNNN, not forwarded to any
  545.                 Nodes.
  546.               |  |                    'ZZZ'- This a broadcast bundle to
  547.                 ALL Nodes
  548.               |  |                           in the Net given by ZNNN,
  549.                 as
  550.               |  |                           well as, the Net Host given
  551.                 by same.
  552.               |  |
  553.               |  `-----------> Net   address, base 36, max =  55,654d
  554.               |                    Allowed values: '000' to 'ZZZ'
  555.               |                    This is the Net part of the
  556.                 destination
  557.               |                    address of the bundle.
  558.               |                    Special values:
  559.               |                       '000' - Destination is the
  560.                 ZoneGate given by
  561.               |                               ZZ, not forwarded to any
  562.                 Nets.
  563.               |                       'ZZZ' - This a broadcast bundle to
  564.                 ALL Nets
  565.               |                               in the Zone given by ZZ,
  566.                 as well as,
  567.               |                               the ZoneGate given by
  568.                 same.
  569.               |
  570.               `--------------> Zone  address, base 36, max =   1,294d
  571.                                    Allowed values: '00' to 'ZZ'
  572.                                    This is the Zone part of the
  573.                 destination
  574.                                    address of the bundle.
  575.                                    Special values:
  576.                                      '00' - Destination is the current
  577.                 ZoneGate.
  578.                                      'ZZ' - This a broadcast bundle to
  579.                 ALL
  580.                                             ZoneGates given by the
  581.                 NodeList, as
  582.                                             well as, the ZoneGate given
  583.                 by same.
  584.  
  585.                  Note, Point  numbers are  specifically NOT  included in
  586.             the file  name identifier.   There  were a couple of reasons
  587.             for this;  first, we  wanted to  allow the  maximum range of
  588.             Zone:Net/Node  numbers   to  be  available;  second,  anyone
  589.  
  590.  
  591.  
  592.  
  593.  
  594.  
  595.             running points  should not  be doing  so on a minimal system
  596.             anyway.
  597.  
  598.                  Note(2),  Special   bundle  names   (ZZZ  or  000)  are
  599.             implemented optionally  by the  destination.  You should not
  600.             assume that  it will  work.   A future  Type 3.x  spec  will
  601.             include password protection for this.
  602.  
  603.                  The logic for providing for up to 100 packets allowable
  604.             to a  specific node  is that  I have seen cases of a :CM Net
  605.             Host generating  in excess  of 10 messages for a node in one
  606.             day, and the next logical number is 100.
  607.  
  608.                  Should a  Type 3.x  destination fall  outside the range
  609.             available to  the Type  3.x arcmail limits, then the bundler
  610.             will fall back and use the Type 2 arcmail naming scheme.
  611.  
  612.                  Notes on Zone Gates                 Notes on Zone Gates
  613.  
  614.                  With type 3 bundles the ZoneGates software load is MUCH
  615.             easier, all  it has  to do  is simply  forward the  Type 3.x
  616.             bundle.   It is  suggested that  it may be VERY desirable to                                                       VERY
  617.             have Type  3.x bundlers  duplicate the  functionality of the
  618.             Zone Gate  software.   At the  very  least  it  is  STRONGLY
  619.             suggested  that   ZoneGates  upgrade  to  Type  3.x  capable
  620.             bundlers as soon as they become available.
  621.  
  622.                  Notes for Type 3.x Developer's:                 Notes for Type 3.x Developer's:
  623.  
  624.                  The latest  specs for Type 3.x will be available in the
  625.             FTSC library  at all  times and at 1:342/1.  Developer's who
  626.             register with  1:342/1 will  have upcoming changes netmailed
  627.             to them  as they are confirmed.  Any upcoming change notices
  628.             will have  a date  officially implemented.   This  date will
  629.             always be in the future and should be considered an official
  630.             release date of the new Type 3.x standard.
  631.  
  632.                  Every attempt  will be  made  to  allow  developer's  a
  633.             reasonable time  period to  upgrade to the new standard.  It
  634.             is important  that developer's  attempt to meet this date as
  635.             these changes  are usually  NOT backward  compatible.   Code
  636.             samples will  also be  F.Req'able from  1:342/1 as the magic
  637.             file name  TYPE3x where x is the latest revision to the Type
  638.             3 standard.   Should  a developer  be  unable  to  meet  the
  639.             release  date   he  should  notify  the  FTSC  and/or  342/1
  640.             immediately.   The release date is based on an estimate made
  641.             by Aurora  Computer Technologies.  If there is a good reason
  642.             the release  date will  be pushed  back, and  ALL developers
  643.             will be  notified.  As the new Type 3.x standard will not be
  644.             official until  the release  date no  developer will release
  645.             his code early.
  646.  
  647.                  On that  subject, care should be taken by the developer
  648.             to let  no new  format bundles escape his beta test systems.
  649.  
  650.  
  651.  
  652.  
  653.  
  654.  
  655.             There are  a couple of approaches we recommend for this, the
  656.             first is  to have  beta test  versions only generate the new
  657.             format bundle  for  specific  zone:net/node  addresses,  the
  658.             second is  to set  up a  completely separate private net for
  659.             testing purposes.
  660.  
  661.                  Release method:   Since  the bundler will automatically
  662.             spread news of itself with use, a simple zero effort release
  663.             program may  be used.  As different versions of the Type 3.x
  664.             bundlers will  require different operating environments, you
  665.             should try  to get  your bundler  made  available  on  Echo-
  666.             BackBone and  Echo Hub  systems.  The reasoning behind this,
  667.             is that  it is  from these systems that the existence of the
  668.             new bundler  will become  common knowledge.  The other place
  669.             to send  it would  be the  Zone, Regional, and maybe Net Co-
  670.             ordinators.
  671.  
  672.                  Future of Type 3                 Future of Type 3
  673.  
  674.                  Since the  Type 3  format proposed  provides for  a new
  675.             level of  information exchange in Matrix mail I provide here
  676.             a few advance hints of what is planned.
  677.  
  678.                       AutoEcho built in.                      AutoEcho built in.
  679.  
  680.                  Replace AutoEcho/AreaFix with automatic security.  This
  681.             security is  such that  the hub  will not  need  to  pick  a
  682.             password and send it in netmail to the downstream node prior
  683.             to the downstream node requesting echos.
  684.  
  685.                    Instead, the downstream node will request an echo, at
  686.             which point  the  Hub's  bundler  will  generate  a  netmail
  687.             message to  the Hub  Sysop.  Now the hub Sysop may decide to
  688.             give it  to him.  If he does, he simply tells his bundler to
  689.             start sending it downstream to him.
  690.  
  691.                  Now since  this last  paragraph  has  already  confused
  692.             people, I  will provide  a scenario with names.  Here in Net
  693.             342 we  have our  NEC as  Brian McCullough (BDMc for short),
  694.             and our  REC is  Steve Barnes (SB).  We have BDMc requesting
  695.             the echo NET_DEV from SB.  The sequence is as follows:
  696.  
  697.               BDMc requests NET_DEV.
  698.               BDMc's bundler sees this and generates the echo request
  699.                 packet.
  700.               This packet is bundled and sent to SB.
  701.               SB's bundler finds the bundle.
  702.               SB's bundler sees that BDMc is authorized to have that
  703.                 echo.
  704.               SB's Bundler generates an acknowledge packet and starts
  705.                 sending the echo to BDMc.
  706.               BDMc's Bundler gets the acknowledge and sets up the area.
  707.               BDMc's Bundler will use the password it was sent for
  708.                 future requests.
  709.  
  710.  
  711.  
  712.  
  713.  
  714.  
  715.  
  716.                  If there  was a  problem with  access to  the requested
  717.             echo Steve Barnes would have received a NetMail message from
  718.             his bundler  and he would be able to make a decision at this
  719.             point.  Other than that he need not even be in the country.
  720.  
  721.                  Minor details  on this,  the Hub (or upstream node) can
  722.             specify levels  of  permission  for  this  autoecho  request
  723.             process, and deny certain echos to certain downstream nodes.
  724.             If a  downstream node  requests a  denied echo, the upstream
  725.             node's bundler  will again generate a netmail message to the
  726.             Hub Sysop informing him of what happened.
  727.  
  728.                  This  will   probably  be  implemented  as  a  downward
  729.             compatible  upgrade   with  the  request  for  new  software
  730.             triggered by  the first  request for  a new  echo.  Note, if
  731.             standard distribution  applies this  should never generate a
  732.             request.  However as things do not always work that way, the
  733.             automatic notification  and  optional  file  request  should
  734.             solve any major problems.
  735.  
  736.                  The Future of the Aurora Type 3 Bundler                 The Future of the Aurora Type 3 Bundler
  737.  
  738.                       Fowarding of bundles that costs money.                      Fowarding of bundles that costs money.
  739.  
  740.                  All forwarded  bundles that  will cost  money  will  be
  741.             marked as  HOLD unless  either the  receiving OR the sending
  742.             node are  marked as  send-to or  accept-from  appropriately.
  743.             All keywords  will be  valid in  these cases.    This  is  a
  744.             completely backwards compatible change.
  745.  
  746.                       Forwarding Cost bundles from Points.                      Forwarding Cost bundles from Points.
  747.  
  748.                  The forwarding of cost bundles from points will be done
  749.             on the  basis of  a credit  that the  point has.  The credit
  750.             will be  monitored in  the USER.BBS  file, with  the  record
  751.             number corresponding  to  the  point  number.    This  is  a
  752.             completely backwards compatible change.
  753.  
  754.                  Final Notes:                 Final Notes:
  755.  
  756.                  Final Note:  Would all those planning on writing a Type
  757.             3.0 bundler  please contact me (Oliver McDonald) via NetMail
  758.             (1:342/1).
  759.  
  760.                  Final  Note(2):   There  are   already   some   planned
  761.             extensions to  Type 3.0,  they will not be strictly required
  762.             and will  not create a new VersionMinor number, but will add
  763.             functionality, and  will when used require an update.  It is
  764.             my feeling that if you are aware of these plans, you will be
  765.             able  to  integrate  them  better  at  the  point  they  are
  766.             "officialized".  It is not my desire to become the only Type
  767.             3.x developer  out there.  It is merely my desire to be able
  768.  
  769.  
  770.  
  771.  
  772.  
  773.  
  774.             to be  one of  them, and also to be able to make Type 3.x so
  775.             attractive to all that everyone will want to run it.
  776.  
  777.                  Final Note(3):  Send Code (tm, Bob Hartman).
  778.  
  779.                  Final Note(4):  Convince me(tm) of suggested changes.
  780.  
  781.                  Kudos:                 Kudos:
  782.  
  783.                  Thanks to  all the  people in  Net_Dev  who  have  made
  784.             suggestions and comments on this proposal as I worked on it.
  785.             Your comments  are appreciated (even those I have not used).
  786.             I would like to especially thank the following people:
  787.  
  788.               Wynn Wagner III             FSC-0014 and support.
  789.               Roeland Meyer               Work on ArcName routing.
  790.               Randy Bush Suggestions and support.
  791.               Brian McCullough            Sounding board and Cattle
  792.                 Prod.
  793.  
  794.