Document: FSC-0071
Version:  001
Date:     17-Jan-1993




                  Distributed FREQ (DFREQ) Specifications
                      Bill Auclair, FidoNet 1:141/545
                            January 17, 1993




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.




       Distributed File Requests:  What Are They?
       ------------------------------------------

         DFREQ programs are designed to allow both sysops and  users
         to  make Distributed File Requests from other  BBS  systems
         listed in FidoNet<tm> or compatible nodelists.   There  are
         several major differences between Distributed File  Request
         methodology (hereafter referred to as DFREQ)  and  existing
         FidoNet FREQ and/or file distribution formats.

         FidoNet file request technology was designed only  for  the
         direct  transmittal of file requests  from  one  system  to
         another.   DFREQ technology allows routing of file requests
         from  the  originating  system  along  a  user-configurable
         "chain" of systems,   ending at  the  target  node.    This
         methodology  allows the setup of  no-cost,   local  routing
         paths for  file requests between distant systems that would
         normally  incur long-distance phone charges.



       How DFREQs Work
       ---------------

         Distributed File Request methodology can be separated  into
         2 main parts-- the REQUEST and the ACKNOWLEDGEMENT.

         The  REQUEST represents the initial stage,  in which  DFREQ
         data  from the originating system has not yet  reached  its
         target,  and thus carries no accompanying  requested  files
         with  it.   DFREQ data may be relayed via file  or  netmail
         message attach through any number of  intermediate  systems
         on its way to its ultimate target,  which is defined by the
         contents  of the request  file.   The  path  taken  by  the
         request to its target is determined by routing data used by
         the DFREQ processors of participating nodes in the chain.

         The ACKNOWLEDGEMENT is the result of a  processed  request,
         and  is created whether or  not  the  requested  files  are
         available  at the target  system.   The  DFREQ  information
         formerly  carried by the request  is  used  to  create  the
         acknowledgement,  set   its   destination   back   to   the
         originating system, file- or netmail-attach requested files
         (if any) for transmission, and/or provide information as to
         why  requested  file(s)  were  unavailable  at  the  target
         system.  Request data is deleted by the target system after
         the  acknowledgement is created.   The path  taken  by  the
         acknowledgement  back  to  the  originating  system   again
         depends upon the routing configurations of the chain nodes,
         but need not be the same as the path  previously  travelled
         by the request.

         ASCII  text files are used to transport  DFREQ  information
         between nodes.  These carrier files are similar in form and
         function to the .TIC files used by the TICK<tm>  file  echo
         utility.

         The DFREQ process starts when a user generates a  DFR  file
         containing  file request information,  using the  local  or
         on-line mode of a DFREQ processor.



       DFR Files
       ---------

         DFREQ  data for the REQUEST stage is  transmitted  using  a
         file with a .DFR (Distributed File Request) extension.  The
         filename is a randomly-generated 8-digit number.  DFR files
         carry  information  on  the  net/node  of  the  originating
         system, net/node of the target system, the name of the user
         who originated the request,  the filenames and descriptions
         of  the files to be requested,  the path travelled  by  the
         request  on its way to the  target  system,  and  date/time
         stamps  indicating when the request was processed  by  each
         node in the path.  DFRs are transmitted via file or netmail
         message attach.



       DFA Files
       ---------

         DFREQ  data for the ACKNOWLEDGEMENT  phase  is  transmitted
         using a file with a .DFA (Distributed File Acknowledgement)
         extension.   The  8-digit  filename   of   the   previously
         processed  DFR request file is retained.   DFA files  carry
         information  on the  net/node  of  the  originating  system
         (formerly the target system in the DFR file),  the net/node
         of  the target system (formerly the originating  system  in
         the  DFR file),  the name of the  user  who  generated  the
         request,  the filenames and  descriptions  of  successfully
         requested  files,  and the filenames and  associated  error
         information for any unsuccessfully requested or unavailable
         files.   The full  path  information  from  the  previously
         processed DFR file is retained,  and is appended with  path
         and  datestamp information representing the travel  of  the
         DFA file back to its new target, the source of the original
         DFREQ.  DFAs are transmitted via file or netmail attach.



       Error Messages
       --------------

         When  requests for any or all files in a DFREQ can  not  be
         fulfilled  for some  reason,  information  as  to  why  the
         request  was not satisfied is included  in  the  DFA  file,
         replacing the file descriptions of the  unavailable  files.
         Reasons for file unavailability can include:


          o  File(s) not found or not available at target system

          o  OKFile path does not exist on target system

          o  File(s) not found in inbound area-- node xxx/xxx


         DFA  files may be appended with error  information  by  any
         processing  system in the chain  back  to  the  originating
         node, depending upon where the error condition occurs.



       DFR/DFA File Formats
       --------------------

         DFR and DFA files are ASCII text files that transport DFREQ
         information between systems.   The DFR file is used  during
         the REQUEST stage of the transaction.  The DFA file is used
         during the ACKNOWLEDGEMENT stage of the transaction.

         New  DFR files are created by the DFREQ processor using its
         local  or on-line user  mode.   A  random  8-digit  numeric
         filename and .DFR extension are assigned to the file.  File
         format for a newly-created DFR is shown below:


         Created by  GOFER v0.05a, Copyright (C) 1992 by Bill Auclair
         Origin      141/545
         Requestor   Bill Auclair
         Target      141/455
         File        LOGON.LZH 2969 01-17-90 generic telix log-on script


         The first line of the DFR holds information identifying the
         program/version  used to create it.   No empty  spaces  are
         allowed above this line,  or between any of the lines  that
         follow.

         The  second line of the DFR  contains  Origin  information.
         This  indicates the net/node number  of  the  system  which
         generated the DFR.

         The third line of the DFR contains  Requestor  information.
         This provides the name of the user who initiated the DFREQ.

         The  fourth line of the DFR  contains  Target  information.
         This indicates the net/node number of the system  which  is
         to  receive the DFR and process  it  to  deliver  requested
         files.

         All  lines beginning with  the  "File"  identifier  contain
         filename and description information taken from remote file
         lists.   Filenames and descriptions must be separated by at
         least one space.  No empty lines are allowed after File
         information.

         When  a DFR  is  sent  to  another  system,  that  system's
         net/node information is appended to it, along with date and
         time  stamp  information  indicating  when  the   DFR   was
         processed by the system.   This information accompanies the
         DFR  throughout its entire journey.   A DFR file with  Path
         information appended to it is shown below:


         Created by  GOFER v0.05a, Copyright (C) 1992 by Bill Auclair
         Origin      141/545
         Requestor   Bill Auclair
         Target      141/455
         File        LOGON.LZH 2969 01-17-90 generic telix log-on script
         Path        141/507   15 Nov 92 07:40:31


         Information contained within the DFR file  above  indicates
         it  has already traveled through  the  intermediate  system
         141/507  on its way from Origin system  141/545  to  Target
         system 141/455.  No empty lines are allowed after Path
         information.

         When  a DFR file reaches  its  Target  destination,  it  is
         converted  into a DFA  file,  and  its  file  requests  are
         evaluated by the target system.  Conversion of DFRs to DFAs
         is  done by retaining the DFR filename,  changing the  .DFR
         extension  to .DFA,  and reversing Origin and Target  data.
         Thus,  a DFR file originally named 12345678.DFR from Origin
         141/545 for Target 141/455 becomes 12345678.DFA from Origin
         141/455 for Target 141/545, as shown below:


         Created by  GOFER v0.05a, Copyright (C) 1992 by Bill Auclair
         Origin      141/455
         Requestor   Bill Auclair
         Target      141/545
         File        LOGON.LZH 2969 01-17-90 generic telix log-on script
         Path        141/507   15 Nov 92 07:40:31
         Path        141/485   15 Nov 92 08:02:55
         Path        141/455   15 Nov 92 08:15:23
         Path        141/455   15 Nov 92 08:15:25


         Note the dual Path lines for the Target system.   The first
         line represents processing as a DFR,  the second represents
         processing as a DFA.

         The  successfully-processed DFA file  is  returned  to  the
         system  that  originated  the   DFREQ,   along   with   the
         accompanying  requested file.   The  DFA  as  received  and
         processed by the originating system is shown below:


         Created by  GOFER v0.05a, Copyright (C) 1992 by Bill Auclair
         Origin      141/455
         Requestor   Bill Auclair
         Target      141/545
         File        LOGON.LZH 2969 01-17-90 generic telix log-on script
         Path        141/507   15 Nov 92 07:40:31
         Path        141/485   15 Nov 92 08:02:55
         Path        141/455   15 Nov 92 08:15:23
         Path        141/455   15 Nov 92 08:15:25
         Path        141/485   15 Nov 92 10:01:06
         Path        141/507   15 Nov 92 10:27:35
         Path        141/545   15 Nov 92 10:31:59


         If the Target system receiving the DFR file cannot  satisfy
         the  DFREQ,  the file description for the unavailable  file
         contained  in  the  new  DFA   is   replaced   with   error
         information.   The DFA is  then  transmitted  back  to  the
         system  that  originated  the  DFREQ.   Error   information
         contained  within  the  DFA  file  as   returned   to   the
         originating system is shown below:


         Created by  GOFER v0.05a, Copyright (C) 1992 by Bill Auclair
         Origin      141/455
         Requestor   Bill Auclair
         Target      141/545
         File        LOGON.LZH !ERR018! File Not Available From 141/455
         Path        141/507   15 Nov 92 07:40:31
         Path        141/485   15 Nov 92 08:02:55
         Path        141/455   15 Nov 92 08:15:23
         Path        141/455   15 Nov 92 08:15:25
         Path        141/485   15 Nov 92 10:01:06
         Path        141/507   15 Nov 92 10:27:35
         Path        141/545   15 Nov 92 10:31:59