<?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-09"
     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="12" month="February" 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    |    Preflen    | S/T-omIndex   |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                                                               |
     ~                          Sub-Options                          ~
     |                                                               |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>In this format:</t>

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

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

          <t>Preflen is an 8 bit field that determines the length of prefix
          associated with an IPv6 address of the IPv6 ND message. Values 0
          through 128 specify a valid prefix length (all other values are
          invalid). For IPv6 ND messages sent from the source to a target
          node, Preflen applies to the IPv6 source address and provides the
          length that the source is requesting or asserting. For IPv6 ND
          messages replies from the target to the original source, Preflen
          applies to the IPv6 destination address and indicates the length
          that the target is granting.</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></t>

      <t>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 multiple OMNI option instances appear in the same
      IPv6 ND message, the interface processes the Preflen and S/T-omIndex
      fields in the first instance and ignores those fields in all other
      instances. The interface processes the Sub-Options of all OMNI option
      instances in the same IPv6 ND message in the consecutive order in which
      they occur.</t>

      <t>The OMNI option(s) in each IPv6 ND message may include full or
      partial information for the neighbor. 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 5-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
     Sub-Type Extension            30
]]></artwork>
              </figure>Sub-Types 3-29 are available for future assignment for
            major protocol functions. Sub-Type 31 is reserved by IANA.</t>

            <t>Sub-Length is an 11-bit field that encodes the length of the
            Sub-Option Data (i.e., ranging from 0 to 2034 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></t>

        <t>During transmission, the OMNI interface codes Sub-Type and
        Sub-Length together in network byte order in 2 consecutive octets,
        where Sub-Option Data may be up to 2034 octets in length. This allows
        ample space for coding large objects (e.g., ascii character strings,
        protocol messages, security codes, etc.), while a single OMNI option
        is limited to 2040 octets the same as for any IPv6 ND option. If the
        Sub-Options to be coded would cause an OMNI option to exceed 2040
        octets, the OMNI interface codes any remaining Sub-Options in
        additional OMNI option instances in the intended order of processing
        in the same IPv6 ND message. Implementations must therefore observe
        size limitations, and must refrain from sending IPv6 ND messages
        larger than the OMNI interface MTU.</t>

        <t>During reception, the OMNI interface processes each OMNI option
        Sub-Option while skipping over and ignoring any unrecognized
        Sub-Options. The OMNI interface processes the Sub-Options of all OMNI
        option instances in the consecutive order in which they appear in the
        IPv6 ND message, beginning with the first instance and continuing
        through any additional instances to the end of the message. If a
        Sub-Option length would cause the running total for that OMNI option
        to exceed the length coded in the option header, the interface accepts
        any Sub-Options already processed and ignores the remainder of that
        OMNI option. The interface then processes any remaining OMNI options
        in the same fashion to the end of the IPv6 ND message.</t>

        <t>Note: large objects that exceed the Sub-Option Data limit of 2034
        octets are not supported under the current specification; if this
        proves to be limiting in practice, future specifications may define
        support for fragmenting large objects across multiple OMNI options
        within the same IPv6 ND message.</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
     +-+-+-+-+-+-+-+-+
     | S-Type=0|x|x|x|
     +-+-+-+-+-+-+-+-+
]]></artwork>
            </figure><list style="symbols">
              <t>Sub-Type is set to 0. If multiple instances appear in OMNI
              options of the same message all are processed.</t>

              <t>Sub-Type is followed by three 'x' bits, set randomly on
              transmission and ignored on receipt. Pad1 therefore consists of
              a whole single octet with the most significant 5 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
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
     | S-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 OMNI
              options of the same message all are processed.</t>

              <t>Sub-Length is set to N (from 0 to 2047) 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
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     | S-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 OMNI options of the same message 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 2047) 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 anchor="sub30" title="Sub-Type Extension">
          <t>Since the Sub-Type field is only 5 bits in length, future
          specifications of major protocol functions may exhaust the remaining
          Sub-Type values available for assignment. This document therefore
          defines Sub-Type 30 as an "extension", meaning that the actual
          sub-option type is determined by examining a 1 octet
          "Extension-Type" field immediately following the Sub-Length field.
          The Sub-Type Extension is formatted as shown in <xref
          target="sub-type-extend"/>:<figure anchor="sub-type-extend"
              title="Sub-Type Extension">
              <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
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |S-Type=30|     Sub-length=N    | Extension-Type|               ~
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+               ~
     ~                                                               ~
     ~                       Extension-Type Body                     ~
     ~                                                               ~
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
            </figure><list style="symbols">
              <t>Sub-Type is set to 30. If multiple instances appear in OMNI
              options of the same message all are processed, where each
              individual extension defines its own policy for processing
              multiple of that type.</t>

              <t>Sub-Length is set to N (from 1 to 2034) that encodes the
              number of Sub-Option Data octets that follow. The Extension-Type
              field is always present; hence, the maximum Extension-Type Body
              length is 2033 octets.</t>

              <t>Extension-Type contains a 1 octet Sub-Type Extension value
              between 0 and 255.</t>

              <t>Extension-Type Body contains an N-1 octet block with format
              defined by the given extension specification.</t>
            </list>Extension-Type values 0 through 252 are available for
          assignment by future specifications, which must also define the
          format of the Extension-Type Body and its processing rules.
          Extension-Type values 253 and 254 are reserved for experimentation,
          as recommended in <xref target="RFC3692"/>, and value 255 is
          reserved by IANA.</t>
        </section>
      </section>
    </section>

    <section anchor="iana" title="IANA Considerations">
      <t>The IANA is instructed to allocate a Type number TBD1 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 defines a 5-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-29     Unassigned  
   30       Sub-Type Extension             [RFCXXXX]  
   31       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>
