INTERNET-DRAFT                                            M. Yevstifeyev
Intended Status: Experimental                          December 21, 2010
Expires: June 24, 2011


                   Extendable User Datagram Protocol
                      <draft-yevstifeyev-eudp-02>

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            = <defined in Section 2.2.2>

   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]