idnits 2.17.1 draft-malkin-tftpexts-option-ext-00.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- ** Cannot find the required boilerplate sections (Copyright, IPR, etc.) in this document. Expected boilerplate is as follows today (2024-04-26) according to https://trustee.ietf.org/license-info : IETF Trust Legal Provisions of 28-dec-2009, Section 6.a: This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79. IETF Trust Legal Provisions of 28-dec-2009, Section 6.b(i), paragraph 2: Copyright (c) 2024 IETF Trust and the persons identified as the document authors. All rights reserved. IETF Trust Legal Provisions of 28-dec-2009, Section 6.b(i), paragraph 3: This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- ** Missing document type: Expected "INTERNET-DRAFT" in the upper left hand corner of the first page ** Missing expiration date. The document expiration date should appear on the first and last page. ** The document seems to lack a 1id_guidelines paragraph about Internet-Drafts being working documents. ** The document seems to lack a 1id_guidelines paragraph about the list of current Internet-Drafts. ** The document seems to lack a 1id_guidelines paragraph about the list of Shadow Directories. == No 'Intended status' indicated for this document; assuming Proposed Standard Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- ** The document seems to lack an IANA Considerations section. (See Section 2.2 of https://www.ietf.org/id-info/checklist for how to handle the case when there are no actions for IANA.) ** The document seems to lack separate sections for Informative/Normative References. All references will be assumed normative when checking for downward references. ** The abstract seems to contain references ([1]), which it shouldn't. Please replace those with straight textual mentions of the documents in question. == The 'Updates: ' line in the draft header should list only the _numbers_ of the RFCs which will be updated by this document (if approved); it should not include the word 'RFC' in the list. -- The draft header indicates that this document updates RFC1350, but the abstract doesn't seem to mention this, which it should. Miscellaneous warnings: ---------------------------------------------------------------------------- (Using the creation date from RFC1350, updated by this document, for RFC5378 checks: 1992-05-13) -- The document seems to lack a disclaimer for pre-RFC5378 work, but may have content which was first submitted before 10 November 2008. If you have contacted all the original authors and they are all willing to grant the BCP78 rights to the IETF Trust, then this is fine, and you can ignore this comment. If not, you may need to add the pre-RFC5378 disclaimer. (See the Legal Provisions document at https://trustee.ietf.org/license-info for more information.) -- Couldn't find a document date in the document -- date freshness check skipped. Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) No issues found here. Summary: 9 errors (**), 0 flaws (~~), 2 warnings (==), 3 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 draft-malkin-tftpexts-option-ext-00.txt G. Malkin / Bay Networks 3 TFTP Option Extension A. Harkin / Hewlett-Packard Co. 4 Updates: RFC 1350 (STD 33) January, 1998 6 TFTP Option Extension 8 Abstract 10 The Trivial File Transfer Protocol [1] is a simple, lock-step, file 11 transfer protocol which allows a client to get or put a file onto a 12 remote host. This document describes a simple extension to TFTP to 13 allow option negotiation prior to the file transfer. 15 Status of this Memo 17 This document is an Internet-Draft. Internet-Drafts are working 18 documents of the Internet Engineering Task Force (IETF), its areas, 19 and its working groups. Note that other groups may also distribute 20 working documents as Internet-Drafts. 22 Internet-Drafts are draft documents valid for a maximum of six months 23 and may be updated, replaced, or obsoleted by other documents at any 24 time. It is inappropriate to use Internet-Drafts as reference 25 material or to cite them other than as "work in progress." 27 To learn the current status of any Internet-Draft, please check the 28 "1id-abstracts.txt" listing contained in the Internet-Drafts Shadow 29 Directories on ds.internic.net (US East Coast), nic.nordu.net 30 (Europe), ftp.isi.edu (US West Coast), or munnari.oz.au (Pacific 31 Rim). 33 Introduction 35 The option negotiation mechanism proposed in this document is a 36 backward-compatible extension to the TFTP protocol. It allows file 37 transfer options to be negotiated prior to the transfer using a 38 mechanism which is consistent with TFTP's Request Packet format. The 39 mechanism is kept simple by enforcing a request-respond-acknowledge 40 sequence, similar to the lock-step approach taken by TFTP itself. 42 While the option negotiation mechanism is general purpose, in that 43 many types of options may be negotiated, it was created to support 44 the Blocksize option defined in [2]. Additional options are defined 45 in [3]. 47 Packet Formats 49 TFTP options are appended to the Read Request and Write Request 50 packets. A new type of TFTP packet, the Option Acknowledgment 51 (OACK), is used to acknowledge a client's option negotiation request. 52 A new error code, 8, is hereby defined to indicate that a transfer 53 should be terminated due to option negotiation. 55 Options are appended to a TFTP Read Request or Write Request packet 56 as follows: 58 +-------+---~~---+---+---~~---+---+---~~---+---+---~~---+---+--> 59 | opc |filename| 0 | mode | 0 | opt1 | 0 | value1 | 0 | < 60 +-------+---~~---+---+---~~---+---+---~~---+---+---~~---+---+--> 62 >-------+---+---~~---+---+ 63 < optN | 0 | valueN | 0 | 64 >-------+---+---~~---+---+ 66 opc 67 The opcode field contains either a 1, for Read Requests, or 2, 68 for Write Requests, as defined in [1]. 70 filename 71 The name of the file to be read or written, as defined in [1]. 72 This is a NULL-terminated field. 74 mode 75 The mode of the file transfer: "netascii", "octet", or "mail", 76 as defined in [1]. This is a NULL-terminated field. 78 opt1 79 The first option, in case-insensitive ASCII (e.g., blksize). 80 This is a NULL-terminated field. 82 value1 83 The value associated with the first option, in case-insensitive 84 ASCII. This is a NULL-terminated field. 86 optN, valueN 87 The final option/value pair. Each NULL-terminated field is 88 specified in case-insensitive ASCII. 90 The options and values are all NULL-terminated, in keeping with the 91 original request format. If multiple options are to be negotiated, 92 they are appended to each other. The order in which options are 93 specified is not significant. The maximum size of a request packet 94 is 512 octets. 96 The OACK packet has the following format: 98 +-------+---~~---+---+---~~---+---+---~~---+---+---~~---+---+ 99 | opc | opt1 | 0 | value1 | 0 | optN | 0 | valueN | 0 | 100 +-------+---~~---+---+---~~---+---+---~~---+---+---~~---+---+ 102 opc 103 The opcode field contains a 6, for Option Acknowledgment. 105 opt1 106 The first option acknowledgment, copied from the original 107 request. 109 value1 110 The acknowledged value associated with the first option. If 111 and how this value may differ from the original request is 112 detailed in the specification for the option. 114 optN, valueN 115 The final option/value acknowledgment pair. 117 Negotiation Protocol 119 The client appends options at the end of the Read Request or Write 120 request packet, as shown above. Any number of options may be 121 specified; however, an option may only be specified once. The order 122 of the options is not significant. 124 If the server supports option negotiation, and it recognizes one or 125 more of the options specified in the request packet, the server may 126 respond with an Options Acknowledgment (OACK). Each option the 127 server recognizes, and accepts the value for, is included in the 128 OACK. Some options may allow alternate values to be proposed, but 129 this is an option specific feature. The server must not include in 130 the OACK any option which had not been specifically requested by the 131 client; that is, only the client may initiate option negotiation. 132 Options which the server does not support should be omitted from the 133 OACK; they should not cause an ERROR packet to be generated. If the 134 value of a supported option is invalid, the specification for that 135 option will indicate whether the server should simply omit the option 136 from the OACK, respond with an alternate value, or send an ERROR 137 packet, with error code 8, to terminate the transfer. 139 An option not acknowledged by the server must be ignored by the 140 client and server as if it were never requested. If multiple options 141 were requested, the client must use those options which were 142 acknowledged by the server and must not use those options which were 143 not acknowledged by the server. 145 When the client appends options to the end of a Read Request packet, 146 three possible responses may be returned by the server: 148 OACK - acknowledge of Read Request and the options; 150 DATA - acknowledge of Read Request, but not the options; 152 ERROR - the request has been denied. 154 When the client appends options to the end of a Write Request packet, 155 three possible responses may be returned by the server: 157 OACK - acknowledge of Write Request and the options; 159 ACK - acknowledge of Write Request, but not the options; 161 ERROR - the request has been denied. 163 If a server implementation does not support option negotiation, it 164 will likely ignore any options appended to the client's request. In 165 this case, the server will return a DATA packet for a Read Request 166 and an ACK packet for a Write Request establishing normal TFTP data 167 transfer. In the event that a server returns an error for a request 168 which carries an option, the client may attempt to repeat the request 169 without appending any options. This implementation option would 170 handle servers which consider extraneous data in the request packet 171 to be erroneous. 173 Depending on the original transfer request there are two ways for a 174 client to confirm acceptance of a server's OACK. If the transfer was 175 initiated with a Read Request, then an ACK (with the data block 176 number set to 0) is sent by the client to confirm the values in the 177 server's OACK packet. If the transfer was initiated with a Write 178 Request, then the client begins the transfer with the first DATA 179 packet, using the negotiated values. If the client rejects the OACK, 180 then it sends an ERROR packet, with error code 8, to the server and 181 the transfer is terminated. 183 Once a client acknowledges an OACK, with an appropriate non-error 184 response, that client has agreed to use only the options and values 185 returned by the server. Remember that the server cannot request an 186 option; it can only respond to them. If the client receives an OACK 187 containing an unrequested option, it should respond with an ERROR 188 packet, with error code 8, and terminate the transfer. 190 Examples 192 Read Request 194 client server 195 ------------------------------------------------------- 196 |1|foofile|0|octet|0|blksize|0|1432|0| --> RRQ 197 <-- |6|blksize|0|1432|0| OACK 198 |4|0| --> ACK 199 <-- |3|1| 1432 octets of data | DATA 200 |4|1| --> ACK 201 <-- |3|2| 1432 octets of data | DATA 202 |4|2| --> ACK 203 <-- |3|3|<1432 octets of data | DATA 204 |4|3| --> ACK 206 Write Request 208 client server 209 ------------------------------------------------------- 210 |2|barfile|0|octet|0|blksize|0|2048|0| --> RRQ 211 <-- |6|blksize|0|2048|0| OACK 212 |3|1| 2048 octets of data | --> DATA 213 <-- |4|1| ACK 214 |3|2| 2048 octets of data | --> DATA 215 <-- |4|2| ACK 216 |3|3|<2048 octets of data | --> DATA 217 <-- |4|3| ACK 219 Security Considerations 221 The basic TFTP protocol has no security mechanism. This is why it 222 has no rename, delete, or file overwrite capabilities. This document 223 does not add any security to TFTP; however, the specified extensions 224 do not add any additional security risks. 226 References 228 [1] Sollins, K., "The TFTP Protocol (Revision 2)", Request for 229 Comments 1350 (STD 33), October 1992. 231 [2] Malkin, G., Harkin, A., "TFTP Blocksize Option", Internet Draft, 232 draft-ietf-tftpexts-blksize-opt-01.txt, September 1994. 234 [3] Malkin, G., Harkin, A., "TFTP Timeout Interval and Transfer Size 235 Options", Internet Draft, draft-ietf-tftpexts-options-00.txt, 236 December 1994. 238 Authors' Addresses 240 Gary Scott Malkin 241 Bay Networks 242 8 Federal Street 243 Billerica, MA 01821 245 Phone: (978) 916-4237 246 EMail: gmalkin@baynetworks.com 248 Art Harkin 249 Internet Services Project 250 Information Networks Division 251 19420 Homestead Road MS 43LN 252 Cupertino, CA 95014 254 Phone: (408) 447-3755 255 EMail: ash@cup.hp.com