diff options
Diffstat (limited to 'doc/rfc/rfc2204.txt')
-rw-r--r-- | doc/rfc/rfc2204.txt | 4147 |
1 files changed, 4147 insertions, 0 deletions
diff --git a/doc/rfc/rfc2204.txt b/doc/rfc/rfc2204.txt new file mode 100644 index 0000000..6242243 --- /dev/null +++ b/doc/rfc/rfc2204.txt @@ -0,0 +1,4147 @@ + + + + + + +Network Working Group D. Nash +Request for Comments: 2204 ODETTE +Category: Informational September 1997 + + + ODETTE File Transfer Protocol + +Status of this Memo + + This memo provides information for the Internet community. It does + not specify an Internet standard of any kind. Distribution of this + memo is unlimited. + +Abstract + + This memo describes a file transfer protocol to facilitate electronic + data interchange between trading partners. + + The protocol, denoted the ODETTE File Transfer Protocol, supports + both direct communication between installations and indirect + communication via a third party clearing centre. It was developed by + the Organisation for Data Exchange by Tele Transmission in Europe to + facilitate communication within the European motor industry and is + presented here to allow for wider use within the Internet community. + +Table of Contents + + 1. Introduction 3 + 1.1 - Background 3 + 1.2 - Relationship to the original ODETTE Standard 3 + 1.3 - General Principles 3 + 1.4 - Structure 4 + 1.5 - Virtual Files 4 + 1.6 - Service Description 7 + + 2. Network Service (TCP Transport Service) 7 + 2.1 - Introduction 7 + 2.2 - Service Primitives 7 + 2.3 - Port Assignment 9 + + 3. File Transfer Service 9 + 3.1 - Model 10 + 3.2 - Session Setup 11 + 3.3 - File Transfer 13 + 3.4 - Session Take Down 16 + 3.5 - Service State Automata 19 + + + + + +Nash Informational [Page 1] + +RFC 2204 ODETTE File Transfer Protocol September 1997 + + + 4. Protocol Specification 22 + 4.1 - Overview 22 + 4.2 - Start Session Phase 22 + 4.3 - Start File Phase 23 + 4.4 - Data Transfer Phase 26 + 4.5 - End File Phase 27 + 4.6 - End Session Phase 27 + 4.7 - Problem Handling 28 + + 5. Commands and Formats 28 + 5.1 - Conventions 28 + 5.2 - Commands 29 + 5.3 - Command Formats 29 + 5.4 - Identification Code 45 + + 6. ODETTE-FTP Data Exchange Buffer 46 + 6.1 - Overview 46 + 6.2 - Data Exchange Buffer Format 46 + 6.3 - Buffer Filling Rules 47 + + 7. Stream Transmission Buffer (TCP only) 47 + 7.1 - Introduction 47 + 7.2 - Stream Transmission Header Format 49 + + 8. Protocol State Machine 50 + 8.1 - ODETTE-FTP State Machine 50 + 8.2 - Error Handling 50 + 8.3 - States 51 + 8.4 - Input Events 53 + 8.5 - Output Events 54 + 8.6 - Local Variables 55 + 8.7 - Local Constants 55 + 8.8 - Session Connection State Table 56 + 8.9 - Error and Abort State Table 58 + 8.10 - Speaker State Table 1 59 + 8.11 - Speaker State Table 2 63 + 8.12 - Listener State Table 65 + 8.13 - Example 68 + + 9. Security Considerations 68 + + Appendix A Virtual File Mapping Example 69 + Appendix B ISO 646 Character Subset 72 + + Acknowledgements 73 + References 73 + ODETTE Address 74 + Author's Address 74 + + + +Nash Informational [Page 2] + +RFC 2204 ODETTE File Transfer Protocol September 1997 + + +1. Introduction + +1.1 Background + + The ODETTE File Transfer Protocol (ODETTE-FTP) was defined in 1986 by + working group four of the Organisation for Data Exchange by Tele + Transmission in Europe (ODETTE) to address the electronic data + interchange (EDI) requirements of the European automotive industry. + It was designed in the spirit of the Open System Interconnection + (OSI) model utilising the Network Service provided by the CCITT X25 + recommendation. + + Over the last ten years ODETTE-FTP has been widely deployed on + systems of all sizes from personal computers to large mainframes. As + a result of the wide scale deployment of internet technology and the + trend towards global business practices, ODETTE has decided to extend + the scope of it's file transfer protocol to allow the use of TCP/IP + and to make the protocol available to the Internet community. + + This memo describes the ODETTE-FTP protocol using the Transmission + Control Protocol for it's network service. + +1.2 Relationship to the original ODETTE Standard + + This memo is an interpretation of version 1.3 of the ODETTE File + Transfer Protocol [OFTP]. In the event of any ambiguity between this + document and the original ODETTE-FTP, the original shall take + precedence. + + For ODETTE-FTP on TCP/IP the following sections have been added with + respect to the original document. + + Section 2 - Network Service + Section 7 - Stream Transmission Buffer + Appendix A - Virtual File mapping example + +1.3 General Principles + + The aim of the ODETTE-FTP is to facilitate the transmission of a file + between one or more locations in a way that is independent of the + data communication network, system hardware and software environment. + + In designing and specifying the protocol, the following factors were + considered. + + 1. The possible differences of size and sophistication (file storage, + small and large systems). + + + + +Nash Informational [Page 3] + +RFC 2204 ODETTE File Transfer Protocol September 1997 + + + 2. The necessity to work with existing systems (reduce changes to + existing products and allow easy implementation). + + 3. Systems of different ages. + + 4. Systems of different manufactures. + + 5. The potential for growth in sophistication (limit impact and avoid + changes at other locations). + +1.4 Structure + + ODETTE-FTP is modelled on the OSI reference model. It is designed to + use the Network Service provided by level 3 of the model and provide + a File Service to the users. Thus the protocol spans levels 4 to 7 + of model. + + The description of the ODETTE-FTP contained in this memo is closely + related to the original 'X.25' specification of the protocol and in + the spirit of the OSI model describes: + + 1. A File Service provided to a user monitor. + + 2. A protocol for the exchange of information between peer + ODETTE-FTP entities. + + A major consideration in adapting the protocol to use the + Transmission Control Protocol (TCP) was the desire to make no changes + to the existing protocol by adding the functionality required to + allow implementors to support internet communication with only minor + changes to existing ODETTE-FTP engines. To this end an additional + header has been added to the start of each exchange buffer to allow + the TCP byte stream to be broken up into the discrete exchange + buffers expected by the ODETTE-FTP protocol. + +1.5 Virtual Files + + Information is always exchanged between ODETTE-FTP entities in a + standard representation called a Virtual File. This allows data + transfer without regard for the nature of the communicating systems. + + The mapping of a file between a local and virtual representation will + vary from system to system and is not defined here. + + + + + + + + +Nash Informational [Page 4] + +RFC 2204 ODETTE File Transfer Protocol September 1997 + + + o---------o + Site | Local | + A | File A | + o---------o + | + o----------------------- Mapping A ------------------------o + | | | + | o---------o | + | | Virtual | | + | | File | | + | o---------o | + | o------------------------------------------------o | + | | | | + | | ODETTE-FTP | | + | | | | + | o------------------------------------------------o | + | o---------o o---------o | + | | Virtual | | Virtual | | + | | File | | File | | + | o---------o o----+----o | + | | | | + o------ Mapping B ------------------------ Mapping C ------o + | | + o---------o o----+----o + | Local | Site Site | Local | + | File B | B C | File C | + o---------o o---------o + + A Virtual File is described by a set of attributes identifying and + defining the data to be transferred. The main attributes are: + +1.5.1 Organisation: + + Sequential + + Logical records are presented one after another. The ODETTE-FTP + must be aware of the record boundaries. + +1.5.2 Identification + + Dataset Name + + Dataset name of the Virtual File being transfered, assigned by + bilateral agreement. + + + + + + + +Nash Informational [Page 5] + +RFC 2204 ODETTE File Transfer Protocol September 1997 + + + Time stamp (HHMMSS) + + A file qualifier indicating the time the Virtual File was made + available for transmission. + + Date stamp (YYMMDD) + + A file qualifier indicating the date the Virtual File was made + available for transmission. + + The Dataset Name, Date and Time attributes are assigned by a Virtual + File's Originator and are used to uniquely identify the file. They + must not be changed by intermediate locations. + + The Date attribute represents the decade and year in a two digit + field. Since the ODETTE-FTP only uses this information to identify a + particular Virtual File it will continue to operate correctly in the + year 2000 and beyond. + + The User Monitor may use the Virtual File Date attribute in local + processes involving date comparisons and calculations. Any such use + falls outside the scope of this protocol and year 2000 handling is a + local implementation issue. + +1.5.3 Record Format + + Four record formats are defined. + + Fixed (F) + + Each record in the file has the same length. + + Variable (V) + + The records in the file can have different lengths. + + Unstructured (U) + + The file contains a stream of data. No structure is defined. + + Text File (T) + + A Text File is defined as a sequence of ASCII characters, + containing no control characters except CR/LF which delimits + lines. A line will not have more than 2048 characters. + + + + + + +Nash Informational [Page 6] + +RFC 2204 ODETTE File Transfer Protocol September 1997 + + +1.5.4 Restart + + ODETTE-FTP can negotiate the restart of an interrupted Virtual File + transmission. Fixed and Variable format files are restarted on + record boundaries. For Unstructured and Text files the restart + position is expressed as a file offset in 1K (1024 octet) blocks. + The restart position is always calculated relative to the Virtual + File. + +1.6 Service Description + + ODETTE-FTP provides a file transfer service to a user monitor and in + turn uses the Internet transport layer stream service to communicate + between peers. + + These services are specified in this memo using service primitives + grouped into four classes as follows: + + Request (RQ) An entity asks the service to do some work. + Indication (IND) A service informs an entity of an event. + Response (RS) An entity responds to an event. + Confirm (CF) A service informs an entity of the response. + + Services may be confirmed, using the request, indication, response + and confirm primitives, or unconfirmed using just the request and + indication primitives. + +2. Network Service (TCP Transport Service) + +2.1 Introduction + + ODETTE-FTP peer entities communicate with each other via the OSI + Network Service or the Transmission Control Protocol Transport + Service [TCP]. This is described by service primitives representing + request, indication, response and confirmation actions. + + For the internet environment, the service primitives mentioned below + for the Network Service have to be mapped to the respective Transport + Service primitives. This section describes the network service + primitives used by ODETTE-FTP and their relationship to the TCP + interface. In practice the local transport service application + programming interface will be used to access the TCP service. + +2.2 Service Primitives + + All Network primitives can be directly mapped to the respective + Transport primitives when using TCP. + + + + +Nash Informational [Page 7] + +RFC 2204 ODETTE File Transfer Protocol September 1997 + + +2.2.1 Network Connection + + N_CON_RQ ------> N_CON_IND + N_CON_CF <------ N_CON_RS + + This describes the setup of a connection. The requesting ODETTE-FTP + peer uses the N_CON_RQ primitive to request an active OPEN of a + connection to a peer ODETTE-FTP, the Responder, which has previously + requested a passive OPEN. The Responder is notified of the incoming + connection via N_CON_IND and accepts it with N_CON_RS. The requester + is notified of the completion of it's OPEN request upon receipt of + _CON_CF. + + Parameters + + Request Indication Response Confirmation + --------------------------------------------------------------------- + Dest addr ------> same same same + +2.2.2 Network Data + + N_DATA_RQ ------> N_DATA_IND + + Data exchange is an unconfirmed service. The Requester passes data + for transmission to the network service via the N_DATA_RQ primitive. + The Responder is notified of the availability of data via N_DATA_IND. + In practice the notification and receipt of data may be combined, + such as by the return from a blocking read from the network socket. + + Parameters + + Request Indication + --------------------------------------------------------------------- + Data ------------------> same + +2.2.3 Network Disconnection + + N_DISC_RQ ------> N_DISC_IND + + An ODETTE-FTP requests the termination of a connection with the + N_DISC_RQ service primitive. It's peer is notified of the CLOSE by a + N_DISC_IND event. It is recognised that each peer must issue a + N_DISC_RQ primitive to complete the TCP symmetric close procedure. + + + + + + + + +Nash Informational [Page 8] + +RFC 2204 ODETTE File Transfer Protocol September 1997 + + +2.2.4 Network Reset + + ------> N_RST_IND + + An ODETTE-FTP entity is notified of a network error by a N_RST_IND + event. It should be noted that N_RST_IND would also be generated by + a peer RESETTING the connection, but this is ignored here as N_RST_RQ + is never sent to the Network Service by ODETTE-FTP. + +2.3 Port Assignment + + A ODETTE-FTP requester will select a suitable local port. + + The responding ODETTE-FTP will listen for connections on Registered + Port 3305, the service name is 'odette-ftp'. + +3. File Transfer Service + + The File Transfer Service describes the services offered by an + ODETTE-FTP Entity to it's User Monitor. The implementation of the + service primitives is a local matter. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Nash Informational [Page 9] + +RFC 2204 ODETTE File Transfer Protocol September 1997 + + +3.1 Model + + o-------------------o o-------------------o + | | | | + | USER MONITOR | | USER MONITOR | + | | | | + o-------------------o o-------------------o + | A | A + ...............|...|... FILE TRANSFER SERVICE ...|...|............... + | | | | + F_XXX_RQ/RS | | F_XXX_IND/CF F_XXX_RQ/RS | | F_XXX_IND/CF + V | V | + o-------------------o o-------------------o + | |- - - - - - >| | + | ODETTE-FTP Entity | E-Buffer | ODETTE-FTP Entity | + | |< - - - - - -| | + o-------------------o o-------------------o + | A | A + N_XXX_RQ/RS | | N_XXX_IND/CF N_XXX_RQ/RS | | N_XXX_IND/CF + | | | | + ...............|...|...... NETWORK SERVICE ......|...|............... + V | V | + o---------------------------------------------------------o + | | + | N E T W O R K | + | | + o---------------------------------------------------------o + + Key: E-Buffer - Exchange Buffer + F_ - File Transfer Service Primitive + N_ - Network Service Primitive + + + + + + + + + + + + + + + + + + + + +Nash Informational [Page 10] + +RFC 2204 ODETTE File Transfer Protocol September 1997 + + +3.2 Session Setup + +3.2.1 Session Connection Service + + | | + F_CONNECT_RQ ---->|------------|----> F_CONNECT_IND + | | + F_CONNECT_CF <----|------------|<---- F_CONNECT_RS + | | + + Parameters + + Request Indication Response Confirm + --------------------------------------------------------------------- + called-address -> same --- ---- + calling-address-> same --- ---- + ID1 ------------> same ID2 ------------> same + PSW1------------> same PSW2 -----------> same + mode1 ----------> mode2 ----------> mode3 ----------> same + restart1 -------> same -----------> restart2 -------> same + --------------------------------------------------------------------- + + Mode + + Specifies the file transfer capabilities of the entity sending or + receiving a F_CONNECT primitive for the duration of the session. + + Value: + Sender-Only The entity can only send files. + Receiver-Only The entity can only receive files. + Both The entity can both send and receive files. + + Negotiation: + Sender-Only Not negotiable. + Receiver-Only Not negotiable. + Both Can be negotiated down to Sender-Only or + Receiver-Only by the User Monitor or the + ODETTE-FTP entity. + + + + + + + + + + + + + +Nash Informational [Page 11] + +RFC 2204 ODETTE File Transfer Protocol September 1997 + + + Request Indication Response Confirm + --------------------------------------------------------------------- + Sender-only ----> Receiver-only --> Receiver-only --> Sender-only + + Receiver-only --> Sender-only ----> Sender-only ----> Receiver-only + + Both -----+-----> Both ----+------> Both -----------> Both + | or +------> Receiver-only --> Sender-only + | or +------> Sender-only ----> Receiver-only + | + or +-----> Receiver-only --> Receiver-only --> Sender-only + or +-----> Sender-only ----> Sender-only ----> Receiver-only + --------------------------------------------------------------------- + + Restart + + Specifies the file transfer restart capabilities of the User + Monitor. + + Value: + + Negotiation: + + Request Indication Response Confirm + --------------------------------------------------------------------- + restart = Y ----> restart = Y --+-> restart = Y ----> restart = Y + or +-> restart = N ----> restart = N + + restart = N ----> restart = N ----> restart = N ----> restart = N + --------------------------------------------------------------------- + + + + + + + + + + + + + + + + + + + + + +Nash Informational [Page 12] + +RFC 2204 ODETTE File Transfer Protocol September 1997 + + +3.3 File Transfer + +3.3.1 File Opening + + | | + F_START_FILE_RQ ---->|------------|----> F_START_FILE_IND + | | + F_START_FILE_CF(+|-) <----|------------|<---- F_START_FILE_RS(+|-) + | | + + Parameters: + + Request Ind. RS(+) CF(+) RS(-) CF(-) + -------------------------------------------------------------------- + file-name ----> same ---- ---- ---- ---- + date-time ----> same ---- ---- ---- ---- + destination---> same ---- ---- ---- ---- + originator----> same ---- ---- ---- ---- + rec-format----> same ---- ---- ---- ---- + rec-size -----> same ---- ---- ---- ---- + file-size-----> same ---- ---- ---- ---- + restart-pos1--> same-> restart-pos2-> same ---- ---- + ---- ---- ---- ---- cause ------> same + ---- ---- ---- ---- retry-later-> same + -------------------------------------------------------------------- + + Notes: + + 1. Retry-later has values "Y" or "N". 2. Cause is the reason for + refusing the transfer (1,..,13,99). 3. Restart-pos1 not equal 0 is + only valid if restart has been agreed + during initial negotiation. + 4. Restart-pos2 is less than or equal to restart-pos1. + +3.3.2 Data Regime + + | | + F_DATA_RQ ---->|------------|----> F_DATA_IND + | | + + Notes: + + 1. The data format within a F_DATA primitive is locally defined. + + 2. The File Transfer service may have to provide a flow control + mechanism to regulate the flow of F_DATA primitives. + + + + + +Nash Informational [Page 13] + +RFC 2204 ODETTE File Transfer Protocol September 1997 + + +3.3.3 File Closing + + | | + F_CLOSE_FILE_RQ --->|------------|----> F_CLOSE_FILE_IND + | | + F_CLOSE_FILE_CF(+|-) <---|------------|<---- F_CLOSE_FILE_RS(+|-) + | | + Parameters + + Request Ind RS(+) CF(+) RS(-) CF(-) + --------------------------------------------------------------------- + rec-count ---> same ---- ---- ---- ---- + unit-count --> same ---- ---- ---- ---- + ---- ---- Speaker=Y ---> Speaker=N ---- ---- + ---- ---- Speaker=N ---> Speaker=Y ---- ---- + ---- ---- ---- ---- cause ---> same + --------------------------------------------------------------------- + + In a positive Close File response (F_CLOSE_FILE_RS(+)) the current + Speaker may either: + + 1. Set Speaker to "Yes" and become the Speaker. 2. Set Speaker + to "No" and remain the Listener. + + The File Transfer service will ensure that the setting of the speaker + parameter is consistent with the capabilities of the peer user. + + The turn is never exchanged in the case of a negative response or + confirmation. + + Only the Speaker is allowed to issue F_XXX_FILE_RQ primitives. + +3.3.4 Exchanging the Turn + +3.3.4.1 Initial Turn (First Speaker) + + The Initiator becomes the first Speaker at the end of the Session + Setup (F_CONNECT_CF received by Initiator and F_CONNECT_RS sent by + Responder). + +3.3.4.2 Following Turns + + Rules: + + 1. At each unsuccessful End of File the turn is not exchanged. + + 2. At each successful End of File the turn is exchanged if requested + by the Listener: + + + +Nash Informational [Page 14] + +RFC 2204 ODETTE File Transfer Protocol September 1997 + + + - The current Listener receives F_CLOSE_FILE_IND + (Speaker = choice). + + - If the Listener answers F_CLOSE_FILE_RS(Speaker = YES), it + becomes Speaker, the Speaker receives F_CLOSE_FILE_CF (Speaker = + NO) and becomes Listener. + + - If the Listener answers F_CLOSE_FILE_RS(Speaker = NO), it + remains Listener, and the Speaker receives F_CLOSE_FILE_CF + (Speaker = YES) and remains Speaker. + + 3. The Speaker can issue a Change Direction request (F_CD_RQ) to + become the Listener. The Listener receives a Change Direction + indication (F_CD_IND) and becomes the Speaker. + + 4. In order to prevent loops of F_CD_RQ/IND, it is an error to send + F_CD_RQ immediately after having received a F_CD_IND. + +3.3.5 End to End Response + + This service is initiated by the current Speaker (if there is no file + transfer in progress) to send an End-to-End response from the final + destination to the originator of a file. + + | | + F_EERP_RQ ---->|------------|----> F_EERP_IND + | | + Parameters + + Request Indication + ------------------------------------ + filename -------> same + date -----------> same + time -----------> same + destination ----> same + originator -----> same + ------------------------------------ + + Relationship with Turn: + + - Only the Speaker may send an End to End Response request. + + - Invoking the EERP service does not change the turn. + + - If a F_CD_IND has been received just before F_EERP_RQ is issued, + this results in leaving the special condition created by the + reception of F_CD_IND; i.e. while it was possible to issue + F_RELEASE_RQ and not possible to issue F_CD_RQ just after the + + + +Nash Informational [Page 15] + +RFC 2204 ODETTE File Transfer Protocol September 1997 + + + reception of F_CD_IND, after having issued F_EERP_RQ the normal + Speaker status is entered again (F_CD_RQ valid, but F_RELEASE_RQ + not valid). + +3.4 Session Take Down + +3.4.1 Normal Close + + | | + F_RELEASE_RQ ---->|------------|----> F_RELEASE_IND + | | + + Parameters + + Request Indication + --------------------------------------------------------------------- + reason = normal -------> ---- + --------------------------------------------------------------------- + + The Release service can only be initiated by the Speaker. + + The Speaker can only issue a Release request (F_RELEASE_RQ) just + after receiving an unsolicited Change Direction indication + (F_CD_IND). This ensures that the other partner doesn't want to send + any more files in this session. + + Peer ODETTE-FTP entities action a normal session release by + specifying Reason = Normal in an End Session (ESID) command. + +3.4.2 Abnormal close + + | | + F_RELEASE_RQ ---->|------------|----> F_ABORT_IND + | | + + + Parameters + + Request Indication + --------------------------------------------------------------------- + reason = error value --> same (or equivalent) + AO (Abort Origin) = (L)ocal or (D)istant + --------------------------------------------------------------------- + + Abnormal session release can be initiated by either the Speaker or + the Listener and also by the user or provider. + + Abnormal session release can occur at any time within the session. + + + +Nash Informational [Page 16] + +RFC 2204 ODETTE File Transfer Protocol September 1997 + + + Peer ODETTE-FTP entities action an abnormal session release by + specifying Reason = Error-value in an End Session (ESID) command. + + The abnormal session release deals with the following types of error: + + 1. The service provider will initiate an abnormal release in the + following cases: + + 1. Protocol error, 2. Failure of the Start Session (SSID) + negotiation, 3. Command not recognised, 4. Exchange buffer size + error, 5. Resources not available, 6. Other unspecified abort code + (with "REASON" = unspecified). + + 2. The User Monitor will initiate an abnormal release in the + following cases: + + 1. Local site emergency close down, 2. Resources not available, 3. + Other unspecified abort code (with "REASON" = unspecified). + + Other error types may be handled by an abort of the connection. + +3.4.3 Abort + + + | | + F_ABORT_RQ ---->|------------|----> F_ABORT_IND + | | + User Initiated Abort + + + | | + F_ABORT_IND <----|------------|----> F_ABORT_IND + | | + Provider Initiated Abort + + Parameters + + Request Indication + --------------------------------------------------------------------- + -- R (Reason): specified or unspecified + -- AO (Abort Origin): (L)ocal or (D)istant + --------------------------------------------------------------------- + + The Abort service may be invoked by either entity at any time. + + The service provider may initiate an abort in case of error + detection. + + + + +Nash Informational [Page 17] + +RFC 2204 ODETTE File Transfer Protocol September 1997 + + +3.4.4 Explanation of Session Take Down Services + + User | OFTP | Network | OFTP | User + ---------------|------|----------------------|------|--------------- + | | | | + + 1. Normal Release + + F_RELEASE_RQ | | ESID(R=normal) | | F_RELEASE_IND + *--------------|-> ==|======================|=> --|--------------> + (R=normal) | | | | + + + 2. User Initiated Abnormal Release + + F_RELEASE_RQ | | ESID(R=error) | | F_ABORT_IND + *--------------|-> ==|======================|=> -|--------------> + (R=error value)| | | | (R=error,AO=D) + + + User | OFTP | Network | OFTP | User + ---------------|------|----------------------|------|--------------- + | | | | + + 3. Provider Initiated Abnormal Release + + F_ABORT_IND | | ESID(R=error) | | F_ABORT_IND + <--------------|-* *=|======================|=> --|--------------> + | | | | + + + 4. User Initiated Connection Abort + + F_ABORT_RQ | | N_DISC_RQ | | F_ABORT_IND + *--------------|-> --|--------->..----------|-> --|--------------> + | | N_DISC_IND | | (R=unsp.,AO=D) + + + 5. Provider Initiated Connection Abort + + F_ABORT_IND | | N_DISC_RQ | | F_ABORT_IND + <--------------|-* *-|--------->..----------|-> --|--------------> + (R=error,AO=L) | | N_DISC_IND | | (R=unsp.,AO=D) + + Key: * Origin of command flow + F_ ---> File Transfer Service primitive + N_ ---> Network Service primitive + ===> ODETTE-FTP (OFTP) protocol message + + + +Nash Informational [Page 18] + +RFC 2204 ODETTE File Transfer Protocol September 1997 + + +3.5 Service State Automata + + This state automata defines the service as viewed by the User + Monitor. Events causing a state transition are shown in lower case + and the resulting action in upper case where appropriate. + +3.5.1 Idle State Diagram + + o------------o + decision | | f_connect_ind + +-----------------| IDLE |-----------------+ + | F_CONNECT_RQ | (0) | F_CONNECT_RS | + | o------------o | + V | + o-----------------o | + | | | + | I_WF_FCONNECTCF | | + | | | + o--------+--------o | + | | + | F_CONNECT_CF | + V V + o-----------------o o-----------------o + | | | | + | IDLE SPEAKER | | IDLE LISTENER | + | (1) | | (2) | + | See Speaker | | See Listener | + | State Diagram | | State Diagram | + | | | | + o-----------------o o-----------------o + + + + + + + + + + + + + + + + + + + + + +Nash Informational [Page 19] + +RFC 2204 ODETTE File Transfer Protocol September 1997 + + +3.5.2 Speaker State Diagram + o-----------------o o-----------------o + | IDLE LISTENER | | IDLE | + | CD_RQ just sent | | see (0) | + | see (3), Listen | | Idle | + | State Diagram | | State Diagram | + o-----------------o o-----------------o + A A + | | + decision decision decision + F_CD_RQ +----------------+ F_RELEASE_RQ + | | F_EERP_RQ | | + o=================o | o-----------------o + | |<-------------+ | IDLE SPEAKER | + | IDLE SPEAKER | | (4) | + | (1) | decision | CD_IND | + | |<-----------------------------| just received | + o=================o F_EERP_RQ o-----------------o + A A | | + | | | decision and P1 decision and P1 | + | | +-----------------+ +---------------------+ + | | F_START_FILE_RQ | | F_START_FILE_RQ + | | V V + | | o---------------o + | | f_file_start_cf(-) | | + | +----------------------| OPENING | + | | | + | o---------------o + | | + f_file_close_cf(-) f_start_file_cf(+) + and not P2 | + | V + o---------------o o---------------o + | | | |------------------+ + | CLOSING | | DATA TRANSFER | record to send | + | | | |<-----------------+ + o---------------o o---------------o F_DATA_RQ + | A | + | | end of file | + | +-------------------+ + | F_CLOSE_FILE_RQ + | o-----------------o + | f_close_file(+) and P2 | IDLE LISTENER | + +--------------------------------------------->| see (2), Listen | + | State Diagram | + Predicates: o-----------------o + P1: Mode = Both or (Mode = Sender-Only) + P2: Negative confirmation or (positive confirmation, Speaker = YES) + + + +Nash Informational [Page 20] + +RFC 2204 ODETTE File Transfer Protocol September 1997 + + +3.5.3 Listener State Diagram + o-----------------o o-----------------o + | IDLE SPEAKER | | IDLE | + | CD_IND just | | | + | received see(4) | | see (0) | + | Speaker State | | Idle | + | Diagram | | State Diagram | + o-----------------o o-----------------o + A A + | | + decision f_eerp_ind decision + F_CD_IND +--------------+ F_RELEASE_IND + | | | | + o=================o | o-----------------o + | |<-----------+ f_eerp_ind | | + | |<-----------------------------| IDLE LISTENER | + | IDLE LISTENER | | (3) | + | | f_start_file_ind | CD_RQ | + | (2) | and not p2 | just sent | + | |---------------------+ | | + o=================o F_START_FILE_RS(-) | o-----------------o + A | A A | | | + | | | +-----------------------+ | | + | | | | | + | | | f_start_file_ind and not p2 | | + | | +--------------------------------------+ | + | | F_START_FILE_RS(-) | + | | | + | | f_start_file_ind f_start_file_ind | + | | and p2 and p2 | + | +-------------------------------+ +------------------+ + | F_START_FILE_RS(+) | | F_START_FILE_RS(+) + | V V + | o---------------o + | f_close_file_ind and not p1 | DATA |-------------+ + +------------------------------| TRANSFER | | + F_CLOSE_FILE_RS(-) | |<------------+ + o---------------o F_DATA_IND + o---------------o | + | IDLE SPEAKER | f_close_file_ind and p1 | + | see (1), Spkr |<--------------------------+ + | State Diagram | F_CLOSE_FILE_RS(+) + o---------------o + + Predicates: + P1: (decision to send F_CLOSE_FILE_RS(+)) and + (decision to set Speaker = yes in F_CLOSE_FILE_RS(+)) + P2: (decision to send F_START_FILE_RS(+)) + + + +Nash Informational [Page 21] + +RFC 2204 ODETTE File Transfer Protocol September 1997 + + +4. Protocol Specification + +4.1 Overview + + The ODETTE-FTP protocol is divided into five operating phases. + + Start Session + Start File + Data Transfer + End File + End Session + + After the End File phase an ODETTE-FTP entity may enter a new Start + File phase or terminate the session via the End Session phase. + + ODETTE-FTP peers communicate by sending and receiving messages in + Exchange Buffers via the Network Service. Each Exchange Buffer + contains one of the following commands. + + SSRM Start Session Ready Message + SSID Start Session + SFID Start File + SFPA Start File Positive Answer + SFNA Start File Negative Answer + DATA Data + CDT Set Credit + EFID End File + EFPA End File Positive Answer + EFNA End File Negative Answer + ESID End Session + CD Change Direction + EERP End to End Response + RTR Ready To Receive + + The remainder of this section describes the protocol flows. Section + five details the command formats. + +4.2 Start Session Phase + + The Start Session phase is entered immediately after the network + connection has been established. + +4.2.1 Entity Definition + + The ODETTE-FTP entity that took the initiative to establish the + network connection becomes the Initiator. It's peer becomes the + Responder. + + + + +Nash Informational [Page 22] + +RFC 2204 ODETTE File Transfer Protocol September 1997 + + +4.2.2 Protocol Sequence + + The first message must be sent by the Responder. + + 1. Initiator <-------------SSRM -- Responder Ready Message + -- SSID ------------> Identification + <------------ SSID -- Identification + +4.3 Start File Phase + +4.3.1 Entity Definition + + The Initiator from the Start Session phase is designated the Speaker + while the Responder becomes the Listener. The roles are reversed by + the Speaker sending a Change Direction command to the Listener. + +4.3.2 Protocol Sequence + + 1. Speaker -- SFID ------------> Listener Start File + <------------ SFPA -- Answer YES + + + 2. Speaker -- SFID ------------> Listener Start File + <------------ SFNA -- Answer NO + Go To 1 + + Note: The User Monitor should take steps to prevent a loop + situation occurring. + + 2. Speaker -- CD --------------> Listener Change Direction + Listener <------------ EERP -- Speaker End to End Response + -- RTR -------------> Ready to Receive + <------------ SFID -- Start File + +4.3.3 Restart Facilities + + The Start File command includes a count allowing the restart of an + interrupted transmission to be negotiated. If restart facilities are + not available the restart count must be set to zero. The sender will + start with the lowest record count + 1. + +4.3.4 Broadcast Facilities + + The destination in a Start File command can be specified as follows. + + 1. An explicitly defined destination. + + + + + +Nash Informational [Page 23] + +RFC 2204 ODETTE File Transfer Protocol September 1997 + + + 2. A group destination that allows an intermediate location to + broadcast the Virtual File to multiple destinations. + + The Listener will send a negative answer to the Speaker when the + destination is not known. + +4.3.5 Priority + + The prioritisation of files for transmission is left to the local + implementation. To allow some flexibility, a change direction + mechanism is available in the End File phase. + +4.3.6 End To End Response (EERP) + + The End to End Response (EERP) command notifies the originator of a + Virtual File that it has been successfully delivered to it's final + destination. This allows the originator to perform house keeping + tasks such as deleting copies of the delivered data. + + A Response Command must be sent from the location performing the + final processing or distribution of the data to the originator. The + Response is mandatory and may be sent in the same or in any + subsequent session. + + When an intermediate location broadcasts or distributes a Virtual + File it must receive a Response command from all the locations to + which it forwarded the data before sending it's own Response. This + ensures that the Response received by the Virtual File's originator + accounts for all the destination locations. An intermediate location + therefore needs to track the status of files it processes over time. + + Example: Point to Point + + Location A sends file Ba to Location B which will send an EERP to + location A after it successfully receives the file. + + o----------o o-----------o + | Loc. A |----------- S1 ---------->| Loc. B | + | | | | + | [Ba] |<---------- R2 -----------| [Ba] | + +----------o o-----------o + + Key: + S - File Transfer R - Response EERP [Ba] - File for B from A + + + + + + + +Nash Informational [Page 24] + +RFC 2204 ODETTE File Transfer Protocol September 1997 + + + Example: Data distribution + + Location A sends a Virtual File containing data for distribution to + locations B and C via clearing centres E1 and E2. Clearing centre E1 + must wait for a response from E2 (for file Ba) and location C before + it sends it's response, R8, to location A. Clearing centre E2 can + only send response R7 to E1 when location B acknowledges file Ba with + response R6. + + o---------o o---------o o---------o o---------o + | Loc. A |-- S1 ->| Loc. E1 |-- S2 ->| Loc. E2 |-- S5 ->| Loc. B | + | | | | | | | | + | [Ba,Ca] |<- R8 --| [Ba,Ca] |<- R7 --| [Ba] |<- R6 --| [Ba] | + o---------o o---------o o---------o o---------o + A | + | | o---------o + | +----- S3 ->| Loc. C | + | | | + +--------- R4 --| [Ca] | + o---------o + + Example: Data collection + + Locations A and B send files Ca and Cb to clearing centre E1 which + forwards both files to location C in a single Virtual File. When it + receives response R4 from C, clearing centre E1 sends response R5 to + location A and R6 to location B. + + o---------o o---------o o---------o + | Loc. A |-- S1 ->| Loc. E1 |-- S3 ->| Loc. C | + | | | | | | + | [Ca] |<- R5 --| [Ca,Cb] |<- R4 --| [Ca,Cb] | + o---------o o---------o o---------o + A | + o---------o | | + | Loc. B |-- S2 -----+ | + | | | + | [Cb] |<- R6 ---------+ + o---------o + +4.3.7 Ready To Receive Command (RTR) + + In order to avoid congestion between two adjacent nodes caused by a + continuous flow of EERP's, a Ready To Receive (RTR) command is + provided. The RTR acts as an EERP acknowledgement for flow control + but has no end-to-end significance. + + + + + +Nash Informational [Page 25] + +RFC 2204 ODETTE File Transfer Protocol September 1997 + + + Speaker -- EERP ------------> Listener End to End Response + <------------- RTR -- Ready to Receive + -- EERP ------------> End to End Response + <------------- RTR -- Ready to Receive + -- SFID ------------> Start File + or + -- CD --------------> Exchange the turn + + After sending an EERP, the Speaker must wait for an RTR before + sending any other commands. + +4.4 Data Transfer Phase + + Virtual File data flows from the Speaker to the Listener during the + Data Transfer phase which is entered after the Start File phase. + +4.4.1 Protocol Sequence + + To avoid congestion at the protocol level a flow control mechanism is + provided via the Credit (CDT) command. + + A Credit limit is negotiated in the Start Session phase, this + represents the number of Data Exchange Buffers that the Speaker may + send before it is obliged to wait for a Credit command from the + Listener. + + The available credit is initially set to the negotiated value by the + Start File positive answer, which acts as an implicit Credit command. + The Speaker decreases the available credit count by one for each data + buffer sent to the Listener. + + When the available credit is exhausted, the Speaker must wait for a + Credit command from the Listener otherwise a protocol error will + occur and the session will be aborted. + + The Listener should endeavour to send the Credit command without + delay to prevent the Speaker blocking. + + 1. Speaker -- SFID ------------> Listener Start File + <------------ SFPA -- Answer YES + + + + + + + + + + + +Nash Informational [Page 26] + +RFC 2204 ODETTE File Transfer Protocol September 1997 + + + 2. If the Credit Value is set to 2 + + Speaker -- Data ------------> Listener Start File + -- Data ------------> + <------------- CDT -- Set Credit + -- Data ------------> + -- EFID ------------> End File + +4.5 End File Phase + +4.5.1 Protocol Sequence + + The Speaker notifies the Listener that it has finished sending a + Virtual File by sending an End File (EFID) command. The Listener + replies with a positive or negative End File command and has the + option to request a Change Direction command from the Speaker. + + 1. Speaker -- EFID ------------> Listener End File + <------------ EFPA -- Answer YES + + + 2. Speaker -- EFID ------------> Listener End File + <------------ EFPA -- Answer YES + CD + -- CD --------------> Change Direction + Listener <------------ EERP -- Speaker End to End Response + -------------- RTR -> Ready to Receive + Go to Start File Phase + + + 3. Speaker -- EFID ------------> Listener End File + <------------ EFNA -- Answer NO + +4.6 End Session Phase + +4.6.1 Protocol Sequence + + The Speaker terminates the session by sending an End Session (ESID) + command. + + 1. Speaker -- EFID ------------> Listener End File + <------------ EFPA -- Answer YES + -- CD --------------> Change Direction + Listener <------------ ESID -- Speaker End Session + + + + + + + + +Nash Informational [Page 27] + +RFC 2204 ODETTE File Transfer Protocol September 1997 + + +4.7 Problem Handling + + Error detection and handling should be done as close as possible to + the problem. This aids problem determination and correction. Each + layer of the reference model is responsible for it's own error + handling. + + ODETTE-FTP can detect protocol errors through the construction of + it's state machine, and uses activity timers to detect session hang + conditions. These mechanisms are separate from the End to End + controls. + +4.7.1 Protocol Errors + + If a protocol error occurs the session will be terminated and + application activity aborted. Both locations enter the IDLE state. + +4.7.2 Timers + + To protect against application and network hang conditions ODETTE-FTP + uses activity timers for all situations where a response is required. + The timers and actions to be taken if they expire are described in + section 8, the Protocol State Machine. + +4.7.3 Clearing Centres + + The use of clearing centres introduces the possibility of errors + occurring as a result of data processing activities within the + centre. Such errors are not directly related to ODETTE-FTP or the + communication network and are therefore outside the scope of this + specification. + +5. Commands and Formats + + ODETTE-FTP entities communicate via Exchange Buffers. The Command + Exchange Buffers are described below. Virtual File data is carried + in Data Exchange Buffers which are described in Section 6. + +5.1 Conventions + +5.1.1 Representation unit: + + The basic unit of information is an octet, containing eight bits. + +5.1.2 Values and Characters: + + The ISO 646 IRV 7-bit coded character set [ISO-646] is used to encode + constants and strings within command exchange buffers. + + + +Nash Informational [Page 28] + +RFC 2204 ODETTE File Transfer Protocol September 1997 + + +5.2 Commands + + A Command Exchange Buffer contains a single command starting at the + beginning of the buffer. Commands and data are never mixed within an + Exchange Buffer. Each command has a fixed length and can not be + compressed. + + Components: + + 1. Command identifier: + + The first octet of an Exchange Buffer is the Command Identifier + and defines the format of the buffer. + + 2. Parameter(s): + + Command parameters are stored in fixed fields within a Command + Exchange Buffer. All values are required. + +5.3 Command Formats + + The ODETTE-FTP commands are described below using the following + definitions. + + Position (Pos.) + + Field offset within the command exchange buffer, relative to a + zero origin. + + Field + + The name of the field. + + Description + + A description of the field. + + Format + + F - A field containing fixed values. All allowable values for + the field are enumerated in the command definition. + + V - A field with variable values within a defined range. For + example the SFIDFSIZ field may contain any integer value + between 0000000 and 9999999. + + X(n) - An alphanumeric field of length n octets. + + + + +Nash Informational [Page 29] + +RFC 2204 ODETTE File Transfer Protocol September 1997 + + + 9(n) - A numeric field of length n octets. + + All attributes are in character format. + + A String contains alphanumeric characters from the following set: + + The numerals: 0 to 9 + The upper case letters: A to Z + The following special set: / - . & ( ) space. + + Space is not allowed as an embedded character. + + Numeric fields are always right justified and left padding with + zeros must be done when needed. + +5.3.1 SSRM - Start Session Ready Message + + o-------------------------------------------------------------------o + | SSRM Start Session Ready Message | + | | + | Start Session Phase Initiator <---- Responder | + |-------------------------------------------------------------------| + | Pos | Field | Description | Format | + |-----+-----------+---------------------------------------+---------| + | 0 | SSRMCMD | SSRM Command, 'I' | F X(1) | + | 1 | SSRMMSG | Ready Message, 'ODETTE FTP READY ' | F X(17) | + | 18 | SSRMCR | Carriage Return | F X(1) | + o-------------------------------------------------------------------o + + SSRMCMD Command Code Character + + Value: 'I' SSRM Command identifier. + + SSRMMSG Ready Message String(17) + + Value: 'ODETTE FTP READY ' + + SSRMCR Carriage Return Character + + Value: Character with hex value '0D' or '8D'. + + + + + + + + + + + +Nash Informational [Page 30] + +RFC 2204 ODETTE File Transfer Protocol September 1997 + + +5.3.2 SSID - Start Session + + o-------------------------------------------------------------------o + | SSID Start Session | + | | + | Start Session Phase Initiator <---> Responder | + |-------------------------------------------------------------------| + | Pos | Field | Description | Format | + |-----+-----------+---------------------------------------+---------| + | 0 | SSIDCMD | SSID Command 'X' | F X(1) | + | 1 | SSIDLEV | Protocol Release Level | F 9(1) | + | 2 | SSIDCODE | Initiator's Identification Code | V X(25) | + | 27 | SSIDPSWD | Initiator's Password | V X(8) | + | 35 | SSIDSDEB | Exchange Buffer Size | V 9(5) | + | 40 | SSIDSR | Send / Receive Capabilities (S/R/B) | F X(1) | + | 41 | SSIDCMPR | Compression Indicator (Y/N) | F X(1) | + | 42 | SSIDREST | Restart Indicator (Y/N) | F X(1) | + | 43 | SSIDSPEC | Special Logic Indicator (N) | F X(1) | + | 44 | SSIDCRED | Credit | V 9(3) | + | 47 | SSIDRSV1 | Reserved | F X(5) | + | 52 | SSIDUSER | User Data | V X(8) | + | 60 | SSIDCR | Carriage Return | F X(1) | + o-------------------------------------------------------------------o + + SSIDCMD Command Code Character + + Value: 'X' SSID Command identifier. + + SSIDLEV Protocol Release Level Numeric(1) + + Value: '1' ODETTE-FTP protocol release level 1. + + Future release levels will have higher numbers. The + protocol release level is negotiable, with the lowest level + being selected. + + SSIDCODE Initiator's Identification Code String(25) + + Format: See Identification Code (Section 5.4) + + Uniquely identifies the Initiator (sender) participating + in the ODETTE-FTP session. + + SSIDPSWD Password String(8) + + Key to authenticate the sender. Assigned by bilateral + agreement. + + + + +Nash Informational [Page 31] + +RFC 2204 ODETTE File Transfer Protocol September 1997 + + + SSIDSDEB Exchange Buffer Size Numeric(5) + + Minimum: 128 + Maximum: 99999 + + The length, in octets, of the largest Exchange Buffer that + can be accepted by the location. The length includes the + command octet but does not include the Stream Transmission + Header. + + After negotiation the smallest size will be selected. + + SSIDSR Send / Receive Capabilities Character + + Value: 'S' Location can only send files. + 'R' Location can only receive files. + 'B' Location can both send and receive files. + + Sending and receiving will be serialised during the + session, so parallel sessions will not take place. + + An error occurs if adjacent locations both specify the send + or receive capability. + + SSIDCMPR Compression Indication Character + + Value: 'Y' The location can handle compressed data. + 'N' The location can not handle compressed data. + + Compression is only used if supported by both locations. + The compression mechanism is described in Section 6.2 + + SSIDREST Restart Indication Character + + Value: 'Y' The location can handle the restart of a partially + transmitted file. + 'N' The location can not restart a file. + + SSIDSPEC Special Logic Indication Character + + Value: 'N' Only valid value for TCP. + + The Special Logic extensions are only useful in an X.25 + environment and are not supported for TCP/IP. + + + + + + + +Nash Informational [Page 32] + +RFC 2204 ODETTE File Transfer Protocol September 1997 + + + SSIDCRED Credit Numeric(3) + + Maximum: 999 + + The number of consecutive Data Exchange Buffers sent by the + Speaker before it must wait for a Credit (CDT) command from + the Listener. + + The credit value is only applied to Data flow in the Data + Transfer phase. + + The Speaker's available credit is initialised to SSIDCRED + when it receives a Start File Positive Answer (SFPA) + command from the Listener. It is zeroed by the End File + (EFID) command. + + After negotiation, the smallest size must be selected in + the answer of the Responder, otherwise a protocol error + will abort the session. + + Negotiation of the "credit-window-size" parameter. + + Window Size m -- SSID ------------> + <------------ SSID -- Window Size n + (n less or equal m) + Note: negotiated value will be "n". + + SSIDRSV1 Reserved String(5) + + This field is reserved for future use. + + SSIDUSER User Data String(8) + + May be used by the ODETTE-FTP in any way. If unused it + should be initialised to spaces. It is expected that a + bilateral agreement exists as to the meaning of the data. + + SSIDCR Carriage Return Character + + Value: Character with hex value '0D' or '8D'. + + + + + + + + + + + +Nash Informational [Page 33] + +RFC 2204 ODETTE File Transfer Protocol September 1997 + + +5.3.3 SFID - Start File + o-------------------------------------------------------------------o + | SFID Start File | + | | + | Start File Phase Speaker ----> Listener | + |-------------------------------------------------------------------| + | Pos | Field | Description | Format | + |-----+-----------+---------------------------------------+---------| + | 0 | SFIDCMD | SFID Command, 'H' | F X(1) | + | 1 | SFIDDSN | Virtual File Dataset Name | V X(26) | + | 27 | SFIDRSV1 | Reserved | F X(9) | + | 36 | SFIDDATE | Virtual File Date stamp, (YYMMDD) | V X(6) | + | 42 | SFIDTIME | Virtual File Time stamp, (HHMMSS) | V X(6) | + | 48 | SFIDUSER | User Data | V X(8) | + | 56 | SFIDDEST | Destination | V X(25) | + | 81 | SFIDORIG | Originator | V X(25) | + | 106 | SFIDFMT | File Format, (F/V/U/T) | F X(1) | + | 107 | SFIDLRECL | Maximum Record Size | V 9(5) | + | 112 | SFIDFSIZ | File Size, 1K blocks | V 9(7) | + | 119 | SFIDREST | Restart Position | V 9(9) | + o-------------------------------------------------------------------o + SFIDCMD Command Code Character + + Value: 'H' SFID Command identifier. + + SFIDDSN Virtual File Dataset Name String(26) + + Dataset name of the Virtual File being transferred, + assigned by bilateral agreement. + + No general structure is defined for this attribute. + + See Virtual Files - Identification (Section 1.5.2) + + SFIDRSV1 Reserved String(9) + + This field is reserved for future use. + + SFIDDATE Virtual File Date stamp String(6) + + Format: 'YYMMDD' 6 decimal digits representing the year, month + and day respectively [ISO-8601]. + + Date stamp assigned by the Virtual File's Originator + indicating when the file was made available for + transmission. + + See Virtual Files - Identification (Section 1.5.2) + + + +Nash Informational [Page 34] + +RFC 2204 ODETTE File Transfer Protocol September 1997 + + + SFIDTIME Virtual File Time stamp String(6) + + Format: 'HHMMSS' 6 decimal digits representing hours, minutes + and seconds respectively [ISO-8601]. + + Time stamp assigned by the Virtual File's Originator + indicating when the file was made available for + transmission. + + See Virtual Files - Identification (Section 1.5.2) + + SFIDUSER User Data String(8) + + May be used by the ODETTE-FTP in any way. If unused it + should be initialised to spaces. It is expected that a + bilateral agreement exists as to the meaning of the data. + + SFIDDEST Destination String(25) + + Format: See Identification Code (Section 5.4) + + The Final Recipient of the Virtual File. + + This is the location that will look into the Virtual File + content and perform mapping functions. It is also the + location that creates the End to End Response (EERP) + command for the received file. + + SFIDORIG Originator String(25) + + Format: See Identification Code (Section 5.4) + + Originator of the Virtual File. + It is the location that created (mapped) the data for + transmission. + + SFIDFMT File Format Character + + Value: 'F' Fixed format binary file. + 'V' Variable format binary file. + 'U' Unstructured binary file. + 'T' Text + + Virtual File format. Used to calculate the restart + position. (Section 1.5.3) + + + + + + +Nash Informational [Page 35] + +RFC 2204 ODETTE File Transfer Protocol September 1997 + + + SFIDLRECL Maximum Record Size Numeric(5) + + Maximum: 99999 + + Length in octets of the longest logical record which may be + transferred to a location. Only user data is included. + + If SFIDFMT is 'T' or 'U' then this attribute must be set to + '00000'. + + SFIDFSIZ File Size Numeric(7) + + Maximum: 9999999 + + Space in 1K (1024 octet) blocks required at the Originator + location to store the Virtual File. + + This parameter is intended to provide only a good estimate + of the Virtual File size. + + SFIDREST Restart Position Numeric(9) + + Maximum: 999999999 + + Virtual File restart position. + + The count represents the: + - Record Number if SSIDFMT is 'F' or 'V'. + - File offset in 1K (1024 octet) blocks if SSIDFMT is + 'U' or 'T'. + + The count will express the transmitted user data (i.e. + before compression, header not included). + + After negotiation between adjacent locations, + retransmission will start at the lowest value. + +5.3.4 SFPA - Start File Positive Answer + o-------------------------------------------------------------------o + | SFPA Start File Positive Answer | + | | + | Start File Phase Speaker <---- Listener | + |-------------------------------------------------------------------| + | Pos | Field | Description | Format | + |-----+-----------+---------------------------------------+---------| + | 0 | SFPACMD | SFPA Command, '2' | F X(1) | + | 1 | SFPAACNT | Answer Count | V 9(9) | + o-------------------------------------------------------------------o + + + +Nash Informational [Page 36] + +RFC 2204 ODETTE File Transfer Protocol September 1997 + + + SFPACMD Command Code Character + + Value: '2' SFPA Command identifier. + + SFPAACNT Answer Count Numeric(9) + + The Listener must enter a count lower or equal to the + restart count specified by the Speaker in the Start File + (SFID) command. The count expresses the received user + data. If restart facilities are not available, a count of + zero must be specified. + +5.3.5 SFNA - Start File Negative Answer + + o-------------------------------------------------------------------o + | SFNA Start File Negative Answer | + | | + | Start File Phase Speaker <---- Listener | + |-------------------------------------------------------------------| + | Pos | Field | Description | Format | + |-----+-----------+---------------------------------------+---------| + | 0 | SFNACMD | SFNA Command, '3' | F X(1) | + | 1 | SFNAREAS | Answer Reason | F 9(2) | + | 3 | SFNARRTR | Retry Indicator, (Y/N) | F X(1) | + o-------------------------------------------------------------------o + + SFNACMD Command Code Character + + Value: '3' SFNA Command identifier. + + SFNAREAS Answer Reason Numeric(2) + + Value: '01' Invalid filename. + '02' Invalid destination. + '03' Invalid origin. + '04' Storage record format not supported. + '05' Maximum record length not supported. + '06' File size is too big. + '10' Invalid record count. + '11' Invalid byte count. + '12' Access method failure. + '13' Duplicate file. + '99' Unspecified reason. + + Reason why transmission can not proceed. + + + + + + +Nash Informational [Page 37] + +RFC 2204 ODETTE File Transfer Protocol September 1997 + + + SFNARRTR Retry Indicator Character + + Value: 'N' Transmission should not be retried. + 'Y' The transmission may be retried latter. + + This parameter is used to advise the Speaker if it should + retry at a latter point in time due to a temporary + condition at the Listener site, such as a lack of storage + space. It should be used in conjunction with the Answer + Reason code (SFNAREAS). + + An invalid file name error code may be the consequence of a + problem in the mapping of the Virtual File on to a real + file. Such problems cannot always be resolved immediately. + It it therefore recommended that when a SFNA with Retry = Y + is received the User Monitor attempts to retransmit the + relevant file in a subsequent session. + +5.3.6 DATA - Data Exchange Buffer + + o-------------------------------------------------------------------o + | DATA Data Exchange Buffer | + | | + | Data Transfer Phase Speaker ----> Listener | + |-------------------------------------------------------------------| + | Pos | Field | Description | Format | + |-----+-----------+---------------------------------------+---------| + | 0 | DATACMD | DATA Command, 'D' | F X(1) | + | 1 | DATABUF | Data Exchange Buffer payload | V X(n) | + o-------------------------------------------------------------------o + + DATACMD Command Code Character + + Value: 'D' DATA Command identifier. + + DATABUF Data Exchange Buffer payload String(n) + + Variable length buffer containing the data payload. The + Data Exchange Buffer is described in Section 6. + + + + + + + + + + + + +Nash Informational [Page 38] + +RFC 2204 ODETTE File Transfer Protocol September 1997 + + +5.3.7 CDT - Set Credit + + o-------------------------------------------------------------------o + | CDT Set Credit | + | | + | Data Transfer Phase Speaker <---- Listener | + |-------------------------------------------------------------------| + | Pos | Field | Description | Format | + |-----+-----------+---------------------------------------+---------| + | 0 | CDTCMD | CDT Command, 'C' | F X(1) | + | 1 | CDTRSV1 | Reserved | F X(2) | + o-------------------------------------------------------------------o + + CDTCMD Command Code Character + + Value: 'C' CDT Command identifier. + + CDTRSV1 Reserved String(2) + + This field is reserved for future use. + +5.3.8 EFID - End File + + o-------------------------------------------------------------------o + | EFID End File | + | | + | End File Phase Speaker ----> Listener | + |-------------------------------------------------------------------| + | Pos | Field | Description | Format | + |-----+-----------+---------------------------------------+---------| + | 0 | EFIDCMD | EFID Command, 'T' | F X(1) | + | 1 | EFIDRCNT | Record Count | V 9(9) | + | 10 | EFIDUCNT | Unit Count | V 9(12) | + o-------------------------------------------------------------------o + + EFIDCMD Command Code Character + + Value: 'T' EFID Command identifier. + + EFIDRCNT Record Count Numeric(9) + + Maximum: 999999999 + + For SSIDFMT 'F' or 'V' the exact record count. + For SSIDFMT 'U' or 'T' zeros. + + + + + + +Nash Informational [Page 39] + +RFC 2204 ODETTE File Transfer Protocol September 1997 + + + The count will express the real size of the file (before + compression, header not included). The total count is + always used, even during restart processing. + + EFIDUCNT Unit Count Numeric(12) + + Maximum: 999999999999 + + Exact number of units (octets) transmitted. + + The count will express the real size of the file. The + total count is always used, even during restart processing. + +5.3.9 EFPA - End File Positive Answer + o-------------------------------------------------------------------o + | EFPA End File Positive Answer | + | | + | End File Phase Speaker <---- Listener | + |-------------------------------------------------------------------| + | Pos | Field | Description | Format | + |-----+-----------+---------------------------------------+---------| + | 0 | EFPACMD | EFPA Command, '4' | F X(1) | + | 1 | EFPACD | Change Direction Indicator, (Y/N) | F X(1) | + o-------------------------------------------------------------------o + + EFPACMD Command Code Character + + Value: '4' EFPA Command identifier. + + EFPACD Change Direction Indicator Character + + Value: 'N' Change direction not requested. + 'Y' Change direction requested. + + This parameter allows the Listener to request a Change + Direction (CD) command from the Speaker. + +5.3.10 EFNA - End File Negative Answer + o-------------------------------------------------------------------o + | EFNA End File Negative Answer | + | | + | End File Phase Speaker <---- Listener | + |-------------------------------------------------------------------| + | Pos | Field | Description | Format | + |-----+-----------+---------------------------------------+---------| + | 0 | EFNACMD | EFNA Command, '5' | F X(1) | + | 1 | EFNAREAS | Answer Reason | F 9(2) | + o-------------------------------------------------------------------o + + + +Nash Informational [Page 40] + +RFC 2204 ODETTE File Transfer Protocol September 1997 + + + EFNACMD Command Code Character + + Value: '5' EFNA Command identifier. + + EFNAREAS Answer Reason Numeric(2) + + Value: '01' Invalid filename. + '02' Invalid destination. + '03' Invalid origin. + '04' Storage record format not supported. + '05' Maximum record length not supported. + '06' File size is too big. + '10' Invalid record count. + '11' Invalid byte count. + '12' Access method failure. + '13' Duplicate file. + '99' Unspecified reason. + + Reason why transmission can not proceed. + +5.3.11 ESID - End Session + + o-------------------------------------------------------------------o + | ESID End Session | + | | + | End Session Phase Speaker ----> Listener | + |-------------------------------------------------------------------| + | Pos | Field | Description | Format | + |-----+-----------+---------------------------------------+---------| + | 0 | ESIDCMD | ESID Command, 'F' | F X(1) | + | 1 | ESIDREAS | Reason Code | F 9(2) | + | 3 | ESIDCR | Carriage Return | F X(1) | + o-------------------------------------------------------------------o + + ESIDCMD Command Code Character + + Value: 'F' ESID Command identifier. + + ESIDREAS Reason Code Numeric(2) + + Value '00' Normal session termination + + '01' Command not recognised + + An Exchange Buffer contains an invalid command code + (1st octet of the buffer). + + + + + +Nash Informational [Page 41] + +RFC 2204 ODETTE File Transfer Protocol September 1997 + + + '02' Protocol violation + + An Exchange Buffer contains an invalid command for + the current state of the receiver. + + '03' User code not known + + A Start Session (SSID) command contains an unknown or + invalid Identification Code. + + '04' Invalid password + + A Start Session (SSID) command contained an invalid + password. + + '05' Local site emergency close down + + The local site has entered an emergency close down + mode. Communications are being forcibly terminated. + + '06' Command contained invalid data + + A field within a Command Exchange buffer contains + invalid data. + + '07' Exchange Buffer size error + + The length of the Exchange Buffer as determined by + the Stream Transmission Header is different to the + length implied by the Command Code. + + '08' Resources not available + + The request for connection has been denied due to a + resource shortage. The connection attempt should be + retried later. + + '09' Time out + + '10' Mode or capabilities incompatible + + '99' Unspecified Abort code + + An error was detected for which no specific code is + defined. + + + + + + +Nash Informational [Page 42] + +RFC 2204 ODETTE File Transfer Protocol September 1997 + + + ESIDCR Carriage Return Character + + Value: Character with hex value '0D' or '8D'. + +5.3.12 CD - Change Direction + + o-------------------------------------------------------------------o + | CD Change Direction | + | | + | Start File Phase Speaker ----> Listener | + | End File Phase Speaker ----> Listener | + | End Session Phase Initiator <---> Responder | + |-------------------------------------------------------------------| + | Pos | Field | Description | Format | + |-----+-----------+---------------------------------------+---------| + | 0 | CDCMD | CD Command, 'R' | F X(1) | + o-------------------------------------------------------------------o + + CDCMD Command Code Character + + Value: 'R' CD Command identifier. + +5.3.13 EERP - End to End Response + + o-------------------------------------------------------------------o + | EERP End to End Response | + | | + | Start File Phase Speaker ----> Listener | + | End File Phase Speaker ----> Listener | + |-------------------------------------------------------------------| + | Pos | Field | Description | Format | + |-----+-----------+---------------------------------------+---------| + | 0 | EERPCMD | EERP Command, 'E' | F X(1) | + | 1 | EERPDSN | Virtual File Dataset Name | V X(26) | + | 27 | EERPRSV1 | Reserved | F X(9) | + | 36 | EERPDATE | Virtual File Date stamp, (YYMMDD) | V X(6) | + | 42 | EERPTIME | Virtual File Time stamp, (HHMMSS) | V X(6) | + | 48 | EERPUSER | User Data | V X(8) | + | 56 | EERPDEST | Destination | V X(25) | + | 81 | EERPORIG | Originator | V X(25) | + o-------------------------------------------------------------------o + + EERPCMD Command Code Character + + Value: 'E' EERP Command identifier. + + + + + + +Nash Informational [Page 43] + +RFC 2204 ODETTE File Transfer Protocol September 1997 + + + EERPDSN Virtual File Dataset Name String(26) + + Dataset name of the Virtual File being transferred, + assigned by bilateral agreement. + + No general structure is defined for this attribute. + See Virtual Files - Identification (Section 1.5.2) + + EERPRSV1 Reserved String(9) + + This field is reserved for future use. + + EERPDATE Virtual File Date stamp String(6) + + Format: 'YYMMDD' 6 decimal digits representing the year, month + and day respectively [ISO-8601]. + + Date stamp assigned by the Virtual File's Originator + indicating when the file was made available for + transmission. + + See Virtual Files - Identification (Section 1.5.2) + + EERPTIME Virtual File Time stamp String(6) + + Format: 'HHMMSS' 6 decimal digits representing hours, minutes + and seconds respectively [ISO-8601]. + + Time stamp assigned by the Virtual File's Originator + indicating when the file was made available for + transmission. + + See Virtual Files - Identification (Section 1.5.2) + + EERPUSER User Data String(8) + + May be used by the ODETTE-FTP in any way. If unused it + should be initialised to spaces. It is expected that a + bilateral agreement exists as to the meaning of the data. + + EERPDEST Destination String(25) + + Format: See Identification Code (Section 5.4) + + Originator of the Virtual File. + + This is the location that created (mapped) the data for + transmission. + + + +Nash Informational [Page 44] + +RFC 2204 ODETTE File Transfer Protocol September 1997 + + + EERPORIG Originator String(25) + + Format: See Identification Code (Section 5.4) + + Final Recipient of the Virtual File. + This is the location that will look into the Virtual File + content and perform mapping functions. It is also the + location that creates the EERP for the received file. + +5.3.14 RTR - Ready To Receive + + o-------------------------------------------------------------------o + | RTR Ready To Receive | + | | + | Start File Phase Initiator <---- Responder | + | End File Phase Initiator <---- Responder | + |-------------------------------------------------------------------| + | Pos | Field | Description | Format | + |-----+-----------+---------------------------------------+---------| + | 0 | RTRCMD | RTR Command, 'P' | F X(1) | + o-------------------------------------------------------------------o + + RTRCMD Command Code Character + + Value: 'P' RTR Command identifier. + +5.4 Identification Code + + The Initiator (sender) and Responder (receiver) participating in an + ODETTE-FTP session are uniquely identified by an Identification Code + based on [ISO 6523], Structure for the Identification of + Organisations (SIO). The locations are considered to be adjacent for + the duration of the transmission. + + The SIO has the following format. + + o-------------------------------------------------------------------o + | Pos | Field | Description | Format | + |-----+-----------+---------------------------------------+---------| + | 0 | SIOOID | ODETTE Identifier | F X(1) | + | 1 | SIOICD | International Code Designator | V 9(4) | + | 5 | SIOORG | Organisation Code | V X(14) | + | 19 | SIOCSA | Computer Sub-Address | V X(6) | + o-------------------------------------------------------------------o + SIOOID ODETTE Identifier Character + + Value: 'O' Indicates ODETTE assigned Organisation Identifier. + Other values may be used for non-ODETTE codes. + + + +Nash Informational [Page 45] + +RFC 2204 ODETTE File Transfer Protocol September 1997 + + + SIOICD International Code Designator String(4) + + A code forming part of the Organisation Identifier. + + SIOORG Organisation Code String(14) + + A code forming part of the Organisation Identifier. This + field may contain the letters A to Z, the digits 0 to 9, + apace and hyphen characters. + + SIOCSA Computer Sub-Address String(6) + + A locally assigned address which uniquely identifies a + system within an organisation (defined by an Organisation + Identifier). + +6. ODETTE-FTP Data Exchange Buffer + +6.1 Overview + + Virtual Files are transmitted by mapping the Virtual File records + into Data Exchange Buffers, the maximum length of which was + negotiated between the ODETTE-FTP entities via the Start Session + (SSID) commands exchanged during the Start Session Phase of the + protocol. The format is based on the Network Independent File + Transfer Protocol [NIFTP]. + + Virtual File records may be of arbitrary length. A simple + compression scheme is defined for strings of repeated characters. + + An example of the use of the Data Exchange Buffer can be found in + Appendix A. + +6.2 Data Exchange Buffer Format + + For transmission of Virtual File records, data is divided into + Subrecords, each of which is preceded by a one octet Subrecord + Header. + + The Data Exchange Buffer is made up of the initial Command character, + + o-------------------------------------------------------- + | C | H | | H | | H | | / + | M | D | SUBRECORD | D | SUBRECORD | D | SUBRECORD | /_ + | D | R | | R | | R | | / + o------------------------------------------------------- + + + + + +Nash Informational [Page 46] + +RFC 2204 ODETTE File Transfer Protocol September 1997 + + + CMD + + The Data Exchange Buffer Command Character, 'D'. + + HDR + + A one octet Subrecord Header defined as follows: + + 0 1 2 3 4 5 6 7 + o-------------------------------o + | E | C | | + | o | F | C O U N T | + | R | | | + o-------------------------------o + + Bits + + 0 End of Record Flag + + Set to indicate that the next subrecord is the last + subrecord of the current record. + + Unstructured files are transmitted as a single record, in + this case the flag acts as an end of file marker. + + 1 Compression Flag + + Set to indicate that the next subrecord is compressed. + + 2-7 Subrecord Count + + The number of octets in the Virtual File represented by the + next subrecord expressed as a binary value. + + For uncompressed data this is simply the length of the + subrecord. + + For compressed data this is the number of times that the + single octet in the following subrecord must be inserted in + the Virtual File. + + As six bits are available, the next subrecord may + represent between 0 and 63 octets of the Virtual File. + +6.3 Buffer Filling Rules + + An Exchange Buffer may be any length up to the value negotiated in + the Start Session exchange. + + + +Nash Informational [Page 47] + +RFC 2204 ODETTE File Transfer Protocol September 1997 + + + Virtual File records may be concatenated within one Exchange Buffer + or split across a number of buffers. + + A subrecord is never split between two Exchange Buffers. If the + remaining space in the current Exchange Buffer is insufficient to + contain the next 'complete' subrecord one of the following strategies + should be used: + + 1. Truncate the Exchange Buffer, and put the complete + subrecord (preceded by its header octet) in a new Exchange Buffer. + + 2. Split the subrecord into two, filling the remainder of the + Exchange Buffer with the first new subrecord and starting a new + Exchange Buffer with the second. + + A record of length zero may appear anywhere in the Exchange Buffer. + + A subrecord of length zero may appear anywhere in the record and/or + the Exchange Buffer. + +7. Stream Transmission Buffer (TCP only) + +7.1 Introduction + + The ODETTE-FTP was originally designed to utilise the ISO Network + Service, specifically the X.25 specification. It relies on the fact + that the network service will preserve the sequence and boundaries of + data units transmitted through the network and that the network + service will pass the length of the data unit to the receiving + ODETTE-FTP. The TCP offers a stream based connection which does not + provide these functions. + + In order to utilise the TCP stream without disruption to the existing + ODETTE-FTP a Stream Transmission Buffer (STB) is created by adding a + Stream Transmission Header (STH) to the start of all Command and Data + Exchange Buffers before they are passed to the TCP transport service. + This allows the receiving ODETTE-FTP to recover the original Exchange + Buffers. + + STH - Stream Transmission Header + OEB - ODETTE-FTP Exchange Buffer + + The Stream Transmission Buffer comprises of a STH and OEB. + + o-----+-----------------+-----+--------------------+-----+------ + | STH | OEB | STH | OEB | STH | OEB/ + o-----+-----------------+-----+--------------------+-----+---- + + + + +Nash Informational [Page 48] + +RFC 2204 ODETTE File Transfer Protocol September 1997 + + +7.2 Stream Transmission Header Format + + The Stream Transmission Header is shown below. The fields are + transmitted from left to right. + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + |Version| Flags | Length | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Version + + Value: 0001 (binary) + + Stream Transmission Header version number. + + Flags + + Value: 0000 (binary) + + Reserved for future use. + + Length + + Range: 5 - 100003 (decimal) + + The length of the Stream Transmission Buffer (STH+OEB). + + The smallest STB is 5 octets consisting of a 4 octet header + followed by a 1 octet Exchange Buffer such as a Change Direction + (CD) command. + + The maximum Exchange Buffer length that can be negotiated is 99999 + octets (Section 5.3.2) giving a STB length of 100003. + + The length is expressed as a binary number with the most + significant bit on the left. + + It is expected that implementations of this protocol will follow the + Internet robustness principle of being conservative in what is sent + and liberal in what is accepted. + + + + + + + + + +Nash Informational [Page 49] + +RFC 2204 ODETTE File Transfer Protocol September 1997 + + +8. Protocol State Machine + +8.1 ODETTE-FTP State Machine + + The operation of an ODETTE-FTP entity is formally defined by the + State Machine presented below. There are five State and Transition + tables and for each table additional information is given in the + associated Predicate and Action lists. + + The response of an ODETTE-FTP entity to the receipt of an event is + defined by a Transition table entry indexed by the Event/State + intersection within the appropriate State table. + + Each Transition table entry defines the actions taken, events + generated and new state entered. Predicates may be used within a + table entry to select the correct response on the basis of local + information held by the entity. + + A transition table contains the following fields: + + Index(I) State transition index. + + Predicate A list of predicates used to select between different + possible transitions. The predicates are defined in the + Predicate and Action list. + + Actions A list of actions taken by the entity. The actions are + defined in the Predicate and Action list. + + Events Output events generated by the entity + + Next State The new state of the entity. + +8.2 Error Handling + + The receipt of an event in a given state may be invalid for three + reasons. + + 1. The case is impossible by construction of the state automata, + denoted 'X' in the State tables. For example a timer which has + not been set cannot run out. + + 2. The event is the result of an error in the Network Service + implementation, also denoted 'X' in the state tables. The + Network Service implementation is considered to be correct. + + 3. For all other cases the event is considered to be a User Error, + denoted "U" in the state tables. + + + +Nash Informational [Page 50] + +RFC 2204 ODETTE File Transfer Protocol September 1997 + + + The State tables define the conditions under which a User event is + valid, thus preventing the generation of a protocol error by the + ODETTE-FTP entity as a result of a User Monitor error. The reaction + of the entity to such errors is undefined and regarded as a local + implementation issue. + + The State tables also allow protocol errors due to the receipt of + invalid Exchange Buffers, to be detected. In such cases the reaction + of the entity to the error is defined. + +8.3 States + + The Command Mode is strictly a Half Duplex Flip-Flop Mode. + + A_NC_ONLY Responder, Network Connection opened + + The Responder has sent it's Ready Message (SSRM) and is + waiting for Start Session (SSID) from the Initiator. + + A_WF_CONRS Responder Waiting for F_CONNECT_RS + + The Responder has received the Initiator's Start Session + (SSID) and is waiting for a response (F_CONNECT_RS) from + it's User Monitor. + + CDSTWFCD CD_RQ stored in WF_CD state + + Since the User Monitor doesn't see the WF_CD state it may + send a Change Direction request (F_CD_RQ) before the + ODETTE-FTP receives a Change Direction (CD) command. + + CLIP Close Input Pending + + The Listener has received an End File (EFID) command and + is waiting for the Close File response (F_CLOSE_FILE_RS) + from it's User Monitor. + + CLOP Close Out Pending + + The Speaker has sent an End File (EFID) command and is + waiting for an End File Answer (EFPA or EFNA). + + ERSTWFCD End to End Response stored in WF_CD state + + Since the User Monitor doesn't see the WF_CD state it may + send F_EERP_RQ, before the ODETTE-FTP receives a Change + Direction (CD) command. + + + + +Nash Informational [Page 51] + +RFC 2204 ODETTE File Transfer Protocol September 1997 + + + IDLE Connection IDLE + + IDLELI Idle Listener + + IDLELICD Idle Listener, F_CD_RQ Received + + The ODETTE-FTP entity has become the Listener after + receiving a Change Direction request (F_CD_RQ) from the + User Monitor. The receipt of an End Session (ESID) is + valid in this state. + + IDLESP Idle Speaker + + IDLESPCD Idle Speaker, F_CD_IND Sent + + The ODETTE-FTP entity has sent a Change Direction + indication (F_CD_IND) to the User Monitor. A Change + Direction request (F_CD_RQ) is invalid in this state. + + I_WF_NC Initiator Waiting for Network Connection + + The Initiator has requested a new network connection and + is waiting for a Connection confirmation (N_CON_CF) from + the Network Service. + + I_WF_RM Initiator Waiting for Ready Message + + Before sending Start Session (SSID), the Initiator must + wait for a Ready Message (SSRM) from the Responder. + + I_WF_SSID Initiator Waiting for SSID + + The Initiator has sent a Start Session (SSID) command and + is waiting for Start Session from the Responder. + + OPI Open Input (Data Transfer Phase) + + The Listener is waiting for the Speaker to send a Data + Exchange buffer. + + OPIP Open Input Pending + + The Listener has received a Start File (SFID) command and + is waiting for the Start File response (F_START_FILE_RS) + from it's User Monitor. + + + + + + +Nash Informational [Page 52] + +RFC 2204 ODETTE File Transfer Protocol September 1997 + + + OPO Open Out (Data Transfer Phase) + + The Speaker has received a Start File Positive Answer + (SFPA) and is waiting for a Data (F_DATA_RQ) or Close + File (F_CLOSE_FILE) request from it's User Monitor. + + OPOP Open Out Pending + + The Speaker has sent a Start File (SFID) command and is + waiting for a Start File Answer (SFPA or SFNA). + + OPOWFC Open Out Wait for Credit + + The Speaker is waiting for a Set Credit (CDT) command + before sending further Data Exchange buffers. + + SFSTWFCD Start File Request stored in WF_CD state. + + Since the User Monitor doesn't see the WF_CD state it may + send a Start File request (F_START_FILE_RQ) before the + ODETTE-FTP receives a Change Direction (CD) command. + + WF_CD Wait for Change Direction + + The Listener wishes to become the Speaker and is waiting + for a Change Direction (CD) command after sending an End + File Positive Answer (EFPA) requesting change direction. + + WF_RTR Wait for Ready To Receive + + The Initiator has sent an End to End Response (EERP) + command and must wait for Ready To Receive (RTR) from the + Responder. + + WF_NDISC Wait for N_DISC_IND + + ODETTE-FTP has sent an End Session (ESID) command and is + waiting for a Disconnection indication (N_DISC_IND) from + the Network Service. + +8.4 Input Events + + User Monitor Input Events (Section 3) + + F_DATA_RQ F_CONNECT_RQ F_START_FILE_RQ F_CLOSE_FILE_RQ + F_EERP_RQ F_CONNECT_RS F_START_FILE_RS(+) F_CLOSE_FILE_RS(+) + F_CD_RQ F_ABORT_RQ F_START_FILE_RS(-) F_CLOSE_FILE_RS(-) + F_RELEASE_RQ + + + +Nash Informational [Page 53] + +RFC 2204 ODETTE File Transfer Protocol September 1997 + + + Network Input Events (Section 2.2) + + N_CON_IND N_CON_CF N_DATA_IND N_DISC_IND N_RST_IND + + Peer ODETTE-FTP Input Events (Section 4) + + SSID SFID SFPA SFNA EFID EFPA EFNA + DATA ESID EERP RTR CD CDT SSRM + + Internal Input Events + + TIME-OUT - Internal ODETTE-FTP timer expires. + + Input event parameters are denoted I.Event-name.Parameter-name within + the state table action and predicate lists. Their value can be + examined but not changed by the ODETTE-FTP entity. + +8.5 Output Events + + User Monitor Output Events (Section 3) + + F_DATA_IND F_CONNECT_IND F_START_FILE_IND F_CLOSE_FILE_IND + F_EERP_IND F_CONNECT_CF F_START_FILE_CF(+) F_CLOSE_FILE_CF(+) + F_CD_IND F_ABORT_IND F_START_FILE_CF(-) F_CLOSE_FILE_CF(-) + F_RELEASE_IND + + Network Output Events (Section 2.2) + + N_CON_RQ N_CON_RS N_DATA_RQ N_DISC_RQ + + Peer ODETTE-FTP Output Events (Section 4) + + SSID SFID SFPA SFNA EFID EFPA EFNA + DATA ESID EERP RTR CD CDT SSRM + + Output event parameters are denoted O.Event-name.Parameter-name + within the state table action and predicate lists. Their values can + be examined and changed by the ODETTE-FTP entity. + + + + + + + + + + + + + +Nash Informational [Page 54] + +RFC 2204 ODETTE File Transfer Protocol September 1997 + + +8.6 Local Variables + + The following variables are maintained by the ODETTE-FTP entity to + assist the operation of the protocol. They are denoted V.Variable- + name within the state table action and predicate lists. Their value + can be examined and changed by the ODETTE-FTP entity. The initial + value of each variable is undefined. + + Variable Type Comments + --------------------------------------------------------------------- + Buf-size Integer Negotiated Exchange Buffer size. + Called-addr Address Used to build O.F_CONNECT_IND.Called-addr + Calling-addr Address To build O.F_CONNECT_IND.Calling-addr + Compression Yes/No Compression in used as agreed. + Credit_L Integer Listeners credit counter. + Credit_S Integer Speaker's credit counter. + Id String Used to build O.SSID.Id + Mode Sender-only, Receiver-only, Both. + Pswd String Password, used to build O.SSID.Pswd + Req-buf Primitive Input event (F_XXX_RQ) stored in WF_CD state. + Restart Yes/No Restart in used as agreed. + Restart-pos Integer Used only during file opening. + Window Integer The Credit value negotiated for the session. + --------------------------------------------------------------------- + +8.7 Local Constants + + The following constants define the capabilities of a given ODETTE-FTP + entity. They are denoted C.Constant-name within the state table + action and predicate lists. Their value can be examined but not + changed by the ODETTE-FTP entity. + + Constant Value Comments + --------------------------------------------------------------------- + Cap-compression Yes/No Compression supported? + Cap-init Initiator Must be Initiator. + Responder Must be Responder. + Both Can be Initiator or Responder. + Cap-mode Sender-only Must be sender. + Receiver-only Must be receiver. + Both Can be sender or receiver. + Max-buf-size 127 < Int < 100000 Maximum buffer size supported. + Max-window Int < 1000 Local maximum credit value. + --------------------------------------------------------------------- + + + + + + + +Nash Informational [Page 55] + +RFC 2204 ODETTE File Transfer Protocol September 1997 + + +8.8 Session Connection State Table + +8.8.1 State Table + + o----------------------------------------------o + | | Other States | + | |--------------------------------------o | + | S | A_WF_CONRS | | + | |----------------------------------o | | + | T | A_NC_ONLY | | | + | |------------------------------o | | | + | A | I_WF_SSID | | | | + | |--------------------------o | | | | + | T | I_WF_RM | | | | | + | |----------------------o | | | | | + | E | I_WF_NC | | | | | | + | |------------------o | | | | | | + | | IDLE | | | | | | | + |==================o---+---+---+---+---+---+---| + | | F_CONNECT_RQ | A | X | X | X | X | X | X | + | |--------------+---+---+---+---+---+---+---| + | E | N_CON_CF | X | C | X | X | X | X | X | + | |--------------+---+---+---+---+---+---+---| + | V | SSRM | X | X | H | X | X | X | X | + | |--------------+---+---+---+---+---+---+---| + | E | SSID | X | X | X | D | E | F | F | + | |--------------+---+---+---+---+---+---+---| + | N | N_CON_IND | B | X | X | X | X | X | X | + | |--------------+---+---+---+---+---+---+---| + | T | F_CONNECT_RS | X | U | U | U | U | G | U | + | |--------------+---+---+---+---+---+---+---| + | | ESID(R=10) | X | X | X | F | X | X | X | + o----------------------------------------------o + + + + + + + + + + + + + + + + + + +Nash Informational [Page 56] + +RFC 2204 ODETTE File Transfer Protocol September 1997 + + +8.8.2 Transition Table + + I | Predicate Actions Output Events Next State + ===o================================================================= + A | P1: F_ABORT_IND IDLE + | not P1: 1 N_CON_RQ I_WF_NC + ---+----------------------------------------------------------------- + B | P3: N_DISC_RQ IDLE + | not P3: N_CON_RS + | SSRM A_NC_ONLY + ---+----------------------------------------------------------------- + C | 2 I_WF_RM + ---+----------------------------------------------------------------- + D | P2: 4,2,5 F_CONNECT_CF IDLESP + | not P2: 4,2 ESID(R=10) + | F_ABORT_IND(R,AO=L) WF_NDISC + ---+----------------------------------------------------------------- + E | P4: 4 N_DISC_RQ IDLE + | not P4: F_CONNECT_IND A_WF_CONRS + ---+----------------------------------------------------------------- + F | F_ABORT_IND + | N_DISC_RQ IDLE + ---+----------------------------------------------------------------- + G | P2: 4,2,5 SSID IDLELI + | not P2: 4,2 ESID(R=10) + | F_ABORT_IND(R,AO=L) WF_NDISC + ---+----------------------------------------------------------------- + H | 4,2,3 SSID I_WF_SSID + --------------------------------------------------------------------- + +8.8.3 Predicates and Actions. + + Predicate P1: (No resources available) OR + (C.Cap-init = Responder) OR + (C.Cap-mode = Sender-only AND + I.F_CONNECT_RQ.Mode = Receiver-only) OR + (C.Cap-mode = Receiver-only AND + I.F_CONNECT_RQ.Mode = Sender-only) + + Predicate P2: Negotiation of (Buf-size, Restart, Compression, + Mode, Credit) is OK. + + Predicate P3: C.Cap-init = Initiator + + Predicate P4: Mode in SSID incompatible with C.Cap-mode + + + + + + +Nash Informational [Page 57] + +RFC 2204 ODETTE File Transfer Protocol September 1997 + + + Action 1: Set V.Mode from (C.Cap-mode, I.F_CONNECT_RQ.Mode) + Set V.Pswd, V.Id, V.Restart from I.F_CONNECT_RQ + Set V.Buf-size = C.Max-buf-size + Set V.Compression = C.Cap-compression + Build O.N_CON_RQ + + Action 2: Start inactivity timer + + Action 3: Set parameters in O.SSID = from local variables + + Action 4: Stop timer + + Action 5: Set V.Mode, V.Restart, V.Compression, V.Buf-size, + V.Window = from SSID + +8.9 Error and Abort State Table + +8.9.1 State Table + + o--------------------------------------o + | | Other States | + | S |------------------------------o | + | T | WF_NDISC | | + | A |--------------------------o | | + | T | I_WF_NC | | | + | E |----------------------o | | | + | | IDLE | | | | + |======================o---+---+---+---| + | | TIME-OUT | X | X | A | B | + | |------------------+---+---+---+---| + | E | F_ABORT_RQ | X | A | X | C | + | V |------------------+---+---+---+---| + | E | N_RST_IND | X | X | A | D | + | N |------------------+---+---+---+---| + | T | N_DISC_IND | X | E | F | G | + | |------------------+---+---+---+---| + | | Invalid Buffer | X | X | H | I | + o--------------------------------------o + + + + + + + + + + + + + +Nash Informational [Page 58] + +RFC 2204 ODETTE File Transfer Protocol September 1997 + + +8.9.2 Transition Table + + I | Predicate Actions Output Events Next State + ===o================================================================= + A | N_DISC_RQ IDLE + ---+----------------------------------------------------------------- + B | F_ABORT_IND + | N_DISC_RQ IDLE + ---+----------------------------------------------------------------- + C | 1 N_DISC_RQ IDLE + ---+----------------------------------------------------------------- + D | 1 N_DISC_RQ + | F_ABORT_IND IDLE + ---+----------------------------------------------------------------- + E | F_ABORT_IND IDLE + ---+----------------------------------------------------------------- + F | 1 IDLE + ---+----------------------------------------------------------------- + G | 1 F_ABORT_IND IDLE + ---+----------------------------------------------------------------- + H | WF_NDISC + ---+----------------------------------------------------------------- + I | 1,2 ESID(R=01) + | F_ABORT_IND(R,AO=L) WF_NDISC + --------------------------------------------------------------------- + +8.9.3 Predicates and Actions. + + Action 1: Stop inactivity timer + + Action 2: Start inactivity timer + +8.10 Speaker State Table 1 + +8.10.1 State Table + + The following abbreviations are used in the Speaker State table. + + F_REL_RQ(Ok) - F_RELEASE_RQ Reason = Normal + F_REL_RQ(Err) - F_RELEASE_RQ Reason = Error + + + + + + + + + + + +Nash Informational [Page 59] + +RFC 2204 ODETTE File Transfer Protocol September 1997 + + + o------------------------------------------------------------------o + | | Other State | + | |----------------------------------------------------------o | + | | WF_NDISC | | + | |------------------------------------------------------o | | + | | OPOWFC | | | + | |--------------------------------------------------o | | | + | | OPO | | | | + | S |----------------------------------------------o | | | | + | | OPOP | | | | | + | T |------------------------------------------o | | | | | + | | CDSTWFCD | | | | | | + | A |--------------------------------------o | | | | | | + | | SFSTWFCD | | | | | | | + | T |----------------------------------o | | | | | | | + | | ERSTWFCD | | | | | | | | + | E |------------------------------o | | | | | | | | + | | WF_CD | | | | | | | | | + | |--------------------------o | | | | | | | | | + | | WF_RTR | | | | | | | | | | + | |----------------------o | | | | | | | | | | + | | IDLESPCD | | | | | | | | | | | + | |------------------o | | | | | | | | | | | + | | IDLESP | | | | | | | | | | | | + |===+==============o---+---+---+---+---+---+---+---+---+---+---+---| + | | F_EERP_RQ | A | A | W | F | W | U | U | U | U | U | U | U | + | |--------------+---+---+---+---+---+---+---+---+---+---+---+---| + | | F_START_ | B | B | W | G | W | U | U | U | U | U | X | U | + | | FILE_RQ | | | | | | | | | | | | | + | |--------------+---+---+---+---+---+---+---+---+---+---+---+---| + | | SFPA | C | C | C | C | C | C | C | K | C | C | S | C | + | |--------------+---+---+---+---+---+---+---+---+---+---+---+---| + | E | SFNA | C | C | C | C | C | C | C | L | C | C | S | C | + | |--------------+---+---+---+---+---+---+---+---+---+---+---+---| + | V | CD | C | C | C | H | R | I | J | C | C | C | S | C | + | |--------------+---+---+---+---+---+---+---+---+---+---+---+---| + | E | F_DATA_RQ | U | U | U | U | U | U | U | U | M | V | S | U | + | |--------------+---+---+---+---+---+---+---+---+---+---+---+---| + | N | CDT | C | C | C | C | C | C | C | C | P | O | S | C | + | |--------------+---+---+---+---+---+---+---+---+---+---+---+---| + | T | F_CD_RQ | D | U | W | T | W | U | U | U | U | U | X | U | + | |--------------+---+---+---+---+---+---+---+---+---+---+---+---| + | | F_REL_RQ(Ok) | U | E | U | U | U | U | U | U | U | U | X | U | + | |--------------+---+---+---+---+---+---+---+---+---+---+---+---| + | | F_REL_RQ(Err)| Q | Q | Q | Q | Q | Q | Q | Q | Q | Q | S | Q | + | |--------------+---+---+---+---+---+---+---+---+---+---+---+---| + | | RTR | C | C | N | C | C | C | C | C | C | C | S | C | + o------------------------------------------------------------------o + + + +Nash Informational [Page 60] + +RFC 2204 ODETTE File Transfer Protocol September 1997 + + +8.10.2 Transition Table + + I | Predicate Actions Output Events Next State + ===o================================================================= + A | 1,2,3 EERP WF_RTR + ---+----------------------------------------------------------------- + B | P1: UE + | not P1: 1,2,5 SFID OPOP + ---+----------------------------------------------------------------- + C | 1,2 ESID(R=02) + | F_ABORT_IND(R,AO=L) WF_NDISC + ---+----------------------------------------------------------------- + D | 1,2 CD IDLELICD + ---+----------------------------------------------------------------- + E | 1,2 ESID(R=00) WF_NDISC + ---+----------------------------------------------------------------- + F | 4 ERSTWFCD + ---+----------------------------------------------------------------- + G | P1: UE + | not P1: 6 SFSTWFCD + ---+----------------------------------------------------------------- + H | 1,2 IDLESP + ---+----------------------------------------------------------------- + I | 1,2,10 SFID OPOP + ---+----------------------------------------------------------------- + J | 1,2 CD IDLELICD + ---+----------------------------------------------------------------- + K | P2: 1,2 ESID(R=02) + | F_ABORT_IND(R,AO=L) WF_NDISC + | not P2: 1,2,7,12 F_START_FILE_CF(+) OPO + ---+----------------------------------------------------------------- + L | 1,2,8 F_START_FILE_CF(-) IDLESP + ---+----------------------------------------------------------------- + M | P3: 1,2,11,13 DATA OPOWFC + | not P3: 1,2,11,13 DATA OPO + ---+----------------------------------------------------------------- + N | Note 3 IDLESP + ---+----------------------------------------------------------------- + O | 12 OPO + | See Note 1 + ---+----------------------------------------------------------------- + P | Protocol 1,2 ESID(R=02) + | Error F_ABORT_IND(R,AO=L) WF_NDISC + ---+----------------------------------------------------------------- + Q | 1,2 ESID(R) WF_NDISC + ---+----------------------------------------------------------------- + Continued --> + + + + +Nash Informational [Page 61] + +RFC 2204 ODETTE File Transfer Protocol September 1997 + + + I | Predicate Actions Output Events Next State + ===o================================================================= + R | 1,2,9 EERP WF_RTR + ---+----------------------------------------------------------------- + S | WF_NDISC + ---+----------------------------------------------------------------- + T | CDSTWFCD + ---+----------------------------------------------------------------- + U | User Error UE + ---+----------------------------------------------------------------- + V | User Error - Note 1 UE + ---+----------------------------------------------------------------- + W | User Error - Note 2 UE + ---+----------------------------------------------------------------- + X | Error + --------------------------------------------------------------------- + +8.10.3 Predicates and Actions. + + Predicate P1: (I.F_START_FILE_RQ.Restart-pos > 0) AND + ((V.Restart = No) OR (V.Mode = Receiver-only)) + + Note: Restart requested and not supported for this session. + + Predicate P2: (I.SFPA.Restart-pos > V.Restart-pos) + + Note: Protocol error due to the restart position in the + SFPA acknowledgement being greater than the position + requested in the SFID request. + + Predicate P3: V.Credit_S - 1 = 0 + + Note: Speaker's Credit is exhausted. + + Action 1: Stop inactivity timer + + Action 2: Start inactivity timer + + Action 3: Build an EERP from F_EERP_RQ + + Action 4: Store F_EERP_RQ in V.Req-buf + + Action 5: Build SFID from F_START_FILE_RQ + V.Restart-pos = I.F_START_FILE_RQ.Restart-pos + + Action 6: Store F_START_FILE_RQ in V.Req-buf + + Action 7: Build F_START_FILE_CF(+) from I.SFPA + + + +Nash Informational [Page 62] + +RFC 2204 ODETTE File Transfer Protocol September 1997 + + + Action 8: Build F_START_FILE_CF(-) from I.SFNA + + Action 9: Build EERP from F_EERP_RQ stored in V.Req-buf + + Action 10: Build SFID from F_START_FILE_RQ stored in V.Req-buf + Set V.Restart-pos + + Action 11: Build Exchange Buffer + + Action 12: V.Credit_S = V.Window + + Action 13: V.Credit_S = V.Credit_S - 1 + + Note 1: The OPOWFC state prevents the Speaker from sending + data buffers because it is waiting for credit. The + ODETTE-FTP entity may need to control the flow of Data + requests (F_DATA_RQ) from it's User Monitor to protect + it's own buffers. Any such mechanism and the + behaviour of the entity should a User Error occur are + regarded as local implementation issues. + + Note 2: The choice to accept this "Request/Event" while in + this state is a matter of local implementation. The + ODETTE state tables are based on the assumption that + this event cannot occur in this state and is + considered to be a user error (UE). + + Note 3: It is a local matter to make the User Monitor aware + that since the RTR is received, the protocol machine + is now ready to accept the next request. + +8.11 Speaker State Table 2 + +8.11.1 State Table + + o---------------------------------o + | S | CLOP | + | T |-------------------------o | + | A | OPOWFC | | + | T |---------------------o | | + | E | OPO | | | + |=====================o---+---+---| + | E | F_CLOSE_FILE_RQ | A | E | U | + | V |-----------------+---+---+---| + | E | EFPA | B | B | C | + | N |-----------------+---+---+---| + | T | EFNA | B | B | D | + o---------------------------------o + + + +Nash Informational [Page 63] + +RFC 2204 ODETTE File Transfer Protocol September 1997 + + +8.11.2 Transition Table + + I | Predicate Actions Output Events Next State + ===o================================================================= + A | 1,2,5,7 EFID CLOP + ---+----------------------------------------------------------------- + B | 1,2 ESID(R=02) + | F_ABORT_IND(R,AO=L) WF_NDISC + ---+----------------------------------------------------------------- + C | P1: 1,2,3 F_CLOSE_FILE_CF(+,SP=No) + | CD IDLELI + | not P1: 1,2,4 F_CLOSE_FILE_CF(+,SP=Yes) IDLESP + ---+----------------------------------------------------------------- + D | 1,2,6 F_CLOSE_FILE_CF(-) IDLESP + ---+----------------------------------------------------------------- + E | See Note 1 + ---+----------------------------------------------------------------- + U | User Error UE + --------------------------------------------------------------------- + +8.11.3 Predicates and Actions. + + Predicate P1: (I.EFPA.CD-Request = Yes) AND (V.Mode = Both) + + Action 1: Stop inactivity timer + + Action 2: Start inactivity timer + + Action 3: O.F_CLOSE_FILE_CF(+).Speaker = No + + Action 4: O.F_CLOSE_FILE_CF(+).Speaker = Yes + + Action 5: Build EFID from F_CLOSE_FILE_RQ + + Action 6: Build F_CLOSE_FILE_CF(-) from EFNA + + Action 7: Set V.Credit_S = 0 + + Note 1: In order to respect the "half duplex" property of + ODETTE-FTP it is forbidden to send EFID while in the + OPOWFC state. EFID can be sent only in the OPO state. + + The ODETTE-FTP implementation must avoid sending EFID + (or receiving F_CLOSE_FILE_RQ) while in the OPOWFC + state. + + + + + + +Nash Informational [Page 64] + +RFC 2204 ODETTE File Transfer Protocol September 1997 + + +8.12 Listener State Table + +8.12.1 State Table + + o-----------------------------------------o + | | CLIP | + | |---------------------------------o | + | | OPI | | + | S |-----------------------------o | | + | T | OPIP | | | + | A |-------------------------o | | | + | T | IDLELICD | | | | + | E |---------------------o | | | | + | | IDLELI | | | | | + |=====================o---+---+---+---+---| + | | SFID | A | A | B | B | B | + | |-----------------+---+---+---+---+---| + | E | DATA | B | B | B | I | B | + | V |-----------------+---+---+---+---+---| + | E | EFID | B | B | B | J | B | + | N |-----------------+---+---+---+---+---| + | T | F_START_FILE_RS | U | U | H | U | U | + | |-----------------+---+---+---+---+---| + | | F_CLOSE_FILE_RS | U | U | U | U | K | + | |-----------------+---+---+---+---+---| + | | CD | C | B | B | B | B | + | |-----------------+---+---+---+---+---| + | | ESID R=Normal | D | F | D | D | D | + | |-----------------+---+---+---+---+---| + | | ESID R=Error | D | D | D | D | D | + | |-----------------+---+---+---+---+---| + | | EERP | E | G | B | B | B | + o-----------------------------------------o + + + + + + + + + + + + + + + + + + +Nash Informational [Page 65] + +RFC 2204 ODETTE File Transfer Protocol September 1997 + + +8.12.2 Transition Table + + I | Predicate Actions Output Events Next State + ===o================================================================= + A | P1: 1,2 ESID(R=02) + | F_ABORT_IND(R,AO=L) WF_NDISC + | not P1: 1,2,3 F_START_FILE_IND OPIP + ---+----------------------------------------------------------------- + B | 1,2 ESID(R=02) + | F_ABORT_IND(R,AO=L) WF_NDISC + ---+----------------------------------------------------------------- + C | 1,2 F_CD_IND IDLESPCD + ---+----------------------------------------------------------------- + D | 1 F_ABORT_IND(Received + | ESID Reason,AO=D) + | N_DISC_RQ IDLE + ---+----------------------------------------------------------------- + E | 4 F_EERP_IND + | 8 See Note 2 + | RTR IDLELI + ---+----------------------------------------------------------------- + F | 1 F_RELEASE_IND + | N_DISC_RQ IDLE + ---+----------------------------------------------------------------- + G | F_EERP_IND + | 8 See Note 2 + | RTR IDLELI + ---+----------------------------------------------------------------- + H | P4: User Error UE + | P2,not P4: 1,2 SFPA OPI + | not(P2,P4): 1,2 SFNA IDLELI + ---+----------------------------------------------------------------- + I | P5: 1,2 ESID(R=02) + | F_ABORT_IND(R,A0=L) WF_NDISC + | not(P5,P6): 1,2,5 F_DATA_IND OPI + | not P5,P6: 1,2 F_DATA_IND + | 6,7 See Note 1 + | CDT OPI + ---+----------------------------------------------------------------- + J | 1,2 F_CLOSE_FILE_IND CLIP + ---+----------------------------------------------------------------- + K | P2,P3: 1,2 EFPA(CD-Req) WF_CD + | P2,not P3: 1,2 EFPA(no CD) IDLELI + | not P2: 1,2 EFNA IDLELI + ---+----------------------------------------------------------------- + U | User Error UE + --------------------------------------------------------------------- + + + + +Nash Informational [Page 66] + +RFC 2204 ODETTE File Transfer Protocol September 1997 + + +8.12.3 Predicates and Actions. + + Predicate P1: (I.SFID.Restart-pos > 0) AND (V.Restart = No) + + Note: Invalid Start File command + + Predicate P2: Positive Response + + Predicate P3: I.F_CLOSE_FILE_RS(+).Speaker = Yes + + Predicate P4: I.F_START_FILE_RS(+).Restart-pos > V.Restart + + Predicate P5: V.Credit_L - 1 < 0 + + Note: Protocol Error because the Speaker has exceeded it's + available transmission credit. + + Predicate P6: V.Credit_L - 1 = 0 + + Note: The Speaker's credit must be reset before it can send + further Data Exchange buffers. + + Action 1: Stop inactivity timer. + + Action 2: Start inactivity timer + + Action 3: Build F_START_FILE_IND from I.SFID + V.Restart-pos = I.SFID.Restart-pos + + Action 4: Build F_EERP_IND from I.EERP + + Action 5: V.Credit_L = V.Credit_L - 1 + + Action 6: Wait for sufficient resources to receive up to + V.Window Data Exchange Buffers. + + Action 7: V.Credit_L = V.Window + + Action 8: Wait for resources required to process a new EERP. + + Note 1: Flow control in case of reception. + + The ODETTE-FTP Listener must periodically send new + credit to the Speaker. The timing of this operation + will depend on: + + 1. The User Monitor's capacity the receive data. + 2. The number of buffers available to ODETTE-FTP. + + + +Nash Informational [Page 67] + +RFC 2204 ODETTE File Transfer Protocol September 1997 + + + 3. The Speaker's available credit, which must be + equal to zero. + + Note 2: Generally, the ODETTE-FTP Listener will send RTR + immediately after receiving EERP. If required, it can + delay the RTR until the resources required to process + a new EERP are available. + +8.13 Example + + Consider an ODETTE-FTP entity that has sent a Start File (SFID) + command and entered the Open Out Pending (OPOP) state. It's response + on receiving a Positive Answer (SFPA) is documented in Speaker State + Table 1 which shows that transition 'K' should be applied and is + interpreted as follows: + + if (I.SFPA.Restart-pos > V.Restart-pos) then + begin // invalid restart + Actions: Stop inactivity timer, // reset timer + Start inactivity timer; + Output: ESID(R=02), // to peer ODETTE-FTP + F_ABORT_IND(R,AO=L); // to user monitor + New State: WF_NDISC; + end + else begin + Actions: Stop inactivity timer, // reset timer + Start inactivity timer; + Build F_START_FILE_CF(+) from I.SFPA + V.Credit_S = V.Window // initialise credit + Output: F_START_FILE_CF(+); // to user monitor + New State: OPO; + end + + The ODETTE-FTP checks the restart position in the received Start File + Positive Answer (SFPA) command. If it is invalid it aborts the + session by sending an End Session (ESID) command to it's peer and an + Abort indication (F_ABORT_IND) to it's User Monitor. If the restart + position is valid a Start File confirmation (F_START_FILE_CF) is + built and sent to the User Monitor, the credit window is initialised + and the Open Out (OPO) state is entered. + +9. Security Considerations + + ODETTE-FTP exchanges user identity and password information in clear + text. It is therefore recommended that a lower layer (session, + network or linkage) security protocol is used to protect the session + from casual identity collection. + + + + +Nash Informational [Page 68] + +RFC 2204 ODETTE File Transfer Protocol September 1997 + + +Appendix A. Virtual File Mapping Example + + This example demonstrates the mapping of a Virtual File into a + sequence of ODETTE-FTP Data Exchange Buffers and shows how each + Stream Transmission Buffer is built from an ODETTE-FTP Data Exchange + Buffer prefixed by a Stream Transmission Header. + + Each line in this extract from 'The Hunting of the Snark' by Lewis + Carroll [SNARK] is considered to be a separate record in a file + containing variable length records. Note that it does not represent + a text file and CR/LF record separators are not used. The blank line + is represented by a zero length record. + + "It's a Snark!" was the sound that first came to their ears, + And seemed almost too good to be true. + Then followed a torrent of laughter and cheers: + Then the ominous words "It's a Boo-" + + Then, silence. Some fancied they heard in the air + A weary and wandering sigh + Then sounded like "-jum!" but the others declare + It was only a breeze that went by. + + Assuming that the minimum exchange buffer length of 128 octets has + been negotiated the result of mapping the text into Stream + Transmission Buffers may be as follows. + + Stream Transmission Buffer 1 + + Text : ....D."It' s a Snark! " was the sound that first cam + Hex-H : 10084B2472 7262566762 2276727662 7676627667 2667772666 + Hex-L : 00044C2947 30103E12B1 2071304850 3F5E404814 069234031D + Key : ----D!.... .......... .......... .......... .......... + + Text : e to their ears,. .A nd seemed almost too good to b + Hex-H : 6276276667 26677242A4 6627666662 6666772766 2666627626 + Hex-L : 504F048592 05123C5061 E40355D540 1CDF3404FF 07FF404F02 + Key : .......... ......!.!. .......... .......... .......... + + Text : e true..Th en followe d a torren t + Hex-H : 6277762156 6626666676 6262767766 72 + Hex-L : 504255E848 5E06FCCF75 40104F225E 40 + Key : .......!.. .......... .......... .. + + Text : ....D.of l aughter an d cheers:. .Then the ominous w + Hex-H : 1007496626 6766767266 6266667734 2A56662766 2666667727 + Hex-L : 000847F60C 157845201E 40385523A5 04485E0485 0FD9EF5307 + Key : ----D!.... .......... .........! .!........ .......... + + + +Nash Informational [Page 69] + +RFC 2204 ODETTE File Transfer Protocol September 1997 + + + Text : ords "It's a Boo-".. Then, sile nce. Some fancied t + Hex-H : 6767224727 262466228B 5666227666 6662225666 2666666627 + Hex-L : F243029473 0102FFD202 485EC039C5 E35E003FD5 061E395404 + Key : .......... ........!! .......... .......... .......... + + Text : hey heard in the air + Hex-H : 6672666762 6627662667 + Hex-L : 8590851240 9E04850192 + Key : .......... .......... + + Stream Transmission Buffer 3 + + Text : ....D. .A weary and wandering sigh.Then sounded li + Hex-H : 1007442942 7667726662 7666676662 7666B56662 7676666266 + Hex-L : 0008450A10 7512901E40 71E4529E70 39780485E0 3F5E4540C9 + Key : ----D!.!.. .......... .......... ....!..... .......... + + Text : ke "-jum!" but the o thers decl are. .It w as only a + Hex-H : 6622267622 2677276626 7667726666 67642A4727 6726667262 + Hex-L : B502DA5D12 025404850F 485230453C 1255029407 130FEC9010 + Key : .......... .......... .......... ...!.!.... .......... + + Text : breeze tha t went by. + Hex-H : 6766762766 7276672672 + Hex-L : 2255A50481 4075E4029E + Key : .......... .......... + + Notes: + Hex-H High order bits of octet + Hex-L Low order bits of octet + Key: ---- Stream Transmission Header + D Data Exchange Buffer command code 'D' + ! Subrecord header octet + . Place holder + All headers are represented with a period in the Text line. + + Each Data Exchange Buffer is preceded by a Stream Transmission + Header. + + In the above mapping the first Data Exchange Buffer is 128 octets in + length. The last record has been continued in the second buffer. + + The second Data Exchange Buffer has been truncated at 116 octets to + finish at the end of a record. The following record being completely + contained in the third buffer. This is an alternative to spanning + the record as shown between the first and second Data Exchange + Buffers. + + + + +Nash Informational [Page 70] + +RFC 2204 ODETTE File Transfer Protocol September 1997 + + + The blank line has been encoded as a single header octet of '80' hex, + indicating a zero length subrecord with the end of record flag set. + + The indented lines have been compressed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Nash Informational [Page 71] + +RFC 2204 ODETTE File Transfer Protocol September 1997 + + +Appendix B. ISO 646 Character Subset + + o-----------------------------------------------------------------o + | | 7| 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | + | | B -+-----+-----+-----+-----+-----+-----+-----+-----| + | | I 6| 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | + | | T -+-----+-----+-----+-----+-----+-----+-----+-----| + | | 5| 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | + | |----+-----+-----+-----+-----+-----+-----+-----+-----| + | | | | | | | | | | | + | | | | | | | | | | | + |------------| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | + | BIT | | | | | | | | | | + | 4 3 2 1 | | | | | | | | | | + |============o====o=====+=====+=====+=====+=====+=====+=====+=====| + | 0 0 0 0 | 0 | | | SP | 0 | | P | | | + |------------|----|-----+-----+-----+-----+-----+-----+-----+-----| + | 0 0 0 1 | 1 | | | | 1 | A | Q | | | + |------------+----|-----+-----+-----+-----+-----+-----+-----+-----| + | 0 0 1 0 | 2 | | | | 2 | B | R | | | + |------------+----|-----+-----+-----+-----+-----+-----+-----+-----| + | 0 0 1 1 | 3 | | | | 3 | C | S | | | + |------------+----|-----+-----+-----+-----+-----+-----+-----+-----| + | 0 1 0 0 | 4 | | | | 4 | D | T | | | + |------------+----|-----+-----+-----+-----+-----+-----+-----+-----| + | 0 1 0 1 | 5 | | | | 5 | E | U | | | + |------------+----|-----+-----+-----+-----+-----+-----+-----+-----| + | 0 1 1 0 | 6 | | | & | 6 | F | V | | | + |------------+----|-----+-----+-----+-----+-----+-----+-----+-----| + | 0 1 1 1 | 7 | | | | 7 | G | W | | | + |------------+----|-----+-----+-----+-----+-----+-----+-----+-----| + | 1 0 0 0 | 8 | | | ( | 8 | H | X | | | + |------------+----|-----+-----+-----+-----+-----+-----+-----+-----| + | 1 0 0 1 | 9 | | | ) | 9 | I | Y | | | + |------------+----|-----+-----+-----+-----+-----+-----+-----+-----| + | 1 0 1 0 | 10 | | | | | J | Z | | | + |------------+----|-----+-----+-----+-----+-----+-----+-----+-----| + | 1 0 1 1 | 11 | | | | | K | | | | + |------------+----|-----+-----+-----+-----+-----+-----+-----+-----| + | 1 1 0 0 | 12 | | | | | L | | | | + |------------+----|-----+-----+-----+-----+-----+-----+-----+-----| + | 1 1 0 1 | 13 | | | - | | M | | | | + |------------+----|-----+-----+-----+-----+-----+-----+-----+-----| + | 1 1 1 0 | 14 | | | . | | N | | | | + |------------+----|-----+-----+-----+-----+-----+-----+-----+-----| + | 1 1 1 1 | 15 | | | / | | O | | | | + o-----------------------------------------------------------------o + + + + +Nash Informational [Page 72] + +RFC 2204 ODETTE File Transfer Protocol September 1997 + + +Acknowledgements + + This document draws extensively on revision 1.3 of the ODETTE File + Transfer Specification [OFTP]. + + Numerous people have contributed to the development of this protocol + and their work is hereby acknowledged. The extensions required to + utilise the Transmission Control Protocol were formulated and agreed + by the current members of ODETTE Working Group Four, who also + provided helpful reviews and comments on this document. + +References + + [OFTP] Organisation for Data Exchange by Tele Transmission in + Europe, Odette File Transfer Protocol, Revision 1.3:1993 + + [RFC-739] Postel, J., Transmission Control Protocol, STD 7, RFC 739, + September 1981 + + [ISO-646] International Organisation for Standardisation, ISO + Standard 646:1991, "Information technology -- ISO 7-bit coded + character set for information interchange", 1991 + + [ISO-6523] International Organisation for Standardisation, ISO + Standard 6523:1984, "Data interchange -- Structures for the + identification of organisations", 1984 + + [ISO-8601] International Organisation for Standardisation, ISO + Standard 8601:1988 "Data elements and interchange formats -- + Information interchange -- Representation of dates and times", 1988 + + [NIFTP] High Level Protocol Group, "A Network Independent File + Transfer Protocol", 1981 + + [SNARK] Carroll, Lewis "The Hunting of the Snark", 1876 + + + + + + + + + + + + + + + + +Nash Informational [Page 73] + +RFC 2204 ODETTE File Transfer Protocol September 1997 + + +ODETTE Address + + The ODETTE File Transfer Protocol is a product of Working Group Four + of the Organisation for Data Exchange by Tele Transmission in Europe. + The working group can be contacted via the ODETTE Secretariat: + + ODETTE Secretariat + Forbes House + Halkin Street + London + SW1X 7DS + United Kingdom + + Phone: +44 (0)171 344 9227 + Fax: +44 (0)171 235 7112 + EMail odette@odette.org + keith.oxley@odette.org + stephanie.bioux@odette.org + + +Author's Address + + The author can be contacted at + + David Nash + Ford Motor Company Limited + Room 1/148, Central Office + Eagle Way + Warley + Brentwood + Essex + CM13 3BW + United Kingdom + + Phone: +44 (0)1277 253043 + EMail: dnash@ford.com + + + + + + + + + + + + + + + +Nash Informational [Page 74] + |