<?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-intarea-omni2-00" ipr="trust200902"
     updates="4291">
  <front>
    <title abbrev="IPv6 over OMNI Interfaces">Transmission of IP Packets over
    Overlay Multilink Network (OMNI) Interfaces</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>

    <date day="16" month="February" year="2024"/>

    <keyword>I-D</keyword>

    <keyword>Internet-Draft</keyword>

    <abstract>
      <t>Air/land/sea/space mobile nodes (e.g., aircraft of various configurations,
      terrestrial vehicles, seagoing vessels, space systems, enterprise wireless devices,
      pedestrians with cell phones, etc.) communicate with networked correspondents over
      wireless and/or wired-line data links and configure mobile routers to connect end
      user networks. This document presents a multilink virtual interface specification
      that enables mobile nodes to coordinate with a network-based mobility service,
      fixed node correspondents and/or other mobile node peers. The virtual interface
      provides an adaptation layer service suited for both mobile and more static
      deployments such as enterprise and home networks. This document specifies
      the transmission of IP packets over Overlay Multilink Network (OMNI)
      Interfaces.</t>
    </abstract>
  </front>

  <middle>
    <section anchor="intro" title="Introduction">
      <t>Air/land/sea/space mobile nodes (e.g., aircraft of various configurations,
      terrestrial vehicles, seagoing vessels, space systems, enterprise wireless
      devices, pedestrians with cellphones, etc.) configure mobile routers with
      multiple interface connections to wireless and/or wired-line data links.
      These data links may have diverse performance, cost and availability
      properties that can change dynamically according to mobility patterns,
      flight phases, proximity to infrastructure, etc. The mobile router acts
      as a Client of a network-based Mobility Service (MS) by configuring a
      virtual interface over its underlay interface data link connections.</t>

      <t>Each Client configures a virtual interface (termed the "Overlay
      Multilink Network Interface (OMNI)") as a thin layer over its underlay
      network interfaces (which may themselves connect to virtual or physical
      links). The OMNI interface is therefore the only interface abstraction
      exposed to the IP layer and behaves according to the Non-Broadcast,
      Multiple Access (NBMA) interface principle, while underlay interfaces
      appear as link layer communication channels in the architecture. The
      OMNI interface internally employs the "OMNI Adaptation Layer (OAL)"
      to ensure that original IP packets or parcels <xref target=
      "I-D.templin-6man-parcels2"/><xref target=
      "I-D.templin-intarea-parcels2"/> are adapted to diverse underlay
      interfaces with heterogeneous properties.</t>

      <t>The OMNI interface connects to a virtual overlay known as the "OMNI
      link". The OMNI link spans one or more Internetworks that may include
      private-use infrastructures (e.g., enterprise networks, operator networks,
      etc.) and/or the global public Internet itself. Together, OMNI and the
      OAL provide the foundational elements required to support the "6 M's
      of Modern Internetworking", including:<list style="numbers">
          <t>Multilink - a Client's ability to coordinate multiple
          diverse underlay interfaces as a single logical unit (i.e., the OMNI
          interface) to achieve the required communications performance and
          reliability objectives.</t>

          <t>Multinet - the ability to span the OMNI link over a segment
          routing topology with multiple diverse administrative domain network
          segments while maintaining seamless end-to-end communications
          between mobile Clients and correspondents such as air traffic
          controllers, fleet administrators, etc.</t>

          <t>Mobility - a Client's ability to change network
          points of attachment (e.g., moving between wireless base stations)
          which may result in an underlay interface address change, but
          without disruptions to ongoing communication sessions with peers
          over the OMNI link.</t>

          <t>Multicast - the ability to send a single network
          transmission that reaches multiple Clients belonging to the same
          interest group, but without disturbing other Clients not subscribed
          to the interest group.</t>

          <t>Multihop - a mobile Client vehicle-to-vehicle relaying
          capability useful when multiple forwarding hops between vehicles may
          be necessary to "reach back" to an infrastructure access
          point connection to the OMNI link.</t>

          <t>(Performance) Maximization - the ability to exchange large
          packets/parcels between peers without loss due to a link size
          restriction, and to adaptively adjust packet/parcel sizes to
          maintain the best performance profile for each independent
          traffic flow.</t>
        </list></t>

      <t>Client OMNI interfaces interact with the MS and/or other OMNI nodes
      through IPv6 Neighbor Discovery (ND) control message exchanges <xref
      target="RFC4861"/>. The MS consists of a distributed set of service
      nodes (including Proxy/Servers and other infrastructure elements) that
      also configure OMNI interfaces. Automatic Extended Route Optimization
      (AERO) in particular provides a companion MS compatible with the OMNI
      architecture <xref target="I-D.templin-intarea-aero2"/>. AERO discusses
      details of ND message based multilink forwarding, route optimization,
      mobility management, and multinet traversal while the fundamental
      aspects of OMNI link operation are discussed in this document.</t>

      <t>Each OMNI interface provides a multilink nexus for exchanging inbound
      and outbound traffic via selected underlay interfaces. The IP layer
      sees the OMNI interface as a point of connection to the OMNI link. Each
      OMNI link has one or more associated Mobility Service Prefixes (MSPs),
      which are typically IP Global Unicast Address (GUA) prefixes assigned to
      the link and from which Mobile Network Prefixes (MNPs) are delegated to
      Client end systems. If there are multiple OMNI links, the IP layer will
      see multiple OMNI interfaces.</t>

      <t>Each Client receives an MNP delegation through IPv6 ND control
      message exchanges with Proxy/Servers over Access Networks (ANETs)
      and/or open Internetworks (INETs). The Client sub-delegates the MNP
      to downstream-attached End-user Networks (ENETs) independently of the
      underlay interfaces selected for data transport. The Client acts as a
      fixed or mobile router on behalf of ENET peers, and uses OMNI interface
      control messaging to coordinate with Hosts, Proxy/Servers and/or other
      Clients. The Client iterates its control messaging over each of the OMNI
      interface's ANET/INET underlay interfaces in order to register each
      interface with the MS (see <xref target="aeropd"/>). The Client can also
      provide Proxy/Server-like services for a recursively nested chain of
      other Clients and Hosts connected via downstream-attached ENETs.</t>

      <t>Clients may connect to multiple distinct OMNI links within the same
      OMNI domain by configuring multiple OMNI interfaces, e.g., omni0, omni1,
      omni2, etc. Each OMNI interface is configured over a distinct set of
      underlay interfaces and provides a nexus for Safety-Based Multilink
      (SBM) operation. The IP layer applies SBM routing to select a specific
      OMNI interface, then the selected OMNI interface applies
      Performance-Based Multilink (PBM) internally to select appropriate
      underlay interfaces. Applications select SBM topologies based on IP
      layer Segment Routing <xref target="RFC8402"/>, while each OMNI
      interface orchestrates PBM internally based on OAL Multinet traversal.</t>

      <t>OMNI provides a link model suitable for a wide range of use cases.
      For example, the International Civil Aviation Organization (ICAO)
      Working Group-I Mobility Subgroup is developing a future Aeronautical
      Telecommunications Network with Internet Protocol Services (ATN/IPS)
      and has issued a liaison statement requesting IETF adoption <xref
      target="ATN"/> in support of ICAO Document 9896 <xref target="ATN-IPS"/>.
      The IETF IP Wireless Access in Vehicular Environments (ipwave) working
      group has further included problem statement and use case analysis for
      OMNI in <xref target="I-D.ietf-ipwave-vehicular-networking"/>. Still
      other communities of interest include AEEC, RTCA Special Committee
      228 (SC-228) and NASA programs that examine commercial aviation,
      Urban Air Mobility (UAM) and Unmanned Air Systems (UAS). Pedestrians
      with handheld mobile devices represent another large class of
      potential OMNI users.</t>

      <t>This document specifies the transmission of original IP
      packets/parcels and control messages over OMNI interfaces. The operation
      of both IP protocol versions (i.e., IPv4 <xref target="RFC0791"/> and
      IPv6 <xref target="RFC8200"/>) is specified as the network layer data
      plane, while OMNI interfaces use IPv6 ND messaging in the control plane
      independently of the data plane protocol(s). OMNI interfaces also
      provide an adaptation layer based on encapsulation and fragmentation
      over heterogeneous underlay interfaces as an OAL sublayer between L3
      and L2. OMNI and the OAL are specified in detail throughout the
      remainder of this document.</t>
    </section>

    <section anchor="terminology" title="Terminology">
      <t>The terminology in the normative references applies; especially, the
      terms "link" and "interface" are the same as defined in the IPv6 <xref
      target="RFC8200"/> and IPv6 Neighbor Discovery (ND) <xref target=
      "RFC4861"/> specifications. This document assumes the following IPv6
      ND control plane message types: Router Solicitation (RS), Router
      Advertisement (RA), Neighbor Solicitation (NS), Neighbor Advertisement
      (NA), unsolicited NA (uNA) and Redirect.</t>

      <t>OMNI interfaces normally limit the size of their IPv6 ND control
      plane messages to the minimum IPv6 link MTU, but some messages may
      exceed this size if there are sufficient OMNI parameters and/or IP
      packet/parcel attachments. These larger messages can still travel
      over secured underlying network control plane paths that include
      IPsec tunnels <xref target="RFC4301"/> and/or secured direct
      point-to-point links without loss due to a size restriction by
      engaging OMNI IPv6 encapsulation/fragmentation as necessary up
      to a maximum size of 65535 octets.</t>

      <t>Host, Client and Proxy/Server OMNI interfaces that employ IPv6
      ND control plane messaging maintain per-neighbor state in Neighbor
      Cache Entries (NCEs). Each NCE is indexed by the neighbor's network
      layer address(es) while the neighbor's OAL encapsulation address
      provides context for Identification verification.</t>

      <t>The Protocol Constants defined in Section 10 of <xref
      target="RFC4861"/> are used in their same format and meaning in this
      document. The terms "All-Routers multicast", "All-Nodes multicast" and
      "Subnet-Router anycast" are the same as defined in <xref
      target="RFC4291"/> (with Link-Local scope assumed). Also, IPv6 ND
      state names, variables and constants including REACHABLE, ReachableTime
      and REACHABLE_TIME are the same as defined in <xref target="RFC4861"/>.</t>

      <t>The term "IP" is used to refer collectively to either Internet
      Protocol version (i.e., IPv4 <xref target="RFC0791"/> or IPv6 <xref
      target="RFC8200"/>) when a specification at the layer in question
      applies equally to either version.</t>

      <t>The terms Host, Client and Proxy/Server are intentionally capitalized
      to denote an instance of that particular node type that also configures
      an OMNI interface and engages the OMNI Adaptation Layer.</t>

      <t>The terms "application layer (L5 and higher)", "transport layer
      (L4)", "network layer (L3)", "(data) link layer (L2)" and "physical
      layer (L1)" are used consistently with common Internetworking
      terminology, with the understanding that reliable delivery protocol
      users of UDP are considered as transport layer elements. The OMNI
      specification further defines an "adaptation layer" positioned
      below the network layer but above the link layer, which may include
      physical links and Internet- or higher-layer tunnels. A (network)
      interface is a node's attachment to a link (via L2), and an OMNI
      interface is therefore a node's attachment to an OMNI link (via
      the adaptation layer).</t>

      <t>The L3, adaptation and (virtual) L2 layers each include distinct
      packet Identification numbering spaces although L3 and L2 packet
      headers often omit the Identification for unfragmented packets.
      The adaptation layer employs an 8-octet Identification numbering
      space that is distinct from L3/L2 spaces, with an Identification
      value appearing in an IPv6 Extended Fragment Header <xref target=
      "I-D.templin-6man-ipid-ext"/> or an OMNI Compressed Header (OCH)
      (see: <xref target="oal98"/>) in each adaptation layer encapsulation.</t>

      <t>The terms "IP jumbogram", "advanced jumbo (AJ)" and "IP parcel"
      refer to special packet formats that enable a new link model for the
      Internet as discussed in <xref target="I-D.templin-6man-parcels2"/>
      <xref target="I-D.templin-intarea-parcels2"/>.</t>

      <t>The following terms are defined within the scope of this
      document:</t>

      <t><list style="hanging">
          <t hangText="L3"><vspace/>The Network layer in the OSI network
          model. Also known as "layer 3", "IP layer", etc.</t>

          <t hangText="L2"><vspace/>The Data Link layer in the OSI network
          model. Also known as "layer 2", "link layer", "sub-IP layer",
          etc.</t>

          <t hangText="Adaptation layer"><vspace/>An encapsulation mid-layer
          that adapts L3 to a diverse collection of L2 underlay interfaces
          and their encapsulations. (No layer number is assigned, since
          numbering was an artifact of the legacy reference model that need
          not carry forward in the modern architecture.) The adaptation
          layer sees the network layer as "L3" and sees all link layer
          encapsulations as "L2 encapsulations", which may include UDP,
          IP and true link layer (e.g., Ethernet, etc.) headers.</t>

          <t hangText="Access Network (ANET)"><vspace/>a connected network
          region (e.g., an aviation radio access network, corporate
          enterprise network, satellite service provider network, cellular
          operator network, residential WiFi network, etc.) that connects
          Clients to the Mobility Service. Physical and/or data link level
          security is assumed (sometimes referred to as "protected spectrum"
          for wireless domains). ANETs such as private enterprise networks
          and ground domain aviation service networks often provide multiple
          secured IP hops between the Client's physical point of connection
          and the nearest Proxy/Server.</t>

          <t hangText="Internetwork (INET)"><vspace/>a connected network
          region with a coherent IP addressing plan that provides transit
          forwarding services between ANETs and/or OMNI nodes that coordinate
          with the Mobility Service over unprotected media. Since physical
          and/or data link level security cannot always be assumed, security
          must be applied by the network and/or higher layers if necessary.
          The global public Internet itself is an example.</t>

          <t hangText="End-user Network (ENET)"><vspace/>a simple or complex
          "downstream" network tethered to a Client as a single logical unit
          that travels together. The ENET could be as simple as a single link
          connecting a single Host, or as complex as a large network with many
          links, routers, bridges and end user devices. The ENET provides an
          "upstream" link for arbitrarily many low-, medium- or high-end devices
          dependent on the Client for their upstream connectivity, i.e., as
          Internet of Things (IoT) entities. The ENET can also support a
          recursively-descending chain of additional Clients such that the
          ENET of an upstream Client is seen as the ANET of a downstream Client.</t>

          <t hangText="ANET/INET/ENET interface"><vspace/>a Client's attachment to
          a link in an ANET/INET/ENET.</t>

          <t hangText="*NET"><vspace/>a "wildcard" term used when a given
          specification applies equally to both ANET/INET cases. From the
          Client's perspective, *NET interfaces are "upstream" interfaces that
          connect the Client to the Mobility Service, while ENET interfaces
          are "downstream" interfaces that the Client uses to connect
          downstream ENETs, Hosts and/or other Clients.</t>

          <t hangText="underlay interface"><vspace/>an ANET/INET/ENET
          interface over which an OMNI interface is configured. The OMNI
          interface is seen as an L3 interface by the network layer, and each
          underlay interface is seen as an L2 interface by the OMNI interface.
          The underlay interface either connects directly to the physical
          communications media or coordinates with another node where the
          physical media is hosted.</t>

          <t hangText="Mobile Ad-hoc NETwork (MANET)"><vspace/>a connected network
          region that shares the same properties as an ANET except that links often
          have undetermined connectivity properties, physical and/or link layer
          security cannot always be assumed and multihop forwarding between Clients
          acting as MANET routers may be necessary. Proxy/Servers that connect the
          MANET to outside networks act as Clients on their MANET interfaces and
          act as ordinary Proxy/Servers on their ANET/INET interfaces, while Clients
          configure MANET interfaces and provide multihop forwarding services for
          other Clients as necessary.</t>

          <t hangText="MANET Interface"><vspace/>a node's underlay interface
          connection to a local network with indeterminant neighborhood
          properties over which multihop relaying may be necessary. All
          MANET interfaces used by AERO/OMNI are IPv6 interfaces and
          therefore must configure a Maximum Transmission Unit (MTU)
          at least as large as the IPv6 minimum MTU (1280 octets) even
          if lower-layer fragmentation is needed.</t>

          <t hangText="OMNI link"><vspace/>a Non-Broadcast, Multiple Access
          (NBMA) virtual overlay configured over one or more INETs and their
          connected ANETs/ENETs. An OMNI link may comprise multiple distinct
          "segments" joined by L2 forwarding devices the same as for any link;
          the addressing plans in each segment may be mutually exclusive and
          managed by different administrative entities. Proxy/Servers and
          other infrastructure elements extend the link to support
          communications between Clients as single-hop neighbors.</t>

          <t hangText="OMNI interface"><vspace/>a node's attachment to an OMNI
          link, and configured over one or more underlay interfaces. If there
          are multiple OMNI links in an OMNI domain, a separate OMNI interface
          is configured for each link. The OMNI interface configures a Maximum
          Transmission Unit (MTU) and an Effective MTU to Receive (EMTU_R) the
          same as any interface.</t>

          <t hangText="OMNI Adaptation Layer (OAL)"><vspace/>an OMNI interface
          sublayer service that encapsulates original IP packets/parcels
          admitted into the interface in an IPv6 header and/or subjects them
          to fragmentation and reassembly. The OAL is also responsible for
          generating MTU-related control messages as necessary, and for
          providing addressing context for OMNI link SRT traversal. The OAL
          presents a new layer in the Internet architecture known simply as
          the "adaptation layer". The OMNI link is an example of a limited
          domain <xref target="RFC8799"/> at the adaptation layer although
          its segments may be joined over open Internetworks at L2.</t>

          <t hangText="(OMNI) Host"><vspace/>an end user device that extends
          the OMNI link over an ENET interface serviced by a Client. (As an
          implementation matter, the Host either assigns the same IP address
          from the ENET (underlay) interface to an (overlay) OMNI interface,
          or configures an OMNI-like function as a virtual sublayer of the
          ENET interface itself.) The IP addresses assigned to each Host ENET
          interface remain stable even if the Client's upstream *NET interface
          connections change.</t>

          <t hangText="(OMNI) Client"><vspace/>a network platform/device mobile
          router that configures one or more OMNI interfaces over distinct
          sets of underlay interfaces grouped as logical OMNI link units. The
          Client coordinates with the Mobility Service via upstream networks
          over *NET interfaces, and provides Proxy/Server services for Hosts
          and other Clients on ENET interface downstream networks. The
          Client's *NET interface addresses and performance characteristics
          may change over time (e.g., due to node mobility, link quality,
          etc.) while downstream-attached Hosts and other Clients see the ENET
          as a stable ANET.</t>

          <t hangText="(OMNI) Proxy/Server"><vspace/>a segment routing topology
          edge node that configures an OMNI interface and connects Clients to the
          Mobility Service. As a server, the Proxy/Server responds directly to
          some Client IPv6 ND messages. As a proxy, the Proxy/Server forwards
          other Client IPv6 ND messages to other Proxy/Servers and Clients. As
          a router, the Proxy/Server provides a forwarding service for
          ordinary data messages that may be essential in some environments
          and a last resort in others. Proxy/Servers at ANET boundaries
          configure both an ANET downstream interface and *NET upstream
          interface, while INET-based Proxy/Servers configure only an INET
          interface.</t>

          <t hangText="First-Hop Segment (FHS) Proxy/Server"><vspace/>a
          Proxy/Server connected to the source Client's *NET that forwards OAL
          packets sent by the source into the segment routing topology. FHS
          Proxy/Servers also act as intermediate forwarding systems to
          facilitate RS/RA exchanges between Clients and Hub
          Proxy/Servers.</t>

          <t hangText="Last-Hop Segment (LHS) Proxy/Server"><vspace/>a
          Proxy/Server connected to the target Client's *NET that forwards OAL
          packets received from the segment routing topology to the
          target.</t>

          <t hangText="Hub Proxy/Server"><vspace/>a single Proxy/Server
          selected by the Client that provides a designated router service for
          all of the Client's*NET underlay networks. Since all Proxy/Servers
          provide equivalent services, Clients normally select the first FHS
          Proxy/Server they coordinate with to serve as the Hub. However, the
          Hub can instead be any available Proxy/Server for the OMNI link,
          i.e., and not necessarily one of the Client's FHS Proxy/Servers.</t>

          <t hangText="Segment Routing Topology (SRT)"><vspace/>a multinet
          forwarding region configured over one or more INETs between the FHS
          Proxy/Server and LHS Proxy/Server. The SRT spans the OMNI link on
          behalf of source/target Client pairs using segment routing in a
          manner outside the scope of this document (see: <xref
          target="I-D.templin-intarea-aero2"/>).</t>

          <t hangText="Mobility Service (MS)"><vspace/>a mobile routing
          service that tracks Client movements and ensures that Clients remain
          continuously reachable even across mobility events. The MS consists
          of the set of all Proxy/Servers plus any other OMNI link supporting
          infrastructure nodes. Specific MS details are out of scope for this
          document, with an example found in <xref
          target="I-D.templin-intarea-aero2"/>.</t>

          <t hangText="Mobility Service Prefix (MSP)"><vspace/>an aggregated
          IP Global Unicast Address (GUA) prefix (e.g., 2001:db8::/32,
          192.0.2.0/24, etc.) assigned to the OMNI link and from which
          more-specific Mobile Network Prefixes (MNPs) are delegated. OMNI
          link administrators typically obtain MSPs from an Internet address
          registry, however private-use prefixes can also be used subject to
          certain limitations (see: <xref target="gua"/>). OMNI links that
          connect to the global Internet advertise their MSPs to their
          interdomain routing peers.</t>

          <t hangText="Mobile Network Prefix (MNP)"><vspace/>a longer IP
          prefix delegated from an MSP (e.g., 2001:db8:1000:2000::/56,
          192.0.2.8/30, etc.) and assigned to a Client. Clients receive MNPs
          from Proxy/Servers and sub-delegate them to routers, Hosts and other
          Clients located in ENETs.</t>

          <t hangText="original IP packet/parcel"><vspace/>a whole IP
          packet/parcel or fragment admitted into the OMNI interface by the
          network layer prior to OAL encapsulation/fragmentation, or an IP
          packet/parcel delivered to the network layer by the OMNI interface
          following OAL reassembly/decapsulation.</t>

          <t hangText="OAL packet"><vspace/>an original IP packet/parcel
          encapsulated in an OAL IPv6 header with an IPv6 Extended Fragment
          Header extension that includes an 8-octet (64-bit) OAL Identification
          value. Each OAL packet is then subject to OAL fragmentation and
          reassembly.</t>

          <t hangText="OAL fragment"><vspace/>a portion of an OAL packet
          following fragmentation but prior to L2 encapsulation/fragmentation,
          or following L2 reassembly/decapsulation but prior to OAL reassembly.</t>

          <t hangText="(OAL) atomic fragment"><vspace/>an OAL packet that can
          be forwarded without fragmentation, but still includes an IPv6 Extended
          Fragment Header with an 8-octet (64-bit) OAL Identification value
          and with Fragment Offset and More Fragments both set to 0.</t>

          <t hangText="(L2) carrier packet"><vspace/>an encapsulated OAL
          fragment following L2 encapsulation or prior to L2 decapsulation.
          OAL sources and destinations exchange carrier packets over underlay
          interfaces, and may be separated by one or more OAL intermediate
          systems. OAL intermediate systems may perform re-encapsulation on
          carrier packets by removing the L2 headers of the first hop network
          and replacing them with new L2 headers for the next hop network.
          Carrier packets may themselves be subject to fragmentation and
          reassembly in L2 underlay networks at a layer below the OAL.
          Carrier packets sent over unsecured paths use OMNI protocol L2
          encapsulations, while those sent over secured paths use L2 
          security encapsulations such as IPsec <xref target="RFC4301"/>,
          etc. (The term "carrier" honors agents of the service postulated
          by <xref target="RFC1149"/> and <xref target="RFC6214"/>.)</t>

          <t hangText="OAL source"><vspace/>an OMNI interface acts as an OAL
          source when it encapsulates original IP packets/parcels to form OAL
          packets, then performs OAL fragmentation and encapsulation to create
          carrier packets which may themselves be subject to fragmentation at
          their layer. Every OAL source is also an OMNI link ingress.</t>

          <t hangText="OAL destination"><vspace/>an OMNI interface acts as an
          OAL destination when it decapsulates carrier packets (while reassembling
          first, if necessary), then performs OAL reassembly/decapsulation
          to derive the original IP packet/parcel. Every OAL destination is
          also an OMNI link egress.</t>

          <t hangText="OAL intermediate system"><vspace/>an OMNI interface acts
          as an OAL intermediate system when it reassembles/decapsulates carrier
          packets received from a first segment to obtain the original OAL
          packet/fragment, then  re-encapsulates in new L2 headers appropriate
          for the next segment and sends these new carrier packets into the next
          segment (while re-fragmenting first, if necessary). OAL intermediate
          systems decrement the Hop Limit in OAL packets/fragments during
          forwarding, and discard the OAL packet/fragment if the Hop Limit
          reaches 0. OAL intermediate systems do not decrement the TTL/Hop
          Limit of the original IP packet/parcel, which can only be updated
          by the network and higher layers.</t>

          <t hangText="OMNI Option"><vspace/>an IPv6 Neighbor Discovery option
          providing multilink parameters for the OMNI interface as specified
          in <xref target="interface"/>.</t>

          <t hangText="Interface Identifier (IID)"><vspace/>the least
          significant 64 bits of an IPv6 address, as specified in the IPv6
          addressing architecture <xref target="RFC4291"/>.</t>

          <t hangText="(OMNI) Link Local Address (LLA)"><vspace/>an IPv6 address
          beginning with fe80::/64 per the IPv6 addressing architecture <xref
          target="RFC4291"/> and with either a 64-bit MNP (LLA-MNP) or a
          56-bit random value (LLA-RND) encoded in the IID as specified in
          <xref target="aero-address"/>.</t>

          <t hangText="(OMNI) Unique Local Address (ULA)"><vspace/>an IPv6 address
          beginning with fd00::/8 followed by a 40-bit Global ID followed by a
          16-bit Subnet ID per <xref target="RFC4193"/> and with either a
          64-bit MNP (ULA-MNP) or a 56-bit random value (ULA-RND) encoded in
          the IID as specified in <xref target="span-address"/>. (Note that
          <xref target="RFC4193"/> specifies a second form of ULAs based on
          the prefix fc00::/8, which are referred to as "ULA-C" throughout
          this document to distinguish them from the ULAs defined here.)</t>

          <t hangText="(OMNI) Temporary Local Address (TLA)"><vspace/>a ULA beginning
          with fd00::/16 followed by a 48-bit randomly-initialized value
          followed by an MNP-based (TLA-MNP) or random (TLA-RND) IID as
          specified in <xref target="span-address"/>. Clients use TLAs to
          bootstrap autoconfiguration in the presence of OMNI link
          infrastructure or for sustained communications in the absence of
          infrastructure. (Note that in some environments Clients can instead
          use a (Hierarchical) Host Identity Tag ((H)HIT) instead of a TLA -
          see: <xref target="hip-nd"/>.)</t>

          <t hangText="(OMNI) eXtended Local Address (XLA)"><vspace/>a TLA beginning
          with fd00::/64 followed by an MNP-based (XLA-MNP) or random
          (XLA-RND) IID as specified in <xref target="span-address"/>. An XLA
          is simply a TLA with an all-0 48-bit value following fd00::/16, and
          can be used to supply a "wildcard match" for IPv6 ND cache entries,
          a routing table entry for the OMNI link routing system, etc. (Note
          that XLAs can also be statelessly formed from LLAs (and vice-versa)
          simply by inverting prefix bits 7 and 8.)</t>

          <t hangText="Multilink"><vspace/>a Client OMNI interface's manner of
          managing multiple diverse *NET underlay interfaces as a single
          logical unit. The OMNI interface provides a single unified interface
          to the network layer, while underlay interface selections are performed
          on a per-flow basis considering traffic selectors such as DSCP, flow
          label, application policy, signal quality, cost, etc. Multilink
          selections are coordinated in both the outbound and inbound
          directions based on source/target underlay interface pairs.</t>

          <t hangText="Multinet"><vspace/>an intermediate system's manner of
          spanning multiple diverse IP Internetwork and/or private enterprise
          network "segments" through OAL encapsulation. Through intermediate
          system concatenation of SRT network segments, multiple diverse
          Internetworks (such as the global public IPv4 and IPv6 Internets)
          can serve as transit segments in an end-to-end OAL forwarding path.
          This OAL concatenation capability provides benefits such as
          supporting IPv4/IPv6 transition and coexistence, joining multiple
          diverse operator networks into a cooperative single service network,
          etc. See: <xref target="I-D.templin-intarea-aero2"/> for further
          information.</t>

          <t hangText="Multihop"><vspace/>an iterative relaying of carrier
          packets between Client's over an OMNI underlay interface technology
          (such as omnidirectional wireless) without support of fixed
          infrastructure. Multihop services entail Client-to-Client relaying
          within a Mobile/Vehicular Ad-hoc Network (MANET/VANET) for
          Vehicle-to-Vehicle (V2V) communications and/or for
          Vehicle-to-Infrastructure (V2I) "range extension" where Clients
          within range of communications infrastructure elements provide
          forwarding services for other Clients.</t>

          <t hangText="Mobility"><vspace/>any action that results in a change
          to a Client underlay interface address. The change could be due to,
          e.g., a handover to a new wireless base station, loss of link due to
          signal fading, an actual physical node movement, etc.</t>

          <t hangText="Safety-Based Multilink (SBM)"><vspace/>A means for
          ensuring fault tolerance through redundancy by connecting multiple
          OMNI interfaces within the same domain to independent routing
          topologies (i.e., multiple independent OMNI links).</t>

          <t hangText="Performance Based Multilink (PBM)"><vspace/>A means for
          selecting one or more underlay interface(s) for carrier packet
          transmission and reception within a single OMNI interface.</t>

          <t hangText="OMNI Domain"><vspace/>The set of all SBM/PBM OMNI links
          that collectively provides services for a common set of MSPs. All
          OMNI links within the same domain configure, advertise and respond
          to the same OMNI IPv6 Anycast address(es).</t>

          <t hangText="AERO Forwarding Information Base (AFIB)"><vspace/>A
          multilink forwarding table on each OAL source, destination and
          intermediate system that includes AERO Forwarding Vectors (AFV) with
          both next hop forwarding instructions and context for reconstructing
          compressed headers for specific underlay interface pairs used to
          communicate with peers. See: <xref target="I-D.templin-intarea-aero2"/>
          for further discussion.</t>

          <t hangText="AERO Forwarding Vector (AFV)"><vspace/>An AFIB entry
          that includes soft state for each underlay interface pairwise
          communication session between peer neighbors. AFVs are identified
          by both a next-hop and previous-hop AFV Index (AFVI), with the next-hop
          established based on an IPv6 ND solicitation and the previous hop
          established based on the solicited IPv6 ND advertisement response.
          The AFV also caches underlay interface pairwise Identification
          sequence number parameters to support carrier packet filtering. See:
          <xref target="I-D.templin-intarea-aero2"/> for further discussion.</t>

          <t hangText="AERO Forwarding Vector Index (AFVI)"><vspace/>A
          locally-unique 2-octet or 4-octet value automatically generated
          by an OAL node when it creates an AFV. OAL intermediate systems assign
          two distinct 4-octet AFVIs (called "A" and "B") to each AFV, with "A"
          representing the forward path and "B" representing the reverse path.
          Meanwhile, the OAL source assigns a single "B" AFVI, and the OAL
          destination assigns a single "A" AFVI. Each OAL node advertises its
          "A" AFVI to previous hop nodes on the reverse path toward the source
          and advertises its "B" AFVI to next hop nodes on the forward path
          toward the destination. Clients in MANETs also assign distinct
          2-octet AFVIs (called "C" and "D") to support local multihop
          forwarding. The same as for the A/B AFVIs, the "C" AFVI represents
          the forward path and the "D" AFVI represents the reverse path. For
          unidirectional MANET paths, only the forward path ("C") AFVI is used.
          See: <xref target="I-D.templin-intarea-aero2"/> for further discussion.</t>

          <t hangText="(OMNI) L2 encapsulation"><vspace/>the OMNI protocol
          encapsulation of OAL packets/fragments in an outer header or headers
          to form carrier packets that can be routed within the scope of the
          local ANET/INET/ENET underlay network partition. The OAL node that
          performs encapsulation is known as the "L2 source" while the OAL
          node that performs decapsulation is known as the "L2 destination";
          both OAL end and intermediate systems can also act as an L2 source
          or destination. Common L2 encapsulation combinations include UDP,
          IP and/or Ethernet using a port/protocol/type number for OMNI.</t>

          <t hangText="L2 address (L2ADDR)"><vspace/>an address that appears
          in the OMNI protocol L2 encapsulation for an underlay interface and
          also in IPv6 ND message OMNI options. L2ADDR can be either an IP
          address for IP encapsulations or an IEEE EUI address <xref
          target="EUI"/> for direct data link encapsulation. (When UDP/IP
          encapsulation is used, the UDP port number is considered an
          ancillary extension of the IP L2ADDR.)</t>

          <t hangText="OAL Fragment Size (OFS)"><vspace/>the current size for
          OAL source fragmentation which must be no smaller than 1024 octets
          and no larger than 65279 octets (allowing for up to 256 octets of
          L2 encapsulations for each OAL fragment). Each OAL source maintains
          an OFS in AERO Forwarding Vectors (AFVs) for each OAL destination.
          The source discovers the "maximum OFS" through IPv6 Minimum Path MTU
          options <xref target="RFC9268"/> and maintains an equal or smaller value
          "effective OFS" according to dynamic network control message feedback.
          The OAL source should adaptively seek to use the largest possible effective
          OFS under current network conditions to provide better performance for
          upper layers. OAL fragments prepared by the source must not be
          further fragmented by OAL intermediate systems on the path to
          the OAL destination.</t>

          <t hangText="Carrier Fragment Size (CFS)"><vspace/>the current
          size for L2 carrier packet fragments including the headers,
          trailers and OAL fragment body. The OAL L2 source applies source
          fragmentation if necessary to each L2-encapsulated OAL fragment
          under the default CFS of 1280 octets (i.e., the IPv6 minimum MTU)
          until it can either engage IPv4 network fragmentation or determine
          whether a larger CFS is possible through Packetization Layer Path
          MTU Discovery for Datagram Transports <xref target="RFC8899"/>.
          The L2 source should adaptively seek to maximize CFS to provide
          better performance for upper layers.</t>
        </list></t>
    </section>

    <section anchor="reqs" title="Requirements">
      <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>

      <t>An implementation is not required to internally use the architectural
      constructs described here so long as its external behavior is consistent
      with that described in this document.</t>
    </section>

    <section anchor="aerospec"
             title="Overlay Multilink Network (OMNI) Interface Model">
      <t>An OMNI interface is a virtual interface configured over one or more
      underlay interfaces, which may be physical (e.g., an aeronautical radio
      link, a cellular wireless link, etc.) or virtual (e.g., an internet-layer
      or higher-layer "tunnel"). The OMNI interface architectural layering model
      is the same as in <xref target="RFC5558"/><xref target="RFC7847"/>, and
      augmented as shown in <xref target="aeroint"/>. The network layer
      therefore sees the OMNI interface as a single L3 interface nexus
      for multiple underlay interfaces that appear as L2 communication
      channels in the architecture.</t>

      <figure anchor="aeroint"
              title="OMNI Interface Architectural Layering Model">
        <artwork><![CDATA[                                  +----------------------------+
                                  |    Upper Layer Protocol    |
           Session-to-IP    +---->|                            |
           Address Binding  |     +----------------------------+
                            +---->|           IP (L3)          |
           IP Address       +---->|                            |
           Binding          |     +----------------------------+
                            +---->|       OMNI Interface       |
           Logical-to-      +---->|   (OMNI Adaptation Layer)  |
           Physical         |     +----------------------------+
           Interface        +---->|  L2  |  L2  |       |  L2  |
           Binding                |(IF#1)|(IF#2)| ..... |(IF#n)|
                                  +------+------+       +------+
                                  |  L1  |  L1  |       |  L1  |
                                  |      |      |       |      |
                                  +------+------+       +------+
]]></artwork>
      </figure>

      <t>Each underlay interface provides an L2/L1 abstraction according to
      one of the following models:<list style="symbols">
          <t>ANET interfaces connect to a protected and secured ANET that is
          separated from the open INET by Proxy/Servers. The ANET interface
          may be either on the same L2 link segment as a Proxy/Server, or
          separated from a Proxy/Server by multiple L2 hops. (Note that NATs
          may appear internally within an ANET or on the Proxy/Server itself
          and may require NAT traversal the same as for the INET case.)</t>

          <t>INET interfaces connect to an INET either natively or through
          IP Network Address Translators (NATs). Native INET interfaces have
          global IP addresses that are reachable from any INET correspondent.
          NATed INET interfaces typically configure private IP addresses and
          connect to a private network behind one or more NATs with the
          outermost NAT providing INET access.</t>

          <t>ENET interfaces connect a Client's downstream-attached networks,
          where the Client provides forwarding services for ENET Host and
          Client communications to remote peers. An ENET may be as simple as a
          small IoT sub-network that travels with a mobile Client to as complex
          as a large private enterprise network that the Client connects to a
          larger ANET or INET. Downstream-attached Hosts and Clients see the
          ENET as an ANET and see the (upstream) Client as a Proxy/Server.</t>

          <t>VPN interfaces use security encapsulations (e.g. IPsec tunnels)
          over underlay networks to connect Client, Proxy/Server or other
          critical infrastructure nodes. VPN interfaces provide security
          services at lower layers of the architecture (L2/L1), with
          securing properties similar to Direct point-to-point interfaces.</t>

          <t>Direct point-to-point interfaces securely connect Clients,
          Proxy/Servers and/or other critical infrastructure nodes over physical
          or virtual media that does not transit any open Internetwork paths.
          Examples include a line-of-sight link between a remote pilot and an
          unmanned aircraft, a fiberoptic link between gateways, etc.</t>
        </list>The OMNI interface forwards original IP packets/parcels from
      the network layer using the OMNI Adaptation Layer (OAL) (see: <xref
      target="intmtu"/>) as an encapsulation and fragmentation sublayer
      service. This "OAL source" then further encapsulates the resulting OAL
      packets/fragments in underlay network headers (e.g., UDP/IP, IP-only,
      Ethernet-only, etc.) to create L2 encapsulated "carrier packets" for
      fragmentation and transmission over underlay interfaces. The target OMNI
      interface then receives the carrier packets from underlay interfaces and
      performs L2 reassembly/decapsulation.</t>

      <t>If the resulting OAL packets/fragments are addressed to itself, the
      OMNI interface performs reassembly/decapsulation as an "OAL destination"
      and delivers the original IP packet/parcel to the network layer. If the
      OAL packets/fragments are addressed to another node, the OMNI interface
      instead re-encapsulates them in new underlay network L2 headers as an
      "OAL intermediate system" then performs L2 fragmentation and forwards
      the resulting carrier packets over an underlay interface. The OAL source
      and OAL destination are seen as "neighbors" on the OMNI link, while OAL
      intermediate systems provide a virtual bridging service that joins the
      segments of a (multinet) Segment Routing Topology (SRT).</t>

      <t>The OMNI interface transports carrier packets over either secured or
      unsecured underlay interfaces to access the secured/unsecured OMNI link
      spanning trees as discussed further throughout the document. Carrier
      packets that carry control plane messages over secured underlay
      interfaces use secured L2/L1 services such as IPsec, direct encapsulation
      over secured point-to-point links, etc. Carrier packets that carry data
      plane messages over unsecured underlay interfaces instead use L2
      encapsulations appropriate for public or private Internetworks and
      are subject for the following sections.</t>

      <t>The OMNI interface and its OAL can forward original IP packets/parcels
      over underlay interfaces while including/omitting various lower layer
      encapsulations including OAL, UDP, IP and (ETH)ernet or other link
      layer header. The network layer can also engage underlay interfaces
      directly while bypassing the OMNI interface entirely when necessary.
      This architectural flexibility may be beneficial for underlay
      interfaces (e.g., some aviation data links) for which encapsulation
      overhead is a primary consideration. OMNI interfaces that send
      original IP packets/parcels directly over underlay interfaces without
      invoking the OAL can only reach peers located on the same OMNI link
      segment. Source Clients can instead use the OAL to coordinate with
      target Clients in the same or different OMNI link segments by sending
      initial carrier packets to a First-Hop Segment (FHS) Proxy/Server. The
      FHS Proxy/Sever then sends the carrier packets into the SRT spanning
      tree, which transports them to a Last-Hop Segment (LHS) Proxy/Server for
      the target Client.</t>

      <t>The OMNI interface encapsulation/decapsulation layering possibilities
      are shown in <xref target="omni-layering"/> below. Imaginary vertical
      lines drawn between the Network Layer at the top of the figure and
      Underlay Interfaces at the bottom of the figure denote the various
      encapsulation/decapsulation layering combination possibilities. Common
      combinations include IP-only (i.e., direct access to underlay interfaces
      with or without using the OMNI interface, IP/IP, IP/UDP/IP,
      IP/UDP/IP/ETH, IP/OAL/UDP/IP, IP/OAL/UDP/ETH, etc.).
      <figure anchor="omni-layering" title="OMNI Interface Layering">
          <artwork><![CDATA[ +------------------------------------------------------------+  ^
 |          Network Layer (Original IP packets/parcels)       |  |
 +--+---------------------------------------------------------+ L3
    |         OMNI Interface (virtual sublayer nexus)         |  |
    +--------------------------+------------------------------+  -
                               |      OAL Encaps/Decaps       |  |
                               +------------------------------+ OAL
                               |        OAL Frag/Reass        |  |
                  +------------+---------------+--------------+  -
                  | UDP Encaps/Decaps/Compress |                 |
             +----+---+------------+--------+--+  +--------+     |
             | IP E/D |            | IP E/D |     | IP E/D |    L2
        +----+-----+--+----+    +--+----+---+     +---+----+--+  |
        |ETH E/D|  |ETH E/D|    |ETH E/D|             |ETH E/D|  |
 +------+-------+--+-------+----+-------+-------------+-------+  v
 |                    Underlay Interfaces                     |
 +------------------------------------------------------------+
]]></artwork>
        </figure></t>

      <t>The OMNI/OAL model gives rise to a number of opportunities:</t>

      <t><list style="symbols">
          <t>Clients coordinate with the MS and receive MNP delegations
          through IPv6 ND control plane message exchanges with Proxy/Servers.
          Clients use the MNP to construct Link-Local and Unique-Local Addresses
          (LLA-MNP / ULA-MNP) through the algorithmic derivation specified
          in <xref target="aero-address"/> and assign the addresses to the
          OMNI interface. Since the LLA and ULA are derived from a unique
          MNP, no Duplicate Address Detection (DAD) or Multicast Listener
          Discovery (MLD) messaging is necessary.</t>

          <t>since Temporary ULAs with random IIDs (TLA-RNDs) are
          statistically unique, they can be used without DAD until an MNP is
          obtained.</t>

          <t>underlay interfaces on the same L2 link segment as a Proxy/Server
          do not require any L3 addresses (i.e., not even link-local) in
          environments where communications are coordinated entirely over the
          OMNI interface.</t>

          <t>as underlay interface properties change (e.g., link quality,
          cost, availability, etc.), any active interface can be used to
          update the profiles of multiple additional interfaces in a single
          message. This allows for timely adaptation and service continuity
          under dynamically changing conditions.</t>

          <t>coordinating underlay interfaces in this way allows them to be
          represented in a unified MS profile with provisions to support the
          "6 M's of Modern Internetworking".</t>

          <t>exposing a single virtual interface abstraction to the network layer
          allows for multilink operation (including QoS based link selection,
          carrier packet replication, load balancing, etc.) at L2 while still
          permitting L3 traffic shaping based on, e.g., DSCP, flow label,
          etc.</t>

          <t>the OMNI interface supports multinet traversal over the SRT when
          communications across different administrative domain network
          segments are necessary. This mode of operation would not be possible
          via direct communications over the underlay interfaces themselves.</t>

          <t>the OAL supports lossless and adaptive path MTU mitigations not
          available for communications directly over the underlay interfaces
          themselves. The OAL supports "packing" of multiple original IP
          payload packets/parcels within a single OAL "super-packet" and also
          supports transmission of IP packets/parcels of all sizes up to and
          including (advanced) jumbograms.</t>

          <t>the OAL assigns per-packet Identification values that allow for
          adaptation/link layer reliability and data origin authentication.</t>

          <t>L3 sees the OMNI interface as a point of connection to the OMNI
          link; if there are multiple OMNI links, L3 will see multiple OMNI
          interfaces.</t>

          <t>Multiple independent OMNI interfaces can be used for increased
          fault tolerance through Safety-Based Multilink (SBM), with
          Performance-Based Multilink (PBM) applied within each interface.</t>

          <t>Multiple independent OMNI links can be joined together into a
          single link without requiring renumbering of infrastructure
          elements, since the ULAs assigned to the different links will be
          mutually exclusive.</t>

          <t>the OMNI/OAL model supports transmission of a new form of IP
          packets known as "IP parcels" that improve performance and
          efficiency for both transport layer protocols and networked paths.</t>
        </list></t>

      <t><xref target="dsp_model"/> depicts the architectural model for a
      source Client with an attached ENET connecting to the OMNI link via
      multiple independent ANETs/INETs (i.e., *NETs). The Client's OMNI
      interface forwards adaptation layer IPv6 ND solicitation messages over
      available *NET underlay interfaces using any necessary L2 encapsulations.
      The IPv6 ND messages traverse the *NETs until they reach an FHS Proxy/Server
      (FHS#1, FHS#2, ..., FHS#n), which returns an IPv6 ND advertisement message
      and/or forwards a proxyed version of the message over the SRT to an LHS
      Proxy/Server near the target Client (LHS#1, LHS#2, ..., LHS#m). The Hop
      Limit in IPv6 ND messages is not decremented due to encapsulation; hence,
      the source and target Client OMNI interfaces appear to be attached to
      a common link.</t>

      <figure anchor="dsp_model"
              title="Source/Target Client Coordination over the OMNI Link">
        <artwork><![CDATA[                        +--------------+
                        |Source Client |
                        +--------------+        (:::)-.
                        |OMNI interface|<-->.-(::ENET::)
                        +----+----+----+      `-(::::)-'
               +--------|IF#1|IF#2|IF#n|------ +
              /         +----+----+----+        \
             /                 |                 \
            /                  |                  \
           v                   v                   v
        (:::)-.              (:::)-.              (:::)-.
   .-(::*NET:::)        .-(::*NET:::)        .-(::*NET:::)
     `-(::::)-'           `-(::::)-'           `-(::::)-'
      +-----+              +-----+              +-----+
 ...  |FHS#1|  .........   |FHS#2|   .........  |FHS#n|  ...
.     +--|--+              +--|--+              +--|--+     .
.        |                    |                    |
.        \                    v                    /        .
.         \                                       /         .
.           v                 (:::)-.           v            .
.                        .-(::::::::)                       .
.                    .-(::: Segment :::)-.                  .
.                  (:::::   Routing   ::::)                 .
.                     `-(:: Topology ::)-'                  .
.                         `-(:::::::-'                      .
.                  /          |          \                  .
.                 /           |           \                 .
.                v            v            v
.     +-----+              +-----+              +-----+     .
 ...  |LHS#1|  .........   |LHS#2|   .........  |LHS#m|  ...
      +--|--+              +--|--+              +--|--+
          \                   |                    /
           v                  v                   v
                    <-- Target Clients -->
]]></artwork>
      </figure>

      <t>After the initial IPv6 ND message exchange, the source Client (as
      well as any nodes on its attached ENETs) can send carrier packets to the
      target Client via the OMNI interface. OMNI interface multilink services
      will send the carrier packets via FHS Proxy/Servers for the correct
      underlay *NETs. The FHS Proxy/Server then re-encapsulates the carrier
      packets and sends them over the SRT which delivers them to an LHS
      Proxy/Server, and the LHS Proxy/Server in turn re-encapsulates and sends
      them to the target Client. (Note that when the source and target Client
      are on the same SRT segment, the FHS and LHS Proxy/Servers may be one
      and the same.)</t>

      <t>Clients select a Hub Proxy/Server (not shown in the figure), which
      will often be one of their FHS Proxy/Servers but could also be any
      Proxy/Server on the OMNI link. Clients then register all of their *NET
      underlay interfaces with the Hub Proxy/Server via the FHS Proxy/Server
      in a pure proxy role. The Hub Proxy/Server then provides a designated
      router service for the Client, and the Client can quickly migrate to a
      new Hub Proxy/Server if the first becomes unresponsive.</t>

      <t>Clients therefore use Proxy/Servers as gateways into the SRT to reach
      OMNI link correspondents via a spanning tree established in a manner
      outside the scope of this document. Proxy/Servers forward critical MS
      control messages via the secured spanning tree and forward other
      messages via the unsecured spanning tree (see Security Considerations).
      When AERO route optimization is applied, Clients can instead forward
      directly to SRT intermediate systems (or directly to correspondents
      in the same SRT segment) to reduce Proxy/Server load.</t>

      <t>Note: while not shown in the figure, a Client's ENET may connect many
      additional Hosts and even other Clients in a recursive extension of the
      OMNI link. This OMNI virtual link extension will be discussed more fully
      throughout the document.</t>

      <t>Note: Original IP packets/parcels sent into an OMNI interface will
      receive consistent consideration according to their size as discussed
      in the following sections, while those sent directly over underlay
      interfaces that exceed the underlay network path MTU are dropped with
      an ordinary ICMP Packet Too Big (PTB) message returned. These PTB
      messages are subject to loss the same as for any non-OMNI IP
      interface <xref target="RFC2923"/>.</t>
    </section>

    <section anchor="intmtu"
             title="OMNI Interface Maximum Transmission Unit (MTU)">
      <t>The OMNI interface observes the link nature of tunnels, including
      the Maximum Transmission Unit (MTU), Effective MTU to Send (EMTU_S),
      Effective MTU to Receive (EMTU_R) and the role of fragmentation and
      reassembly <xref target="I-D.ietf-intarea-tunnels"/>. The OMNI
      interface is configured over one or more underlay interfaces as
      discussed in <xref target="aerospec"/>, where underlay links and
      network paths may have diverse MTUs. OMNI interface considerations
      for accommodating original IP packets/parcels of various sizes
      are discussed in the following sections.</t>

      <t>IPv6 underlay interfaces are REQUIRED to configure a minimum MTU of
      1280 octets and a minimum EMTU_R of 1500 octets <xref target="RFC8200"/>.
      Therefore, the minimum IPv6 path MTU is 1280 octets since routers on the
      path are not permitted to perform network fragmentation even though the
      destination is required to reassemble more. The network therefore MUST
      forward original IP packets/parcels as large as 1280 octets without
      generating an IPv6 Path MTU Discovery (PMTUD) Packet Too Big (PTB)
      message <xref target="RFC8201"/>. Since each OAL intermediate system
      must configure an EMTU_R of at least 65535 octets (see: <xref target
      ="oal37"/>), the source can apply "source fragmentation" for carrier
      packets as large as that size but this does not affect the minimum
      IPv6 path MTU.)</t>

      <t>IPv4 underlay interfaces are REQUIRED to configure a minimum MTU of
      68 octets <xref target="RFC0791"/> and a minimum EMTU_R of 576 octets
      <xref target="RFC0791"/><xref target="RFC1122"/>. Therefore, when the
      Don't Fragment (DF) bit in the IPv4 header is set to 0 the minimum
      IPv4 path MTU is 576 octets since routers on the path support network
      fragmentation and the destination is required to reassemble at least
      that much. The OMNI interface therefore SHOULD set DF to 0 in the IPv4
      encapsulation headers of carrier packets no larger than 576 octets,
      and SHOULD set DF to 1 in larger carrier packets unless it has a
      way to determine the EMTU_R of the next OAL hop as discussed in <xref
      target="fragsec"/>. This limitation is therefore relaxed by the
      requirement that each OAL intermediate system must configure a
      minimum EMTU_R of 65535 octets (see: <xref target="oal37"/>)
      allowing for IPv4 fragmentation and reassembly for larger
      carrier packets.</t>

      <t>The OMNI interface itself sets an "unlimited" MTU of (2**32 - 1)
      octets. The network layer therefore unconditionally admits all original
      IP packets/parcels into the OMNI interface, where the adaptation layer
      accommodates them if possible according to their size. For each parcel
      that it accommodates, the OAL source within the OMNI interface first
      performs "parcellation" if necessary to break large parcels into smaller
      sub-parcels that can transit the OAL path (see: <xref target="parcels"/>).
      The OAL source then invokes adaptation layer encapsulation/fragmentation
      services to transform all original IP packets and (sub-)parcels no larger
      that 65535 octets into OAL packets/fragments. The OAL source then applies
      L2 encapsulation and fragmentation if necessary to form carrier packets
      and finally forwards the carrier packets via underlay interfaces.</t>

      <t>When the OAL source performs IPv6 encapsulation and fragmentation
      (see: <xref target="oal2"/>), the Fragment Offset field limits the
      maximum-sized original IP packet/parcel that the OAL can accommodate
      while applying IPv6 fragmentation to (2**16 - 1) = 65535 octets
      (plus the length of the OAL encapsulation extension headers). The
      OAL source is also permitted to forward packets/parcels larger
      than this size as a best-effort delivery service if the L2 path
      can accommodate them through "jumbo-in-jumbo" encapsulation (see:
      <xref target="jumbo"/>); otherwise, the OAL source discards the
      packet and arranges to return a PTB "hard error" to the original
      source (see: <xref target="oal3"/>).</t>

      <t>Each OMNI interface therefore sets a minimum EMTU_R of 65535 octets
      (plus the length of the OAL encapsulation headers), and each OAL
      destination must consistently either accept or reject still larger
      whole packets that arrive over any of its underlay interfaces according
      to their size. If an underlay interface presents a whole packet larger
      than the OAL destination is prepared to accept (e.g., due to a buffer
      size restriction), the OAL destination discards the packet and arranges
      to return a PTB "hard error" to the OAL source which in turn forwards
      the PTB to the original source (see: <xref target="oal3"/>).</t>

      <section anchor="parcels" title="IP Parcels">
        <t>As specified in <xref target="I-D.templin-6man-parcels2"/>
        <xref target="I-D.templin-intarea-parcels2"/>, an
        IP parcel is an IP jumbogram variant for which the IP {Total, Payload}
        Length field encodes a value between 256 and 65535 octets denoting the
        non-final transport layer protocol segment length while the parcel body
        includes as many as 64 individual transport layer protocol segments.
        The Jumbo Payload length field is modified to include a Parcel Index
        field plus flags followed by a 22-bit Parcel Payload Length field
        which together determine the size and number of transport layer
        segments included in the parcel.</t>

        <t>IP parcel "parcellation" and "reunification" procedures for OMNI
        interfaces are specified in <xref target="I-D.templin-6man-parcels2"/>
        <xref target="I-D.templin-intarea-parcels2"/>,
        while OAL encapsulation and fragmentation procedures are specified in
        <xref target="parcels2"/> of this document. The maximum-sized IP parcel
        that can be conveyed over an OMNI interface using OAL parcellation and
        IPv6 fragmentation-based assured delivery is one with 64 segments
        of 65535 (minus headers) octets in length. (The OAL source can instead
        forward large parcels as a best-effort service using jumbo-in-jumbo
        encapsulation if the OAL/L2 path can accommodate them.)</t>

        <t>IP parcels follow the same link models described for Advanced Jumbos
        below. IP parcels that accumulate link errors on the path are subject
        to error detection and correction at the final destination.</t>

        <t>ENET end systems that implement either the full OMNI interface
        (i.e., Clients) or enough of the OAL to process parcels (i.e., Hosts)
        are permitted to exchange parcels with consenting peers. This
        accommodates nodes that connect to the OMNI link but do not
        assign OAL addresses.</t>
      </section>

      <section anchor="jumbo" title="Advanced Jumbos (AJs)">
        <t>While the maximum-sized original IP packet/parcel that the OAL can
        accommodate using IPv6 fragmentation-based assured delivery is 65535
        octets, OMNI interfaces can forward much larger singleton parcels
        termed "Advanced Jumbos (AJs)" via jumbo-in-jumbo encapsulation
        as specified in <xref target="I-D.templin-6man-parcels2"/><xref
        target="I-D.templin-intarea-parcels2"/>. For jumbo-in-jumbo encapsulation
        of large AJs, the OAL source appends an OAL IPv6 header plus extensions
        then appends any L2 headers to identify this as an AJ. Since the Jumbo
        Payload Length is 32 bits, the largest possible AJ is limited to
        (2**32 - 1) octets minus the lengths of any extension/encapsulation
        headers, or smaller still for transmission over underlay interfaces
        that include additional extensions/encapsulations.</t>

        <t>Basic IPv6 jumbograms per <xref target="RFC2675"/> use the Jumbo
        Payload option and set the IPv6 Payload Length field to 0. IP parcels
        and AJs instead use the IPv6 Minimum Path MTU option per <xref target=
        "RFC9268"/> and set the IP {Total, Payload} Length to other values.
        The OAL/L2 source forwards basic jumbograms and AJs as giant carrier
        packets via jumbo-in-jumbo encapsulation, noting that traditional
        32-bit link CRCs do not provide adequate integrity protection for
        such large sizes <xref target="CRC"/>. If a basic jumbogram is
        dropped along the path to the OAL destination, the OAL source
        arranges to return an ICMP PTB "hard error" to the original source.
        If an AJ is dropped, the OAL source instead arranges to return
        ICMP PTB "soft errors" (see: <xref target="oal3"/>).</t>

        <t>AJs range in size from the largest possible unit as discussed above
        to the smallest unit that includes only the headers and a small or
        possibly even null payload. Intermediate hops forward AJs that follow
        a new DTN link model for the Internet (instead of dropping) even if
        link errors were incurred along the path. The AJ will then arrive at
        the destination along with any cumulative link errors collected on
        the path, then the final destination applies end-to-end integrity
        checks and/or error correction while requesting retransmission only
        as a last resort. This link model may be more appropriate for
        delay/disruption-tolerant environments such as anticipated for
        air/land/sea/space mobile Internetworking.</t>

        <t>Advanced jumbo services for both IPv6 and IPv4 (including jumbo
        path probing and jumbo-in-jumbo encapsulation) are specified in
        <xref target="I-D.templin-6man-parcels2"/><xref target=
        "I-D.templin-intarea-parcels2"/>.</t>
      </section>

      <section anchor="ctrl-data" title="Control/Data Plane Considerations">
        <t>The above sections primarily concern data plane aspects of the OMNI
        interface MTU and describe the data plane service model offered to
        the network layer. OMNI interfaces also internally employ a control
        plane service based on IPv6 Neighbor Discovery (ND) messaging. These
        control plane messages must be sent over secured underlay interfaces
        (e.g., IPsec tunnels, secured direct point-to-point links, etc.)
        where the IPv6 minimum MTU of 1280 octets must be assumed.</t>

        <t>OMNI interfaces therefore offer an unlimited data plane MTU to
        the network layer but set a more conservative MTU for the internal
        control plane operation. OMNI interfaces assume a fixed control
        plane path MTU of 1280 octets for transmission of IPv6 ND messages
        over underlay interface connections to the secured spanning tree.
        OMNI interface control plane messages must therefore engage IPv6
        encapsulation followed by fragmentation if necessary for any larger
        control plane messages up to a maximum of 65535 octets. Recognizing
        that larger control plane messages are sometimes unavoidable, OMNI
        interfaces should send multiple smaller IPv6 ND messages instead
        of singleton larger messages whenever possible to minimize
        fragmentation.</t>
      </section>
    </section>

    <section anchor="oal2" title="The OMNI Adaptation Layer (OAL)">
      <t>When an OMNI interface forwards an original IP packet/parcel from the
      network layer for transmission over one or more underlay interfaces, the
      OMNI Adaptation Layer (OAL) acting as the OAL source applies IPv6
      encapsulation to form OAL packets subject to OAL fragmentation producing
      fragments suitable for L2 encapsulation and transmission as carrier
      packets. These carrier packets may in turn be subject to IP fragmentation
      over underlay interface paths as described in <xref target="oal23"/>. The
      carrier packets/fragments then travel over one or more underlay networks
      spanned by OAL intermediate systems in the SRT, which first reassemble (if
      necessary) then re-encapsulate by removing the L2 headers of the first
      underlay network and appending L2 headers appropriate for the next underlay
      network in succession while re-fragmenting if necessary. (This process
      supports the multinet concatenation capability needed for joining multiple
      diverse networks.) Following any forwarding by OAL intermediate systems,
      the carrier packets arrive at the OAL destination.</t>

      <t>When the OAL destination receives the carrier packets, it reassembles
      (if necessary) then discards the L2 headers and reassembles the resulting
      OAL fragments (if necessary) into an OAL packet as described in <xref
      target="oal37"/>. The OAL destination next decapsulates the OAL packet
      to obtain the original IP packet/parcel which it then delivers to the
      network layer. The OAL source may be either the source Client or its
      FHS Proxy/Server, while the OAL destination may be either the LHS
      Proxy/Server or the target Client. Proxy/Servers (and SRT Gateways
      as discussed in <xref target="I-D.templin-intarea-aero2"/>) may also
      serve as OAL intermediate systems.</t>

      <t>The OAL presents an OMNI sublayer abstraction similar to ATM
      Adaptation Layer 5 (AAL5). Unlike AAL5 which performs segmentation and
      reassembly with fixed-length 53-octet cells over ATM networks, however,
      the OAL uses IPv6 encapsulation, fragmentation and reassembly with
      larger variable-length cells over heterogeneous networks. Detailed
      operations of the OAL are specified in the following sections.</t>

      <section anchor="oal23"
               title="OAL Source Encapsulation and Fragmentation">
        <t>When the network layer forwards an original IP packet/parcel into
        the OMNI interface, it sets the TTL/Hop Limit for locally-generated
        packets or decrements it according to standard IP forwarding rules
        for forwarded packets. The OAL source next creates an "OAL packet"
        by prepending an IPv6 OAL encapsulation header in the spirit of
        <xref target="RFC2473"/> but with Next Header set to TBD1 (see:
        IANA Considerations) and with the IPv6 OAL header followed by an
        IPv4 or IPv6 original packet. The OAL source copies the "Type of
        Service/Traffic Class" <xref target="RFC2983"/> and "Explicit
        Congestion Notification (ECN)" <xref target="RFC3168"/> values
        in the original packet/parcel's IP header into the corresponding
        fields in the OAL header, then sets the OAL header "Flow Label"
        as specified in <xref target="RFC6438"/>. The OAL source next
        sets the OAL header IPv6 Payload Length to the length of the
        original IP packet/parcel and sets Hop Limit to a value that MUST
        NOT be larger than 63 yet is still sufficiently large to support
        loop-free forwarding over multiple concatenated OAL intermediate
        hops.</t>

        <t>The OAL source next selects OAL packet source and destination
        addresses. Client OMNI interfaces set the OAL source address to a
        Unique Local Address (ULA) based on the Mobile Network Prefix
        (ULA-MNP). When a Client OMNI interface does not (yet) have a ULA
        prefix and/or an MNP suffix, it can instead use a Temporary ULA
        (TLA) (or a (Hierarchical) Host Identity Tag ((H)HIT - see: <xref
        target="hip-nd"/>) as an OAL address. Finally, when the Client needs
        to express its MNP outside the context of a specific ULA prefix, it
        can use an eXtended ULA (XLA). Proxy/Server OMNI interfaces instead
        set the source address to a Random ULA (ULA-RND) (see: <xref
        target="span-address"/>), but also process carrier packets with
        anycast and/or multicast OAL addresses that they are configured to
        recognize.)</t>

        <t>The OAL source next inserts any necessary extension headers following
        the OAL IPv6 header but before the payload packet as specified in <xref
        target="alt-oal-l2"/>. The source first inserts any per-fragment extension
        headers (e.g., Hop-by-Hop, Routing, etc.) then inserts an IPv6 Extended
        Fragment Header (see: <xref target="I-D.templin-6man-ipid-ext"/>) with
        an 8-octet (64-bit) OAL packet Identification. Note that the extension
        header insertions could cause the IPv6 Payload Length to exceed 65535
        octets when the original IPv6 packet is (nearly) the maximum length.
        The OAL source then fragments the OAL packet if necessary according to
        an OAL Fragment Size (OFS) maintained in AERO Forwarding Vectors (AVFs)
        for each OAL destination. (OAL packets that are no larger than the OFS
        and original IP packets/parcels larger than 65535 octets are instead
        processed as "atomic fragments".) OAL fragments prepared by the source
        must not be fragmented further by OAL intermediate systems on the path
        to the OAL destination.</t>

        <t>OAL packets that contain original IP parcels no larger than
        (64*65535) octets may be first subject to OMNI interface parcellation,
        after which the (sub-)parcels (as well as OAL packets that contain
        original IP packets no larger than 65535 octets) are subject to OAL
        fragmentation-based assured delivery. Advanced Jumbos (AJs) larger
        than 65535 octets (see: <xref target="I-D.templin-6man-parcels2"/>
        <xref target="I-D.templin-intarea-parcels2"/>) are not eligible for
        OAL fragmentation but instead engage a best effort jumbo-in-jumbo
        encapsulation service as discussed in <xref target="jumbo"/>.
        (Note: the original source can optionally elect this best-effort
        jumbo-in-jumbo delivery service for any parcel/AJ regardless of
        its size.)</t>

        <t>OAL fragmentation is conducted as specified in <xref target=
        "alt-oal-l2"/>, which is the same as for standard IPv6 fragmentation
        (see: <xref target="RFC8200"/>) with the exception that the IPv6 Payload
        Length may exceed 65535 by at most the length of the extension headers.
        The OAL source MUST set a "maximum OFS" to a size no smaller than 1024
        octets and no larger than 65279 octets and thereafter reduce or increase
        the "effective OFS" according to dynamic network control message feedback.
        (Note that these sizes allow for up to 256 octets of L2 encapsulation
        relative to the IPv6 minimum MTU of 1280 octets and the maximum-sized
        reassembled packet of 65535 octets.) Specifically, if an OAL intermediate
        system or the OAL destination advertises a reduced size, the OAL source
        SHOULD reduce the effective OFS accordingly (to a size no smaller than
        1024 octets) and can later increase the effective OFS (to a size no
        larger than the maximum OFS) as network conditions improve. When the
        OAL source performs fragmentation, it SHOULD produce the minimum number
        of fragments under the effective OFS constraints, where the fragments
        MUST be non-overlapping and the portion of each non-final fragment
        following the IPv6 Extended Fragment Header MUST be equal in length
        while that of the final fragment may be a different length.</t>

        <t>The OAL source discovers the maximum OFS by including an IPv6 Minimum
        Path MTU Hop-by-Hop option <xref target="RFC9268"/> in the OAL encapsulation
        header of its Neighbor Solicitation (NS) / Neighbor Advertisement (NA)
        exchanges over the secured spanning tree used to establish multilink
        forwarding state (see: <xref target="I-D.templin-intarea-aero2"/>). Each
        OAL intermediate system on the path sets the minimum path MTU in the NS
        message OAL extension header to the maximum OFS capable of traversing
        the next segment. (Note that segments traversed by L2 encapsulations
        such as IPsec tunnels can normally regard the MTU for their unsecured
        overlay network segments as 65535 octets while those traversed by direct
        point-to-point links must regard the link MTU as a restricting size;
        therefore, each OAL intermediate system MUST correctly recognize and
        honor the IPv6 Minimum Path MTU Hop-by-Hop option. Note also that OAL
        intermediate systems forward the NS/NA messages in the control plane,
        but the returned MTU reflects the maximum OFS for the data plane.) When
        the OAL destination returns an NA message with an OAL header containing
        an IPv6 Minimum Path MTU Hop-by-Hop option, the OAL source can then set
        the maximum OFS for this AFV by deducting 256 from the returned MTU.
        The OAL source can later adaptively increase or decrease the effective
        OFS if it receives dynamic path MTU feedback from an OAL intermediate
        node or destination.</t> 

        <t>During fragmentation, the OAL source replaces the IPv6 Extended
        Fragment Header 1-octet "Reserved" field with OMNI-specific encodings
        as shown in <xref target="FH-reserved"/>:
        <figure anchor="FH-reserved"
            title="IPv6 Extended Fragment Header Reserved Field Coding">
            <artwork><![CDATA[
   +-+-+-+-+-+-+-+-+     +-+-+-+-+-+-+-+-+
   | Parcel ID |P|S|     |  Ordinal  |Res|
   +-+-+-+-+-+-+-+-+     +-+-+-+-+-+-+-+-+
   a) First fragment     a) Non-first fragment
]]></artwork>
          </figure></t>

        <t>For the first fragment (i.e., the one with Fragment Offset set
        to 0), the OAL source sets "Parcel ID", "(P)arcel" and "More (S)egments"
        as specified in <xref target="parcels2"/>. For each non-first fragment,
        the OAL source instead writes a monotonically-increasing "Ordinal"
        value between 1 and 63. Specifically, the OAL source writes the
        Ordinal value '1' for the first non-first fragment, '2' for the
        second, '3' for the third, etc. up to the final fragment. The
        first fragment is logically considered Ordinal number '0' while
        the final fragment may assign an Ordinal as large as '63'; therefore
        at most 64 fragments are possible. For this reason, OAL fragments
        produced by OAL source fragmentation must not be subjected to
        further adaptation layer fragmentation by an OAL intermediate
        system or IPv6 router on the path.</t>

        <t>The OAL source finally encapsulates the fragments in L2 headers to
        form carrier packets for transmission over underlay interfaces, while
        retaining the fragments and their ordinal numbers (i.e., #0, #1, #2,
        etc.) for a brief period to support adaptation layer retransmissions
        (see: <xref target="oal3.6"/>). OAL fragment and carrier packet formats
        are shown in <xref target="oal-fragment"/> (note that IPv4 carrier packets
        include a trailing checksum if necessary as discussed in <xref target="oal42"/>).
        <figure anchor="oal-fragment" title="OAL Fragments and Carrier Packets">
            <artwork><![CDATA[     +----------+-------------------------+---------------+
     |OAL Header| Original Packet Headers |    Frag #0    |
     +----------+-------------------------+---------------+
     +----------+----------------+
     |OAL Header|     Frag #1    |
     +----------+----------------+
     +----------+----------------+
     |OAL Header|     Frag #2    |
     +----------+----------------+
                 ....
     +----------+----------------+
     |OAL Header|   Frag #(N-1)  |
     +----------+----------------+
     a) OAL fragmentation


     +----------+-----------------------------+
     |OAL Header|  Original IP packet/parcel  |
     +----------+-----------------------------+
     b) An OAL atomic fragment


     +--------+----------+----------------+------+
     |L2 Hdrs |OAL Header|     Frag #i    | Csum |
     +--------+----------+----------------+------+
     c) OAL carrier packet after L2 encapsulation
]]></artwork>
          </figure></t>
      </section>

      <section anchor="oal42"
               title="OAL L2 Encapsulation and Re-Encapsulation">
        <t>The OAL source or intermediate system next encapsulates each OAL
        fragment (with either full or compressed headers) in L2 encapsulation
        headers to create a carrier packet. The OAL source or intermediate
        system (i.e., the L2 source) includes a UDP header as the innermost
        sublayer if NATs and/or filtering middleboxes might occur on the path.
        Otherwise, the L2 source includes a full/compressed IP header and/or
        an actual link layer header (e.g., such as for Ethernet-compatible
        links) as the innermost sublayer. The L2 source also appends any
        additional encapsulation sublayer headers necessary (e.g.,
        security encapsulations, jumbo-in-jumbo encapsulation, etc.).</t>

        <t>The L2 source encapsulates the OAL information immediately
        following the innermost L2 sublayer header. The L2 source next
        interprets the first four bits following the L2 headers as a Type
        field that determines the type of OAL header that follows. The L2
        source sets Type to "OMNI-OFH" for an uncompressed IPv6 OMNI Full Header
        (OFH) or "OMNI-OCH" for an OMNI Compressed Header (OCH) as specified in
        <xref target="oal98"/>. For raw IP packets/parcels (i.e., those that
        do not include an OAL header), the L2 source instead interprets the
        first four bits as a Version field that encodes '4' for an ordinary
        IPv4 packet/parcel or '6' for an ordinary IPv6 packet/parcel. Other
        Type values (including a Type for a Hop-by-Hop options header that
        includes an Advanced Jumbo option) may also appear as specified
        in <xref target="oal98"/>.</t>

        <t>The OAL node prepares the L2 encapsulation headers for OAL
        packets/fragments as follows:<list style="symbols">
            <t>For UDP/IP encapsulation, the L2 source sets the UDP source port
            to 8060 (i.e., the port number reserved for AERO/OMNI). When the
            L2 destination is a Proxy/Server or Gateway, the L2 source sets
            the UDP destination port to 8060; otherwise, the L2 source sets
            the UDP destination port to its cached port number value for the
            peer. The L2 source next sets the UDP Length the same as specified
            in <xref target="I-D.ietf-tsvwg-udp-options"/>. (If the OAL packet
            is submitted for jumbo-in-jumbo encapsulation, the L2 source instead
            includes a Hop-by-Hop Options header with Advanced Jumbo option
            following the L2 UDP/IP header with the length of the L2 UDP
            header included in the Jumbo Payload Length.) The L2 source then
            sets the IP {Protocol, Next Header} to '17' (the UDP protocol
            number) and sets the {Total, Payload} Length the same as specified
            in the base IP protocol specifications for IP parcels and Advanced
            Jumbos <xref target="I-D.templin-6man-parcels2"/><xref target=
            "I-D.templin-intarea-parcels2"/> or for ordinary IP packets <xref
            target="RFC0791"/><xref target="RFC8200"/><xref target=
            "I-D.ietf-tsvwg-udp-options"/>. The L2 source then continues
            to set the remaining IP header fields as discussed below.</t>

            <t>For IP-only encapsulation, the L2 source sets the IP {Protocol,
            Next Header} to TBD1 (see: IANA Considerations) and sets the
            {Total, Payload} Length the same as specified in <xref target=
            "RFC0791"/> or <xref target="RFC8200"/>. (If the OAL header
            includes an Advanced Jumbo option, the L2 source includes an
            Advanced Jumbo option in the L2 IP header.) The L2 source then
            continues to set the remaining IP header fields as discussed below.</t>

            <t>For direct encapsulations over Ethernet-compatible links, the
            L2 source prepares an Ethernet Header with EtherType set to TBD2
            (see: <xref target="iana0.5"/>) (see: <xref target="frame"/>).</t>

            <t>For OAL packet/fragment encapsulations over secured underlay
            interface connections to the secured spanning tree, the L2 source
            applies any L2 security encapsulations according to the protocol
            (e.g., IPsec). These secured carrier packets are then subject to
            lower layer security services including fragmentation and reassembly.</t>
          </list></t>

        <t>When an L2 source includes a UDP header, it SHOULD calculate and
        include a UDP checksum in carrier packets with full OAL headers to
        prevent mis-delivery and/or detect IPv4 reassembly corruption; the
        L2 source MAY set UDP checksum to 0 (disabled) in carrier packets
        with compressed OAL headers (see: <xref target="oal98"/>) or when
        reassembly corruption is not a concern. If the L2 source discovers
        that a path is dropping carrier packets with UDP checksums disabled,
        it should supply UDP checksums in future carrier packets sent to
        the same L2 destination. If the L2 source discovers that a path
        is dropping carrier packets that do not include a UDP header, it
        should include a UDP header in future carrier packets.</t>

        <t>When an L2 source sends carrier packets with compressed OAL headers
        and with UDP checksums disabled, mis-delivery due to corruption of the
        AERO Forwarding Vector Index (AFVI) is possible but unlikely since the
        corrupted index would somehow have to match valid state in the
        (sparsely-populated) AERO Forwarding Information Base (AFIB). In the
        unlikely event that a match occurs, an OAL destination may receive
        carrier packets that contain a mis-delivered OAL fragment but can
        immediately reject any with incorrect Identifications. If the Identification
        value is somehow accepted, the OAL destination may submit the mis-delivered
        OAL fragment to the reassembly cache where it will most likely be
        rejected due to incorrect reassembly parameters. If a reassembly that
        includes the mis-delivered OAL fragment somehow succeeds (or, for
        atomic fragments) the OAL destination will verify any included
        checksums to detect corruption. Finally, any spurious data that
        somehow eludes all prior checks will be detected and rejected by
        end-to-end upper layer integrity checks. See: <xref target="RFC6935"/>
        <xref target="RFC6936"/> for further discussion.</t>

        <t>For UDP/IP or IP-only L2 encapsulations, when the L2 source is
        also the OAL source it next copies the "Type of Service/Traffic Class"
        <xref target="RFC2983"/> and "Explicit Congestion Notification (ECN)"
        <xref target="RFC3168"/> values in the OAL header into the corresponding
        fields in the L2 IP header, then (for IPv6) set the L2 IPv6 header
        "Flow Label" as specified in <xref target="RFC6438"/>. The L2 source
        then sets the L2 IP TTL/Hop Limit the same as for any host (i.e., it
        does not copy the Hop Limit value from the OAL header) and finally
        sets the source and destination IP addresses to direct the carrier
        packet to the next OAL hop. For carrier packets subject to
        re-encapsulation, the OAL intermediate system as the L2 source
        reassembles if necessary then removes the L2 header(s). The L2
        source then decrements the OAL header Hop Limit and discards the
        OAL packet/fragment if the value reaches 0. The L2 source then
        copies the Type of Service/Traffic Class and ECN values from the
        previous segment L2 encapsulation header into the next segment L2
        encapsulation header while setting the next segment L2 source and
        destination IP addresses the same as above. (The L2 source also
        writes the ECN value into the OAL full/compressed header.)</t>

        <t>During L2 (re-)encapsulation for (UDP/)IPv6 carrier packets and
        (UDP/)IPv4 carrier packets that set DF to 1, the L2 source includes
        an IPv6 Extended Fragment Header per <xref target=
        "I-D.templin-6man-ipid-ext"/> without including a trailing
        checksum. For UDP/IPv4 (re-)encapsulation of carrier packets that
        set DF to 0, the L2 source instead calculates the UDP checksum and
        also includes a trailing 2-octet IPv4 fragmentation checksum as
        specified in <xref target= "fletcher"/>. The L2 source calculates
        the checksums simultaneously in a single pass over the packet,
        then writes the UDP result in the UDP header and the IPv4
        fragmentation result as the final 2 octets of the packet while
        incrementing the IPv4 length by 2. For IPv4-only carrier packet
        (re-)encapsulation with DF set to 0, the source instead includes a
        trailing 4-octet CRC-32 calculated as specified for the Alternate
        Payload Checksum (APC) in <xref target="I-D.ietf-tsvwg-udp-options"/>
        while incrementing the IPv4 length by 4. (In both cases, the trailing
        checksum lengths will not cause the carrier packet to exceed 65535
        octets since each OAL fragment reserves space for up to 256 L2
        encapsulation octets.)</t>

        <t>The L2 source then applies source fragmentation if necessary to
        produce carrier packet fragments no larger than the current Carrier
        Fragment Size (CFS). For IPv6, the L2 source should prepare carrier
        packet fragments no larger than 1280 octets (i.e., the IPv6 minimum
        MTU) until it can determine whether a larger CFS is possible, e.g.,
        through dynamic path probing to the L2 destination. For IPv4, until
        a true CFS is confirmed (e.g., through probing) the L2 source must
        set DF to 0 and include a trailing fragmentation checksum as discussed
        above. In that case, the L2 source can optionally send IPv4 carrier
        packet fragments that exceed the currently known CFS if there is
        reason to believe the network will deliver them to the L2 destination;
        these IPv4 carrier packet fragments may be (further) fragmented by
        an intermediate system in the L2 network path.</t>

        <t>The L2 source then sends the resulting carrier packet fragments
        over one or more underlay interfaces. Underlay interfaces often
        connect directly to physical media on the local platform (e.g.,
        an aircraft with a radio frequency link, a laptop computer with
        WiFi, etc.), but in some configurations the physical media may be
        hosted on a separate Local Area Network (LAN) node. In that case,
        the OMNI interface can establish a Layer-2 VLAN or a point-to-point
        tunnel (at a layer below the underlay interface) to the node hosting
        the physical media. The OMNI interface may also apply encapsulation
        at the underlay interface layer (e.g., as for a tunnel virtual interface)
        such that carrier packets would appear "double-encapsulated" on the LAN;
        the node hosting the physical media in turn removes the LAN encapsulation
        prior to transmission or inserts it following reception. Finally, the
        underlay interface must monitor the node hosting the physical media
        (e.g., through periodic keepalives) so that it can convey up-to-date
        Interface Attribute information to the OMNI interface.</t>

      <section anchor="alt-oal-l2" title="OMNI Extension Headers and Fragmentation">
        <t>Ordinary IP fragments may be dropped along the paths to some OAL
        or L2 destinations by a NAT, firewall or other middlebox. Middleboxes
        may also unconditionally drop IP packets that contain IPv6 extension
        headers of any kind. OMNI therefore provides an alternate encapsulation
        method that encodes IPv6 extension headers (including an (extended)
        fragment header) following the innermost OAL/L2 header instead of
        before according to <xref target="omni-ext"/>). This format is shown
        in <xref target="omni-frag"/>:</t>
        <t><figure anchor="omni-frag" title="OMNI Extension Header Encapsulation">
        <artwork><![CDATA[   +----------------------------+
   |     L2 Ethernet Header     |
   +----------------------------+
   |       L2 IP Header         |
   +----------------------------+
   |  L2 UDP Header (port 8060) |
   +----------------------------+
   ~  L2 IPv6 Extension Headers ~
   +----------------------------+
   |   OAL IPv6 Encapsulation   |
   +----------------------------+
   ~ OAL IPv6 Extension Headers ~
   +----------------------------+
   |                            |
   ~                            ~
   ~     Original IP Packet     ~
   ~                            ~
   |                            |
   +----------------------------+]]></artwork></figure></t>

        <t>The OMNI interface first encapsulates each original IP packet in
        an OAL IPv6 encapsulation header plus any extensions to form an OAL
        packet. When the OAL packet requires OAL and/or L2 fragmentation,
        the OMNI interface then performs the following operations:</t>

        <t><list style="symbols">
          <t>Perform OAL IPv6 encapsulation of the original packet with any
          necessary OAL IPv6 extension headers, then perform normal extension
          header processing including fragmentation per <xref target="RFC8200"/>.
          Each resulting OAL fragment will include an IPv6 Extended Fragment
          Header with the correct fragmentation parameters.</t>

          <t>Encapsulate each OAL packet/fragment in any L2 IP or Ethernet headers.
          If the innermost L2 header is IPv4 or Ethernet, convert it to an IPv6
          header while converting the IPv4/EUI source and destination addresses to
          IPv6 compatible addresses as discussed in <xref target="ipv6-compat"/>.</t>

          <t>Encapsulate the OAL packet/fragment following this L2 IPv6 header
          with any necessary L2 IPv6 extension headers, then perform normal
          extension header processing including fragmentation per <xref
          target="RFC8200"/>. For ordinary packets, each resulting L2 fragment
          will include an IPv6 (Extended) Fragment Header with the correct
          fragmentation parameters. (For jumbo-in-jumbo encapsulation, no
          L2 fragment header is included and the L2 Identification (if
          present) appears in the L2 Advanced Jumbo option.)</t>

          <t>For each L2 fragment, insert a UDP header between the L2 IPv6 header
          and extension headers, then change the Next Header field of the first
          L2 IPv6 extension header as specified in <xref target="omni-frag"/>.</t>

          <t>If the original L2 header was IPv4 or Ethernet, re-convert the
          IPv6 header back to IPv4/Ethernet.</t>

          <t>Change the L2 IP header {Protocol, Next Header} to '17' (UDP),
          set the remaining UDP/IP header fields to the correct values for
          each L2 fragment, then transmit each fragment to the L2 destination.</t>
        </list></t>

        <t>If the OAL IPv6 header (plus extensions) is also subject to
        compression the OAL source next applies OAL header compression
        so that the compressed header immediately follows the L2 extension
        headers. The L2 source then sets the UDP port number to either
        8060 (the port number reserved for AERO/OMNI) or the cached number
        for this L2 destination and finally calculates and sets the UDP
        checksum as specified in <xref target="RFC0768"/>.</t>

        <t>The L2 source then sends the carrier packet fragments to the
        L2 destination. If the L2 IPv6 extension headers change en route
        to the next OAL hop, each L2 forwarding node that modifies the
        extension headers must re-calculate and re-set the UDP checksum.
        (Note that the L2 source can instead set the L2 UDP checksum to
        0, but some L2 paths may drop such packets - see <xref target=
        "oal42"/> for further details.)</t>

        <t>For L2 (re-)encapsulations that do not include a UDP header (e.g.,
        IP-only), these fragments will include the IPv6 extension headers
        immediately after the L2 IP header. The L2 IP header must then set
        its IP {Protocol, Next Header} to TBD1.</t>

        <t>For L2 (re-)encapsulations that do not include UDP/IP headers
        (e.g., Ethernet-only), these fragments will include the L2 IPv6
        extension headers immediately after the true L2 header. The L2
        header must then set its L2 type to TBD2.</t>

        <t>For L2 (re-)encapsulations over secured underlay interfaces, the
        native L2 security encapsulations (e.g., IPsec) are used instead of the
        OMNI protocol L2 encapsulations depicted in <xref target="omni-frag"/>.
        This presents a limiting factor for L2 fragmentation and reassembly;
        therefore, sources should limit the size of the OAL packets/fragments
        they send over the secured spanning tree to 1280 octets. (Note that
        OMNI protocol L2 encapsulations could be used above the L2 security
        services, but this could result in excessive encapsulation in some
        instances.)</t>

        <t>Note: under this format, both OAL fragments and carrier packet
        fragments will appear as ordinary whole packets to network middleboxes
        that inspect headers. This allows network middleboxes to make consistent
        forwarding decisions on each fragment of the same original OAL packet
        and without first attempting virtual fragment reassembly since each
        fragment appears as a whole packet.</t>
      </section>

      <section anchor="oal-l2-probe" title="Carrier Fragment Size (CFS) Determination">
        <t>For paths that cannot rely on IPv4 network fragmentation to deliver
        carrier packets that exceed the path MTU, the L2 source should actively
        probe the path to determine the largest possible Carrier Fragment Size
        (CFS) for the L2 destination under current path conditions. The L2 source
        conducts probing in the spirit of "Packetization Layer Path MTU Discovery
        for Datagram Transports" <xref target="RFC8899"/> using a probe packet
        such as an NS message that includes Nonce and Timestamp options
        <xref target="RFC3971"/> plus a discard trailing packet attachment as
        specified in <xref target="packing"/>. The L2 source then encapsulates
        the message in L2 headers as a whole carrier packet and sends the message
        over the unsecured underlay interface (for IPv4, the L2 source also sets
        the probe packet DF flag to 1.)</t>

        <t>Prior to any probing, the L2 source assumes a nominal CFS of 1280
        octets (the IPv6 minimum MTU) for both IPv6 and IPv4. Since this size
        is greater than the IPv4 minimum MTU, the L2 source must set the DF bit
        to 0 in each carrier packet to increase the likelihood that it will
        reach the L2 destination. When the L2 source sets DF to 0, it must
        include an IPv4 fragmentation checksum as discussed above.</t>

        <t>When the L2 source engages probing, it will receive NA responses
        from the L2 destination to confirm delivery of its OAL and L2
        encapsulated padded NS messages. When the L2 source receives an
        NA with a matching Nonce, it can then advance CFS to the size of
        the NS probe. The L2 source must then continuously probe to confirm
        the current CFS or advance to even larger CFS values using the probing
        strategies specified in <xref target="RFC8899"/>.</t>

        <t>After the L2 source confirms a CFS through probing, it can send
        carrier packet fragments up to CFS octets in length and with DF set
        to 1 for IPv4. If the path changes, the L2 source may receive a PTB
        message from a router on the path and should then reduce and/or
        re-probe the CFS accordingly.</t>
      </section>
      </section>

      <section anchor="oal37" title="Reassembly and Decapsulation">
        <t>All OAL intermediate systems and destinations MUST configure an L2
        EMTU_R of 65535 octets on all unsecured underlay interfaces to enable
        successful reassembly of fragmented carrier packets no larger than that
        size (conversely, secured underlay interfaces use an EMTU_R specific to
        the L2 security service such as IPsec). OAL nodes are permitted to accept
        still larger unfragmented parcels/AJs as a best-effort service. OAL
        nodes must further recognize and honor the extended Identification
        specified in <xref target="I-D.templin-6man-ipid-ext"/>.</t>

        <t>When an OAL node reassembles an IPv4 or IPv6 carrier packet with
        an extended Identification, it accepts the reassembled packet following
        UDP checksum verification if necessary. When an OAL node reassembles an
        IPv4 carrier packet with DF set to 0, it must verify both the UDP
        checksum (if present) and the trailing IPv4 fragmentation checksum.
        The OAL node then accepts the reassembled packet only if the included
        checksums are correct, then trims the trailing fragmentation
        checksum (if present) by decrementing the IPv4 length before processing
        the packet further. When an OAL node detects a checksum error or failed
        reassembly for either IPv4 or IPv6 carrier packets, and the IP first
        fragment includes enough of the OAL packet header, the OAL node returns
        a uNA message with an OMNI Fragmentation Report (FRAGREP) option to the
        OAL source as specified in <xref target="oal3.6"/>. The FRAGREP provides
        immediate feedback allowing the OAL source to very quickly retransmit
        the corrupted OAL fragment(s).</t>

        <t>If the carrier packet encodes OMNI L2 extension headers per
        <xref target="omni-ext"/>, the OAL node instead removes the UDP header
        if necessary and submits the packet for IPv6 extension header processing
        per <xref target="RFC8200"/> (while converting IPv4/Ethernet headers to
        IPv6 and converting IPv4/EUI addresses to IPv6 compatible addresses if
        necessary as specified above). The OAL node first sets the IPv6 Next
        Header field to the 8 bit protocol value for the first extension. When
        an (Extended) Fragment Header is included, reassembly then restores the
        (fragmented) L2 packet included by the previous hop.</t>
        
        <t>When an OMNI interface processes a (reassembled) carrier packet
        from an underlay interface, it copies the ECN value from the L2
        encapsulation headers into the OAL header if the carrier packet
        contains an OAL first-fragment. The OMNI interface next discards
        the L2 encapsulation headers and examines the OAL header of the
        enclosed OAL fragment according to the value in the Type field
        as discussed in <xref target="oal42"/>. If the OAL fragment is
        addressed to a different node, the OMNI interface (acting as an
        OAL intermediate system) performs L2 encapsulation and fragmentation
        if necessary then forwards while decrementing the OAL Hop Limit as
        discussed in <xref target="oal42"/>. If the OAL fragment is
        addressed to itself, the OMNI interface (acting as an OAL
        destination) accepts or drops the fragment based on the
        (Source, Destination, Identification)-tuple.</t>

        <t>The OAL destination next drops all ordinal OAL non-first fragments
        that would overlap or leave "holes" with respect to other ordinal
        fragments already received. The OAL destination updates a checklist
        of accepted ordinal fragments of the same OAL packet but admits
        all accepted fragments into the reassembly cache.</t>

        <t>During reassembly at the OAL destination, the reassembled OAL
        packet may exceed 65535 by a small amount equal to the size of the
        OAL encapsulation extension headers. The OAL destination does not
        write this (too-large) value into the OAL header Payload Length
        field, but rather remembers the value during reassembly. When
        reassembly is complete, the OAL destination finally removes the
        OAL headers and delivers the original IP packet/parcel to the
        network layer. The original IP packet/parcel may therefore be
        as large as 65535 octets, or larger still for large parcels/AJs
        delivered through jumbo-in-jumbo encapsulation without
        invoking fragmentation.</t>

        <t>When an OAL path traverses an IPv6 network with routers that perform
        adaptation layer forwarding based on full IPv6 headers with OAL addresses,
        the OAL intermediate system at the head of the IPv6 path forwards the OAL
        packet/fragment the same as an ordinary IPv6 packet without decapsulating
        and delivering to the network layer. Once within the IPv6 network, these
        OAL packets/fragments may traverse arbitrarily-many IPv6 hops before
        arriving at an OAL intermediate system which may again encapsulate the
        OAL packets/fragments as carrier packets for transmission over underlay
        interfaces.</t>
        
        <t>Note: carrier packets often traverse paths with underlying links that
        use integrity checks such as CRC-32 which provide adequate hop-by-hop
        integrity assurance for payloads up to ~9K octets <xref target="CRC"/>.
        However, other paths may traverse links (such as fragmenting tunnels
        over IPv4 - see: <xref target="RFC4963"/>) that do not include adequate
        checks. The end-to-end integrity checks in IP parcels and AJs therefore
        allow the final destination to detect any link errors that may have
        accumulated along the path even if the links themselves do not provide
        adequate error checking.</t>
      </section>

      <section anchor="omni-ext" title="OMNI Extension Headers">
        <t>The IPv6 specification <xref target="RFC8200"/> defines extension
        headers that follow the base IPv6 header, while Upper Layer Protocols
        (ULPs) are specified in other documents. Each extension header present
        is identified by a "Next Header" octet in the previous (extension)
        header and encodes a "Next Header" field in the first octet that
        identifies the next extension header or ULP instance. The OMNI
        specification supports encoding of IPv6 extension header chains
        immediately following the OMNI L2 UDP, IP or Ethernet header even
        if the L2 IP protocol version is IPv4. In all cases, the length
        of the IPv6 extension header chain is limited by <xref target=
        "I-D.ietf-6man-eh-limits"/>.</t>

        <t>The OAL source prepares an OMNI extension header chain by setting
        the first 4 bits of the first IPv6 extension header in the chain to a
        Type value for the extension header itself immediately following the
        OMNI L2 protocol header. The source then sets the next 4 bits to a Next
        value that identifies either a terminating ULP or the next extension
        header in the chain. The source then sets the first 8 bits of each
        subsequent IPv6 extension header in the chain to the standard Next
        Header encoding as shown in <xref target="omni-exthdr"/>:</t>
        <t><figure anchor="omni-exthdr" title="OMNI Extension Header Chains">
            <artwork><![CDATA[   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   ~               OMNI L2 UDP, IP or Ethernet Header              ~
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |  Type |  Next |           Extension Header #1                 ~
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |  Next Header  |           Extension Header #2                 ~
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |  Next Header  |           Extension Header #3                 ~
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
          ...                         ...                          ~
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |  Next Header  |           Extension Header #N                 ~
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   ~  OMNI Full/Compressed, IPv6/IPv4, TCP/UDP, ICMPv6, ESP, etc.  ~
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+]]></artwork></figure></t>

        <t>The following Type/Next values are currently defined:<list style="empty">
          <t> 0 (OMNI-RES) - Reserved for experimentation.</t>

          <t> 1 (OMNI-OFH) - OMNI Full Header, per <xref target="oal98"/>.</t>

          <t> 2 (OMNI-OCH) - OMNI Compressed Header, per <xref target="oal98"/>.</t>

          <t> 3 (OMNI-HBH) - Hop-by-Hop Options per Section 4.3 of <xref target="RFC8200"/>.</t>

          <t> 4 (OMNI-IP4) - IPv4 header per <xref target="RFC0791"/>.</t>

          <t> 5  (OMNI-RH) - Routing Header per Section 4.4 of <xref target="RFC8200"/>.</t>

          <t> 6 (OMNI-IP6) - IPv6 header per <xref target="RFC8200"/>.</t>

          <t> 7  (OMNI-FH) - Fragment Header per Section 4.5 of <xref target="RFC8200"/>.</t>

          <t> 8  (OMNI-DO) - Destination Options per Section 4.6 of <xref target="RFC8200"/>.</t>

          <t> 9  (OMNI-AH) - Authentication Header per <xref target="RFC4302"/>.</t>

          <t>10 (OMNI-ESP) - Encapsulating Security Payload per <xref target="RFC4303"/>.</t>

          <t>11 (OMNI-NNH) - No Next Header per Section 4.7 of <xref target="RFC8200"/>.</t>

          <t>12 (OMNI-TCP) - TCP Header per <xref target="RFC9293"/>.</t>

          <t>13 (OMNI-UDP) - UDP Header per <xref target="RFC0768"/>.</t>

          <t>14 (OMNI-ICMP) - ICMPv6 Header per <xref target="RFC4443"/>.</t>

          <t>15 (OMNI-ULP) - Upper Layer Protocol shim (see below).</t>
        </list></t>

        <t>Entries OMNI-OFH through OMNI-AH in the above list follow the
        convention that the OMNI Type/Version appears in the first 4 bits
        of the extension header (or IP header) itself. Conversely, entries
        OMNI-ESP through OMNI-ICMP represent commonly-used ULPs which do
        not encode a Type/Version in the first 4 bits.</t>
      
        <t>Entries OMNI-HBH, OMNI-RH, OMNI-FH, OMNI-DO and OMNI-AH represent
        true IPv6 extension headers encoded for OMNI, which may be chained.
        Source and destination processing of OMNI extension headers follows
        exactly per their definitions in the normative references, with the
        exception of the special (Type, Next) coding in the first 8 bits of
        the first extension header.</t>

        <t>When a ULP not found in the above table immediately follows
        the OMNI L2 UDP, IP or Ethernet header, the source includes a 2-octet
        "Type 1 ULP Shim" before the ULP where both the first 4 bit (Type) and
        next 4 bit (Next) fields encode the special value 15 (OMNI-ULP). The
        source then includes a Next Header field that encodes the IP protocol
        number of the ULP. The source then includes the ULP data immediately
        after the shim as shown in <xref target="omni-ulpshim1"/>.</t>

        <t><figure anchor="omni-ulpshim1"
            title="OMNI Upper Layer Protocol (ULP) Shim (Type 1)">
            <artwork><![CDATA[   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |Type=15|Next=15|  Next Header  |   Upper Layer Protocol        ~
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure></t>

        <t>When a ULP "OMNI-(N)" found in the above table immediately follows
        the OMNI L2 UDP, IP or Ethernet header, the source includes a 1-octet
        "Type 2 ULP Shim" before the ULP where the first 4 bits encode the
        special Type value 15 (OMNI-ULP) and the next 4 bits encode the Next
        ULP type "N" taken from the table above. The source then includes the
        ULP data immediately after the shim as shown in <xref target=
        "omni-ulpshim2"/>.</t>

        <t><figure anchor="omni-ulpshim2"
            title="OMNI Upper Layer Protocol (ULP) Shim (Type 2)">
            <artwork><![CDATA[   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |Type=15| Next=N|          Upper Layer Protocol                 ~
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure></t>

        <t>When a ULP not found in the above table follows a first OMNI
        extension header, the source sets the extension header Next field
        to OMNI-ULP (15) and includes a 1-octet "Type 3 ULP Shim" that
        encodes the IP protocol number for the Next Header of the ULP
        data that follows as shown in <xref target="omni-ulpshim3"/>.</t>

        <t><figure anchor="omni-ulpshim3"
            title="OMNI Upper Layer Protocol (ULP) Shim (Type 3)">
            <artwork><![CDATA[   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |  Next Header  |           Upper Layer Protocol                ~
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+]]></artwork></figure></t>

        <t>When a ULP "OMNI-(N)" found in the above table follows a first
        OMNI extension header, the source sets the extension header Next
        field to the ULP Type "N" and does not include a shim. The ULP
        then begins immediately after the first OMNI extension header.</t>

        <t>When a ULP of any kind follows a non-first OMNI extension
        header, the source sets the extension header Next Header field to
        the IP protocol number for the ULP and does not include a shim. The
        ULP then begins immediately after the non-first OMNI extension header.</t>

        <t>Note: The L2 UDP header (when present) is logically considered as
        the first L2 extension header in the chain. If an Advanced Jumbo
        extension header is also present, its Jumbo Payload length includes
        the length of the L2 UDP header.</t>

        <t>Note: After a node parses the extension header chain, it changes
        the "Type/Next" field in the first extension header back to the
        correct "Next Header" value before processing the first extension
        header.</t>
      </section>

      <section anchor="oal98" title="OMNI Full and Compressed Headers (OFH/OCH)">
        <t>OAL sources that send carrier packets with OMNI Full Headers (OFH)
        include a full IPv6 header with Compressed Routing Header <xref
        target="I-D.ietf-6man-comp-rtg-hdr"/> and IPv6 Extended Fragment
        Header extensions for segment-by-segment forwarding based on an
        AERO Forwarding Information Base (AFIB) in each OAL intermediate
        system. OAL sources, intermediate systems and destinations can also
        establish header compression state through IPv6 ND NS/NA message
        exchanges. After an initial NS/NA exchange, OAL nodes can apply
        OMNI Header Compression to significantly reduce OAL encapsulation
        overhead.</t>

        <t>Each OAL node establishes AFIB soft state entries known as AERO
        Forwarding Vectors (AFVs) which support both OAL packet/fragment
        forwarding and OAL header compression/decompression. For FHS OAL
        sources, each AFV is referenced by a single AERO Forwarding Vector
        Index (AFVI) that provides compression/decompression and forwarding
        context for the next hop. For LHS OAL destinations, the AFV is
        referenced by a single AFVI that provides context for the previous
        hop. For OAL intermediate systems, the AFV is referenced by two
        AFVIs - one for the previous hop and one for the next hop.</t>

        <t>When an OAL node sends carrier packets that contain OAL
        packets/fragments to a next hop, it can include an OFH with
        Compressed Routing Header containing AFVI forwarding information.
        In that case, the first four bits following the L2 headers must
        encode the Type OMNI-OFH to signify that an uncompressed OFH (plus
        extensions) is present. The Type OMNI-OFH differentiates OFHs from
        ordinary L3 IP headers which are identified by the (Version) value
        4 for IPv4 or 6 for IPv6.</t>

        <t>When an OAL intermediate system forwards an OAL packet with
        Type OMNI-OFH to an IPv6 router for the SRT, it discards the L2
        encapsulation headers and resets the Type field value to 6. When
        an OAL intermediate system forwards an OAL packet received from
        an SRT IPv6 router, it resets the Type field value to OMNI-OFH
        and includes new L2 encapsulation headers.</t>

        <t>Whenever possible, the OAL source should omit significant
        portions of the OAL header (plus extensions) while applying OMNI
        header compression when sufficient AFV state is available. For
        OAL first fragments (including atomic fragments), the OAL node
        uses OMNI Compressed Header (OCH) Format (a) as shown
        in <xref target="compress-type1"/>:<figure anchor="compress-type1"
            title="OMNI Compressed Header (OCH) Format (a)">
            <artwork><![CDATA[   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Type  | Hop Limit | Parcel ID |  Next Header  |P|S|ECN|R|X|F|M|
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   ~                    Identification (8 octets)                  ~
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   ~                      AFVI (2 or 4 octets)                     ~
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
          </figure>The format begins with a 4-bit Type, a 6-bit Hop Limit,
        a 6-bit Parcel ID octet, and an 8-bit Next Header followed by P/S
        flags, a 2-bit Explicit Congestion Notification (ECN) field and
        finally followed by R/X/F/M flags. The format concludes with an
        8-octet Identification field followed by a 2- or 4-octet AFVI field.
        The OAL node sets Type to OMNI-OCH, sets Hop Limit to the minimum
        of the uncompressed OAL header Hop Limit and 63 and sets ECN the
        same as for an uncompressed OAL header. The OAL node next sets
        e(X)tended to 0/1 according to whether the AFVI field is 2/4
        octets in length and sets (F)irst to 1 as a first fragment. The
        OAL node finally sets (M)ore Fragments, Parcel ID, ((P)arcel,
        and More (S)egments the same as for an uncompressed fragment
        header.</t>

        <t>The OAL first fragment (beginning with the original IP header)
        is then included immediately following the OCH header, and the L2
        header length field is reduced by the difference in length between the
        compressed headers and full-length OFH headers. The OAL destination
        can therefore determine the Payload Length by examining the L2 header
        length field and/or the length field(s) in the original IP header.
        Note that first fragments are logically considered Ordinal fragment 0.</t>

        <t>For OAL non-first fragments (i.e., those with non-zero Fragment
        Offsets), the OAL uses OMNI Compressed Header (OCH) Format (b) as
        shown in <xref target="compress-type2"/>:<figure
            anchor="compress-type2"
            title="OMNI Compressed Header (OCH) Format (b)">
            <artwork><![CDATA[   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Type  | Hop Limit |  Ordinal  |    Fragment Offset      |X|F|M|
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   ~                    Identification (8 octets)                  ~
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   ~                      AFVI (2 or 4 octets)                     ~
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-~~~-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
          </figure>The format begins with a 4-bit Type, a 6-bit Hop Limit, a
        6-bit Ordinal, a 13-bit Fragment Offset, an X (AFVI extension) flag
        a F(irst) flag and a M(ore Fragments) flag. The format concludes with
        an 8-octet Identification field followed by a 2/4-octet AFVI field.
        The OAL node sets Type to OMNI-OCH, sets Hop Limit to the minimum
        of the uncompressed OAL header Hop Limit and 63, and sets (Ordinal,
        Fragment Offset, (M)ore Fragments, Identification) the same as for
        an uncompressed fragment header. The OAL node finally sets X to 0/1
        according to whether the AFVI field is 2/4-octets in length and sets
        F to 0 as a non-first fragment.</t>

        <t>The OAL non-first fragment body is then included immediately
        following the OCH header, and the L2 header length field is reduced
        by the difference in length between the compressed headers and
        full-length OFH plus extensions. The OAL destination will then
        be able to determine the Payload Length by examining the L2
        header length field. The OCH (b) format applies for non-first
        fragments only; therefore, the OAL source sets Ordinal to a
        monotonically increasing value beginning with 1 for the first
        non-first fragment, 2 for the second non-first fragment, 3 for
        the third non-first fragment, etc., up to at most 63 for the
        final fragment.</t>

        <t>When an OAL destination or intermediate system receives a carrier
        packet, it determines the length of the encapsulated OAL information
        by examining the length field of the innermost L2 header, verifies
        that the innermost next header field indicates OMNI (see: <xref
        target="oal42"/>), then processes any included OMNI L2 extension
        headers as specified in <xref target="omni-ext"/>. The OAL destination
        then examines the Next Header field of the final L2 extension header.
        If the Next Header field contains the value TBD1, and the 4-bit Type
        that follows encodes a value OMNI-OFH or OMNI-OCH the OAL node processes
        the remainder of the OAL header as a full (OFH) or compressed (OCH)
        header as specified above.</t>

        <t>The OAL node then uses the AFVI to locate the cached AFV which
        determines the next hop. During forwarding, the OAL node changes
        the AFVI to the cached value for the AFV next hop. If the OAL node
        is the destination, it instead reconstructs the OFH then adds the
        resulting OAL fragment to the reassembly cache if the Identification
        is acceptable. (Note that for carrier packets that contain OAL first
        fragments with an OCH with both the F and M flags set to 0, the OAL
        node can instead locate forwarding state by examining the original
        IP packet/parcel header information that appears immediately after
        the OCH header.)</t>

        <t>For all OCH types, the source node sets all Reserved fields and
        bits to 0 on transmission and the destination node ignores the values
        on reception.</t>

        <t>Note: The OCH format does not include the Traffic Class and
        Flow Label information that appears in uncompressed OAL IPv6 headers.
        Therefore, when OAL header compression state is initialized the
        Traffic Class and Flow Label are considered fixed for as long as the
        flow uses OCH headers. If the flow requires frequent changes to
        Traffic Class and/or Flow Label information, it can include OFH
        headers as necessary to update header compression state.</t>
      </section>

      <section anchor="oal99" title="OAL and L2 Encapsulation Avoidance">
        <t>When the OAL source and OAL destination are on the same OMNI
        link segment as determined by neighbor discovery, the OMNI
        interface forwards packets directly to the specific underlay
        interface without applying OAL encapsulation. In that case, the
        OAL source treats the IPv6 header of the original packet
        the same as if it had applied an OAL encapsulation header. The
        Next Header field will therefore encode a value specific to the
        transport layer protocol (e.g., '6' for TCP, '17' for UDP, etc.)
        since the OAL does not insert an IPv6 encapsulation header. The
        OAL source then applies fragmentation, header compression
        and L2 encapsulation the same as described above even though a
        single IPv6 header (and not an additional OAL encapsulation
        header) is present.</t>

        <t>The OAL source can also apply these same encapsulation
        avoidance procedures for IPv4 by first translating the IPv4 header
        of the original packet into an IPv6 header and translating the
        IPv4 addresses into IPv4-compatible IPv6 addresses as discussed
        in <xref target="ipv6-compat"/>. These translated headers can
        then be manipulated the same as for IPv6 headers as described
        above, including fragmentation, header compression, etc.</t>

        <t>When an OAL node and its next OAL hop are known to be connected
        to the same underlay link, or when the node's underlay interface
        connects to a Mobile Ad-Hoc Network (MANET) where MANET-local
        IPv6 routing protocols are applied, the node does not include
        full UDP/IP headers as part of the carrier packet L2 encapsulation
        and instead uses link layer encapsulation using EtherType TBD2
        for Ethernet-compatible data links. The MANET-local IPv6 routing
        protocols will then direct the packets to the correct destination
        which may be one or more MANET routing hops away from the source.</t>

        <t>When the OAL node is unable to determine whether the next OAL
        hop is connected to the same underlay link, it should perform
        carrier packet L2 encapsulation for initial packets sent via the
        next hop over a specific underlay interface by including full
        UDP/IP headers and with the UDP port numbers set as discussed
        in <xref target="oal42"/>. The node can thereafter attempt to
        send an NS to the next OAL hop in carrier packet(s) that omit the
        UDP header and set the IP protocol number to TBD1. If the OAL node
        receives an NA reply, it can omit the UDP header in subsequent
        packets. The node can further attempt to send an NS in carrier
        packet(s) that omit both the UDP and IP headers and set EtherType
        to TBD2. If the source receives an NA reply, it can begin omitting
        both the UDP and IP headers in subsequent packets.</t>

        <t>Note: in the above, "next OAL hop" refers to the first OAL node
        encountered on the optimized path to the destination over a specific
        underlay interface as determined through route optimization (e.g.,
        see: <xref target="I-D.templin-intarea-aero2"/>). The next OAL hop
        could be a Proxy/Server, Gateway or the OAL destination itself.</t>
      </section>

      <section anchor="oal7.9" title="OAL Identification Window Maintenance">
        <t>The OAL encapsulates each original IP packet/parcel as an OAL
        packet then performs fragmentation to produce one or more carrier
        packets with the same 8-octet Identification value. In environments
        where spoofing is not considered a threat, OMNI interfaces send OAL
        packets with Identifications beginning with an unpredictable Initial
        Send Sequence (ISS) value <xref target="RFC7739"/> monotonically
        incremented (modulo 2**64) for each successive OAL packet sent to
        either a specific neighbor or to any neighbor. (The OMNI interface may
        later change to a new unpredictable ISS value as long as the
        Identifications are assured unique within a timeframe that would
        prevent the fragments of a first OAL packet from becoming associated
        with the reassembly of a second OAL packet.) In other environments,
        OMNI interfaces should maintain explicit per-interface-pair send and
        receive windows to detect and exclude spurious carrier packets that
        might clutter the reassembly cache as discussed below.</t>

        <t>OMNI interface neighbors use a window synchronization service
        similar to TCP <xref target="RFC9293"/> to maintain unpredictable ISS
        values incremented (modulo 2**64) for each successive OAL packet and
        re-negotiate windows often enough to maintain an unpredictable profile.
        OMNI interface neighbors exchange IPv6 ND messages that include OMNI
        Window Synchronization sub-options (see: <xref target="sub15.1"/>)
        with TCP-like information fields and flags to manage streams of OAL
        packets instead of streams of octets. As a link layer service, the
        OAL provides low-persistence best-effort retransmission with no
        mitigations for duplication, reordering or deterministic delivery.
        Since the service model is best-effort and only control message
        sequence numbers are acknowledged, OAL nodes can select unpredictable
        new initial sequence numbers outside of the current window without
        delaying for the Maximum Segment Lifetime (MSL).</t>

        <t>OMNI interface neighbors maintain current and previous
        per-interface-pair window state in IPv6 ND NCEs and/or AFVs to support
        dynamic rollover to a new window while still sending OAL packets and
        accepting carrier packets from the previous windows. OMNI interface
        neighbors synchronize windows through asymmetric and/or symmetric IPv6
        ND message exchanges. When a node receives an IPv6 ND message with new
        interface pair-based window information, it resets the previous window
        state based on the current window then resets the current window based
        on new and/or pending information.</t>

        <t>The IPv6 ND message OMNI option header extension sub-option
        includes TCP-like information fields including Sequence Number,
        Acknowledgement Number, Window and flags (see: <xref target=
        "interface"/>). OMNI interface neighbors maintain the following
        TCP-like state variables on a per-interface-pair basis (i.e.,
        through a combination of NCE and AFV state):<figure>
            <artwork><![CDATA[    Send Sequence Variables (current, previous and pending)

      SND.NXT - send next
      SND.WND - send window
      ISS     - initial send sequence number

    Receive Sequence Variables (current and previous)

      RCV.NXT - receive next
      RCV.WND - receive window
      IRS     - initial receive sequence number
]]></artwork>
          </figure></t>

        <t>OMNI interface neighbors "OAL A" and "OAL B" exchange IPv6 ND
        messages per <xref target="RFC4861"/> with OMNI options that include
        TCP-like information fields as well as interface pair parameters such
        as Interface Attributes or AERO Forwarding Parameters. When OAL A
        synchronizes with OAL B, it maintains both a current and previous
        SND.WND beginning with a new unpredictable ISS and monotonically
        increments SND.NXT for each successive OAL packet transmission. OAL A
        initiates synchronization by including the new ISS in the Sequence
        Number of an authentic IPv6 ND message with the SYN flag set and with
        Window set to M (up to 2**24) as a tentative receive window size while
        creating a NCE in the INCOMPLETE state if necessary. OAL A caches the
        new ISS as pending, uses the new ISS as the Identification for OAL
        encapsulation, then sends the resulting OAL packet to OAL B and waits
        up to RetransTimer milliseconds to receive an IPv6 ND message response
        with the ACK flag set (retransmitting up to MAX_UNICAST_SOLICIT times
        if necessary).</t>

        <t>When OAL B receives the SYN, it creates a NCE in the STALE state
        and also an AFV if necessary, resets its RCV variables, caches the
        tentative (send) window size M, and selects a (receive) window size N
        (up to 2**24) to indicate the number of OAL packets it is willing to
        accept under the current RCV.WND. (The RCV.WND should be large enough
        to minimize control message overhead yet small enough to provide an
        effective filter for spurious carrier packets.) OAL B then prepares an
        IPv6 ND message with the ACK flag set, with the Acknowledgement Number
        set to OAL A's next sequence number, and with Window set to N. Since
        OAL B does not assert an ISS of its own, it uses the IRS it has cached
        for OAL A as the Identification for OAL encapsulation then sends the
        ACK to OAL A.</t>

        <t>When OAL A receives the ACK, it notes that the Identification in
        the OAL header matches its pending ISS. OAL A then sets the NCE state
        to REACHABLE and resets its SND variables based on the Window size and
        Acknowledgement Number (which must include the sequence number
        following the pending ISS). OAL A can then begin sending OAL packets
        to OAL B with Identification values within the (new) current SND.WND
        for this interface pair for up to ReachableTime milliseconds or until
        the NCE is updated by a new IPv6 ND message exchange. This implies
        that OAL A must send a new SYN before sending more than N OAL packets
        within the current SND.WND, i.e., even if ReachableTime is not nearing
        expiration. After OAL B returns the ACK, it accepts carrier packets
        received from OAL A via this interface pair within either the current
        or previous RCV.WND as well as any new authentic NS/RS SYN messages
        received from OAL A even if outside the windows.</t>

        <t>OMNI interface neighbors can employ asymmetric window
        synchronization as described above using two independent (SYN -&gt;
        ACK) exchanges (i.e., a four-message exchange), or they can employ
        symmetric window synchronization using a modified version of the TCP
        three-way handshake as follows:<list style="symbols">
            <t>OAL A prepares a SYN with an unpredictable ISS not within the
            current SND.WND and with Window set to M as a tentative receive
            window size. OAL A caches the new ISS and Window size as pending
            information, uses the pending ISS as the Identification for OAL
            encapsulation, then sends the resulting OAL packet to OAL B and
            waits up to RetransTimer milliseconds to receive an ACK response
            (retransmitting up to MAX_UNICAST_SOLICIT times if necessary).</t>

            <t>OAL B receives the SYN, then resets its RCV variables based on
            the Sequence Number while caching OAL A's tentative receive Window
            size M and a new unpredictable ISS outside of its current window
            as pending information. OAL B then prepares a response with
            Sequence Number set to the pending ISS and Acknowledgement Number
            set to OAL A's next sequence number. OAL B then sets both the SYN
            and ACK flags, sets Window to N and sets the OPT flag according to
            whether an explicit concluding ACK is optional or mandatory. OAL B
            then uses the pending ISS as the Identification for OAL
            encapsulation, sends the resulting OAL packet to OAL A and waits
            up to RetransTimer milliseconds to receive an acknowledgement
            (retransmitting up to MAX_UNICAST_SOLICIT times if necessary).</t>

            <t>OAL A receives the SYN/ACK, then resets its SND variables based
            on the Acknowledgement Number (which must include the sequence
            number following the pending ISS) and OAL B's advertised Window N.
            OAL A then resets its RCV variables based on the Sequence Number
            and marks the NCE as REACHABLE. If the OPT flag is clear, OAL A
            next prepares an immediate unsolicited NA message with the ACK flag
            set, the Acknowledgement Number set to OAL B's next sequence
            number, with Window set a value that may be the same as or
            different than M, and with the OAL encapsulation Identification to
            SND.NXT, then sends the resulting OAL packet to OAL B. If the OPT
            flag is set and OAL A has OAL packets queued to send to OAL B, it
            can optionally begin sending their carrier packets under the (new)
            current SND.WND as implicit acknowledgements instead of returning
            an explicit ACK. In that case, the tentative Window size M becomes
            the current receive window size.</t>

            <t>OAL B receives the implicit/explicit acknowledgement(s) then
            resets its SND state based on the pending/advertised values and
            marks the NCE as REACHABLE. If OAL B receives an explicit
            acknowledgement, it uses the advertised Window size and abandons
            the tentative size. (Note that OAL B sets the OPT flag in the
            SYN/ACK to assert that it will interpret timely receipt of carrier
            packets within the (new) current window as an implicit
            acknowledgement. Potential benefits include reduced delays and
            control message overhead, but use case analysis is outside the
            scope of this specification.)</t>
          </list></t>

        <t>Following synchronization, OAL A and OAL B hold updated NCEs and
        AFVs, and can exchange OAL packets with Identifications set to SND.NXT
        for each interface pair while the state remains REACHABLE and there is
        available window capacity. Either neighbor may at any time send a new
        SYN to assert a new ISS. For example, if OAL A's current SND.WND for
        OAL B is nearing exhaustion and/or ReachableTime is nearing
        expiration, OAL A continues to send OAL packets under the current
        SND.WND while also sending a SYN with a new unpredictable ISS. When
        OAL B receives the SYN, it resets its RCV variables and may optionally
        return either an asymmetric ACK or a symmetric SYN/ACK to also assert
        a new ISS. While sending SYNs, both neighbors continue to send OAL
        packets with Identifications set to the current SND.NXT for each
        interface pair then reset the SND variables after an acknowledgement
        is received.</t>

        <t>While the optimal symmetric exchange is efficient, anomalous
        conditions such as receipt of old duplicate SYNs can cause confusion
        for the algorithm as discussed in Section 3.5 of <xref
        target="RFC9293"/>. For this reason, the OMNI Window Synchronization
        sub-option includes an RST flag which OAL nodes set in solicited NA
        responses to ACKs received with incorrect acknowledgement numbers.
        The RST procedures (and subsequent synchronization recovery) are
        conducted exactly as specified in <xref target="RFC9293"/>.</t>

        <t>OMNI interfaces that employ the window synchronization procedures
        described above observe the following requirements:<list
            style="symbols">
            <t>OMNI interfaces MUST select new unpredictable ISS values that
            are at least a full window outside of the current SND.WND.</t>

            <t>OMNI interfaces MUST set the initial SYN message Window field
            to a tentative value to be used only if no concluding NA ACK is
            sent.</t>

            <t>OMNI interfaces MUST send IPv6 ND messages used for window
            synchronization securely while using unpredictable initial
            Identification values until synchronization is complete.</t>
          </list></t>

        <t>Note: Although OMNI interfaces employ TCP-like window
        synchronization and support uNA ACK responses to SYNs, all
        other aspects of the IPv6 ND protocol (e.g., control message
        exchanges, NCE state management, timers, retransmission limits, etc.)
        are honored exactly per <xref target="RFC4861"/>. OMNI interfaces
        further manage per-interface-pair window synchronization parameters in
        one or more AFVs for each neighbor pair.</t>

        <t>Note: Recipients of OAL-encapsulated IPv6 ND messages index the NCE
        based on the message source address, which also determines the carrier
        packet Identification window. However, IPv6 ND messages may contain a
        message source address that does not match the OMNI encapsulation
        source address when the recipient acts as a proxy.</t>

        <t>Note: OMNI interface neighbors apply separate send and receive
        windows for all of their (multilink) underlay interface pairs that
        exchange carrier packets. Each interface pair represents a distinct
        underlay network path, and the set of paths traversed may be highly
        diverse when multiple interface pairs are used. OMNI intermediate
        systems therefore become aware of each distinct set of interface pair
        window synchronization parameters based on periodic IPv6 ND message
        updates to their respective AFVs.</t>
      </section>

      <section anchor="oal3.6" title="OAL Fragmentation Reports and Retransmissions">
        <t>The OAL source should maintain a short-term cache of the OAL
        fragments it sends to OAL destinations in case timely best-effort
        selective retransmission is requested. The OAL destination in turn
        maintains a checklist for (Source, Destination, Identification)-tuples
        of recently received OAL fragments and notes the ordinal numbers of
        OAL fragments already received (i.e., as ordinals #0, #1, #2, #3, etc.).
        The timeframe for maintaining the OAL source and destination caches
        determines the link persistence (see: <xref target="RFC3366"/>).</t>

        <t>If the OAL destination notices some fragments missing after most
        other fragments within the same link persistence timeframe have
        already arrived, it may issue an Automatic Repeat Request (ARQ) with
        Selective Repeat (SR) by sending a uNA message to the OAL source. The
        OAL destination creates a uNA message with an OMNI option with one or
        more Fragmentation Report (FRAGREP) sub-options that include
        (Identification, Bitmap)-tuples for fragments received and missing
        from this OAL source (see: <xref target="interface"/>). The OAL
        destination includes an authentication signature if necessary,
        performs OAL encapsulation (with the its own address as the OAL
        source and the source address of the message that prompted the
        uNA as the OAL destination) and sends the message to the OAL source.</t>

        <t>If an OAL intermediate system or OAL destination processes an
        OAL fragment for which corruption is detected, it may similarly
        issue an immediate ARQ/SR the same as described above. The FRAGREP
        provides an immediate (rather than time-bounded) indication to
        the OAL source that a retransmission is required.</t>

        <t>When the OAL source receives the uNA message, it authenticates
        the message then examines any enclosed FRAGREPs. For each (Source, 
        Destination, Identification)-tuple, the OAL source determines whether
        it still holds the corresponding OAL fragments in its cache and
        retransmits any for which the Bitmap indicates a loss event. For
        example, if the Bitmap indicates that ordinal fragments #3, #7,
        #10 and #13 from the OAL packet with Identification 0x0123456789abcdef
        are missing the OAL source only retransmits those fragments. When the
        OAL destination receives the retransmitted OAL fragments, it admits
        them into the reassembly cache and updates its checklist. If some
        fragments are still missing, the OAL destination may send a small
        number of additional uNA ARQ/SRs within the link persistence timeframe.</t>

        <t>The OAL therefore provides a link layer low-to-medium persistence
        ARQ/SR service consistent with <xref target="RFC3366"/> and Section
        8.1 of <xref target="RFC3819"/>. The service provides the benefit of
        timely best-effort link layer retransmissions which may reduce OAL
        fragment loss and avoid some unnecessary end-to-end delays. This
        best-effort network-based service therefore compliments transport
        and higher layer end-to-end protocols responsible for true reliability.</t>
      </section>

      <section anchor="oal3" title="OMNI Interface MTU Feedback Messaging">
        <t>When the OMNI interface forwards original IP packets/parcels from
        the network layer, it invokes the OAL and returns internally-generated
        Path MTU Discovery (PMTUD) ICMPv4 "Fragmentation Needed and Don't
        Fragment Set" <xref target="RFC1191"/> or ICMPv6 "Packet Too Big
        (PTB)" <xref target="RFC8201"/> messages as necessary. This document
        refers to both message types as "PTBs" and introduces a distinction
        between PTB "hard" and "soft" errors as discussed below.</t>

        <t>Ordinary PTB messages are hard errors that always indicate loss
        due to a real MTU restriction has occurred. However, the OMNI
        interface can also forward original IP packets/packets via OAL
        encapsulation and fragmentation while at the same time returning
        PTB soft error messages (subject to rate limiting) to the original
        source to suggest smaller sizes due to factors such as link
        performance characteristics, number of fragments needed,
        reassembly congestion, etc.</t>

        <t>This ensures that the path MTU is adaptive and reflects the
        current path used for a given data flow. The OMNI interface can
        therefore continuously forward original IP packets/parcels without
        loss while returning PTB soft error messages recommending a smaller
        size if necessary. Original sources that receive the soft errors in
        turn reduce the size of the original IP packets/parcels they send,
        i.e., the same as for hard errors but not necessarily due to a
        loss event. The original source can then resume sending larger
        packets/parcels without delay if the soft errors subside.</t>

        <t>OAL destinations and intermediate systems may experience
        reassembly cache congestion, and can return uNA messages to the
        OAL source that include OMNI encapsulated PTB messages with a
        PTB soft error Code to OAL sources that originate the fragments
        (subject to rate limiting). The OAL node creates a uNA message
        with an authentication signature and an OMNI option containing
        an ICMPv6 Error sub-option. The OAL node encodes a PTB message
        in the sub-option with MTU set to a reduced value and with the
        leading portion an OAL first fragment containing the header
        of an original IP packet/parcel for which the source must
        be notified (see: <xref target="interface"/>).</t>

        <t>The OAL node that sends the uNA encapsulates the leading portion
        of the OAL first fragment (beginning with the OAL header) in the PTB
        "packet in error" field, signs the message if an authentication
        signature is included, performs OAL encapsulation (with the its
        own address as the OAL source and the source address of the message
        that prompted the uNA as the OAL destination) and sends the message
        to the OAL source.</t>

        <t>When the OAL source receives a uNA message from an OAL intermediate
        system, it can reduce its OFS estimate and begin sending smaller OAL
        fragments and/or reduce its CFS estimate and begin sending smaller
        carrier packet fragments. When the OAL source receives a uNA message
        from the OAL destination, it sends a corresponding network layer PTB
        soft error to the original source to recommend a smaller size.</t>

        <t>The OAL source prepares the PTB soft error by first setting the
        Type field to 2 for IPv6 <xref target="RFC4443"/> or TBD6 for
        IPv4 (see: IANA considerations). The OAL source then sets the Code
        field to "PTB Soft Error (no loss)" if the OAL destination forwarded
        the original IP packet/parcel successfully or "PTB Soft Error (loss)"
        if it was dropped (see: IANA considerations). The OAL source next
        sets the PTB destination address to the original IP packet/parcel
        source, and sets the source address to one of its OMNI interface
        addresses that is reachable from the perspective of the original
        source.</t>

        <t>The OAL source then sets the MTU field to a value smaller than
        the original IP packet/parcel size but no smaller than 1280, writes
        as much of the original IP packet/parcel first fragment as possible
        into the "packet in error" field such that the entire PTB including
        the IP header is no larger than 1280 octets for IPv6 or 576 octets
        for IPv4. The OAL source then calculates and sets the ICMP
        Checksum and returns the PTB to the original source.</t>

        <t>An original sources that receives these PTB soft errors first
        verifies that the ICMP Checksum is correct and the packet-in-error
        contains the leading portion of one of its recent packet/parcel
        transmissions. The original source can then adaptively tune the
        size of the original IP packets/parcels it sends to produce the
        best possible throughput and latency, with the understanding that
        these parameters may fluctuate over time due to factors such as
        congestion, mobility, network path changes, etc. Original sources
        should therefore consider receipt or absence of soft errors as
        hints of when decreasing or increasing packet/parcel sizes may
        provide better performance.</t>

        <t>The OMNI interface supports continuous transmission and reception
        of packets/parcels of various sizes in the face of dynamically changing
        network conditions. Moreover, since PTB soft errors do not indicate a
        hard limit, original sources that receive soft errors can resume sending
        larger packets/parcels without waiting for the recommended 10 minutes
        specified for PTB hard errors <xref target="RFC1191"/><xref target=
        "RFC8201"/>. The OMNI interface therefore provides an adaptive
        service that accommodates MTU diversity especially well-suited
        for dynamic multilink networks.</t>

        <t>The OMNI interface may also return PTB messages with Parcel Report
        and/or Jumbo Report Codes in response to parcels and/or AJs delivered
        by the network layer and forwarded through jumbo-in-jumbo encapsulation.
        These Parcel/Jumbo Report messages are prepared the same as for PTB
        soft errors discussed above. IP parcels and AJs are discussed in
        <xref target="I-D.templin-6man-parcels2"/><xref target=
        "I-D.templin-intarea-parcels2"/>.</t>
      </section>

      <section anchor="packing" title="OAL Super-Packets">
        <t>The OAL source ordinarily includes a 40-octet IPv6 encapsulation
        header for each original IP packet/parcel during OAL encapsulation.
        The OAL source then performs fragmentation such that a copy of the
        40-octet IPv6 header plus a 16-octet IPv6 Extended Fragment Header
        is included in each OAL fragment (when a Routing Header is added,
        the OAL encapsulation headers become larger still). However, these
        encapsulations may represent excessive overhead in some environments.</t>

        <t>OAL header compression can dramatically reduce the amount of
        encapsulation overhead, however a complimentary technique known as
        "packing" (see: <xref target="I-D.ietf-intarea-tunnels"/>) supports
        encapsulation of multiple original IP packets/parcels and/or control
        messages within a single OAL "super-packet". (The super-packet
        normally includes a control message as the first message of the
        packet, with one or more original IP packets/parcels included as
        trailing attachments.)</t>

        <t>When the OAL source has multiple original IP packets/parcels to
        send to the same OAL destination with total length no larger than the
        OAL destination EMTU_R, it can concatenate them into a super-packet
        encapsulated in a single OAL header. Within the OAL super-packet, the
        IP header of the first original IP packet/parcel (iHa) followed by its
        data (iDa) is concatenated immediately following the OAL header, then
        the IP header of the next original packet/parcel (iHb) followed by its
        data (iDb) is concatenated immediately following the first, etc. The OAL
        super-packet format is transposed from <xref target=
        "I-D.ietf-intarea-tunnels"/> and shown in <xref target="super-packet"/>:</t>

        <figure anchor="super-packet" title="OAL Super-Packet Format">
          <artwork><![CDATA[                <------- Original IP packets ------->
                +-----+-----+
                | iHa | iDa |
                +-----+-----+
                      |
                      |     +-----+-----+
                      |     | iHb | iDb |
                      |     +-----+-----+
                      |           |
                      |           |     +-----+-----+
                      |           |     | iHc | iDc |
                      |           |     +-----+-----+
                      |           |           |
                      v           v           v
     +----------+-----+-----+-----+-----+-----+-----+
     |  OAL Hdr | iHa | iDa | iHb | iDb | iHc | iDc |
     +----------+-----+-----+-----+-----+-----+-----+
     <--- OAL "Super-Packet" with single OAL Hdr --->
]]></artwork>
        </figure>

        <t>When the OAL source prepares a super-packet, it applies OAL
        fragmentation then applies L2 encapsulation/fragmentation and
        sends the resulting carrier packets to the OAL destination. When
        the OAL destination receives the super-packet it first reassembles
        if necessary. The OAL destination then selectively extracts each
        original IP packet/parcel (e.g., by setting pointers into the
        super-packet buffer and maintaining a reference count, by copying
        each packet into a separate buffer, etc.) and forwards each one
        to the network layer. During extraction, the OAL determines the IP
        protocol version of each successive original IP packet/parcel 'j' by
        examining the four most-significant bits of iH(j), and determines the
        length of each one by examining the rest of iH(j) according to the IP
        protocol version.</t>

        <t>When an OAL source prepares a super-packet that includes an IPv6 ND
        message with an authentication signature as the first original IP
        packet/parcel (i.e., iHa/iDa), it calculates the authentication
        signature over the remainder of super-packet. Security and integrity
        for forwarding initial data messages in conjunction with IPv6 ND
        messages used to establish NCE state are therefore supported. (A
        second common use case entails a path MTU probe beginning with an
        unsigned IPv6 ND message followed by a suitably large NULL packet
        (e.g., an IP packet with padding octets added beyond the IP header
        and with {Protocol, Next Header} set to 59 ("No Next Header"), a
        UDP/IP packet with port number set to '9' ("discard") <xref
        target="RFC0863"/>, etc.)</t>

        <t>The OAL header of a super packet may also include an Advanced
        Jumbo option if the total length of all payload packets/parcels
        exceeds 65535 octets. In that case, the super-packet must be forwarded
        as an atomic fragment over OAL paths that support such large sizes.</t>
      </section>

      <section anchor="bubble" title="OAL Bubbles">
        <t>OAL sources may send NULL OAL packets known as "bubbles" for the
        purpose of establishing Network Address Translator (NAT) state on
        the path to the OAL destination. The OAL source prepares a bubble by
        crafting an OAL header with appropriate IPv6 source and destination
        ULAs, with the IPv6 Next Header field set to the value 59 ("No Next
        Header" - see <xref target="RFC8200"/>) and with 0 or more octets
        of NULL protocol data immediately following the IPv6 header.</t>

        <t>The OAL source includes a random Identification value then
        encapsulates the OAL packet in L2 headers destined to either the
        mapped address of the OAL destination's first-hop ingress NAT or the
        L2 address of the OAL destination itself. When the OAL source sends
        the resulting carrier packet, any egress NATs in the path toward the
        L2 destination will establish state based on the activity but the
        bubble will be harmlessly discarded by either an ingress NAT on the
        path to the OAL destination or by the OAL destination itself.</t>

        <t>The bubble concept for establishing NAT state originated in <xref
        target="RFC4380"/> and was later updated by <xref target="RFC6081"/>.
        OAL bubbles may be employed by mobility services such as AERO.</t>
      </section>

      <section anchor="hosts" title="OMNI Hosts">
        <t>OMNI Hosts are end systems that connect to the OMNI link over
        ENET underlay interfaces (i.e., either via an OMNI interface or
        as a sublayer of the ENET interface itself). Each ENET connects
        to the rest of the OMNI link via a Client that receives an MNP
        delegation. Clients delegate MNP addresses and/or sub-prefixes
        to ENET nodes (i.e., Hosts, other Clients, routers and non-OMNI
        hosts) using standard mechanisms such as DHCP <xref target=
        "RFC8415"/><xref target="RFC2131"/> and IPv6 Stateless Address
        AutoConfiguration (SLAAC) <xref target="RFC4862"/>. Clients
        forward original IP packets/parcels between their ENET Hosts
        and peers on external networks acting as routers and/or OAL
        intermediate systems.</t>

        <t>OMNI Hosts coordinate with Clients and/or other Hosts connected
        to the same ENET using OMNI L2 encapsulation of OMNI IPv6 ND messages.
        The L2 encapsulation headers and ND messages both use the MNP-based
        addresses assigned to ENET underlay interfaces as source and destination
        addresses (i.e., instead of ULAs). For IPv4 MNPs, the ND messages use
        IPv4-Compatible IPv6 addresses <xref target="RFC4291"/> in place of
        the IPv4 addresses.</t>

        <t>Hosts discover Clients by sending encapsulated RS messages using an
        OMNI link IP anycast address (or the unicast address of the Client) as
        the RS L2 encapsulation destination as specified in <xref
        target="aeropd"/>. The Client configures the IPv4 and/or IPv6 anycast
        addresses for the OMNI link on its ENET interface and advertises the
        address(es) into the ENET routing system. The Client then responds to
        the encapsulated RS messages by sending an encapsulated RA message
        that uses its ENET unicast address as the source. (To differentiate
        itself from an INET border Proxy/Server, the Client sets the RA
        message OMNI Interface Attributes sub-option LHS field to 0 for the
        Host's interface index. When the RS message includes an L2 anycast
        destination address, the Client also includes an Interface Attributes
        sub-option for interface index 0 to inform the Host of its L2 unicast
        address - see: <xref target="aeropd"/> for full details on the RS and
        RA message contents.)</t>

        <t>Hosts coordinate with peer Hosts on the same ENET by sending
        encapsulated NS messages to receive an NA reply. (Hosts determine
        whether a peer is on the same ENET by matching the peer's IP address
        with the MNP (sub)-prefix for the ENET advertised in the Client's RA
        message <xref target="RFC8028"/>.) Each ENET peer then creates a NCE
        and synchronizes Identification windows the same as for OMNI link
        neighbors, and the Host can then engage in OMNI link transactions
        with the Client and/or other ENET Hosts. The Host therefore regards
        the Client as if it were an ANET Proxy/Server, and the Client provides
        the same services that a Proxy/Server would provide. By coordinating
        with other Hosts, the peers can exchange large IP packets/parcels
        over the ENET using encapsulation and fragmentation if necessary.</t>

        <t>When a Host prepares an original IP packet/parcel, it uses the IP
        address of its OMNI interface (which is the same as the IP address of
        the underlying native ENET interface) as the source and the IP address
        of the (remote) peer as the destination. The Host next performs
        parcellation if necessary (see: <xref target="parcels2"/>) then
        encapsulates the packet(s)/(sub-)parcel(s) in OMNI L2 headers while
        setting the L2 source to the L3 source address and L2 destination to
        either the L3 destination address if the peer is on the local ENET,
        or to the IP address of the Client otherwise. The Host can then
        proceed to exchange packets/parcels with the destination, either
        directly or via the Client as an intermediate system.</t>

        <t>The encapsulation procedures are coordinated per <xref target=
        "oal23"/>, except that the OMNI L2 encapsulation header is followed
        by an IPv6 Extended Fragment Header. When the L2 encapsulation is
        based on an EUI or IPv4 address, the Host next translates the
        encapsulation header into an IPv6 header with IPv6 compatible
        addresses per <xref target="ipv6-compat"/>. Next, for IPv4 ENETs
        the Host sets the {IPv6 Traffic Class, Payload Length, Next Header,
        Hop Limit} fields according to the IPv4 {Type of Service, Total
        Length, Protocol, TTL} fields, respectively and also sets Flow
        Label as specified in <xref target="RFC6438"/>. The Host then
        applies IPv6 fragmentation to produce IPv6 fragments no smaller
        than the effective OFS described in <xref target="oal23"/>. The
        Host next translates the IPv6 encapsulation headers back to OMNI
        L2 headers for the native ENET address format and with Type set
        to indicate the presence of the L2 IPv6 Extended Fragment Header.
        The Host finally sends the resultant carrier packets to the
        ENET peer.</t>

        <t>When the ENET peer receives the carrier packets, it first
        translates the OMNI L2 headers back to IPv6 headers with compatible
        addresses. The peer then reassembles and verifies the OAL checksum.
        If the checksum is correct, the peer next removes the encapsulation
        headers and applies parcel reunification if necessary. The peer then
        either delivers the original IP packet/parcel to the transport layers
        if it is also the final destination or forwards the packet/parcel via
        the next hop if it is a Client acting as an intermediate system.</t>

        <t>Hosts and Clients that initiate OMNI-based original IP packet/parcel
        transactions should first test the path toward the final destination
        using the parcel path qualification procedure specified in <xref target=
        "I-D.templin-6man-parcels2"/><xref target=
        "I-D.templin-intarea-parcels2"/>. An OMNI Host that sends and receives
        parcels need not implement the full OMNI interface abstraction but
        MUST implement enough of the OAL to be capable of fragmenting and
        reassembling maximum-length encapsulated IP packets/parcels and
        sub-parcels as discussed above and in the following section.</t>

        <t>Note: Hosts and their peer Clients/Hosts on the same ANET/ENET can
        improve efficiency by forwarding original IP packets/parcels that do
        not require fragmentation as direct encapsulations within the OMNI L2
        header and without including a L2 IPv6 Extended Fragment Header. In
        that case, the first four bits immediately following the OMNI L2
        encapsulation header encode the value '4' for IPv4 or '6' for IPv6.
        Note that this savings comes at the expense of omitting a well-behaved
        Identification, but this may be an acceptable tradeoff in many secured
        ANET/ENET instances.</t>
      </section>

      <section anchor="parcels2" title="IP Parcels">
        <t>IP parcels are formed by an OMNI Host or Client transport
        layer protocol entity identified by the "5-tuple" (source address,
        destination address, source port, destination port, protocol number)
        when it produces a {TCP,UDP} protocol data unit containing the
        concatenation of multiple transport layer protocol segments. The
        transport layer protocol entity then presents the buffer and
        non-final segment size to the network layer which appends a single
        {TCP,UDP}/IP header (plus any extension headers) before presenting
        the parcel to the OMNI Interface. Transport and network protocol
        formatting and processing rules as well as parcellation and
        reunification procedures for IP parcels are specified in <xref
        target="I-D.templin-6man-parcels2"/><xref target=
        "I-D.templin-intarea-parcels2"/>, while detailed OAL
        encapsulation and fragmentation procedures are specified here.</t>

        <t>When the network layer forwards a parcel, the OMNI interface
        invokes the OAL which forwards it to either an intermediate system
        or the final destination itself. The OAL source first invokes
        parcellation by subdividing the parcel into sub-parcels if necessary
        with each sub-parcel no larger than 65535 (minus headers). The OAL
        source also maintains a Parcel ID for each sub-parcel of the same
        original parcel that along with the Identification value for this
        OAL packet supports reassembly; the OAL source increments Parcel
        ID (modulo 64) for each successive parcel.</t>

        <t>The OAL source next performs encapsulation on each sub-parcel
        with destination set to the next hop address. If the next hop is
        reached via an ANET/INET interface, the OAL source inserts an
        OAL header the same as discussed in <xref target="oal23"/> and sets
        the destination to the ULA-MNP of the target Client. If the next hop
        is reached via an ENET interface, the OAL source instead inserts an
        IP header of the appropriate protocol version for the underlay ENET
        (i.e., even if the encapsulation header is IPv4) and sets the
        destination to the ENET IP address of the next hop. The OAL source
        inserts the encapsulation header even if no actual fragmentation is
        needed and/or even if the Parcel/Jumbo Payload option is present.</t>

        <t>The OAL source next assigns an appropriate Identification number
        that is monotonically-incremented for each consecutive sub-parcel,
        then performs IPv6 fragmentation over the sub-parcel if necessary
        to create fragments small enough to traverse the path to the next
        hop. (If the encapsulation header is IPv4, the OAL source first
        translates the encapsulation header into an IPv6 header with
        IPv4-Compatible IPv6 addresses during fragmentation/reassembly
        while inserting the IPv6 Extended Fragment Header.) The OAL source
        then writes the "Parcel ID" and sets/clears the "(P)arcel" and
        "More (S)egments" bits in the Reserved field of the IPv6 Extended
        Fragment Header of the first fragment (see: <xref target=
        "FH-reserved"/>). (The OAL source sets P to 1 for a parcel or
        to 0 for a non-parcel. When P is 1, the OAL next sets S to 1 for
        non-final sub-parcels or to 0 if the sub-parcel contains the final
        segment.) The OAL source then sends each resulting carrier packet
        to the next hop, i.e., after first translating the IPv6
        encapsulation header back to IPv4 if necessary.</t>

        <t>When the OAL destination receives the carrier packets, it reassembles
        if necessary (i.e., after first translating the IPv4 encapsulation header
        to IPv6 if necessary). If the P flag in the first fragment is 0, the OAL
        destination then processes the reassembled entity as an ordinary IP packet;
        otherwise it continues processing as a sub-parcel. If the OAL destination
        is not the final destination, it can optionally retain the sub-parcels
        along with their Parcel ID and Identification values for a brief time for
        opportunistic reunification with peer sub-parcels of the same original
        parcel identified by the 4-tuple consisting of the adaptation layer
        (OAL source, OAL destination, Parcel ID, Identification). (Note that
        the OAL destination must not consult the parcel's network layer "5-tuple"
        at the adaptation layer, since it is possible that multiple sub-parcels
        of the same parcel may be forwarded over different network paths).</t>

        <t>The OAL destination performs adaptation layer reunification by
        concatenating the segments included in sub-parcels with the same Parcel
        ID and Identification values within 64 of one another to create a larger
        sub-parcel possibly even as large as the entire original (sub)parcel.
        Order of concatenation is determined by increasing Identification
        values, noting that a sub-parcel that sets any TCP control flags must
        occur as a first concatenation, and the final sub-parcel (i.e., the
        one with S set to 0) must occur as a final concatenation and not as
        an intermediate. The OAL destination then appends common {TCP,UDP}/IP
        headers plus extensions to each reunified sub-parcel as specified in
        <xref target="I-D.templin-6man-parcels2"/><xref target=
        "I-D.templin-intarea-parcels2"/>.</t>

        <t>When the OAL destination is not the final destination, it next
        forwards the reunified (sub-)parcel(s) to the next hop toward the
        final destination while ensuring that the S flag remains set to 0 in
        the sub-parcel that contains the final segment. When the parcel or
        sub-parcels arrive at the final destination, it performs network
        layer reunification to form the largest possible (sub)-parcels
        (while honoring the S flag) then delivers them to the transport
        layer entity which acts on the enclosed 5-tuple information
        supplied by the original source.</t>

        <t>Note: IP parcels may also originate from a non-OMNI original source
        and travel over multiple parcel-capable IP links before reaching an
        OMNI link ingress node (i.e., either a Client or Proxy/Server acting
        as a "relay"). The ingress node then forwards the parcel into the OMNI
        link according to the rules established above for locally-generated
        parcels, with the exception that the parcel IP TTL/Hop Limit is
        decremented. Similarly, when the IP parcel arrives at the OMNI link
        egress node (i.e., either a Client or Proxy/Server acting as a
        "relay"), the parcel may travel over multiple parcel-capable IP links
        before reaching the final destination.</t>

        <t>Note: The OAL destination process of reunifying parcels at the
        adaptation layer is optional, and should be avoided in cases where
        performance could be negatively impacted. It is always acceptable
        (albeit sometimes sub-optimal) for the OAL destination to forward
        sub-parcels on toward the final destination without performing
        adaptation layer reunification, since each sub-parcel will contain
        a well-formed header and an integral number of transport layer protocol
        segments and with the Parcel ID field and P, S flag set appropriately.
        The final destination can then optionally perform network layer
        reunification independently of any adaptation layer reunification
        that may have been applied by the OAL.</t>

        <t>Note: The "Parcel ID" that appears in OFH and OCH headers is an
        adaptation layer value that encodes the same value for all sub-parcels
        of the original parcel at the adaptation layer. This is different than
        the "(Parcel) Index" that appears in the Parcel Payload option header
        as well as L2/L3 IPv6 Extended Fragment Headers, which is a network
        layer value that encodes a transport layer segment index.</t>

        <t>Note: Parcel Path Qualification procedures require two additional
        ICMP PTB message Code values to identify a Parcel Report and Jumbo
        Report. These Code values are specified in <xref target=
        "I-D.templin-6man-parcels2"/> for IPv6 and <xref target=
        "I-D.templin-intarea-parcels2"/> for IPv4.</t>
      </section>

      <section anchor="oal52" title="OAL Requirements">
        <t>In light of the above, OAL sources, destinations and intermediate
        systems observe the following normative requirements:<list
            style="symbols">
            <t>OAL sources MUST forward original IP packets/parcels either
            larger than the OMNI interface minimum EMTU_R or smaller than
            the minimum OFS as atomic fragments (i.e., and not as multiple
            fragments).</t>

            <t>OAL sources MUST produce non-final fragments with payloads no
            smaller than the minimum OFS during fragmentation.</t>

            <t>OAL intermediate systems SHOULD and OAL destinations MUST
            unconditionally drop any non-final OAL fragments with payloads
            smaller than the minimum OFS.</t>

            <t>OAL destinations MUST drop any new OAL fragments with offset
            and length that would overlap with other fragments and/or leave
            holes smaller than the minimum OFS between fragments that have
            already been received.</t>
          </list></t>

        <t>Note: Under the minimum OFS, an ordinary 1500-octet original IP
        packet/parcel would require at most 2 OAL fragments, with the first
        fragment containing 1024 payload octets and the final fragment containing
        the remainder. For all packet/parcel sizes, the likelihood of successful
        reassembly may improve when the OMNI interface sends all fragments of the
        same fragmented OAL packet consecutively over the same underlay interface
        pair instead of spread across multiple underlay interface pairs.
        Finally, an assured minimum OFS allows continuous operation over
        all paths including those that traverse bridged L2 media with
        dissimilar MTUs.</t>

        <t>Note: Certain legacy network hardware of the past millennium was
        unable to accept IP fragment "bursts" resulting from a fragmentation
        event - even to the point that the hardware would reset itself when
        presented with a burst. This does not seem to be a common problem in
        the modern era, where fragmentation and reassembly can be readily
        demonstrated at line rate (e.g., using tools such as 'iperf3') even
        over fast links on ordinary hardware platforms. Even so, while the
        OAL destination is reporting reassembly congestion (see: <xref
        target="oal3"/>) the OAL source could impose "pacing" by inserting an
        inter-fragment delay and increasing or decreasing the delay according
        to congestion indications.</t>
      </section>

      <section anchor="fragsec"
               title="OAL Fragmentation Security Implications">
        <t>As discussed in Section 3.7 of <xref target="RFC8900"/>, there are
        four basic threats concerning IPv6 fragmentation; each of which is
        addressed by effective mitigations as follows:<list style="numbers">
            <t>Overlapping fragment attacks - reassembly of overlapping
            fragments is forbidden by <xref target="RFC8200"/>; therefore,
            this threat does not apply to the OAL.</t>

            <t>Resource exhaustion attacks - this threat is mitigated by
            providing a sufficiently large OAL reassembly cache and
            instituting "fast discard" of incomplete reassemblies
            that may be part of a buffer exhaustion attack. The reassembly
            cache should be sufficiently large so that a sustained attack does
            not cause excessive loss of good reassemblies but not so large
            that (timer-based) data structure management becomes
            computationally expensive. The cache should also be indexed based
            on the arrival underlay interface such that congestion experienced
            over a first underlay interface does not cause discard of
            incomplete reassemblies for uncongested underlay interfaces.</t>

            <t>Attacks based on predictable fragment Identification values -
            in environments where spoofing is possible, this threat is
            mitigated through the use of Identification windows beginning with
            unpredictable values per <xref target="oal7.9"/>. By maintaining
            windows of acceptable Identifications, OAL neighbors can quickly
            discard spurious carrier packets that might otherwise clutter the
            reassembly cache. The OAL additionally provides an integrity check
            to detect corruption that may be caused by spurious fragments
            received with in-window Identification values.</t>

            <t>Evasion of Network Intrusion Detection Systems (NIDS) - since
            the OAL source employs a robust OFS, network-based firewalls can
            inspect and drop OAL fragments containing malicious data thereby
            disabling reassembly by the OAL destination. However, since OAL
            fragments may take different paths through the network (some of
            which may not employ a firewall) each OAL destination must also
            employ a firewall.</t>
          </list>IPv4 includes a 2-octet (16-bit) Identification (IP ID) field
        with only 65535 unique values such that even at moderate data rates the
        field could wrap and apply to new carrier packets while the fragments of old
        carrier packets using the same IP ID are still alive in the network <xref
        target="RFC4963"/>. Carrier packets sent via an IPv4 path with DF set to
        0 and with an IPv4 fragmentation checksum therefore ensure sufficient
        integrity to detect and discard reassembly errors. Since IPv6 provides
        a 4-octet (32-bit) Identification value, IP ID wraparound for IPv6
        fragmentation may only be a concern at extreme data rates (e.g., 1Tbps
        or more). Note that these limitations are fully addressed through
        still longer Identification formats supported by "Identification
        Extensions for the Internet Protocol" <xref target=
        "I-D.templin-6man-ipid-ext"/>.</t>

        <t>Fragmentation security concerns for large IPv6 ND messages are
        documented in <xref target="RFC6980"/>. These concerns are addressed
        when the OMNI interface employs the OAL instead of directly
        fragmenting the IPv6 ND message itself. For this reason, OMNI
        interfaces MUST employ OAL encapsulation and fragmentation for
        IPv6 ND messages larger than the effective OFS for this OAL destination.</t>

        <t>Unless the path is secured at the network layer or below (i.e., in
        environments where spoofing is possible), OMNI interfaces MUST NOT
        send OAL packets/fragments with Identification values outside the
        current window and MUST secure IPv6 ND messages used for address
        resolution or window state synchronization. OAL destinations SHOULD
        therefore discard without reassembling any out-of-window OAL fragments
        received over an unsecured path.</t>
      </section>
    </section>

    <section anchor="frame" title="Ethernet-Compatible Link Layer Frame Format">
      <t>When the OMNI interface forwards original IP packets/parcels from the
      network layer it first invokes OAL encapsulation and fragmentation, then
      wraps each resulting OAL packet/fragment in any necessary L2 headers to
      produce carrier packets according to the native frame format of the
      underlay interface. For example, for Ethernet-compatible interfaces the
      frame format is specified in <xref target="RFC2464"/>, for aeronautical
      radio interfaces the frame format is specified in standards such as ICAO
      Doc 9776 (VDL Mode 2 Technical Manual), for various forms of tunnels the
      frame format is found in the appropriate tunneling specification,
      etc.</t>

      <t>When the OMNI interface encapsulates an OAL packet/fragment directly
      over an Ethernet-compatible link layer, the over-the-wire transmission
      format is shown in <xref target="omnieth"/>:<figure anchor="omnieth"
          title="OMNI Ethernet Frame Format">
          <artwork><![CDATA[   +--- ~~~ ---+-------~~~------+---------~~~---------+--- ~~~ ---+
   |  eth-hdr  | OMNI Ext. Hdrs | OAL Packet/Fragment | eth-trail |
   +--  ~~~ ---+-------~~~------+---------~~~---------+--- ~~~ ---+
               |<-------   Ethernet Payload   -------->|
]]></artwork>
        </figure>The format includes a standard Ethernet Header ("eth-hdr")
      with EtherType TBD2 (see: <xref target="iana0.5"/>) followed by an
      Ethernet Payload that includes zero or more OMNI Extension Headers
      followed by an OAL (or native IPv6/IPv4) Packet/Fragment. The Ethernet
      Payload is then followed by a standard Ethernet Trailer ("eth-trail").</t>

      <t>The first OMNI extension header and the OAL Packet/Fragment both
      begin with a 4-bit "Type/Version" as discussed in <xref target="oal42"/>.
      When "Type/Version" encodes an OMNI extension header type, the length of
      the extension headers is limited by <xref target="I-D.ietf-6man-eh-limits"/>
      and the length of the OAL Packet/Fragment is determined by the IP
      header fields that follow the extension headers.</t>

      <t>When "Type/Version" encodes '0', '4' or '6', the OAL Packet/Fragment
      includes an uncompressed OAL IPv6, native IPv4, or native IPv6 header
      (respectively). In that case, the IP header {Total, Payload} and/or
      Parcel/Jumbo Payload Length fields determine the packet/fragment
      length. When "Type/Version" encodes '1' the OAL Packet/Fragment
      instead includes an OCH, and the length fields found in the
      uncompressed IP packet/fragment that follows determine the length.</t>

      <t>See <xref target="omni-layering"/> for a map of the various L2
      layering combinations possible. For any layering combination, the final
      layer (e.g., UDP, IP, Ethernet, etc.) must have an assigned number and
      frame format representation that is compatible with the selected
      underlay interface.</t>
    </section>

    <section anchor="aero-address" title="Link-Local Addresses (LLAs)">
      <t><xref target="RFC4861"/> requires that nodes assign Link-Local
      Addresses (LLAs) to all interfaces, and that routers use their LLAs as
      the source address for RA and Redirect messages. OMNI interfaces honor
      the first requirement, but do not honor the second since the OMNI link
      could consist of the concatenation of multiple links with diverse ULA
      prefixes (see <xref target="span-address"/>) but for which multiple
      nodes might configure identical interface identifiers (IIDs). OMNI
      interface LLAs are therefore considered only as context for IID
      formation as discussed below and have no other operational role.</t>

      <t>OMNI interfaces assign IPv6 LLAs through pre-service administrative
      actions. Clients assign "LLA-MNPs" with IIDs that embed the Client's
      unique MNP, while Proxy/Servers assign "LLA-RNDs" that include a
      randomly-generated IIDs generated as specified in <xref
      target="RFC7217"/>. LLAs are configured as follows:</t>

      <t><list style="symbols">
          <t>IPv6 LLA-MNPs encode the most-significant 64 bits of an MNP
          within the least-significant 64 bits of the IPv6 link-local prefix
          fe80::/64, i.e., in the IID portion of the LLA. The LLA prefix
          length is determined by adding 64 to the MNP prefix length. e.g.,
          for the MNP 2001:db8:1000:2000::/56 the corresponding LLA-MNP prefix
          is fe80::2001:db8:1000:2000/120. (The base LLA-MNP for each "/N"
          prefix sets the final 128-N bits to 0, but all LLA-MNPs that match
          the prefix are also accepted.) Non-MNP IPv6 prefix-based LLAs are
          also represented the same as for LLA-MNPs, but include a GUA prefix
          that is not properly covered by the MSP.</t>

          <t>IPv4-Compatible LLA-MNPs are constructed as fe80::{IPv4-Prefix},
          i.e., the IID consists of 32 '0' bits followed by a 32 bit IPv4
          address/prefix, which may be either public or private in
          correspondence with the network layer addressing plan. The
          IPv4-Compatible LLA-MNP prefix length is determined by adding 96 to
          the IPv4 prefix length. For example, the IPv4-Compatible LLA-MNP for
          192.0.2.0/24 is fe80::192.0.2.0/120, also written as
          fe80::c000:0200/120. (The base LLA-MNP for each "/N" prefix sets the
          final 128-N bits to 0, but all LLA-MNPs that match the prefix are
          also accepted.) Non-MNP IPv4 prefix-based LLAs are also represented
          the same as for LLA-MNPs, but include a GUA prefix that is not
          properly covered by the MSP.</t>

          <t>LLA-RNDs are randomly-generated and assigned to Proxy/Servers and
          other SRT infrastructure elements. They may also be assigned by
          Clients to support the MNP delegation process. The upper 72 bits of
          the LLA-RND encode the prefix fe80::/72, and the lower 56 bits
          include a randomly-generated candidate pseudo-random value
          configured as specified in <xref target="RFC7217"/><xref target="RFC8981"/>;
          if the most significant 24 bits of the 56 bit candidate encodes the value
          '0', the node generates a new candidate to obtain one with a different
          most significant 24 bits to avoid overlap with IPv4-Compatible
          LLAs.</t>

          <t>The address fe80::/128 (i.e., the LLA /64 prefix followed by an
          all-zero IID) is considered the LLA Subnet Router Anycast
          address</t>
        </list></t>

      <t>Since the prefix 0000::/8 is "Reserved by the IETF" <xref
      target="RFC4291"/>, no MNPs can be allocated from that block ensuring
      that there is no possibility for overlap between the different MNP and
      RND LLA constructs discussed above.</t>

      <t>Since LLA-MNPs are based on the distribution of administratively
      assured unique MNPs, and since LLA-RNDs are assumed unique through
      pseudo-random assignment, OMNI interfaces set the autoconfiguration
      variable DupAddrDetectTransmits to 0 <xref target="RFC4862"/>.</t>

      <t>Note: If future protocol extensions relax the 64-bit boundary in
      IPv6 addressing, the additional prefix bits of an MNP could be encoded
      in bits 16 through 63 of the LLA-MNP. (The most-significant 64 bits
      would therefore still be in bits 64-127, and the remaining bits would
      appear in bits 16 through 48.) However, this would interfere with the
      relationship between OMNI LLAs and ULAs (see: <xref target=
      "span-address"/>) and therefore deprecate many OMNI functions. The
      analysis provided in <xref target="RFC7421"/> furthermore suggests
      that the 64-bit boundary will remain in the IPv6 architecture for
      the foreseeable future.</t>
    </section>

    <section anchor="span-address" title="Unique-Local Addresses (ULAs)">
      <t>OMNI links use IPv6 Unique-Local Addresses (ULAs) as the source and
      destination addresses in both IPv6 ND messages and OAL packet IPv6
      encapsulation headers. ULAs are routable only within the scope of an
      OMNI link, and are derived from the IPv6 Unique Local Address prefix
      fd00::/8 (i.e., the prefix fc00::/7 followed by the L bit set to 1).
      When the first 16 bits of the ULA encode the value fd00::/16, the
      address is considered as either a Temporary ULA (TLA) or an eXtended ULA
      (XLA) - see below. For all other ULAs, the 56 bits following fd00::/8
      encode a 40-bit Global ID followed by a 16-bit Subnet ID as specified in
      Section 3 of <xref target="RFC4193"/>. All OMNI link ULA types finally
      include a 64-bit value in the IID portion of the address ULA::/64 as
      specified below.</t>

      <t>When a node configures a ULA for OMNI, it selects a 40-bit Global ID
      for the OMNI link initialized to a candidate pseudo-random value as
      specified in Section 3 of <xref target="RFC4193"/>; if the most
      significant 8 bits of the candidate encodes the value '0', the node
      selects a new candidate until it obtains one with a different most
      significant 8 bits. All nodes on the same OMNI link use the same Global
      ID, and statistical uniqueness of the pseudo-random Global ID provides a
      unique OMNI link identifier allowing different links to be joined
      together in the future without requiring renumbering.</t>

      <t>Next, for each logical segment of the same OMNI link the node selects
      a 16-bit Subnet ID value between 0x0000 and 0xffff. Nodes on the same
      logical segment configure the same Subnet ID, but nodes on different
      segments of the same OMNI link can still exchange IPv6 ND messages as
      single-hop neighbors even if they configure different Subnet IDs. When a
      node moves to a different OMNI link segment, it resets the Global ID and
      Subnet ID value according to the new segment but need not change the
      IID.</t>

      <t>ULAs and their associated prefix lengths are configured in
      correspondence with LLAs through stateless prefix translation where
      "ULA-MNPs" simply copy the IIDs of their corresponding LLA-MNPs and
      "ULA-RNDs" simply copy the IIDs of their corresponding LLA-RNDs. For
      example, for the OMNI link ULA prefix fd{Global}:{Subnet}::/64:</t>

      <t><list style="symbols">
          <t>the ULA-MNP corresponding to the LLA-MNP fe80::2001:db8:1:2 with
          a 56-bit MNP length is simply fd{Global}:{Subnet}:2001:db8:1:2/120
          (where, the ULA prefix length becomes 64 plus the IPv6 MNP
          length).</t>

          <t>the ULA-MNP corresponding to fe80::192.0.2.0 with a 28-bit MNP
          length is simply fd{Global}:{Subnet}::192.0.2.0/124 (where, the ULA
          prefix length becomes 96 plus the IPv4 MNP length).</t>

          <t>the ULA-RND corresponding to fe80::0012:3456:789a:bcde is simply
          fd{Global}:{Subnet}::0012:3456:789a:bcde/128.</t>

          <t>the Subnet Router Anycast ULA corresponding to fe80::/128 is
          simply fd{Global}:{Subnet}::/128.</t>
        </list></t>

      <t>The ULA presents an IPv6 address format that is routable within the
      OMNI link routing system and can be used to convey link-scoped (i.e.,
      single-hop) IPv6 ND messages across multiple hops through OAL IPv6
      encapsulation. The OMNI link extends across one or more underlying
      Internetworks to include all Proxy/Servers and other service nodes.
      All Clients are also considered to be connected to the OMNI link,
      however unnecessary encapsulations are omitted whenever possible
      to conserve bandwidth (see: <xref target="concept"/>).</t>

      <t>Clients can configure TLAs when they have no other ULA addresses
      by setting the ULA prefix to fd00::/16 followed by a 48-bit
      randomly-generated number followed by a random or MNP-based IID
      the same as specified in <xref target="aero-address"/>.
      XLAs are special-case TLAs that use the prefix fd00::/64; XLAs can
      also be formed from LLAs simply by inverting bits 7 and 8 of 'fe80'
      to form 'fd00'.</t>

      <t>OMNI nodes use XLA-MNPs as "default" ULAs for representing MNPs in
      the OMNI link routing system. Clients use {TLA,XLA}-MNPs when they
      already know their MNP but need to express it outside the context of a
      specific ULA prefix, and Proxy/Servers advertise XLA-MNPs into the OMNI
      link routing system instead of advertising fully-qualified
      {TLA,ULA}-MNPs and/or non-routable LLA-MNPs.</t>

      <t>{TLAs,XLAs} provide initial "bootstrapping" addresses while the
      Client is in the process of procuring an MNP and/or identifying the ULA
      prefix for the OMNI link segment; TLAs are not advertised into the OMNI
      link routing system but can be used for Client-to-Client communications
      within a single ANET/INET/ENET when no OMNI link infrastructure is present.
      Within each individual ANET/INET/ENET, TLAs employ optimistic DAD principles
      <xref target="RFC4429"/> since they are statistically unique.</t>

      <t>Each OMNI link may be subdivided into SRT segments that often
      correspond to different administrative domains or physical partitions.
      Each SRT segment is identified by a different Subnet ID within the same
      ULA ::/48 prefix. Multiple distinct OMNI links with different ULA ::/48
      prefixes can also be joined together into a single unified OMNI link
      through simple interconnection without requiring renumbering. In that
      case, the (larger) unified OMNI link routing system may carry multiple
      distinct ULA prefixes.</t>

      <t>OMNI nodes can use Segment Routing <xref target="RFC8402"/> to
      support efficient forwarding to destinations located in other OMNI link
      segments. A full discussion of Segment Routing over the OMNI link
      appears in <xref target="I-D.templin-intarea-aero2"/>.</t>

      <t>Note: IPv6 ULAs taken from the prefix fc00::/7 followed by the L bit
      set to 0 (i.e., as fc00::/8) are never used for OMNI OAL addressing,
      however the range could be used for MSP/MNP addressing under certain
      limiting conditions (see: <xref target="gua"/>). When used within the
      context of OMNI, ULAs based on the prefix fc00::/8 are referred to as
      "ULA-C's".</t>

      <t>Note: When they appear in the OMNI link routing table, ULA-RNDs
      always use prefix lengths between /48 and /64 (or, /128) while XLA-MNPs
      always use prefix lengths between /65 and /128. {TLA,ULA}-MNPs and
      {TLA,XLA}-RNDs should never appear in the OMNI link routing table, but
      may appear in ANET/INET/ENET routing tables.</t>
    </section>

    <section anchor="gua" title="Global Unicast Addresses (GUAs)">
      <t>OMNI domains use IP Global Unicast Address (GUA) prefixes <xref
      target="RFC4291"/> as Mobility Service Prefixes (MSPs) from which Mobile
      Network Prefixes (MNP) are delegated to Clients. Fixed correspondent
      node networks reachable from the OMNI link are represented by non-MNP
      GUA prefixes that are not derived from the MSP, but are treated in all
      other ways the same as for MNPs.</t>

      <t>For IPv6, GUA MSPs are assigned by IANA <xref target="IPV6-GUA"/>
      and/or an associated Regional Internet Registry (RIR) such that the OMNI
      link can be interconnected to the global IPv6 Internet without causing
      inconsistencies in the routing system. An OMNI link could instead use
      ULAs with the 'L' bit set to 0 (i.e., from the "ULA-C" prefix
      fc00::/8)<xref target="RFC4193"> </xref>, however this would require
      IPv6 NAT if the domain were ever connected to the global IPv6
      Internet.</t>

      <t>For IPv4, GUA MSPs are assigned by IANA <xref target="IPV4-GUA"/>
      and/or an associated RIR such that the OMNI link can be interconnected
      to the global IPv4 Internet without causing routing inconsistencies. An
      OMNI ANET/ENET could instead use private IPv4 prefixes (e.g.,
      10.0.0.0/8, etc.) <xref target="RFC3330"/>, however this would require
      IPv4 NAT at the INET-to-ANET/ENET boundary. OMNI interfaces advertise
      IPv4 MSPs into IPv6 routing systems as IPv4-Compatible IPv6 prefixes
      <xref target="RFC4291"/> (e.g., the IPv6 prefix for the IPv4 MSP
      192.0.2.0/24 is ::192.0.2.0/120).</t>

      <t>OMNI interfaces assign the IPv4 anycast address TBD3 (see: IANA
      Considerations), and IPv4 routers that configure OMNI interfaces
      advertise the prefix TBD3/N into the routing system of other networks
      (see: IANA Considerations). OMNI interfaces also configure global IPv6
      anycast addresses formed according to <xref target="RFC3056"/> as:</t>

      <t>2002:TBD3{32}:MSP{64}:Link-ID{16}</t>

      <t>where TBD3{32} is the 32 bit IPv4 anycast address and MSP{64} encodes
      an MSP zero-padded to 64 bits (if necessary). For example, the OMNI IPv6
      anycast address for MSP 2001:db8::/32 is
      2002:TBD3{32}:2001:db8:0:0:{Link-ID}, the OMNI IPv6 anycast address for
      MSP 192.0.2.0/24 is 2002:TBD3{32}::c000:0200:{Link-ID}, etc.).</t>

      <t>The 16-bit Link-ID in the OMNI IPv6 anycast address identifies a
      specific OMNI link within the domain that services the MSP. The special
      Link-ID value '0' is a wildcard that matches all links, while all other
      values identify specific links. Mappings between Link-ID values and the
      ULA Global IDs assigned to OMNI links are outside the scope of this
      document.</t>

      <t>OMNI interfaces assign OMNI IPv6 anycast addresses, and IPv6 routers
      that configure OMNI interfaces advertise the corresponding prefixes into
      the routing systems of other networks. An OMNI IPv6 anycast prefix is
      formed the same as for any IPv6 prefix; for example, the prefix
      2002:TBD3{32}:2001:db8::/80 matches all OMNI IPv6 anycast addresses
      covered by the prefix. When IPv6 routers advertise OMNI IPv6 anycast
      prefixes in this way, Clients can locate and associate with either a
      specific OMNI link or any OMNI link within the domain that services the
      MSP of interest.</t>

      <t>OMNI interfaces use OMNI IPv6 and IPv4 anycast addresses to support
      Service Discovery in the spirit of <xref target="RFC7094"/>, i.e., the
      addresses are not intended for use in long-term transport protocol
      sessions. Specific applications for OMNI IPv6 and IPv4 anycast addresses
      are discussed throughout the document as well as in <xref
      target="I-D.templin-intarea-aero2"/>.</t>
    </section>

    <section anchor="node-id" title="Node Identification">
      <t>OMNI Clients and Proxy/Servers that connect over open Internetworks
      include a unique node identification value for themselves in the OMNI
      options of their IPv6 ND messages (see: <xref target="sub11"/>). An
      example identification value alternative is the Host Identity Tag (HIT)
      as specified in <xref target="RFC7401"/>, while Hierarchical HITs
      (HHITs) <xref target="I-D.ietf-drip-rid"/> may be more appropriate for
      certain domains such as the Unmanned (Air) Traffic Management (UTM)
      service for Unmanned Air Systems (UAS). Another example is the
      Universally Unique IDentifier (UUID) <xref target="RFC4122"/> which can
      be self-generated by a node without supporting infrastructure with very
      low probability of collision.</t>

      <t>When a Client is truly outside the context of any infrastructure, it
      may have no MNP information at all. In that case, the Client can use a
      TLA or (H)HIT as an IPv6 source/destination address for sustained
      communications in Vehicle-to-Vehicle (V2V) and (multihop)
      Vehicle-to-Infrastructure (V2I) scenarios. The Client can also propagate
      the ULA/(H)HIT into the multihop routing tables of (collective)
      Mobile/Vehicular Ad-hoc Networks (MANETs/VANETs) using only the vehicles
      themselves as communications relays.</t>

      <t>When a Client connects via a protected-spectrum ANET, an alternate
      form of node identification (e.g., MAC address, serial number, airframe
      identification value, VIN, etc.) embedded in a ULA may be sufficient.
      The Client can then include OMNI "Node Identification" sub-options (see:
      <xref target="sub11"/>) in IPv6 ND messages should the need to transmit
      identification information over the network arise.</t>

      <t>HHITs provide an especially useful construct since they appear as
      properly-formed IPv6 GUAs and can therefore be assigned to interfaces.
      Clients may assign an HHIT to their OMNI interface to support peer-to-peer
      communications with other OMNI nodes that configure HHITs within the
      same OMNI link segment without the need for encapsulation. Clients may
      inject their HHIT into the local routing system of each OMNI link segment,
      but Proxy/Servers must not inject HHITs into the OMNI link global routing
      system.</t>
    </section>

    <section anchor="interface" title="Address Mapping - Unicast">
      <t>OMNI interfaces maintain a network layer conceptual neighbor cache
      per <xref target="RFC1256"/> or <xref target="RFC4861"/> the same as for
      any IP interface, and (for IPv6) use the link-local address format
      specified in <xref target="aero-address"/>. The network layer
      maintains state through static and/or dynamic Neighbor Cache
      Entry (NCE) configurations.</t>

      <t>Each OMNI interface also maintains a separate internal adaptation
      layer conceptual neighbor cache that includes a NCE for the unique-local
      address of each of its active OAL neighbors (see: <xref target=
      "aero-address"/>). For each peer NCE, OAL neighbors also maintain
      AERO Forwarding Vectors (AFVs) which map per-interface-pair parameters.
      Throughout this document, the terms "neighbor cache", "NCE" and "AFV"
      refer to this OAL neighbor information unless otherwise specified.</t>

      <t>IPv6 Neighbor Discovery (ND) <xref target="RFC4861"/> messages sent
      over OMNI interfaces without OAL encapsulation observe the native
      underlay interface Source/Target Link-Layer Address Option (S/TLLAO)
      format (e.g., for Ethernet the S/TLLAO is specified in <xref
      target="RFC2464"/>). IPv6 ND messages sent from within the OMNI
      interface using OAL encapsulation do not include S/TLLAOs, but instead
      include a new option type that encodes OMNI link-specific information.
      Hence, this document does not define a new S/TLLAO format but instead
      defines a new option type termed the "OMNI option" designed for these
      purposes. (Note that OMNI interface IPv6 ND messages sent without
      encapsulation may include both OMNI options and S/TLLAOs, but the
      information conveyed in each is mutually exclusive.)</t>

      <t>For each IPv6 ND message, the OMNI interface includes one or more
      OMNI options (and any other ND message options) then completely
      populates all option information. OMNI options should be padded
      when necessary to ensure that they end on their natural 64-bit
      boundaries the same as for any IPv6 ND message option.</t>

      <t>If the OMNI interface includes an OMNI option with an authentication
      signature, it first sets the signature field to 0 then calculates the
      authentication signature beginning after the IPv6 ND message header
      checksum field. The OMNI interface extends the calculation over the
      entire length of the ND message (as well as any concatenated extensions
      in the case of a super-packet) then writes the authentication signature
      value into the appropriate OMNI authentication sub-option field.</t>

      <t>The OMNI interface then applies any non-OMNI authentication
      signatures, calculates the IPv6 ND message checksum per <xref target=
      "RFC4443"/> beginning with a pseudo-header of the IPv6 header and
      writes the value into the Checksum field. OMNI interfaces verify
      first integrity then authenticity of each IPv6 ND message or
      super-packet received, and process the message further only
      following successful verification.</t>

      <t>OMNI interface Clients such as aircraft typically have multiple
      wireless data link types (e.g. satellite-based, cellular, terrestrial,
      air-to-air directional, etc.) with diverse performance, cost and
      availability properties. The OMNI interface would therefore appear to
      have multiple L2 connections, and may include information for multiple
      underlay interfaces in a single IPv6 ND message exchange. OMNI
      interfaces manage their dynamically-changing multilink profiles by
      including OMNI options in IPv6 ND messages as discussed in the
      following subsections.</t>

      <section anchor="omni-opt" title="The OMNI Option">
        <t>OMNI options appear in IPv6 ND messages formatted as shown in <xref
        target="llaov6"/>:</t>

        <t><figure anchor="llaov6" title="OMNI Option Format">
            <artwork><![CDATA[     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |      Type     |     Length    |         Sub-Options           ~
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
          </figure>In this format:</t>

        <t><list style="symbols">
            <t>Type is set to TBD4 (see: IANA Considerations).</t>

            <t>Length is set to the number of 8-octet blocks in the option.
            The value 0 is invalid, while the values 1 through 255 (i.e., 8
            through 2040 octets, respectively) indicate the total length of
            the OMNI option. If multiple OMNI option instances appear in the
            same IPv6 ND message, the union of the contents of all OMNI
            options is accepted unless otherwise qualified for specific
            sub-options below.</t>

            <t>Sub-Options is a Variable-length field padded with Pad1/N
            sub-options if necessary (see below) such that the complete
            OMNI Option is an integer multiple of 8 octets long. The
            Sub-Options field contains zero or more sub-options as
            specified in <xref target="sub-opt"/>.</t>
          </list>The OMNI option is included in OMNI interface IPv6 ND
        messages; the option is processed by receiving interfaces that
        recognize it and otherwise ignored. The OMNI interface processes all
        OMNI option instances received in the same IPv6 ND message in the
        consecutive order in which they appear. The OMNI option(s) included in
        each IPv6 ND message may include full or partial information for the
        neighbor. The OMNI interface therefore retains the union of the
        information in the most recently received OMNI options in the
        corresponding NCE.</t>
      </section>

      <section anchor="sub-opt" title="OMNI Sub-Options">
        <t>Each OMNI option includes a Sub-Options block containing zero or
        more individual sub-options. Each consecutive sub-option is
        concatenated immediately following its predecessor. All sub-options
        except Pad1 (see below) are in an OMNI-specific type-length-value
        (TLV) format encoded as follows: <figure anchor="sub-format"
            title="Sub-Option Format">
            <artwork><![CDATA[     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-  
     | 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-option types defined in this document are:<figure
                anchor="sub-types" title="">
                <artwork><![CDATA[     Sub-Option Name             Sub-Type
     Pad1                           0
     PadN                           1
     Node Identification            2
     Authentication                 3
     Window Synchronization         4
     Neighbor Control               5
     Interface Attributes           6
     Traffic Selector               7
     AERO Forwarding Parameters     8
     Geo Coordinates                9
     DHCPv6 Message                10
     PIM-SM Message                11
     HIP Message                   12
     QUIC-TLS Message              13
     Fragmentation Report          14
     ICMPv6 Error                  15
     Proxy/Server Departure        16
     Sub-Type Extension            30
]]></artwork>
              </figure>Sub-Types 17-29 are available for future assignment for
            major protocol functions, while Sub-Type 30 supports scalable
            extension to include other 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 in octets.</t>

            <t>Sub-Option Data is a block of data with format determined by
            Sub-Type and length determined by Sub-Length. Note that each
            sub-option is concatenated consecutively with the previous and
            may therefore begin and/or end on an arbitrary octet boundary.</t>
          </list>The OMNI interface codes each sub-option with a 2-octet
        header that includes Sub-Type in the most significant 5 bits followed
        by Sub-Length in the next most significant 11 bits.  Each sub-option
        encodes a maximum Sub-Length value of 2038 octets minus the lengths
        of the OMNI option header and any preceding sub-options. This allows
        ample Sub-Option Data space for coding large objects (e.g., ASCII
        strings, domain names, protocol messages, security codes, etc.),
        while a single OMNI option is limited to 2040 octets the same as
        for any IPv6 ND option.</t>

        <t>The OMNI interface codes initial sub-options in a first OMNI option
        instance and any additional sub-options in additional instances in the
        same IPv6 ND message in the intended order of processing. If the
        size of all OMNI options with their sub-options would cause the IPv6
        ND message to exceed the OMNI interface MTU, the OMNI interface can
        code any remaining sub-options in additional IPv6 ND messages.</t>

        <t>The OMNI interface processes all OMNI options received in an
        IPv6 ND message 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 an individual sub-option length would cause processing to exceed
        the OMNI option instance and/or IPv6 ND message lengths, the OMNI
        interface accepts any sub-options already processed and ignores the
        remainder of that instance. The interface then processes any remaining
        OMNI option instances in the same fashion to the end of the IPv6 ND
        message.</t>

        <t>IPv6 ND messages that require OMNI authentication services MUST
        include a Node Identification sub-option as the first sub-option of
        the first OMNI option, and MUST include some form of authentication
        (e.g., HMAC, HIP, QUIC, etc.) as the immediately next sub-option
        whether in the same or different OMNI option. A single IPv6 ND
        messages may include only one OMNI authentication service sub-option;
        if multiple are included, the first sub-option is processed and all
        others are ignored. The IPv6 ND message may also include non-OMNI
        authentication options such as those specified in
        <xref target="RFC3971"/> or <xref target="RFC8928"/> either instead
        of or in addition to an OMNI authentication option. Nodes that
        receive IPv6 ND messages over unsecured underlying networks first
        verify the IPv6 ND message checksum then authenticate the message
        by processing any authentication options/sub-options.</t>

        <t>Note: large objects that exceed the maximum Sub-Option Data length
        are not supported under the current specification; if this proves to
        be limiting in practice, future specifications may define support for
        fragmenting large sub-options across multiple OMNI options within the
        same IPv6 ND message (or even across multiple IPv6 ND messages, if
        necessary).</t>

        <t>The following sub-option types and formats are defined in this
        document:</t>

        <section anchor="sub0" title="Pad1">
          <t><figure anchor="pad0" title="Pad1">
              <artwork><![CDATA[     +-+-+-+-+-+-+-+-+
     | 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 3 'x' bits, set to any value on
              transmission (typically all-zeros) and ignored on reception.
              Pad1 therefore consists of a single octet with the most significant
              5 bits set to 0, and with no Sub-Length or Sub-Option Data fields
              following.</t>
            </list>If more than a single octet of padding is required, the PadN
          option, described next, should be used, rather than multiple Pad1
          options.</t>
        </section>

        <section anchor="sub1" title="PadN">
          <t><figure anchor="padn" title="PadN">
              <artwork><![CDATA[     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
     | 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 that encodes the number of padding
              octets that follow.</t>

              <t>Sub-Option Data consists of N octets, set to any value on
              transmission (typically all-zeros) and ignored on receipt.</t>
            </list>When a proxy forwards an IPv6 ND message with OMNI options,
          it can employ PadN to void any non-Pad1 sub-options that should not
          be processed by the next hop by simply writing the value
          '1' over the Sub-Type. When the proxy alters the IPv6 ND message
          contents in this way, any included authentication and integrity
          checks are invalidated. See: <xref target="integrity"/> for a
          discussion of IPv6 ND message authentication and integrity.</t>
        </section>

        <section anchor="sub11" title="Node Identification">
          <t>The Node Identification sub-option includes a form of
          identification for the node, and (when present) must appear as the
          first sub-option of the first OMNI option in each IPv6 ND message.</t>

          <t>At least one instance of the sub-option must be present in messages
          that also include an OMNI authentication service sub-option. If multiple
          instances appear in OMNI options of the same IPv6 ND message the first
          instance of a specific ID-Type is processed and all other instances of
          the same ID-Type are ignored. (It is therefore possible for a single
          IPv6 ND message to convey multiple distinct Node Identifications - each
          with a different ID-Type.)</t>

          <t>The format
          and contents of the sub-option are shown in <xref
          target="hhit-tag"/>:<figure anchor="hhit-tag"
              title="Node Identification">
              <artwork><![CDATA[                     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                     | S-Type=2|    Sub-length=N     |    ID-Type    |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                                                               |
     ~            Node Identification Value (N-1 octets)             ~
     |                                                               |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
            </figure><list style="symbols">
              <t>Sub-Type is set to 2. Multiple instances are processed as
              discussed above.</t>

              <t>Sub-Length is set to N that encodes the number of Sub-Option
              Data octets that follow. The ID-Type field is always present;
              hence, the maximum Node Identification Value length is limited
              by the remaining available space in this OMNI option.</t>

              <t>ID-Type is a 1-octet field that encodes the type of the Node
              Identification Value. The following ID-Type values are currently
              defined:<list style="symbols">
                  <t>0 - Universally Unique IDentifier (UUID) <xref
                  target="RFC4122"/>. Indicates that Node Identification Value
                  contains a 16-octet UUID.</t>

                  <t>1 - Host Identity Tag (HIT) <xref target="RFC7401"/>.
                  Indicates that Node Identification Value contains a 16-octet
                  HIT.</t>

                  <t>2 - Hierarchical HIT (HHIT) <xref
                  target="I-D.ietf-drip-rid"/>. Indicates that Node
                  Identification Value contains a 16-octet HHIT.</t>

                  <t>3 - Network Access Identifier (NAI) <xref
                  target="RFC7542"/>. Indicates that Node Identification Value
                  contains an (N-1)-octet NAI.</t>

                  <t>4 - Fully-Qualified Domain Name (FQDN) <xref
                  target="RFC1035"/>. Indicates that Node Identification Value
                  contains an (N-1)-octet FQDN.</t>

                  <t>5 - IPv6 Address. Indicates that Node Identification
                  contains a 16-octet IPv6 address that is not a (H)HIT. The
                  IPv6 address type is determined according to the IPv6
                  addressing architecture <xref target="RFC4291"/>.</t>

                  <t>6 - 252 - Unassigned.</t>

                  <t>253 - 254 - reserved for experimentation, as recommended in
                  <xref target="RFC3692"/>.</t>

                  <t>255 - reserved by IANA.</t>
                </list></t>

              <t>Node Identification Value is an (N-1)-octet field encoded
              according to the appropriate the "ID-Type" reference above.</t>
            </list></t>

          <t>OMNI interfaces code Node Identification Values used for DHCPv6
          messaging purposes as a DHCP Unique IDentifier (DUID) using the
          "DUID-EN for OMNI" format with enterprise number 45282 (see: <xref
          target="iana"/>) as shown in <xref target="duid-hit"/>:</t>

          <figure anchor="duid-hit" title="DUID-EN for OMNI Format">
            <artwork><![CDATA[                                     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                                     |         DUID-Type (2)         |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                   Enterprise Number (45282)                   |  
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |    ID-Type    |                                               |
     +-+-+-+-+-+-+-+-+                                               ~            
     ~                   Node Identification Value                   ~
     |                                                               |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
          </figure>

          <t>In this format, the OMNI interface codes the ID-Type and Node
          Identification Value fields from the OMNI sub-option following a
          6-octet DUID-EN header, then includes the entire "DUID-EN for OMNI"
          in a DHCPv6 message per <xref target="RFC8415"/>.</t>
        </section>

        <section anchor="sub9" title="Authentication">
          <t>The Authentication sub-option includes a Hashed Message
          Authentication Code (HMAC) computed according to <xref
          target="RFC2104"/> and <xref target="RFC6234"/>.</t>

          <t>The Authentication sub-option is formatted as shown in <xref
          target="omni-hmac"/>:</t>

          <t><figure anchor="omni-hmac" title="Authentication">
              <artwork><![CDATA[                     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                     | S-Type=3|    Sub-length=N     |      Type     |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                                                               |
     ~          Hashed Message Authentication Code (HMAC)            ~
     |                                                               |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
            </figure><list style="symbols">
              <t>Sub-Type is set to 3. The Authentication sub-option must
              appear at most once in any IPv6 ND message; if multiple
              instances appear in OMNI options of the same message
              the first is processed and all others are ignored.</t>

              <t>Sub-Length is set to N, i.e., the length of the option in
              octets beginning immediately following the Sub-Length field and
              extending to the end of the HMAC. The length of the HMAC is
              therefore limited by the remaining available space for this
              sub-option.</t>

              <t>Type encodes the authentication algorithm type found in the
              IANA "ICMPv6 Parameters - Trust Anchor Option (Type 15) Name
              Field" registry, and determines the length of the HMAC. For
              example, when Type is 3 the authentication algorithm is SHA-1
              and the HMAC is 160 bits (20 octets) in length, when Type is 5
              the algorithm is SHA-256 and the HMAC is 256 bits (32 octets)
              in length, etc. A full list of available Types is found in the
              registry, which cites <xref target="RFC6495"/> for several
              well-known Types.</t>

              <t>HMAC includes the Hashed Message Authentication Code for this
              IPv6 ND message with field length determined by Type. </t>
            </list></t>
        </section>

        <section anchor="sub15.1" title="Window Synchronization">
          <t>IPv6 ND messages used for window synchronization between Clients
          and Proxy/Servers include a Window Synchronization sub-option.</t>

          <t>The Window Synchronization sub-option is formatted as follows:</t>

          <t><figure anchor="wind-synch-parm" title="Window Synchronization">
              <artwork><![CDATA[                                     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                                     | S-Type=4|    Sub-length=12    |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     ~                        Sequence Number                        ~
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     ~                     Acknowledgment Number                     ~
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |R|R|O|A|R|R|S|R|                                               |
     |E|E|P|C|E|S|Y|E|                   Window                      |
     |S|S|T|K|S|T|N|S|                                               |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
            </figure><list style="symbols">
              <t>Sub-Type is set to 4. If instances appear in OMNI options
              of the same message, the first is processed and all others
              are ignored.</t>

              <t>Sub-Length is set to 12.</t>

              <t>Sub-Option Data is modeled from the Transmission Control
              Protocol (TCP) header specified in Section 3.1 of <xref target=
              "RFC9293"/>. The field is formatted as an 8-octet Sequence
              Number, followed by an 8-octet Acknowledgement Number, followed
              by a 1-octet flags field followed by a 3-octet Window size. The TCP
              (ACK, RST, SYN) flags are used for TCP-like window synchronization,
              while the TCP (CWR, ECE, URG, PSH, FIN) flags are unused. The OPT
              flag (discussed in <xref target="oal7.9"/>) is an OMNI-specific
              replacement for the TCP URG flag, and the four remaining unused
              flags appear as reserved (RES). Together, these fields support
              the OAL window synchronization services specified in
              <xref target="oal7.9"/>.</t>
            </list></t>
        </section>

        <section anchor="sub15.77" title="Neighbor Control">
          <t>IPv6 ND messages that need to assert/request an MNP prefix
          length or assert neighbor control flags can include a simple
          Neighbor Control sub-option instead of a full DHCPv6 message
          and/or other large sub-options. The Neighbor Control sub-option
          is formatted as follows:<figure anchor="preflen-sub" title="Neighbor Control">
              <artwork><![CDATA[     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |         |                     |               |N|A|R|S|       |
     | S-Type=5|    Sub-length=N     |    Preflen    |U|R|P|N| Resv1 |
     |         |                     |               |D|R|T|R|       |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |               |               |               |
     |   Reserved2   |   Reserved3   |   Reserved4   |
     |               |               |               |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
            </figure><list style="symbols">
              <t>Sub-Type is set to 5. If multiple instances appear in
              OMNI options of the same message, the first is processed
              and all others are ignored.</t>

              <t>Sub-Length is set to a value N between 1 and 5; if any other
              value appears the sub-option is ignored. The Sub-Length value
              determines the number of Preflen/flag bit fields that follow.</t>

              <t>Preflen is an 1-octet field that determines the length of
              a subject MNP. Values 1 through 64 specify a valid MNP
              length; any other value that appears must be ignored. Nodes
              should only accept Preflen values in authentic IPv6 ND messages
              received through trusted neighbors, since untrusted neighbors
              may assert Preflen values they are not authorized to use. Preflen
              is interpreted according to the specific IPv6 ND message type
              as follows:<list style="symbols">
              <t>For RS messages, when the source address contains an MNP
              Preflen refers to the RS source address; otherwise it
              determines the MNP delegation length the Client wishes to
              receive from the service.</t>

              <t>For RA messages, Preflen refers to the MNP found in the
              RA destination address.</t>

              <t>For NS messages, Preflen refers to the MNP found in the
              NS source address.</t>

              <t>For NA messages, Preflen refers to the MNP found in the
              Target Address field within the NA message body.</t>

              <t>For Redirect messages, Preflen refers to the MNP
              found in the Destination Address field within the Redirect
              message body.</t>
              </list></t>

              <t>For Sub-length values larger than 1, a first octet containing
              neighbor control flags plus up to 3 additional octets follow.
              Clients set the Neighbor Unreachability Detection (NUD), Address
              Resolution Responder (ARR) and Report (RPT) flags in RS messages
              to control the operation of their Proxy/Server neighbors as
              discussed in <xref target="aeropd"/>. Nodes set the Synchronous
              (u)NA Required (SNR) flag in non-solicitation IPv6 ND messages
              (i.e., solicited/unsolicited NA/RA and Redirects) for which they
              require a synchronous (but technically "unsolicited") NA reply
              (see: <xref target="I-D.templin-intarea-aero2"/>). The next 4
              bits following the neighbor control flags are (Reserved1)
              and up to 3 additional flag octets (Reserved2 - Reserved4)
              follow. Any included Reserved flags must be set to zero on
              transmission and ignored on reception (future specifications
              may define new values).</t>
              
            </list>Note that in the above Preflen applies only to the MNP
            itself. Any ULAs/XLAs that include the MNP in the interface
            identifier are represented in the forwarding and routing
            information as (64 + Preflen).</t>
        </section>

        <section anchor="sub4" title="Interface Attributes">
          <t>The Interface Attributes sub-option provides neighbors with
          forwarding information for the multilink conceptual sending
          algorithm discussed in <xref target="concept"/>. Neighbors use the
          forwarding information to selecting among potentially multiple
          candidate underlay interfaces that can be used to forward carrier
          packets to the neighbor based on factors such as traffic selectors
          and link metrics. Interface Attributes further include link layer
          address information to be used for either direct INET encapsulation
          for targets in the local SRT segment or spanning tree forwarding for
          targets in remote SRT segments.</t>

          <t>OMNI nodes include Interface Attributes for some/all of a source
          or target Client's underlay interfaces in NS/NA and uNA messages
          used to publish Client information (see: <xref target=
          "I-D.templin-intarea-aero2"/>). At most one Interface Attributes
          sub-option for each distinct ifIndex may be included; if an IPv6 ND
          message includes multiple Interface Attributes sub-options for the
          same ifIndex, the first is processed and all others are ignored.
          OMNI nodes that receive NS/NA messages can use all of the included
          Interface Attributes and/or Traffic Selectors to formulate a map of
          the prospective source or target node as well as to seed the
          information to be later populated in an AERO Forwarding Parameters
          sub-option (see: <xref target="sub15"/>).</t>

          <t>OMNI Clients and Proxy/Servers also include Interface Attributes
          sub-options in RS/RA messages used to initialize, discover and
          populate routing and addressing information. Each RS message MUST
          contain exactly one Interface Attributes sub-option with an ifIndex
          corresponding to the Client's underlay interface used to transmit
          the message, and each RA message MUST echo the same Interface
          Attributes sub-option with any (proxyed) information populated by
          the FHS Proxy/Server to provide operational context.</t>

          <t>When an FHS Proxy/Server receives an RS message destined to
          an anycast L2 address, it MUST include an additional Interface
          Attributes sub-option with ifIndex '0' that encodes its own
          unicast L2 address relative to the Client's underlay interface
          in the solicited RA response. Any additional Interface Attributes
          sub-options that appear in RS/RA messages (i.e., besides those
          for the Client's own ifIndex and ifIndex '0') are ignored.</t>

          <t>The Interface Attributes sub-option is formatted as shown
          below:<figure anchor="ifIndex-tuple2" title="Interface Attributes">
              <artwork><![CDATA[                                     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                                     | S-Type=6|    Sub-length=N     |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                            ifIndex                            |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                            ifType                             |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                            ifProvider                         |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                            ifMetric                           |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                            ifGroup                            |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |      SRT      |      FMT      |                               ~
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               ~
     ~                  LHS Proxy/Server ULA/L2ADDR                  ~
     |                                                               |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                                                               |
     ~                    Traffic Selector Blocks                    ~
     |                                                               |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     ...
]]></artwork>
            </figure><list style="symbols">
              <t>Sub-Type is set to 6. Multiple instances are processed as
              discussed above.</t>

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

              <t>Sub-Option Data contains an "Interface Attributes" option
              encoded as follows:<list style="symbols">
                  <t>ifIndex is a 4-octet index value corresponding to a
                  specific underlay interface. Client OMNI interfaces MUST
                  number each distinct underlay interface with a non-zero
                  ifIndex value assigned by network management per <xref
                  target="RFC2863"/> and include the value in this field. The
                  ifIndex value '0' denotes "unspecified".</t>

                  <t>ifType is a 4-octet type value corresponding to this
                  underlay interface. The value is coded per the
                  'IANAifType-MIB' registry [http://www.iana.org].</t>

                  <t>ifProvider is a 4-octet provider identifier corresponding
                  to this underlay interface. This document defines the single
                  provider identifier value '0' (undefined). Future documents
                  may define other values.</t>

                  <t>ifMetric encodes a 4-octet interface metric. Lower values
                  indicate higher priorities, and the highest value indicates
                  an interface that should not be selected. The ifMetric setting
                  provides an instantaneous indication of the interface bandwidth,
                  link quality, signal strength, cost, etc.; hence, its value
                  may change in successive IPv6 ND messages.</t>

                  <t>ifGroup is a 4-octet identifier for a Link Aggregation Group
                  (LAG) <xref target="IEEE802.1AX"/> corresponding to the underlay
                  interface identified by ifIndex. Interface attributes for ifIndex
                  members of the same group will encode the same value in ifGroup.
                  This document defines the single ifGroup value '0' meaning
                  "no group assigned". Future documents will specify the setting
                  of other values.</t>

                  <t>SRT is a 1-octet Segment Routing Topology prefix length
                  value between 0 and 128 that determines the prefix length
                  associated with the LHS ULA.</t>

                  <t>FMT - a 1-octet "Forward/Mode/Type" code interpreted as
                  follows:<list style="symbols">
                      <t>The most significant two bits (i.e., "FMT-Forward"
                      and "FMT-Mode") are interpreted in conjunction with one
                      another. When FMT-Forward is clear, the LHS Proxy/Server
                      performs OAL reassembly and decapsulation to obtain the
                      original IP packet/parcel before forwarding. If the
                      FMT-Mode bit is clear, the LHS Proxy/Server then
                      forwards the original IP packet/parcel at L3;
                      otherwise, it invokes the OAL to re-encapsulate,
                      re-fragment and sends the resulting carrier packets to
                      the Client via the selected underlay interface. When
                      FMT-Forward is set, the LHS Proxy/Server forwards
                      unsecured OAL fragments to the Client without
                      reassembling, while reassembling secured OAL fragments
                      before re-fragmenting and forwarding to the Client. If
                      FMT-Mode is clear, all carrier packets destined to the
                      Client must always be sent via the LHS Proxy/Server;
                      otherwise the Client is eligible for direct forwarding
                      over the open INET where it may be located behind one or
                      more NATs.</t>

                      <t>The value encoded in the least significant 6 bits
                      (i.e., "FMT-Type") determines the type and length of the
                      L2ADDR field. The following values are currently defined:
                      <list style="symbols">
                          <t>0 - L2ADDR is 4 octets in length and encodes an
                          IPv4 address.</t>

                          <t>1 - L2ADDR is 16 octets in length and encodes an
                          IPv6 address.</t>

                          <t>2 - L2ADDR is 6 octets in length and encodes an
                          EUI-48 address <xref target="EUI"/>.</t>

                          <t>3 - L2ADDR is 8 octets in length and encodes an
                          EUI-64 address <xref target="EUI"/>.</t>
                        </list></t>
                    </list></t>

                  <t>LHS Proxy/Server ULA/L2ADDR - encodes the 15 least
                  significant octets of the Proxy/Server ULA followed by the
                  L2ADDR field formatted as above (note that the FMT code is
                  replaced with the value "fd" after processing to form a
                  proper 16-octet ULA). When SRT and ULA are both set to 0,
                  the LHS Proxy/Server is considered unspecified in this IPv6
                  ND message. FMT, SRT and LHS together provide guidance for
                  the OMNI interface forwarding algorithm. Specifically, if
                  LHS::/SRT is located in the local OMNI link segment, then
                  the source can address the target Client either through its
                  dependent Proxy/Server or through direct encapsulation
                  following NAT traversal according to FMT. Otherwise, the
                  target Client is located on a different SRT segment and the
                  path from the source must employ a combination of route
                  optimization and spanning tree hop traversals. L2ADDR
                  identifies the LHS Proxy/Server's INET-facing interface not
                  located behind NATs, therefore no UDP port number is
                  included since port number 8060 is used when the L2
                  encapsulation includes a UDP header. Instead, L2ADDR
                  includes only an L2 address with type and length determined
                  by FMT-Type as described above. When L2ADDR includes an IPv4
                  or IPv6 address, it is recorded in network byte order in
                  ones-compliment "obfuscated" form per <xref target="RFC4380"/>.</t>

                  <t>Traffic Selector Blocks(s) - zero or
                  more Traffic Selector blocks follow, with their total length
                  determined by the number of octets remaining in the Interface
                  Attributes sub-option beyond the end of the LHS Proxy/Server
                  information. Each Traffic Selector block is formatted the same
                  as specified in <xref target="sub4.1"/> and processed
                  consecutively, with its length subtracted from the remaining
                  length of the Interface Attributes sub-option.</t>
                </list></t>
            </list></t>
        </section>

        <section anchor="sub4.1" title="Traffic Selector">
          <t>The Traffic Selector sub-option provides forwarding information
          for the multilink conceptual sending algorithm discussed in <xref
          target="concept"/>. The sub-option includes traffic selector
          information per <xref target="RFC6088"/> as ancillary information
          for an Interface Attributes sub-option with the same ifIndex value,
          or as discrete information for the included ifIndex when no
          Interface Attributes sub-option is present.</t>

          <t>IPv6 ND messages may include multiple Traffic Selectors for some
          or all of the source/target Client's underlay interfaces (see: <xref
          target="I-D.templin-intarea-aero2"/> for further discussion). Traffic
          Selectors must be honored by all implementations in the format shown
          below: <figure anchor="traffic-select" title="Traffic Selector">
              <artwork><![CDATA[                                     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                                     | S-Type=7|    Sub-length=N     |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                            ifIndex                            |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |   TS Length   |   TS Format   |A|B|C|D|E|F|G|H|I|J|K|L|M|N|RES|
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                 (A)Start Source Address                       |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                 (B)End Source Address                         |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                 (C)Start Destination Address                  |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                 (D)End Destination Address                    |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                     (E)Start IPsec SPI                        |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                      (F)End IPsec SPI                         |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |   (G)Start Source port        |   (H)End Source port          |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |   (I)Start Destination port   |   (J)End Destination port     |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |  (K)Start DS  |  (L)End DS    |(M)Start Prot. | (N) End Prot. |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                                                               |
     ~               Additional Traffic Selector Blocks              ~
     |                                                               |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     ...
]]></artwork>
            </figure><list style="symbols">
              <t>Sub-Type is set to 7. Multiple instances with the same or
              different ifIndex values may appear in the same IPv6 ND message.
              When multiple instances appear, all are processed and the
              cumulative information from all is accepted.</t>

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

              <t>Sub-Option data begins with a 4-octet ifIndex value corresponding
              to a specific underlay interface.</t>

              <t>The remainder of Sub-Option Data contains one or more "Traffic
              Selector" blocks for this ifIndex that each begin with 1-octet
              "TS Length" and "TS Format" fields. TS length encodes the combined
              lengths of the TS* fields plus the Traffic Selector body that
              follows (i.e. a value between 2-255 octets). When TS Format encodes
              the value 1 or 2, the Traffic Selector body encodes an IPv4 or IPv6
              traffic selector per <xref target="RFC6088"/> beginning with 16
              flag bits ("A-N" plus 2 "Reserved"); when TS Format encodes any
              other value the Traffic Selector block is skipped and processing
              resumes beginning with the next Traffic Selector block (if any).
              The Traffic Selector block elements then appear immediately after
              the flags (with no 16-bit Reserved field included) and encode the
              information corresponding to any set flag bit(s) in order the same
              as specified in <xref target="RFC6088"/>. Each included Traffic
              Selector block is processed consecutively, with its length
              subtracted from the remaining sub-option length until all blocks
              are processed. If the length of any Traffic Selector block would
              exceed the remaining length for the entire sub-option, the
              remainder of the sub-option is ignored.</t>
            </list></t>
        </section>

        <section anchor="sub15" title="AERO Forwarding Parameters">
          <t>OMNI nodes include the AERO Forwarding Parameters sub-option in
          NS/NA messages used to coordinate with multilink route optimization
          targets. If an NS/NA message includes the sub-option in a manner
          that solicits a response, the NA response must also include the
          sub-option. Each NS/NA message may contain at most one AERO
          Forwarding Parameters sub-option; if an NS/NA message contains
          additional AERO Forwarding Parameters sub-options, the first
          is processed and all others are ignored.</t>

          <t>When an NS/NA message includes an AERO Forwarding Parameters
          sub-option with Job code '00' (see below), the FHS Client Interface
          Attributes MUST correspond to the underlay interface used to
          transmit the solicitation message. When the NS/NA message also
          includes Interface Attributes sub-options and/or Traffic Selectors,
          the options must appear following the AERO Forwarding Parameters
          sub-option.</t>

          <t>The AERO Forwarding Parameters sub-option includes the necessary
          state for establishing AERO Forwarding Vectors (AFVs) in
          the AERO Forwarding Information Bases (AFIBs) of the OAL
          source, destination and intermediate systems in the path. The sub-option
          also records addressing information for FHS/LHS nodes on the path,
          including "L2ADDRs" which MUST be unicast encapsulation addresses
          (i.e., and not anycast/multicast). The manner for populating multilink
          forwarding information is specified in detail in <xref
          target="I-D.templin-intarea-aero2"/>.</t>

          <t>The AERO Forwarding Parameters sub-option is formatted as shown
          in <xref target="mfwd"/>:</t>

          <t><figure anchor="mfwd" title="AERO Forwarding Parameters">
              <artwork><![CDATA[                     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                     | S-Type=8|    Sub-length=N     |  A  |  B  |Job|
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                                                               |
     ~           AERO Forwarding Vector Index (AFVI) List            ~
     ~                (5 consecutive 4-octet AFVIs)                  ~
     |                                                               |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                       FHS Client ifIndex                      |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                                                               |
     ~                FHS Proxy/Server FMT/ULA/L2ADDR                ~
     ~                  FHS Gateway FMT/ULA/L2ADDR                   ~
     |                                                               |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                       LHS Client ifIndex                      |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                                                               |
     ~                LHS Proxy/Server FMT/ULA/L2ADDR                ~
     ~                   LHS Gateway FMT/ULA/L2ADDR                  ~
     |                                                               |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
            </figure><list style="symbols">
              <t>Sub-Type is set to 8. If multiple instances appear in OMNI
              options of the same message the first instance is processed
              and all others are ignored.</t>

              <t>Sub-Length encodes the number of Sub-Option Data octets that
              follow. The length includes all fields up to and including the
              AFVI List for all Job codes, while including the remaining
              FHS/LHS fields only for Job codes "0" and "1" (see below).</t>

              <t>Sub-Option Data contains AERO Forwarding Parameters as
              follows:<list style="symbols">

                  <t>A/B and Job are fields that determine per-hop processing
                  of the AFVI List, where A is a 3-bit count of the number of
                  "A" AFVI List entries and B is a 3-bit count of the number
                  of "B" AFVI List entries (valid A/B values are 0-5). Job is
                  a 2-bit code interpreted as follows:<list style="symbols">
                      <t>'00' - "Initialize; Build B" - the FHS source sets
                      this code in an NS/NA used to initialize AFV state.
                      The FHS source first sets A/B to 0, and the FHS source
                      and each intermediate system along the path to the LHS
                      destination that processes the message creates a new
                      AFV. Each node that processes the message then assigns a
                      unique 4-octet "B" AFVI to the AFV, writes the value into
                      list entry B, then finally increments B. When the
                      message arrives at the LHS destination, B will contain
                      the number of AFVI List "B" entries, with the FHS source
                      entry first, followed by entries for each consecutive
                      intermediate system and ending with an entry for the final
                      intermediate system (i.e., the list is populated in the
                      forward direction). An NS/NA message containing a Job
                      Code '00' AERO Forwarding Parameters sub-option always
                      solicits a responsive NA message containing Job Code
                      '01'.</t>

                      <t>'01' - "Follow B; Build A" - the LHS source sets this
                      code in a solicited NA response to an NS/NA with Job
                      code "0". The LHS source first copies the AFVI List
                      and B value from the code '00' solicitation into these
                      fields and sets A to 0. The LHS source and each
                      intermediate system along the path to the FHS destination
                      that processes the message then uses AFVI List entry B
                      to locate the corresponding AFV. Each node that
                      processes the message then assigns a unique 4-octet "A"
                      AFVI to the AFV, writes the value into list entry B,
                      then finally increments A and decrements B. When the
                      message arrives at the FHS destination, A will contain
                      the number of AFVI List "A" entries, with the LHS source
                      entry last, preceded by entries for each consecutive
                      intermediate system and beginning with an entry for the
                      final intermediate system (i.e., the list is populated in
                      the reverse direction).</t>

                      <t>'10' - "Follow A; Record B" - the FHS node that sent
                      the original code '00' solicitation and received the
                      corresponding code '01' advertisement sets this code in
                      any subsequent NS/NA messages sent to the same LHS
                      destination. The FHS source copies the AFVI List and A
                      value from the code '01' advertisement into these fields
                      and sets B to 0. The FHS source and each intermediate
                      system along the path to the LHS destination that
                      processes the message then uses the "A" AFVI found at
                      list entry B to locate the corresponding AFV. Each node
                      that processes the message then writes the AFV's "B"
                      AFVI into list entry B, then decrements A and increments
                      B. When the message arrives at the LHS destination, B
                      will contain the number of AFVI List "B" entries
                      populated in the forward direction.</t>

                      <t>'11' - "Follow B; Record A" - the LHS node that
                      received the original code '00' solicitation and sent
                      the corresponding code '01' advertisement sets this code
                      in any subsequent NS/NA messages sent to the same FHS
                      destination. The LHS source copies the AFVI List and B
                      values from the code '00' solicitation into these fields
                      and sets A to 0. The LHS source and each intermediate
                      system along the path to the FHS destination that
                      processes the message then uses the "B" AFVI List entry
                      found at list entry B to locate the corresponding AFV.
                      Each node that processes the message then writes the
                      AFV's "A" AFVI into list entry B, then increments A and
                      decrements B. When the message arrives at the FHS
                      destination, A will contain the number of AFVI List "A"
                      entries populated in the reverse direction.</t>
                    </list>Job and A/B together determine the per-hop behavior
                  at each FHS/LHS source, intermediate system and destination
                  that processes an IPv6 ND message. When a Job code specifies
                  "Initialize", each FHS/LHS node that processes the message
                  creates a new AFV. When a Job code specifies "Build", each
                  node that processes the message assigns a new AFVI. When a
                  Job code specifies "Follow", each node that processes the
                  message uses an A/B AFVI List entry to locate an AFV (if the
                  AFV cannot be located, the node returns a parameter problem
                  and drops the message). Using this algorithm, FHS sources
                  that send code '00' solicitations and receive code '01'
                  advertisements discover only "A" information, while LHS
                  sources that receive code '00' solicitations and return code
                  '01' advertisements discover only "B" information. FHS/LHS
                  intermediate systems can instead examine A, B and the AFVI
                  List to determine the number of previous hops, the number of
                  remaining hops, and the A/B AFVIs associated with the
                  previous/remaining hops. However, no intermediate systems will
                  discover inappropriate A/B AFVIs for their location in the
                  multihop forwarding chain. See: <xref
                  target="I-D.templin-intarea-aero2"/> for further discussion on
                  A/B AFVI processing.</t>

                  <t>AERO Forwarding Vector Index (AFVI) List is a 20-octet
                  block that contains 5 consecutive 4-octet AFVI entries. The
                  FHS/LHS source and each intermediate system on the path to the
                  destination processes the list according to the Job and A/B
                  codes (see above). Note that the reason the AFVI list
                  contains at most 5 entries is that only the FHS (Client,
                  Proxy/Server, Gateway) and LHS (Client, Proxy/Server,
                  Gateway) nodes are eligible for OMNI link route optimization
                  resulting in at most 5 AFVIs "hops" that must be exposed.
                  All other OMNI link nodes (i.e., downstream Clients that
                  connect via an FHS/LHS Client) must forward through their
                  upstream-dependent OMNI link neighbors without applying OMNI
                  link route optimization.</t>

                  <t>For Job codes '00' and '01' only, trailing state variable
                  blocks are included for First-Hop Segment (FHS) followed by
                  Last-Hop Segment (LHS) network elements. When present, the
                  FHS/LHS blocks encode the following information:<list
                      style="symbols">
                      <t>Client ifIndex encodes the 4-octet index for this
                      Client interface. The source sets the FHS/LHS ifIndex
                      values according to its own local interface information
                      and neighbor information discovered from earlier NS/NA
                      address resolution exchanges.</t>

                      <t>Proxy/Server FMT/ULA/L2ADDR encodes a 1-octet FMT
                      code immediately followed by the 15 least significant
                      octets of the Proxy/Server ULA, where FMT/ULA are
                      interpreted the same as defined for the Interface
                      Attribute sub-option in <xref target="sub4"/> but with
                      the FMT-Forward and FMT-Mode bits set to 0 and ignored.
                      FMT/ULA is then followed by a 16-octet L2ADDR that
                      identifies an open INET interface not located behind
                      NATs, therefore no UDP port number is included since
                      port number 8060 is used when the L2 encapsulation
                      includes a UDP header. Unlike the Interface Attribute
                      sub-option, L2ADDR is always exactly 16 octets in length
                      and interpreted according to FMT-Type with IPv4/EUI
                      addresses encoded as specified in <xref target=
                      "ipv6-compat"/>; this fixed size supports efficient
                      hop-by-hop sub-option processing without requiring
                      resizing to accommodate diverse L2ADDR types. When
                      L2ADDR includes an IPv4 or IPv6 address, it is encoded
                      in network byte order in ones-compliment "obfuscated"
                      form per <xref target="RFC4380"/>.</t>

                      <t>Gateway FMT/ULA/L2ADDR encodes a 1-octet FMT code
                      followed by the 15 least significant ULA octets followed
                      by a 16-octet L2ADDR exactly as for the Proxy/Server
                      FMT/ULA/L2ADDR above.</t>
                    </list></t>
                </list></t>
            </list></t>
        </section>

        <section anchor="sub7" title="Geo Coordinates">
          <t><figure anchor="geo-opt" title="Geo Coordinates">
              <artwork><![CDATA[                     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                     | S-Type=9|     Sub-length=N    |    Geo Type   | 
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                                                               |
     ~                        Geo Coordinates                        ~
     |                                                               |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
            </figure><list style="symbols">
              <t>Sub-Type is set to 9. If multiple instances appear in OMNI
              options of the same message all are processed.</t>

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

              <t>Geo Type is a 1-octet field that encodes a type designator
              that determines the format and contents of the Geo Coordinates
              field that follows. The following types are currently
              defined:<list style="symbols">
                  <t>0 - NULL, i.e., the Geo Coordinates field is
                  zero-length.</t>
                </list></t>

              <t>Geo Coordinates is a type-specific format field of length
              up to the remaining available space for this OMNI option. New
              formats to be specified in future documents and may include
              attributes such as latitude/longitude, altitude, heading,
              speed, etc.</t>
            </list></t>
        </section>

        <section anchor="sub8"
                 title="Dynamic Host Configuration Protocol for IPv6 (DHCPv6) Message">
          <t>The Dynamic Host Configuration Protocol for IPv6 (DHCPv6)
          sub-option may be included in the OMNI options of Client RS messages
          and Proxy/Server RA messages.</t>

          <t>FHS Proxy/Servers that forward RS/RA messages between a Client
          and an LHS Proxy/Server also forward DHCPv6 sub-options unchanged.
          Note that OMNI DHCPv6 messages do not include a Checksum field since
          integrity is protected by the IPv6 ND message checksum, authentication
          signature and/or link or physical layer authentication and integrity
          checks.
          <figure anchor="d-dhcpv6"
              title="DHCPv6 Message">
              <artwork><![CDATA[                                     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                                     |S-Type=10|    Sub-length=N     | 
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |    msg-type   |               transaction-id                  |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                                                               |
     ~                        DHCPv6 options                         ~
     ~                 (variable number and length)                  ~
     |                                                               |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
            </figure><list style="symbols">
              <t>Sub-Type is set to 10. If multiple instances appear in OMNI
              options of the same message the first is processed and all others
              are ignored.</t>

              <t>Sub-Length is set to N that encodes the number of Sub-Option
              Data octets that follow. The 'msg-type' and 'transaction-id'
              fields are always present; hence, the length of the DHCPv6
              options is limited by the remaining available space for this
              OMNI option.</t>

              <t>'msg-type' and 'transaction-id' are coded according to
              Section 8 of <xref target="RFC8415"/>.</t>

              <t>A set of DHCPv6 options coded according to Section 21 of
              <xref target="RFC8415"/> follows.</t>
            </list></t>
        </section>

        <section anchor="sub93" title="PIM-SM Message">
          <t>The Protocol Independent Multicast - Sparse Mode (PIM-SM) Message
          sub-option may be included in the OMNI options of IPv6 ND messages.
          PIM-SM messages are formatted as specified in Section 4.9 of <xref
          target="RFC7761"/>, with the exception that the Checksum field is
          omitted since the IPv6 ND message is already protected by the IPv6
          ND message checksum, authentication signature and/or link or
          physical layer authentication and integrity checks.</t>


          <t>The PIM-SM message sub-option format is shown in
          <xref target="pim-opt"/>:</t>

          <t><figure anchor="pim-opt" title="PIM-SM Message Option Format">
              <artwork><![CDATA[     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |S-Type=11|    Sub-length=N     |PIM Ver| Type  |   Reserved    |  
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                                                               |
     ~                         PIM-SM Message                        ~
     |                                                               |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
            </figure><list style="symbols">
              <t>Sub-Type is set to 11. If multiple instances appear in OMNI
              options of the same message all are processed.</t>

              <t>Sub-Length is set to N, i.e., the length of the option in
              octets beginning immediately following the Sub-Length field and
              extending to the end of the PIM-SM message. The length of the
              entire PIM-SM message is therefore limited by the remaining
              available space for this OMNI option.</t>

              <t>The PIM-SM message is coded exactly as specified in Section
              4.9 of <xref target="RFC7761"/>, except that the Checksum field
              is omitted, and the Reserved field is set to 0 on transmission and
              ignored on reception. The "PIM Ver" field encodes the value
              2, and the "Type" field encodes the PIM message type. (See
              Section 4.9 of <xref target="RFC7761"/> for a list of PIM-SM
              message types and formats.)</t>
            </list></t>
        </section>

        <section anchor="sub97" title="Host Identity Protocol (HIP) Message">
          <t>The Host Identity Protocol (HIP) Message sub-option (when
          present) provides an authentication service alternative for IPv6 ND
          messages exchanged between Clients and FHS Proxy/Servers (or between
          Clients and their peers) over an open Internetwork. When the HIP
          service is used, FHS Proxy/Servers verify the HIP authentication
          signatures in source Client IPv6 ND messages then remove the HIP message
          sub-option and securely forward the ND messages to other OMNI nodes.
          LHS Proxy/Servers that receive secured IPv6 ND messages from other OMNI
          nodes that do not already include a security sub-option can insert HIP
          authentication signatures before forwarding them to the target Client.</t>

          <t>OMNI interfaces that use the HIP service include the HIP message
          sub-option when they forward IPv6 ND messages that require security
          over INET underlay interfaces, i.e., where authentication and integrity
          is not already assured by link/physical layers or other OMNI layer
          services. The OMNI interface calculates the authentication signature
          over the entire length of the OAL packet (or super-packet) beginning
          after the IPv6 ND message header and extending over the remainder of
          the OAL packet or super-packet. OMNI interfaces that process OAL
          packets containing secured IPv6 ND messages verify the signature
          then either process the rest of the message locally or forward a
          proxyed copy to the next hop.</t>

          <t>When an FHS Client inserts a HIP message sub-option in an IPv6 ND
          message destined to a target in a remote spanning tree segment, it
          must ensure that the insertion does not cause the message to exceed
          the OMNI interface MTU. If the LHS Proxy/Server cannot create
          sufficient space through any means without causing the OMNI option
          to exceed 2040 octets or causing the IPv6 ND message to exceed the
          OMNI interface MTU, it returns a suitable error (see: <xref
          target="sub12"/>) and drops the message.</t>

          <t>The HIP message sub-option is formatted as shown below:</t>

          <t><figure anchor="hip-opt" title="HIP Message">
              <artwork><![CDATA[                                     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                                     |S-Type=12|    Sub-length=N     |   
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |0| Packet Type |Version| RES.|1|           Controls            |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                                                               |
     ~                Sender's Host Identity Tag (HIT)               ~
     |                                                               |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                                                               |
     ~               Receiver's Host Identity Tag (HIT)              ~
     |                                                               |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                                                               |
     ~                        HIP Parameters                         ~
     |                                                               |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
            </figure><list style="symbols">
              <t>Sub-Type is set to 12. If multiple instances appear in OMNI
              options of the same message the first is processed and all
              others are ignored.</t>

              <t>Sub-Length is set to N, i.e., the length of the option in
              octets beginning immediately following the Sub-Length field and
              extending to the end of the HIP parameters. The length of the
              entire HIP message is therefore limited by the remaining
              available space for this OMNI option.</t>

              <t>The HIP message is coded per Section 5 of <xref
              target="RFC7401"/>, except that the OMNI "Sub-Type" and
              "Sub-Length" fields replace the first 2 octets of the HIP
              message header (i.e., the Next Header and Header Length fields).
              Also, since the IPv6 ND message is already protected by its own
              checksum, the 2-octet HIP message Checksum field is omitted.</t>
            </list>Note: In some environments, maintenance of a Host Identity
          Tag (HIT) namespace may be unnecessary for securely associating an
          OMNI node with an IPv6 address-based identity. In that case, IPv6
          ULAs can be used instead of HITs in the authentication signature as
          long as the address can be uniquely associated with the
          Sender/Receiver.</t>
        </section>

        <section anchor="sub13" title="QUIC-TLS Message">
          <t><figure anchor="quic-tls" title="QUIC-TLS Message">
              <artwork><![CDATA[                                     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                                     |S-Type=13|     Sub-length=N    |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                                                               |
     ~                         QUIC-TLS Message                      ~
     |                                                               |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
            </figure><list style="symbols">
              <t>Sub-Type is set to 13. If multiple instances appear in OMNI
              options of the same IPv6 ND message, the first is processed and
              all others are ignored.</t>

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

              <t>The QUIC-TLS message <xref target="RFC9000"/><xref
              target="RFC9001"/><xref target="RFC9002"/> encodes the QUIC and
              TLS message parameters necessary to support QUIC connection
              establishment.</t>
            </list>IPv6 ND messages serve as couriers to transport the QUIC
          and TLS parameters necessary to establish a secured QUIC connection.</t>
        </section>

        <section anchor="sub9.5" title="Fragmentation Report (FRAGREP)">
          <t>Fragmentation Report (FRAGREP) sub-options may be included in the
          OMNI options of uNA messages sent from an OAL destination to an OAL
          source. The message consists of (N/16)-many (Identification,
          Bitmap)-tuples which include the Identification values of OAL
          fragments received plus a Bitmap marking the ordinal positions
          of individual non-first fragments received and missing.</t>

          <t><figure anchor="fragmentation-report"
              title="Fragmentation Report (FRAGREP)">
              <artwork><![CDATA[                                     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                                     |S-Type=14|    Sub-Length=N     |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                                                               |
     +-+-+-+-          Identification (0) (64 bits)           -+-+-+-+
     |                                                               |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                                                               |
     +-+-+-+-              Bitmap (0) (64 bits)               -+-+-+-+
     |                                                               |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                                                               |
     +-+-+-+-          Identification (1) (64 bits)           -+-+-+-+
     |                                                               |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                                                               |
     +-+-+-+-              Bitmap (1) (64 bits)               -+-+-+-+
     |                                                               |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                           ...                                 |
]]></artwork>
            </figure><list style="symbols">
              <t>Sub-Type is set to 14. If multiple instances appear in OMNI
              options of the same message all are processed.</t>

              <t>Sub-Length is set to N which must be a multiple of 16, i.e.,
              the combined lengths of each (Identification, Bitmap) pair
              beginning immediately following the Sub-Length field and
              extending to the end of the sub-option.</t>

              <t>Identification(i) includes the 8-octet Identification
              value found in a received OAL fragment.</t>

              <t>Bitmap(i) includes a 64-bit checklist of up to 64 ordinal
              fragments for this Identification, with each bit set to 1 for
              a fragment received or 0 for a fragment corrupted, lost or
              still in transit. For example, for a 20-fragment OAL packet
              with ordinal fragments #3, #10, #13 and #17 missing or corrupted
              and all other fragments received or still in transit, Bitmap(i)
              encodes the following:<figure anchor="frag-bitmap" title="">
                  <artwork><![CDATA[     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
     |1|1|1|0|1|1|1|1|1|1|0|1|1|0|1|1|1|0|1|1|0|0|0|...
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-]]></artwork></figure></t>
            </list></t>
        </section>

        <section anchor="sub12" title="ICMPv6 Error ">
          <t><figure anchor="icmpv6-err" title="ICMPv6 Error">
              <artwork><![CDATA[
                                     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                                     |S-Type=15|     Sub-length=N    |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |    Type      |     Code      |           Checksum             |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                                                               |
     ~                    ICMPv6 Error Message Body                  ~
     |                                                               |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
            </figure><list style="symbols">
              <t>Sub-Type is set to 15. If multiple instances appear in OMNI
              options of the same IPv6 ND message all are processed.</t>

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

              <t>Sub-Option Data includes an N-octet ICMPv6 Error Message
              body encoded exactly as per Section 2.1 of <xref target="RFC4443"/>,
              i.e., with the IPv6 header omitted. OMNI interfaces include as
              much of the "packet in error" in the ICMPv6 error message body
              as possible without causing the IPv6 ND message that includes
              the OMNI option to exceed the IPv6 minimum MTU. While all ICMPv6
              error message types are supported, OAL destinations in particular
              often include ICMPv6 PTB messages in uNA messages to provide MTU
              feedback information via the OAL source (see: <xref target="oal3"/>).
              Note: ICMPv6 informational messages must not be included and must
              be ignored if received.</t>
            </list></t>
        </section>

        <section anchor="sub14" title="Proxy/Server Departure">
          <t>OMNI Clients include a Proxy/Server Departure sub-option in RS
          messages when they associate with a new FHS and/or Hub Proxy/Server
          and need to send a departure indication to an old FHS and/or Hub
          Proxy/Server. The Proxy/Server Departure sub-option is formatted as
          shown below:<figure anchor="depart-suboption"
              title="Proxy/Server Departure">
              <artwork><![CDATA[                                     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                                     |S-Type=16|   Sub-length=32     |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                                                               |
     ~                Old FHS Proxy/Server ULA (16 octets)           ~
     |                                                               |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                                                               |
     ~                Old Hub Proxy/Server ULA (16 octets)           ~
     |                                                               |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

]]></artwork>
            </figure><list style="symbols">
              <t>Sub-Type is set to 16. If multiple instances appear in
              OMNI options of the same message, the first is processed
              and all others are ignored.</t>

              <t>Sub-Length is set to 32.</t>

              <t>Sub-Option Data contains the 16-octet ULA for the "Old FHS
              Proxy/Server" followed by a 16-octet ULA for an "Old Hub
              Proxy/Server. (If the Old FHS/Hub is a different node, the
              corresponding ULA includes the address of the (foreign)
              Proxy/Server. If the Old FHS/Hub is the local node, the
              corresponding ULA includes the node's own address. If the
              FHS/Hub is unspecified, the corresponding ULA instead includes
              the value 0.)</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[                     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                     |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 that encodes the number of Sub-Option
              Data octets that follow. The Extension-Type field is always
              present, and the maximum Extension-Type Body length is limited
              by the remaining available space in this OMNI option.</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 and 1 are defined in the following
          subsections, while Extension-Type values 2 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 anchor="ext0" title="RFC4380 Header Extension Option">
            <t><figure anchor="header-extend"
                title="RFC4380 Header Extension Option (Extension-Type 0)">
                <artwork><![CDATA[     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |S-Type=30|      Sub-length=N   |   Ext-Type=0  |   Header Type |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                                                               |
     ~                      Header Option Value                      ~
     |                                                               |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
              </figure><list style="symbols">
                <t>Sub-Type is set to 30.</t>

                <t>Sub-Length is set to N that encodes the number of
                Sub-Option Data octets that follow. The Extension-Type and
                Header Type fields are always present, and the Header Option
                Value is limited by the remaining available space in this OMNI
                option.</t>

                <t>Extension-Type is set to 0. Each instance encodes exactly
                one header option per Section 5.1.1 of <xref
                target="RFC4380"/>, with Ext-Type and Header Type representing
                the first 2 octets of the option. If multiple instances of
                the same Header Type appear in OMNI options of the same
                message the first instance is processed and all others are
                ignored.</t>

                <t>Header Type and Header Option Value are coded exactly as
                specified in Section 5.1.1 of <xref target="RFC4380"/>; the
                following types are currently defined:<list style="symbols">
                    <t>0 - Origin Indication (IPv4) - value coded as a UDP
                    port number followed by a 4-octet IPv4 address both in
                    "obfuscated" form per Section 5.1.1 of <xref
                    target="RFC4380"/>.</t>

                    <t>1 - Authentication Encapsulation - value coded per
                    Section 5.1.1 of <xref target="RFC4380"/>.</t>

                    <t>2 - Origin Indication (IPv6) - value coded as a UDP
                    port number followed by an IP address both in "obfuscated"
                    form per Section 5.1.1 of <xref target="RFC4380"/>, except
                    that the IP address is a 16-octet IPv6 address instead of
                    a 4-octet IPv4 address.</t>
                  </list></t>

                <t>Header Type values 3 through 252 are available for
                assignment by future specifications, which must also define
                the format of the Header Option Value and its processing
                rules. Header Type values 253 and 254 are reserved for
                experimentation, as recommended in <xref target="RFC3692"/>,
                and value 255 is reserved by IANA.</t>
              </list></t>
          </section>

          <section anchor="ext1" title="RFC6081 Trailer Extension Option">
            <t><figure anchor="origin-ind"
                title="RFC6081 Trailer Extension Option (Extension-Type 1)">
                <artwork><![CDATA[     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |S-Type=30|      Sub-length=N   |   Ext-Type=1  |  Trailer Type |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                                                               |
     ~                     Trailer Option Value                      ~
     |                                                               |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
              </figure><list style="symbols">
                <t>Sub-Type is set to 30.</t>

                <t>Sub-Length is set to N that encodes the number of
                Sub-Option Data octets that follow. The Extension-Type and
                Trailer Type fields are always present, and the maximum-length
                Trailer Option Value is limited by the remaining available
                space in this OMNI option.</t>

                <t>Extension-Type is set to 1. Each instance encodes exactly
                one trailer option per Section 4 of <xref target="RFC6081"/>.
                If multiple instances of the same Trailer Type appear in OMNI
                options of the same message the first instance is processed
                and all others ignored.</t>

                <t>Trailer Type and Trailer Option Value are coded exactly as
                specified in Section 4 of <xref target="RFC6081"/>; the
                following Trailer Types are currently defined:<list
                    style="symbols">
                    <t>0 - Unassigned</t>

                    <t>1 - Nonce Trailer - value coded per Section 4.2 of
                    <xref target="RFC6081"/>.</t>

                    <t>2 - Unassigned</t>

                    <t>3 - Alternate Address Trailer (IPv4) - value coded per
                    Section 4.3 of <xref target="RFC6081"/>.</t>

                    <t>4 - Neighbor Discovery Option Trailer - value coded per
                    Section 4.4 of <xref target="RFC6081"/>.</t>

                    <t>5 - Random Port Trailer - value coded per Section 4.5
                    of <xref target="RFC6081"/>.</t>

                    <t>6 - Alternate Address Trailer (IPv6) - value coded per
                    Section 4.3 of <xref target="RFC6081"/>, except that each
                    address is a 16-octet IPv6 address instead of a 4-octet
                    IPv4 address.</t>
                  </list></t>

                <t>Trailer Type values 7 through 252 are available for
                assignment by future specifications, which must also define
                the format of the Trailer Option Value and its processing
                rules. Trailer Type values 253 and 254 are reserved for
                experimentation, as recommended in <xref target="RFC3692"/>,
                and value 255 is reserved by IANA.</t>
              </list></t>
          </section>
        </section>
      </section>
    </section>

    <section anchor="mcast" title="Address Mapping - Multicast">
      <t>The multicast address mapping of the native underlay interface
      applies. The Client mobile router also serves as an IGMP/MLD Proxy for
      its ENETs and/or hosted applications per <xref target="RFC4605"/>.</t>

      <t>The Client uses Multicast Listener Discovery (MLDv2) <xref
      target="RFC3810"/> to coordinate with Proxy/Servers, and underlay
      network elements use MLD snooping <xref target="RFC4541"/>. The Client
      can also employ multicast routing protocols to coordinate with
      network-based multicast sources as specified in <xref
      target="I-D.templin-intarea-aero2"/>.</t>

      <t>Since the OMNI link model is NBMA, OMNI links support link-scoped
      multicast through iterative unicast transmissions to individual
      multicast group members (i.e., unicast/multicast emulation).</t>
    </section>

    <section anchor="concept" title="Multilink Conceptual Sending Algorithm">
      <t>The Client's network layer selects the outbound OMNI interface according
      to SBM considerations when forwarding original IP packets/parcels from
      local or ENET applications to external correspondents. Each OMNI
      interface maintains an internal OAL neighbor cache maintained the same
      as discussed in <xref target="RFC4861"/>, but also includes additional
      state for multilink coordination. Each Client OMNI interface maintains
      default routes via Proxy/Servers discovered as discussed in <xref
      target="aeropd"/>, and may configure more-specific routes discovered
      through means outside the scope of this specification.</t>

      <t>For each original IP packet/parcel it forwards, the OMNI interface
      selects one or more source underlay interfaces based on PBM factors
      (e.g., traffic attributes, cost, performance, message size, etc.) and
      one or more target underlay interfaces for the neighbor based on
      Interface Attributes received in IPv6 ND messages (see: <xref
      target="sub4"/>). Multilink forwarding may also direct carrier packet
      replication across multiple underlay interface pairs for increased
      reliability at the expense of duplication. The set of all Interface
      Attributes and Traffic Selectors received in IPv6 ND messages determines
      the multilink forwarding profile for selecting target underlay
      interfaces.</t>

      <t>When the OMNI interface forwards an original IP packet/parcel over a
      selected source underlay interface, it first employs OAL encapsulation
      and fragmentation as discussed in <xref target="intmtu"/>, then performs
      L2 encapsulation as directed by the appropriate AFV. The OMNI interface
      also performs L2 encapsulation (following OAL encapsulation) when the
      nearest Proxy/Server is located multiple hops away as discussed in <xref
      target="multihop"/>.</t>

      <t>OMNI interface multilink service designers MUST observe the BCP
      guidance in Section 15 <xref target="RFC3819"/> in terms of implications
      for reordering when original IP packets/parcels from the same flow may
      be spread across multiple underlay interfaces having diverse
      properties.</t>

      <section anchor="multi-aero" title="Multiple OMNI Interfaces">
        <t>Clients may connect to multiple independent OMNI links within the
        same or different OMNI domains to support SBM. The Client configures a
        separate OMNI interface for each link so that multiple interfaces
        (e.g., omni0, omni1, omni2, etc.) are exposed to the network layer. Each
        OMNI interface configures one or more OMNI anycast addresses (see:
        <xref target="gua"/>), and the Client injects the corresponding
        anycast prefixes into the ENET routing system. Multiple distinct OMNI
        links can therefore be used to support fault tolerance, load
        balancing, reliability, etc.</t>

        <t>Applications in ENETs can use Segment Routing to select the desired
        OMNI interface based on SBM considerations. The application writes an
        OMNI anycast address into the original IP packet/parcel's destination
        address, and writes the actual destination (along with any additional
        intermediate hops) into the Segment Routing Header. Standard IP
        routing directs the packet/parcel to the Client's mobile router
        entity, where the anycast address identifies the correct OMNI
        interface for next hop forwarding. When the Client receives the
        packet/parcel, it replaces the IP destination address with the next
        hop found in the Segment Routing Header and forwards the message via
        the OMNI interface identified by the anycast address.</t>

        <t>Note: The Client need not configure its OMNI interface indexes in
        one-to-one correspondence with the global OMNI Link-IDs configured for
        OMNI domain administration since the Client's indexes (i.e., omni0,
        omni1, omni2, etc.) are used only for its own local interface
        management.</t>
      </section>

      <section anchor="AR-looping" title="Client-Proxy/Server Loop Prevention">
        <t>After a Proxy/Server has registered an MNP for a Client (see: <xref
        target="aeropd"/>), the Proxy/Server will forward all original IP
        packets/parcels (or carrier packets) destined to an address within the
        MNP to the Client. The Client will under normal circumstances then
        forward the resulting original IP packet/parcel to the correct
        destination within its connected (downstream) ENETs.</t>

        <t>If at some later time the Client loses state (e.g., after a
        reboot), it may begin returning original IP packets/parcels (or
        carrier packets) with destinations corresponding to its MNP to the
        Proxy/Server as its default router. The Proxy/Server therefore drops
        any original IP packets/parcels received from the Client with a
        destination address that corresponds to the Client's MNP (i.e.,
        whether ULA or GUA), and drops any carrier packets with both source
        and destination address corresponding to the same Client's MNP
        regardless of their origin.</t>
      </section>
    </section>

    <section anchor="aeropd" title="Router Discovery and Prefix Registration">
      <t>Clients engage the MS by sending RS messages with OMNI options under
      the assumption that one or more Proxy/Server will process the message
      and respond. The RS message is received by a FHS Proxy/Server, which may
      in turn forward a proxyed copy of the RS to a Hub Proxy/Server located
      on the same or different SRT segment. The Hub Proxy/Server then returns
      an RA message either directly to the Client or via an FHS Proxy/Server
      acting as a proxy.</t>

      <t>To support Client to service coordination, OMNI defines three
      flag bits in the OMNI Neighbor Coordination sub-option discussed in
      <xref target="preflen-sub"/>. Clients set or clear the NUD, ARR
      and/or RPT flags in RS messages as directives to the Mobility
      Service FHS and Hub Proxy/Servers. Proxy/Servers interpret the
      flags as follows:<list style="symbols">
          <t>When an FHS Proxy/Server forwards or processes an RS with
          the NUD flag set, it responds directly to future NS Neighbor
          Unreachability Detection (NUD) messages with the Client as the
          target by returning NA(NUD) replies; otherwise, it forwards
          NS(NUD) messages to the Client.</t>

          <t>When the Hub Proxy/Server receives an RS with the ARR flag
          set, it responds directly to future NS Address Resolution (AR)
          messages with the Client as the target by returning NA(AR)
          replies; otherwise, it forwards NS(AR) messages to the Client.</t>

          <t>When the Hub Proxy/Server receives an RS with the RPT flag set,
          it maintains a Report List of recent NS(AR) message sources for the
          source or target Client and sends uNA messages to all list members
          if any aspects of the Client's underlay interfaces change.</t>
        </list>Mobility Service Proxy/Servers function according to the NUD,
      ARR and RPT flag settings received in the most recent RS message to
      support dynamic Client updates.</t>

      <t>Clients and FHS Proxy/Servers include an authentication signature in
      their RS/RA exchanges when necessary but always include a valid IPv6 ND
      message checksum. FHS and Hub Proxy/Server RS/RA message exchanges over
      the SRT secured spanning tree instead always include the checksum and
      omit the authentication signature. Clients and Proxy/Servers use the
      information included in RS/RA messages to establish NCE state and OMNI
      link autoconfiguration information as discussed in this section.</t>

      <t>For each underlay interface, the Client sends RS messages with OMNI
      options to coordinate with a (potentially) different FHS Proxy/Server
      for each interface but with a single Hub Proxy/Server. All Proxy/Servers
      are identified by their ULA-RNDs and accept carrier packets addressed to
      their anycast/unicast L2ADDRs; the Hub Proxy/Server may be chosen among
      any of the Client's FHS Proxy/Servers or may be any other Proxy/Server
      for the OMNI link. Example ULA/L2ADDR discovery methods are given in
      <xref target="RFC5214"/> and include data link login parameters, name
      service lookups, static configuration, a static "hosts" file, etc. In
      the absence of other information, the Client can resolve the DNS
      Fully-Qualified Domain Name (FQDN) "linkupnetworks.[domainname]" where
      "linkupnetworks" is a constant text string and "[domainname]" is a DNS
      suffix for the OMNI link (e.g., "example.com"). The name resolution will
      return a set of DNS resource records with the addresses of Proxy/Servers
      for the domain.</t>

      <t>Each FHS Proxy/Server configures a ULA-RND based on a /64 ULA prefix
      for the link/segment with randomly-generated Global ID to assure global
      uniqueness then administratively assigned to FHS Proxy/Servers for the
      link to assure global consistency. The Client can then configure
      ULA-MNPs derived from the 64-bit ULA prefix assigned to a FHS
      Proxy/Server for each underlay interface. The FHS Proxy/Servers
      discovered over multiple of the Client's underlay interfaces may
      configure the same or different ULA prefixes, and the Client's ULA-MNP
      for each underlay interface will fall within the ULA (multilink) subnet
      relative to each FHS Proxy/Server.</t>

      <t>Clients configure OMNI interfaces that observe the properties
      discussed in previous sections. The OMNI interface and its underlay
      interfaces are said to be in either the "UP" or "DOWN" state according
      to administrative actions in conjunction with the interface connectivity
      status. An OMNI interface transitions to UP/DOWN through administrative
      action and/or through underlay interface state transitions. When a first
      underlay interface transitions to UP, the OMNI interface also transitions
      to UP. When all underlay interfaces transition to DOWN, the OMNI interface
      also transitions to DOWN.</t>

      <t>When a Client OMNI interface transitions to UP, it sends RS messages
      to register its MNP and an initial set of underlay interfaces that are
      also UP. The Client sends additional RS messages to refresh lifetimes
      and to register/deregister underlay interfaces as they transition to UP
      or DOWN. The Client's OMNI interface sends initial RS messages over an
      UP underlay interface with its XLA-MNP as the source (or with a HHIT
      or TLA-RND as the source if it does not yet have an MNP) and with
      destination set to link-scoped All-Routers multicast or the ULA of
      a specific (Hub) Proxy/Server. The Client sets or clears the RS NUD,
      ARR and RPT flags, then includes an OMNI option per <xref target=
      "interface"/> with an OMNI Window Coordination sub-option, a Neighbor
      Control or DHCPv6 Solicit sub-option if necessary, an Interface Attributes
      sub-option for the underlay interface, and with any other necessary
      OMNI sub-options such as authentication, Proxy/Server Departure, etc.
      The OMNI interface finally sets or clears the Interface Attributes
      FMT-Forward and FMT-Mode bits according to the behavior it would
      like to receive from the FHS Proxy/Server as described in <xref
      target="sub4"/>.</t>

      <t>The Client then calculates the authentication signature checksum
      and prepares to forward the RS over the underlay interface using OAL
      encapsulation. The OMNI interface selects an Identification value
      (see: <xref target="oal7.9"/>), sets the OAL source address to the
      ULA-MNP corresponding to the RS source if known (otherwise to an
      HHIT/TLA), sets the OAL destination to an OMNI IPv6 anycast address
      or a known Proxy/Server ULA, optionally includes a Nonce and/or
      Timestamp, then performs OAL fragmentation if necessary. When L2
      encapsulation is used, the Client next includes the discovered FHS
      Proxy/Server L2ADDR or an anycast address as the L2 destination then
      fragments if necessary and forwards the resulting carrier packet(s)
      into the underlay network. Note that the Client does not yet create
      a NCE, but instead caches the Identification, Nonce and/or Timestamp
      values included in its RS message transmissions to match against any
      received RA messages.</t>

      <t>When an FHS Proxy/Server receives the carrier packets containing an
      RS it reassembles if necessary, sets aside the L2 headers, verifies the
      Identifications, performs OAL reassembly if necessary, sets aside the
      OAL header, then verifies the RS authentication signature/checksum. The
      FHS Proxy/Server then creates/updates a NCE indexed by the Client's RS
      source address and caches the OMNI Interface Attributes and any Traffic
      Selector sub-options while also caching the L2 (UDP/IP) and OAL source
      and destination address information. The FHS Proxy/Server next caches
      the RS NUD flag and Window Synchronization parameters (see: <xref
      target="omni-opt"/>) then examines the RS destination address.</t>

      <t>If the destination matches its own ULA, the FHS Proxy/Server assumes
      the Hub role and acts as the sole entry point for injecting the Client's
      XLA-MNP into the OMNI link routing system (i.e., after performing any
      necessary prefix delegation operations) while setting the prefix to
      fd00::/64 and suffix to the 64-bit MNP, then including a prefix length
      set to the MNP prefix length plus 64. (For example, if the MNP prefix
      length is 48, the prefix length field encodes the value 112.) The
      FHS/Hub Proxy/Server then caches the RS ARR and RPT flags to determine
      its role in processing NS(AR) messages and generating uNA messages
      (see: <xref target="omni-opt"/>).</t>

      <t>The FHS/Hub Proxy/Server then prepares to return an RA message
      directly to the Client by first populating the Cur Hop Limit, Flags,
      Router Lifetime, Reachable Time and Retrans Timer fields with values
      appropriate for the OMNI link. The FHS/Hub Proxy/Server next includes as
      the first RA message option an OMNI option with a Window Synchronization
      sub-option, an authentication sub-option if necessary and a (proxyed)
      copy of the Client's original Interface Attributes sub-option with its
      INET-facing interface information written in the FMT, SRT and LHS
      Proxy/Server ULA/L2ADDR fields. The Proxy/Server also sets or clears
      the FMT-Forward and FMT-Mode flags if necessary to convey its capabilities
      to the Client, noting that it should honor the Client's stated preferences
      for those parameters if possible or override otherwise. The FMT-Forward/Mode
      flags thereafter remain fixed unless and until a new RS/RA exchange produces
      different values (see: <xref target="sub4"/> for further discussion). If
      the FHS/Hub Proxy/Server's Client-facing interface is different than its
      INET-facing interface, the Proxy/Server next includes a second Interface
      Attributes sub-option with ifIndex set to '0' and with a unicast L2
      address for its Client-facing interface in the L2ADDR field.</t>

      <t>The FHS/Hub Proxy/Server next includes an Origin Indication
      sub-option that includes the RS L2 source L2ADDR information (see: <xref
      target="ext0"/>), then includes any other necessary OMNI sub-options
      (either within the same OMNI option or in additional OMNI options).
      Following the OMNI option(s), the FHS/Hub Proxy/Server next includes any
      other necessary RA options such as PIOs with (A=0; L=0) that include the
      OMNI link MSPs <xref target="RFC8028"/>, RIOs <xref target="RFC4191"/>
      with more-specific routes, Nonce and Timestamp options, etc. The FHS/Hub
      Proxy/Server then sets the RA source address to its own ULA and
      destination address to the Client's ULA-MNP (i.e., relative to the ULA
      /64 prefix for its Client-facing underlay interface) while also
      recording the corresponding XLA-MNP as an (alternate) index to the
      Client NCE, then calculates the authentication signature/checksum. The
      FHS/Hub Proxy/Server finally performs OAL encapsulation while setting
      the source to its own ULA and destination to the OAL source that
      appeared in the RS, then includes an appropriate Identification,
      performs OAL fragmentation, performs L2 encapsulation/fragmentation
      with L2 source and destination address information reversed from the
      RS L2 information and returns the resulting carrier packets to the
      Client over the same underlay interface the RS arrived on.</t>

      <t>When an FHS Proxy/Server receives an RS with a valid authentication
      signature/checksum and with destination set to link-scoped All-Routers
      multicast, it can either assume the Hub role itself the same as above or
      act as a proxy and select the ULA of another Proxy/Server to serve as
      the Hub. When an FHS Proxy/Server assumes the proxy role or receives an
      RS with destination set to the ULA of another Proxy/Server, it forwards
      the message while acting as a proxy. The FHS Proxy/Server creates or
      updates a NCE for the Client (i.e., based on the RS source address)
      and caches the OAL source, Window Synchronization, NUD flag, Interface
      Attributes addressing information as above then writes its own
      INET-facing FMT, SRT and LHS Proxy/Server ULA/L2ADDR information into
      the appropriate Interface Attributes sub-option fields (while also
      setting/clearing FMT-Forward and FMT-Type as above). The FHS
      Proxy/Server then calculates and includes the checksum, performs OAL
      encapsulation while setting the source to its own ULA and destination
      to the ULA of the Hub Proxy/Server, includes an  appropriate
      Identification, performs OAL fragmentation, performs L2
      encapsulation/fragmentation and sends the resulting carrier
      packets into the SRT secured spanning tree.</t>

      <t>When the Hub Proxy/Server receives the carrier packets, it performs
      L2 reassembly/decapsulation, performs OAL reassembly/decapsulation to
      obtain the proxyed RS, verifies checksums, then performs DHCPv6 Prefix
      Delegation (PD) to obtain the Client's MNP if the RS source is not
      already MNP-based. The Hub Proxy/Server then creates/updates a NCE
      for the Client's XLA-MNP and caches any state (including the ARR and
      RPT flags, OAL addresses, Interface Attributes information and Traffic
      Selectors), then finally performs routing protocol injection. The Hub
      Proxy/Server then returns an RA that echoes the Client's (proxyed)
      Interface Attributes sub-option and with any RA parameters the same
      as specified for the FHS/Hub Proxy/Server case above. The Hub Proxy/Server
      then sets the RA source address to its own ULA and destination address
      to the RS source address; if the RS source address is an HHIT/TLA, the
      Hub Proxy/Server also includes the MNP in a DHCPv6 PD Reply OMNI
      sub-option. The Hub Proxy/Server next calculates the checksum, then
      encapsulates the RA as an OAL packet with source set to its own ULA
      and destination set to the ULA of the FHS Proxy/Server that forwarded
      the RS. The Hub Proxy/Server finally includes an appropriate Identification,
      performs OAL fragmentation followed by L2 encapsulation/fragmentation and
      sends the resulting carrier packets into the secured spanning tree.</t>

      <t>When the FHS Proxy/Server receives the carrier packets it performs
      L2 reassembly/decapsulation followed by OAL reassembly/decapsulation to
      obtain the RA message, verifies checksums then updates the OMNI interface
      NCE for the Client and creates/updates a NCE for the Hub. The FHS
      Proxy/Server then sets the P flag in the RA flags field <xref target=
      "RFC4389"/> and proxys the RA by changing the OAL source to its own ULA,
      changing the OAL destination to the OAL address found in the Client's NCE,
      and changing the RA destination address to the ULA-MNP of the Client
      relative to its own /64 ULA prefix while also recording the corresponding
      XLA-MNP as an alternate index into the Client NCE. (If the RA destination
      address was an HHIT/TLA, the FHS Proxy Server determines the MNP by
      consulting the DHCPv6 PD Reply message sub-option.) The FHS Proxy/Server
      next includes Window Synchronization parameters responsive to those in
      the Client's RS, an Interface Attributes sub-option with ifIndex '0' and
      with its Client-facing interface unicast L2 address if necessary (see
      above), an Origin Indication sub-option with the Client's cached L2ADDR
      and an authentication sub-option if necessary. The FHS Proxy/Server finally
      includes an Identification value per <xref target="oal7.9"/>, calculates
      the authentication signature/checksum, performs OAL fragmentation,
      performs L2 encapsulation/fragmentation with addresses taken from the
      Client's NCE and sends the resulting carrier packets via the same
      underlay interface over which the RS was received.</t>

      <t>When the Client receives the carrier packets, it performs L2
      reassembly/decapsulation followed by OAL reassembly/decapsulation to
      obtain the RA message. The Client next verifies the authentication
      signature/checksum, then matches the RA message with its previously-sent
      RS by comparing the RS Sequence Number with the RA Acknowledgement
      Number and also comparing the Nonce and/or Timestamp values if present.
      If the values match, the Client then creates/updates OMNI interface NCEs
      for both the Hub and FHS Proxy/Server and caches the information in the
      RA message. In particular, the Client caches the RA source address as
      the Hub Proxy/Server ULA and uses the OAL source address to configure
      both an underlay interface-specific ULA for the Hub Proxy/Server and the
      ULA of this FHS Proxy/Server. The Client then uses the ULA-MNP in the RA
      destination address to configure its address within the ULA (multilink)
      subnet prefix of the FHS Proxy/Server. If the Client has multiple
      underlay interfaces, it creates additional FHS Proxy/Server NCEs and
      ULA-MNPs as necessary when it receives RAs over those interfaces (noting
      that multiple of the Client's underlay interfaces may be serviced by the
      same or different FHS Proxy/Servers). The Client finally adds the Hub
      Proxy/Server ULA to the default router list if necessary.</t>

      <t>For each underlay interface, the Client next caches the (filled-out)
      Interface Attributes for its own ifIndex and Origin Indication
      information that it received in an RA message over that interface so
      that it can include them in future NS/NA messages to provide neighbors
      with accurate FMT/SRT/LHS information. (If the message includes an
      Interface Attributes sub-option with ifIndex '0', the Client also caches
      the L2ADDR as the underlay network-local unicast address of the FHS
      Proxy//Server via that underlay interface.) The Client then compares the
      Origin Indication L2ADDR information with its own underlay interface
      addresses to determine whether there may be NATs on the path to the FHS
      Proxy/Server; if the L2ADDR information differs, the Client is behind one
      or more NATs and must supply the Origin information in IPv6 ND message
      exchanges with prospective neighbors on the same SRT segment. The Client
      finally configures default routes and assigns the OMNI Subnet Router
      Anycast address corresponding to the MNP (e.g., 2001:db8:1:2::) to
      the OMNI interface.</t>

      <t>Following the initial exchange, the FHS Proxy/Server MAY later send
      additional periodic and/or event-driven unsolicited RA messages per
      <xref target="RFC4861"/>. (The unsolicited RAs may be initiated either
      by the FHS Proxy/Server itself or by the Hub via the FHS as a proxy.)
      The Client then continuously manages its underlay interfaces according
      to their states as follows:</t>

      <t><list style="symbols">
          <t>When an underlay interface transitions to UP, the Client sends an
          RS over the underlay interface with an OMNI option with sub-options
          as specified above.</t>

          <t>When an underlay interface transitions to DOWN, the Client sends
          unsolicited NA messages over any UP underlay interface with an OMNI
          option containing Interface Attributes sub-options for the DOWN
          underlay interface with ifMetric set to 'ffffffff'. The Client
          sends isolated unsolicited NAs when reliability is not thought
          to be a concern (e.g., if redundant transmissions are sent on
          multiple underlay interfaces), or may instead set the SNR flag
          in an OMNI Neighbor Control sub-option to trigger an unsolicited
          NA reply (see: <xref target="I-D.templin-intarea-aero2"/>).</t>

          <t>When the Router Lifetime for the Hub Proxy/Server nears
          expiration, the Client sends an RS over any underlay interface to
          receive a fresh RA from the Hub. If no RA messages are received over
          a first underlay interface (i.e., after retrying), the Client marks
          the underlay interface as DOWN and should attempt to contact the Hub
          Proxy/Server via a different underlay interface. If the Hub
          Proxy/Server is unresponsive over additional underlay interfaces,
          the Client sends an RS message with destination set to the ULA of
          another Proxy/Server which will then assume the Hub role.</t>

          <t>When all of a Client's underlay interfaces have transitioned to
          DOWN (or if the prefix registration lifetime expires), the Hub
          Proxy/Server withdraws the MNP the same as if it had received a
          message with a release indication.</t>
        </list>The Client is responsible for retrying each RS exchange up
      to MAX_RTR_SOLICITATIONS times separated by RTR_SOLICITATION_INTERVAL
      seconds until an RA is received. If no RA is received over an UP
      underlay interface (i.e., even after attempting to contact alternate
      Proxy/Servers), the Client declares this underlay interface as DOWN.
      When changing to a new FHS or Hub Proxy/Server, the Client also includes
      a Proxy/Server Departure OMNI sub-option in new RS messages; the (new)
      FHS Proxy/Server will in turn send uNA messages to the old FHS and/or
      Hub Proxy/Server to announce the Client's departure as discussed in
      <xref target="I-D.templin-intarea-aero2"/>.</t>

      <t>The network layer sees the OMNI interface as an ordinary IPv6 interface.
      Therefore, when the network layer sends an RS message the OMNI interface
      returns an internally-generated RA message as though the message
      originated from an IPv6 router. The internally-generated RA message
      contains configuration information consistent with the information
      received from the RAs generated by the Hub Proxy/Server. Whether the
      OMNI interface IPv6 ND messaging process is initiated from the receipt
      of an RS message from the network layer or independently of the network layer
      is an implementation matter. Some implementations may elect to defer the
      OMNI interface internal RS/RA messaging process until an RS is received
      from the network layer, while others may elect to initiate the process
      proactively. Still other deployments may elect to administratively
      disable network layer RS/RA messaging over the OMNI interface, since the
      messages are not required to drive the OMNI interface internal RS/RA
      process. (Note that this same logic applies to IPv4 implementations
      that employ "ICMP Router Discovery" <xref target="RFC1256"/>.)</t>

      <t>Note: The Router Lifetime value in RA messages indicates the time
      before which the Client must send another RS message over this underlay
      interface (e.g., 600 seconds), however that timescale may be
      significantly longer than the lifetime the MS has committed to retain
      the prefix registration (e.g., REACHABLE_TIME seconds). Proxy/Servers are
      therefore responsible for keeping MS state alive on a shorter timescale
      than the Client may be required to do on its own behalf.</t>

      <t>Note: On certain multicast-capable underlay interfaces, Clients
      should send periodic unsolicited multicast NA messages and Proxy/Servers
      should send periodic unsolicited multicast RA messages as "beacons" that
      can be heard by other nodes on the link. If a node fails to receive a
      beacon after a timeout value specific to the link, it can initiate
      Neighbor Unreachability Detection (NUD) exchanges to test
      reachability.</t>

      <t>Note: If a single FHS Proxy/Server services multiple of a Client's
      underlay interfaces, Window Synchronization will initially be repeated
      for the RS/RA exchange over each underlay interface, i.e., until the
      Client discovers the many-to-one relationship. This will naturally
      result in a single window synchronization that applies over the Client's
      multiple underlay interfaces for the same FHS Proxy/Server.</t>

      <t>Note: Although the Client's FHS Proxy/Server is a first-hop segment
      node from its own perspective, the Client stores the Proxy/Server's
      FMT/SRT/ULA/L2ADDR as last-hop segment (LHS) information to supply to
      neighbors. This allows both the Client and Hub Proxy/Server to supply
      the information to neighbors that will perceive it as LHS information on
      the return path to the Client.</t>

      <t>Note: The Hub Proxy/Server injects Client XLA-MNP into the OMNI link
      routing system by simply creating a route-to-interface forwarding table
      entry for fd00::{MNP}/N via the OMNI interface. The dynamic routing
      protocol will notice the new entry and propagate the route to its peers.
      If the Hub receives additional RS messages, it need not re-create the
      forwarding table entry (nor disturb the dynamic routing protocol) if an
      entry is already present. If the Hub ceases to receive RS messages from
      any of the Client's interfaces, it removes the Client XLA-MNP from the
      forwarding table (i.e., after a short delay) which also results in
      its removal from the routing system.</t>

      <t>Note: If the Client's initial RS message includes an anycast L2
      destination address, the FHS Proxy/Server returns the solicited RA using
      the same anycast address as the L2 source while including an Interface
      Attributes sub-option with ifIndex '0' and its true unicast address in
      the L2ADDR. When the Client sends additional RS messages, it includes
      this FHS Proxy/Server unicast address as the L2 destination and the FHS
      Proxy/Server returns the solicited RA using the same unicast address as
      the L2 source. This will ensure that RS/RA exchanges are not impeded by
      any NATs on the path while avoiding long-term exposure of messages that
      use an anycast address as the source.</t>

      <t>Note: The Origin Indication sub-option is included only by the FHS
      Proxy/Server and not by the Hub (unless the Hub is also serving as an
      FHS).</t>

      <t>Note: Clients should set the NUD, ARR and RPT flags consistently in
      successive RS messages and only change those settings when an FHS/Hub
      Proxy/Server service profile update is necessary.</t>

      <t>Note: Although the Client adds the Hub Proxy/Server ULA to the
      default router list, it also caches the ULAs of the FHS Proxy/Servers
      on the path to the Hub over each underlying interface. When the Client
      needs to send an original IP packet/parcel to a default router, it
      engages OAL encapsulation/fragmentation while using a destination ULA
      corresponding to the selected interface which directs the packet to an
      FHS Proxy/Server for that interface. The FHS Proxy/Server then performs
      L2 encapsulation/fragmentation and sends the resulting carrier packets
      without disturbing the Hub.</t>

      <section anchor="rs-ra-win" title="Window Synchronization">
        <t>In environments where Identification window synchronization is
        necessary, the RS/RA exchanges discussed above observe the principles
        specified in <xref target="oal7.9"/>. Window synchronization is
        conducted between the Client and each FHS Proxy/Server used to contact
        the Hub Proxy/Server, i.e., and not between the Client and the Hub.
        This is due to the fact that the Hub Proxy/Server is responsible only
        for forwarding control and data messages via the secured spanning tree
        to FHS Proxy/Servers, and is not responsible for forwarding messages
        directly to the Client under a synchronized window. Also, in the
        reverse direction the FHS Proxy/Servers handle all default forwarding
        actions without forwarding Client-initiated data to the Hub.</t>

        <t>When a Client needs to perform window synchronization via a new FHS
        Proxy/Server, it sets the RS source address to its own {TLA,XLA}-MNP
        (or an HHIT/TLA) and destination address to the ULA of the Hub
        Proxy/Server (or to All-Routers multicast in an initial RS), then sets
        the SYN flag and includes an initial Sequence Number for Window
        Synchronization. The Client then performs OAL encapsulation/fragmentation
        using its own ULA-MNP (or the HHIT/TLA) as the source and the ULA of the
        FHS Proxy/Server as the destination and includes an Interface Attributes
        sub-option then performs L2 encapsulation/fragmentation and sends the
        resulting carrier packets to the FHS Proxy/Server. The FHS Proxy/Server
        then performs L2 and OAL reassembly/decapsulation to extract the RS
        message and caches the Window Synchronization parameters then
        re-encapsulates/fragments with its own ULA as the source
        and the ULA of the Hub Proxy/Server as the target.</t>

        <t>The FHS Proxy/Server then performs L2 encapsulation/fragmentation
        and sends the resulting carrier packets via the secured spanning tree
        to the Hub Proxy/Server, which updates the Client's Interface Attributes
        and returns a unicast RA message with source set to its own ULA and
        destination set to the RS source address and with the Client's
        Interface Attributes echoed. The Hub Proxy/Server then performs OAL
        encapsulation/fragmentation using its own ULA as the source and the
        ULA of the FHS  Proxy/Server as the destination, then performs L2
        encapsulation/fragmentation and sends the carrier packets via the
        secured spanning tree to the FHS Proxy/Server. The FHS Proxy/Server
        then proxys the message as discussed in the previous section and
        includes responsive Window Synchronization information. The FHS
        Proxy/Server then forwards the message to the Client which updates
        its window synchronization information for the FHS Proxy/Server
        as necessary.</t>

        <t>Following the initial RS/RA-driven window synchronization, the
        Client can re-assert new windows with specific FHS Proxy/Servers by
        performing NS/NA exchanges between its own XLA-MNPs and the ULAs of
        the FHS Proxy/Servers without having to disturb the Hub.</t>
      </section>

      <section anchor="multihop"
               title="Router Discovery in IP Multihop and IPv4-Only Networks">
        <t>On some *NETs, a Client may be located multiple intermediate system
        hops away from the nearest OMNI link Proxy/Server. Clients in multihop
        networks perform route discovery through the application of a routing
        protocol (e.g., a MANET/VANET routing protocol over omnidirectional
        wireless interfaces, an inter-domain routing protocol in an enterprise
        network, etc.) then apply corresponding forwarding entries to the OMNI
        interface. Example routing protocols optimized for MANET/VANET operations
        include OSPFv3 <xref target="RFC5340"/> with MANET Designated Router
        (OSPF-MDR) extensions <xref target="RFC5614"/>, OLSRv2 <xref target=
        "RFC7181"/>, AODVv2 <xref target="I-D.perkins-manet-aodvv2"/> and
        others. Clients employ the routing protocol according to the link
        model found in <xref target="RFC5889"/> and subnet model articulated
        in <xref target="RFC5942"/>. For unique identification, Clients use
        an HHIT/TLA as a Router ID or set an administrative value that is
        managed for uniqueness within the MANET/VANET.</t>

        <t>A Client located potentially multiple *NET hops away from the
        nearest Proxy/Server prepares an RS message, sets the source address
        to its XLA-MNP (or to its HHIT/TLA if it does not yet have an MNP),
        and sets the destination to link-scoped All-Routers multicast or the
        unicast ULA of a Proxy/Server the same as discussed above. The OMNI
        interface then employs OAL encapsulation, sets the OAL source address
        to its HHIT/TLA and sets the OAL destination to an OMNI IPv6 anycast
        address based on either a native IPv6 or IPv4-Compatible IPv6 prefix
        (see: <xref target="gua"/>).</t>

        <t>For IPv6-enabled *NETs where the underlay interface observes the
        MANET properties discussed above, the Client injects the HHIT/TLA
        into the IPv6 multihop routing system and forwards the message without
        further encapsulation. Otherwise, the Client encapsulates the message
        in UDP/IPv6 L2 headers, sets the source to the underlay interface IPv6
        address and sets the destination to the same OMNI IPv6 anycast address.
        The Client then forwards the message into the IPv6 multihop routing
        system which conveys it to the nearest Proxy/Server that advertises
        a matching OMNI IPv6 anycast prefix. If the nearest Proxy/Server is
        too busy, it should forward (without Proxying) the OAL-encapsulated
        RS to another nearby Proxy/Server connected to the same IPv6 (multihop)
        network that also advertises the matching OMNI IPv6 anycast prefix.</t>

        <t>For IPv4-only *NETs, the Client encapsulates the RS message in
        UDP/IPv4 L2 headers, sets the source to the underlay interface IPv4
        address and sets the destination to the OMNI IPv4 anycast address. The
        Client then forwards the message into the IPv4 multihop routing system
        which conveys it to the nearest Proxy/Server that advertises the
        corresponding IPv4 prefix. If the nearest Proxy/Server is too busy
        and/or does not configure the specified OMNI IPv6 anycast address, it
        should forward (without Proxying) the OAL-encapsulated RS to another
        nearby Proxy/Server connected to the same IPv4 (multihop) network that
        configures the OMNI IPv6 anycast address. (In environments where
        reciprocal RS forwarding cannot be supported, the first Proxy/Server
        should instead return an RA based on its own MSP(s).)</t>

        <t>When a *NET intermediate system that participates in the routing
        protocol receives the encapsulated RS, it forwards the message
        according to its routing tables (note that an intermediate system
        could be a fixed infrastructure element such as a roadside unit or
        another MANET/VANET Client). This process repeats iteratively until
        the RS message is received by a penultimate *NET hop within single-hop
        communications range of a Proxy/Server, which forwards the message to
        the Proxy/Server.</t>

        <t>When a Proxy/Server that configures the OMNI IPv6 anycast OAL
        destination receives the message, it decapsulates the RS and assumes
        either the Hub or FHS role (in which case, it forwards the RS to a
        candidate Hub). The Hub Proxy/Server then prepares an RA message with
        source address set to its own ULA and destination address set to the
        RS source address if it is acting only as the Hub (or to the Client
        ULA-MNP within its ULA subnet prefix if it is also acting as the FHS
        Proxy/Server). The Hub Proxy/Server then performs OAL encapsulation
        with the RA OAL source/destination set to the RS OAL destination/source
        and forwards the RA either to the FHS Proxy/Server or directly to
        the Client.</t>

        <t>When the Hub or FHS Proxy/Server forwards the RA to the Client, it
        encapsulates the message in L2 encapsulation headers (if necessary)
        with (src, dst) set to the (dst, src) of the RS L2 encapsulation
        headers. The Proxy/Server then forwards the message to a *NET node
        within communications range, which forwards the message according to
        its routing tables to an intermediate system. The multihop forwarding
        process within the *NET continues repetitively until the message is
        delivered to the original Client, which decapsulates the message and
        performs autoconfiguration the same as if it had received the RA
        directly from a Proxy/Server on the same physical link. The Client
        then injects the ULA-MNP into the IPv6 multihop routing system to
        advertise a unique address within the FHS Proxy/Server's "Multilink
        Subnet".</t>

        <t>Note: When the RS message includes anycast OAL and/or L2
        encapsulation destinations, the FHS Proxy/Server must use the same
        anycast addresses as the OAL and/or L2 encapsulation sources to
        support forwarding of the RA message plus any initial data messages.
        The FHS Proxy/Server then sends the resulting carrier packets over any
        NATs on the path. When the Client receives the RA, it will discover
        its unicast ULA-MNP and/or L2 encapsulation addresses and can send
        future carrier packets using the unicast (instead of anycast)
        addresses to populate NAT state in the forward path. (If the Client
        does not have immediate data to send to the FHS Proxy/Server, it can
        instead send an OAL "bubble" - see <xref target="bubble"/>.) After the
        Client begins using unicast OAL/L2 encapsulation addresses in this
        way, the FHS Proxy/Server should also begin using the same unicast
        addresses in the reverse direction.</t>

        <t>Note: When an OMNI interface configures a HHIT/TLA, any nodes that
        forward an encapsulated RS message with the HHIT/TLA as the OAL source
        must not consider the message as being specific to a particular OMNI
        link. HHITs/TLAs can therefore also serve as the source and destination
        addresses of unencapsulated IPv6 data communications within the local
        routing region, and if the HHIT/TLAs are injected into the local network
        routing protocol their prefix length must be set to 128.</t>

        <t>Note: Each node normally conducts the multi-hop relaying between
        intermediate forwarding systems using the same underlay interface in
        both the inbound and outbound directions, i.e. as opposed to different
        underlay interfaces. The final forwarding node within range of a
        Proxy/Server could use the same or a different underlay interface to
        exchange carrier packets with the Proxy/Server, but may not be well
        positioned to perform multilink selections over multiple underlay
        interfaces on behalf of multihop dependent peers.</t>
      </section>

      <section anchor="dhcpv6" title="DHCPv6-based Prefix Registration">
        <t>When a Client is not pre-provisioned with an MNP (or, when the
        Client requires additional MNP delegations), it requests the MS to
        select MNPs on its behalf and set up the correct routing state. The
        DHCPv6 service <xref target="RFC8415"/> supports this requirement.</t>

        <t>When a Client requires the MS to select MNPs, it sends an RS
        message with source set to an HHIT/TLA-RND. If the Client requires
        only a single MNP delegation, it can then include an OMNI Node
        Identification sub-option plus an OMNI Neighbor Control sub-option
        with Preflen set to the length of the desired MNP. If the Client
        requires multiple MNP delegations and/or more complex DHCPv6 services,
        it instead includes a DHCPv6 Message sub-option containing a Client
        Identifier, one or more IA_PD options and a Rapid Commit option then
        sets the 'msg-type' field to "Solicit", and includes a 3-octet
        'transaction-id'. The Client then sets the RS destination to
        link-scoped All-Routers multicast and sends the message using OAL
        encapsulation and fragmentation if necessary as discussed above.</t>

        <t>When the Hub Proxy/Server receives the RS message, it performs OAL
        reassembly if necessary. Next, if the RS source is an HHIT/TLA-RND
        and/or the OMNI option includes a DHCPv6 message sub-option, the Hub
        Proxy/Server acts as a "Proxy DHCPv6 Client" in a message exchange
        with the locally-resident DHCPv6 server. If the RS did not contain a
        DHCPv6 message sub-option, the Hub Proxy/Server generates a DHCPv6
        Solicit message on behalf of the Client using an IA_PD option with the
        prefix length set to the OMNI Neighbor Control sub-option Preflen
        value and with a Client Identifier formed from the OMNI option Node
        Identification sub-option; otherwise, the Hub Proxy/Server uses the
        DHCPv6 Solicit message contained in the OMNI option. The Hub
        Proxy/Server then sends the DHCPv6 message to the DHCPv6 Server, which
        delegates MNPs and returns a DHCPv6 Reply message with PD parameters.
        (If the Hub Proxy/Server wishes to defer creation of Client state
        until the DHCPv6 Reply is received, it can instead act as a
        Lightweight DHCPv6 Relay Agent per <xref target="RFC6221"/> by
        encapsulating the DHCPv6 message in a Relay-forward/reply exchange
        with Relay Message and Interface ID options. In the process, the Hub
        Proxy/Server packs any state information needed to return an RA to
        the Client in the Relay-forward Interface ID option so that the
        information will be echoed back in the Relay-reply.)</t>

        <t>When the Hub Proxy/Server receives the DHCPv6 Reply, it creates
        XLA-MNPs based on the delegated MNPs and creates OMNI interface
        XLA-MNP forwarding table entries (i.e., to prompt the dynamic routing
        protocol). The Hub Proxy/Server then sends an RA back to the FHS
        Proxy/Server with the DHCPv6 Reply message included in an OMNI DHCPv6
        message sub-option. The Hub Proxy/Server sets the RA destination
        address to the RS source address, sets the RA source address to its
        own ULA, performs OAL encapsulation and fragmentation, performs L2
        encapsulation and sends the RA to the Client via the FHS Proxy/Server
        as discussed above.</t>

        <t>When the FHS Proxy/Server receives the RA, it changes the RA
        destination address to the ULA-MNP for the Client within its own ULA
        subnet prefix, includes a Neighbor Control sub-option with Preflen set
        to the length of the MNP, then forwards the RA to the Client. When the
        Client receives the RA, it reassembles and discards the OAL encapsulation
        then creates a default route, assigns Subnet Router Anycast addresses
        and uses the RA destination address or DHCPv6-delegated MNP to
        automatically configure its primary ULA-MNP. The Client will then use
        these primary MNP-based addresses as the source address of any IPv6 ND
        messages it sends as long as it retains ownership of the MNP.</t>

        <t>Note: when the Hub Proxy/Server is also the FHS Proxy/Server, it
        forwards the RA message directly to the Client with the destination
        set to the Client's ULA-MNP (i.e., instead of forwarding via another
        Proxy/Server).</t>
      </section>

      <section anchor="cli-chain" title="OMNI Link Extension">
        <t>Clients can provide an OMNI link ingress point for other nodes on
        their (downstream) ENETs that also act as Clients. When Client A has
        already coordinated with an (upstream) ANET/INET Proxy/Server, Client
        B on an ENET serviced by Client A can send OAL-encapsulated RS
        messages with addresses set the same as specified in <xref
        target="multihop"/>. When Client A receives the RS message, it infers
        from the OAL encapsulation that Client B is seeking to establish
        itself as a Client instead of just a simple ENET Host.</t>

        <t>Client A then returns an RA message the same as a Proxy/Server
        would do as specified in <xref target="multihop"/> except that it
        instead uses its own ULA-MNP as the RA and OAL source addresses and
        performs (recursive) DHCPv6 Prefix Delegation. The MNP delegation in
        the RA message must be a sub-MNP from the MNP delegated to Client A.
        For example, if Client A receives the MNP 2001:db8:1000::/48 it can
        provide a sub-delegation such as 2001:db8:1000:2000::/56 to Client B.
        Client B can in turn sub-delegate 2001:db8:1000:2000::/56 to its own
        ENET(s), where there may be a further prospective Client C that would
        in turn request OMNI link services via Client B.</t>

        <t>To support this Client-to-Client chaining, Clients send IPv6 ND
        messages addressed to the OMNI link anycast address via their
        ANET/INET (i.e., upstream) interfaces, but advertise the OMNI link
        anycast address into their ENET (i.e., downstream) networks where
        there may be further prospective Clients wishing to join the chain.
        The ENET of the upstream Client is therefore seen as an ANET by
        downstream Clients, and the upstream Client is seen as a Proxy/Server
        by downstream Clients.</t>
      </section>
    </section>

    <section anchor="redirect" title="Secure Redirection">
      <t>If the underlay network link model is multiple access, the FHS
      Proxy/Server is responsible for assuring that address duplication cannot
      corrupt the neighbor caches of other nodes on the link. When the Client
      sends an RS message on a multiple access underlay network, the
      Proxy/Server verifies that the Client is authorized to use the address
      and responds with an RA (or forwards the RS to the Hub) only if the
      Client is authorized.</t>

      <t>After verifying Client authorization and returning an RA, the
      Proxy/Server MAY return IPv6 ND Redirect messages to direct Clients
      located on the same underlay network to exchange OAL packets directly
      without transiting the Proxy/Server. In that case, the Clients can
      exchange OAL packets according to their unicast L2 addresses discovered
      from the Redirect message instead of using the dogleg path through the
      Proxy/Server. In some underlay networks, however, such direct
      communications may be undesirable and continued use of the dogleg path
      through the Proxy/Server may provide better performance. In that case,
      the Proxy/Server can refrain from sending Redirects, and/or Clients can
      ignore them.</t>
    </section>

    <section anchor="vrrp" title="Proxy/Server Resilience">
      <t>*NETs SHOULD deploy Proxy/Servers in Virtual Router Redundancy
      Protocol (VRRP) <xref target="RFC5798"/> configurations so that service
      continuity is maintained even if one or more Proxy/Servers fail. Using
      VRRP, the Client is unaware which of the (redundant) FHS Proxy/Servers
      is currently providing service, and any service discontinuity will be
      limited to the failover time supported by VRRP. Widely deployed public
      domain implementations of VRRP are available.</t>

      <t>Proxy/Servers SHOULD use high availability clustering services so
      that multiple redundant systems can provide coordinated response to
      failures. As with VRRP, widely deployed public domain implementations of
      high availability clustering services are available. Note that
      special-purpose and expensive dedicated hardware is not necessary, and
      public domain implementations can be used even between lightweight
      virtual machines in cloud deployments.</t>
    </section>

    <section anchor="pulse"
             title="Detecting and Responding to Proxy/Server Failures">
      <t>In environments where fast recovery from Proxy/Server failure is
      required, FHS Proxy/Servers SHOULD use proactive Neighbor Unreachability
      Detection (NUD) in a manner that parallels Bidirectional Forwarding
      Detection (BFD) <xref target="RFC5880"/> to track Hub Proxy/Server
      reachability. FHS Proxy/Servers can then quickly detect and react to
      failures so that cached information is re-established through alternate
      paths. Proactive NUD control messaging is carried only over
      well-connected ground domain networks (i.e., and not low-end links such
      as aeronautical radios) and can therefore be tuned for rapid
      response.</t>

      <t>FHS Proxy/Servers perform proactive NUD for Hub Proxy/Servers for
      which there are currently active Clients. If a Hub Proxy/Server fails,
      the FHS Proxy/Server can quickly inform Clients of the outage by sending
      multicast RA messages. The FHS Proxy/Server sends RA messages to Clients
      with source set to the ULA of the Hub, with destination address set to
      All-Nodes multicast (ff02::1) <xref target="RFC4291"/> and with Router
      Lifetime set to 0.</t>

      <t>The FHS Proxy/Server SHOULD send MAX_FINAL_RTR_ADVERTISEMENTS RA
      messages separated by small delays <xref target="RFC4861"/>. Any Clients
      that have been using the (now defunct) Hub Proxy/Server will receive the
      RA messages.</t>
    </section>

    <section anchor="trans" title="Transition Considerations">
      <t>When a Client connects to an *NET link for the first time, it sends
      an RS message with an OMNI option. If the first hop router recognizes
      the option, it responds according to the appropriate FHS/Hub
      Proxy/Server role resulting in an RA message with an OMNI option
      returned to the Client. The Client then engages this FHS Proxy/Sever
      according to the OMNI link model specified above. If the first hop
      router is a legacy IPv6 router, however, it instead returns an RA
      message with no OMNI option and with a non-OMNI unicast source LLA as
      specified in <xref target="RFC4861"/>. In that case, the Client engages
      the *NET according to the legacy IPv6 link model and without the OMNI
      extensions specified in this document.</t>

      <t>If the *NET link model is multiple access, there must be assurance
      that address duplication cannot corrupt the neighbor caches of other
      nodes on the link. When the Client sends an RS message on a multiple
      access *NET link with an OMNI option, first hop routers that recognize
      the option ensure that the Client is authorized to use the address and
      return an RA with a non-zero Router Lifetime only if the Client is
      authorized. First hop routers that do not recognize the OMNI option
      instead return an RA that makes no statement about the Client's
      authorization to use the source address. In that case, the Client should
      perform Duplicate Address Detection to ensure that it does not interfere
      with other nodes on the link.</t>

      <t>An alternative approach for multiple access *NET links to ensure
      isolation for Client-Proxy/Server communications is through link layer
      address mappings as discussed in <xref target="ipv6ndmap"/>. This
      arrangement imparts a (virtual) point-to-point link model over the
      (physical) multiple access link.</t>
    </section>

    <section anchor="openint" title="OMNI Interfaces on Open Internetworks">
      <t>Client OMNI interfaces configured over IPv6-enabled underlay
      interfaces on an open Internetwork without an OMNI-aware first-hop
      router receive IPv6 RA messages with no OMNI options, while OMNI
      interfaces configured over IPv4-only underlay interfaces receive no IPv6
      RA messages at all (but may receive IPv4 RA messages per <xref target=
      "RFC1256"/>). Client OMNI interfaces that receive RA messages with OMNI
      options configure addresses, on-link prefixes, etc. on the underlay
      interface that received the RA according to standard IPv6 ND and
      address resolution conventions <xref target="RFC4861"/> <xref target=
      "RFC4862"/>. Client OMNI interfaces configured over IPv4-only underlay
      interfaces configure IPv4 address information on the underlay interfaces
      using mechanisms such as DHCPv4 <xref target="RFC2131"/>.</t>

      <t>Client OMNI interfaces configured over underlay interfaces connected
      to open Internetworks can apply lower layer security services such as VPNs
      (e.g., IPsec tunnels) to connect to a Proxy/Server, or can establish a
      secured direct point-to-point link to the Proxy/Server through some other
      means (see <xref target="aerospec"/>). In environments where lower layer
      security may be impractical or undesirable, Client OMNI interfaces can
      instead send IPv6 ND messages with OMNI options that include authentication
      signatures.</t>

      <t>OMNI interfaces use UDP/IP as L2 encapsulation headers for
      transmission over open Internetworks with UDP service port number 8060
      for both IPv4 and IPv6 underlay interfaces. The OMNI interface submits
      original IP packets/parcels for OAL encapsulation, then encapsulates
      the resulting OAL fragments in UDP/IP L2 headers to form carrier packets.
      (The first four bits following the UDP header determine whether the OAL
      headers are uncompressed/compressed as discussed in <xref target="oal98"/>.)
      The OMNI interface sets the UDP length to the encapsulated OAL fragment
      length and sets the IP length to an appropriate value at least as large
      as the UDP datagram.</t>

      <t>When necessary, sources include an OMNI option with an authentication
      sub-option in IPv6 ND messages. The source can employ a simple Hashed
      Message Authentication Code (HMAC) as specified in <xref target=
      "RFC2104"/><xref target="RFC6234"/> or a message-based authentication
      service such as HIP <xref target="RFC7401"/>, QUIC-TLS <xref target=
      "RFC9000"/><xref target="RFC9001"/>, etc., using the IPv6 ND message
      OMNI option as a "shipping container". Before calculating the
      authentication signature, the source fully populates any necessary
      OMNI sub-options as well as any ordinary IPv6 ND options as necessary.</t>

      <t>The source then sets both the IPv6 ND message Checksum and
      authentication signature fields to 0 and calculates the authentication
      signature over the full length of the IPv6 ND message beginning after
      the IPv6 ND message checksum field and extending over the length of
      the message. (If the IPv6 ND message is part of an OAL super-packet,
      the source instead continues to calculate the authentication signature
      over the entire length of the super-packet.) The source next writes
      the authentication signature into the appropriate sub-option field
      and forwards the message.</t>

      <t>After establishing a secured underlay link or preparing for UDP/IP
      encapsulation, OMNI interfaces send RS/RA messages for Client-Proxy/Server
      coordination (see: <xref target="aeropd"/>) and NS/NA messages for
      multilink forwarding, route optimization, window synchronization and
      mobility management (see: <xref target="I-D.templin-intarea-aero2"/>).
      These control plane messages must be authenticated while other control
      and data plane messages are delivered the same as for ordinary best
      effort traffic with source address and/or Identification window-based
      data origin verification. Transport and higher layer protocol sessions
      over OMNI interfaces that connect over open Internetworks without an
      explicit underlay link security services should therefore employ
      security at their layers to ensure authentication, integrity and/or
      confidentiality.</t>

      <t>Clients should avoid using INET Proxy/Servers as general-purpose
      routers for steady streams of carrier packets that do not require
      authentication. Clients should therefore perform route optimization to
      coordinate with other INET nodes that can provide forwarding services
      (or preferably coordinate with peer Clients directly) instead of
      burdening the Proxy/Server. Procedures for coordinating with peer
      Clients and discovering INET nodes that can provide better forwarding
      services are discussed in <xref target="I-D.templin-intarea-aero2"/>.</t>

      <t>Clients that attempt to contact peers over INET underlay interfaces
      often encounter NATs in the path. OMNI interfaces accommodate NAT
      traversal using UDP/IP encapsulation and the mechanisms discussed in
      <xref target="I-D.templin-intarea-aero2"/>. FHS Proxy/Servers include Origin
      Indications in RA messages to allow Clients to detect the presence of
      NATs.</t>

      <t>Note: Following the initial IPv6 ND message exchange, OMNI interfaces
      configured over INET underlay interfaces maintain neighbor relationships
      by transmitting periodic IPv6 ND messages with OMNI options that include
      authentication signatures. Other authentication services that use their
      own IPv6 ND option types such as <xref target="RFC3971"/> and <xref
      target="RFC8928"/> can also be used in addition to any OMNI
      authentication services.</t>

      <t>Note: OMNI interfaces configured over INET underlay interfaces should
      employ the Identification window synchronization mechanisms specified in
      <xref target="oal7.9"/> in order to exclude spurious carrier packets
      that might otherwise clutter the reassembly cache. This is especially
      important in environments where carrier packet spoofing and/or
      corruption is a threat.</t>

      <t>Note: NATs may be present on the path from a Client to its FHS
      Proxy/Server, but never on the path from the FHS Proxy/Server to the
      Hub where only INET and/or spanning tree hops occur. Therefore, the
      FHS Proxy/Server does not communicate Client origin information to
      the Hub where it would serve no purpose.</t>
    </section>

    <section anchor="reuse" title="Time-Varying MNPs">
      <t>In some use cases, it is desirable, beneficial and efficient for the
      Client to receive a constant MNP that travels with the Client wherever
      it moves. For example, this would allow air traffic controllers to
      easily track aircraft, etc. In other cases, however (e.g., intelligent
      transportation systems), the Client may be willing to sacrifice a
      modicum of efficiency in order to have time-varying MNPs that can be
      changed every so often to defeat adversarial tracking.</t>

      <t>The prefix delegation services discussed in <xref target="dhcpv6"/>
      allows Clients that desire time-varying MNPs to obtain short-lived
      prefixes to send RS messages with an HHIT/TLA source address and/or
      with an OMNI option with DHCPv6 Option sub-options. The Client would
      then be obligated to renumber its internal networks whenever its MNP
      (and therefore also its OMNI address) changes. This should not present a
      challenge for Clients with automated network renumbering services, but
      may disrupt persistent sessions that would prefer to use a constant
      address.</t>
    </section>

    <section anchor="hip-nd" title="(H)HITs and Temporary ULA (TLA)s">
      <t>Clients that generate (H)HITs but do not have pre-assigned MNPs can
      request MNP delegations by issuing IPv6 ND messages that use the (H)HIT
      instead of a TLA. For example, when a Client creates an RS message it
      can set the source to a (H)HIT and destination to link-scoped
      All-Routers multicast. The IPv6 ND message includes an OMNI option with
      a Node Identification sub-option, then encapsulates the message in an
      IPv6 header with the (H)HIT as the source address. The Client then sends
      the message as specified in <xref target="multihop"/>.</t>

      <t>When the Hub Proxy/Server receives the RS message, it notes that the
      source was a (H)HIT, then invokes the DHCPv6 protocol to request an MNP
      prefix delegation while using the (H)HIT (in the form of a DUID) as the
      Client Identifier. The Hub Proxy/Server then prepares an RA message with
      source address set to its own ULA and destination set to the source of
      the RS message. The Hub Proxy/Server next includes an OMNI option with a
      Node Identification sub-option and any DHCPv6 prefix delegation
      parameters. The Proxy/Server finally encapsulates the RA in an OAL
      header with source address set to its own ULA and destination set to the
      RS OAL source address, then returns the encapsulated RA to the Client
      either directly or by way of the FHS Proxy/Server as a proxy.</t>

      <t>Clients can also use (H)HITs and/or TLAs for direct Client-to-Client
      communications outside the context of any OMNI link supporting
      infrastructure. When two Clients encounter one another they can use
      their (H)HITs and/or TLAs as original IPv6 packet/parcel source and
      destination addresses to support direct communications. Clients can also
      inject their (H)HITs and/or TLAs into an IPv6 multihop routing protocol
      to enable multihop communications as discussed in <xref target=
      "multihop"/>. Clients can further exchange other IPv6 ND messages
      using their (H)HITs and/or TLAs as source and destination addresses.</t>

      <t>Lastly, when Clients are within the coverage range of OMNI link
      infrastructure a case could be made for injecting (H)HITs and/or TLAs
      into the global MS routing system. For example, when the Client sends an
      RS to an FHS Proxy/Server it could include a request to inject the
      (H)HIT / TLA into the routing system instead of requesting an MNP prefix
      delegation. This would potentially enable OMNI link-wide communications
      using only (H)HITs or TLAs, and not MNPs. This document notes the
      opportunity, but makes no recommendation.</t>
    </section>

    <section anchor="addrsel" title="Address Selection">
      <t>Clients assign LLAs to the OMNI interface, but do not use LLAs as
      IPv6 ND message source/destination addresses nor for addressing ordinary
      original IP packets/parcels exchanged with OMNI link neighbors.</t>

      <t>Clients use ULA-MNPs as source/destination IPv6 addresses in the
      encapsulation headers of OAL packets and use XLA-MNPs as the IPv6 source
      addresses of the IPv6 ND messages themselves. Clients use TLAs when an
      MNP is not available, or as source/destination IPv6 addresses for
      communications within a MANET/VANET local area. Clients can also use
      (H)HITs instead of TLAs for local communications when operation outside
      the context of a specific ULA domain and/or source address attestation
      is necessary.</t>

      <t>Clients use MNP-based GUAs as original IP packet/parcel source and
      destination addresses for communications with Internet destinations when
      they are within range of OMNI link supporting infrastructure that can
      inject the MNP into the routing system. Clients can also use MNP-based
      GUAs within multihop routing regions that are currently disconnected
      from infrastructure as long as the corresponding ULA-MNPs have been
      injected into the routing system.</t>

      <t>Clients use anycast GUAs as OAL and/or L2 encapsulation destination
      addresses for RS messages used to discover the nearest FHS Proxy/Server.
      When the Proxy/Server returns a solicited RA, it must also use the same
      anycast address as the RA OAL/L2 encapsulation source in order to
      successfully traverse any NATs in the path. The Client should then
      immediately transition to using the FHS Proxy/Server's discovered
      unicast OAL/L2 address as the destination in order to minimize
      dependence on the Proxy/Server's use of an anycast source address.</t>
    </section>

    <section anchor="icmperr" title="Error Messages">
      <t>An OAL destination or intermediate system may need to return
      ICMPv6-like error messages (e.g., Destination Unreachable, Packet Too
      Big, Time Exceeded, etc.) <xref target="RFC4443"/> to an OAL source.
      Since ICMPv6 error messages do not themselves include authentication
      codes, OAL nodes can instead return error messages as an OMNI ICMPv6
      Error sub-option in a secured IPv6 ND uNA message.</t>
    </section>

    <section anchor="iana" title="IANA Considerations">
      <t>The following IANA actions are requested in accordance with <xref
      target="RFC8126"/> and <xref target="RFC8726"/>:</t>

      <section anchor="iana0.25" title="Protocol Numbers Registry">
        <t>The IANA is instructed to allocate an Internet Protocol number TBD1
        from the 'protocol numbers' registry for the Overlay Multilink Network
        Interface (OMNI) protocol. Guidance is found in <xref
        target="RFC5237"/> (registration procedure is IESG Approval or
        Standards Action).</t>
      </section>

      <section anchor="iana0.5" title="IEEE 802 Numbers Registry">
        <t>During final publication stages, the IESG will be requested to
        procure an IEEE EtherType value TBD2 for OMNI according to the
        statement found at
        https://www.ietf.org/about/groups/iesg/statements/ethertypes/.</t>

        <t>Following this procurement, the IANA is instructed to register the
        value TBD2 in the 'ieee-802-numbers' registry for Overlay Multilink
        Network Interface (OMNI) encapsulation on Ethernet networks. Guidance
        is found in <xref target="RFC7042"/> (registration procedure is Expert
        Review).</t>
      </section>

      <section anchor="iana0.6"
               title="IPv4 Special-Purpose Address Registry">
        <t>The IANA is instructed to assign TBD3/N as an "OMNI IPv4 anycast"
        address/prefix in the "IPv4 Special-Purpose Address" registry in a
        similar fashion as for <xref target="RFC3068"/>. The IANA is requested
        to work with the authors to obtain a TBD3/N public IPv4 prefix,
        whether through an RIR allocation, a delegation from IANA's "IPv4
        Recovered Address Space" registry or through an unspecified third
        party donation.</t>
      </section>

      <section anchor="iana1"
               title="IPv6 Neighbor Discovery Option Formats Registry">
        <t>The IANA is instructed to allocate an official Type number TBD4
        from the "IPv6 Neighbor Discovery Option Formats" registry for the
        OMNI option (registration procedure is RFC required).</t>
      </section>

      <section anchor="iana2" title="Ethernet Numbers Registry">
        <t>The IANA is instructed to allocate one Ethernet unicast address
        TBD5 (suggested value '00-52-14') in the 'ethernet-numbers' registry
        under "IANA Unicast 48-bit MAC Addresses" (registration procedure is
        Expert Review). The registration should appear as follows:<figure
            anchor="ether-addr" title="IANA Unicast 48-bit MAC Addresses">
            <artwork><![CDATA[   Addresses      Usage                                         Reference
   ---------      -----                                         ---------
   00-52-14       Overlay Multilink Network (OMNI) Interface    [RFCXXXX]
]]></artwork>
          </figure></t>
      </section>

      <section anchor="iana3" title="ICMPv6 Code Fields">
        <t>The IANA is instructed to assign new Code values in the
        "ICMPv6 Code Fields: Type 2 - Packet Too Big" table in the
        'icmpv6-parameters' registry (registration procedure is Standards
        Action or IESG Approval). The registry entries should appear as
        follows:<figure anchor="omni-pmtu6-code"
            title="ICMPv6 Code Fields: Type 2 - Packet Too Big Values">
            <artwork><![CDATA[   Code            Name                         Reference
   ---             ----                         ---------
   0               PTB Hard Error               [RFC4443]
   1 (suggested)   PTB Soft Error (no loss)     [RFCXXXX]
   2 (suggested)   PTB Soft Error (loss)        [RFCXXXX]
]]></artwork></figure></t>
      </section>

      <section anchor="iana3.5" title="ICMPv4 PTB Messages">
        <t>The IANA is instructed to assign a new Type number TBD6 in
        the 'icmp-parameters' registry "ICMP Type Numbers" table
        (registration procedures IESG Approval or Standards Action).
        The entry should set "Type" to TBD6, "Name" to "Packet Too
        Big (PTB)" and "Reference" to [RFCXXXX] (i.e., this document).</t>

        <t>The IANA is further instructed to create a new table titled:
        "Type TBD6 - Packet Too Big (PTB)" in the 'icmp-parameters' Code
        tables, with registration procedures IESG Approval or Standards
        Action. The table should have the following initial format:
        <figure anchor="pmtu-code"
            title="Type TBD6 - Packet Too Big (PTB)">
            <artwork><![CDATA[   Code            Name                         Reference
   ---             ----                         ---------
   0               Reserved                     [RFCXXXX]
   1 (suggested)   PTB Soft Error (no loss)     [RFCXXXX]
   2 (suggested)   PTB Soft Error (loss)        [RFCXXXX]
]]></artwork></figure></t>
      </section>

      <section anchor="iana4"
               title="OMNI Option Sub-Types (New Registry)">
        <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 are given below (registration
        procedure is RFC required):<figure anchor="omni-iana"
            title="OMNI Option Sub-Type Values">
            <artwork><![CDATA[   Value    Sub-Type name                  Reference  
   -----    -------------                  ----------  
   0        Pad1                           [RFCXXXX]
   1        PadN                           [RFCXXXX]
   2        Node Identification            [RFCXXXX]
   3        Authentication                 [RFCXXXX]
   4        Window Synchronization         [RFCXXXX]
   5        Neighbor Control               [RFCXXXX]
   6        Interface Attributes           [RFCXXXX]
   7        Traffic Selector               [RFCXXXX]
   8        AERO Forwarding Parameters     [RFCXXXX]
   9        Geo Coordinates                [RFCXXXX]
   10       DHCPv6 Message                 [RFCXXXX]
   11       PIM-SM Message                 [RFCXXXX]
   12       HIP Message                    [RFCXXXX]
   13       QUIC-TLS Message               [RFCXXXX]
   14       Fragmentation Report           [RFCXXXX]
   15       ICMPv6 Error                   [RFCXXXX]
   16       Proxy/Server Departure         [RFCXXXX]
   17-29    Unassigned
   30       Sub-Type Extension             [RFCXXXX]
   31       Reserved by IANA               [RFCXXXX]
]]></artwork>
          </figure></t>
      </section>

      <section anchor="iana8"
               title="OMNI Node Identification ID-Types (New Registry)">
        <t>The OMNI Node Identification sub-option (see: <xref target="sub11"/>)
        contains an 8-bit ID-Type field, for which IANA is instructed to create
        and maintain a new registry entitled "OMNI Node Identification ID-Type
        Values". Initial values are given below (registration procedure is RFC
        required):<figure anchor="omni-duid-en"
            title="OMNI Node Identification ID-Type Values">
            <artwork><![CDATA[   Value    Sub-Type name                  Reference  
   -----    -------------                  ----------  
   0        UUID                           [RFCXXXX]  
   1        HIT                            [RFCXXXX]  
   2        HHIT                           [RFCXXXX]
   3        Network Access Identifier      [RFCXXXX]
   4        FQDN                           [RFCXXXX]
   5        IPv6 Address                   [RFCXXXX]
   6-252    Unassigned                     [RFCXXXX]
   253-254  Reserved for Experimentation   [RFCXXXX]
   255      Reserved by IANA               [RFCXXXX]
]]></artwork>
          </figure></t>
      </section>

      <section anchor="iana99"
               title="OMNI Geo Coordinates Types (New Registry)">
        <t>The OMNI Geo Coordinates sub-option (see: <xref target="sub7"/>)
        contains an 8-bit Type field, for which IANA is instructed to create
        and maintain a new registry entitled "OMNI Geo Coordinates Type
        Values". Initial values are given below (registration procedure is RFC
        required):<figure anchor="omni-geo-type"
            title="OMNI Geo Coordinates Type">
            <artwork><![CDATA[   Value    Sub-Type name                  Reference
   -----    -------------                  ----------  
   0        NULL                           [RFCXXXX]
   1-252    Unassigned                     [RFCXXXX]
   253-254  Reserved for Experimentation   [RFCXXXX]
   255      Reserved by IANA               [RFCXXXX]
]]></artwork>
          </figure></t>
      </section>

      <section anchor="iana5"
               title="OMNI Option Sub-Type Extensions (New Registry)">
        <t>The OMNI option defines an 8-bit Extension-Type field for Sub-Type
        30 (Sub-Type Extension), for which IANA is instructed to create and
        maintain a new registry entitled "OMNI Option Sub-Type Extension
        Values". Initial values are given below (registration procedure is RFC
        required):<figure anchor="omni-extensions"
            title="OMNI Option Sub-Type Extension Values">
            <artwork><![CDATA[   Value    Sub-Type name                  Reference  
   -----    -------------                  ----------  
   0        RFC4380 UDP/IP Header Option   [RFCXXXX]
   1        RFC6081 UDP/IP Trailer Option  [RFCXXXX]
   2-252    Unassigned
   253-254  Reserved for Experimentation   [RFCXXXX]
   255      Reserved by IANA               [RFCXXXX]
]]></artwork>
          </figure></t>
      </section>

      <section anchor="iana6"
               title="OMNI RFC4380 UDP/IP Header Option Types (New Registry)">
        <t>The OMNI Sub-Type Extension "RFC4380 UDP/IP Header Option" defines
        an 8-bit Header Type field, for which IANA is instructed to create and
        maintain a new registry entitled "OMNI RFC4380 UDP/IP Header Option".
        Initial registry values are given below (registration procedure is RFC
        required):<figure anchor="rfc4380-header"
            title="OMNI RFC4380 UDP/IP Header Option">
            <artwork><![CDATA[   Value    Sub-Type name                  Reference  
   -----    -------------                  ----------  
   0        Origin Indication (IPv4)       [RFC4380]
   1        Authentication Encapsulation   [RFC4380]
   2        Origin Indication (IPv6)       [RFCXXXX]
   3-252    Unassigned
   253-254  Reserved for Experimentation   [RFCXXXX]
   255      Reserved by IANA               [RFCXXXX]
]]></artwork>
          </figure></t>
      </section>

      <section anchor="iana7"
               title="OMNI RFC6081 UDP/IP Trailer Option Types (New Registry)">
        <t>The OMNI Sub-Type Extension for "RFC6081 UDP/IP Trailer Option"
        defines an 8-bit Trailer Type field, for which IANA is instructed to
        create and maintain a new registry entitled "OMNI RFC6081 UDP/IP
        Trailer Option". Initial registry values are given below (registration
        procedure is RFC required):<figure anchor="rfc6081-trailer"
            title="OMNI RFC6081 Trailer Option">
            <artwork><![CDATA[   Value    Sub-Type name                  Reference  
   -----    -------------                  ----------  
   0        Unassigned
   1        Nonce                          [RFC6081]
   2        Unassigned
   3        Alternate Address (IPv4)       [RFC6081]
   4        Neighbor Discovery Option      [RFC6081]
   5        Random Port                    [RFC6081]
   6        Alternate Address (IPv6)       [RFCXXXX]
   7-252    Unassigned
   253-254  Reserved for Experimentation   [RFCXXXX]
   255      Reserved by IANA               [RFCXXXX]]]></artwork>
          </figure></t>
      </section>

      <section anchor="iana9" title="Additional Considerations">
        <t>The IANA has assigned the UDP port number "8060" for an earlier
        experimental version of AERO <xref target="RFC6706"/>. This document
        reclaims the UDP port number "8060" for 'aero' as the service port for
        UDP/IP encapsulation. (Note that, although <xref target="RFC6706"/> is
        not widely implemented or deployed, any messages coded to that
        specification can be easily distinguished and ignored since they
        include an invalid ICMPv6 message type number '0'.) The IANA is
        therefore instructed to update the reference for UDP port number
        "8060" from "RFC6706" to "RFCXXXX" (i.e., this document) while
        retaining the existing name 'aero'.</t>

        <t>The IANA has assigned a 4-octet Private Enterprise Number (PEN)
        code "45282" in the "enterprise-numbers" registry. This document is
        the normative reference for using this code in DHCP Unique IDentifiers
        based on Enterprise Numbers ("DUID-EN for OMNI Interfaces") (see:
        <xref target="node-id"/>). The IANA is therefore instructed to change
        the enterprise designation for PEN code "45282" from "LinkUp Networks"
        to "Overlay Multilink Network Interface (OMNI)".</t>

        <t>The IANA has assigned the ifType code "301 - omni - Overlay
        Multilink Network Interface (OMNI)" in accordance with Section 6 of
        <xref target="RFC8892"/>. The registration appears under the IANA
        "Structure of Management Information (SMI) Numbers (MIB Module
        Registrations) - Interface Types (ifType)" registry.</t>

        <t>No further IANA actions are required.</t>
      </section>
    </section>

    <section anchor="secure" title="Security Considerations">
      <t>Security considerations for IPv4 <xref target="RFC0791"/>, IPv6 <xref
      target="RFC8200"/> and IPv6 Neighbor Discovery <xref target="RFC4861"/>
      apply. OMNI interface IPv6 ND messages SHOULD include Nonce and
      Timestamp options <xref target="RFC3971"/> when transaction confirmation
      and/or time synchronization is needed.</t>

      <t>OMNI interfaces configured over secured ANET/ENET interfaces inherit
      the physical and/or link layer security properties (i.e., "protected
      spectrum") of the connected networks. OMNI interfaces configured over
      open INET interfaces can use symmetric securing services such as IPsec
      tunnels <xref target="RFC4301"/> or can by some other means establish
      a direct point-to-point link secured at lower layers. When lower layer
      security may be impractical or undesirable, however, control message
      integrity and authorization services such as those specified in
      <xref target="RFC7401"/>, <xref target="RFC4380"/>, <xref target=
      "RFC6234"/>, <xref target="RFC9000"/>, etc. must be employed.</t>

      <t>OMNI link mobility services MUST support strong network layer
      authentication for control plane messages and forwarding path integrity
      for data plane messages. In particular, the AERO service <xref
      target="I-D.templin-intarea-aero2"/> constructs a secured spanning tree
      with Proxy/Servers as leaf nodes and secures the spanning tree links
      with network layer security mechanisms such as IPsec <xref target="RFC4301"/>
      with IKEv2 <xref target="RFC7296"/>. (Note that direct point-to-point
      links secured at lower layers can also be used instead of or in addition
      to network layer security.) These network (and/or lower-layer) services
      together provide connectionless integrity and data origin authentication
      with optional protection against replays.</t>

      <t>Control plane messages that affect the routing system must be
      constrained to travel only over secured spanning tree paths and are
      therefore protected by network (and/or lower-layer) security. Other
      control and data plane messages can travel over unsecured route
      optimized paths that do not strictly follow the spanning tree,
      therefore end-to-end sessions should employ transport or higher
      layer security services (e.g., TLS/SSL <xref target="RFC8446"/>,
      DTLS <xref target="RFC6347"/>, etc.). Additionally, the OAL
      Identification value can provide a first level of data origin
      authentication to mitigate off-path spoofing.</t>

      <t>Identity-based key verification infrastructure services such as iPSK
      may be necessary for verifying the identities claimed by Clients. This
      requirement should be harmonized with the manner in which identifiers
      such as (H)HITs are attested in a given operational environment.</t>

      <t>Security considerations for specific access network interface types
      are covered under the corresponding IP-over-(foo) specification (e.g.,
      <xref target="RFC2464"/>, <xref target="RFC2492"/>, etc.).</t>

      <t>Security considerations for IPv6 fragmentation and reassembly are
      discussed in <xref target="fragsec"/>. In environments where spoofing is
      considered a threat, OMNI nodes SHOULD employ Identification window
      synchronization and OAL destinations SHOULD configure an
      (end-system-based) firewall.</t>
    </section>

    <section anchor="imp" title="Implementation Status">
      <t>AERO/OMNI Release-3.2 was tagged on March 30, 2021, and is undergoing
      internal testing. Additional internal releases expected within the
      coming months, with first public release expected end of 1H2021.</t>

      <t>Many AERO/OMNI functions are implemented and undergoing final
      integration. OAL fragmentation/reassembly buffer management code has
      been cleared for public release.</t>

      <t>Implementation of AERO/OMNI functions specified in more recent
      document versions is considered work in progress.</t>
    </section>

    <section anchor="updates" title="Document Updates">
      <t>This document suggests that the following could be updated through
      future IETF initiatives:<list
          style="symbols">
          <t><xref target="RFC1191"/></t>

          <t><xref target="RFC2675"/></t>

          <t><xref target="RFC4443"/></t>

          <t><xref target="RFC8200"/></t>

          <t><xref target="RFC8201"/></t>
        </list>Updates can be through, e.g., standards action, the errata
      process, etc. as appropriate.</t>
    </section>

    <section anchor="ack" title="Acknowledgements">
      <t>The first version of this document was prepared per the consensus
      decision at the 7th Conference of the International Civil Aviation
      Organization (ICAO) Working Group-I Mobility Subgroup on March 22, 2019.
      Consensus to take the document forward to the IETF was reached at the
      9th Conference of the Mobility Subgroup on November 22, 2019. Attendees
      and contributors included: Guray Acar, Danny Bharj, Francois
      D&acute;Humieres, Pavel Drasil, Nikos Fistas, Giovanni Garofolo,
      Bernhard Haindl, Vaughn Maiolla, Tom McParland, Victor Moreno, Madhu
      Niraula, Brent Phillips, Liviu Popescu, Jacky Pouzet, Aloke Roy, Greg
      Saccone, Robert Segers, Michal Skorepa, Michel Solery, Stephane Tamalet,
      Fred Templin, Jean-Marc Vacher, Bela Varkonyi, Tony Whyman, Fryderyk
      Wrobel and Dongsong Zeng.</t>

      <t>The following individuals are acknowledged for their useful comments:
      Amanda Baber, Scott Burleigh, Stuart Card, Donald Eastlake, Adrian Farrel,
      Michael Matyas, Robert Moskowitz, Madhu Niraula, Greg Saccone, Stephane
      Tamalet, Eliot Lear, Eduard Vasilenko, Eric Vyncke. Pavel Drasil, Zdenek
      Jaron and Michal Skorepa are especially recognized for their many helpful
      ideas and suggestions. Akash Agarwal, Madhuri Madhava Badgandi, Sean
      Dickson, Don Dillenburg, Joe Dudkowski, Vijayasarathy Rajagopalan, Ron
      Sackman, Bhargava Raman Sai Prakash and Katherine Tran are acknowledged
      for their hard work on the implementation and technical insights that
      led to improvements for the spec.</t>

      <t>Discussions on the IETF 6man and atn mailing lists during the fall of
      2020 suggested additional points to consider. The authors gratefully
      acknowledge the list members who contributed valuable insights through
      those discussions. Eric Vyncke and Erik Kline were the intarea ADs,
      while Bob Hinden and Ole Troan were the 6man WG chairs at the time the
      document was developed; they are all gratefully acknowledged for their
      many helpful insights. Many of the ideas in this document have further
      built on IETF experiences beginning in the 1990s, with insights from
      colleagues including Ron Bonica, Brian Carpenter, Ralph Droms, Tom
      Herbert, Bob Hinden, Christian Huitema, Thomas Narten, Dave Thaler,
      Joe Touch, Pascal Thubert, and many others who deserve recognition.</t>

      <t>Early observations on IP fragmentation performance implications were
      noted in the 1986 Digital Equipment Corporation (DEC) "qe reset"
      investigation, where fragment bursts from NFS UDP traffic triggered
      hardware resets resulting in communication failures. Jeff Chase, Fred
      Glover and Chet Juzsczak of the Ultrix Engineering Group led the
      investigation, and determined that setting a smaller NFS mount block
      size reduced the amount of fragmentation and suppressed the resets.
      Early observations on L2 media MTU issues were noted in the 1988 DEC
      FDDI investigation, where Raj Jain, KK Ramakrishnan and Kathy Wilde
      represented architectural considerations for FDDI networking in general
      including FDDI/Ethernet bridging. Jeff Mogul (who led the IETF Path MTU
      Discovery working group) and other DEC colleagues who supported these
      early investigations are also acknowledged.</t>

      <t>Throughout the 1990's and into the 2000's, many colleagues supported
      and encouraged continuation of the work. Beginning with the DEC Project
      Sequoia effort at the University of California, Berkeley, then moving to
      the DEC research lab offices in Palo Alto CA, then to Sterling Software
      at the NASA Ames Research Center, then to SRI in Menlo Park, CA, then to
      Nokia in Mountain View, CA and finally to the Boeing Company in 2005 the
      work saw continuous advancement through the encouragement of many. Those
      who offered their support and encouragement are gratefully
      acknowledged.</t>

      <t>This work is aligned with the NASA Safe Autonomous Systems Operation
      (SASO) program under NASA contract number NNA16BD84C.</t>

      <t>This work is aligned with the FAA as per the SE2025 contract number
      DTFAWA-15-D-00030.</t>

      <t>This work is aligned with the Boeing Information Technology (BIT)
      Mobility Vision Lab (MVL) program.</t>

      <t>Honoring life, liberty and the pursuit of happiness.</t>
    </section>
  </middle>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      <?rfc include="reference.I-D.templin-6man-parcels2"?>

      <?rfc include="reference.I-D.templin-intarea-parcels2"?>

      <?rfc include="reference.I-D.templin-6man-ipid-ext"?>
    </references>

    <references title="Informative References">
      <?rfc include="reference.RFC.3692"?>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      <?rfc include="reference.I-D.ietf-intarea-tunnels"?>

      <?rfc include="reference.I-D.ietf-6man-eh-limits"?>

      <?rfc include="reference.I-D.ietf-tsvwg-udp-options"?>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      <reference anchor="CRC">
        <front>
          <title>Error Characteristics of Fiber Distributed Data Interface
          (FDDI), IEEE Transactions on Communications</title>

          <author fullname="Raj Jain" initials="R" surname="Jain">
            <organization/>
          </author>

          <date month="August" year="1990"/>
        </front>
      </reference>

      <reference anchor="CKSUM">
        <front>
          <title>Performance of Checksums and CRC's Over Real Data, IEEE/ACM
          Transactions on Networking, Vol. 6, No. 5</title>

          <author fullname="Jonathan Stone" initials="J" surname="Stone">
            <organization/>
          </author>

          <author fullname="Michael Greenwald" initials="M"
                  surname="Greenwald">
            <organization/>
          </author>

          <author fullname="Craig Partridge" initials="C" surname="Partridge">
            <organization/>
          </author>

          <author fullname="James Hughes" initials="J" surname="Hughes">
            <organization/>
          </author>

          <date month="October" year="1998"/>
        </front>
      </reference>

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

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

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

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

      <?rfc include="reference.I-D.ietf-ipwave-vehicular-networking"?>

      <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></author>

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

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

      <reference anchor="IPV4-GUA">
        <front>
          <title>IPv4 Address Space Registry,
          https://www.iana.org/assignments/ipv4-address-space/ipv4-address-space.xhtml</title>

          <author fullname="Jon Postel" initials="J." surname="Postel">
            <organization/>
          </author>

          <date day="14" month="December" year="2020"/>
        </front>
      </reference>

      <reference anchor="IPV6-GUA">
        <front>
          <title>IPv6 Global Unicast Address Assignments,
          https://www.iana.org/assignments/ipv6-unicast-address-assignments/ipv6-unicast-address-assignments.xhtml</title>

          <author fullname="Jon Postel" initials="J." surname="Postel">
            <organization/>
          </author>

          <date day="14" month="December" year="2020"/>
        </front>
      </reference>

      <reference anchor="EUI">
        <front>
          <title>IEEE Guidelines for Use of Extended Unique Identifier (EUI),
          Organizationally Unique Identifier (OUI), and Company ID,
          https://standards.ieee.org/wp-content/uploads/import/documents/tutorials/eui.pdf</title>

          <author></author>

          <date day="3" month="August" year="2017"/>
        </front>
      </reference>

      <reference anchor="IEEE802.1AX">
        <front>
          <title>Institute of Electrical and Electronics Engineers,
          Link Aggregation, IEEE Standard 802.1AX-2008,
          https://standards.ieee.org/ieee/802.1AX/6768/</title>

          <author></author>

          <date day="29" month="May" year="2020"/>
        </front>
      </reference>

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

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

      <?rfc include="reference.I-D.ietf-drip-rid"?>

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

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

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

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

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

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

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

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

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

      <?rfc include="reference.I-D.ietf-6man-comp-rtg-hdr"?>

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

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

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

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

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

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

      <?rfc include="reference.I-D.templin-intarea-aero2"?>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      <?rfc include="reference.I-D.perkins-manet-aodvv2"?>
    </references>

    <section anchor="fletcher" title="IPv4 Fragmentation Checksum Algorithm">
      <t>The IPv4 fragmentation checksum algorithm adopts the 8-bit Fletcher
      algorithm specified in Appendix I of <xref target="RFC1146"/> as also
      analyzed in <xref target="CKSUM"/>. <xref target="RFC6247"/> declared
      <xref target="RFC1146"/> historic for the reason that the algorithms
      had never seen widespread use with TCP, however this document adopts
      the 8-bit Fletcher algorithm for a different purpose. Quoting from
      Appendix I of <xref target="RFC1146"/>, the IPv4 Fragmentation
      Checksum Algorithm proceeds as follows:</t>

      <t><list style="empty">
          <t>"The 8-bit Fletcher Checksum Algorithm is calculated over a
          sequence of data octets (call them D[1] through D[N]) by maintaining
          2 unsigned 1's-complement 8-bit accumulators A and B whose contents
          are initially zero, and performing the following loop where i ranges
          from 1 to N:<list style="empty">
              <t>A := A + D[i]</t>

              <t>B := B + A</t>
            </list>It can be shown that at the end of the loop A will contain
          the 8-bit 1's complement sum of all octets in the datagram, and that
          B will contain (N)D[1] + (N-1)D[2] + ... + D[N]."</t>
        </list></t>

      <t>To calculate the IPv4 fragmentation checksum, the above algorithm is
      applied over the N-octets of the L2-encapsulated OAL packet/fragment body
      beginning immediately after the L2 encapsulation header(s).</t>
    </section>

    <section anchor="ipv6-compat" title="IPv6 Compatible Addresses">
      <t>Section 2.5.5.1 of <xref target="RFC4291"/> defines an "IPv4-Compatible
      IPv6 Address" with the following structure:<figure anchor="v4compat"
                title="IPv4-Compatible IPv6 Address">
                <artwork><![CDATA[   |                80 bits               | 16 |      32 bits        |
   +--------------------------------------+----+---------------------+
   |0000..............................0000|0000|    IPv4 address     |
   +--------------------------------------+----+---------------------+
]]></artwork></figure></t>
      <t>Although <xref target="RFC4291"/> deprecates the address format
      from its former use in IPv6 transition mechanisms, this document
      now assigns new uses and therefore updates <xref target="RFC4291"/>.</t>

      <t>When an IPv4-Compatible IPv6 address appears in a packet sent
      over the wire, the most significant 96 bits are 0 and the least
      significant 32 bits include an IPv4 address as shown above.</t>

      <t>When the address format is used for temporary local address
      conversions to IPv6, however, it can also be used to represent
      EUI-48 and EUI-64 addresses as shown below:<figure
      anchor="euicompat" title="EUI-[48/64] Compatible IPv6 Addresses">
<artwork><![CDATA[   |                80 bits               |          48 bits         |
   +--------------------------------------+--------------------------+
   |0000..............................0000|      EUI-48 address      |
   +--------------------------------------+--------------------------+

   |             64 bits            |             64 bits            |
   +--------------------------------+--------------------------------+
   |0000........................0000|         EUI-64 address         |
   +--------------------------------+--------------------------------+
]]></artwork></figure></t>

      <t>The above EUI-48 and EUI-64 compatible IPv6 forms MAY be used
      for temporary local address conversions, such as when converting
      EUI addresses to IPv6 to support IPv6 fragmentation/reassembly.
      The address forms MUST NOT appear in the IPv6 headers of packets
      sent over the wire, however they MAY appear in the body of a
      packet if also accompanied by a Type designator.</t>
    </section>

    <section anchor="integrity"
             title="IPv6 ND Message Authentication and Integrity">
      <t>OMNI interface IPv6 ND messages are subject to authentication and
      integrity checks at multiple levels. When an OMNI interface sends an
      IPv6 ND message over an INET interface, it includes an authentication
      sub-option with a valid signature if necessary and always includes an
      IPv6 ND message checksum. The OMNI interface that receives the message
      verifies the IPv6 ND message checksum followed by the authentication
      signature (if present) to ensure IPv6 ND message integrity and
      authenticity.</t>

      <t>When an OMNI interface sends an IPv6 ND message over an underlay
      interface connected to a secured network, it omits authentication
      (sub-)options but always calculates/includes an IPv6 ND message checksum
      beginning with a pseudo-header of the IPv6 header and extending to the
      end of the IPv6 ND message only with the Checksum field itself set to
      0. When an OMNI interface sends an IPv6 ND message over an underlay
      interface connected to an unsecured network, it first includes an
      authentication (sub-)option and calculates the signature beginning
      with the first octet following the IPv6 ND message header Checksum
      field and extending to the end of the entire packet or super-packet
      with the authentication signature field  set to 0. The OMNI interface
      next writes the signature into the signature field, then calculates
      the IPv6 ND message checksum as above.</t>

      <t>The OMNI interface that receives the message applies any link layer
      authentication and integrity checks, then verifies the IPv6 ND message
      checksum. If the checks are correct, the OMNI interface next verifies
      the authentication signature. The OMNI interface then processes the
      packet further only if all checksums and authentication signatures
      were correct.</t>

      <t>OAL destinations also discard carrier packets with unacceptable
      Identifications and submit the encapsulated fragments in all others for
      reassembly. The reassembly algorithm rejects any fragments with
      unacceptable sizes, offsets, etc. and reassembles all others. During
      reassembly, the extended Identification value provides an integrity
      assurance vector that compliments any integrity checks already applied
      by lower layers as well as a first-pass filter for any checks that
      will be applied later by upper layers.</t>
    </section>

    <section anchor="vdlm2" title="VDL Mode 2 Considerations">
      <t>ICAO Doc 9776 is the "Technical Manual for VHF Data Link Mode 2"
      (VDLM2) that specifies an essential radio frequency data link service
      for aircraft and ground stations in worldwide civil aviation air traffic
      management. The VDLM2 link type is "multicast capable" <xref
      target="RFC4861"/>, but with considerable differences from common
      multicast links such as Ethernet and IEEE 802.11.</t>

      <t>First, the VDLM2 link data rate is only 31.5Kbps - multiple orders of
      magnitude less than most modern wireless networking gear. Second, due to
      the low available link bandwidth only VDLM2 ground stations (i.e., and
      not aircraft) are permitted to send broadcasts, and even so only as
      compact link layer "beacons". Third, aircraft employ the services of ground
      stations by performing unicast RS/RA exchanges upon receipt of beacons
      instead of listening for multicast RA messages and/or sending multicast
      RS messages.</t>

      <t>This beacon-oriented unicast RS/RA approach is necessary to conserve
      the already-scarce available link bandwidth. Moreover, since the numbers
      of beaconing ground stations operating within a given spatial range must
      be kept as sparse as possible, it would not be feasible to have
      different classes of ground stations within the same region observing
      different protocols. It is therefore highly desirable that all ground
      stations observe a common language of RS/RA as specified in this
      document.</t>

      <t>Note that links of this nature may benefit from compression
      techniques that reduce the bandwidth necessary for conveying the same
      amount of data. The IETF lpwan working group is considering possible
      alternatives: [https://datatracker.ietf.org/wg/lpwan/documents].</t>
    </section>

    <section anchor="ipv6ndmap"
             title="Client-Proxy/Server Isolation Through Link-Layer Address Mapping">
      <t>Per <xref target="RFC4861"/>, IPv6 ND messages may be sent to either
      a multicast or unicast link-scoped IPv6 destination address. However,
      IPv6 ND messaging should be coordinated between the Client and
      Proxy/Server only without invoking other nodes on the underlay network.
      This implies that Client-Proxy/Server control messaging should be
      isolated and not overheard by other nodes on the link.</t>

      <t>To support Client-Proxy/Server isolation on some links, Proxy/Servers
      can maintain an OMNI-specific unicast link layer address ("MSADDR"). For
      Ethernet-compatible links, this specification reserves one Ethernet
      unicast address TBD5 (see: IANA Considerations). For non-Ethernet
      statically-addressed links MSADDR is reserved per the assigned numbers
      authority for the link layer addressing space. For still other links,
      MSADDR may be dynamically discovered through other means, e.g.,
      link layer beacons.</t>

      <t>Clients map the L3 addresses of all IPv6 ND messages they send (i.e.,
      both multicast and unicast) to MSADDR instead of to an ordinary unicast
      or multicast link layer address. In this way, all of the Client's IPv6
      ND messages will be received by Proxy/Servers that are configured to
      accept carrier packets destined to MSADDR. Note that multiple
      Proxy/Servers on the link could be configured to accept carrier packets
      destined to MSADDR, e.g., as a basis for supporting redundancy.</t>

      <t>Therefore, Proxy/Servers must accept and process carrier packets
      destined to MSADDR, while all other devices must not process carrier
      packets destined to MSADDR. This model has well-established operational
      experience in Proxy Mobile IPv6 (PMIP) <xref target="RFC5213"/><xref
      target="RFC6543"/>.</t>
    </section>

    <section anchor="changes" title="Change Log">
      <t>&lt;&lt; RFC Editor - remove prior to publication &gt;&gt;</t>

      <t>Differences from earlier versions:<list style="symbols">
          <t>Submit for review.</t>
        </list></t>
    </section>
  </back>
</rfc>
