<?xml version='1.0' encoding='utf-8'?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" category="std" consensus="true" docName="draft-bormann-loops-geneve-binding-01" indexInclude="true" ipr="trust200902" prepTime="2020-06-12T21:51:10" scripts="Common,Latin" sortRefs="false" submissionType="IETF" symRefs="true" tocDepth="3" tocInclude="true" xml:lang="en">
  <!-- xml2rfc v2v3 conversion 2.45.0 -->
  <front>
    <title abbrev="Embed LOOPS in Geneve">Embedding LOOPS in Geneve</title>
    <seriesInfo name="Internet-Draft" value="draft-bormann-loops-geneve-binding-01" stream="IETF"/>
    <author initials="C." surname="Bormann" fullname="Carsten Bormann">
      <organization showOnFrontPage="true">Universitaet Bremen TZI</organization>
      <address>
        <postal>
          <street>Postfach 330440</street>
          <street>Bremen D-28359</street>
          <street>Germany</street>
        </postal>
        <phone>+49-421-218-63921</phone>
        <email>cabo@tzi.org</email>
      </address>
    </author>
    <date month="06" year="2020" day="12"/>
    <workgroup>loops</workgroup>
    <abstract pn="section-abstract">
      <t pn="section-abstract-1">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.</t>
      <t pn="section-abstract-2"><xref target="I-D.welzl-loops-gen-info" format="default" sectionFormat="of" derivedContent="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 the overlay tunnel protocol chosen for the initial
LOOPS specification, Geneve <xref target="I-D.ietf-nvo3-geneve" format="default" sectionFormat="of" derivedContent="I-D.ietf-nvo3-geneve"/>.</t>
    </abstract>
    <boilerplate>
      <section anchor="status-of-memo" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.1">
        <name slugifiedName="name-status-of-this-memo">Status of This Memo</name>
        <t pn="section-boilerplate.1-1">
        This Internet-Draft is submitted in full conformance with the
        provisions of BCP 78 and BCP 79.
        </t>
        <t pn="section-boilerplate.1-2">
        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 <eref target="https://datatracker.ietf.org/drafts/current/" brackets="none"/>.
        </t>
        <t pn="section-boilerplate.1-3">
        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."
        </t>
        <t pn="section-boilerplate.1-4">
        This Internet-Draft will expire on 14 December 2020.
        </t>
      </section>
      <section anchor="copyright" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.2">
        <name slugifiedName="name-copyright-notice">Copyright Notice</name>
        <t pn="section-boilerplate.2-1">
            Copyright (c) 2020 IETF Trust and the persons identified as the
            document authors. All rights reserved.
        </t>
        <t pn="section-boilerplate.2-2">
            This document is subject to BCP 78 and the IETF Trust's Legal
            Provisions Relating to IETF Documents
            (<eref target="https://trustee.ietf.org/license-info" brackets="none"/>) 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.
        </t>
      </section>
    </boilerplate>
    <toc>
      <section anchor="toc" numbered="false" removeInRFC="false" toc="exclude" pn="section-toc.1">
        <name slugifiedName="name-table-of-contents">Table of Contents</name>
        <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1">
          <li pn="section-toc.1-1.1">
            <t keepWithNext="true" pn="section-toc.1-1.1.1"><xref derivedContent="1" format="counter" sectionFormat="of" target="section-1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-introduction">Introduction</xref></t>
          </li>
          <li pn="section-toc.1-1.2">
            <t keepWithNext="true" pn="section-toc.1-1.2.1"><xref derivedContent="2" format="counter" sectionFormat="of" target="section-2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-terminology">Terminology</xref></t>
          </li>
          <li pn="section-toc.1-1.3">
            <t pn="section-toc.1-1.3.1"><xref derivedContent="3" format="counter" sectionFormat="of" target="section-3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-geneve-loops-frame-format">Geneve LOOPS Frame Format</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.3.2">
              <li pn="section-toc.1-1.3.2.1">
                <t keepWithNext="true" pn="section-toc.1-1.3.2.1.1"><xref derivedContent="3.1" format="counter" sectionFormat="of" target="section-3.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-flags-and-flag-based-data">Flags and Flag Based Data</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.4">
            <t pn="section-toc.1-1.4.1"><xref derivedContent="4" format="counter" sectionFormat="of" target="section-4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-security-considerations">Security Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.5">
            <t pn="section-toc.1-1.5.1"><xref derivedContent="5" format="counter" sectionFormat="of" target="section-5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-iana-considerations">IANA Considerations</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.5.2">
              <li pn="section-toc.1-1.5.2.1">
                <t pn="section-toc.1-1.5.2.1.1"><xref derivedContent="5.1" format="counter" sectionFormat="of" target="section-5.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-geneve-option-class">Geneve Option Class</xref></t>
              </li>
              <li pn="section-toc.1-1.5.2.2">
                <t pn="section-toc.1-1.5.2.2.1"><xref derivedContent="5.2" format="counter" sectionFormat="of" target="section-5.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-loops-geneve-type-numbers">LOOPS Geneve Type Numbers</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.6">
            <t pn="section-toc.1-1.6.1"><xref derivedContent="6" format="counter" sectionFormat="of" target="section-6"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-references">References</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.6.2">
              <li pn="section-toc.1-1.6.2.1">
                <t pn="section-toc.1-1.6.2.1.1"><xref derivedContent="6.1" format="counter" sectionFormat="of" target="section-6.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-normative-references">Normative References</xref></t>
              </li>
              <li pn="section-toc.1-1.6.2.2">
                <t pn="section-toc.1-1.6.2.2.1"><xref derivedContent="6.2" format="counter" sectionFormat="of" target="section-6.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-informative-references">Informative References</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.7">
            <t pn="section-toc.1-1.7.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.a"/><xref derivedContent="" format="title" sectionFormat="of" target="name-acknowledgements">Acknowledgements</xref></t>
          </li>
          <li pn="section-toc.1-1.8">
            <t pn="section-toc.1-1.8.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.b"/><xref derivedContent="" format="title" sectionFormat="of" target="name-authors-address">Author's Address</xref></t>
          </li>
        </ul>
      </section>
    </toc>
  </front>
  <middle>
    <section anchor="introduction" numbered="true" toc="include" removeInRFC="false" pn="section-1">
      <name slugifiedName="name-introduction">Introduction</name>
      <t pn="section-1-1">LOOPS (Local Optimizations on Path Segments) aims to provide local in-network loss recovery.
The LOOPS problems and opportunities draft
<xref target="I-D.li-tsvwg-loops-problem-opportunities" format="default" sectionFormat="of" derivedContent="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.</t>
      <t pn="section-1-2">LOOPS allows the packet loss recovery to be performed over specific
segments instead of end-to-end, enabling faster and more reliable data delivery.
<xref target="I-D.welzl-loops-gen-info" format="default" sectionFormat="of" derivedContent="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.</t>
      <t pn="section-1-3">Geneve <xref target="I-D.ietf-nvo3-geneve" format="default" sectionFormat="of" derivedContent="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
<xref target="I-D.welzl-loops-gen-info" format="default" sectionFormat="of" derivedContent="I-D.welzl-loops-gen-info"/>.</t>
      <t pn="section-1-4">LOOPS has two modes of loss recovery, retransmission and forward error correction (FEC).
The current version of the present document covers retransmission only.</t>
    </section>
    <section anchor="terminology" numbered="true" toc="include" removeInRFC="false" pn="section-2">
      <name slugifiedName="name-terminology">Terminology</name>
      <t pn="section-2-1">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 <xref target="RFC2119" format="default" sectionFormat="of" derivedContent="RFC2119"/> <xref target="RFC8174" format="default" sectionFormat="of" derivedContent="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <t pn="section-2-2">This document makes use of the terminology defined in <xref target="I-D.welzl-loops-gen-info" format="default" sectionFormat="of" derivedContent="I-D.welzl-loops-gen-info"/>.</t>
    </section>
    <section anchor="geneve-loops-frame-format" numbered="true" toc="include" removeInRFC="false" pn="section-3">
      <name slugifiedName="name-geneve-loops-frame-format">Geneve LOOPS Frame Format</name>
      <t pn="section-3-1"><xref target="fig-geneve-format" format="default" sectionFormat="of" derivedContent="Figure 1"/> shows the format of the Geneve Header and a
single Geneve Option, as defined in <xref target="I-D.ietf-nvo3-geneve" format="default" sectionFormat="of" derivedContent="I-D.ietf-nvo3-geneve"/>.
Geneve LOOPS defines a new Option class called LOOPS to carry LOOPS forward
and backward information.</t>
      <t pn="section-3-2">Geneve Header and Option:</t>
      <figure anchor="fig-geneve-format" align="left" suppress-title="false" pn="figure-1">
        <name slugifiedName="name-geneve-header-and-option-fo">Geneve Header and Option Format</name>
        <artwork name="" type="" align="left" alt="" pn="section-3-3.1"><![CDATA[
 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                     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
      </figure>
      <t pn="section-3-4">In the Geneve Option structure, a Geneve LOOPS option uses the following values:</t>
      <ul spacing="normal" bare="false" empty="false" pn="section-3-5">
        <li pn="section-3-5.1">Option Class: TBD1 for LOOPS (see <xref target="iana" format="default" sectionFormat="of" derivedContent="Section 5"/>).</li>
        <li pn="section-3-5.2">Type: Based on the substructure already defined in Geneve, which
uses bit 0 (the most significant bit) to indicate a critical option
(see see <xref target="fig-type-format" format="default" sectionFormat="of" derivedContent="Figure 2"/>),
LOOPS defines two type numbers: 0 for LOOPS retransmission
mode, and 64 for FEC mode.
The present document only addresses messages with LType=0.</li>
      </ul>
      <t pn="section-3-6">TBD: Additional type numbers could be defined, possibly obviating the
need for some of the flags in the current option structure.</t>
      <figure anchor="fig-type-format" align="left" suppress-title="false" pn="figure-2">
        <name slugifiedName="name-type-field-format-in-geneve">Type Field Format in Geneve LOOPS Option</name>
        <artwork name="" type="" align="left" alt="" pn="section-3-7.1"><![CDATA[
 0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+
|C|    LType    |
+-+-+-+-+-+-+-+-+
]]></artwork>
      </figure>
      <ul spacing="normal" bare="false" empty="false" pn="section-3-8">
        <li pn="section-3-8.1">C: Critical bit as defined in <xref target="I-D.ietf-nvo3-geneve" format="default" sectionFormat="of" derivedContent="I-D.ietf-nvo3-geneve"/>.</li>
        <li pn="section-3-8.2">
          <t pn="section-3-8.2.1">LType: LOOPS Mode.
          </t>
          <ul spacing="normal" bare="false" empty="false" pn="section-3-8.2.2">
            <li pn="section-3-8.2.2.1">0: Retransmission mode. In this mode, the LOOPS option format
and operations follow this document.</li>
            <li pn="section-3-8.2.2.2">64: FEC mode</li>
            <li pn="section-3-8.2.2.3">Further mode values can be assigned in an IANA registry (see <xref target="ltype" format="default" sectionFormat="of" derivedContent="Section 5.2"/>).</li>
          </ul>
        </li>
        <li pn="section-3-8.3">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.</li>
        <li pn="section-3-8.4">
          <t pn="section-3-8.4.1">Variable option data: consists of two parts, Flags and Flag Based
Data, as shown in <xref target="fig-loops-var-option-format" format="default" sectionFormat="of" derivedContent="Figure 3"/>.
          </t>
          <ul spacing="normal" bare="false" empty="false" pn="section-3-8.4.2">
            <li pn="section-3-8.4.2.1">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.</li>
            <li pn="section-3-8.4.2.2">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.</li>
          </ul>
        </li>
      </ul>
      <figure anchor="fig-loops-var-option-format" align="left" suppress-title="false" pn="figure-3">
        <name slugifiedName="name-variable-option-data-format">Variable Option Data Format in Geneve LOOPS Option</name>
        <artwork name="" type="" align="left" alt="" pn="section-3-9.1"><![CDATA[

  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                       ~
 |                                                               |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
      </figure>
      <section anchor="flags-and-flag-based-data" numbered="true" toc="include" removeInRFC="false" pn="section-3.1">
        <name slugifiedName="name-flags-and-flag-based-data">Flags and Flag Based Data</name>
        <t pn="section-3.1-1">Flags for LOOPS Tunnel Options are defined in <xref target="fig-loops-flags" format="default" sectionFormat="of" derivedContent="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.</t>
        <figure anchor="fig-loops-flags" align="left" suppress-title="false" pn="figure-4">
          <name slugifiedName="name-flags-in-variable-option-da">Flags in Variable Option Data in Geneve LOOPS Option</name>
          <artwork name="" type="" align="left" alt="" pn="section-3.1-2.1"><![CDATA[
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |I|R|D|S|T|E|A|R|             |B|
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
        <t pn="section-3.1-3">A number of the flag bits are used on their own and do not cause
carrying additional data:</t>
        <ul spacing="normal" bare="false" empty="false" pn="section-3.1-4">
          <li pn="section-3.1-4.1">I: Initial Packet Sequence Number (PSN) flag; may be set by the
LOOPS ingress to notify the egress about using a new initial PSN.</li>
          <li pn="section-3.1-4.2">R: Initial PSN Received flag; echo of I flag provided by the LOOPS
egress.</li>
          <li pn="section-3.1-4.3">D: ACK Desired flag; set by the LOOPS ingress if it wants
the egress to generate an acknowledgement immediately upon
receiving a particular packet.</li>
        </ul>
        <t pn="section-3.1-5">These flag bits cause the addition of a single 32-bit number each:</t>
        <ul spacing="normal" bare="false" empty="false" pn="section-3.1-6">
          <li pn="section-3.1-6.1">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.</li>
          <li pn="section-3.1-6.2">T: Timestamp flag. When set, it indicates a Timestamp data block
is carried in the Flag Based Data field.
      <cref anchor="_9" display="true">TBD: Might want to have "timestamp" and "echo" fields of less or more than 4 bytes.</cref></li>
        </ul>
        <ul spacing="normal" bare="false" empty="false" pn="section-3.1-7">
          <li pn="section-3.1-7.1">E: Echoed Timestamp flag. When set, it indicates an Echoed
Timestamp data block is carried in the Flag Based Data field.</li>
          <li pn="section-3.1-7.2">A: ACK number flag.  When set, it indicates the presence of a
Block 1 ACK information block.</li>
          <li pn="section-3.1-7.3">R: Reception time flag: May only be set if A is set.  Indicates
that an absolute reception time is given (Format TBD).</li>
        </ul>
        <t pn="section-3.1-8">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):</t>
        <ul spacing="normal" bare="false" empty="false" pn="section-3.1-9">
          <li pn="section-3.1-9.1">B: Block 2 flag. When set, it indicates the presence a Block 2 ACK information
block, with the following format: TBD 
      <cref anchor="_6" display="true">copy over the structure we have in gen-info.</cref></li>
        </ul>
        <t pn="section-3.1-10">Acknowledgement information can be sent as a pure ACK packet without
payload or piggybacked in a data packet.</t>
      </section>
    </section>
    <section anchor="security-considerations" numbered="true" toc="include" removeInRFC="false" pn="section-4">
      <name slugifiedName="name-security-considerations">Security Considerations</name>
      <t pn="section-4-1">The security considerations of <xref target="I-D.welzl-loops-gen-info" format="default" sectionFormat="of" derivedContent="I-D.welzl-loops-gen-info"/> and <xref target="I-D.ietf-nvo3-geneve" format="default" sectionFormat="of" derivedContent="I-D.ietf-nvo3-geneve"/> apply.</t>
    </section>
    <section anchor="iana" numbered="true" toc="include" removeInRFC="false" pn="section-5">
      <name slugifiedName="name-iana-considerations">IANA Considerations</name>
      <section anchor="geneve-option-class" numbered="true" toc="include" removeInRFC="false" pn="section-5.1">
        <name slugifiedName="name-geneve-option-class">Geneve Option Class</name>
        <t pn="section-5.1-1">IANA is requested to assign a new option class for LOOPS from the
"Geneve Option Class" registry.</t>
        <table align="center" pn="table-1">
          <thead>
            <tr>
              <th align="left" colspan="1" rowspan="1">Option Class</th>
              <th align="left" colspan="1" rowspan="1">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left" colspan="1" rowspan="1">TBD1</td>
              <td align="left" colspan="1" rowspan="1">LOOPS (Local Optimizations on Path Segments) [RFCthis]</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="ltype" numbered="true" toc="include" removeInRFC="false" pn="section-5.2">
        <name slugifiedName="name-loops-geneve-type-numbers">LOOPS Geneve Type Numbers</name>
        <t pn="section-5.2-1">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:</t>
        <dl newline="false" spacing="normal" pn="section-5.2-2">
          <dt pn="section-5.2-2.1">Type Number:</dt>
          <dd pn="section-5.2-2.2">
  Integer between 0 and 127</dd>
          <dt pn="section-5.2-2.3">Description:</dt>
          <dd pn="section-5.2-2.4">
  Short Description</dd>
          <dt pn="section-5.2-2.5">Reference:</dt>
          <dd pn="section-5.2-2.6">
  Reference to Specification</dd>
        </dl>
        <t pn="section-5.2-3">The initial contents of the registry is:</t>
        <table align="center" pn="table-2">
          <thead>
            <tr>
              <th align="left" colspan="1" rowspan="1">Type Number</th>
              <th align="left" colspan="1" rowspan="1">Description</th>
              <th align="left" colspan="1" rowspan="1">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left" colspan="1" rowspan="1">0</td>
              <td align="left" colspan="1" rowspan="1">Retransmission mode</td>
              <td align="left" colspan="1" rowspan="1">[RFCthis]</td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">64</td>
              <td align="left" colspan="1" rowspan="1">FEC mode</td>
              <td align="left" colspan="1" rowspan="1">[RFCthis]</td>
            </tr>
          </tbody>
        </table>
        <t pn="section-5.2-5">(Registry policy TBD, probably Specification Required.)</t>
      </section>
    </section>
  </middle>
  <back>
    <references pn="section-6">
      <name slugifiedName="name-references">References</name>
      <references pn="section-6.1">
        <name slugifiedName="name-normative-references">Normative References</name>
        <reference anchor="I-D.welzl-loops-gen-info" target="http://www.ietf.org/internet-drafts/draft-welzl-loops-gen-info-03.txt" quoteTitle="true" derivedAnchor="I-D.welzl-loops-gen-info">
          <front>
            <title>LOOPS Generic Information Set</title>
            <seriesInfo name="Internet-Draft" value="draft-welzl-loops-gen-info-03"/>
            <author initials="M" surname="Welzl" fullname="Michael Welzl">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="C" surname="Bormann" fullname="Carsten Bormann">
              <organization showOnFrontPage="true"/>
            </author>
            <date month="March" day="9" year="2020"/>
            <abstract>
              <t>LOOPS (Local Optimizations on Path Segments) aims to provide local (not end-to-end but in-network) recovery of lost packets to achieve better data delivery in the presence of losses. [I-D.li-tsvwg-loops-problem-opportunities] provides an overview over the problems and optimization opportunities that LOOPS could address.  The present document is a strawman for the set of information that would be interchanged in a LOOPS protocol, without already defining a specific data packet format.  The generic information set needs to be mapped to a specific encapsulation protocol to actually run the LOOPS optimizations.  The current version of this document contains sketches of bindings to GUE [I-D.ietf-intarea-gue] and Geneve [I-D.ietf-nvo3-geneve].</t>
            </abstract>
          </front>
          <refcontent>Work in Progress</refcontent>
        </reference>
        <reference anchor="I-D.ietf-nvo3-geneve" target="http://www.ietf.org/internet-drafts/draft-ietf-nvo3-geneve-16.txt" quoteTitle="true" derivedAnchor="I-D.ietf-nvo3-geneve">
          <front>
            <title>Geneve: Generic Network Virtualization Encapsulation</title>
            <seriesInfo name="Internet-Draft" value="draft-ietf-nvo3-geneve-16"/>
            <author initials="J" surname="Gross" fullname="Jesse Gross">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="I" surname="Ganga" fullname="Ilango Ganga">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="T" surname="Sridhar" fullname="T. Sridhar">
              <organization showOnFrontPage="true"/>
            </author>
            <date month="March" day="7" year="2020"/>
            <abstract>
              <t>Network virtualization involves the cooperation of devices with a wide variety of capabilities such as software and hardware tunnel endpoints, transit fabrics, and centralized control clusters.  As a result of their role in tying together different elements in the system, the requirements on tunnels are influenced by all of these components.  Flexibility is therefore the most important aspect of a tunnel protocol if it is to keep pace with the evolution of the system.  This document describes Geneve, an encapsulation protocol designed to recognize and accommodate these changing capabilities and needs.</t>
            </abstract>
          </front>
          <refcontent>Work in Progress</refcontent>
        </reference>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" quoteTitle="true" derivedAnchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <seriesInfo name="BCP" value="14"/>
            <seriesInfo name="RFC" value="2119"/>
            <seriesInfo name="DOI" value="10.17487/RFC2119"/>
            <author initials="S." surname="Bradner" fullname="S. Bradner">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="1997" month="March"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized. This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" quoteTitle="true" derivedAnchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <seriesInfo name="BCP" value="14"/>
            <seriesInfo name="RFC" value="8174"/>
            <seriesInfo name="DOI" value="10.17487/RFC8174"/>
            <author initials="B." surname="Leiba" fullname="B. Leiba">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2017" month="May"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t>
            </abstract>
          </front>
        </reference>
      </references>
      <references pn="section-6.2">
        <name slugifiedName="name-informative-references">Informative References</name>
        <reference anchor="I-D.li-tsvwg-loops-problem-opportunities" target="http://www.ietf.org/internet-drafts/draft-li-tsvwg-loops-problem-opportunities-04.txt" quoteTitle="true" derivedAnchor="I-D.li-tsvwg-loops-problem-opportunities">
          <front>
            <title>LOOPS (Localized Optimizations on Path Segments) Problem Statement and Opportunities for Network-Assisted Performance Enhancement</title>
            <seriesInfo name="Internet-Draft" value="draft-li-tsvwg-loops-problem-opportunities-04"/>
            <author initials="L" surname="Yizhou" fullname="Li Yizhou">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="X" surname="Zhou" fullname="Xingwang Zhou">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="M" surname="Boucadair" fullname="Mohamed Boucadair">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="J" surname="Wang" fullname="Jianglong Wang">
              <organization showOnFrontPage="true"/>
            </author>
            <date month="January" day="6" year="2020"/>
            <abstract>
              <t>In various network deployments, end to end forwarding paths are partitioned into multiple segments.  For example, in some cloud-based WAN communications, stitching multiple overlay tunnels are used for traffic policy enforcement matters such as to optimize traffic distribution or to select paths exposing a lower latency.  Likewise, in satellite communications, the communication path is decomposed into two terrestrial segments and a satellite segment.  Such long- haul paths are naturally composed of multiple network segments with various encapsulation schemes.  Packet loss may show different characteristics on different segments.  Traditional transport protocols (e.g., TCP) respond to packet loss slowly especially in long-haul networks: they either wait for some signal from the receiver to indicate a loss and then retransmit from the sender or rely on sender's timeout which is often quite long. Non-congestive loss may make the TCP sender over-reduce the sending rate unnecessarily.  With the increase of end-to-end transport encryption (e.g., QUIC), traditional PEP (performance enhancing proxy) techniques such as TCP splitting are no longer applicable.  LOOPS (Local Optimizations on Path Segments) is a network-assisted performance enhancement over path segment and it aims to provide local in-network recovery to achieve better data delivery by making packet loss recovery faster and by avoiding the senders over-reducing their sending rate.  In an overlay network scenario, LOOPS can be performed over a variety of the existing, or purposely created, tunnel-based path segments.</t>
            </abstract>
          </front>
          <refcontent>Work in Progress</refcontent>
        </reference>
      </references>
    </references>
    <section numbered="false" anchor="acknowledgements" toc="include" removeInRFC="false" pn="section-appendix.a">
      <name slugifiedName="name-acknowledgements">Acknowledgements</name>
      <t pn="section-appendix.a-1">Sami Boutros provided some advice on the use of Geneve in this protocol binding.</t>
      <!--  LocalWords:  timestamp Geneve PSN
 -->

</section>
    <section anchor="authors-addresses" numbered="false" removeInRFC="false" toc="include" pn="section-appendix.b">
      <name slugifiedName="name-authors-address">Author's Address</name>
      <author initials="C." surname="Bormann" fullname="Carsten Bormann">
        <organization showOnFrontPage="true">Universitaet Bremen TZI</organization>
        <address>
          <postal>
            <street>Postfach 330440</street>
            <street>Bremen D-28359</street>
            <street>Germany</street>
          </postal>
          <phone>+49-421-218-63921</phone>
          <email>cabo@tzi.org</email>
        </address>
      </author>
    </section>
  </back>
  <!-- ##markdown-source:
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
aXxLV7hjKdtw3yxH3iVkFP1B/BvKWCCm5ygAAA==

-->

</rfc>
