<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent">


<?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 authorship="yes"?>
<?rfc tocappendix="yes"?>
<rfc  xmlns:xi="http://www.w3.org/2001/XInclude" category="std" ipr="trust200902"
tocInclude="true" indexInclude="true" obsoletes=""  consensus="true"
submissionType="IETF" xml:lang="en" version="3"  updates="6550, 6553, 8505, 9010"
docName="draft-ietf-6lo-multicast-registration-08" >

<front>

   <title abbrev="Multicast Address Registration">IPv6 Neighbor Discovery Multicast Address Listener Registration</title>
   <author initials="P" surname="Thubert" fullname="Pascal Thubert" role="editor">
      <organization abbrev="Cisco Systems">Cisco Systems, Inc</organization>
      <address>
         <postal>
            <street>Building D</street>
            <street>45 Allee des Ormes - BP1200 </street>
            <city>Mougins - Sophia Antipolis</city>
            <code>06254</code>
          <country>France</country>
         </postal>
         <phone>+33 497 23 26 34</phone>
         <email>pthubert@cisco.com</email>
      </address>
   </author>
   <area>Internet</area>

   <workgroup>6lo</workgroup>

   <abstract>
   <t>
    This document updates RFC 8505 to enable a listener to register an IPv6
    anycast or and subscribe to an IPv6 multicast address; the draft updates
    RFC 6550 (RPL) to add a new Non-Storing Multicast Mode and a new support for
    anycast addresses in Storing and Non-Storing Modes.
    This document extends RFC 9010 to enable the 6LR to inject the anycast and
    multicast addresses in RPL.
   </t>
   </abstract>
</front>

<middle>

<!-- **************************************************************** -->
<!-- **************************************************************** -->
<!-- **************************************************************** -->
<!-- **************************************************************** -->
<section anchor="introduction"> <name>Introduction</name>

<t>The design of Low Power and Lossy Networks (LLNs) is generally focused on
   saving energy, which is the most constrained resource of all. Other design
   constraints, such as a limited memory capacity, duty cycling of the LLN
   devices and low-power lossy transmissions, derive from that primary concern.
   The radio (both transmitting or simply listening) is a major energy drain
   and the LLN protocols must be adapted to allow the nodes to remain sleeping
   with the radio turned off at most times.
</t><t>
   The <xref target="RFC6550">"Routing Protocol for Low Power
   and Lossy Networks"</xref> (RPL) provides IPv6 <xref target="RFC8200"/>
   routing services within such constraints.
   To save signaling and routing state in constrained networks, the RPL routing
   is only performed along a Destination-Oriented Directed Acyclic Graph (DODAG)
   that is optimized to reach a Root node, as opposed to along the shortest path
   between 2 peers, whatever that would mean in each LLN.
</t><t>
   This trades the quality of peer-to-peer (P2P) paths for a vastly reduced
   amount of control traffic and routing state that would be required to
   operate an any-to-any shortest path protocol. Additionally,
   broken routes may be fixed lazily and on-demand, based on dataplane
   inconsistency discovery, which avoids wasting energy in the proactive repair
   of unused paths.
</t><t>
   Section 12 of <xref target="RFC6550"/> details the "Storing Mode of
   Operation with multicast support" with source-independent multicast routing in RPL.
</t><t>
   The classical "IPv6 Neighbor Discovery (IPv6 ND) Protocol"
   <xref target="RFC4861"/> <xref target="RFC4862"/> was defined for serial
   links and shared transit media such as Ethernet at a time when broadcast
   was cheap on those media while memory for neighbor cache was expensive.
   It was thus designed as a reactive protocol that relies on caching and
   multicast operations for the Address Discovery (aka Lookup) and Duplicate Address Detection (DAD) of IPv6 unicast addresses.
   Those multicast operations typically impact every node on-link when at most
   one is really targeted, which is a waste of energy, and imply that all
   nodes are awake to hear the request, which is inconsistent with power
   saving (sleeping) modes.
</t><t>
   The original 6LoWPAN ND, <xref target="RFC6775"> "Neighbor Discovery
   Optimizations for 6LoWPAN networks"</xref>, was introduced to avoid the
   excessive use of multicast messages and enable IPv6 ND for operations over
   energy-constrained nodes.
   <xref target="RFC6775"/> changes the classical IPv6 ND model to proactively
   establish the Neighbor Cache Entry (NCE) associated to the unicast address of
   a 6LoWPAN Node (6LN) in the a 6LoWPAN Router(s) (6LR) that serves it.
   To that effect, <xref target="RFC6775"/> defines a new Address Registration
   Option (ARO) that is  placed in unicast Neighbor Solicitation (NS) and
   Neighbor Advertisement (NA) messages between the 6LN and the 6LR.
</t><t>
   <xref target="RFC8505"> "Registration Extensions for 6LoWPAN Neighbor
   Discovery"</xref> updates <xref target="RFC6775"/> into a generic Address
   Registration mechanism that can be used to access services such as routing
   and ND proxy and introduces the Extended Address Registration Option (EARO)
   for that purpose. This provides a routing-agnostic interface for a host to
   request that the router injects a unicast IPv6 address in the local routing
   protocol and provide return reachability for that address.
</t><t>
   <xref target="RFC9010">"Routing for RPL Leaves"</xref> provides the router
   counterpart of the mechanism for a host that implements
   <xref target="RFC8505"/> to inject its unicast Unique Local Addresses (ULAs)
   and Global Unicast Addresses (GUAs) in RPL.
   But though RPL also provides multicast routing, 6LoWPAN ND supports only
   the registration of unicast addresses and there is no equivalent of
   <xref target="RFC9010"/> to specify the 6LR behavior upon the registration
   of one or more multicast address.
</t><t>
   The <xref target="RFC3810">"Multicast Listener Discovery Version 2 (MLDv2)
   for IPv6" </xref> enables the router to learn which node listens to which
   multicast address, but as the classical IPv6 ND protocol, MLD relies on
   multicasting Queries to all nodes, which is unfit for low power operations.
   As for IPv6 ND, it makes sense to let the 6LNs control when and how they
   maintain the state associated to their multicast addresses in the 6LR, e.g.,
   during their own wake time. In the case of a constrained node that already
   implements <xref target="RFC8505"/> for unicast reachability, it makes sense
   to extend to that support to register the multicast addresses they listen to.
</t><t>
   This specification extends <xref target="RFC8505"/> and <xref target="RFC9010"/>
   to add the capability for the 6LN to register anycast and multicast addresses
   and for the 6LR to inject them in RPL when appropriate.
</t>


</section>	<!-- end section = "Introduction"  -->



<section> <name>Terminology</name>
  <section anchor="bcp"><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>	<!-- end section "Requirements Language" -->

  <section anchor="lo"><name>References</name>
    <t>
	This document uses terms and concepts that are discussed in:
    </t>
	<ul>
	<li> <xref target="RFC4861">"Neighbor Discovery for IP version 6"
		</xref> and
	    <xref target="RFC4862">"IPv6 Stateless address Autoconfiguration"
		</xref>,
    </li>
	<li> <xref target="RFC6775">Neighbor Discovery Optimization for Low-Power
		and Lossy Networks</xref>, as well as
    </li>
    <li>
	    <xref target="RFC8505">
		"Registration Extensions for 6LoWPAN Neighbor Discovery"</xref> and
	</li>
    <li>
	    <xref target="RFC9008">
		"Using RPI Option Type, Routing Header for Source Routes,
        and IPv6-in-IPv6 Encapsulation in the RPL Data Plane"</xref>.
	</li>
	</ul>
  </section> <!--	 end section "References" -->


  <section anchor="acronyms"><name>Glossary</name>
    <t> This document uses the following acronyms:</t>
       <dl newline="false" indent="7" spacing="compact" >
       <dt>6BBR</dt><dd> 6LoWPAN Backbone Router </dd>
       <dt>6BBR</dt><dd> 6LoWPAN Border Router </dd>
       <dt>6LN</dt><dd> 6LoWPAN Node </dd>
       <dt>6LR</dt><dd> 6LoWPAN Router </dd>
       <dt>6CIO</dt><dd> Capability Indication Option </dd>
       <dt>AMC</dt><dd> Address Mapping Confirmation </dd>
       <dt>AMR</dt><dd> Address Mapping Request</dd>
       <dt>ARO</dt><dd> Address Registration Option</dd>
       <dt>DAC</dt><dd> Duplicate Address Confirmation </dd>
       <dt>DAD</dt><dd> Duplicate Address Detection </dd>
       <dt>DAR</dt><dd> Duplicate Address Request</dd>
       <dt>EARO</dt><dd> Extended Address Registration Option</dd>
       <dt>EDAC</dt><dd> Extended Duplicate Address Confirmation  </dd>
       <dt>EDAR</dt><dd> Extended Duplicate Address Request</dd>
       <dt>DODAG</dt><dd> Destination-Oriented Directed Acyclic Graph </dd>
       <dt>IR</dt><dd> Ingress Replication </dd>
       <dt>LLN</dt><dd> Low-Power and Lossy Network </dd>
       <dt>NA</dt><dd>  Neighbor Advertisement </dd>
       <dt>NCE</dt><dd>  Neighbor Cache Entry  </dd>
       <dt>ND</dt><dd>  Neighbor Discovery  </dd>
       <dt>NS</dt><dd>  Neighbor Solicitation  </dd>
       <dt>ROVR</dt><dd> Registration Ownership Verifier </dd>
       <dt>RTO</dt><dd> RPL Target Option </dd>
       <dt>RA</dt><dd>  Router Advertisement  </dd>
       <dt>RS</dt><dd>  Router Solicitation  </dd>
       <dt>TID</dt><dd> Transaction ID </dd>
       <dt>TIO</dt><dd> Transit Information Option </dd>
       </dl>


  </section>	<!-- end section "Glossary" -->


</section>	<!-- end section "Terminology" -->



<!-- **************************************************************** -->
<!-- **************************************************************** -->
<!-- **************************************************************** -->
<!-- **************************************************************** -->
<!-- **************************************************************** -->
<!-- **************************************************************** -->
<!-- **************************************************************** -->
<!-- **************************************************************** -->

<section anchor="overview"><name>Overview</name>
   <t>
   This specification inherits from <xref target="RFC6550"/>,
   <xref target="RFC8505"/>, and <xref target="RFC9010"/> to provide additional
   capabilities for anycast and multicast. Unless specified otherwise therein,
   the behavior of the 6LBR that acts as RPL Root, of the intermediate routers
   down the RPL graph, of the 6LR that act as access routers and of the 6LNs
   that are the RPL-unaware destinations, is the same as for unicast. In
   particular, forwarding a packet happens as specified in section 11 of
   <xref target="RFC6550"/>, including loop avoidance and detection, though in
   the case of multicast multiple copies might be generated.
   </t>
   <t><xref target="RFC8505"/> is a pre-requisite to this specification.
   A node that implements this MUST also implement <xref target="RFC8505"/>.
   This specification does not introduce a new option; it modifies
   existing options and updates the associated behaviors to enable the
   Registration for Multicast Addresses as an extension to
   <xref target="RFC8505"/>.
   </t>
   <t>
   This specification also extends <xref target="RFC6550"/> and
   <xref target="RFC9010"/> in the case of a route-over multilink subnet based
   on the RPL routing protocol, to add multicast ingress replication in
   Non-Storing Mode and anycast support in both Storing and Non-Storing modes.
   A 6LR that implements the RPL extensions specified therein MUST also
   implement <xref target="RFC9010"/>.
   </t>
    <t>
    <xref target="figref"/> illustrates the classical situation of an LLN as a
    single IPv6 Subnet, with a 6LoWPAN Border Router (6LBR) that acts as Root
    for RPL operations and maintains a registry of the active registrations as
    an abstract data structure called an Address Registrar for 6LoWPAN ND.
    </t>

    <t>
	The LLN may be a hub-and-spoke access link such	as (Low-Power) Wi-Fi
    <xref target="IEEE80211"/> and Bluetooth (Low Energy)
    <xref target="IEEE802151"/>, or a Route-Over LLN such as the Wi-SUN and 6TiSCH meshes
    <xref target="I-D.heile-lpwan-wisun-overview"/> that leverages 6LoWPAN
    <xref target="RFC4919"/><xref target="RFC6282"/>
    and RPL <xref target="RFC6550"/> over <xref target="IEEE802154"/>.
    </t>

    <figure anchor="figref" align="center"><name>Wireless Mesh</name>
    <artwork><![CDATA[
                  |
      ----+-------+------------
          |     Wire side
       +------+
       | 6LBR |
       |(Root)|
       +------+
       o  o  o  Wireless side
   o   o o   o  o o
  o  o  o o   o  o  o
 o  o  o   LLN  o   +---+
   o  o   o  o   o  |6LR|
   o o  o o   o     +---+
    o   o   o o o  o    z
   o  o oo o  o        +---+
          o            |6LN|
                       +---+
    ]]></artwork></figure>


   <t>
   A leaf acting as a 6LN registers its unicast and anycast addresses a RPL
   router acting as a 6LR, using a layer-2 unicast NS message with an EARO as
   specified in <xref target="RFC8505"/>.
   The registration state is periodically renewed by the Registering Node,
   before the lifetime indicated in the EARO expires. As for unicast IPv6
   addresses, the 6LR uses an EDAR/EDAC exchange with the 6LBR to notify the
   6LBR of the presence of the listeners.
   </t><t>
   This specification updates the EARO with two new flags, the A flag for
   Anycast, and the M flag for Multicast, as detailed in <xref target="R8505E"/>.
   The existing R flag that requests reachability for the registered address
   gets new behavior.
   With this extension the 6LNs can now subscribe to the multicast
   addresses they listen to, using a new M flag in the EARO to signal that the
   registration is for a multicast address. Multiple 6LN may subscribe to
   the same multicast address to the same 6LR. Note the use of the term
   "subscribe": using the EARO registration mechanism, a node registers the
   unicast addresses that it owns, but subscribes to the multicast addresses
   that it listens to.
   </t><t>
   With this specification, the 6LNs can also register the anycast addresses
   they accept, using a new A flag in the EARO to signal that the registration
   is for an anycast address. As for multicast, multiple 6LN may register the
   same anycast address to the same 6LR.
   </t><t>
   If the R flag is set in the registration of one or more 6LNs for the same
   address, the 6LR injects the anycast addresses and multicast addresses of a
   scope larger than link-scope in RPL, based on the longest registration
   lifetime across the active registrations for the address.
   </t><t>
   In the RPL "Storing Mode of Operation with multicast support", the DAO
   messages for the multicast address percolate along the RPL preferred parent
   tree and mark a subtree that becomes the multicast tree for that multicast
   address, with 6LNs that subscribed to the address as the leaves.
   As prescribed in section 12 of <xref target="RFC6550"/>, the 6LR forwards a
   multicast packet as an individual unicast MAC frame to each peer along the
   multicast tree, excepting to the node it received the packet from.
   </t><t>
   In the new RPL "Non-Storing Mode of Operation with multicast support" that is
   introduced here, the DAO messages announce the multicast addresses as Targets
   though never as Transit. The multicast distribution is an ingress replication
   whereby the Root encapsulates the multicast packets to all the 6LRs that are
   transit for the multicast address, using the same source-routing header as
   for unicast targets attached to the respective 6LRs.
   </t><t>
   Broadcasting is typically unreliable in LLNs (no ack) and forces a listener
   to remain awake, so it generally discouraged. The expectation is thus that in
   either mode, the 6LRs deliver the multicast packets as individual unicast MAC
   frames to each of the 6LNs that subscribed to the multicast address.
   </t><t>
   With this specification, anycast addresses can be injected in RPL in both
   Storing and Non-Storing modes. In Storing Mode the RPL router accepts DAO
   from multiple children for the same anycast address, but only forwards a
   packet to one of the children.
   In Non-Storing Mode, the Root maintains the list of all the RPL nodes that
   announced the anycast address as Target, but forwards a given packet to only
   one of them.
   </t>
 <t>For backward compatibility, this specification allows to build a single
    DODAG signaled as MOP 1, that conveys anycast, unicast and multicast packets
    using the same source routing mechanism, more in <xref target="deploy"/>.
   </t>
 <t>
   It is also possible to leverage this specification between the 6LN and the
   6LR for the registration of unicast, anycast and multicast IPv6 addresses in
   networks that are not necessarily LLNs, and/or where the routing protocol
   between the 6LR and above is not necessarily RPL. In that case, the
   distribution of packets between the 6LR and the 6LNs may effectively rely
   on a broadcast or multicast support at the lower layer, e.g., using this
   specification as a replacement to MLD in an Ethernet bridged domain and
   still using either plain MAC-layer broadcast or snooping this protocol to
   control the flooding. It may also rely on overlay services to optimize
   the impact of Broadcast, Unknown and Multicast (BUM) over a fabric, e.g.
   registering with <xref target="I-D.thubert-bess-secure-evpn-mac-signaling"/>
   and forwarding with <xref target="I-D.ietf-bess-evpn-optimized-ir"/>. </t>
 <t>
   For instance, it is possible to operate a RPL Instance in the new
   "Non-Storing Mode of Operation with multicast support" (while possibly
   signaling a MOP of 1) and use <xref target="RFC7731">"Multicast Protocol
   for Low-Power and Lossy Networks (MPL)"</xref> for the multicast operation.
   MPL floods the DODAG with the multicast messages independently of the RPL
   DODAG topologies. Two variations are possible:
</t>
<ul>
<li>
   In one possible variation, all the 6LNs set the R flag in the EARO for a
   multicast target, upon which the 6LRs send a unicast DAO message to the
   Root; the Root filters out the multicast messages for which there is no
   listener and only floods when there is.
</li>
<li>
   In a simpler variation, the 6LNs do not set the R flag and the Root floods
   all the multicast packets over the whole DODAG. Using configuration, it is
   also possible to control the behavior of the 6LR to ignore the R flag and
   either always or never send the DAO message, and/or to control the Root and
   specify which groups it should flood or not flood.

</li>
 </ul>
 <t>
   Note that if the configuration instructs the 6LR not to send the DAO, then
   MPL can really by used in conjunction with RPL Storing Mode as well.
 </t>

</section> <!-- end section "Overview" -->


    <section anchor="CIO"><name>Extending RFC 7400</name>

    <t>
   This specification defines a new capability bit for use in the
   6CIO as defined by <xref target="RFC7400"> "6LoWPAN-GHC: Generic Header
   Compression for IPv6 over Low-Power Wireless Personal Area Networks
   (6LoWPANs)"</xref> and extended in <xref target="RFC8505"/>
   for use in IPv6 ND messages.
    </t>
    <t>
   The new "Registration for xcast Address Supported" (X) flag indicates
   to the 6LN that the 6LR accepts unicast, multicast, and anycast address
   registrations as specified in this document and will ensure that packets
   for the Registered Address will be routed to the 6LNs that registered with
   the R flag set appropriately.
    </t>
    <t>
   <xref target="fig6CIO"/> illustrates the X flag in its suggested position
   (8, counting 0 to 15 in network order in the 16-bit array), to be confirmed by IANA.
   </t>
   <figure anchor="fig6CIO"><name>New Capability Bits in the 6CIO</name>
   <artwork>
    <![CDATA[
    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Type      |   Length = 1  |    Reserved   |X|A|D|L|B|P|E|G|
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                           Reserved                            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    ]]></artwork>
    </figure>

    <t> New Option Field:    </t>
	<dl>
	<dt>X</dt><dd> 1-bit flag: "Registration for Unicast, Multicast, and Anycast
    Addresses Supported" </dd>
	</dl>

    </section>	<!-- end section "Extending RFC 7400" -->




<section anchor="coex"><name>Updating RFC 6550</name>

<section anchor="mop3"><name>Updating MOP 3</name>
<t>
   RPL supports multicast operations in the "Storing Mode of Operation with
   multicast support" (MOP 3) which provides source-independent multicast
   routing in RPL, as prescribed in section 12 of <xref target="RFC6550"/>.
   MOP 3 is a storing Mode of Operation. This operation builds a multicast
   tree within the RPL DODAG for each multicast address. This specification
   provides additional details for the MOP 3 operation.
</t> <t>
   The expectation in MOP 3 is that the unicast traffic also follows the
   Storing Mode of Operation. But this is rarely the case in LLN deployments
   of RPL where the "Non-Storing Mode of Operation" (MOP 1) is the norm.
   Though it is preferred to build separate RPL Instances, one in MOP 1 and one
   in MOP 3, this specification allows to hybrid the Storing Mode for multicast
   and Non-Storing Mode for unicast in the same RPL Instance, more in
   <xref target="deploy"/>.
</t> <t>
   Though it was implicit in <xref target="RFC6550"/>, this specification
   clarifies that the freshness comparison based on the TID field is ignored
   for RPL multicast operations. A RPL router maintains a remaining Path
   Lifetime for each DAO that it receives for a multicast target, and sends it
   own DAO for that target with the longest remaining lifetime across its
   listening children.
</t>
  </section>	<!-- end section "Updating MOP 3" -->



<section anchor="mop5"><name>New Non-Storing Multicast MOP</name>
<t>
   This specification adds a "Non-Storing Mode of Operation with ingress
   replication multicast support" (MOP to be assigned by IANA) whereby the
   non-storing Mode DAO to
   the Root may advertise a multicast address in the RPL Target Option (RTO),
   whereas the Transit Information Option (TIO) cannot.

</t> <t>
   In that mode, the RPL Root performs an ingress replication (IR) operation on
   the multicast packets, meaning that it transmits one copy of each multicast
   packet to each 6LR that is a transit for the multicast target, using the same
   source routing header and encapsulation as it would for a unicast packet for
   a RPL Unaware Leaf (RUL) attached to that 6LR.
</t> <t>
   For the intermediate routers, the packet appears as any source routed unicast
   packet. The difference shows only at the 6LR, that terminates the source
   routed path and forwards the multicast packet to all 6LNs that registered
   for the multicast address.
</t> <t>
   For a packet that is generated by the Root, this means that the Root builds a
   source routing header as shown in section 8.1.3 of <xref target="RFC9008"/>,
   but for which the last and only the last address is multicast.
   For a packet that is not generated by the Root, the Root encapsulates the
   multicast packet as per section 8.2.4 of <xref target="RFC9008"/>. In that
   case, the outer header is purely unicast, and the encapsulated packet is
   purely multicast.
</t><t>
   As with MOP 3, the freshness comparison based on the TID field is ignored
   for RPL MOP 5 multicast operations. The Root maintains a remaining Path
   Lifetime for each DAO that it receives, and the 6LRs generate the DAO for
   multicast addresses with the longest remaining lifetime across its registered
   6LNs.
</t><t>
   The route disappears when the associated path lifetime in the transit
   option times out, but the procedure to remove a unicast route based on TID
   cannot apply to multicast and anycast.
</t> <t>
   For this new mode as well, this specification allows to enable the operation
   in a MOP 1 brown field, more in  <xref target="deploy"/>.
</t>

</section>	<!-- end section "New Non-Storing Multicast MOP" -->

<section anchor="anic"><name>RPL Anycast Operation</name>

<t>
   With multicast, the address has a recognizable format, and a multicast packet
   is to be delivered to all the active subscribers.
   In contrast, the format of an anycast address is not distinguishable
   from that of unicast. A legacy node may issue a DAO message without setting
   the A flag, the unicast behavior may apply to anycast traffic in a subDAGs.
   That message will be undistinguishable from a unicast advertisement and the
   anycast behavior in the dataplane can only happen if all the nodes that
   advertise the same anycast address are synchronized with the same TID. That
   way, the multiple paths can remain in the RPL DODAG.
</t> <t>
   With the A flag, this specification alleviates the issue of synchronizing
   the TIDs, and as for multicast, the freshness comparison based on the TID
   field is ignored.
   A target is routed as anycast by a parent (or the Root) that received at
   least one DAO message for that target with the A flag set to 1.
</t> <t>
   As opposed to multicast, the anycast operation described therein applies to
   both addresses and prefixes, and the A flag can be set for both.
   An external destination (address or prefix) that may be injected as a RPL
   target from multiple border routers SHOULD be injected as anycast in RPL to
   enable load balancing. A mobile target that is multihomed SHOULD in contrast
   be advertised as unicast over the multiple interfaces to favor the TID
   comparison and vs. the multipath load balancing.
</t> <t>
   For either multicast and anycast, there can be multiple registrations from
   multiple parties, each using a different value of the ROVR field that
   identifies the individual registration. The 6LR MUST maintain a registration
   state per value of the ROVR per multicast or anycast address, but inject
   the route into RPL only once for each address, and in the case of a
   multicast address, only if its scope is larger than link-scope (3 or more).
   Since the registrations are considered separate, the check on the TID that
   acts as registration sequence only applies to the registration with the
   same ROVR.
</t> <t>
   The 6LRs that inject multicast and anycast routes into RPL may not be
   synchronized to advertise same value of the Path Sequence in the RPL TIO.
   It results that the value the Path Sequence is irrelevant when the target
   is anycast or multicast, and that it MUST be ignored.
</t> <t>
   Like the 6LR, a RPL router in Storing Mode propagates the route to its
   parent(s) in DAO messages once and only once for each address, but it MUST
   retain a routing table entry for each of the children that advertised the
   address.
</t> <t>
   When forwarding multicast packets down the DODAG, the RPL router copies
   all the children that advertised the address in their DAO messages. In
   contrast, when forwarding anycast packets down the DODAG, the RPL router
   MUST copy one and only one of the children that advertised the address in
   their DAO messages, and forward to one parent if there is no such child.
</t>

  </section>	<!-- end section "RPL Anycast Operation" -->


<section anchor="newrtoflg"><name>New RPL Target Option Flags</name>
<t>
   <xref target="RFC6550"/> recognizes a multicast address by its format
   (as specified in section 2.7 of <xref target="RFC4291"/>) and applies the
   specified multicast operation if the address is recognized as multicast.
   This specification updates <xref target="RFC6550"/> to add the M and A flags
   to the RTO to indicate that the target address is to be processed as
   multicast or anycast, respectively.
</t> <t>
   An RTO that has the M flag set to 1 is called a multicast RTO.
   An RTO that has the A flag set to 1 is called an anycast RTO.
   An RTO that has both the A and the M flags set to 0 is called an unicast RTO.
   With this specification, the M and A flags are mutually exclusive and MUST
   NOT be both set to 1. The capability to set both flags is reserved and an RTO
   that is received with both flags set MUST be ignored.
</t> <t>
   The suggested position for the A and M flags are 2 and 3 counting from 0 to
   7 in network order as shown in <xref target="rto-fmt"/>, based on figure 4
   of <xref target="RFC9010"/> which defines the flags in position 0 and 1:
</t>
<figure anchor="rto-fmt"><name>Format of the RPL Target Option</name>
              <artwork align="center">
   0                   1                   2                   3
   0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |   Type = 0x05 | Option Length |F|X|A|M|ROVRsz | Prefix Length |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |                                                               |
  |                Target Prefix (Variable Length)                |
  .                                                               .
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |                                                               |
 ...            Registration Ownership Verifier (ROVR)           ...
  |                                                               |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 </artwork>
</figure>
</section>	<!-- end section "New RPL Target Option Flags" -->
</section>	<!-- end section "Updating RFC 6550" -->

<section anchor="updating"><name>Updating RFC 8505</name>





<section anchor="R8505E"><name>New EARO flag</name>

<t>
   Section 4.1 of <xref target="RFC8505"/> defines the EARO as an extension to
   the ARO option defined in <xref target="RFC6775"/>.

</t>
<t>
   This specification adds
   a new M flag to the EARO flags field to signal that the Registered Address is
   a multicast address. When both the M and the R flags are set, the 6LR that
   conforms to this specification joins the multicast stream,  e.g., by
   injecting the address in the RPL multicast support which is extended in this
   specification for Non-Storing Mode.
</t>
<t>
   This specification adds
   a new A flag to the EARO flags field to signal that the Registered Address is
   an anycast address. When both the A and the R flags are set, the 6LR that
   conforms to this specification injects the anycast address in the RPL
   anycast support that is introduced in this specification for both Storing
   and Non-Storing Modes.
</t>
<t>
   <xref target="EARO"/> illustrates the A and M flags in their suggested
   positions (2 and 3, respectively, counting 0 to 7 in network order in the
   8-bit array), to be confirmed by IANA.
</t>
 <figure anchor="EARO"><name>EARO Option Format</name>
 <artwork align="center">
   0                   1                   2                   3
   0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |     Type      |     Length    |    Status     |    Opaque     |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |Rsv|A|M| I |R|T|     TID       |     Registration Lifetime     |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |                                                               |
 ...             Registration Ownership Verifier                 ...
  |                                                               |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
</artwork>
 </figure><!-- end figure "EARO Option Format" -->

    <t> New and updated Option Fields:    </t>
	<dl>
	<dt>Rsv</dt><dd> 2-bit field: reserved, MUST be set to 0 and ignored by the receiver</dd>
	<dt>A</dt><dd> 1-bit flag: "Registration for Anycast Address" </dd>
	<dt>M</dt><dd> 1-bit flag: "Registration for Multicast Address" </dd>
	</dl>

</section> <!-- end section "New EARO flag" -->

<section anchor="R8505D"><name>New EDAR Message Flag field</name>

<t>
   Section 4 of <xref target="RFC6775"/> provides the same format for DAR and
   DAC messages but the status field is only used in DAC message and has to
   set to zero in DAC messages. <xref target="RFC8505"/> extends the DAC message
   as an EDAC but does not change the status field in the EDAR.

</t>
<t>
   This specification repurposes the status field in the EDAR and a Flags field.
   It adds a new M flag to the EDAR flags field to signal that the Registered
   Address is a multicast address and a new A flag to signal that the Registered
   Address is an anycast address. As for EARO, the flags are mutually exclusive.
</t>
<t>
   <xref target="EDAR"/> illustrates the A and M flags in their suggested
   positions (0 and 1, respectively, counting 0 to 7 in network order in the
   8-bit array), to be confirmed by IANA.
</t>
 <figure anchor="EDAR"><name>Extended Duplicate Address Message Format</name>
 <artwork align="center">
  0                   1                   2                   3
  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |     Type      |CodePfx|CodeSfx|          Checksum             |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |A|M| Reserved  |     TID       |     Registration Lifetime     |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                                                               |
...            Registration Ownership Verifier (ROVR)           ...
 |                                                               |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                                                               |
 +                                                               +
 |                                                               |
 +                       Registered Address                      +
 |                                                               |
 +                                                               +
 |                                                               |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
</artwork>
 </figure><!-- end figure "EDAR Message Format" -->

    <t> New and updated Option Fields:    </t>
	<dl>
	<dt>Reserved</dt><dd> 6-bit field: reserved, MUST be set to 0 and ignored by the receiver</dd>
	<dt>A</dt><dd> 1-bit flag: "Registration for Anycast Address" </dd>
	<dt>M</dt><dd> 1-bit flag: "Registration for Multicast Address" </dd>
	</dl>

</section> <!-- end section "New EARO flag" -->



<section anchor="multireg"><name>Registering Extensions</name>
<t>
   With <xref target="RFC8505"/>:
   </t>
<ul>
   <li>
   A router that expects to reboot may send a final RA message, upon which
   nodes should register elsewhere or reregister to this router upon reboot.
   In all other cases, a node reboot is silent.
   When the node comes back to life, existing registration
   state might be lost if it was not persisted, e.g., in persistent memory.
   </li>
   <li>
   Only unicast addresses can be registered.
   </li>
   <li>
   The 6LN must register all its ULA and GUA with a NS(EARO).
   </li>
   <li>
   The 6LN may set the R flag in the EARO to obtain return reachability services by the 6LR, e.g., through ND proxy operations, or by injecting the route in a route-over subnet.
   </li>
   <li>
   the 6LR maintains a registration state per Registered Address, including an
   NCE with the Link Layer Address (LLA) of the Registered Node (the 6LN here).
   </li>
   </ul>

  <t>
   This specification adds the following behavior:
  </t>
   <ul>
   <li>
   <t>
   A new ARO Status is introduced to indicate a "Registration Refresh Request"
   (see <xref target="AROstat"/>).
   </t>
   <t>
   This status is used in asynchronous NA(EARO) messages to indicate to peer 6LNs
   that they are requested to reregister all addresses that were previously
   registered to the originating node. The NA message may be sent to a unicast
   or a multicast link-scope address and should be contained within the L2 range
   where nodes may effectively register to this, e.g., a radio broadcast domain.
   </t>
   <t>
   A device that wishes to refresh its state, e.g., upon reboot if it may have
   lost some registration state, may send an asynchronous NA(EARO) with this new
   status value. That asynchronous NA(ARO) SHOULD be sent to the all-nodes link
   scope multicast address (FF02::1) and Target MUST be set to the link local
   address that was exposed previously by this node to accept registrations,
   and the TID MUST be set to 0.
   </t>
   <t>
   In an unreliable environment, the multicast NA(EARO) message may be resent in
   a fast sequence, in which case the TID must be incremented each time.
   A 6LN that has recently
   processed the NA(ARO) ignores the NA(EARO) with a newer TID received
   within the duration of the fast sequence. That duration depends on the
   environent and has to be configured. By default, it is of 10 seconds.
   </t>
   </li>
   <li>
   <t>
   A new IPv6 ND Node Uptime option (NUO) is introduced to be placed in IPv6 ND
   messages. The NUO carries a Node State Sequence Information (NSSI) and a Node
   Uptime.  See <xref target="NUO"/> for the option
   details.
   </t>
   <t>
   A node that receives the NUO checks whether it is indicative of a loss of
   state, such as an address registration, in the sender. If so, it may attempt
   to reform the state, e.g., by re-registering an address. A loss of state is
   inferred if the NSSI has changed since last sight, or the Node Uptime is
   less than the time since the state was installed.
   </t>
   </li>
   <li>
   Registration for multicast and anycast addresses is now supported. New flags
   are added to the EARO to signal when the registered address is anycast or
   multicast.
   </li>
   <li>
   The Status field in the EDAR message that was reserved and not used in RFC 8505 is repurposed to transport the flags to signal multicast and anycast.
   </li>
   <li>
   The 6LN MUST also register all the IPv6 multicast addresses that it listens
   to but the all-nodes link-scope multicast address FF02::1
   <xref target="RFC4291"/> which is implicitly registered, and it MUST set the
   M flag in the EARO for those addresses.
   </li>
   <li>
   The 6LN MAY set the R flag in the EARO to obtain the delivery of the
   multicast packets by the 6LR, e.g., by MLD proxy operations, or by injecting
   the address in a route-over subnet or in the Protocol Independent Multicast
   <xref target="RFC7761"/> protocol.
   </li>
   <li>
   The 6LN MUST also register all the IPv6 anycast addresses that it supports
   and it MUST set the A flag in the EARO for those addresses.
   </li>
   <li>
   The 6LR and the 6LBR are extended to accept more than one registration for
   the same address when it is anycast or multicast, since multiple 6LNs may
   subscribe to the same address of these types. In both cases, the
   Registration Ownership Verifier (ROVR) in the EARO identifies uniquely
   a registration within the namespace of the Registered Address.
   </li>
   <li>
   The 6LR MUST also consider that all the nodes that registered an address to
   it (as known by the SLLAO) also registered to the all nodes link-scope
   multicast address FF02::1 <xref target="RFC4291"/>.
   </li>
   <li>
    The 6LR MUST maintain a registration state per tuple (IPv6 address, ROVR)
    for both anycast and multicast types of address. It SHOULD notify the 6LBR
    with an EDAR message, unless it determined that the 6LBR is legacy and does
    not support this specification. In turn, the 6LBR MUST maintain a
    registration state per tuple (IPv6 address, ROVR) for both anycast and
    multicast types of address.
   </li>

   </ul>

</section> <!-- end section "Registering Extensions"-->

</section> <!-- end section "Updating RFC 8505"-->


<section anchor="updating2"><name>Updating RFC 9010</name>
<t>
   With <xref target="RFC9010"/>:
   </t>
   <ul>
   <li>
   The 6LR injects only unicast routes in RPL
   </li>
   <li>
   Upon a registration with the R flag set to 1 in the EARO, the 6LR injects the address in the RPL unicast support.
   </li><li>
   Upon receiving a packet directed to a unicast address for which it has an
   active registration, the 6LR delivers the packet as a unicast layer-2 frame
   to the LLA the nodes that registered the unicast address.
   </li>
   </ul>
   <t>
   This specification adds the following behavior:
   </t>
   <ul>
   <li>
   Upon a registration with the R and the M flags set to 1 in the EARO, if the
   scope of the multicast address is above link-scope <xref target="RFC7346"/>,
   then the 6LR injects the address in the RPL multicast support and sets the M
   flag in the RTO.
   </li><li>
   Upon a registration with the R and the A flags set to 1 in the EARO, the
   6LR injects the address in the new RPL anycast support and sets the A flag
   in the RTO.
   </li><li>
   Upon receiving a packet directed to a multicast address for which it has at
   least one registration, the 6LR delivers a copy of the packet as a unicast
   layer-2 frame to the LLA of each of the nodes that registered to that
   multicast address.
   </li><li>
   Upon receiving a packet directed to a multicast address for which it has at
   least one registration, the 6LR delivers a copy of the packet as a unicast
   layer-2 frame to the LLA of exactly one of the nodes that registered to that
   multicast address.
   </li>
   </ul>


</section> <!-- end section "Updating RFC 9010"-->


<section  anchor="sec8928"><name>Leveraging RFC 8928</name>
<t>
    <xref target="RFC8928"> Address-Protected Neighbor Discovery for
    Low-Power and Lossy Networks </xref> was defined to protect the ownership of unicast IPv6 addresses that are registered with
    <xref target="RFC8505"/>.

</t>
<t>
    With <xref target="RFC8928"/>, it is possible for a node to autoconfigure a
    pair of public and private keys and use them to sign the registration of
    addresses that are either autoconfigured or obtained through other methods.

</t>
<t>
    The first hop router (the 6LR) may then validate a registration and
    perform source address validation on packets coming from the sender node
    (the 6LN).

</t>
<t>
    Anycast and multicast addresses are not owned by one node. Multiple nodes
    may subscribe to the same address. Also, anycast and multicast addresses
    are not used to source traffic.
    In that context, the method specified in <xref target="RFC8928"/> cannot be used with autoconfigured keypairs to protect a single ownership.
</t>
<t>
    For an anycast or a multicast address, it is still possible to leverage
    <xref target="RFC8928"/> to enforce the right to subscribe. A keypair MUST
    be associated with the address before it is deployed, and a ROVR MUST be
    generated from that keypair as specified in <xref target="RFC8928"/>.
    The address and the ROVR MUST then be installed in the 6LBR so it can recognize the address and compare the ROVR on the first registration.
</t>
<t>
    The keypair MUST then be provisioned in each node that needs to
    subscribe to the anycast or multicast address, so the node can follow the
    steps in <xref target="RFC8928"/> to register the address.
</t>
</section>  <!-- Leveraging RFC 8929 -->

<section anchor="NUO"><name>Node Uptime Option </name>
<t>This specification introduces a new option that characterizes the
  uptime of the sender. The option may be used by routers in RA messages and
  by any node in NA, NA, and RS messages. It is used by the receiver to infer
  whether some state synchronization might be lost, e.g., due to reboot.
</t>
 <figure anchor="NUOF"><name>Node Uptime Option Format</name>
 <artwork align="center">
  0                   1                   2                   3
  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |     Type      |     Length    |          Checksum             |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |S|  flags  |       NSSI        | Exponent  |  Uptime Mantissa  |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
</artwork>
 </figure><!-- end figure "Node Uptime Option Format" -->

<dl>
<dt> Type </dt>
    <dd>To be assigned by IANA, see <xref target="NDOpt"/> </dd>
<dt> Length </dt>
    <dd> 1 </dd>
<dt>S</dt>
    <dd> 1-bit flag, set to indicate that the device is low-power and may sleep.</dd>
<dt>flags</dt>
    <dd> 5-bit, reserved. MUST be set to 0 by the sender and ignored by the receiver.</dd>
<dt> NSSI </dt>
    <dd>10-bits unsigned integer: The Node State Sequence Information</dd>
<dt> Uptime Exponent </dt>
    <dd>6-bits unsigned integer: The 2-exponent of the uptime unit </dd>
<dt> Uptime Mantissa </dt>
    <dd>10-bits unsigned integer: The mantissa of the uptime value </dd>
</dl>

<t>The Node Uptime indicates how long the sender has been continuously up and
   running without loss of state. It is expressed by the Uptime Mantissa in units
   of 2 at the power of the Uptime Exponent milliseconds.
</t>
<t>
  The initial value and the steps of the Uptime Exponent are chosen freely by
  the implementation, but the value MUST NOT decrease over time. This means that
  2 expressions of time from the same node can be compared by aggregating the
  Exponent + Mantissa Uptime fields and considering the aggregate globally as a
  16-bits unsigned integer.
</t>
	<table anchor="timex" ><name>Node Uptime Rough Values</name>
   <thead>
      <tr><td>Mantissa</td><td>Exponent</td><td>Resolution</td><td>Uptime</td></tr>
   </thead><tbody>
      <tr><td>1</td><td>0</td><td>1ms</td><td>1ms</td></tr>
      <tr><td>5</td><td>10</td><td>1s</td><td>5 seconds</td></tr>
      <tr><td>2</td><td>15</td><td>30s</td><td>1mn</td></tr>
      <tr><td>2</td><td>21</td><td>33mn</td><td>1 hour</td></tr>
   </tbody>
	</table>	<!-- end table "Node Uptime Example Values" +-->

<t>
   The NSSI SHOULD be stored by this node in persistent memory by the
   sender and incremented when it reboots and lost state. When persisting is not
   possible, then the NSSI is randomly generated upon a loss of state.
   Any change in the value of the NSSI from a node is an indication that the
   node lost state and that the needful state should be reinstalled, e.g.,
   addresses registered to that node should be registered again with a
   minimal temporization to avoid collisions.
</t>

</section><!-- Node Uptime Option -->

<section anchor="deploy"><name>Deployment considerations</name>
<t>
   With this specification, a RPL DODAG forms a realm, and multiple RPL DODAGs
   may federated in a single RPL Instance administratively. This means that
   a multicast address that needs to span a RPL DODAG MUST use a scope
   of Realm-Local whereas a multicast address that needs to span a RPL Instance
   MUST use a scope of Admin-Local as discussed in section 3 of <xref
   target="RFC7346">"IPv6 Multicast Address Scopes"</xref>.
</t>
<t>
   <xref target="RFC6052">"IPv6 Addressing of IPv4/IPv6 Translators"</xref>
   enables to embed IPv4 addresses in IPv6 addresses. The Root of a DODAG
   may leverage that technique to translate IPv4 traffic in IPv6 and route
   along the RPL domain. When encapsulating an packet with an IPv4 multicast
   Destination Address, it MUST use a multicast address with the
   appropriate scope, Realm-Local or Admin-Local.
</t>
<t><xref target="RFC3306">"Unicast-Prefix-based IPv6 Multicast Addresses"</xref>
   enables to form 2^32 multicast addresses from a single /64 prefix.
   If an IPv6 prefix is associated to an Instance or a RPL DODAG, this provides
   a namespace that can be used in any desired fashion. It is for instance
   possible for a standard defining organization to form its own registry
   and allocate 32-bit values from that namespace to network functions or device
   types. When used within a RPL deployment that is associated with a /64 prefix
   the IPv6 multicast addresses can be automatically derived from the prefix and
   the 32-bit value for either a Realm-Local or an Admin-Local multicast
   address as needed in the configuration.
</t>
<t>
   IN a "green field"  deployment where all nodes support this
   specification, it is possible to deploy a single RPL Instance using a
   multicast MOP for unicast, multicast and anycast addresses.
</t><t>
   In a "brown field" where legacy devices that do not support
   this specification co-exist with upgraded devices, it is RECOMMENDED to
   deploy one RPL Instance in any Mode of Operation (typically MOP 1) for
   unicast that legacy nodes can join, and a separate RPL Instance dedicated
   to multicast and anycast operations using a multicast MOP.
</t><t>
   To deploy a Storing Mode multicast operation using MOP 3 in a RPL domain,
   it is required that there is enough density of RPL routers that support MOP
   3 to build a DODAG that covers all the potential listeners and include the
   spanning multicast trees that are needed to distribute the multicast flows.
   This might not be the case when extending the capabilities of an existing
   network.
</t><t>
   In the case of the new Non-Storing multicast MOP, arguably the new support is
   only needed at the 6LRs that will accept multicast listeners. It is still
   required that each listener can reach at least one such 6LR, so the upgraded
   6LRs must be deployed to cover all the 6LN that need multicast services.
</t><t>
   Using separate RPL Instances for in the one hand unicast traffic and in the
   other hand anycast and multicast traffic allows to use different objective
   function, one favoring the link quality up for unicast collection and one
   favoring downwards link quality for multicast distribution.
</t><t>
   But this might be impractical in some use cases where the signaling and the
   state to be installed in the devices are very constrained, the upgraded
   devices are too sparse, or the devices do not support more multiple instances.
</t><t>
   When using a single RPL Instance, MOP 3 expects the Storing Mode of Operation for both unicast and multicast, which is an issue in constrained networks that typically use MOP 1 for unicast. This specification allows a mixed mode that is signaled as MOP 1 in the DIO messages for backward compatibility, where limited multicast and/or anycast is available, under the following conditions:
</t>

<ul>
 <li>
   There MUST be enough density of 6LRs that support the mixed mode to
   cover the all the 6LNs that require multicast or anycast services. In Storing Mode, there MUST be enough density or 6LR that support the mixed mode
   to also form a DODAG to the Root.
 </li>  <li>
   The RPL routers that support the mixed mode and are configured to operate in
   in accordance with the desired operation in the network.
 </li> <li>
   The MOP signaled in the RPL DODAG Information Object (DIO) messages is MOP 1
   to enable the legacy nodes to operate as leaves.
 </li> <li>
   The support of multicast and/or anycast in the RPL Instance SHOULD be
   signaled by the 6LRs to the 6LN using a 6CIO, see <xref target="CIO"/>.
 </li> <li>
   Alternatively, the support of multicast in the RPL domain can be globally
   known by other means such as configuration or external information such as
   support of a version of an industry standard that mandates it. In that case,
   all the routers MUST support the mixed mode.
 </li>
</ul>

</section>	<!-- end section "Deployment considerations" -->

<section  anchor="sec"><name>Security Considerations</name>
<t>
    This specification extends <xref target="RFC8505"/>, and
    the security section of that document also applies to this document.
    In particular, the link layer SHOULD be sufficiently
    protected to prevent rogue access.
</t>
<t>
   <xref target="sec8928"/> leverages <xref target="RFC8928"/> to prevent an
   unwanted subscriber to register for an anycast of a multicast address. This
   mechanism comes with a keypair that is shared between all subscribers.
   A shared key is prone to be stolen and the level of protection can only go down with time.
</t>
<t>
   It is possible to update the keys associated to an address in all the
   6LNs, but the flow is not clearly documented and may not complete in due
   time for all nodes in LLN use cases. It may be simpler to install a
   all-new address with new keys over a period of time, and switch the traffic
   to that address when the migration is complete.
</t>
</section>	<!-- end section "Security Considerations" -->

<section anchor="back"><name>Backward Compatibility</name>
<t>
   A legacy 6LN will not register multicast addresses and the service will be
   the same when the network is upgraded. A legacy 6LR will not set the M flag
   in the 6CIO and an upgraded 6LN will not register multicast addresses.
</t>
<t>
   Upon an EDAR message, a legacy 6LBR may not realize that the address being
   registered is anycast or multicast, and return that it is duplicate in the
   EDAC status. The 6LR MUST ignore a duplicate status in the EDAR for anycast
   and multicast addresses.
</t>
<t>
   As detailed in <xref target="deploy"/>, it is possible to add multicast on
   an existing MOP 1 deployment.
</t>

<t>
   The combination of a multicast address and the M flag set to 0 in an RTO in
   a MOP 3 RPL Instance is understood by the receiver that supports this
   specification (the parent) as an indication that the sender (child) does
   not support this specification, but the RTO is accepted and processed as if
   the M flag was set for backward compatibility.
</t>

<t>
   When the DODAG is operated in MOP 3, a legacy node will not set the M flag
   and still expect multicast service as specified in section 12 of <xref
   target="RFC6550"/>.
   In MOP 3 an RTO that is received with a target that is multicast and the M bit set to 0 MUST be considered as multicast and MUST be processed as if the M flag is set.
</t>
</section>	<!-- end section "Backward Compatibility" -->

<section ><name>IANA Considerations</name>
<t>
    Note to RFC Editor, to be removed: please replace "This RFC" throughout this
    document by the RFC number for this specification once it is allocated.
    Also, the I Field is defined in <xref target="RFC9010"/> but is missing from
    the subregistry, so the bit positions must be added for completeness.
</t>
<t>
    IANA is requested to make changes under the "Internet Control Message
    Protocol version 6 (ICMPv6) Parameters" <xref target="IANA.ICMP"/> and the
    "Routing Protocol for Low Power and Lossy Networks (RPL)" <xref target="IANA.RPL"/>
    registry groupings, as follows:
</t>

    <section><name>New EDAR Message Flags Subregistry</name>
	<t>
    IANA is requested to create a new "EDAR Message Flags" registry under the
    heading "Internet Control Message Protocol version 6 (ICMPv6) Parameters"
    as indicated in <xref target="EDARflags"/>:
	</t>

	<table anchor="EDARflags" ><name>EDAR Message flags</name>
   <thead>
      <tr><td>Bit Number</td><td>Meaning</td><td>Reference</td></tr>
   </thead><tbody>
      <tr><td>0 (suggested)</td><td>A flag: Registered Address is Anycast </td><td>This RFC</td></tr>
      <tr><td>1 (suggested)</td><td>M flag: Registered Address is Multicast </td><td>This RFC</td></tr>
      <tr><td>2..7</td><td>Unassigned </td><td></td></tr>
   </tbody>
	</table>	<!-- end table "EDAR Message flags" +-->
    </section>	<!-- end section "New EDAR Message flags Subregistry -->


 <section><name>New EARO flags</name>
	<t> IANA is requested to make additions to the "Address Registration Option
    Flags" <xref target="IANA.ICMP.ARO.FLG"/> registry under the heading
    "Internet Control Message Protocol version 6 (ICMPv6) Parameters" as
    indicated in <xref target="AROflags"/>:
	</t>

	<table anchor="AROflags" ><name>New ARO flags</name>
   <thead>
      <tr><td>ARO flag</td><td>Meaning</td><td>Reference</td></tr>
   </thead><tbody>
      <tr><td>2 (suggested)</td><td>A flag: Registration for Anycast Address</td><td>This RFC</td></tr>
      <tr><td>3 (suggested)</td><td>M flag: Registration for Multicast Address</td><td>This RFC</td></tr>
      <tr><td>4 and 5</td><td>"I" Field</td><td>RFC 8505</td></tr>
   </tbody>
	</table>	<!-- end table "New  ARO flag" +-->
    </section>	<!-- end section "New ARO flag -->



    <section><name>New RTO flags</name>
	<t> IANA is requested to make additions to the "RPL Target Option Flags" <xref target="IANA.RPL.RTO.FLG"/>  registry under the heading "Routing Protocol for Low Power and Lossy Networks (RPL)"
    as indicated in <xref target="RTOflags"/>:
	</t>

	<table anchor="RTOflags" ><name>New RTO flags</name>
   <thead>
      <tr><td>Bit Number</td><td>Meaning</td><td>Reference</td></tr>
   </thead><tbody>
      <tr><td>2 (suggested)</td><td>A flag: Registered Address is Anycast</td><td>This RFC</td></tr>
      <tr><td>3 (suggested)</td><td>M flag: Registered Address is Multicast</td><td>This RFC</td></tr>
   </tbody>
	</table>	<!-- end table "New  RTO flags" +-->
    </section>	<!-- end section "New RTO flags -->






    <section><name>New RPL Mode of Operation</name>
	<t> IANA is requested to make an addition to the "Mode of Operation" <xref target="IANA.RPL.MOP"/> registry under the heading "Routing Protocol for Low Power and Lossy Networks (RPL)"
    as indicated in <xref target="RMOP"/>:
	</t>

	<table anchor="RMOP" ><name>New RPL Mode of Operation</name>
   <thead>
      <tr><td>Value</td><td>Description</td><td>Reference</td></tr>
   </thead><tbody>
      <tr><td>5 (suggested)</td><td>Non-Storing Mode of Operation with ingress
   replication multicast support</td><td>This RFC</td></tr>
   </tbody>
	</table>	<!-- end table "New  RTO flags" +-->
    </section>	<!-- end section "New RTO flags -->




    <section title="New 6LoWPAN Capability Bits">
	<t>
    IANA is requested to make an addition to the
    "6LoWPAN Capability Bits" <xref target="IANA.ICMP.6CIO"/> registry under the
    heading "Internet Control Message Protocol version 6 (ICMPv6) Parameters"
    as indicated in <xref target="CIOdat"/>:
	</t>

	<table anchor="CIOdat" ><name>New 6LoWPAN Capability Bits</name>
   <thead>
      <tr><td>Capability Bit</td><td>Meaning</td><td>Reference</td></tr>
   </thead><tbody>
      <tr><td>8 (suggested)</td><td>X flag: Registration for Unicast, Multicast, and Anycast Addresses Supported</td><td>This RFC</td></tr>

   </tbody>
	</table>	<!-- end table "New 6LoWPAN Capability Bits" -->
    </section>	<!-- end section "New 6LoWPAN Capability Bits" -->



    <section title="New Address Registration Option Status Values">
	<t>
   IANA has made additions to the "Address Registration Option Status
   Values"  registry under the heading "Internet Control Message
   Protocol version 6 (ICMPv6) Parameters", as follows:
	</t>

	<table anchor="AROstat" ><name>New Address Registration Option Status Values"</name>
   <thead>
      <tr><td>Value </td><td>Description</td><td>Reference</td></tr>
   </thead><tbody>
      <tr><td>11 (suggested)</td><td>Registration Refresh Request</td><td>This RFC</td></tr>

   </tbody>
	</table>	<!-- end table "New Address Registration Option Status Values" -->
    </section>	<!-- end section "New Address Registration Option Status Values" -->



    <section title="New IPv6 Neighbor Discovery Option">
	<t>
   IANA has made additions to the "IPv6 Neighbor Discovery Option Formats"
   registry under the heading "Internet Control Message
   Protocol version 6 (ICMPv6) Parameters", as follows:
	</t>

	<table anchor="NDOpt" ><name>New IPv6 Neighbor Discovery Option"</name>
   <thead>
      <tr><td>Value </td><td>Description</td><td>Reference</td></tr>
   </thead><tbody>
      <tr><td>42 (suggested)</td><td>Node Uptime Option</td><td>This RFC</td></tr>

   </tbody>
	</table>	<!-- end table "IPv6 Neighbor Discovery Option" -->
    </section>	<!-- end section "IPv6 Neighbor Discovery Option" -->





</section>	<!-- end section "IANA Considerations" -->

<section title="Acknowledgments">
<t>

</t>
</section> <!-- title="Acknowledgments" -->







</middle>

<back>

<displayreference   target="IEEE802154"            to="IEEE Std 802.15.4"/>
<displayreference   target="IEEE802151"            to="IEEE Std 802.15.1"/>
<displayreference   target="IEEE80211"             to="IEEE Std 802.11"/>
<displayreference   target="I-D.heile-lpwan-wisun-overview"   to="Wi-SUN"/>

    <references title="Normative References">
	<!-- RFC  -->

	<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"/>
    <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.3306.xml"/>
    <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.4291.xml"/>
 	<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.4861.xml"/>
	<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.4862.xml"/>
	<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6550.xml"/>
	<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6775.xml"/>
	<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7346.xml"/>
	<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7400.xml"/>
	<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml"/>
	<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8200.xml"/>
	<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8505.xml"/>

    <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8928.xml"/>

    <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.9010.xml"/>

	   <reference anchor="IANA.ICMP">
		<front>
			<title>IANA Registry for ICMPv6</title>
			<author>
				<organization>
					IANA
				</organization>
			</author>
			<date year=""></date>
		</front>
		<seriesInfo name="IANA," value="https://www.iana.org/assignments/icmpv6-parameters/icmpv6-parameters.xhtml"></seriesInfo>
	   </reference>

       <reference anchor="IANA.ICMP.ARO.FLG">
       <front>
			<title>IANA Sub-Registry for the ARO Flags</title>
			<author>
				<organization>
					IANA
				</organization>
			</author>
			<date year=""></date>
		</front>
		<seriesInfo name="IANA," value="https://www.iana.org/assignments/icmpv6-parameters/icmpv6-parameters.xhtml#icmpv6-adress-registration-option-flags"></seriesInfo>
	   </reference>

       <reference anchor="IANA.ICMP.6CIO">
       <front>
			<title>IANA Sub-Registry for the 6LoWPAN Capability Bits</title>
			<author>
				<organization>
					IANA
				</organization>
			</author>
			<date year=""></date>
		</front>
		<seriesInfo name="IANA," value="https://www.iana.org/assignments/icmpv6-parameters/icmpv6-parameters.xhtml#sixlowpan-capability-bits"></seriesInfo>
	   </reference>


	   <reference  anchor="IANA.RPL">
       <front>
			<title>IANA Registry for the RPL</title>
			<author>
				<organization>
					IANA
				</organization>
			</author>
			<date year=""></date>
		</front>
		<seriesInfo name="IANA," value="https://www.iana.org/assignments/rpl/rpl.xhtml"></seriesInfo>
	   </reference>


	   <reference  anchor="IANA.RPL.RTO.FLG">
       <front>
			<title> IANA Sub-Registry for the RTO Flags</title>
			<author>
				<organization>
					IANA
				</organization>
			</author>
			<date year=""></date>
		</front>
		<seriesInfo name="IANA," value="https://www.iana.org/assignments/rpl/rpl.xhtml#rpl-target-option-flags"></seriesInfo>
	   </reference>

	   <reference  anchor="IANA.RPL.MOP">
       <front>
			<title> IANA Sub-Registry for the RPL Mode of Operation</title>
			<author>
				<organization>
					IANA
				</organization>
			</author>
			<date year=""></date>
		</front>
		<seriesInfo name="IANA," value="https://www.iana.org/assignments/rpl/rpl.xhtml#mop"></seriesInfo>
	   </reference>


    </references>


    <references title="Informative References">
	<!-- RFC  -->

    <!-- I-D -->
    <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.3810.xml"/>
    <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.4919.xml"/>
    <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6282.xml"/>
    <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7731.xml"/>
     <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7761.xml"/>
    <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6052.xml"/>
    <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.9008.xml"/>
    <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-bess-evpn-optimized-ir.xml"/>
    <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.heile-lpwan-wisun-overview.xml"/><xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.thubert-bess-secure-evpn-mac-signaling.xml"/>
      <reference anchor="IEEE802154">
         <front>
            <title>IEEE Std 802.15.4, Part. 15.4: Wireless Medium Access
            Control (MAC) and Physical Layer (PHY) Specifications for Low-Rate
            Wireless Personal Area Networks
            </title>
            <author>
               <organization>IEEE standard for Information Technology</organization>
            </author>
            <date/>
         </front>
      </reference>

      <reference anchor="IEEE80211"
                 target="https://ieeexplore.ieee.org/document/9363693" >
        <front>
          <title>
            IEEE Standard 802.11 - IEEE Standard for Information
            Technology - Telecommunications and information exchange
            between systems Local and metropolitan area networks -
            Specific requirements - Part 11: Wireless LAN Medium
            Access Control (MAC) and Physical Layer (PHY)
            Specifications.
          </title>
          <author>
               <organization>IEEE standard for Information Technology</organization>
           </author>
          <date/>
        </front>
      </reference>


      <reference anchor="IEEE802151">
         <front>
            <title> IEEE Standard for Information Technology -
		Telecommunications and Information Exchange Between Systems -
		Local and Metropolitan Area Networks - Specific Requirements. -
		Part 15.1: Wireless Medium Access Control (MAC) and Physical
		Layer (PHY) Specifications for Wireless Personal Area Networks
		(WPANs)
            </title>
            <author>
            	<organization> IEEE standard for Information Technology
		</organization>
            </author>
            <date/>
         </front>
      </reference>

    </references>

</back>

</rfc>
