INTERNET-DRAFT M. Yevstifeyev Intended Status: Experimental December 21, 2010 Expires: June 24, 2011 Extendable User Datagram Protocol Abstract This document is a specification of Extendable User Datagram Protocol (EUDP), which is based on User Datagram Protocol (UDP), but allows to extend the header using options. Status of this Memo This Internet-Draft is submitted to IETF in full conformance with the provisions of BCP 78 and BCP 79. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups may also distribute working documents as Internet-Drafts. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." The list of current Internet-Drafts can be accessed at http://www.ietf.org/1id-abstracts.html The list of Internet-Draft Shadow Directories can be accessed at http://www.ietf.org/shadow.html Copyright and License Notice Copyright (c) 2010 IETF Trust and the persons identified as the document authors. All rights reserved. This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://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 Yevstifeyev Expires June 24, 2011 [Page 1] INTERNET DRAFT EUDP December 21, 2010 the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License. Table of Contents 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 2. Protocol Description . . . . . . . . . . . . . . . . . . . . . 4 2.1. Lower Layer Protocols Considerations . . . . . . . . . . . 4 2.2. Packet Format . . . . . . . . . . . . . . . . . . . . . . . 4 2.2.1. Header . . . . . . . . . . . . . . . . . . . . . . . . 4 2.2.2. Fields . . . . . . . . . . . . . . . . . . . . . . . . 5 2.2.2.1. Source Port . . . . . . . . . . . . . . . . . . . 5 2.2.2.2. Destination Port . . . . . . . . . . . . . . . . 5 2.2.2.3. Data Offset . . . . . . . . . . . . . . . . . . . 5 2.2.2.4. Checksum . . . . . . . . . . . . . . . . . . . . 5 2.2.2.5. Options . . . . . . . . . . . . . . . . . . . . . 5 2.2.2.6. Padding . . . . . . . . . . . . . . . . . . . . . 6 2.3. Pre-Defined Options . . . . . . . . . . . . . . . . . . . . 6 2.3.1. 'No Operation' Option . . . . . . . . . . . . . . . . 6 2.3.2. 'End Of Options List' Option . . . . . . . . . . . . . 6 2.3.3. 'Echo Request' Option . . . . . . . . . . . . . . . . 7 2.3.4. 'Echo Response' Option . . . . . . . . . . . . . . . . 7 2.3.5. 'MD5 Digest' Option . . . . . . . . . . . . . . . . . 7 2.4. Pseudo Header . . . . . . . . . . . . . . . . . . . . . . . 8 2.5. Compatibility with UDP . . . . . . . . . . . . . . . . . . 8 3. Security Considerations . . . . . . . . . . . . . . . . . . . . 9 4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 10 4.1. EUDP Options Numbers Registry . . . . . . . . . . . . . . 10 4.2. EUDP Ports Registry . . . . . . . . . . . . . . . . . . . 10 4.3. IP Protocol Number Assignment . . . . . . . . . . . . . . 11 5. References . . . . . . . . . . . . . . . . . . . . . . . . . 12 5.1. Normative References . . . . . . . . . . . . . . . . . . 12 5.2. Informative References . . . . . . . . . . . . . . . . . 12 Author's Addresses . . . . . . . . . . . . . . . . . . . . . . . 12 Yevstifeyev Expires June 24, 2011 [Page 2] INTERNET DRAFT EUDP December 21, 2010 1. Introduction UDP is one of the most widely-used transport-level protocol. One of the things which makes it so popular is its simplicity. However in some cases this causes lack of facilities, which can be provided by other protocols, such as TCP (see RFC 793 [RFC793]) or DCCP (see RFC 4340 [RFC4340]). During the history of UDP some attempts have been made to improve it by adding some features (for instance UDP-Lite (see RFC 3828 [RFC3828])), but these proposals were too specific and did not gain popularity. EUDP, protocol, proposed by this document, is intended to be a universal solution, which combines simplicity of UDP and extensibility of TCP by adding an options space to UDP header. 1.1. Terminology The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119 [RFC2119]. The document uses the ABNF notation and core rules defined in RFC 5234 [RFC5234]. Yevstifeyev Expires June 24, 2011 [Page 3] INTERNET DRAFT EUDP December 21, 2010 2. Protocol Description 2.1. Lower Layer Protocols Considerations EUDP is a transport-layer protocol, and the protocol directly under it is IP. EUDP supports as IPv4, as IPv6 as lower-layer protocol. The IP Protocol number to be used with EUDP is TBD1. 2.2. Packet Format 2.2.1. Header The EUDP header is shown in the figure 1. 0 15 16 31 +----------------+----------------+ | Source Port |Destination Port| +----------------+----------------+ | Data Offset | Checksum | +----------------+----------------+ | | : Options : : : : +----------------+ | | Padding | +----------------+----------------+ | | : Data : : : +----------------+----------------+ Figure 1 EUDP header is described in ABNF in the following way: eudp_header = source_port destination_port offset checksum [options] [padding] data source_port = 2(%x30-39) destination_port = 2(%x30-39) offset = 2(%x30-39) Yevstifeyev Expires June 24, 2011 [Page 4] INTERNET DRAFT EUDP December 21, 2010 checksum = 2(%x30-39) options = *option option = padding = 1*%x00 data = *(%x00-FF) 2.2.2. Fields 2.2.2.1. Source Port Source Port (16 bits) - REQUIRED field which is defied and is to be used as described in UDP specification - RFC 768 [RFC768]. EUDP uses the same port set as UDP. 2.2.2.2. Destination Port Destination Port (16 bits) - REQUIRED field which is defied and is to be used as described in UDP specification - RFC 768 [RFC768]. EUDP uses the same port set as UDP. 2.2.2.3. Data Offset Data Offset (16 bits) - REQUIRED field which is the number of 32 bit words in the EUDP Header. The EUDP header (even one including options) MUST be an integral number of 32 bits long. 2.2.2.4. Checksum Checksum (16 bits) - REQUIRED field which is defied and is to be used as described in UDP specification - RFC 768 [RFC768]. 2.2.2.5. Options Options (variable length) - OPIONAL field. Options may occupy space at the end of the EUDP header and are a multiple of 8 bits in length. All options are included in the checksum. An option may begin on any octet boundary. There are two cases for the format of an option: a) a single octet of option-kind. b) an octet of option-kind, an octet of option-length, and the actual option-data octets. The option-length counts the two octets of option-kind and option-length as well as the option-data octets. Note that the list of options may be shorter than the data offset field might imply. The content of the header beyond the End Of Options List Yevstifeyev Expires June 24, 2011 [Page 5] INTERNET DRAFT EUDP December 21, 2010 option must be header padding (i.e., zero). EUDP options are described in ABNF in the following way: option = octet_option / multioctet_option octet_option = option_kind multioctet_option = option_kind option_length option_value option_kind = %x00-FF option_length = %x00-FF option_value = 1*(%x00-FF) All options can be mandatory or optional for support. EUDP nodes MUST support all mandatory options. Support of optional options is OPTIONAL. Pre-defied options are specified in Section 2.3. 2.2.2.6. Padding Padding (variable length) - OPTIONAL field. The EUDP header padding is used to ensure that the EUDP header ends and data begins on a 32 bit boundary. The padding is composed of zeros. 2.3. Pre-Defined Options This section specifies pre-defined EUDP options. 2.3.1. 'No Operation' Option +--------+ | Kind=0 | +--------+ This option may be used between options, for example, to align the beginning of a subsequent option on a word boundary. The option is mandatory for support. 2.3.2. 'End Of Options List' Option +--------+ | Kind=1 | +--------+ This option code indicates the end of the option list. This might not coincide with the end of the EUDP header according to the Data Offset field. This is used at the end of all options, not the end of each option, and need only be used if the end of the options would not Yevstifeyev Expires June 24, 2011 [Page 6] INTERNET DRAFT EUDP December 21, 2010 otherwise coincide with the end of the EUDP header. The option is mandatory for support. 2.3.3. 'Echo Request' Option +--------+--------+-------//-------+ | Kind=2 | Length | Data | +--------+--------+-------//-------+ The 'Echo Request' option is used to provide the possibility of echo debugging using the EUDP. The 'Data' part of option may consist of arbitrary octets. The option is mandatory for support. 2.3.4. 'Echo Response' Option +--------+--------+-------//-------+ | Kind=3 | Length | Data | +--------+--------+-------//-------+ The 'Echo Response' option is used to answer the packets with 'Echo Request' option. The packet consisting 'Echo Response' option SHOULD be send after receiving any EUDP packet with 'Echo Request' option. The 'Data' part of the option MUST be the same as in received 'Echo Request' option. The option is mandatory for support. 2.3.5. 'MD5 Digest' Option +---------+---------+-------------------+ | Kind=4 |Length=18| MD5 digest... | +---------+---------+-------------------+ | | +---------------------------------------+ | | +---------------------------------------+ | | +-------------------+-------------------+ | | +-------------------+ The 'MD5 Digest' option contains the MD5 [RFC1321] hash of EUDP packet, which is always 16 bytes long. While calculating the digest, the value of digest MUST be treated as zeroes. Yevstifeyev Expires June 24, 2011 [Page 7] INTERNET DRAFT EUDP December 21, 2010 The option is optional for support. 2.4. Pseudo Header EUDP does not use pseudo header. 2.5. Compatibility with UDP The applications which use UDP can safely use EUDP with no options instead. Yevstifeyev Expires June 24, 2011 [Page 8] INTERNET DRAFT EUDP December 21, 2010 3. Security Considerations Generic security issues for UDP concern EUDP as well. Additional security can be provided by additional options. This document does not define such options. UDP itself does not provide any authentication features. Such features can be provided by additional options, which are not defined by this document. Yevstifeyev Expires June 24, 2011 [Page 9] INTERNET DRAFT EUDP December 21, 2010 4. IANA Considerations 4.1. EUDP Options Numbers Registry IANA is asked to create and maintain the registry named 'EUDP Options Numbers Registry', which consists of 4 values: Option Kind, Option Length, Support Criteria, Description and Reference. Option Kind value is integer; values from 0 to 255 are assigned. Option length may be omitted (for one octet options), be stated as an integer or 'variable'. Support Criteria can be assigned as 'Mandatory' and 'Optional'. The initial values are given below; assignments to this registry are to be made following the RFC Required policies [RFC5226]. The Option Kind 0 is assigned for No Operation option. No Option Length value is assigned for it. The Support Criteria for this option is 'mandatory'. The Reference document is this RFC xxxx. The Option Kind 1 is assigned for End Of Options List option. No Option Length value is assigned for it. The Support Criteria for this option is 'mandatory'. The Reference document is this RFC xxxx. The Option Kind 2 is assigned for Echo Request option. The Option Length value 'variable' is assigned for it. The Support Criteria for this option is 'mandatory'. The Reference document is this RFC xxxx. The Option Kind 3 is assigned for Echo Response option. The Option Length value 'variable' is assigned for it. The Support Criteria for this option is 'mandatory'. The Reference document is this RFC xxxx. The Option Kind 4 is assigned for MD5 Digest option. The Option Length value 18 is assigned for it. The Support Criteria for this option is 'optional'. The Reference document is this RFC xxxx. The Option Kinds 5-253 are available for assignment. The Option Kind 254 is permanently reserved for experimentation purposes. The Option Kind 255 is permanently reserved for future use. [RFC Editor: Please replace xxxx with assigned RFC number] 4.2. EUDP Ports Registry As EUDP uses the same port set as UDP, IANA is asked to mark that all assigned UDP ports can be used with EUDP as well. Yevstifeyev Expires June 24, 2011 [Page 10] INTERNET DRAFT EUDP December 21, 2010 4.3. IP Protocol Number Assignment IANA has assigned the IP protocol number TBD1 to be used with EUDP. Yevstifeyev Expires June 24, 2011 [Page 11] INTERNET DRAFT EUDP December 21, 2010 5. References 5.1. Normative References [RFC768] Postel, J., "User Datagram Protocol", STD 6, RFC 768, August 1980. [RFC1321] Rivest, R., "The MD5 Message-Digest Algorithm", RFC 1321, April 1992. [RFC2119] S. Bradner, "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997. [RFC5234] Crocker, D., Ed., and P. Overell, "Augmented BNF for Syntax Specifications: ABNF", STD 68, RFC 5234, January 2008. 5.2. Informative References [RFC793] Postel, J., "Transmission Control Protocol", STD 7, RFC 793, September 1981. [RFC3828] Larzon, L-A., Degermark, M., Pink, S., Jonsson, L-E., Ed., and G. Fairhurst, Ed., "The Lightweight User Datagram Protocol (UDP-Lite)", RFC 3828, July 2004. [RFC4340] Kohler, E., Handley, M., and S. Floyd, "Datagram Congestion Control Protocol (DCCP)", RFC 4340, March 2006. [RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing an IANA Considerations Section in RFCs", BCP 26, RFC 5226, May 2008. Author's Addresses Mykyta Yevstifeyev 8 Kuzovkov St., flat 25, Kotovsk, Ukraine EMail: evnikita2@gmail.com Yevstifeyev Expires June 24, 2011 [Page 12]