<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?rfc toc="yes"?>
<?rfc tocompact="yes"?>
<?rfc tocdepth="3"?>
<?rfc tocindent="yes"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<?rfc strict='yes'?>
<?rfc iprnotified='no'?>
<rfc category="std" docName="draft-templin-6man-omni-option-06"
     ipr="trust200902" updates="">
  <front>
    <title abbrev="IPv6 ND OMNI Option">IPv6 Neighbor Discovery Overlay
    Multilink Network Interface (OMNI) Option</title>

    <author fullname="Fred L. Templin" initials="F. L." role="editor"
            surname="Templin">
      <organization>The Boeing Company</organization>

      <address>
        <postal>
          <street>P.O. Box 3707</street>

          <city>Seattle</city>

          <region>WA</region>

          <code>98124</code>

          <country>USA</country>
        </postal>

        <email>fltemplin@acm.org</email>
      </address>
    </author>

    <author fullname="Tony Whyman" initials="A." surname="Whyman">
      <organization>MWA Ltd c/o Inmarsat Global Ltd</organization>

      <address>
        <postal>
          <street>99 City Road</street>

          <city>London</city>

          <region/>

          <code>EC1Y 1AX</code>

          <country>England</country>
        </postal>

        <email>tony.whyman@mccallumwhyman.com</email>
      </address>
    </author>

    <date day="26" month="January" year="2021"/>

    <keyword>I-D</keyword>

    <keyword>Internet-Draft</keyword>

    <abstract>
      <t>This document defines a new IPv6 Neighbor Discovery (ND) option
      termed the "Overlay Multilink Network Interface (OMNI) Option". The OMNI
      option may appear in any IPv6 ND message type; it is processed by
      interface types that recognize the option and ignored by all other
      interface types. The option supports functions such as prefix
      registration and multilink coordination, and is extensible to support
      additional functions in the future.</t>
    </abstract>
  </front>

  <middle>
    <section anchor="intro" title="Introduction">
      <t>This document defines a new IPv6 Neighbor Discovery (ND) option
      termed the "Overlay Multilink Network Interface (OMNI) Option". The OMNI
      option may appear in any IPv6 ND message type; it is processed by
      interface types that recognize the option and ignored by all other
      interface types. The option supports functions such as prefix
      registration and multilink coordination for interface types such as the
      OMNI interface <xref target="I-D.templin-6man-omni-interface"/>, and is
      extensible to support additional functions in the future.</t>

      <t>The following sections discuss the OMNI option format and contents.
      Use cases appear in IPv6 over specific link layer documents such as
      <xref target="I-D.templin-6man-omni-interface"/>, where the
      International Civil Aviation Organization (ICAO) has expressed interest
      in the option in support of their Document 9896 <xref
      target="ATN"/><xref target="ATN-IPS"/>. An IPv6 ND option Type number
      assignment is requested in the IANA Considerations section.</t>
    </section>

    <section anchor="terminology" title="Terminology">
      <t>The terminology in the normative references applies. The term
      "underlying interface" refers to one of potentially multiple Layer-2
      interfaces over which a Layer-3 (virtual) interface is configured.</t>

      <t>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"/><xref target="RFC8174"/> when, and only when,
      they appear in all capitals, as shown here.</t>
    </section>

    <section anchor="interface"
             title="The Overlay Multilink Network Interface (OMNI) IPv6 ND Option">
      <t>An Overlay Multilink Network Interface (OMNI) IPv6 ND option is
      defined. The option (known as the "OMNI option") is formatted as shown
      in <xref target="llaov6"/>:</t>

      <t><figure anchor="llaov6" title="OMNI Option Format">
          <artwork><![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
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |      Type     |     Length    |T|   Preflen   | S/T-omIndex   |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                                                               |
     ~                          Sub-Options                          ~
     |                                                               |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>In this format:</t>

      <t><list style="symbols">
          <t>Type is set to TBD.</t>

          <t>Length is set to the number of 8 octet blocks in the option.</t>

          <t>T is a 1-bit flag set to 1 if an address is temporary (otherwise,
          set to 0) and Preflen is a 7 bit field that determines the length of
          prefix to be applied to an address. Values 1 through 127 specify a
          prefix length, while the value 0 indicates a singleton address
          (i.e., a /128). For IPv6 ND messages sent from a node to a router, T
          and Preflen apply to the IPv6 source address. For IPv6 ND messages
          sent from the router to the node, T and Preflen apply to the IPv6
          destination address.</t>

          <t>S/T-omIndex is a 1-octet field that encodes a value between 0 and
          255 identifying the source or target underlying interface for the
          IPv6 ND message. For RS and NS messages S/T-omIndex refers to the
          "Source" underlying interface over which the message is sent, while
          for RA and NA messages S/T-omIndex refers to the "Target" underlying
          interface that will receive the message.</t>

          <t>Sub-Options is a Variable-length field, of length such that the
          complete OMNI Option is an integer multiple of 8 octets long.
          Contains one or more Sub-Options, as described in <xref
          target="sub-opt"/>.</t>
        </list>The OMNI option may appear in any IPv6 ND message type; it is
      processed by interfaces that recognize the option and ignored by all
      other interfaces. If a single IPv6 ND message contains multiple OMNI
      options, the first option is processed and any additional options are
      ignored.</t>

      <t>An OMNI option may include full or partial information for the
      neighbor. If an OMNI option with full information is received, its
      contents provide new information and/or update any previously cached
      information. If an OMNI option with partial information is received, it
      contents provide new information and/or update only the corresponding
      previously cached information. The union of the information in the most
      recently received OMNI options is therefore retained, and the
      information is aged/removed in conjunction with the corresponding
      neighbor cache entry.</t>

      <section anchor="sub-opt" title="Sub-Options">
        <t>The OMNI option includes zero or more Sub-Options. Each consecutive
        Sub-Option is concatenated immediately after its predecessor. All
        Sub-Options except Pad1 (see below) are in type-length-value (TLV)
        encoded in the following format: <figure anchor="sub-format"
            title="Sub-Option Format">
            <artwork><![CDATA[      0                   1                   2  
      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  
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-  
     | Sub-Type  |    Sub-length     | Sub-Option Data ...  
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
]]></artwork>
          </figure><list style="symbols">
            <t>Sub-Type is a 6-bit field that encodes the Sub-Option type.
            Sub-Options defined in this document are:<figure
                anchor="sub-types" title="">
                <artwork><![CDATA[     Option Name               Sub-Type
     Pad1                           0
     PadN                           1
     Interface Attributes (Type 1)  2
]]></artwork>
              </figure>Sub-Types 3-61 are available for future assignment.
            Sub-Type 62 is reserved for experimentation, as recommended in
            <xref target="RFC3692"/>. Sub-Type 63 is reserved by IANA.</t>

            <t>Sub-Length is a 10-bit field that encodes the length of the
            Sub-Option Data (i.e., ranging from 0 to 1023 octets).</t>

            <t>Sub-Option Data is a block of data with format determined by
            Sub-Type and length determined by Sub-Length.</t>
          </list>Note that Sub-Type and Sub-Length are coded together in
        network byte order in two consecutive octets. Note also that
        Sub-Option Data may be up to 1023 bytes in length. This allows ample
        space for encoding large objects (e.g., ascii character strings,
        security codes, etc.), while the entire OMNI option itself is limited
        to 2048 bytes the same as for any IPv6 ND option. Implementations must
        therefore be mindful of size limitations.</t>

        <t>During processing, unrecognized Sub-Options are ignored and the
        next Sub-Option processed until the end of the OMNI option is
        reached.</t>

        <t>The following Sub-Option types and formats are defined in this
        document (note that other documents that are active at the time of
        this writing will define additional Sub-Option types in the near
        future):</t>

        <section anchor="sub0" title="Pad1">
          <t><figure anchor="pad0" title="Pad1">
              <artwork><![CDATA[      0
      0 1 2 3 4 5 6 7
     +-+-+-+-+-+-+-+-+
     | Sub-Type=0|x|x|
     +-+-+-+-+-+-+-+-+
]]></artwork>
            </figure><list style="symbols">
              <t>Sub-Type is set to 0. If multiple instances appear in the
              same OMNI option all are processed.</t>

              <t>Sub-Type is followed by two 'x' bits, set randomly on
              transmission and ignored on receipt. Pad1 therefore consists of
              a whole single octet with the most significant 6 bits set to 0,
              and with no Sub-Length or Sub-Option Data fields following.</t>
            </list></t>
        </section>

        <section anchor="sub1" title="PadN">
          <t><figure anchor="padn" title="PadN">
              <artwork><![CDATA[      0                   1                   2
      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
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
     | Sub-Type=1|   Sub-length=N    | N padding octets ...
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
]]></artwork>
            </figure><list style="symbols">
              <t>Sub-Type is set to 1. If multiple instances appear in the
              same OMNI option all are processed.</t>

              <t>Sub-Length is set to N (from 0 to 1023) being the number of
              padding octets that follow.</t>

              <t>Sub-Option Data consists of N padding octets that are
              typically zero-valued (any non-zero values that may appear in
              the padding octets are not to be interpreted in any way other
              than as simple padding).</t>
            </list></t>
        </section>

        <section anchor="sub2" title="Interface Attributes (Type 1)">
          <t><figure anchor="ifIndex-tuple"
              title="Interface Attributes (Type 1)">
              <artwork><![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
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     | Sub-Type=2|   Sub-length=N    |    omIndex    |    omType     |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |  Provider ID  | Link  | Resvd |P00|P01|P02|P03|P04|P05|P06|P07|
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |P08|P09|P10|P11|P12|P13|P14|P15|P16|P17|P18|P19|P20|P21|P22|P23|
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |P24|P25|P26|P27|P28|P29|P30|P31|P32|P33|P34|P35|P36|P37|P38|P39|
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |P40|P41|P42|P43|P44|P45|P46|P47|P48|P49|P50|P51|P52|P53|P54|P55|
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |P56|P57|P58|P59|P60|P61|P62|P63|
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
            </figure><list style="symbols">
              <t>Sub-Type is set to 2. If multiple instances with different
              omIndex values appear in the same OMNI option all are processed;
              if multiple instances with the same omIndex value appear, the
              first is processed and all others are ignored</t>

              <t>Sub-Length is set to N (from 1 to 1023 that encodes the
              number of Sub-Option Data octets that follow.</t>

              <t>omIndex is a 1-octet field containing a value from 0 to 255
              identifying the underlying interface for which the interface
              attributes apply.</t>

              <t>omType is a 1-octet field containing a value from 0 to 255
              corresponding to the underlying interface identified by
              omIndex.</t>

              <t>Provider ID is a 1-octet field containing a value from 0 to
              255 corresponding to the underlying interface identified by
              omIndex.</t>

              <t>Link encodes a 4-bit link metric. The value '0' means the
              link is DOWN, and the remaining values mean the link is UP with
              metric ranging from '1' ("lowest") to '15' ("highest").</t>

              <t>Resvd is reserved for future use.</t>

              <t>A 16-octet ""Preferences" field immediately follows 'Resvd',
              with values P[00] through P[63] corresponding to the 64
              Differentiated Service Code Point (DSCP) values <xref
              target="RFC2474"/>. Each 2-bit P[*] field is set to the value
              '0' ("disabled"), '1' ("low"), '2' ("medium") or '3' ("high") to
              indicate a QoS preference for underlying interface selection
              purposes.</t>
            </list></t>
        </section>
      </section>
    </section>

    <section anchor="iana" title="IANA Considerations">
      <t>The IANA is instructed to allocate a Type number TBD from the
      registry "IPv6 Neighbor Discovery Option Formats" for the OMNI option
      (see: Section 13 of <xref target="RFC4861"/>) as a provisional
      registration in accordance with Section 4.13 of <xref
      target="RFC8126"/>.</t>

      <t>The OMNI option also defines an 8-bit Sub-Type field, for which IANA
      is instructed to create and maintain a new registry entitled "OMNI
      option Sub-Type values". Initial values for the OMNI option Sub-Type
      values registry are given below; future assignments are to be made
      through Expert Review <xref target="RFC8126"/>.</t>

      <figure anchor="omni-iana" title="OMNI Option Sub-Type Values">
        <artwork><![CDATA[   Value    Sub-Type name                  Reference  
   -----    -------------                  ----------  
   0        Pad1                           [RFCXXXX]  
   1        PadN                           [RFCXXXX]  
   2        Interface Attributes (Type 1)  [RFCXXXX]
   3-61     Unassigned  
   62       Experimental                   [RFCXXXX]  
   63       Reserved                       [RFCXXXX]]]></artwork>
      </figure>
    </section>

    <section anchor="secure" title="Security Considerations">
      <t>Security considerations for IPv6 <xref target="RFC8200"/> and IPv6
      Neighbor Discovery <xref target="RFC4861"/> apply.</t>
    </section>

    <section anchor="ack" title="Acknowledgements">
      <t>This document is aligned with the International Civil Aviation
      Organization (ICAO) Aeronautical Telecommunications Network (ATN) with
      Internet Protocol Services (ATN/IPS) development program.</t>

      <t>This document is aligned with the IETF 6man (IPv6) working group.</t>
    </section>
  </middle>

  <back>
    <references title="Normative References">
      <?rfc include="reference.RFC.2119"?>

      <?rfc include="reference.RFC.8174"?>

      <?rfc include="reference.RFC.8200"?>

      <?rfc include="reference.RFC.4861"?>

      <?rfc include="reference.RFC.8126"?>

      <?rfc include="reference.RFC.3692"?>
    </references>

    <references title="Informative References">
      <?rfc include="reference.I-D.templin-6man-omni-interface"?>

      <?rfc include="reference.RFC.2474"?>

      <reference anchor="ATN">
        <front>
          <title>The OMNI Interface - An IPv6 Air/Ground Interface for Civil
          Aviation, IETF Liaison Statement #1676,
          https://datatracker.ietf.org/liaison/1676/</title>

          <author fullname="Vaughn Maiolla" initials="V." surname="Maiolla">
            <organization/>
          </author>

          <date day="3" month="March" year="2020"/>
        </front>
      </reference>

      <reference anchor="ATN-IPS">
        <front>
          <title>ICAO Document 9896 (Manual on the Aeronautical
          Telecommunication Network (ATN) using Internet Protocol Suite (IPS)
          Standards and Protocol), Draft Edition 3 (work-in-progress)</title>

          <author fullname="International Civil Aviation Organization"
                  initials="ICAO" surname="WG-I">
            <organization/>
          </author>

          <date day="10" month="December" year="2020"/>
        </front>
      </reference>
    </references>
  </back>
</rfc>
