<?xml version="1.0" encoding="utf-8"?>
<!-- vim: et:ts=2:sw=2
  -->
<rfc
  xmlns:xi="http://www.w3.org/2001/XInclude"
  xml:lang="en"
  category="std"
  docName="draft-ietf-6man-sub-link-scope-multicast-00"
  ipr="trust200902"
  obsoletes=""
  updates="2464,6085,7371"
  submissionType="IETF"
  consensus="true"
  version="3">
  <front>
    <title abbrev="6man-sub-link-scope-multicast">Sub-Link Scoped IPv6 Multicast Addressing</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-6man-sub-link-scope-multicast-00"/>
    <author fullname="David 'equinox' Lamparter" initials="D" surname="Lamparter">
      <organization>NetDEF, Inc.</organization>
      <address>
        <postal>
          <city>San Jose</city>
          <country>USA</country>
        </postal>
        <email>equinox@diac24.net</email>
        <email>equinox@opensourcerouting.org</email>
      </address>
    </author>
    <date year="2026"/>
    <area>Internet</area>
    <workgroup>IPv6 Maintenance</workgroup>
    <keyword>IPv6</keyword>
    <keyword>multicast</keyword>
    <keyword>ethernet</keyword>
    <keyword>link-scope</keyword>
    <keyword>LLDP</keyword>
    <abstract>
      <t>
          The IPv6 addressing architecture for multicast has the scope of
          a multicast group embedded in its address, with the smallest
          non-reserved scopes being interface-local and link-local, numbered
          1 and 2.  This document suggests the introduction of a scope
          inbetween these two, for use with lower-layer transport multicast
          that reaches parts of a link.  Since there is no room to
          insert a scope value for this, a separate address block is used.
          A mapping for Ethernet as lower-layer transport is provided.
      </t>
    </abstract>
  </front>
  <middle>
    <section>
      <name>Introduction</name>
      <t>
        <cref>
          This draft lives at <eref target="https://github.com/eqvinox/6man-sub-link-scope-multicast"/>
        </cref>
      </t>
      <t>
          A major application of IPv6 multicast is in discovery protocols to
          find other systems participating in the same protocol on the same link.
          These applications commonly use an IPv6 multicast address in the
          ff02::/16 range, i.e. scoped to the link.
      </t>
      <t>
          In some cases however, it is useful to further limit the scope of
          discovery for an application.  In particular, a device's immediate 
          attachment segment to a layer 2 domain (i.e. switch) is useful for
          hybrid layer 2/3 setups (e.g. EVPN <xref target="EVPN"/>), as well as
          for situations where the first layer 2 hop might be trusted but other
          participants in the broadcast domain are not.
      </t>
      <t>
          Ongoing work in this area has resorted to using LLDP
          <xref target="LLDP"/> as a transport and encapsulating their data,
          e.g. <xref target="BGP-LLDP"/> and <xref target="HOSTRT-LLDP"/>.
          However, LLDP was designed as a layer 2 discovery protocol, and its
          use in such applications has drawbacks like limiting choice on the
          actual scope getting used, interacting nontrivially with STP,
          complicating security considerations, and first and foremost
          creating dependencies between components that are normally
          independent of each other.
      </t>
      <t>
          The desirable functionality in these cases is not necessarily LLDP
          itself, but rather the limited scope of propagation for the
          discovery protocol.  This document exposes these scopes for use in
          IPv6 multicast.
      </t>
    </section>
    <section>
      <name>Requirements Language</name>
      <t>
          The key words "MUST", "MUST NOT", "REQUIRED", "SHALL",
          "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT
          RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be
          interpreted as described in BCP 14 <xref target="RFC2119"/>
          <xref target="RFC8174"/> when, and only when, they appear in
          all capitals, as shown here.
      </t>
    </section>

    <section anchor="behavior">
      <name>Behavior of Sub-Link scoped multicast groups / addresses</name>
      <t>
          The representation of addresses in this document introduces two
          fields, "linktype" and "linkspecific".  The former is used to index
          into new IANA-managed allocations of values identifying 
          lower-layer link technologies.  Given that value, the latter is then
          used to identify a particular lower-link multicast behavior.
      </t>
      <t>
          Packets with a multicast destination address of this structure
          behave as follows:
      </t>
      <ol>
        <li>
            Packets indicating an unknown linktype, and packets indicating
            a linktype that does not match the link in use <bcp14>MUST</bcp14>
            be discarded, and <bcp14>MUST NOT</bcp14> be sent.
        </li>
        <li>
            If for a received packet, the scope used to send it can be identified,
            e.g. by a lower-layer destination address or other field indicating
            scope of distribution, packets where this does not match the
            "linkspecific" value <bcp14>MUST</bcp14> be discarded and
            <bcp14>MUST NOT</bcp14> be sent.  This also includes discarding
            packets that used unicast on the lower layer.
        </li>
        <li>
            "Optimizing" multicast addresses mapping to lower-layer unicast
            (e.g. <xref target="MCinUC"/>) <bcp14>MUST NOT</bcp14> be applied.
        </li>
        <li>
            Packets with "linkspecific" values not specified by a link layer's
            bindings <bcp14>MUST</bcp14> be discarded and
            <bcp14>MUST NOT</bcp14> be sent.
        </li>
        <li>
            All mechanisms governing multicast packets with link-local scope
            apply. In particular, they <bcp14>MUST NOT</bcp14> be forwarded onto
            another link by a multicast router.
        </li>
        <li>
            Packets discarded by the above requirements <bcp14>SHOULD</bcp14>
            be counted and/or logged, but if logging is implemented it
            <bcp14>MUST</bcp14> be limited as to prevent denial of service
            (CPU and log disk space particularly) attacks.  Not reporting these
            mismatches deprives the operator of an indicator that some security
            breach might be attempted and should only be considered if the
            node has no good way to report them.
        </li>
      </ol>
    </section>
    <section anchor="structure">
      <name>Sub-Link scoped multicast address structure</name>
      <t>
        <xref target="MCASTARCH"/> defines the structure of IPv6 multicast
          addresses as follows:
      </t>
      <artwork name="Multicast Address Structure (existing)">
|   8    |  4 |  4 |  4 |  4 |    8   |       64       |    32    |
+--------+----+----+----+----+--------+----------------+----------+
|11111111|ff1 |scop|ff2 |rsvd|  plen  | network prefix | group ID |
+--------+----+----+----+----+--------+----------------+----------+</artwork>
      <t>With ff1 as follows:</t>
      <artwork name="Existing &quot;flgs&quot; field">
+-+-+-+-+
|X|Y|P|T|
+-+-+-+-+</artwork>
      <t>
          The combination of P = 1, T = 0 was explicitly forbidden.
          This document redefines that combination to indicate a sub-link
          scoped multicast address.
      </t>
      <t>
          For an IPv6 multicast address with this combination of bits, the
          scope value <bcp14>MUST</bcp14> be set to 2.  The following further
          structure is defined:
      </t>
      <artwork name="Multicast Address Structure (sub-link scoped group)">
|   8    |  4 |  4 |  4 |  4 |    72 bits   | 32 bits  |
+--------+----+----+----+----+--------------+----------+
|11111111|XY10|0010|ff2 |type| linkspecific | group ID |
+--------+----+----+----+----+--------------+----------+</artwork>
      <t>The (non-constant) fields are as follows:</t>
      <dl>
        <dt>X, Y and ff2</dt>
        <dd>As in <xref target="MCASTARCH"/></dd>
        <dt>type ("linktype")</dt>
        <dd>Values from a newly established registry that identifies the
          lower-layer link technology in use, and therefore the meaning of the
          next field.</dd>
        <dt>linkspecific</dt>
        <dd>Lower-layer link specific information identifying which lower-layer
          multicast group/mechanism is to be used for this group.</dd>
        <dt>group ID</dt>
        <dd>Identifies the multicast group as with other types of multicast
          group addresses.</dd>
      </dl>
      <t>
          No meaning is defined for the X and Y bits, as well as the flags in
          the ff2 field.  They <bcp14>MUST</bcp14> be sent as zero and packets
          received with nonzero values <bcp14>MUST</bcp14> be discarded until
          some other document assigns some meaning to them.
          (The use of an embedded RP address is nonsensical for a
          multicast group that is never forwarded, as such the interpretation
          of Y to signal an embedded RP address is not applicable here.)
      </t>
      <t>
          There is no conflict with the "plen"/"network prefix" fields used
          in other multicast addresses since the scope defined here is
          less than even a link.  Deriving unique addresses on a larger scale
          is thus unnecessary.
      </t>
      <t>
          The use of P = 1, T = 0 with other scope values other than 2 is not
          specified by this document, currently reserved, and available for
          future use elsewhere.
      </t>
    </section>
    <section anchor="mld">
      <name>MLD applicability</name>
      <t>
          to be decided
      </t>
    </section>
    <section anchor="osapi">
      <name>Operating system API considerations</name>
      <t>
          While multicast group addresses as outlined in this document fit the
          existing multicast socket interface outlined in <xref target="BASICSOCKET"/>
          and <xref target="SSMSOCKET"/>, the following considerations apply:
      </t>
      <ol>
        <li>
            since packets with mismatching lower layer vs. IPv6 indicators
            are already required to be discarded, applications can expect a
            packet received with a sub-link-scope multicast addresses have
            in fact been limited to the indicated scope of forwarding.
        </li>
        <li>
            requests by an application to join a group with unsupported or
            invalid "linktype" or "linkspecific" value <bcp14>SHOULD</bcp14>
            be rejected with an error.  Not rejecting such values runs the
            risk of complicating future introductions of new identifiers, and
            introduces a risk of generating invalid packets by confusing
            link-layer technologies on send.
        </li>
        <li>
            for transmission, the sub-link behavior is not separately requested,
            the destination address is the indicator and any packets to an
            address described in this document <bcp14>MUST</bcp14> use the
            appropriate lower-layer delivery without further action by the
            application.
        </li>
        <li>
            the API <bcp14>MUST</bcp14> provide a way to determine whether the
            behavior described in this document is in fact supported.  If the
            system was previously rejecting multicast addresses in the
            ff22::/16 range, the fact that they are now accepted is sufficient.
            However, most known systems are in fact accepting applications
            joining or sending to these groups.  In that case, an explicit
            query for support for this mechanism <bcp14>MUST</bcp14> be
            provided.
        </li>
      </ol>
    </section>
    <section anchor="ethernet">
      <name>Bindings to Ethernet</name>
      <t>
          Ethernet is by far the most commonly used lower-layer link technology
          carrying IPv6 at this point.  For Ethernet's less than whole link
          multicast addresses, <xref target="IPV6oETH"/> is updated for the
          following more specific address format and mapping:
      </t>
      <artwork name="Multicast Address Structure (sub-link scoped, Ethernet)">
|   8    |  4 |  4 |  4 |  4 |   24 bits  | 48 bits  |  32 bits |
+--------+----+----+----+----+------------+----------+----------+
|11111111|øø10|0010|øøøø|1110| MAC_suffix | reserved | group ID |
+--------+----+----+----+----+------------+----------+----------+

maps to:  01-80-C2-MAC_suffix</artwork>
      <t>
          (The "ø" symbol is used to indicate reserved flag fields that are
          currently required to be zero.)
      </t>
      <t>The (non-constant) fields are as follows:</t>
      <dl>
        <dt>linktype</dt>
        <dd>Set to Eh, indicating the lower-layer is Ethernet and its
          multicast capabilities are being expressed.</dd>
        <dt>MAC_suffix</dt>
        <dd>The second half of an Ethernet address with special behavior
          defined in 802.1Q.  The first half of such addresses is 01:80:C2.
          Concatenating the two halves forms a full Ethernet address.</dd>
        <dt>reserved</dt>
        <dd>No meaning is currently assigned to these bits.  They
          <bcp14>MUST</bcp14> be sent as zero and packets with nonzero
          values in this field <bcp14>MUST</bcp14> be discarded.</dd>
        <dt>group ID</dt>
        <dd>As elsewhere.</dd>
      </dl>
      <t>
          While 802.1Q does not currently define any specific behavior outside
          of the range 01:80:C2:00:00:00 to 01:80:C2:00:00:3F, the entire
          block is made representable in the interest of future proofing.
      </t>
      <t>
          This section is applicable to all link layers using MAC-48 addresses
          and the forwarding behavior described in 802.1Q.  This notably also
          includes 802.11, despite the additional multicast considerations
          for wireless networks.
      </t>
      <t>
          Since the destination address in a received Ethernet frame
          indicates which multicast scope it was distributed to, it
          <bcp14>MUST</bcp14> be verified to match the MAC suffix in the
          IPv6 address as noted in <xref target="behavior"/>.
          <xref target="MCinUC"/> <bcp14>MUST NOT</bcp14> be applied.
      </t>
      <t>
          When joining any of these groups on a layer 2 forwarding device's
          IPv6 stack, the join <bcp14>MUST NOT</bcp14> affect forwarding
          behavior for Ethernet frames addressed to these Ethernet
          multicast addresses, including IPv6 packets.  Whether or not these
          groups are forwarded or not is solely defined by IEEE 802.1Q.
      </t>
      <section anchor="eth_guidance">
        <name>Ethernet group usage guidance</name>
        <t>
            Since the 802.1Q definitions have mostly been made with an intent
            of a specific use case, they do not directly express a forwarding
            scope, rather a forwarding scope is derived from their use.
            However, some of the addresses have shifted into functioning
            as scope indicator.  The use of such addresses is
            <bcp14>RECOMMENDED</bcp14> and at the time of creation of this
            document they were, in ascending distribution size:
        </t>
        <dl>
          <dt>01:80:C2:00:00:0E - ff22:e00:e::/96</dt>
          <dd>
              never forwarded, not even by Two-Port MAC Relays (TPMRs; intelligent media
              converters.)  Originally intended for LLDP.  Note that this group
              may bypass the port-blocked state in STP since the forwarding
              loops avoided by STP are not a concern when forwarding is as
              restricted as with this group, and LLDP was intended to work on
              ports that are blocked in STP.
          </dd>
          <dt>01:80:C2:00:00:03 - ff22:e00:3::/96</dt>
          <dd>
              Forwarded only by TPMRs, terminates at nearest multi-port relay
              of any kind. Primarily used for 802.1X port authentication (and
              therefore also MACsec key agreement).  Since TPMRs are more or less
          </dd>
          <dt>01:80:C2:00:00:00 - ff22:e00:0::/96</dt>
          <dd>
              Forwarded until closest "Customer Bridge", but in practice refers
              to STP-enabled switches, i.e. is dropped by any switch running
              STP but forwarded if STP is disabled.
          </dd>
        </dl>
        <t>
            The above list is a recommendation only, and ultimately it is up
            to the architects developing a particular use of sub-link scoped
            multicast to choose an appropriate group given the constraints
            and behavior in the IEEE 802 standards.
        </t>
      </section>
      <section anchor="eth_join">
        <name>Default groups</name>
        <t>
            The following groups <bcp14>SHOULD</bcp14> be automatically joined
            by all IPv6 nodes implementing this specification, since they are
            useful to operators for OAM purposes:
        </t>
        <ul>
          <li>ff22:e00:3::1 (All Nodes on Ethernet segment to next multiport switch)</li>
          <li>ff22:e00:e::1 (All Nodes on immediate Ethernet segment)</li>
        </ul>
        <t>
            Additionally, the following group <bcp14>SHOULD</bcp14> be joined
            by all IPv6 routers implementing this specification:
        </t>
        <ul>
          <li>ff22:e00:3::2 (All Routers on Ethernet segment to next multiport switch)</li>
        </ul>
        <t>
            (A TPMR also being a router is considered self-contradictory,
            it would no longer fulfill the IEEE 802.1Q criteria for a TPMR.
            The ff22:e00:e::2 group is therefore omitted.)
        </t>
        <t>
            Some implementations may choose to not join these groups out of an
            abundance of caution for security.  It should however be noted that
            the limited scope of these groups inherently makes them quite
            difficult to abuse.
        </t>
      </section>
    </section>
    <section anchor="groupid">
      <name>Group identifiers</name>
      <t>
          Group identifiers for multicast addresses in this range function
          the same way as identifiers for other scopes.  In particular:
      </t>
      <ol>
        <li>
            Variable Scope Multicast Addresses allocated in
            <xref target="IANA-IPv6MC"/> are applicable to this range. The
            leading "FF0X:" prefix on addresses in that range is extended to
            also include "FF22:".
        </li>
        <li>
            As with other scopes, a scope specific registry will track
            group identifiers used specifically with this scope.
        </li>
      </ol>
      <section>
        <name>All Nodes and All Routers addresses</name>
        <t>
            The ::1 and ::2 group identifiers are assigned to the same function
            they have in the link-local scope.  However, since there is a
            multitude of group addresses with these group identifiers, but
            different link layer specific values in the upper part of the
            address, recommendations to automatically join some of these
            groups are only made in the definitions of link layer specific
            mappings.
        </t>
      </section>
    </section>
    <section anchor="security">
      <name>Security Considerations</name>
      <t>
          Exposing the limited scope multicast functionality from lower layers
          can be used to improve security properties of discovery protocols
          since there is then a guarantee that the packet originated from a
          limited set of devices.
      </t>
      <t>
          However, to achieve this gain in security, it is paramount that
          operating systems in fact implement the discard requirements
          described in section <xref target="behavior"/> <bcp14>MUST</bcp14>
          absolutely be enforced by all implementations.
      </t>
    </section>
    <section anchor="privacy">
      <name>Privacy Considerations</name>
      <t>
        <em>TBD</em>
      </t>
    </section>
    <section anchor="IANA">
      <name>IANA Considerations</name>
      <t>
          This document requests the update of one IANA registry and creation
          of two new IANA registries, all in the IPv6 Multicast Address Space
          Registry group.
      </t>
      <section>
        <name>Variable Scope Multicast Addresses</name>
        <t>
            The description and applicability of the "Variable Scope Multicast
            Addresses" registry is modified to add to the note:
        </t>
        <blockquote>
            The addresses assigned here are also applicable to the
            Sub-Link scope, with the FF0X: prefix being replaced with
            "FF22:" in that case.
        </blockquote>
      </section>
      <section>
        <name>Link Types for Sub-Link Scope Multicast Addresses</name>
        <t>New registry:</t>
        <dl>
          <dt>Name</dt>
          <dd>Link Types for IPv6 Sub-Link-Scoped Multicast Addresses</dd>
          <dt>Registry group</dt>
          <dd>IPv6 Multicast Address Space Registry</dd>
          <dt>Registration procedure</dt>
          <dd>as indicated in initial table contents</dd>
          <dt>Field names:</dt>
          <dd>
            <ul>
              <li>"linktype" (hex)</li>
              <li>Lower-Layer protocol</li>
              <li>Reference/Procedure</li>
            </ul>
          </dd>
        </dl>
        <t>
            The initial contents of the registry are:
        </t>
        <table>
          <thead>
            <tr><td>"linktype" (hex)</td><td>Lower-Layer protocol</td><td>Reference/Procedure</td></tr>
          </thead>
          <tbody>
            <tr><td>0 … D</td><td>reserved</td><td>IETF Review</td></tr>
            <tr><td>E</td><td>Ethernet (and compatible)</td><td>[this document]</td></tr>
            <tr><td>F</td><td>Experimental</td><td>Experimental</td></tr>
          </tbody>
        </table>
      </section>
      <section>
        <name>Sub-Link Scope Multicast Addresses</name>
        <t>
            IANA is requested to create a new registry called "Sub-Link Scope
            Multicast Addresses".  The fields are as follows:
        </t>
          <dl>
            <dt>Registration Procedure</dt>
            <dd>Expert Review</dd>
            <dt>Reference</dt>
            <dd>[this document]</dd>
            <dt>Note</dt>
            <dd>These permanently assigned multicast addresses are valid over a
              specified scope value.
              Bits 16 to 95 (0-based counting) of addresses in this scope are
              populated with a link layer identifier and link layer specific
              scope information as documented in the reference document.
            </dd>
            <dt>Fields</dt>
            <dd>Copied from "Link-Local Scope Multicast Addresses" registry.
            </dd>
          </dl>
        <section>
          <name>Initial contents</name>
          <t>
              As is done with the other multicast address space registries,
              entries on the "Variable Scope Multicast Addresses" registry have
              a corresponding "variable scope allocation" item in this registry.
              Therefore, this registry receives a copy of all of these items,
              e.g. by duplicating them from one of the existing registries.
              This is a large number of entries not listed here for brevity
              and avoiding it becoming outdated.
              These items have only the Address(es) column and the Description
              column filled in, the latter with "variable scope allocation".
          </t>
          <t>
              Any change to the "Variable Scope Multicast Addresses" registry
              is requested to be accompanied by a corresponding update in
              this registry.
          </t>
        <t>
            The following entries are added on top of the variable scope
            allocation entries:
        </t>
        <table>
          <thead>
            <tr><td>Address(es)</td><td>Description</td><td>Reference/Procedure</td></tr>
          </thead>
          <tbody>
            <tr><td>FF22:*:*:*:*:*:0:1</td><td>All Nodes in this Scope</td><td>[this document]</td></tr>
            <tr><td>FF22:*:*:*:*:*:0:2</td><td>All Routers in this Scope</td><td>[this document]</td></tr>
          </tbody>
        </table>
        <t>
            For the above entries, the "Change Controller" is IETF, the "Last
            Reviewed" field is left empty, and "Date Registered" is filled
            appropriately for this document.
        </t>
        </section>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml"/>
        <!--
        <reference anchor="PREFIXBASED">
          <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3306.xml" xpointer="xpointer(/reference/*)"/>
        </reference>
        <reference anchor="EMBEDDEDRP">
          <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3956.xml" xpointer="xpointer(/reference/*)"/>
        </reference>
        -->
        <reference anchor="IPV6oETH">
          <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2464.xml" xpointer="xpointer(/reference/*)"/>
        </reference>
        <reference anchor="MCinUC">
          <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6085.xml" xpointer="xpointer(/reference/*)"/>
        </reference>
        <reference anchor="MCASTARCH">
          <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7371.xml" xpointer="xpointer(/reference/*)"/>
        </reference>
        <!--
        <reference anchor="ADDRARCH">
          <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4291.xml" xpointer="xpointer(/reference/*)"/>
        </reference>
        -->
        <reference anchor="IANA-IPv6MC" target="https://www.iana.org/assignments/ipv6-multicast-addresses/ipv6-multicast-addresses.xhtml">
          <front>
            <title>IPv6 Multicast Address Space Registry</title>
            <author><organization>IANA</organization></author>
          </front>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="BASICSOCKET">
          <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3493.xml" xpointer="xpointer(/reference/*)"/>
        </reference>
        <reference anchor="SSMSOCKET">
          <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3678.xml" xpointer="xpointer(/reference/*)"/>
        </reference>
        <reference anchor="EVPN">
          <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7209.xml" xpointer="xpointer(/reference/*)"/>
        </reference>
        <reference anchor="LLDP">
          <front>
            <title>
               IEEE 802.1AB-2016 —
               IEEE Standard for Local and metropolitan area networks —
               Station and Media Access Control Connectivity Discovery
            </title>
            <author>
              <organization>IEEE 802</organization>
            </author>
            <date year='2016'/>
          </front>
        </reference>
        <reference anchor="BGP-LLDP">
          <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml3/reference.I-D.acee-idr-lldp-peer-discovery" xpointer="xpointer(/reference/*)"/>
        </reference>
        <reference anchor="HOSTRT-LLDP">
          <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml3/reference.I-D.filsfils-rtgwg-lightweight-host-routing" xpointer="xpointer(/reference/*)"/>
        </reference>
      </references>
    </references>
    <section anchor="ack" numbered="false">
      <name>Acknowledgements</name>
      <t>
          The author(s) would like to thank the following people for their
          input, review, comments and discussion:  Erik Auerswald, Erik Kline,
          and Michael Richardson.
      </t>
    </section>
    <section anchor="impl" numbered="false">
      <name>Implementation note</name>
      <t>
          As there will be some delay until operating systems provide this
          functionality, it is worth pointing out that it can be emulated by
          using whatever lower-layer socket interface is also used by LLDP.
          In most cases this is an interface to Ethernet frames.  The
          application needs then handle the extra headers, i.e. adding and
          removing Ethernet, IPv6, and likely UDP headers.  This is likely
          quite doable since the values in these headers will be almost
          entirely static.
      </t>
      <t>
          It also bears noting that while the send direction could also be
          handled on a "regular" IPv6 socket with e.g. a socket option to
          change the output lower-layer address, the receive direction is
          rather tricky to handle if not done at an early, low level, in
          particular if the socket option were to diverge across multiple
          applications.  Using a dedicated address range avoids these
          complications.
      </t>
    </section>
    <section numbered="false">
      <name>Revision history (TO BE REMOVED)</name>
      <ul>
        <li>
            -ietf-...-00: document adopted by WG, no content changes.
        </li>
        <li>
            -01: fix copypaste snafu in router group addresses; improve IANA
            considerations, note sockopt approach, explain SHOULDs
        </li>
        <li>
            -00: initial revision.
        </li>
      </ul>
    </section>
  </back>
</rfc>
