Internet DRAFT - draft-eromenko-ipff-fdp

draft-eromenko-ipff-fdp



INTERNET-DRAFT
"Internet Protocol Five Fields - Fragmented Datagram Protocol", 
Alexey Eromenko, 2016-09-29, 
<draft-eromenko-ipff-fdp-00.txt>
expiration date: 2017-03-29


Intended status: Standards Track
                                                              A.Eromenko
                                                          September 2016



                      Fragmented Datagram Protocol
                    --------------------------------
                 for Internet Protocol "Five Fields" (IP-FF)
                          Specification draft

Abstract

A heavy-weight version of the UDP protocol, intended to provide simple
 fragmentation mechanism with Internet Protocol "Five Fields", along 
 with a stronger checksum at a cost of somewhat higher overhead.


Status of This Memo

   This Internet-Draft is submitted in full conformance with the
   provisions of BCP 78 and BCP 79.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF).  Note that other groups may also distribute
   working documents as Internet-Drafts.  The list of current Internet-
   Drafts is at http://datatracker.ietf.org/drafts/current/.

   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."

Copyright Notice

   Copyright (c) 2015 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
   the Trust Legal Provisions and are provided without warranty as
   described in the Simplified BSD License.

Introduction
------------

This Fragmented Datagram  Protocol  (FDP)  is  defined  to  make  
datagram   mode  communication possible in  the computing environment,
  where fragmented transmission and reception are needed.
FDP conceptually is a heavy-weight UDP if you will.


Format
------
                   Fragmented Datagram Header Format

    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  4|                                                               |
   +                       CRC64c Checksum                         +
  8|                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 12|M|       Fragment Offset       |                               |
   |F|                             |                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               +
 16|                       Fragment Identifier                     |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   +                          data octets ...                      .
   |                                                               .
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-...
(bytes)

Fields
------

   CRC64c Checksum (64-bit)  -- 64-bit checksum. See CRC64 Checksum.

   M flag               1 = more fragments; 0 = last fragment.

   Fragment Offset      15-bit unsigned integer.  The offset, in 8-byte
                        units, of the data following this header,
                        relative to the start of the datagram.

   Fragment Identifier  48-bit identifier is needed to distinguish
                        fragments from different datagrams.

   FDP segment must only be assembled when the six-tuple matches:
   1. Source and Destination IP address
   2. Source and Destination ports / Flow
   3. Protocol
   4. Same Fragment Identifier

   *NOTE: Fragmentation is incompatible with very big Jumbograms. 
   (IP packets sized > 256 KiB)

CRC64 Checksum
--------------

   Consists of parts of the IP header, the FDP header, 
   and the data,  padded  with zero bytes  at the end (if  necessary)
   to  make  a multiple of two bytes.
   This checksum procedure is similar to what is used in TCP.64.

   If the computed  checksum  is zero,  it is transmitted  as all ones.
   An all zero  transmitted checksum  value means that the transmitter
   generated  no checksum  (for debugging or for higher level protocols
   that don't care or for ILNP purposes).

   Design note:

   Checksum in FDP covers *only* one-single fragment, not the entire
   packet. This is done to simplify processing by middleboxes, so for 
   them it will look like a Checksum covers a packet, they don't need
   to re-assemble the fragments into a packet to change or validate 
   checksum anymore.
   This is done particularly for load-balancers and NAT Routers.

   Additionally, because in IP-FF ports are at layer 3, are visible,
   which further simplifies middlebox design and implementation.

Implied Items
-------------

   Ports, while logically belong to Transport Layer, have moved to the
   IP layer in IP-FF, and this is to speed-up certain decisions.

   Source Port is an optional field, when meaningful, it indicates the 
   port of the sending  process,  and may be assumed  to be the port
   to which a reply should  be addressed  in the absence of any other 
   information.  If not used, a value of zero is inserted.

   Destination  Port has a meaning  within  the  context  of  a  
   particular internet destination address.

   Length of the data is taken from upper level IPFF protocol.

   The pseudo  header  conceptually prefixed to the FDP header contains
   the source  address,  the destination  address,  the protocol,  and
   the  FDP length.   This information gives protection against 
   misrouted datagrams.

   The header structure must be taken from [IPFF] document RFC.

Protocol Application
--------------------

Existing UDP applications may be migrated over to FDP.

Protocol Number
---------------

This is protocol number (to be assigned by IANA), 
when used in the Internet Protocol, Five Fields.

Explaining Fragmentation
------------------------

   Fragmented Datagram Protocol works in a similar way to IPv6 fragmentation,
   with the added bonus that all the IP-FF extensions, checksums and ports
   are part of each fragment, which adds simplicity. (at a cost of some 
   overhead)

   In order to send a packet that is too large to fit in the MTU of the
   path to its destination, a source node may divide the packet into
   fragments and send each fragment as a separate packet, to be
   reassembled at the receiver.

   For every packet that is to be fragmented, the source node generates
   an Identification value. The Identification must be different than
   that of any other fragmented packet sent recently* with the same
   Source Address, Destination Address, Source Port and Destination Port.

      * "recently" means within the maximum likely lifetime of a packet,
        including transit time from source to destination and time spent
        awaiting reassembly with other fragments of the same packet.
        However, it is not required that a source node know the maximum
        packet lifetime.  Rather, it is assumed that the requirement can
        be met by maintaining the Identification value as a simple, 48-
        bit, "wrap-around" counter, incremented each time a packet must
        be fragmented.  It is an implementation choice whether to
        maintain a single counter for the node or multiple counters,
        e.g., one for each of the node's possible source addresses, or
        one for each active (source address, destination address,
        and ports) combination.

   The following rules govern reassembly:

      An original packet is reassembled only from fragment packets that
      have the same Source Address, Destination Address, Source Port,
      Destination Port, and Fragment Identification.

      If all the fragments arrived, with correct checksums, application
      should receive a complete packet.
      Else packet must be dropped.


Acknowledgement
---------------

Originally UDP was written by J.Postel as RFC-768, modified by Alexey 
 Eromenko for the purposes of Internet Protocol "Five Fields".

FDP borrows heavily from IPv6-style-fragmentation by end nodes 
 [RFC-2460].


Author Contacts

   Alexey Eromenko
   Israel

   Skype: Fenix_NBK_
   EMail: al4321@gmail.com
   Facebook: https://www.facebook.com/technologov


INTERNET-DRAFT
Alexey

expiration date: 2017-03-29