<?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, 8505, 9010'
docName="draft-thubert-6lo-multicast-registration-01" >

<front>

   <title abbrev='Multicast Address Registration'>IPv6 Neighbor Discovery Multicast Address 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 in order to enable the registration by a 6LN
    of an IPv6 multicast address to a 6LR.
    This document also extends RFC 9010 to enable the 6LR to inject the address
    in the RPL multicast support.
   </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) to provide 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 a given 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 Address Discovery (aka Lookup) andsime 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 Glocal 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 multicast
   addresses and for the 6LR to inject them in the RPL multicast support.
</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>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>RA</dt><dd>  Router Advertisement  </dd>
       <dt>RS</dt><dd>  Router Solicitation  </dd>
       <dt>TID</dt><dd> Transaction ID </dd>
       </dl>


  </section>	<!-- end section "Glossary" -->


</section>	<!-- end section "Terminology" -->



<!-- **************************************************************** -->
<!-- **************************************************************** -->
<!-- **************************************************************** -->
<!-- **************************************************************** -->
<!-- **************************************************************** -->
<!-- **************************************************************** -->
<!-- **************************************************************** -->
<!-- **************************************************************** -->

<section anchor='overview'><name>Overview</name>
   <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 with <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. 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 mesh
    <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 addresses to a RPL router
   acting as a 6LR, using a 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.
   </t><t>
   With this specification, the 6LNs can now register for the multicast
   addresses they listen to, using a new M flag in the EARO to signal a
   registration for a multicast address. Multiple 6LN can register for the same multicast address to the same 6LR. Note the use of the term "for",
   a node registers the unicast addresses that it owns, but registers for
   multicast addresses that it listens to.
   </t><t>
   If the R flag is set in the registration of one or more 6LNs for the same
   multicast address, the 6LR injects the multicast address in the RPL
   multicast support, based on the longest registration lifetime across those
   6LNs.
   </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 registered for it as the leaves.
   </t><t>
   As prescribed in section 12 of <xref target='RFC6550'/>, the 6LR
   forward the multicast packets as individual unicast MAC frames to each
   child that advertised the multicast address in its DAO message . In most LLNs
   a broadcast is unreliable (no ack) and forces a listener to remain awake, so
   it is expected that the 6LR also delivers the multicast packet as individual
   unicast MAC frames to each of the 6LNs that registered for the multicast
   address.
   </t><t>
   In the new RPL "Non-Storing Mode of Operation with multicast support" that is
   introduced here, the DAO messages register multicast addresses as Targets,
   though never as Transit. The multicast distribution is hub-and-spoke from
   the Root to all the 6LRs that are transit for the multicast address, using
   the same source-routing header as for unicast targets attahced to the 6LR,
   but for the ultimate entry that is the multicast address.
   </t><t>
   With this specification, the 6LNs can also register for the anycast
   addresses they listen to, using a new A flag in the EARO to signal a
   registration for an anycast address. Multiple 6LN can register for the same
   anycast address to the same 6LR, but the RPL routing ensures that only one
   of the 6LN gets the particular packet.

   </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 Multicast Address Supported" (M) flag indicates
   to the 6LN that the 6LR accepts multicast address registrations as
   specified in this document and will ensure that packets for the multicast Registered Address will be routed to the 6LNs that registered with the
   R flag set.
    </t>
    <t>
   <xref target='fig6CIO'/> illustrates the M 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   |M|A|D|L|B|P|E|G|
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                           Reserved                            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    ]]></artwork>
    </figure>

    <t> New Option Field:    </t>
	<dl>
	<dt>M</dt><dd> 1-bit flag: "Registration for 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>
  </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 multicast
   support" (MOP to be assigned by IANA) whereby the non-storing Mode DAO to
   the Root may contain multicast addresses in the RTO, whereas the Transit
   Information Option (TIO) can not.
   In that case, the RPL Root copies the multicast packet to each 6LR that is
   a transit for the multicast target, using the same source routing header as
   for unicast address of a RPL Unaware Leaf (RUL) attached to that 6LR.
</t> <t>
   For a packet that is not generated by the Root, this means that the Root encapsulates a multicast packet as discussed in section 8.2.4 of<xref target='RFC9008'/>.
   For a packet that is not generated by the Root, this means that the Root encapsulates a multicast packet as discussed in section 8.2.4 of<xref target='RFC9008'/>.
</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='newrtoflg'><name>New Non6storing Multicast MOP</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 is called a multicast RTO.
   An RTO that has the A flag set is called an anycast RTO.
   An RTO that has neither M nor A flag set is called a unicast RTO.
   The M and A flags are mutually exclusive and MUST NOT be both set.
</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-Storiong 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='multireg'><name>Registering Extensions</name>
<t>
   With <xref target='RFC8505'/>:
   </t>
<ul>
   <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 behaviour:
  </t>
   <ul>
   <li>
   Registration for multicast and anycast addresses is now supported.
   </li>
   <li>
   The 6LN MUST also register all the IPv6 multicast addresses that it listens
   to 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 Registration Ownership Verifier (ROVR) in the EARO identifies uniquely
    a registration within the namespace of the Registered Address. The 6LR MUST
    maintain a registration state per tuple (IPv6 address, ROVR) for both
    anycast and multicast types of address, since multiple 6LNs may register for the same address of these types.
   </li>

   </ul>

</section> <!-- end section "Multicast Registration"-->

</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 behaviour:
   </t>
   <ul>
   <li>
   Upon a registration with the R and the M flags set to 1 in the EARO, the
   6LR injects the address in the RPL multicast support.
   </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>
   </ul>


</section> <!-- end section "Updating RFC 9010"-->



<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 use a scope
   of Realm-Local whereas a multicast address that needs to span a RPL Instance
   MUST use 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 leveerage 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 form a multicast address and use the
   appropriate scope, Realm-Local or Admin-Local.
</t>
<t><xref target='RFC3306'>"Unicast-Prefix-based IPv6 Multicast Addresse"</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"  deployement 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>
   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 so as to cover all the 6LN that need multicast
   services.
</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 operations and operating for the multicast MOP.
</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 favouring the link quality up for unicast collection and one
   farouring 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 teh 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>
</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>
   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 may fail 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 RFC 9010 but
    we failed to insert it in the subregistry and the flags appear as
    unspecified though they are.
</t>
<t>
    IANA is requested to make  changes under the "Internet Control Message
    Protocol version 6 (ICMPv6) Parameters" and the "Routing Protocol for Low
    Power and Lossy Networks (RPL)" registries, as follows:
</t>

    <section><name>New RTO flags</name>
	<t> IANA is requested to make additions to the "RPL Target Option Flags" subregistry of the the "Routing Protocol for Low Power and Lossy Networks (RPL)" registry 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: Target is an Anycast Address</td><td>This RFC</td></tr>
      <tr><td>3 (suggested)</td><td>M flag: Target is a Multicast Address</td><td>This RFC</td></tr>
   </tbody>
	</table>	<!-- end table "New  RTO flags" +-->
    </section>	<!-- end section "New RTO flags -->
    <section><name>New EARO flags</name>
	<t> IANA is requested to make additions to the "Address Registration Option
    Flags" subregistry of the "Internet Control Message Protocol version 6 (ICMPv6) Parameters" registry 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 title="New 6LoWPAN Capability Bits">
	<t>
    IANA is requested to make an addition to the Subregistry for
    "6LoWPAN Capability Bits" subregistry  as follows:
	</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>M flag: Registration for 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>	<!-- 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.9010.xml'/>

    </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.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.heile-lpwan-wisun-overview.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>
