[Docs] [txt|pdf] [Tracker] [Email] [Nits]

Versions: 00

loops                                                         C. Bormann
Internet-Draft                                   Universitaet Bremen TZI
Intended status: Standards Track                       November 04, 2019
Expires: May 7, 2020


                       Embedding LOOPS in Geneve
                 draft-bormann-loops-geneve-binding-00

Abstract

   LOOPS (Local Optimizations on Path Segments) aims to provide local
   in-network loss recovery.  It can be used with tunneling protocols to
   efficiently recover lost packets on a single segment of an end-to-end
   path instead of leaving recovery to the end-to-end protocol,
   traversing the entire path.

   [I-D.welzl-loops-gen-info] defines the information to be carried
   between LOOPS ingress and egress nodes in a generic way, giving a
   guideline on defining the common elements to embed LOOPS functions in
   various tunnel protocols.  The present document specifies how to
   embed LOOPS in a specific overlay tunnel protocol, Geneve
   [I-D.ietf-nvo3-geneve].

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 https://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."

   This Internet-Draft will expire on May 7, 2020.

Copyright Notice

   Copyright (c) 2019 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



Bormann                    Expires May 7, 2020                  [Page 1]


Internet-Draft            Embed LOOPS in Geneve            November 2019


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

Table of Contents

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   2
   2.  Terminology . . . . . . . . . . . . . . . . . . . . . . . . .   3
   3.  Geneve LOOPS Frame Format . . . . . . . . . . . . . . . . . .   3
     3.1.  Flags and Flag Based Data . . . . . . . . . . . . . . . .   5
   4.  Security Considerations . . . . . . . . . . . . . . . . . . .   6
   5.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .   6
     5.1.  Geneve Option Class . . . . . . . . . . . . . . . . . . .   6
     5.2.  LOOPS Geneve Type Numbers . . . . . . . . . . . . . . . .   6
   6.  References  . . . . . . . . . . . . . . . . . . . . . . . . .   7
     6.1.  Normative References  . . . . . . . . . . . . . . . . . .   7
     6.2.  Informative References  . . . . . . . . . . . . . . . . .   7
   Acknowledgements  . . . . . . . . . . . . . . . . . . . . . . . .   8
   Author's Address  . . . . . . . . . . . . . . . . . . . . . . . .   8

1.  Introduction

   LOOPS (Local Optimizations on Path Segments) aims to provide local
   in-network loss recovery.  The LOOPS problems and opportunities draft
   [I-D.li-tsvwg-loops-problem-opportunities] illustrates some typical
   scenarios where LOOPS are applicable.  One way to use LOOPS is to map
   it onto a tunnel protocol.  The path segment on which LOOPS is
   applied then is a tunnel, which can be an existing one or created on
   purpose.

   LOOPS allows the packet loss recovery to be performed over specific
   segments instead of end-to-end, enabling faster and more reliable
   data delivery.  [I-D.welzl-loops-gen-info] defines the information to
   be carried between LOOPS ingress and egress nodes in a generic way,
   giving a guideline on defining the common elements to embed LOOPS
   functions in various tunnel protocols.

   Geneve [I-D.ietf-nvo3-geneve] is an encapsulation protocol that can
   be used to create overlay tunnels.  It defines an extensible TLV
   structure to carry so-called "tunnel options".  The present document
   employs this flexibility, specifying how to embed LOOPS in Geneve.
   This specification covers the format and Geneve-specific procedures
   only: the actual LOOPS function and procedures are defined in
   [I-D.welzl-loops-gen-info].



Bormann                    Expires May 7, 2020                  [Page 2]


Internet-Draft            Embed LOOPS in Geneve            November 2019


   LOOPS has two modes of loss recovery, retransmission and forward
   error correction (FEC).  The current version of the present document
   covers retransmission only.

2.  Terminology

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
   "OPTIONAL" in this document are to be interpreted as described in
   BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all
   capitals, as shown here.

   This document makes use of the terminology defined in
   [I-D.welzl-loops-gen-info].

3.  Geneve LOOPS Frame Format

   Figure 1 shows the format of the Geneve Header and a single Geneve
   Option, as defined in [I-D.ietf-nvo3-geneve].  Geneve LOOPS defines a
   new Option class called LOOPS to carry forward and backward
   information.

   Geneve Header and Option:

    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |Ver|  Opt Len  |O|C|    Rsvd.  |          Protocol Type        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |        Virtual Network Identifier (VNI)       |    Reserved   |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                    Variable Length Options                    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |          Option Class         |      Type     |R|R|R| Length  |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                      Variable Option Data                     |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                 Figure 1: Geneve Header and Option Format

   In the Geneve Option structure, a Geneve LOOPS option uses the
   following values:

   o  Option Class: TBD1 for LOOPS (see Section 5).




Bormann                    Expires May 7, 2020                  [Page 3]


Internet-Draft            Embed LOOPS in Geneve            November 2019


   o  Type: Further to the substructure already defined in Geneve, which
      uses bit 0 (the most significant bit) to indicate a critical
      option, LOOPS defines bit 1 as the M bit to indicate the LOOPS
      retransmission mode, see Figure 2.  [[_5: So what do we use the
      remaining six bits for?  Could we move over some of the flags?]]
      The present document only addresses messages with M=0.

    0 1 2 3 4 5 6 7
   +-+-+-+-+-+-+-+-+
   |C|    LType    |
   +-+-+-+-+-+-+-+-+

            Figure 2: Type Field Format in Geneve LOOPS Option

   o  C: Critical bit as defined in [I-D.ietf-nvo3-geneve].

   o  LType: LOOPS Mode.

      *  0: Retransmission mode.  In this mode, the LOOPS option format
         and operations follow this document.

      *  64: FEC mode

      *  Further mode values can be assigned in an IANA registry (see
         Section 5.2).

   o  Length: Length of Variable Option Data field, expressed in four
      byte multiples excluding the option header, ranging from 0 to 31.
      As the option header is another four bytes, the total length of
      the option in bytes is therefore 4 * (1 + Length), yielding a
      maximum total length of 128 bytes.

   o  Variable option data: consists of two parts, Flags and Flag Based
      Data, as shown in Figure 3.

      *  Flags: 16 bits, as described in next subsection.  Some of the
         flags indicate the presence of additional data in the field of
         Flag Based Data.

      *  Flag Based Data: This field consists of one or multiple
         optional data blocks whose presence is indicated by the
         corresponding flag bits.  Any remaining bytes needed to reach a
         multiple of four bytes are filled with zeroes.








Bormann                    Expires May 7, 2020                  [Page 4]


Internet-Draft            Embed LOOPS in Geneve            November 2019


     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
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |           Flags               |                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               |
    |                                                               |
    ~                         Flag Based Data                       ~
    |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

       Figure 3: Variable Option Data Format in Geneve LOOPS Option

3.1.  Flags and Flag Based Data

   Flags for LOOPS Tunnel Options are defined in Figure 4.  Some flags
   cause additional data blocks to occur in the Flags Based Data field.
   Those additional data blocks are placed in the order of the flags
   causing them.

     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |I|R|D|S|T|E|A|R|             |B|
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

      Figure 4: Flags in Variable Option Data in Geneve LOOPS Option

   A number of the flag bits are used on their own and do not cause
   carrying additional data:

   o  I: Initial Packet Sequence Number (PSN) flag; may be set by the
      LOOPS ingress to notify the egress about using a new initial PSN.

   o  R: Initial PSN Received flag; echo of I flag provided by the LOOPS
      egress.

   o  D: ACK Desired flag; set by the LOOPS ingress if it wants the
      egress to generate an acknowledgement immediately upon receiving a
      particular packet.

   These flag bits cause the addition of a single 32-bit number each:

   o  S: PSN flag; indicates a PSN data block is carried in the Flag
      Based Data field.  It must be set when a packet payload is
      present.  It must not be set if the packet is a pure LOOPS ACK
      packet, i.e. when no payload is included in the packet.

   o  T: Timestamp flag.  When set, it indicates a Timestamp data block
      is carried in the Flag Based Data field.  [[_9: Might want to have
      "timestamp" and "echo" fields of less or more than 4 bytes.]]



Bormann                    Expires May 7, 2020                  [Page 5]


Internet-Draft            Embed LOOPS in Geneve            November 2019


   o  E: Echoed Timestamp flag.  When set, it indicates an Echoed
      Timestamp data block is carried in the Flag Based Data field.

   o  A: ACK number flag.  When set, it indicates the presence of a
      Block 1 ACK information block.

   o  R: Reception time flag: May only be set if A is set.  Indicates
      that an absolute reception time is given (Format TBD).

   Finally, a single flag bit is defined that causes the addition of a
   variable-length block (therefore this flag is put as the least
   significant bit of Flags):

   o  B: Block 2 flag.  When set, it indicates the presence a Block 2
      ACK information block, with the following format: TBD [[_6: copy
      over the structure we have in gen-info.]]

   Acknowledgement information can be sent as a pure ACK packet without
   payload or piggybacked in a data packet.

4.  Security Considerations

   The security considerations of [I-D.welzl-loops-gen-info] and
   [I-D.ietf-nvo3-geneve] apply.

5.  IANA Considerations

5.1.  Geneve Option Class

   IANA is requested to assign a new option class for LOOPS from the
   "Geneve Option Class" registry.

   +--------------+----------------------------------------------------+
   | Option Class | Description                                        |
   +--------------+----------------------------------------------------+
   | TBD1         | LOOPS (Local Optimizations on Path Segments)       |
   |              | [RFCthis]                                          |
   +--------------+----------------------------------------------------+

5.2.  LOOPS Geneve Type Numbers

   IANA is requested to create a registry for type numbers ("LType") as
   used in the TBD1 option class for LOOPS from the "Geneve Option
   Class" registry, with the following three columns:

   Type Number:  Integer between 0 and 127

   Description:  Short Description



Bormann                    Expires May 7, 2020                  [Page 6]


Internet-Draft            Embed LOOPS in Geneve            November 2019


   Reference:  Reference to Specification

   The initial contents of the registry is:

             +-------------+---------------------+-----------+
             | Type Number | Description         | Reference |
             +-------------+---------------------+-----------+
             | 0           | Retransmission mode | [RFCthis] |
             | 64          | FEC mode            | [RFCthis] |
             +-------------+---------------------+-----------+

   (Registry policy TBD, probably Specification Required.)

6.  References

6.1.  Normative References

   [I-D.welzl-loops-gen-info]
              Welzl, M. and C. Bormann, "LOOPS Generic Information Set",
              draft-welzl-loops-gen-info-01 (work in progress),
              September 2019.

   [I-D.ietf-nvo3-geneve]
              Gross, J., Ganga, I., and T. Sridhar, "Geneve: Generic
              Network Virtualization Encapsulation", draft-ietf-
              nvo3-geneve-14 (work in progress), September 2019.

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119,
              DOI 10.17487/RFC2119, March 1997,
              <https://www.rfc-editor.org/info/rfc2119>.

   [RFC8174]  Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
              2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
              May 2017, <https://www.rfc-editor.org/info/rfc8174>.

6.2.  Informative References

   [I-D.li-tsvwg-loops-problem-opportunities]
              Yizhou, L., Zhou, X., Boucadair, M., and J. Wang, "LOOPS
              (Localized Optimizations on Path Segments) Problem
              Statement and Opportunities for Network-Assisted
              Performance Enhancement", draft-li-tsvwg-loops-problem-
              opportunities-03 (work in progress), July 2019.







Bormann                    Expires May 7, 2020                  [Page 7]


Internet-Draft            Embed LOOPS in Geneve            November 2019


Acknowledgements

   Sami Boutros provided some advice on the use of Geneve in this
   protocol binding.

Author's Address

   Carsten Bormann
   Universitaet Bremen TZI
   Postfach 330440
   Bremen  D-28359
   Germany

   Phone: +49-421-218-63921
   Email: cabo@tzi.org




































Bormann                    Expires May 7, 2020                  [Page 8]


Html markup produced by rfcmarkup 1.129d, available from https://tools.ietf.org/tools/rfcmarkup/