rfc9010xml2.original.xml   rfc9010.xml 
<?xml version='1.0' encoding='utf-8'?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent">
<?rfc toc="yes"?> <!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent">
<?rfc tocompact="yes"?>
<?rfc tocdepth="3"?>
<?rfc tocindent="yes"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc compact="no"?>
<?rfc subcompact="no"?>
<?rfc authorship="yes"?>
<?rfc tocappendix="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="std" ipr='trust200902
' tocInclude="true" updates='6550,6775,8505' obsoletes="" consensus="true" submi
ssionType="IETF" xml:lang="en" version="3" docName="draft-ietf-roll-unaware-leav
es-30" >
<!-- updates='draft-ietf-roll-efficient-npdao,6550, 8505' consensus="true" submi ssionType="IETF" --> <rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr='trust200902' tocInclude="t rue" symRefs="true" sortRefs="true" updates='6550, 6775, 8505' obsoletes="" subm issionType="IETF" category="std" consensus="true" xml:lang="en" version="3" docN ame="draft-ietf-roll-unaware-leaves-30" number="9010">
<front> <front>
<title abbrev='RPL-Unaware Leaves'>Routing for RPL (Routing Protocol for Low -Power and&nbsp;Lossy&nbsp;Networks)&nbsp;Leaves</title>
<title abbrev='RPL Unaware Leaves'>Routing for RPL Leaves</title> <seriesInfo name="RFC" value="9010"/>
<author initials='P' surname='Thubert' fullname='Pascal Thubert' role='editor '> <author initials='P' surname='Thubert' fullname='Pascal Thubert' role='editor '>
<organization abbrev='Cisco Systems'>Cisco Systems, Inc</organization> <organization abbrev='Cisco Systems'>Cisco Systems, Inc.</organization>
<address> <address>
<postal> <postal>
<street>Building D</street> <street>Building D</street>
<street>45 Allee des Ormes - BP1200 </street> <street>45 Allee des Ormes - BP1200 </street>
<city>Mougins - Sophia Antipolis</city> <city>MOUGINS - Sophia Antipolis</city>
<code>06254</code> <code>06254</code>
<country>France</country> <country>France</country>
</postal> </postal>
<phone>+33 497 23 26 34</phone> <phone>+33 497 23 26 34</phone>
<email>pthubert@cisco.com</email> <email>pthubert@cisco.com</email>
</address> </address>
</author> </author>
<author fullname='Michael C. Richardson' initials='M.' surname='Richardson'> <author fullname='Michael C. Richardson' initials='M.' surname='Richardson'>
<organization abbrev='Sandelman'>Sandelman Software Works</organization> <organization abbrev='Sandelman'>Sandelman Software Works</organization>
skipping to change at line 40 skipping to change at line 28
<code>06254</code> <code>06254</code>
<country>France</country> <country>France</country>
</postal> </postal>
<phone>+33 497 23 26 34</phone> <phone>+33 497 23 26 34</phone>
<email>pthubert@cisco.com</email> <email>pthubert@cisco.com</email>
</address> </address>
</author> </author>
<author fullname='Michael C. Richardson' initials='M.' surname='Richardson'> <author fullname='Michael C. Richardson' initials='M.' surname='Richardson'>
<organization abbrev='Sandelman'>Sandelman Software Works</organization> <organization abbrev='Sandelman'>Sandelman Software Works</organization>
<address> <address>
<email>mcr+ietf@sandelman.ca</email> <email>mcr+ietf@sandelman.ca</email>
<uri>https://www.sandelman.ca/</uri>
<uri>http://www.sandelman.ca/</uri>
</address> </address>
</author> </author>
<date/> <date year="2021" month="April"/>
<area>Routing</area>
<workgroup>ROLL</workgroup> <keyword>IPv6</keyword>
<keyword>ND</keyword>
<keyword>Redistribution</keyword>
<abstract> <abstract>
<t> <t>
This specification updates RFC6550, RFC6775, and RFC8505. It provides a This specification provides a mechanism for a host that implements a
mechanism for a host that implements a routing-agnostic interface based routing-agnostic interface based on IPv6 over Low-Power Wireless Personal Area
on 6LoWPAN Neighbor Discovery to obtain reachability services across a Network (6LoWPAN) Neighbor Discovery to obtain reachability services across a
network that leverages RFC6550 for its routing operations. network that leverages RFC 6550 for its routing operations. It updates RFCs 65
50,
6775, and 8505.
</t> </t>
</abstract> </abstract>
</front> </front>
<middle> <middle>
<section anchor='introduction'><name>Introduction</name> <section anchor='introduction'><name>Introduction</name>
<t>The design of Low Power and Lossy Networks (LLNs) is generally focused on <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 saving energy, which is the most constrained resource of all. Other design
constraints, such as a limited memory capacity, duty cycling of the LLN constraints, such as a limited memory capacity, duty cycling of the LLN
devices and low-power lossy transmissions, derive from that primary concern. devices, and low-power lossy transmissions, derive from that primary concern.
</t> </t>
<t>The IETF produced the <xref target='RFC6550'>"Routing Protocol for Low Power <t>The IETF produced "<xref target="RFC6550" format="title"/>" <xref
and Lossy Networks"</xref> (RPL) to provide IPv6 <xref target='RFC8200'/> target="RFC6550" format="default"/> to provide routing services for IPv6 <xref
routing services within such constraints. RPL belongs to the class of target='RFC8200'/> within such constraints. RPL belongs to the class of
Distance-Vector protocols, which, compared to link-state protocols, distance-vector protocols -- which, compared to link-state protocols, limit
limit the amount of topological knowledge that needs to be installed and the amount of topological knowledge that needs to be installed and maintained
maintained in each node, and does not require convergence to avoid in each node -- and does not require convergence to avoid micro-loops.
micro-loops.
</t> </t>
<t> <t>
To save signaling and routing state in constrained networks, To save signaling and routing state in constrained networks,
RPL allows a path stretch (see <xref target='RFC6687'/>), whereby routing RPL allows a path stretch (see <xref target='RFC6687'/>), whereby routing
is only performed along a Destination-Oriented Directed Acyclic Graph (DODAG) 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 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. between two peers, whatever that would mean in a given LLN.
This trades the quality of peer-to-peer (P2P) paths for a vastly reduced 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 amount of control traffic and routing state that would be required to
operate an any-to-any shortest path protocol. Additionally, operate an any-to-any shortest-path protocol. Additionally,
broken routes may be fixed lazily and on-demand, based on dataplane broken routes may be fixed lazily and on demand, based on data-plane
inconsistency discovery, which avoids wasting energy in the proactive repair inconsistency discovery, which avoids wasting energy in the proactive repair
of unused paths. of unused paths.
</t> </t>
<t> <t>
For many of the nodes, though not all, the DODAG provides multiple For many of the nodes, though not all, the DODAG provides multiple
forwarding solutions towards the Root of the topology via so-called parents. forwarding solutions towards the root of the topology via so-called parents.
RPL is designed to adapt to fuzzy connectivity, whereby the physical topology RPL installs the routes proactively, but to adapt to fuzzy connectivity
cannot be expected to reach a stable state, with a lazy control that creates -- whereby the physical topology cannot be expected to reach a stable state --
the routes proactively, but may only fix them reactively, upon actual traffic it uses a lazy route maintenance operation that may only fix them reactively,
. upon actual traffic.
The result is that RPL provides reachability for most of the LLN nodes, most The result is that RPL provides reachability for most of the LLN nodes, most
of the time, but may not converge in the classical sense. of the time, but may not converge in the classical sense.
</t> </t>
<!--t>
<xref target='RFC6550'/> provides unicast and multicast routing services
to RPL-Aware nodes (RANs), either as a collection tree for outwards traffic o
nly,
or with routing back to the devices as well. In the latter case, a RAN inject
s routes to itself using Destination
Advertisement Object (DAO) messages sent either to parent-nodes, in the RPL
Storing Mode, or to the Root indicating their parent, in the Non-Storing Mode
.
This process effectively forms a DODAG back to the device that is a subset of
the DODAG to the Root with all links reversed.
</t-->
<t> <t>
RPL can be deployed in conjunction with IPv6 Neighbor Discovery (ND) RPL can be deployed in conjunction with IPv6 Neighbor Discovery (ND)
<xref target='RFC4861'/> <xref target='RFC4862'/> and 6LoWPAN ND <xref target='RFC4861'/> <xref target='RFC4862'/> and IPv6 over Low-Power Wir eless Personal Area Network (6LoWPAN) ND
<xref target='RFC6775'/> <xref target='RFC8505'/> to maintain reachability <xref target='RFC6775'/> <xref target='RFC8505'/> to maintain reachability
within a Non-Broadcast Multiple-Access (NBMA) Multi-Link subnet. within a Non-Broadcast Multi-Access (NBMA) multi-link subnet.
</t> </t>
<t> <t>
In that mode, IPv6 addresses are advertised individually as host routes. In that mode, IPv6 addresses are advertised individually as host routes.
Some nodes may act as routers and participate in the forwarding operations Some nodes may act as routers and participate in the forwarding operations,
whereas others will only receive/originate packets, acting as hosts in the whereas others will only receive/originate packets, acting as hosts in the
data-plane. data plane.
In <xref target='RFC6550'/> terms, an IPv6 host <xref target='RFC8504'/> Per the terminology of <xref target='RFC6550'/>, an IPv6 host <xref target='R
that is reachable over the RPL network is called a leaf. FC8504'/>
that is reachable over the RPL network is called a "leaf".
</t> </t>
<t> <t>
Section 2 of <xref target='I-D.ietf-roll-useofrplinfo'/> defines the terms <xref target="RFC9008" sectionFormat="of" section="2"/> defines the terms
RPL leaf, RPL-Aware-leaf (RAL) and RPL-Unaware Leaf (RUL). "RPL leaf", "RPL-Aware Leaf" (RAL), and "RPL-Unaware Leaf" (RUL).
A RPL leaf is a host attached to one or more RPL router(s); as such, it A RPL leaf is a host attached to one or more RPL routers; as such, it
relies on the RPL router(s) to forward its traffic across the RPL domain but relies on the RPL router(s) to forward its traffic across the RPL domain but
does not forward traffic from another node. As opposed to the RAL, the does not forward traffic from another node. As opposed to the RAL, the RUL do
RUL does not participate to RPL, and relies on its RPL router(s) also to es not
inject the routes to its IPv6 addresses in the RPL domain. participate in RPL and relies on its RPL router(s) to also inject the
routes to its IPv6 addresses in the RPL domain.
</t> </t>
<t> <t>
A RUL may be unable to participate because it is very energy-constrained, A RUL may be unable to participate because it is very energy constrained
code-space constrained, or because it would be unsafe to let it inject or code-space constrained, or because it would be unsafe to let it inject
routes in RPL. Using 6LoWPAN ND as opposed to RPL as the host-to-router routes in RPL. Using 6LoWPAN ND as opposed to RPL as the host-to-router
interface limits the surface of the possible attacks by the RUL against the interface limits the surface of the possible attacks by the RUL against the
RPL domain. If all RULs and RANs use 6LoWPAN ND for Neighbor Discovery, it is RPL domain. If all RULs and RPL-Aware Nodes (RANs) use 6LoWPAN ND for the nei ghbor discovery process, it is
also possible to protect the address ownership of all nodes, including the also possible to protect the address ownership of all nodes, including the
RULs. RULs.
</t> </t>
<t> <t>
This document specifies how the router injects the host routes in the RPL This document specifies how the router injects the host routes in the RPL
domain on behalf of the RUL. <xref target='prereq'/> details how the RUL domain on behalf of the RUL. <xref target='prereq'/> details how the RUL
can leverage 6LoWPAN ND to obtain the routing services from the router. can leverage 6LoWPAN ND to obtain the routing services from the router.
In that model, the RUL is also a 6LoWPAN Node (6LN) and the RPL-Aware router In that model, the RUL is also a 6LoWPAN Node (6LN) and the RPL-aware router
is also a 6LoWPAN Router (6LR). Using the 6LoWPAN ND Address Registration is also a 6LoWPAN Router (6LR). Using the 6LoWPAN ND Address Registration
mechanism, the RUL signals that the router must inject a host route for the mechanism, the RUL signals that the router must inject a host route for the
Registered Address. Registered Address.
</t> </t>
<figure anchor='injectfig'><name>Injecting Routes on behalf of RULs</name> <figure anchor='injectfig'><name>Injecting Routes on Behalf of RULs</name>
<artwork> <artwork><![CDATA[
------+--------- ------+---------
| Internet | Internet
| |
+-----+ +-----+
| | <------------- 6LBR / RPL Root | | <------------- 6LBR / RPL DODAG Root
+-----+ ^ +-----+ ^
| | | |
o o o o | RPL o o o o | RPL
o o o o o o o o | o o o o o o o o |
o o o o o o o o o o | + o o o o o o o o o o | +
o o o o o o o | o o o o o o o |
o o o o o o o o o | 6LoWPAN ND o o o o o o o o o | 6LoWPAN ND
o o o o o o | o o o o o o |
o o o o v o o o o v
o o o <------------- 6LR / RPL Border router o o o <------------- 6LR / RPL Border Router
^ ^
| 6LoWPAN ND only | 6LoWPAN ND only
v v
u &lt;------------- 6LN / RPL-Unaware Leaf u <------------- 6LN / RPL-Unaware Leaf]]></artwork>
</artwork>
</figure> </figure>
<t> <t>
The RPL Non-Storing Mode mechanism is used to extend the routing state with The RPL Non-Storing mode mechanism is used to extend the routing state with
connectivity to the RULs even when the DODAG is operated in Storing Mode. connectivity to the RULs even when the DODAG is operated in Storing mode.
The unicast packet forwarding operation by the 6LR serving a RUL is described The unicast packet-forwarding operation by the 6LR serving a RUL is described
in section 4.1 of <xref target='I-D.ietf-roll-useofrplinfo'/>. in <xref target="RFC9008" sectionFormat="of" section="4.1.1"/>.
</t> </t>
<t> <t>
Examples of possible RULs include severely energy constrained sensors such as Examples of possible RULs include severely energy-constrained sensors such as
window smash sensor (alarm system), and kinetically powered light switches. window smash sensors (alarm system) and kinetically powered light switches.
Other applications of this specification may include a smart grid network tha t Other applications of this specification may include a smart grid network tha t
controls appliances - such as washing machines or the heating system - in the controls appliances -- such as washing machines or the heating system -- in t
home. Appliances may not participate to the RPL protocol operated in the he
Smartgrid network but can still interact with the Smartgrid for control and/o home. Appliances may not participate in the RPL protocol operated in the
r smart grid network but can still interact with the smart grid for control and
/or
metering. metering.
</t> </t>
<t> <t>
This specification can be deployed incrementally in a network that implements This specification can be deployed incrementally in a network that implements
<xref target='I-D.ietf-roll-useofrplinfo'/>. Only the Root and the 6LRs that <xref target='RFC9008'/>. Only the root and the 6LRs that
connect the RULs need to be upgraded. The RPL routers on path will only see connect the RULs need to be upgraded. The RPL routers on the path will only s
unicast IPv6 traffic between the Root and the 6LR. ee
unicast IPv6 traffic between the root and the 6LR.
</t> </t>
<t> <t>
This document is organized as follows: This document is organized as follows:
</t> </t>
<ul spacing='normal'> <ul spacing='normal'>
<li> <li>
<xref target='prereqv6'/> and <xref target='lpnd'/> present in a Sections <xref target='prereqv6' format="counter"/> and <xref target='lpnd' format="counter"/> present in a
non-normative fashion the salient aspects of RPL and 6LoWPAN ND, non-normative fashion the salient aspects of RPL and 6LoWPAN ND,
respectively, that are leveraged in this specification to provide respectively, that are leveraged in this specification to provide
connectivity to a 6LN acting as a RUL across a RPL network. connectivity to a 6LN acting as a RUL across a RPL network.
</li> </li>
<li> <li>
<xref target='prereq'/> lists the requirements that a RUL needs to match <xref target='prereq'/> lists the requirements that a RUL needs to match
in order to be served by a RPL router that complies with this specification. in order to be served by a RPL router that complies with this specification.
</li> </li>
<li> <li>
<xref target='upd'/> presents the changes made to <xref target='RFC6550'/>; <xref target='upd'/> presents the changes made to <xref target='RFC6550'/>;
a new behavior is introduced whereby the 6LR advertises the 6LN's addresses a new behavior is introduced whereby the 6LR advertises the 6LN's addresses
in a RPL DAO message based on the ND registration by the 6LN, and the RPL in a RPL Destination Advertisement Object (DAO) message based on the ND registra
root performs the EDAR/EDAC exchange with the 6LoWPAN Border Router (6LBR) o tion by the 6LN, and the RPL DODAG root performs the Extended Duplicate Address
n behalf of the 6LR; Request / Extended Duplicate Address Confirmation (EDAR/EDAC) exchange with the
6LoWPAN Border Router (6LBR) on behalf of the 6LR;
modifications are introduced to some RPL options and to the RPL Status to modifications are introduced to some RPL options and to the RPL Status to
facilitate the integration of the protocols. facilitate the integration of the protocols.
</li> </li>
<li> <li>
<xref target='updnpdao'/> presents the changes made to <xref target='updnpdao'/> presents the changes made to
<xref target='I-D.ietf-roll-efficient-npdao'/>; the use of the DCO message i s extended to the Non-Storing MOP to report asynchronous issues from the Root to the 6LR. <xref target='RFC9009'/>; the use of the Destination Cleanup Object (DCO) me ssage is extended to the Non-Storing RPL Mode of Operation (MOP) to report async hronous issues from the root to the 6LR.
</li> </li>
<li> <li>
<xref target='upd2'/> presents the changes made to <xref target='RFC6775'/> <xref target='upd2'/> presents the changes made to <xref target='RFC6775'/>
and <xref target='RFC8505'/>; The range of the ND status codes is reduced and <xref target='RFC8505'/>; the range of the Address Registration Option /
down to 64 values, and the remaining bits in the original status field are Extended Address Registration Option (ARO/EARO) Status values is reduced
to 64 values, and the remaining bits in the original status field are
now reserved. now reserved.
</li> </li>
<li> <li>
<xref target='op'/> and <xref target='multiop'/> present the operation of Sections <xref target='op' format="counter"/> and <xref target='multiop' for mat="counter"/> present the operation of
this specification for unicast and multicast flows, respectively, and this specification for unicast and multicast flows, respectively, and
<xref target='security-considerations'/> presents associated security <xref target='security-considerations'/> presents associated security
considerations. considerations.
</li> </li>
</ul> </ul>
</section> </section>
<section><name>Terminology</name> <section><name>Terminology</name>
<section anchor='bcp'><name>Requirements Language</name> <section anchor='bcp'><name>Requirements Language</name>
<t> <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>",
"<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>",
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "<bcp14>SHALL NOT</bcp14>", "<bcp14>SHOULD</bcp14>",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "<bcp14>SHOULD NOT</bcp14>",
"OPTIONAL" in this document are to be interpreted as described in BCP 14 "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
<xref target='RFC2119'/> <xref target='RFC8174'/> when, and only when, they "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document
appear in all capitals, as shown here. are to be interpreted as described in BCP&nbsp;14
<xref target="RFC2119"/> <xref target="RFC8174"/> when, and only
</t> when, they appear in all capitals, as shown here.</t>
</section> <!-- end section "Requirements Language" --> </section>
<section anchor='gloss'><name>Glossary</name> <section anchor='gloss'><name>Glossary</name>
<t> This document uses the following acronyms: <t> This document uses the following abbreviations:
</t><dl spacing='compact'> </t><dl spacing='compact'>
<dt>6CIO:</dt><dd> 6LoWPAN Capability Indication Option</dd> <dt>6BBR:</dt><dd>6LoWPAN Backbone Router</dd>
<dt>6LN:</dt><dd> 6LoWPAN Node (a Low Power host or router) </dd> <dt>6CIO:</dt><dd>6LoWPAN Capability Indication Option</dd>
<dt>6LR:</dt><dd> 6LoWPAN router </dd> <dt>6LBR:</dt><dd>6LoWPAN Border Router</dd>
<dt>6LBR:</dt><dd> 6LoWPAN Border router </dd> <dt>6LN:</dt><dd>6LoWPAN Node (a low-power host or router)</dd>
<dt>(E)ARO:</dt><dd> (Extended) Address Registration Option </dd> <dt>6LoRH:</dt><dd>6LoWPAN Routing Header</dd>
<dt>(E)DAR:</dt><dd> (Extended) Duplicate Address Request </dd> <dt>6LoWPAN:</dt><dd>IPv6 over Low-Power Wireless Personal Area Network</dd>
<dt>(E)DAC:</dt><dd> (Extended) Duplicate Address Confirmation </dd> <dt>6LR:</dt><dd>6LoWPAN Router</dd>
<dt>DAD:</dt><dd> Duplicate Address Detection </dd> <dt>AP-ND:</dt><dd>Address-Protected Neighbor Discovery</dd>
<dt>DAO:</dt><dd> Destination Advertisement Object (a RPL message) </dd> <dt>ARO:</dt><dd>Address Registration Option</dd>
<dt>DCO:</dt><dd> Destination Cleanup Object (a RPL message) </dd> <dt>DAC:</dt><dd>Duplicate Address Confirmation</dd>
<dt>DIO:</dt><dd> DODAG Information Object (a RPL message) </dd> <dt>DAD:</dt><dd>Duplicate Address Detection</dd>
<dt>DODAG:</dt><dd> Destination-Oriented Directed Acyclic Graph </dd> <dt>DAO:</dt><dd>Destination Advertisement Object (a RPL message)</dd>
<dt>LLN:</dt><dd> Low-Power and Lossy Network </dd> <dt>DAR:</dt><dd>Duplicate Address Request</dd>
<dt>MOP:</dt><dd> RPL Mode of Operation </dd> <dt>DCO:</dt><dd>Destination Cleanup Object (a RPL message)</dd>
<dt>NA:</dt><dd> Neighbor Advertisement </dd> <dt>DIO:</dt><dd>DODAG Information Object (a RPL message)</dd>
<dt>NCE:</dt><dd> Neighbor Cache Entry </dd> <dt>DODAG:</dt><dd>Destination-Oriented Directed Acyclic Graph</dd>
<dt>ND:</dt><dd> Neighbor Discovery </dd> <dt>EARO:</dt><dd>Extended Address Registration Option</dd>
<dt>NS:</dt><dd> Neighbor Solicitation </dd> <dt>EDAC:</dt><dd>Extended Duplicate Address Confirmation</dd>
<dt>RA:</dt><dd> router Advertisement </dd> <dt>EDAR:</dt><dd>Extended Duplicate Address Request</dd>
<dt>ROVR:</dt><dd> Registration Ownership Verifier </dd> <dt>EUI:</dt><dd>Extended Unique Identifier</dd>
<dt>RPI:</dt><dd> RPL Packet Information </dd> <dt>LLN:</dt><dd>Low-Power and Lossy Network</dd>
<dt>RAL:</dt><dd> RPL-aware Leaf </dd> <dt>MLD:</dt><dd>Multicast Listener Discovery</dd>
<dt>RAN:</dt><dd> RPL-Aware Node (either a RPL router or a RPL-aware Leaf) < <dt>MOP:</dt><dd>RPL Mode of Operation</dd>
/dd> <dt>NA:</dt><dd>Neighbor Advertisement</dd>
<dt>RUL:</dt><dd> RPL-Unaware Leaf</dd> <dt>NBMA:</dt><dd>Non-Broadcast Multi-Access</dd>
<dt>SRH:</dt><dd> Source-Routing Header</dd> <dt>NCE:</dt><dd>Neighbor Cache Entry</dd>
<dt>TID:</dt><dd> Transaction ID (a sequence counter in the EARO) </dd> <dt>ND:</dt><dd>Neighbor Discovery</dd>
<dt>TIO:</dt><dd> Transit Information Option</dd> <dt>NS:</dt><dd>Neighbor Solicitation</dd>
<dt>PIO:</dt><dd>Prefix Information Option</dd>
<dt>RA:</dt><dd>Router Advertisement</dd>
<dt>RAL:</dt><dd>RPL-Aware Leaf</dd>
<dt>RAN:</dt><dd>RPL-Aware Node (either a RPL router or a RPL-Aware Leaf)</d
d>
<dt>RH3:</dt><dd>Routing Header for IPv6 (type 3)</dd>
<dt>ROVR:</dt><dd>Registration Ownership Verifier</dd>
<dt>RPI:</dt><dd>RPL Packet Information</dd>
<dt>RPL:</dt><dd>Routing Protocol for Low-Power and Lossy Networks</dd>
<dt>RUL:</dt><dd>RPL-Unaware Leaf</dd>
<dt>SAVI:</dt><dd>Source Address Validation Improvement</dd>
<dt>SLAAC:</dt><dd>Stateless Address Autoconfiguration</dd>
<dt>SRH:</dt><dd>Source Routing Header</dd>
<dt>TID:</dt><dd>Transaction ID (a sequence counter in the EARO)</dd>
<dt>TIO:</dt><dd>Transit Information Option</dd>
</dl>
</dl><t> </section>
</t>
</section> <!-- end section "Subset of a 6LoWPAN Glossary" -->
<section anchor='lo'><name>References</name> <section anchor='lo'><name>Related Documents</name>
<t> <t>
The Terminology used in this document is consistent with and incorporates The terminology used in this document is consistent with, and incorporates
that described in <xref target='RFC7102'>"Terms Used in Routing for Low-Power the terms provided in, "<xref target="RFC7102" format="title"/>" <xref target
and Lossy Networks (LLNs)"</xref>. ="RFC7102" format="default"/>. A glossary of classical 6LoWPAN abbreviations is
A glossary of classical 6LoWPAN acronyms is given in <xref target='gloss'/>. given in <xref target='gloss'/>.
Other terms in use in LLNs are found in <xref target='RFC7228'> Other terms in use in LLNs are found in "<xref target="RFC7228" format="title
"Terminology for Constrained-Node Networks"</xref>. "/>" <xref target="RFC7228" format="default"/>.
This specification uses the terms 6LN and 6LR to refer specifically to nodes This specification uses the terms "6LN" and "6LR" to refer specifically to no
des
that implement the 6LN and 6LR roles in 6LoWPAN ND and does not expect other that implement the 6LN and 6LR roles in 6LoWPAN ND and does not expect other
functionality such as 6LoWPAN Header Compression <xref target='RFC6282'/> functionality such as 6LoWPAN Header Compression <xref target='RFC6282'/>
from those nodes. from those nodes.
</t> </t>
<t>"RPL", the "RPL Packet Information" (RPI), "RPL Instance" (indexed by a <t>"RPL", "RPI", "RPL Instance" (indexed by a
RPLInstanceID), "up", "down" are defined in RPLInstanceID), "up", and "down" are defined in "<xref target="RFC6550" forma
<xref target='RFC6550'>"RPL: IPv6 Routing t="title"/>" <xref target="RFC6550" format="default"/>. The RPI is the abstract
Protocol for Low-Power and Lossy Networks"</xref>. The RPI is the abstract
information that RPL defines to be placed in data packets, e.g., as the RPL information that RPL defines to be placed in data packets, e.g., as the RPL
Option <xref target='RFC6553'/> within the IPv6 Hop-By-Hop Header. Option <xref target='RFC6553'/> within the IPv6 Hop-By-Hop Header.
By extension, the term "RPI" is often used to refer to the RPL Option itself. By extension, the term "RPI" is often used to refer to the RPL Option itself.
The Destination Advertisement Object The DAO and DIO messages are also specified in
(DAO) and DODAG Information Object (DIO) messages are also specified in <xref target='RFC6550'/>. The DCO message is defined in <xref target='RFC9009
<xref target='RFC6550'/>. The Destination Cleanup Object (DCO) message '/>.
is defined in <xref target='I-D.ietf-roll-efficient-npdao'/>.
</t><t> </t><t>
This document uses the terms RPL-Unaware Leaf (RUL), RPL-Aware Node (RAN) and This document uses the terms "RUL", "RAN", and "RAL" consistently with <xref
RPL aware Leaf (RAL) consistently with <xref target='I-D.ietf-roll-useofrplin target='RFC9008'/>.
fo'/>.
A RAN is either a RAL or a RPL router. As opposed to a RUL, a RAN manages A RAN is either a RAL or a RPL router. As opposed to a RUL, a RAN manages
the reachability of its addresses and prefixes by injecting them in RPL by the reachability of its addresses and prefixes by injecting them in RPL by
itself. itself.
</t><t> </t>
In this document, readers will encounter terms and concepts <t>
that are discussed in the following documents: In this document, readers will encounter terms and concepts
</t> that are discussed in the following documents:
</t>
<dl> <dl>
<dt>Classical IPv6 ND:</dt><dd> <xref target='RFC4861'>"Neighbor Discover <dt>Classical IPv6 ND:</dt><dd>"<xref target="RFC4861" format="title"/>"
y for IP version 6" <xref target="RFC4861" format="default"/> and
</xref> and "<xref target="RFC4862" format="title"/>" <xref target="RFC4862" format=
<xref target='RFC4862'>"IPv6 Stateless Address Autoconfiguration" "default"/>,</dd>
</xref>, </dd>
<dt>6LoWPAN:</dt><dd> <xref target='RFC6606'>"Problem Statement and Requi <dt>6LoWPAN:</dt><dd>"<xref target="RFC6606" format="title"/>" <xref tar
rements for get="RFC6606" format="default"/> and "<xref target="RFC4919" format="title"/>" <
IPv6 over Low-Power Wireless Personal Area Network (6LoWPAN) xref target="RFC4919" format="default"/>, and</dd>
Routing" </xref> and <xref target='RFC4919'>"IPv6 over Low-Power <dt>6LoWPAN ND:</dt><dd>"<xref target="RFC6775" format="title"/>" <xref
Wireless Personal Area Networks (6LoWPANs): Overview, Assumptions, target="RFC6775" format="default"/>,
Problem Statement, and Goals"</xref>, and</dd> "<xref target="RFC8505" format="title"/>" <xref target="RFC8505" format=
<dt>6LoWPAN ND:</dt><dd> <xref target='RFC6775'>Neighbor Discovery Optimi "default"/>,
zation for Low-Power "<xref target="RFC8928" format="title"/>" <xref target="RFC8928" format=
and Lossy Networks</xref>, "default"/>, and "<xref target="RFC8929" format="title"/>" <xref target="RFC8929
<xref target='RFC8505'> " format="default"/>.</dd>
"Registration Extensions for 6LoWPAN Neighbor Discovery"</xref>, </dl>
<xref target='RFC8928'> </section>
"Address Protected Neighbor Discovery for Low-power and Lossy Networks"
</xref>, and <xref target='RFC8929'>"IPv6 Backbone Router"</xref>.
</dd>
</dl>
</section> <!-- end section "References" -->
</section> <!-- end section "Terminology" --> </section>
<section anchor='prereqv6'><name>RPL External Routes and Dataplane Artifacts</na me> <section anchor='prereqv6'><name>RPL External Routes and Data-Plane Artifacts</n ame>
<t> <t>
RPL was initially designed to build stub networks whereby the only border RPL was initially designed to build stub networks whereby the only border
router would be the RPL Root (typically collocated with the 6LBR) and all router would be the RPL DODAG root (typically co-located with the 6LBR) and a
the nodes in the stub would be RPL-Aware. But <xref target='RFC6550'/> was al ll
so prepared to be extended for external routes (targets in RPL parlance) the nodes in the stub would be RPL aware. But <xref target='RFC6550'/> was al
with the External 'E' flag in the Transit Information Option (TIO). so prepared to be extended for external routes ("targets" in RPL parlance), via
External targets enable to reach destinations that are outside the RPL domain the External ('E') flag in the Transit Information Option (TIO).
and connected to the RPL domain via RPL border routers that are not the Root. External targets provide the ability to reach destinations that are outside t
Section 4.1 of <xref target='I-D.ietf-roll-useofrplinfo'/> provides a set of he RPL domain
rules summarized below that must be followed for routing packets to and from and connected to the RPL domain via RPL border routers that are not the root.
<xref target="RFC9008" sectionFormat="of" section="4.1"/> provides a set of
rules (summarized below) that must be followed for routing packets to and fro
m
an external destination. A RUL is a special case of an external target that an external destination. A RUL is a special case of an external target that
is also a host directly connected to the RPL domain. is also a host directly connected to the RPL domain.
</t><t> </t><t>
A 6LR that acts as a border router for external routes advertises them using A 6LR that acts as a border router for external routes advertises them using
Non-Storing Mode DAO messages that are unicast directly to the Root, even if Non-Storing mode DAO messages that are unicast directly to the root, even if
the DODAG is operated in Storing Mode. the DODAG is operated in Storing mode.
Non-Storing Mode routes are not visible inside the RPL domain and all packets Non-Storing mode routes are not visible inside the RPL domain, and all packet
are routed via the Root. The RPL Root tunnels the data packets directly to th s
e are routed via the root. The RPL DODAG root tunnels the data packets directly
to the
6LR that advertised the external route, which decapsulates and forwards the 6LR that advertised the external route, which decapsulates and forwards the
original (inner) packets. original (inner) packets.
</t><t> </t><t>
The RPL Non-Storing MOP signaling and the associated IPv6-in-IPv6 encapsulate d The RPL Non-Storing MOP signaling and the associated IPv6-in-IPv6 encapsulate d
packets appear as normal traffic to the intermediate routers. The support packets appear as normal traffic to the intermediate routers. Support
of external routes only impacts the Root and the 6LR. It can be operated with of external routes only impacts the root and the 6LR. It can be operated with
legacy intermediate routers and does not add to the amount of state that must legacy intermediate routers and does not add to the amount of state that must
be maintained in those routers. be maintained in those routers.
A RUL is an example of a destination that is reachable via an external route A RUL is an example of a destination that is reachable via an external route
that happens to be also a host route. that happens to also be a host route.
</t><t> </t><t>
The RPL data packets typically carry a Hop-by-Hop Header with a RPL Option The RPL data packets typically carry a Hop-by-Hop Header with a RPL Option
<xref target='RFC6553'/> that contains the Packet Information (RPI) defined <xref target='RFC6553'/> that contains the RPI (the RPL Packet Information, a
in section 11.2 of <xref target='RFC6550'/>. s defined
Unless the RUL already placed a RPL Option in outer header chain, the packets in <xref target="RFC6550" sectionFormat="of" section="11.2"/>).
Unless the RUL already placed a RPL Option in the outer header chain, the pac
kets
from and to the RUL are encapsulated using an IPv6-in-IPv6 tunnel between the from and to the RUL are encapsulated using an IPv6-in-IPv6 tunnel between the
Root and the 6LR that serves the RUL root and the 6LR that serves the RUL
(see sections 7 and 8 of <xref target='I-D.ietf-roll-useofrplinfo'/> for deta (see Sections&nbsp;<xref target="RFC9008" section="7"
ils). sectionFormat="bare"/> and <xref target="RFC9008" section="8"
If the packet from the RUL has an RPI, the 6LR as a RPL border router sectionFormat="bare"/> of <xref target="RFC9008"/> for details).
rewrites the RPI to indicate the selected Instance and set the flags, If the packet from the RUL has an RPI, the 6LR acting as a RPL border router
but it does not need to encapsulate the packet (see <xref target='lr'/>) . rewrites the RPI to indicate the selected RPL Instance and set the flags,
but it does not need to encapsulate the packet (see <xref target='lr'/>).
</t><t> </t><t>
In Non-Storing Mode, packets going down carry a Source Routing Header (SRH). In Non-Storing mode, packets going down the DODAG carry a Source Routing Head
The IPv6-in-IPv6 encapsulation, the RPI and the SRH are collectively called t er (SRH). The IPv6-in-IPv6 encapsulation, the RPI, and the SRH are collectively
he called the
"RPL artifacts" and can be compressed using <xref target='RFC8138'/>. "RPL artifacts" and can be compressed using the method defined in <xref targe
t='RFC8138'/>.
<xref target='u8138'/> presents an example compressed format for a packet <xref target='u8138'/> presents an example compressed format for a packet
forwarded by the Root to a RUL in a Storing Mode DODAG. forwarded by the root to a RUL in a Storing mode DODAG.
</t><t> </t><t>
The inner packet that is forwarded to the RUL may carry some RPL artifacts, The inner packet that is forwarded to the RUL may carry some RPL artifacts,
e.g., an RPI if the original packet was generated with it, and an SRH in a e.g., an RPI if the original packet was generated with it, and an SRH in a
Non-Storing Mode DODAG. Non-Storing mode DODAG.
<xref target='I-D.ietf-roll-useofrplinfo'/> expects the RUL to support the <xref target='RFC9008'/> expects the RUL to support the
basic <xref target='RFC8504'>"IPv6 Node Requirements"</xref> and in particula basic IPv6 node requirements per <xref target='RFC8504'></xref> and, in parti
r cular,
the mandates in Sections 4.2 and 4.4 of <xref target='RFC8200'/>. As such, the mandates in Sections&nbsp;<xref target="RFC8200" section="4.2"
the RUL is expected to ignore the RPL artifacts that may be left over, either sectionFormat="bare"/> and <xref target="RFC8200" section="4.4"
an SRH with zero Segments Left or a RPL Option in the Hop-by-Hop Header, sectionFormat="bare"/> of <xref target="RFC8200"/>. As such,
which can be skipped when not recognized, see <xref target='prereq'/> for the RUL is expected to ignore the RPL artifacts that may be left over -- eith
more. er
<!-- an SRH whose Segments Left is zero or a RPL Option in the Hop-by-Hop Header
The inner packet that is forwarded to the RUL may carry some RPL (which can be skipped when not recognized; see <xref target='prereqv6hh'/> fo
artifacts, e.g., an RPI if the original packet was generated with it, r
and an SRH in a Non-Storing Mode DODAG. [USEofRPLinfo] expects the details).
RUL to support the basic "IPv6 Node Requirements" [RFC8504]. In
particular the RUL is expected to ignore the RPL artifacts that are
either consumed or not applicable to a host (e.g., a Hop-by-Hop Option).
Such a host may not necessarily ignore IPv6-in-IPv6 encapsulation, which is
dealt with below.
-->
</t><t> </t><t>
A RUL is not expected to support the compression method defined in A RUL is not expected to support the compression method defined in
<xref target='RFC8138'/>. For that reason, the border router (the 6LR here) <xref target='RFC8138'/>. For that reason, the border router (the 6LR here)
uncompresses the packet before forwarding it over an external route to a RUL uncompresses the packet before forwarding it over an external route to a RUL
<xref target='I-D.ietf-roll-useofrplinfo'/>. <xref target='RFC9008'/>.
</t> </t>
</section> <!-- end section "RPL External Routes and Dataplane Artifacts" --> </section>
<section anchor='lpnd'><name>6LoWPAN Neighbor Discovery</name> <section anchor='lpnd'><name>6LoWPAN Neighbor Discovery</name>
<t> <t>
This section goes through the 6LoWPAN ND mechanisms that this specification leve rages, as a non-normative reference to the reader. This section goes through the 6LoWPAN ND mechanisms that this specification leve rages, as a non-normative reference to the reader.
The full normative text is to be found in <xref target='RFC6775'/>, <xref target ='RFC8505'/>, and <xref target='RFC8928'/>. The full normative text is to be found in <xref target='RFC6775'/>, <xref target ='RFC8505'/>, and <xref target='RFC8928'/>.
</t> </t>
<section anchor='R6775'><name>RFC 6775 Address Registration</name> <section anchor='R6775'><name>Address Registration per RFC 6775</name>
<t> <t>
The classical "IPv6 Neighbor Discovery (IPv6 ND) Protocol" The classical IPv6 Neighbor Discovery (IPv6 ND) protocol
<xref target='RFC4861'/> <xref target='RFC4862'/> was defined for serial <xref target='RFC4861'/> <xref target='RFC4862'/> was defined for serial
links and transit media such as Ethernet. It is a reactive protocol that links and transit media such as Ethernet. It is a reactive protocol that
relies heavily on multicast operations for Address Discovery (aka Lookup) and relies heavily on multicast operations for Address Discovery (aka address loo kup) and
Duplicate Address Detection (DAD). Duplicate Address Detection (DAD).
</t><t> </t><t>
<xref target='RFC6775'> "<xref target="RFC6775" format="title"/>" <xref target="RFC6775" format="defa
"Neighbor Discovery Optimizations for 6LoWPAN networks"</xref> ult"/>
adapts IPv6 ND for operations over energy-constrained LLNs. adapts IPv6 ND for operations over energy-constrained LLNs.
The main functions of <xref target='RFC6775'/> are to proactively establish The main functions of <xref target='RFC6775'/> are to proactively establish
the Neighbor Cache Entry (NCE) in the 6LR and to prevent address duplication. the Neighbor Cache Entry (NCE) in the 6LR and to prevent address duplication.
To that effect, <xref target='RFC6775'/> introduces a new unicast Address To that effect, <xref target='RFC6775'/> introduces a unicast Address
Registration mechanism that contributes to reducing the use of multicast Registration mechanism that contributes to reducing the use of multicast
messages compared to the classical IPv6 ND protocol. messages compared to the classical IPv6 ND protocol.
</t><t><xref target='RFC6775'/> also introduces the Address
</t><t><xref target='RFC6775'/> defines a new Address Registration Option (ARO), which is carried in the unicast
Registration Option (ARO) that is carried in the unicast
Neighbor Solicitation (NS) and Neighbor Advertisement (NA) messages between Neighbor Solicitation (NS) and Neighbor Advertisement (NA) messages between
the 6LoWPAN Node (6LN) and the 6LoWPAN router (6LR). the 6LoWPAN Node (6LN) and the 6LoWPAN router (6LR).
It also defines the Duplicate Address Request (DAR) and Duplicate It also defines the Duplicate Address Request (DAR) and Duplicate
Address Confirmation (DAC) messages between the 6LR and the 6LBR). Address Confirmation (DAC) messages between the 6LR and the 6LBR).
In an LLN, the 6LBR is the central repository of all the Registered Addresses In an LLN, the 6LBR is the central repository of all the Registered Addresses
in its domain and the source of truth for uniqueness and ownership. in its domain and the source of truth for uniqueness and ownership.
<!--There
is no concept of registering the address for an external service.
</t> </t>
</section> <!-- end section "RFC 6775" --> </section>
<section anchor='R8505E'><name>RFC 8505 Extended Address Registration</name> <section anchor='R8505E'><name>Extended Address Registration per RFC 8505</name>
<t> <t>
<xref target='RFC8505'> "<xref target="RFC8505" format="title"/>" <xref target="RFC8505" format="defa
"Registration Extensions for 6LoWPAN Neighbor Discovery"</xref> ult"/>
updates RFC 6775 into a generic Address Registration mechanism that can be updates RFC&nbsp;6775 with a generic Address Registration mechanism that can
used to access services such as routing and ND proxy. To that effect, be
used to access services such as routing and ND proxy functions. To that effec
t,
<xref target='RFC8505'/> defines the Extended Address Registration Option <xref target='RFC8505'/> defines the Extended Address Registration Option
(EARO), shown in <xref target='EARO'/>: (EARO), as shown in <xref target='EARO'/>:
</t> </t>
<figure anchor='EARO'><name>EARO Option Format</name> <figure anchor='EARO'><name>EARO Format</name>
<artwork align="center"> <![CDATA[ <artwork align="center"> <![CDATA[ 0 1 2
0 1 2 3 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 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 | | Type | Length | Status | Opaque |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Rsvd | I |R|T| TID | Registration Lifetime | | Rsvd | I |R|T| TID | Registration Lifetime |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | | |
... Registration Ownership Verifier ... ... Registration Ownership Verifier (ROVR) ...
| | | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+]]></artwork>
]]></artwork>
</figure> </figure>
<section anchor='R8505ER'><name>R Flag</name> <section anchor='R8505ER'><name>R Flag</name>
<t> <t>
<xref target='RFC8505'/> introduces the R Flag in the EARO. <xref target='RFC8505'/> introduces the R flag in the EARO.
The Registering Node sets the R Flag to indicate whether the 6LR should The Registering Node sets the R flag to indicate whether the 6LR should
ensure reachability for the Registered Address. ensure reachability for the Registered Address.
If the R Flag is set to 0, then the Registering Node handles the reachability If the R flag is set to 0, then the Registering Node handles the reachability
of the Registered Address by other means. In a RPL network, this means that of the Registered Address by other means. In a RPL network, this means that
either it is a RAN that injects the route by itself or that it uses another either it is a RAN that injects the route by itself or it uses another
RPL router for reachability services. RPL router for reachability services.
</t><t> </t><t>
This document specifies how the R Flag is used in the context of RPL. This document specifies how the R flag is used in the context of RPL.
A RPL leaf that implements the 6LN functionality from <xref target='RFC8505'/ > A RPL leaf that implements the 6LN functionality from <xref target='RFC8505'/ >
requires reachability services for an IPv6 address if and only if it sets requires reachability services for an IPv6 address if and only if it sets
the R Flag in the NS(EARO) used to register the address to a 6LR acting as the R flag in the NS(EARO) used to register the address to a 6LR acting as
a RPL border router. Upon receiving the NS(EARO), the RPL router a RPL border router. Upon receiving the NS(EARO), the RPL router
generates a DAO message for the Registered Address if and only if the R generates a DAO message for the Registered Address if and only if the R
flag is set to 1. flag is set to 1.
</t><t> </t><t>
<xref target='oper'/> specifies additional operations when R flag is set to 1 in an EARO that is placed either in an NS or an NA message. <xref target='oper'/> specifies additional operations when the R flag is set to 1 in an EARO that is placed in either an NS message or an NA message.
</t> </t>
</section> <!-- end section "R Flag" --> </section>
<section anchor='R8505ETID'><name>TID, "I" Field and Opaque Fields</name> <section anchor='R8505ETID'><name>TID, "I" Field, and Opaque Field</name>
<t> <t>
When the T Flag is set to 1, the EARO includes a sequence counter called When the T flag is set to 1, the EARO includes a sequence counter called the
Transaction ID (TID), that is needed to fill the Path Sequence Field in the "Transaction ID" (TID), which is needed to fill the Path Sequence field in th
RPL Transit Option. e
This is the reason why the support of <xref target='RFC8505'/> RPL Transit Information Option (TIO). For this reason, support of <xref targe
t='RFC8505'/>
by the RUL, as opposed to only <xref target='RFC6775'/>, is a prerequisite fo r by the RUL, as opposed to only <xref target='RFC6775'/>, is a prerequisite fo r
this specification); this requirement is fully explained in this specification; this requirement is fully explained in
<xref target='prereq6lp'/>. The EARO also <xref target='prereq6lp'/>. The EARO also
transports an Opaque field and an associated "I" field that describes what transports an Opaque field and an associated "I" field that describes what
the Opaque field transports and how to use it. the Opaque field transports and how to use it.
</t><t> </t><t>
<xref target='ln'/> specifies the use of the "I" field and the Opaque <xref target='ln'/> specifies the use of the "I" field and the Opaque
field by a RUL. field by a RUL.
</t> </t>
</section> <!-- end section "TID, I Field and Opaque Fields" --> </section>
<section anchor='R8505EROVR'><name>Route Ownership Verifier</name> <section anchor='R8505EROVR'><name>Route Ownership Verifier</name>
<t> <t>
Section 5.3 of <xref target='RFC8505'/> introduces the Registration <xref target="RFC8505" sectionFormat="of" section="5.3"/> introduces the Regi
Ownership Verifier (ROVR) field of variable length from 64 to 256 bits. stration
The ROVR is a replacement of the EUI-64 in the ARO Ownership Verifier (ROVR) field, which has a variable length of 64 to 256 bit
<xref target='RFC6775'/> that was used to identify uniquely an Address s.
Registration with the Link-Layer address of the owner but provided no The ROVR replaces the 64-bit Extended Unique Identifier (EUI&nbhy;64) in the
ARO
<xref target='RFC6775'/>, which was used to uniquely identify an Address
Registration with the link-layer address of the owner but provided no
protection against spoofing. protection against spoofing.
</t><t> </t><t>
<xref target='RFC8928'>"Address Protected Neighbor Discovery for "<xref target="RFC8928" format="title"/>" <xref target="RFC8928" format="defa
Low-power and Lossy Networks"</xref> leverages the ROVR field as a ult"/>
leverages the ROVR field as a
cryptographic proof of ownership to prevent a rogue third party from cryptographic proof of ownership to prevent a rogue third party from
registering an address that is already owned. registering an address that is already owned.
The use of ROVR field enables the 6LR to block traffic that is not The use of the ROVR field enables the 6LR to block traffic that is not
sourced at an owned address. sourced at an owned address.
</t><t> </t><t>
This specification does not address how the protection by This specification does not address how the protection offered by
<xref target='RFC8928'/> could be extended for use in RPL. <xref target='RFC8928'/> could be extended for use in RPL.
On the other hand, it adds the ROVR to the DAO to build the proxied EDAR at t he Root (see <xref target='tgt'/>), which means that nodes that are aware of the host route are also aware of the ROVR associated to the Target Address. On the other hand, it adds the ROVR to the DAO to build the proxied EDAR at t he root (see <xref target='tgt'/>), which means that nodes that are aware of the host route are also aware of the ROVR associated to the Target Address.
</t> </t>
</section> <!-- end section "ROVR" --> </section>
</section> <!-- end section "RFC 8505 Extended ARO" --> </section>
<section anchor='R8505D'><name>RFC 8505 Extended DAR/DAC</name> <section anchor='R8505D'><name>EDAR/EDAC per RFC 8505</name>
<t> <t>
<xref target='RFC8505'/> updates the DAR/DAC messages into the Extended <xref target='RFC8505'/> updates the DAR/DAC messages to EDAR/EDAC messages t
DAR/DAC to carry the ROVR field. o carry the ROVR field.
The EDAR/EDAC exchange takes place The EDAR/EDAC exchange takes place
between the 6LR and the 6LBR. It is triggered by an NS(EARO) message from a 6 LN to create, refresh, and delete the corresponding state in the 6LBR. between the 6LR and the 6LBR. It is triggered by an NS(EARO) message from a 6 LN to create, refresh, and delete the corresponding state in the 6LBR.
The exchange is protected by the retry mechanism specified in Section The exchange is protected by the retry mechanism specified in <xref target="R
8.2.6 of <xref target='RFC6775'/>, though in an LLN, a duration longer than FC6775" sectionFormat="of" section="8.2.6"/>, though in an LLN, a duration longe
r than
the default value of the RetransTimer (RETRANS_TIMER) the default value of the RetransTimer (RETRANS_TIMER)
<xref target='RFC4861'/> of 1 second may be necessary to <xref target='RFC4861'/> of 1 second may be necessary to
cover the round trip delay between the 6LR and the 6LBR. cover the round-trip delay between the 6LR and the 6LBR.
</t><t> </t><t>
RPL <xref target='RFC6550'/> specifies a periodic DAO from the 6LN all the wa y to RPL <xref target='RFC6550'/> specifies a periodic DAO from the 6LN all the wa y to
the Root that maintains the routing state in the RPL network for the lifetime the root that maintains the routing state in the RPL network for the lifetime
indicated by the source of the DAO. indicated by the source of the DAO.
This means that for each address, there are two keep-alive messages This means that for each address, there are two keep-alive messages
that traverse the whole network, one to the Root and one to the 6LBR. that traverse the whole network: one to the root and one to the 6LBR.
</t><t> </t><t>
This specification avoids the periodic EDAR/EDAC exchange across the LLN. This specification avoids the periodic EDAR/EDAC exchange across the LLN.
The 6LR turns The 6LR turns
the periodic NS(EARO) from the RUL into a DAO message to the the periodic NS(EARO) from the RUL into a DAO message to the
Root on every refresh, but it only generates the EDAR upon the first root on every refresh, but it only generates the EDAR upon the first
registration, for the purpose of DAD, which must be verified before the registration, for the purpose of DAD, which must be verified before the
address is injected in RPL. address is injected in RPL.
Upon the DAO message, the Root proxies the EDAR exchange to refresh the state at the 6LBR on behalf of the 6LR, as illustrated in <xref target='fReg2'/> in < xref target='flow'/>. Upon the DAO message, the root proxies the EDAR exchange to refresh the state at the 6LBR on behalf of the 6LR, as illustrated in <xref target='fReg2'/> in < xref target='flow'/>.
</t> </t>
<section anchor='R7400'><name>RFC 7400 Capability Indication Option</name> <section anchor='R7400'><name>Capability Indication Option per RFC 7400</name>
<t> <t>
<xref target='RFC7400'> "6LoWPAN-GHC: Generic Header Compression for IPv6 "<xref target="RFC7400" format="title"/>" <xref target="RFC7400" format="defa
over Low-Power Wireless Personal Area Networks (6LoWPANs)"</xref> defines the ult"/>
6LoWPAN Capability Indication Option (6CIO) that enables a node to expose its defines the 6LoWPAN Capability Indication Option (6CIO), which enables a node
capabilities in router Advertisement (RA) messages. to expose its
capabilities in Router Advertisement (RA) messages.
</t><t> </t><t>
<xref target='RFC8505'/> defines a number of bits in the 6CIO, in particular: <xref target='RFC8505'/> defines a number of bits in the 6CIO; in particular:
</t> </t>
<dl spacing='compact'> <dl spacing='compact' indent="4">
<dt>L:</dt><dd> Node is a 6LR. </dd> <dt>L:</dt><dd>The node is a 6LR.</dd>
<dt>E:</dt><dd> Node is an IPv6 ND Registrar -- i.e., it supports <dt>E:</dt><dd>The node is an IPv6 ND Registrar -- i.e., it supports
registrations based on EARO. </dd> registrations based on EARO.</dd>
<dt>P:</dt><dd> Node is a Routing Registrar, -- i.e., an IPv6 ND Registra <dt>P:</dt><dd>The node is a Routing Registrar -- i.e., an IPv6 ND Regis
r trar
that also provides reachability services for the Registered Address. that also provides reachability services for the Registered Address.</d
</dd> d>
</dl> </dl>
<figure anchor='CIO'><name>6CIO flags</name> <figure anchor='CIO'><name>6CIO Flags</name>
<artwork align="center"> <artwork align="center"><![CDATA[
0 1 2 3 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 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 |D|L|B|P|E|G| | Type | Length = 1 | Reserved |D|L|B|P|E|G|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Reserved | | Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+]]></artwork
</artwork> >
</figure> </figure>
<t> <t>
A 6LR that provides reachability services for a RUL in a RPL network A 6LR that provides reachability services for a RUL in a RPL network
as specified in this document includes a 6CIO in its RA messages and as specified in this document includes a 6CIO in its RA messages and
set the L, P and E flags to 1 as prescribed by <xref target='RFC8505'/>; set the L, P, and E flags to 1 as prescribed by <xref target='RFC8505'/>;
this is fully explained in <xref target='oper'/>. this is fully explained in <xref target='oper'/>.
</t> </t>
</section> <!-- end section "RFC 7400 Capability Indication Option" --> </section>
</section> <!-- end section "RFC 8505 Extended DAR/DAC" --> </section>
</section> <!-- end section "6LoWPAN Neighbor Discovery" --> </section>
<section anchor='prereq'><name>Requirements on the RPL-Unware leaf</name> <section anchor='prereq'><name>Requirements for the RPL-Unaware Leaf</name>
<t> <t>
This document describes how RPL routing can be extended to reach a RUL. This document describes how RPL routing can be extended to reach a RUL.
This section specifies the minimal RPL-independent functionality that the RUL This section specifies the minimal RPL-independent functionality that the RUL
needs to implement to obtain routing services for its addresses. needs to implement in order to obtain routing services for its addresses.
</t> </t>
<section anchor='prereq6lp'><name>Support of 6LoWPAN ND</name> <section anchor='prereq6lp'><name>Support of 6LoWPAN ND</name>
<t> <t>
To obtain routing services from a router that implements this specification, To obtain routing services from a router that implements this specification,
a RUL needs to implement <xref target='RFC8505'/> and sets the "R" and "T" a RUL needs to implement <xref target='RFC8505'/> and sets the "R" and "T"
flags in the EARO to 1 as discussed in <xref target='R8505ER'/> and flags in the EARO to 1 as discussed in Sections&nbsp;<xref target='R8505ER' f
<xref target='R8505ETID'/>, respectively. <xref target='ln'/> specifies new b ormat="counter"/> and
ehaviors for the RUL, e.g., when the R Flag set to 1 in a NS(EARO) is not echoed <xref target='R8505ETID' format="counter"/>, respectively. <xref target='ln'/
in the NA(EARO), which indicates that the route injection failed. > specifies new behaviors for the RUL, e.g., when the R flag set to 1 in an NS(E
ARO) is not echoed in the NA(EARO), which indicates that the route injection fai
led.
</t><t> </t><t>
The RUL is expected to request routing services from a router only if that ro uter originates RA messages with a 6CIO that has the L, P, and E flags all set t o 1 The RUL is expected to request routing services from a router only if that ro uter originates RA messages with a 6CIO that has the L, P, and E flags all set t o 1
as discussed in <xref target='R7400'/>, unless configured to do so. as discussed in <xref target='R7400'/>, unless configured to do so.
It is suggested that the RUL also implements It is suggested that the RUL also implement
<xref target='RFC8928'/> to protect the ownership of its addresses. <xref target='RFC8928'/> to protect the ownership of its addresses.
</t><t> </t><t>
A RUL that may attach to multiple 6LRs is expected to prefer those that provi de routing services. A RUL that may attach to multiple 6LRs is expected to prefer those that provi de routing services.
The RUL needs to register to all the 6LRs from which it desires routing servi ces. The RUL needs to register with all the 6LRs from which it desires routing ser vices.
</t> </t>
<t> <t>
Parallel Address Registrations to several 6LRs should be performed in a rapid Parallel Address Registrations to several 6LRs should be performed in a rapid
sequence, using the same EARO for the same Address. Gaps between sequence, using the same EARO for the same address. Gaps between
the Address Registrations will invalidate some of the routes till the Address the Address Registrations will invalidate some of the routes until the Addres
s
Registration finally shows on those routes. Registration finally shows on those routes.
</t> </t>
<t><xref target='RFC8505'/> introduces error Status values in the NA(EARO) <t><xref target='RFC8505'/> introduces error Status values in the NA(EARO)
which can be received synchronously upon an NS(EARO) or asynchronously. The that can be received synchronously upon an NS(EARO) or asynchronously. The
RUL needs to support both cases and refrain from using the address RUL needs to support both cases and refrain from using the address
when the Status value indicates a rejection (see <xref target='stat'/>). when the Status value indicates a rejection (see <xref target='stat'/>).
</t> </t>
</section> <!-- end section "Support of 6LoWPAN ND" --> </section>
<section anchor='prereqv6ip'><name>Support of IPv6 Encapsulation</name> <section anchor='prereqv6ip'><name>Support of IPv6 Encapsulation</name>
<t> <t>
Section 2.1 of <xref target='I-D.ietf-roll-useofrplinfo'/> defines the rules <xref target="RFC9008" sectionFormat="of" section="4.1.1"/> defines the rules
for tunneling either to the final destination (e.g., a RUL) or to its for signaling an external destination (e.g., a RUL) and tunneling to its
attachment router (designated as 6LR). In order to terminate the IPv6-in-IPv6 attachment router (designated as a 6LR). In order to terminate the IPv6-in-IP
v6
tunnel, the RUL, as an IPv6 host, would have to be capable of decapsulating tunnel, the RUL, as an IPv6 host, would have to be capable of decapsulating
the tunneled packet and either drop the encapsulated packet if it is not the the tunneled packet and either drop the encapsulated packet if it is not the
final destination, or pass it to the upper layer for further processing. final destination or pass it to the upper layer for further processing.
As indicated in section 4.1 of <xref target='I-D.ietf-roll-useofrplinfo'/>, As indicated in <xref target="RFC9008" sectionFormat="of" section="4.1"/>,
this is not mandated by <xref target='RFC8504'/>, and the IPv6-in-IPv6 tunnel this is not mandated by <xref target='RFC8504'/>, and the IPv6-in-IPv6 tunnel
from the Root is terminated at the parent 6LR. It is thus not necessary from the root is terminated at the parent 6LR. It is thus not necessary
for a RUL to support IPv6-in-IPv6 decapsulation. for a RUL to support IPv6-in-IPv6 decapsulation.
</t> </t>
</section> <!-- end section "Support of IPv6 Encapsulation" --> </section>
<section anchor='prereqv6hh'><name>Support of the Hop-by-Hop Header</name> <section anchor='prereqv6hh'><name>Support of the Hop-by-Hop Header</name>
<t> <t>
A RUL is expected to process an Option Type in a Hop-by-Hop Header as A RUL is expected to process an Option Type in a Hop-by-Hop Header as
prescribed by section 4.2 of <xref target='RFC8200'/>. prescribed by <xref target="RFC8200" sectionFormat="of" section="4.2"/>.
An RPI with an Option Type of 0x23 <xref target='I-D.ietf-roll-useofrplinfo'/ An RPI with an Option Type of 0x23 <xref target='RFC9008'/> is thus skipped w
> is thus skipped when not recognized. hen not recognized.
</t> </t>
</section> <!-- end section "Support of the HbH Header" --> </section>
<section anchor='prereqv6rh'><name>Support of the Routing Header</name> <section anchor='prereqv6rh'><name>Support of the Routing Header</name>
<t> <t>
A RUL is expected to process an unknown Routing Header Type as A RUL is expected to process an unknown Routing Header Type as
prescribed by section 4.4 of <xref target='RFC8200'/>. prescribed by <xref target="RFC8200" sectionFormat="of" section="4.4"/>.
This implies that the Source Routing Header, which has a Routing Type of 3 This implies that the SRH, which has a Routing Type of 3
<xref target='RFC6554'/>, is ignored when the Segments Left is zero. <xref target='RFC6554'/>, is ignored when Segments Left is zero.
When the Segments Left is non-zero, the RUL discards the packet and When Segments Left is non-zero, the RUL discards the packet and
send an ICMP Parameter Problem, Code 0, message to the packet's sends an ICMP Parameter Problem message with Code 0 to the packet's
Source Address, pointing to the unrecognized Routing Type. source address, pointing to the unrecognized Routing Type.
</t> </t>
</section><!-- end section "Support of the Routing Header" --> </section>
</section> <!-- "Requirements to be a RPL-Unware leaf" --> </section>
<section anchor='upd'><name>Enhancements to RFC 6550</name> <section anchor='upd'><name>Enhancements to RFC 6550</name>
<t> <t>
This document specifies a new behavior whereby a 6LR injects DAO messages This document specifies a new behavior whereby a 6LR injects DAO messages
for unicast addresses (see <xref target='op'/>) and multicast addresses for unicast addresses (see <xref target='op'/>) and multicast addresses
(see <xref target='multiop'/>) on behalf of leaves that are not aware of RPL. (see <xref target='multiop'/>) on behalf of leaves that are not aware of RPL.
The RUL addresses are exposed as external targets <xref target='RFC6550'/>. The RUL addresses are exposed as external targets <xref target='RFC6550'/>.
Conforming to Conforming to
<xref target='I-D.ietf-roll-useofrplinfo'/>, an IPv6-in-IPv6 encapsulation be tween the 6LR and the RPL Root is used to carry the RPL artifacts and remove the m when forwarding outside the RPL domain, e.g., to a RUL. <xref target='RFC9008'/>, IPv6-in-IPv6 encapsulation between the 6LR and the RPL DODAG root is used to carry the RPL artifacts and remove them when forwardin g outside the RPL domain, e.g., to a RUL.
</t><t> </t><t>
This document also synchronizes the liveness monitoring at the Root and the This document also synchronizes the liveness monitoring at the root and the
6LBR. The same value of lifetime is used for both, and a single keep-alive 6LBR. The same lifetime value is used for both, and a single keep-alive
message, the RPL DAO, traverses the RPL network. A new behavior is introduced message, the RPL DAO, traverses the RPL network. Another new behavior is intr
whereby the RPL Root proxies the EDAR message to the 6LBR on behalf of the oduced
whereby the RPL DODAG root proxies the EDAR message to the 6LBR on behalf of
the
6LR (see <xref target='upd2'/>), for any leaf node that implements the 6LR (see <xref target='upd2'/>), for any leaf node that implements the
6LN functionality in <xref target='RFC8505'/>. 6LN functionality described in <xref target='RFC8505'/>.
</t><t> </t><t>
Section 6.7.7 of <xref target='RFC6550'/> introduces the RPL Target Option, <xref target="RFC6550" sectionFormat="of" section="6.7.7"/> introduces the RP
which can be used in RPL Control messages such as the DAO message to signal a L Target option,
destination prefix. This document adds the capabilities to which can be used in RPL control messages such as the DAO message to signal a
transport the ROVR field (see <xref target='R8505EROVR'/>) and the destination prefix. This document adds capabilities for
IPv6 Address of the prefix advertiser when the Target is a shorter prefix. transporting the ROVR field (see <xref target='R8505EROVR'/>) and the
Their use is signaled respectively by a new ROVR Size field being non-zero IPv6 address of the prefix advertiser when the Target is a shorter prefix.
and a new "Advertiser address in Full" 'F' flag set to 1, see <xref target='t Their use is signaled by a new ROVR Size field being non-zero
gt'/>. and a new "Advertiser address in Full (F)" flag set to 1, respectively; see <
xref target='tgt'/>.
</t><t> </t><t>
This specification defines a new flag, "Root Proxies EDAR/EDAC" (P), in the This specification defines a new flag, "Root Proxies EDAR/EDAC (P)", in the
RPL DODAG Configuration option, see <xref target='pflag'/>. RPL DODAG Configuration option; see <xref target='pflag'/>.
</t><t> </t><t>
The RPL Status defined in section 6.5.1 of <xref target="RFC6550"/> Furthermore, this
for use in the DAO-ACK message is extended to be placed in DCO messages specification provides the ability to carry the EARO Status defined for 6LoWP
<xref target='I-D.ietf-roll-efficient-npdao'/> as well. Furthermore, this AN ND
specification enables to carry the EARO Status defined for 6LoWPAN ND in RPL DAO and DCO messages, embedded in a RPL Status; see
in RPL DAO and DCO messages, embedded in a RPL Status, see
<xref target='stat'/>. <xref target='stat'/>.
</t><t> </t><t>
Section 12 of <xref target='RFC6550'/> details the RPL support for <xref target="RFC6550" sectionFormat="of" section="12"/> details RPL support
multicast flows when the RPLInstance is operated in the MOP of 3 for
multicast flows when the RPL Instance is operated with a MOP setting of 3
("Storing Mode of Operation with multicast support"). ("Storing Mode of Operation with multicast support").
This specification extends the RPL Root operation to proxy-relay the MLDv2 < xref target='RFC3810'/> operation between the RUL and the 6LR, see <xref target= 'multiop'/>. This specification extends the RPL DODAG root operation to proxy-relay the M LDv2 operation <xref target='RFC3810'/> between the RUL and the 6LR; see <xref t arget= 'multiop'/>.
</t> </t>
<section anchor='tgt'><name>Updated RPL Target Option</name> <section anchor='tgt'><name>Updated RPL Target Option</name>
<t> This specification updates the RPL Target Option to transport the ROVR <t> This specification updates the RPL Target option to transport the ROVR
that was also defined for 6LoWPAN ND messages. that was also defined for 6LoWPAN ND messages.
This enables the RPL Root to generate the proxied EDAR message to the 6LBR. This enables the RPL DODAG root to generate the proxied EDAR message to the 6LBR.
</t> </t>
<t> <t>
The Target Prefix of the RPL Target Option is left (high bit) justified and The Target Prefix of the RPL Target option is left (high bit) justified and
contains the advertised prefix; its size may be smaller than 128 when contains the advertised prefix; its size may be smaller than 128 when
it indicates a Prefix route. The Prefix Length field signals the number it indicates a prefix route. The Prefix Length field signals the number
of bits that correspond to the advertised Prefix; it is 128 for a of bits that correspond to the advertised prefix; it is 128 for a
host route or less in the case of a Prefix route. This remains unchanged. host route or less in the case of a prefix route. This remains unchanged.
</t> </t>
<t> <t>
This specification defines the new 'F' flag. When it is set to 1, the size of This specification defines the new 'F' flag. When it is set to 1, the size of
the Target Prefix field MUST be 128 bits and it MUST contain an IPv6 address the Target Prefix field <bcp14>MUST</bcp14> be 128 bits and it <bcp14>MUST</b
of the advertising node taken from the advertised Prefix. In that case, the cp14> contain an IPv6 address
of the advertising node taken from the advertised prefix. In that case, the
Target Prefix field carries two distinct pieces of information: a route that Target Prefix field carries two distinct pieces of information: a route that
can be a host route or a Prefix route depending on the Prefix Length, and an can be a host route or a prefix route, depending on the Prefix Length; and an
IPv6 address that can be used to reach the advertising node and validate the IPv6 address that can be used to reach the advertising node and validate the
route. route.
</t> </t>
<t> <t>
If the 'F' flag is set to 0, the Target Prefix field can be shorter than If the 'F' flag is set to 0, the Target Prefix field can be shorter than
128 bits and it MUST be aligned to the next byte boundary after the end of 128 bits, and it <bcp14>MUST</bcp14> be aligned to the next byte boundary aft er the end of
the prefix. the prefix.
Any additional bits in the rightmost octet are filled with padding bits. Any additional bits in the rightmost octet are filled with padding bits.
Padding bits are reserved and set to 0 as specified in section 6.7.7 of Padding bits are reserved and set to 0 as specified in <xref target="RFC6550"
<xref target='RFC6550'/>. sectionFormat="of" section="6.7.7"/>.
</t> </t>
<t> <t>
With this specification the ROVR is the remainder of the RPL Target Option. With this specification, the ROVR is the remainder of the RPL Target option.
The size of the ROVR is indicated in a new ROVR Size field that is encoded The size of the ROVR is indicated in a new ROVR Size field that is encoded
to map one-to-one with the Code Suffix in the EDAR message to map one to one with the Code Suffix in the EDAR message
(see table 4 of <xref target='RFC8505'/>). The ROVR Size field is taken (see Table 4 of <xref target='RFC8505'/>). The ROVR Size field is taken
from the flags field, which is an update to the RPL Target Option Flags IANA from the Flags field, which is an update to the "RPL Target Option Flags" IA
registry. NA registry.
</t> </t>
<t> <t>
The updated format is illustrated in <xref target='frpltgt'/>. The updated format is illustrated in <xref target='frpltgt'/>.
It is backward compatible with the Target Option in It is backward compatible with the Target option defined in
<xref target='RFC6550'/>. <xref target='RFC6550'/>.
It is recommended that the updated format be used as a replacement in new It is recommended that the updated format be used as a replacement in new
implementations in all MOPs in preparation for upcoming Route Ownership implementations in all MOPs in preparation for upcoming route ownership
Validation mechanisms based on the ROVR, unless the device or the network is validation mechanisms based on the ROVR, unless the device or the network is
so constrained that this is not feasible. so constrained that this is not feasible.
</t> </t>
<figure anchor='frpltgt' suppress-title='false'><name>Updated Target Option</na me> <figure anchor='frpltgt' suppress-title='false'><name>Updated Target Option</na me>
<artwork> <artwork><![CDATA[
0 1 2 3 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 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|Flg|ROVRsz | Prefix Length | | Type = 0x05 | Option Length |F|X|Flg|ROVRsz | Prefix Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | | |
| Target Prefix (Variable Length) | | Target Prefix (Variable Length) |
. . . .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | | |
... Registration Ownership Verifier (ROVR) ... ... Registration Ownership Verifier (ROVR) ...
| | | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+]]></artwork>
</artwork>
</figure> </figure>
<t> New fields: <t> New fields:
</t><dl spacing='normal'> </t><dl spacing='normal' indent="4">
<dt>F:</dt><dd> 1-bit flag. Set to 1 to indicate that Target Prefix field <dt>F:</dt><dd> 1-bit flag. Set to 1 to indicate that the Target Prefix
contains the complete (128 bit) IPv6 address of the advertising node. </dd> field
contains the complete (128-bit) IPv6 address of the advertising node.</dd>
<dt>X:</dt><dd> <t>1-bit flag. Set to 1 to request that the Root performs a <dt>X:</dt><dd> <t>1-bit flag. Set to 1 to request that the root perform a
proxy EDAR/EDAC exchange. </t> proxy EDAR/EDAC exchange. </t>
<t>The 'X' flag can only be set to 1 if the DODAG is <t>The 'X' flag can only be set to 1 if the DODAG is
operating in Non-Storing Mode and if the Root sets the "Root Proxies EDAR/ED operating in Non-Storing mode and if the root sets the "Root Proxies EDAR/ED
AC AC
(P)" flag to 1 in the DODAG Configuration Option, see <xref target='pflag'/> (P)" flag to 1 in the DODAG Configuration option; see <xref target='pflag'/>
. .
</t><t> </t><t>
The 'X' flag can be set for host routes to RULs and RANs; it can also be set The 'X' flag can be set for host routes to RULs and RANs; it can also be set
for internal prefix routes if the 'F' flag is set, using the node's address for internal prefix routes if the 'F' flag is set, using the node's address
in the Target Prefix field to form the EDAR, but it cannot be used otherwise . in the Target Prefix field to form the EDAR, but it cannot be used otherwise .
</t> </t>
</dd> </dd>
<dt>Flg (Flags):</dt><dd> The 2 bits remaining unused in the Flags field <dt>Flg (Flags):</dt><dd> The 2 bits remaining unused in the Flags fiel
are reserved for flags. The field MUST be initialized to zero by the sender d
and MUST be ignored by the receiver. </dd> are reserved for flags. The field <bcp14>MUST</bcp14> be initialized to 0 b
y the sender
and <bcp14>MUST</bcp14> be ignored by the receiver.</dd>
<dt>ROVRsz (ROVR Size):</dt><dd><t> Indicates the Size of the ROVR. <dt>ROVRsz (ROVR Size):</dt><dd><t> Indicates the size of the ROVR.
It MUST be set to 1, 2, 3, or 4, indicating a ROVR size of 64, 128, 192, It <bcp14>MUST</bcp14> be set to 1, 2, 3, or 4, indicating a ROVR size o
f 64, 128, 192,
or 256 bits, respectively. or 256 bits, respectively.
</t><t> </t><t>
If a legacy Target Option is used, then the value must If a legacy Target option is used, then the value must
remain 0, as specified in <xref target='RFC6550'/>. remain 0, as specified in <xref target='RFC6550'/>.
</t><t> </t><t>
In case of a value above 4, the size of the ROVR is undetermined and In the case of a value above 4, the size of the ROVR is undetermined and
this node cannot validate the ROVR; an implementation SHOULD propagate this node cannot validate the ROVR; an implementation <bcp14>SHOULD</bcp
the whole Target Option upwards as received to enable the verification 14> propagate
the whole Target option upwards as received to enable the verification
by an ancestor that would support the upgraded ROVR. by an ancestor that would support the upgraded ROVR.
</t></dd> </t></dd>
<dt>Registration Ownership Verifier (ROVR):</dt><dd> <dt>Registration Ownership Verifier (ROVR):</dt><dd>
This is the same field as in the EARO, This is the same field as in the EARO;
see <xref target='RFC8505'/> </dd> see <xref target='RFC8505'/>.</dd>
</dl> </dl>
</section> <!-- end section "Updated RPL Target Option" --> </section>
<section anchor='pflag'><name>Additional Flag in the RPL DODAG Configuration Option</name> <section anchor='pflag'><name>Additional Flag in the RPL DODAG Configuration Option</name>
<t> <t>
The DODAG Configuration Option is defined in Section 6.7.6 of <xref target= The DODAG Configuration option is defined in <xref target="RFC6550" sectionFo
'RFC6550'/>. Its purpose is extended to distribute configuration rmat="of" section="6.7.6"/>. Its purpose is extended to distribute configuration
information affecting the construction and maintenance of the DODAG, as information affecting the construction and maintenance of the DODAG, as
well as operational parameters for RPL on the DODAG, through the DODAG. well as operational parameters for RPL on the DODAG, through the DODAG.
This Option was originally designed with 4 bit positions reserved for future use as Flags. This option was originally designed with four bit positions reserved for futu re use as flags.
</t> </t>
<figure anchor="RPLDCO"> <figure anchor="RPLDCO">
<name>DODAG Configuration Option (Partial View) </name> <name>DODAG Configuration Option (Partial View) </name>
<artwork align="center" name="" type="" alt=""><![CDATA[ <artwork align="center" name="" type="" alt=""><![CDATA[
0 1 2 3 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 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 = 0x04 |Opt Length = 14| |P| | |A| ... | | Type = 0x04 |Opt Length = 14| |P| | |A| ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +
|4 bits | |4 bits |]]></artwork>
]]></artwork>
</figure> </figure>
<t> <t>
This specification defines a new flag "Root Proxies EDAR/EDAC" (P). This specification defines a new flag, "Root Proxies EDAR/EDAC (P)".
The 'P' flag is encoded The 'P' flag is encoded
in bit position 1 of the reserved Flags in the DODAG Configuration Option in bit position 1 of the reserved flags in the DODAG Configuration option
(counting from bit 0 as the most significant bit) and it is set to 0 in (counting from bit 0 as the most significant bit), and it is set to 0 in
legacy implementations as specified respectively in Sections 20.14 and 6.7.6 legacy implementations as specified in Sections&nbsp;<xref target="RFC6550" s
of <xref target='RFC6550'/>. ection="20.14"
sectionFormat="bare"/> and <xref target="RFC6550" section="6.7.6"
sectionFormat="bare"/> of <xref target="RFC6550"/>, respectively.
</t> </t>
<t> <t>
The 'P' flag is set to 1 to indicate that the Root performs the proxy The 'P' flag is set to 1 to indicate that the root performs the proxy
operation, which implies that it supports this specification and the updated operation, which implies that it supports this specification and the updated
RPL Target Option (see <xref target='tgt'/>). RPL Target option (see <xref target='tgt'/>).
</t> </t>
<!--t>
Section 6.3.1 of <xref target='RFC6550'/> defines a 3-bit Mode of Operation
(MOP) in the DIO Base Object. This specification applies to MOP values 0 to 6
.
For a MOP value of 7, the bit in position 1 is considered unallocated and
<xref target='RFC8138'/> MUST be used by default.
</t -->
<t> <t>
Section 4.3 of <xref target='I-D.ietf-roll-useofrplinfo'/> updates <xref target="RFC9008" sectionFormat="of" section="4.1.3"/> updates
<xref target='RFC6550'/> to indicate that the definition of the Flags applies <xref target='RFC6550'/> to indicate that the definition of the flags applies
to Mode of Operation (MOP) values from zero (0) to six (6) only. to MOP values from zero (0) to six (6) only. For a MOP value of 7, the implem
For a MOP value of 7, the implementation MUST consider that the Root entation <bcp14>MUST</bcp14> assume that the root
performs the proxy operation. performs the proxy operation.
</t> </t>
<t> <t>
The RPL DODAG Configuration Option is typically placed in The RPL DODAG Configuration option is typically placed in
a DODAG Information Object (DIO) message. The DIO message propagates down the a DODAG Information Object (DIO) message. The DIO message propagates down the
DODAG to form and then maintain its structure. The DODAG Configuration Option DODAG to form and then maintain its structure. The DODAG Configuration option
is copied unmodified from parents to children. is copied unmodified from parents to children.
<xref target='RFC6550'/> states that "Nodes other than the DODAG Root MUST <xref target='RFC6550'/> states that "Nodes other than the DODAG root <bcp14>
NOT modify this information when propagating the DODAG Configuration option". MUST
Therefore, a legacy parent propagates the 'P' Flag as set by the Root, and NOT</bcp14> modify this information when propagating the DODAG Configuration
when the 'P' Flag is set to 1, it is transparently flooded to all the nodes option."
Therefore, a legacy parent propagates the 'P' flag as set by the root, and
when the 'P' flag is set to 1, it is transparently flooded to all the nodes
in the DODAG. in the DODAG.
</t> </t>
</section><!-- New Flag in the RPL DODAG Configuration Option --> </section>
<section anchor='stat'><name>Updated RPL Status</name> <section anchor='stat'><name>Updated RPL Status</name>
<t>The RPL Status is defined in section 6.5.1 of <xref target="RFC6550"/> <t>The RPL Status is defined in <xref target="RFC6550" sectionFormat="of" se
for use in the DAO-ACK message and values are assigned as follows:</t> ction="6.5.1"/> for use in the DAO-ACK message. Values are assigned as follows:<
/t>
<table anchor="irplStatusbl"><name>RPL Status per RFC 6550</name> <table anchor="irplStatusbl"><name>RPL Status per RFC 6550</name>
<thead> <thead>
<tr><td>Range</td><td>Meaning</td></tr> <tr><td>Range</td><td>Meaning</td></tr>
</thead><tbody> </thead><tbody>
<tr><td>0</td><td>Success/Unqualified acceptance</td></tr> <tr><td>0</td><td>Success / Unqualified acceptance</td></tr>
<tr><td>1-127</td><td>Not an outright rejection</td></tr> <tr><td>1-127</td><td>Not an outright rejection</td></tr>
<tr><td>128-255</td><td>Rejection</td></tr> <tr><td>128-255</td><td>Rejection</td></tr>
</tbody> </tbody>
</table> </table>
<t> <t>
The 6LoWPAN ND Status was defined for use in the EARO, see section 4.1 of The 6LoWPAN ND Status was defined for use in the EARO; see <xref target="RFC
<xref target="RFC8505"/>. 8505" sectionFormat="of" section="4.1"/>.
This specification adds a capability to allow the carriage of 6LoWPAN ND This specification adds the ability to allow the carriage of 6LoWPAN ND
Status values in RPL DAO and DCO messages, embedded in the RPL Status field. Status values in RPL DAO and DCO messages, embedded in the RPL Status field.
</t> </t>
<t> <t>
To achieve this, the range of the ARO/EARO Status values is reduced to 0-63, To achieve this, the range of the ARO/EARO Status values is reduced to 0-63,
which updates the IANA registry created for <xref target="RFC6775"/>. which updates the IANA registry created for <xref target="RFC6775"/>.
This reduction ensures that the values fit within a RPL Status as shown in This reduction ensures that the values fit within a RPL Status as shown in
<xref target="rpst"/>. See <xref target="iana-aro"/>, <xref target="rpst"/>. See Sections&nbsp;<xref target="iana-aro" format="cou
<xref target="iana-stats-nonrej"/>, and <xref target="iana-stats-rej"/> nter"/>,
<xref target="iana-stats-nonrej" format="counter"/>, and <xref target="iana-
stats-rej" format="counter"/>
for the respective IANA declarations. for the respective IANA declarations.
This ask is reasonable because the associated registry relies on standards These updates are reasonable because the associated registry relies on
action for registration and only values up to 10 are currently allocated. the Standards Action policy <xref target="RFC8126"/> for registration and on
ly values up to 10 are currently allocated.
</t> </t>
<figure anchor='rpst' suppress-title='false'><name>RPL Status Format</name> <figure anchor='rpst' suppress-title='false'><name>RPL Status Format</name>
<artwork align="center" name="" type="" alt=""> <artwork align="center" name="" type="" alt=""><![CDATA[
0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
|E|A|StatusValue| |U|A|StatusValue|
+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+]]></artwork>
</artwork>
</figure> </figure>
<t> This specification updates the RPL Status with subfields as indicated belo <t> This specification updates the RPL Status with the following subfields:
w: </t><dl spacing='normal' indent="4">
</t><dl spacing='normal'>
<dt>E:</dt><dd> 1-bit flag. set to 1 to indicate a rejection. When set to <dt>U:</dt><dd> 1-bit flag. Set to 1 to indicate a rejection. When set t
0, a Status value of 0 o 0, a Status value of 0
indicates Success/Unqualified acceptance and other values indicate "not an indicates Success / Unqualified acceptance and other values indicate "Not an
outright rejection" as per RFC 6550.</dd> outright rejection" as per RFC&nbsp;6550.</dd>
<dt>A:</dt><dd>1-bit flag. Indicates the type of the RPL Status value.</d <dt>A:</dt><dd>1-bit flag. Indicates the type of the RPL Status value.</
d> dd>
<dt>Status Value:</dt><dd><t>6-bit unsigned integer.</t> <dt>Status Value:</dt><dd><t>6-bit unsigned integer.</t>
<t>If the 'A' flag is set to 1 this field transports a value defined for the <t>If the 'A' flag is set to 1, this field transports a value defined for th
e
6LoWPAN ND EARO Status. 6LoWPAN ND EARO Status.
</t><t> </t><t>
When the 'A' flag is set to 0, this field transports a Status Value defined When the 'A' flag is set to 0, this field transports a Status value defined
for RPL. for RPL.
</t></dd> </t></dd>
</dl> </dl>
<t> <t>
When building a DCO or a DAO-ACK message upon an IPv6 ND NA or a EDAC message When building a DCO or a DAO-ACK message upon an IPv6 ND NA or an EDAC messag
, e,
the RPL Root MUST copy the 6LoWPAN ND status code unchanged in the RPL Status the RPL DODAG root <bcp14>MUST</bcp14> copy the 6LoWPAN ND status code unchan
Value and set the 'A' flag to 1. ged in the RPL Status Value field and set the 'A' flag to 1.
The RPL Root MUST set the 'E' flag to 1 for all rejection and unknown status The RPL DODAG root <bcp14>MUST</bcp14> set the 'U' flag to 1 for all rejectio
codes. The status codes in the 1-10 range <xref target='RFC8505'/> are all cons n and unknown status codes. The status codes in the 1-10 range <xref target='RF
idered rejections. C8505'/> are all considered rejections.
</t> </t>
<t> <t>
Reciprocally, upon a DCO or a DAO-ACK message from the RPL Root with a RPL Reciprocally, upon a DCO or a DAO-ACK message from the RPL DODAG root with a
Status that has the 'A' flag set, the 6LR MUST copy the RPL Status value RPL
Status that has the 'A' flag set, the 6LR <bcp14>MUST</bcp14> copy the RPL St
atus value
unchanged in the Status field of the EARO when generating an NA to the RUL. unchanged in the Status field of the EARO when generating an NA to the RUL.
</t> </t>
</section><!-- Updated RPL Status --> </section>
</section> <!-- Enhancements to RFC 6550 --> </section>
<section anchor='updnpdao'><name>Enhancements to draft-ietf-roll-efficient-npdao </name> <section anchor='updnpdao'><name>Enhancements to RFC 9009</name>
<t> <t>
<xref target='I-D.ietf-roll-efficient-npdao'/> defines the DCO message for RPL S toring Mode only, with a link-local scope. All nodes in the RPL network are expe cted to support the specification since the message is processed hop-by-hop alon g the path that is being cleaned up. <xref target='RFC9009'/> defines the DCO message for RPL Storing mode only, with a link-local scope. All nodes in the RPL network are expected to support the sp ecification, since the message is processed hop by hop along the path that is be ing cleaned up.
</t><t> </t><t>
This specification extends the use of the DCO message to the Non-Storing MOP, wh This specification extends the use of the DCO message to the Non-Storing MOP, wh
ereby the DCO is sent end-to-end by the Root directly to the RAN that injected t ereby the DCO is sent end to end by the root directly to the RAN that injected t
he DAO message for the considered target. he DAO message for the considered target. In that case, intermediate nodes do no
In that case, intermediate nodes do not need to support <xref target='I-D.ietf-r t need to support <xref target='RFC9009'/>; they forward the DCO message as a pl
oll-efficient-npdao'/>; they forward the DCO message as a plain IPv6 packet betw ain IPv6 packet between the root and the RAN.
een the Root and the RAN.
</t><t> </t><t>
In the case of a RUL, the 6LR that serves the RUL acts as the RAN that receives In the case of a RUL, the 6LR that serves the RUL acts as the RAN that receives
the Non-Storing DCO. the Non-Storing DCO.
This specification leverages the Non-Storing DCO between the Root and the 6LR th at serves as attachment router for a RUL. A 6LR and a Root that support this spe cification MUST implement the Non-Storing DCO. This specification leverages the Non-Storing DCO between the root and the 6LR th at serves as the attachment router for a RUL. A 6LR and a root that support this specification <bcp14>MUST</bcp14> implement the Non-Storing DCO.
</t> </t>
</section> <!-- end section "Enhancements to draft-ietf-roll-efficient-npdao" -- > </section>
<section anchor='upd2'><name>Enhancements to RFC6775 and RFC8505</name> <section anchor='upd2'><name>Enhancements to RFCs 6775 and 8505</name>
<t> <t>
This document updates <xref target='RFC6775'/> and <xref target='RFC8505'/> This document updates <xref target='RFC6775'/> and <xref target='RFC8505'/>
to reduce the range of the ND status codes down to 64 values. The two most si to reduce the range of the ARO/EARO Status values to 64 values. The two most
gnificant (leftmost) bits if the original ND status field are now reserved, they significant (leftmost) bits of the original ND Status field are now reserved; th
MUST be set to zero by the sender and ignored by the receiver. ey <bcp14>MUST</bcp14> be set to 0 by the sender and ignored by the receiver.
</t><t> </t><t>
This document also updates the behavior of a 6LR acting as RPL router and of a 6LN acting as RUL in the 6LoWPAN ND Address Registration as follows: This document also updates the behavior of a 6LR acting as a RPL router and o f a 6LN acting as a RUL in the 6LoWPAN ND Address Registration as follows:
</t> </t>
<ul> <ul>
<li> <li>
If the RPL Root advertises the capability to proxy the EDAR/EDAC If the RPL DODAG root advertises the ability to proxy the EDAR/EDAC
exchange to the 6LBR, the 6LR refrains from sending the keep-alive EDAR exchange to the 6LBR, the 6LR refrains from sending the keep-alive EDAR
message. If it is separated from the 6LBR, the Root regenerates the message. If it is separated from the 6LBR, the root regenerates the
EDAR message to the 6LBR periodically, upon a DAO message that signals the li veliness of the address. EDAR message to the 6LBR periodically, upon a DAO message that signals the li veliness of the address.
</li><li> </li><li>
The use of the R Flag is extended to the NA(EARO) to confirm whether the rout e was installed. The use of the R flag is extended to the NA(EARO) to confirm whether the rout e was installed.
</li> </li>
</ul> </ul>
</section> <!-- end section "Enhancements to RFC 6775 and RFC8505" --> </section>
<section anchor='op'><name>Protocol Operations for Unicast Addresses</name> <section anchor='op'><name>Protocol Operations for Unicast Addresses</name>
<t> <t>
The description below assumes that the Root sets the 'P' flag in the The description below assumes that the root sets the 'P' flag in the
DODAG Configuration Option and performs the EDAR proxy operation presented in DODAG Configuration option and performs the EDAR proxy operation presented in
<xref target='R8505D'/> . <xref target='R8505D'/>.
</t><t> </t><t>
If the 'P' flag is set to 0, the 6LR MUST generate the periodic EDAR messages and If the 'P' flag is set to 0, the 6LR <bcp14>MUST</bcp14> generate the periodic EDAR messages and
process the returned status as specified in <xref target='RFC8505'/>. process the returned status as specified in <xref target='RFC8505'/>.
If the EDAC indicates success, the rest of the flow takes place as presented If the EDAC indicates success, the rest of the flow takes place as presented
but without the proxied EDAR/EDAC exchange. but without the proxied EDAR/EDAC exchange.
</t><t> </t><t>
<xref target='flow'/> provides an overview of the route injection in RPL, wher eas <xref target='oper'/> offers more details from the perspective of the <xref target='flow'/> provides an overview of the route injection in RPL, wher eas <xref target='oper'/> offers more details from the perspective of the
different nodes involved in the flow. different nodes involved in the flow.
</t> </t>
<section anchor='flow'><name>General Flow</name> <section anchor='flow'><name>General Flow</name>
<t> <t>
This specification eliminates the need to exchange keep-alive Extended This specification eliminates the need to exchange keep-alive EDAR and EDAC m
Duplicate Address messages, EDAR and EDAC, all the way from a 6LN to the 6LBR essages all the way from a 6LN to the 6LBR across a RPL mesh.
across a RPL mesh. Instead, the EDAR/EDAC exchange with the 6LBR is proxied Instead, the EDAR/EDAC exchange with the 6LBR is proxied
by the RPL Root upon the DAO message that refreshes the RPL routing state. by the RPL DODAG root upon the DAO message that refreshes the RPL routing sta
The first EDAR upon a new Registration cannot be proxied, though, as it te.
serves for the purpose of DAD, which must be verified before the address is The first EDAR upon a new Address Registration cannot be proxied, though, as
it
is generated for the purpose of DAD, which must be verified before the addres
s is
injected in RPL. injected in RPL.
</t><t> </t><t>
In a RPL In a RPL
network where the function is enabled, refreshing the state in the 6LBR is network where the function is enabled, refreshing the state in the 6LBR is
the responsibility of the Root. Consequently, only addresses that are the responsibility of the root. Consequently, only addresses that are
injected in RPL will be kept alive at the 6LBR by the RPL Root. injected in RPL will be kept alive at the 6LBR by the RPL DODAG root.
Since RULs are advertised using Non-Storing Mode, the DAO message flow Since RULs are advertised using Non-Storing mode, the DAO message flow
and the keep alive EDAR/EDAC can be nested within the Address and the keep-alive EDAR/EDAC can be nested within the Address
(re)Registration flow. (re)Registration flow.
<xref target='fReg1'/> illustrates that, for the first Registration, <xref target='fReg1'/> illustrates that, for the first Address Registration,
both the DAD and the keep-alive EDAR/EDAC exchanges happen in the same both the DAD and the keep-alive EDAR&wj;/EDAC exchanges happen in the same
sequence. sequence.
</t> </t>
<figure anchor='fReg1' suppress-title='false'><name>First RUL Registration Flow </name> <figure anchor='fReg1' suppress-title='false'><name>First RUL Registration Flow </name>
<artwork align="center"><![CDATA[ <artwork align="center"><![CDATA[
6LN/RUL 6LR <6LR*> Root 6LBR 6LN/RUL 6LR <6LR*> Root 6LBR
|<---Using ND--->|<--Using RPL->|<-----Using ND---->| |<---Using ND--->|<--Using RPL->|<-----Using ND---->|
| |<-----------Using ND------------->| | |<-----------Using ND------------->|
| | | | | | | |
| NS(EARO) | | | | NS(EARO) | | |
|--------------->| | |--------------->| |
| | EDAR | | | EDAR |
| |--------------------------------->| | |--------------------------------->|
| | | | | |
| | EDAC | | | EDAC |
skipping to change at line 1099 skipping to change at line 1024
| | EDAC | | | EDAC |
| |<---------------------------------| | |<---------------------------------|
| | | | | |
| | DAO(X=0) | | | | DAO(X=0) | |
| |------------->| | | |------------->| |
| | | | | |
| | DAO-ACK | | | | DAO-ACK | |
| |<-------------| | | |<-------------| |
| NA(EARO) | | | | NA(EARO) | | |
|<---------------| | | |<---------------| | |
| | | | | | | |]]></artwork>
]]></artwork>
</figure> </figure>
<t> <t>
This flow requires that the lifetimes and sequence counters in 6LoWPAN ND and RPL are aligned. This flow requires that the lifetimes and sequence counters in 6LoWPAN ND and RPL be aligned.
</t><t> </t><t>
To achieve this, the Path To achieve this, the Path
Sequence and the Path Lifetime in the DAO message are taken from the Sequence and the Path Lifetime in the DAO message are taken from the
Transaction ID and the Address Registration lifetime in the NS(EARO) message Transaction ID and the Address Registration lifetime in the NS(EARO) message
from the 6LN. from the 6LN.
</t><t> </t><t>
On the first Address Registration, illustrated in <xref target='fReg1'/> On the first Address Registration, illustrated in <xref target='fReg1'/>
for RPL Non-Storing Mode, the Extended Duplicate Address exchange takes place for RPL Non-Storing mode, the EDAR/EDAC exchange takes place
as prescribed by <xref target='RFC8505'/>. If the exchange fails, the 6LR ret urns an NA message with a non-zero status to the 6LN, the NCE is not created, an d the address is not injected in RPL. as prescribed by <xref target='RFC8505'/>. If the exchange fails, the 6LR ret urns an NA message with a non-zero status to the 6LN, the NCE is not created, an d the address is not injected in RPL.
Otherwise, the 6LR creates an NCE and injects the Registered Otherwise, the 6LR creates an NCE and injects the Registered
Address in the RPL routing using a DAO/DAO-ACK exchange with the RPL DODAG Address in the RPL routing using a DAO/DAO-ACK exchange with the RPL DODAG
Root. root.
</t> </t>
<t> <t>
An Address Registration refresh is performed by the 6LN to keep the NCE An Address Registration refresh is performed by the 6LN to keep the NCE
in the 6LR alive before the lifetime expires. Upon the refresh of a in the 6LR alive before the lifetime expires. Upon the refresh of a
registration, the 6LR reinjects the corresponding route in RPL before it exp ires, as illustrated in <xref target='fReg2'/>. registration, the 6LR reinjects the corresponding route in RPL before it exp ires, as illustrated in <xref target='fReg2'/>.
</t> </t>
<figure anchor='fReg2' suppress-title='false'><name>Next RUL Registration Flow< /name> <figure anchor='fReg2' suppress-title='false'><name>Next RUL Registration Flow< /name>
<artwork align="center"><![CDATA[ <artwork align="center"><![CDATA[
6LN/RUL <-ND-> 6LR <-RPL-> Root <-ND-> 6LBR 6LN/RUL <-ND-> 6LR <-RPL-> Root <-ND-> 6LBR
| | | | | | | |
skipping to change at line 1139 skipping to change at line 1063
|--------------->| | | |--------------->| | |
| | DAO(X=1) | | | | DAO(X=1) | |
| |------------->| | | |------------->| |
| | | EDAR | | | | EDAR |
| | |------------------>| | | |------------------>|
| | | EDAC | | | | EDAC |
| | |<------------------| | | |<------------------|
| | DAO-ACK | | | | DAO-ACK | |
| |<-------------| | | |<-------------| |
| NA(EARO) | | | | NA(EARO) | | |
|<---------------| | | |<---------------| | |]]></artwork>
]]></artwork>
</figure><t> </figure><t>
This is what causes the RPL Root to refresh the state in the 6LBR, using an This is what causes the RPL DODAG root to refresh the state in the 6LBR, usi ng an
EDAC message. EDAC message.
In case of an error in the proxied EDAR flow, the error is In the case of an error in the proxied EDAR flow, the error is
returned in the DAO-ACK using a RPL Status with the 'A' flag set to 1 that i returned in the DAO-ACK using a RPL Status with the 'A' flag set to 1, which
mbeds embeds
a 6LoWPAN Status value as discussed in <xref target='stat'/>. a 6LoWPAN Status value as discussed in <xref target='stat'/>.
</t> <t> </t> <t>
The 6LR may receive a requested DAO-ACK after it received an asynchronous The 6LR may receive a requested DAO-ACK after it received an asynchronous
Non-Storing DCO, but the non-zero status in the DCO supersedes a positive Non-Storing DCO, but the non-zero status in the DCO supersedes a positive
Status in the DAO-ACK regardless of the order in which they are received. status in the DAO-ACK, regardless of the order in which they are received.
Upon the DAO-ACK - or the DCO if one arrives first - the 6LR responds to the Upon the DAO-ACK -- or the DCO, if one arrives first -- the 6LR responds to
the
RUL with an NA(EARO). RUL with an NA(EARO).
</t> <t> </t> <t>
An issue may be detected later, e.g., the address moves to a different An issue may be detected later, e.g., the address moves to a different
DODAG with the 6LBR attached to a different 6LoWPAN Backbone router (6BBR), DODAG with the 6LBR attached to a different 6LoWPAN Backbone Router (6BBR);
see Figure 5 in section 3.3 of <xref target='RFC8929'/>. see Figure 5 in <xref target="RFC8929" sectionFormat="of" section="3.3"/>.
The 6BBR may send a negative ND status, e.g., in an asynchronous NA(EARO) The 6BBR may send a negative ND Status, e.g., in an asynchronous NA(EARO)
to the 6LBR. to the 6LBR.
</t> <t> </t> <t>
<xref target='RFC8929'/> expects that the 6LBR is collocated with the RPL Roo <xref target='RFC8929'/> expects that the 6LBR is co-located with the RPL DOD
t, but if not, the 6LBR MUST forward the status code to the originator of the E AG root, but if not, the 6LBR <bcp14>MUST</bcp14> forward the status code to th
DAR, either the 6LR or the RPL Root that proxies for it. e originator of the EDAR -- either the 6LR or the RPL DODAG root that proxies fo
The ND status code is mapped in a RPL Status value by the RPL Root, and then r it.
back by the 6LR. The ND status code is mapped in a RPL Status value by the RPL DODAG root, and
then back to an ND Status by the 6LR to the 6LN.
Note that a legacy RAN that receives a Non-Storing DCO that it does not Note that a legacy RAN that receives a Non-Storing DCO that it does not
support will ignore it silently, as specified in section 6 of <xref target='R support will ignore it silently, as specified in <xref target="RFC6550" secti
FC6550'/>. The result is that it may ignore for a while that it is no onFormat="of" section="6"/>. The result is that it will remain unaware that it i
more reachable. The situation will be cleared upon the next Non-Storing DAO s no longer reachable until its next RPL exchange happens. This situation will b
e cleared upon the next Non-Storing DAO
exchange if the error is returned in a DAO-ACK. exchange if the error is returned in a DAO-ACK.
</t><t> </t><t>
<xref target='fReg1.5'/> illustrates this in the case where the 6LBR and the Root are not collocated, and the Root proxies the EDAR/EDAC flow. <xref target='fReg1.5'/> illustrates this in the case where the 6LBR and the root are not co-located, and the root proxies the EDAR/EDAC flow.
</t> </t>
<figure anchor='fReg1.5' suppress-title='false'><name>Asynchronous Issue</name> <figure anchor='fReg1.5' suppress-title='false'><name>Asynchronous Issue</name>
<artwork align="center"><![CDATA[ <artwork align="center"><![CDATA[
6LN/RUL <-ND-> 6LR <-RPL-> Root <-ND-> 6LBR <-ND-> 6BBR 6LN/RUL <-ND-> 6LR <-RPL-> Root <-ND-> 6LBR <-ND-> 6BBR
| | | | | | | | | |
| | | | NA(EARO) | | | | | NA(EARO) |
| | | |<------------| | | | |<------------|
| | | EDAC | | | | | EDAC | |
| | |<-------------| | | | |<-------------| |
| | DCO | | | | | DCO | | |
| |<------------| | | | |<------------| | |
| NA(EARO) | | | | | NA(EARO) | | | |
|<-------------| | | | |<-------------| | | |
| | | | | | | | | |]]></artwork>
]]></artwork>
</figure> </figure>
<t> <t>
If the Root does not proxy, then the EDAC with a non-zero status reaches the If the root does not proxy, then the EDAC with a non-zero status reaches the
6LR directly. In that case, the 6LR MUST clean up the route using a DAO with 6LR directly. In that case, the 6LR <bcp14>MUST</bcp14> clean up the route us
a Lifetime of zero, and it MUST propagate the status back to the RUL in a NA( ing a DAO with
EARO) with the R Flag set to 0. a Lifetime of 0, and it <bcp14>MUST</bcp14> propagate the status back to the
RUL in an NA(EARO) with the R flag set to 0.
</t><t> </t><t>
The RUL may terminate the registration at any time by using a Registration The RUL may terminate the registration at any time by using a Registration
Lifetime of 0. Lifetime of 0.
This specification requires that the RPL Target Option transports the ROVR. This specification requires that the RPL Target option transport the ROVR.
This way, the same flow as the heartbeat flow is sufficient to inform the This way, the same flow as the heartbeat flow is sufficient to inform the
6LBR using the Root as proxy, as illustrated in <xref target="fReg2"/>. 6LBR using the root as a proxy, as illustrated in <xref target="fReg2"/>.
</t> <t> </t> <t>
Any combination of the logical functions of 6LR, Root, and 6LBR might be All or any combination of the 6LR, the root, and the 6LBR might be
collapsed in a single node. collapsed in a single node.
</t> </t>
</section> </section>
<section anchor='oper'><name>Detailed Operation</name> <section anchor='oper'><name>Detailed Operation</name>
<t> <t>
The following section specify respectively the behaviour of the 6LN Acting The following sections specify the behavior of (1)&nbsp;the 6LN acting as
as RUL, the 6LR Acting as Border router and serving the 6LN, the RPL Root and a RUL, (2)&nbsp;the 6LR acting as a border router and serving the
the 6LBR in the control flows that enable RPL routing back to the RUL. 6LN, (3)&nbsp;the RPL DODAG root, and (4)&nbsp;the 6LBR in the control flows th
at
enable RPL routing back to the RUL, respectively.
</t> </t>
<section anchor='ln'><name>Perspective of the 6LN Acting as RUL</name> <section anchor='ln'><name>Perspective of the 6LN Acting as a RUL</name>
<t> <t>
This specification builds on the operation of a 6LoWPAN ND-compliant This specification builds on the operation of a 6LoWPAN ND-compliant
6LN/RUL, which is expected to operate as follows: 6LN/RUL, which is expected to operate as follows:
</t> </t>
<ol spacing='normal'> <ol spacing='normal'>
<li> <li>
The 6LN selects a 6LR that provides reachability services for a RUL. This The 6LN selects a 6LR that provides reachability services for a RUL. This
is signaled by a 6CIO in the RA messages with the L, P and E flags set to 1 is signaled by a 6CIO in the RA messages with the L, P, and E flags set to 1
as prescribed by <xref target='RFC8505'/>. as prescribed by <xref target='RFC8505'/>.
</li><li> </li><li>
The 6LN obtains an IPv6 global address, either using Stateless Address Autoco The 6LN obtains an IPv6 global address, via either (1)&nbsp;Stateless Address
nfiguration (SLAAC) <xref target='RFC4862'/> based on a Prefix Autoconfiguration (SLAAC) <xref target='RFC4862'/> based on a Prefix
Information Option (PIO) <xref target='RFC4861'/> found in an RA message, or Information Option (PIO) <xref target='RFC4861'/> found in an RA message or
some other means, such as DHCPv6 <xref target='RFC8415'/>. (2)&nbsp;some other means, such as DHCPv6 <xref target='RFC8415'/>.
</li><li> </li><li>
Once it has formed an address, the 6LN registers its address and refreshes it s registration periodically, early enough Once it has formed an address, the 6LN registers its address and refreshes it s registration periodically, early enough
within the Lifetime of the previous Address Registration, as prescribed by within the lifetime of the previous Address Registration, as prescribed by
<xref target='RFC6775'/>, to refresh the NCE before the lifetime indicated <xref target='RFC6775'/>, to refresh the NCE before the lifetime indicated
in the EARO expires. It sets the T Flag to 1 as prescribed in <xref target='R FC8505'/>. in the EARO expires. It sets the T flag to 1 as prescribed in <xref target='R FC8505'/>.
The TID is incremented each time and wraps in a lollipop fashion (see The TID is incremented each time and wraps in a lollipop fashion (see
section 5.2.1 of <xref target='RFC8505'/>, which is fully compatible with <xref target="RFC8505" sectionFormat="of" section="5.2.1"/>, which is fully c
section 7.2 of <xref target='RFC6550'/>). ompatible with
<xref target="RFC6550" sectionFormat="of" section="7.2"/>).
</li><li> </li><li>
As stated in section 5.2 of <xref target='RFC8505'/>, the 6LN can register As stated in <xref target="RFC8505" sectionFormat="of" section="5.2"/>, the 6
to more than one 6LR at the same time. In that case, it LN can register
uses the same EARO for all of the parallel Address Registrations, with the ex with more than one 6LR at the same time.
ception of the Registration Lifetime field and the setting of the R flag that ma In that case, all the fields in the EARO are set to the same value
y differ. for all of the parallel Address Registrations, with the exception
of the Registration Lifetime field and the R flag, which may be set to
The 6LN may cancel a subset of its registrations, or transfer a different values.
registration from one or more old 6LR(s) to one or more new 6LR(s). To do The 6LN may cancel a subset of its registrations or may transfer a
registration from one or more old 6LRs to one or more new 6LRs. To do
so, the 6LN sends a series of NS(EARO) messages, all with the same TID, so, the 6LN sends a series of NS(EARO) messages, all with the same TID,
with a zero Registration Lifetime to the old 6LR(s) and with a zero Registration Lifetime to the old 6LR(s) and
with a non-zero Registration Lifetime to the new 6LR(s). In that process, with a non-zero Registration Lifetime to the new 6LR(s). In that process,
the 6LN SHOULD send the NS(EARO) with a non-zero Registration Lifetime and the 6LN <bcp14>SHOULD</bcp14> send the NS(EARO) with a non-zero Registration Lifetime and
ensure that at least one succeeds before it sends an NS(EARO) that ensure that at least one succeeds before it sends an NS(EARO) that
terminates another registration. This avoids the churn related to transient terminates another registration. This avoids the churn related to transient
route invalidation in the RPL network above the common parent of the route invalidation in the RPL network above the common parent of the
involved 6LRs. involved 6LRs.
<!--
To avoid churn related to transient route invalidation, the 6LN
SHOULD send the NS(EARO) to maintain the registration active (i.e., with a
non-zero Registration Lifetime)
</li><li> </li><li>
Following <xref target="RFC8505" sectionFormat="of" section="5.1"/>,
Following section 5.1 of <xref target='RFC8505'/>, a 6LN acting as a RUL sets the R flag in the EARO of its registration(s)
a 6LN acting as a RUL sets the R Flag in the EARO of its registration(s) for which it requires routing services. If the R flag is not echoed in the
for which it requires routing services. If the R Flag is not echoed in the NA, the RUL <bcp14>MUST</bcp14> assume that establishing the routing services
NA, the RUL MUST consider that establishing the routing services via this 6LR via this 6LR
failed and it SHOULD attempt to use another 6LR. failed, and it <bcp14>SHOULD</bcp14> attempt to use another 6LR.
The RUL SHOULD ensure that one registration succeeds before setting the R Flag The RUL <bcp14>SHOULD</bcp14> ensure that one registration succeeds before set
to 0. In case of a conflict with the preceding rule on lifetime, the rule on l ting the R flag to 0. In the case of a conflict with the preceding rule regardi
ifetime has precedence. ng the lifetime, the rule regarding the lifetime has precedence.
</li><li> </li><li>
The 6LN may use any of the 6LRs to which it registered as the default The 6LN may use any of the 6LRs to which it registered as the default
gateway. gateway.
Using a 6LR to which the 6LN is not registered may result in packets dropped Using a 6LR to which the 6LN is not registered may result in packets dropped
at the 6LR by a Source Address Validation function (SAVI) <xref target='RFC70 39'/> so it is not recommended. at the 6LR by a Source Address Validation Improvement (SAVI) function <xref t arget='RFC7039'/> and thus is not recommended.
</li> </li>
</ol> </ol>
<t> <t>
Even without support for RPL, the RUL may be configured with an opaque value Even without support for RPL, the RUL may be configured with an opaque value
to be provided to the routing protocol. If the RUL has knowledge of the RPL to be provided to the routing protocol. If the RUL has knowledge of the RPL
Instance the packet should be injected into, then it SHOULD set the Opaque Instance into which the packet should be injected, then it <bcp14>SHOULD</bcp
field in the EARO to the RPLInstanceID, otherwise it MUST leave the Opaque 14> set the Opaque
field as zero. field in the EARO to the RPLInstanceID; otherwise, it <bcp14>MUST</bcp14> lea
ve the Opaque
field as 0.
</t> </t>
<t> <t>
Regardless of the setting of the Opaque field, the 6LN MUST set the "I" Regardless of the setting of the Opaque field, the 6LN <bcp14>MUST</bcp14> se
field to zero to signal "topological information to be passed to a routing t the "I"
process", as specified in section 5.1 of <xref target='RFC8505'/>. field to 0 to signal "topological information to be passed to a routing
process", as specified in <xref target="RFC8505" sectionFormat="of" section="
5.1"/>.
</t><t> </t><t>
A RUL is not expected to produce RPL artifacts in the data packets, but it A RUL is not expected to produce RPL artifacts in the data packets, but it
may do so. For instance, if the RUL has minimal awareness of the RPL may do so. For instance, if the RUL has minimal awareness of the RPL
Instance then it can build an RPI. A RUL that places an RPI in a data packet Instance, then it can build an RPI. A RUL that places an RPI in a data packet
SHOULD indicate the RPLInstanceID of the RPL Instance where the <bcp14>SHOULD</bcp14> indicate the RPLInstanceID of the RPL Instance where th
e
packet should be forwarded. It is up to the 6LR (e.g., by policy) to use the packet should be forwarded. It is up to the 6LR (e.g., by policy) to use the
RPLInstanceID information provided by the RUL or rewrite it to the selected RPLInstanceID information provided by the RUL or rewrite it to the selected
RPLInstanceID for forwarding inside the RPL domain. RPLInstanceID for forwarding inside the RPL domain.
All the flags and the Rank field are set All the flags and the SenderRank field are set
to 0 as specified by section 11.2 of <xref target='RFC6550'/>. to 0 as specified by <xref target="RFC6550" sectionFormat="of" section="11.2"
/>.
</t> </t>
</section> </section>
<section anchor='lr'><name>Perspective of the 6LR Acting as Border router</name> <section anchor='lr'><name>Perspective of the 6LR Acting as a Border Router</nam e>
<t> <t>
A 6LR that provides reachability services for a RUL in a RPL network A 6LR that provides reachability services for a RUL in a RPL network
as specified in this document MUST include a 6CIO in its RA messages and as specified in this document <bcp14>MUST</bcp14> include a 6CIO in its RA m
set the L, P and E flags to 1 as prescribed by <xref target='RFC8505'/>. essages and
set the L, P, and E flags to 1 as prescribed by <xref target='RFC8505'/>.
</t><t> </t><t>
As prescribed by <xref target='RFC8505'/>, As prescribed by <xref target='RFC8505'/>,
the 6LR generates an EDAR message upon reception of a valid NS(EARO) the 6LR generates an EDAR message upon reception of a valid NS(EARO)
message for the registration of a new IPv6 address by a 6LN. message for the registration of a new IPv6 address by a 6LN.
If the initial EDAR/EDAC exchange succeeds, then the 6LR installs an NCE If the initial EDAR/EDAC exchange succeeds, then the 6LR installs an NCE
for the Registration Lifetime. for the Registration Lifetime.
</t> </t>
<t> <t>
If the R Flag is set to 1 in the NS(EARO), the 6LR SHOULD inject the If the R flag is set to 1 in the NS(EARO), the 6LR <bcp14>SHOULD</bcp14> inje
host route in RPL, unless this is barred for other reasons, such as the satur ct the
ation of the RPL parents. The 6LR MUST use a RPL Non-Storing Mode host route in RPL, unless this is barred for other reasons, such as the satur
signaling and the updated Target Option (see <xref target='tgt'/>). The 6LR ation of the RPL parents. The 6LR <bcp14>MUST</bcp14> use RPL Non-Storing mode
SHOULD refrain from setting the 'X' flag to avoid a redundant EDAR/EDAC flow signaling and the updated Target option (see <xref target='tgt'/>). To avoid
to the 6LBR. The 6LR MUST request a DAO-ACK by setting the 'K' flag in the a
DAO message. Success injecting the route to the RUL's address is indicated by redundant EDAR/EDAC flow to the 6LBR, the 6LR <bcp14>SHOULD</bcp14> refrain from
the 'E' flag set to 0 in the RPL status of the DAO-ACK message. setting the 'X' flag.
The 6LR <bcp14>MUST</bcp14> request a DAO-ACK by setting the 'K' flag in the
DAO message. Successfully injecting the route to the RUL's address will be in
dicated via
the 'U' flag set to 0 in the RPL Status of the DAO-ACK message.
</t> </t>
<t> <t>
For the registration refreshes, if the RPL Root sets the 'P' flag in the DODA For the registration refreshes, if the RPL DODAG root sets the 'P' flag in th
G Configuration Option to 1, then the 6LR MUST refrain from sending the keep-ali e DODAG Configuration option to 1, then the 6LR <bcp14>MUST</bcp14> refrain from
ve EDAR; instead, it MUST set the 'X' flag to 1 in the Target Option of the DAO sending the keep-alive EDAR; instead, it <bcp14>MUST</bcp14> set the 'X' flag t
messages, to request that the Root proxies the keep-alive EDAR/EDAC exchange wit o 1 in the Target option of the DAO messages, to request that the root proxy the
h the 6LBR (see <xref target='upd'/>); if the 'P' flag is set to 0 keep-alive EDAR/EDAC exchange with the 6LBR (see <xref target='upd'/>); if the
then the 6LR MUST set the 'X' flag to 0 and handle the EDAR/EDAC flow itself. 'P' flag is set to 0,
then the 6LR <bcp14>MUST</bcp14> set the 'X' flag to 0 and handle the EDAR/ED
AC flow itself.
</t> </t>
<t> <t>
The Opaque field in the EARO provides a means to signal which RPL Instance is to be used for the DAO advertisements and the forwarding of packets sourced at the Registered Address when there is no RPI in the packet. The Opaque field in the EARO provides a means to signal which RPL Instance is to be used for the DAO advertisements and the forwarding of packets sourced at the Registered Address when there is no RPI in the packet.
</t> <t> </t> <t>
As described in <xref target='RFC8505'/>, if the "I" field is zero, then the Opaque field is expected to carry the RPLInstanceID suggested by the 6LN; otherw ise, there is no suggested Instance. As described in <xref target='RFC8505'/>, if the "I" field is 0, then the Opa que field is expected to carry the RPLInstanceID suggested by the 6LN; otherwise , there is no suggested RPL Instance.
If the 6LR participates in the suggested RPL Instance, then the If the 6LR participates in the suggested RPL Instance, then the
6LR MUST use that RPL Instance for the Registered Address. 6LR <bcp14>MUST</bcp14> use that RPL Instance for the Registered Address.
</t> <t> </t> <t>
If there is no suggested RPL Instance or else if the 6LR does not participate If there is no suggested RPL Instance or if the 6LR does not participate in
to the suggested Instance, it is expected that the packets coming from the 6LN the suggested RPL Instance, it is expected that the packets coming from the 6LN
"can unambiguously be associated to at least one RPL Instance" <xref target='RFC "can unambiguously be associated to at least one RPL Instance" <xref target='RFC
6550'/> by the 6LR, e.g., using a policy that 6550'/> by the 6LR, e.g., using a policy that
maps the 6-tuple into an Instance. maps the 6-tuple to a RPL Instance.
</t> </t>
<t> <t>
The DAO message advertising the Registered Address MUST be constructed as The DAO message advertising the Registered Address <bcp14>MUST</bcp14> be cons tructed as
follows: follows:
</t> </t>
<ol spacing='normal'> <ol spacing='normal'>
<li>The Registered Address is signaled as the Target Prefix in the updated Tar get Option in the DAO message; the Prefix Length is set to 128 but the 'F' flag is set to 0 since the advertiser is not the RUL. The ROVR field is copied unchan ged from the EARO (see <xref target='tgt'/>). <li>The Registered Address is signaled as the Target Prefix in the updated Tar get option in the DAO message; the Prefix Length is set to 128 but the 'F' flag is set to 0, since the advertiser is not the RUL. The ROVR field is copied uncha nged from the EARO (see <xref target='tgt'/>).
</li><li> </li><li>
The 6LR indicates one of its global or unique-local IPv6 unicast addresses as the Parent Address in the TIO associated with the Target Option The 6LR indicates one of its global or unique-local IPv6 unicast addresses as the Parent Address in the TIO associated with the Target option.
</li><li> </li><li>
The 6LR sets the External 'E' flag in the TIO to indicate that it is redistrib The 6LR sets the External ('E') flag in the TIO to indicate that it is redistr
uting ibuting
an external target into the RPL network an external target into the RPL network.
</li><li> </li><li>
<t> <t>
The Path Lifetime in the TIO is computed from the Registration Lifetime in the EARO. This operation converts seconds to the Lifetime Units used in the RPL ope ration. This creates the deployment constraint that the Lifetime Unit is reasona bly compatible with the expression of the Registration Lifetime; e.g., a Lifetim e Unit of 0x4000 maps the most significant byte of the Registration Lifetime to the Path Lifetime. The Path Lifetime in the TIO is computed from the Registration Lifetime in the EARO. This operation converts seconds to the Lifetime Units used in the RPL ope ration. This creates the deployment constraint that the Lifetime Unit is reasona bly compatible with the expression of the Registration Lifetime; e.g., a Lifetim e Unit of 0x4000 maps the most significant byte of the Registration Lifetime to the Path Lifetime.
</t> <t> </t> <t>
In that operation, the Path Lifetime must be set to ensure that the path has a longer lifetime than the registration and covers in addition the round trip tim e to the Root. In that operation, the Path Lifetime must be set to ensure that the path has a longer lifetime than the registration and also covers the round-trip time to th e root.
</t> <t> </t> <t>
Note that if the Registration Lifetime is 0, then the Path Lifetime is also 0 and the DAO message becomes a No-Path DAO, which cleans up the routes down to th e RUL's address; this also causes the Root as a proxy to send an EDAR message to the 6LBR with a Lifetime of 0. Note that if the Registration Lifetime is 0, then the Path Lifetime is also 0 and the DAO message becomes a No-Path DAO, which cleans up the routes down to th e RUL's address; this also causes the root as a proxy to send an EDAR message to the 6LBR with a Lifetime of 0.
</t> </t>
</li><li> </li><li>
the Path Sequence in the TIO is set to the TID value found in the EARO option. The Path Sequence in the TIO is set to the TID value found in the EARO.
</li> </li>
</ol> </ol>
<t> <t>
Upon receiving or timing out the DAO-ACK after an implementation-specific Upon receiving or timing out the DAO-ACK after an implementation-specific
number of retries, the 6LR MUST send the corresponding NA(EARO) to the RUL. number of retries, the 6LR <bcp14>MUST</bcp14> send the corresponding NA(EARO
Upon receiving an asynchronous DCO message, it MUST send an asynchronous ) to the RUL.
NA(EARO) to the RUL immediately, but still be capable of processing the Upon receiving an asynchronous DCO message, it <bcp14>MUST</bcp14> send an as
ynchronous
NA(EARO) to the RUL immediately but still be capable of processing the
DAO-ACK if one is pending. DAO-ACK if one is pending.
</t><t> </t><t>
The 6LR MUST set the R Flag to 1 in the NA(EARO) back if and only if the 'E' flag in the RPL Status is set to 0, indicating that the 6LR injected the Registe red Address in the RPL routing successfully and that the EDAR proxy operation su cceeded. The 6LR <bcp14>MUST</bcp14> set the R flag to 1 in the NA(EARO) that it sends ba ck to the 6LN if and only if the 'U' flag in the RPL Status is set to 0, indicat ing that the 6LR injected the Registered Address in the RPL routing successfully and that the EDAR proxy operation succeeded.
</t><t> </t><t>
If the 'A' flag in the RPL Status is set to 1, the embedded Status value is p assed back to the RUL in the EARO Status. If the 'A' flag in the RPL Status is set to 1, the embedded Status value is p assed back to the RUL in the EARO Status.
If the 'E' flag is also set to 1, the registration failed for If the 'U' flag is also set to 1, the registration failed for
6LoWPAN-ND-related reasons, and the NCE is removed. 6LoWPAN-ND-related reasons, and the NCE is removed.
</t><t> </t><t>
An error injecting the route causes the 'E' flag to be set to 1. If the error An error injecting the route causes the 'U' flag to be set to 1. If the error
is not related to ND, the 'A' flag is set to 0. In that case, the registration is not related to ND, the 'A' flag is set to 0. In that case, the registration
succeeds, but the RPL route is not installed. So the NA(EARO) is returned succeeds, but the RPL route is not installed. So, the NA(EARO) is returned
with a status indicating success but the R Flag set to 0, which means that with a status indicating success but the R flag set to 0, which means that
the 6LN obtained a binding but no route. the 6LN obtained a binding but no route.
</t><t> </t><t>
If the 'A' flag is set to 0 in the RPL Status of the DAO-ACK, then the 6LoWPA N If the 'A' flag is set to 0 in the RPL Status of the DAO-ACK, then the 6LoWPA N
ND operation succeeded, and an EARO Status of 0 (Success) MUST be returned to ND operation succeeded, and an EARO Status of 0 (Success) <bcp14>MUST</bcp14>
the 6LN. The EARO Status of 0 MUST also be used if the 6LR did not attempt to be returned to
inject the route but could create the binding after a successful EDAR/EDAC exch the 6LN. The EARO Status of 0 <bcp14>MUST</bcp14> also be used if the 6LR did
ange or refresh it. not attempt to inject the route but could create the binding after a successful
EDAR/EDAC exchange or refresh it.
</t><t> </t><t>
If the 'E' flag is set to 1 in the RPL Status of the DAO-ACK, then the route was not installed and the R flag MUST be set to 0 in the NA(EARO). The R flag MU ST be set to 0 if the 6LR did not attempt to inject the route. If the 'U' flag is set to 1 in the RPL Status of the DAO-ACK, then the route was not installed, and the R flag <bcp14>MUST</bcp14> be set to 0 in the NA(EARO ). The R flag <bcp14>MUST</bcp14> be set to 0 if the 6LR did not attempt to inje ct the route.
</t><t> </t><t>
In a network where Address Protected Neighbor Discovery (AP-ND) is enabled, In a network where Address-Protected Neighbor Discovery (AP-ND) is enabled,
in case of a DAO-ACK or a DCO transporting an EARO in the case of a DAO-ACK or a DCO transporting an EARO
Status value of 5 (Validation Requested), the 6LR MUST Status value of 5 (Validation Requested), the 6LR <bcp14>MUST</bcp14>
challenge the 6LN for ownership of the address, as described in section challenge the 6LN for ownership of the address, as described in <xref target=
6.1 of <xref target='RFC8928'/>, before the Registration is "RFC8928" sectionFormat="of" section="6.1"/>, before the registration is
complete. This flow, illustrated in <xref target='Dynamic-fig'/>, ensures tha t the address is validated before it is injected in the RPL routing. complete. This flow, illustrated in <xref target='Dynamic-fig'/>, ensures tha t the address is validated before it is injected in the RPL routing.
</t><t>
If the challenge succeeds, then the operations continue as normal.
In particular, a DAO message is generated
upon the NS(EARO) that proves the ownership of the address. If the challenge
failed, the 6LR rejects the registration as prescribed by AP-ND and may take
actions to protect itself against DoS attacks by a rogue 6LN, see
<xref target='security-considerations'/>.
</t> </t>
<figure anchor='Dynamic-fig' suppress-title='false'><name>Address Protection</na me> <figure anchor='Dynamic-fig' suppress-title='false'><name>Address Protection</na me>
<artwork><![CDATA[ <artwork><![CDATA[
6LN 6LR Root 6LBR 6LN 6LR Root 6LBR
| | | | | | | |
|<--------------- RA ---------------------| | | |<--------------- RA ---------------------| | |
| | | | | | | |
|------ NS EARO (ROVR=Crypto-ID) -------->| | | |------ NS(EARO) (ROVR=Crypto-ID) ------->| | |
| | | | | | | |
|<- NA EARO(status=Validation Requested) -| | | |<-NA(EARO) (Status=Validation Requested)-| | |
| | | | | | | |
|----- NS EARO and Proof-of-ownership -->| | |---- NS(EARO) and proof of ownership --->| | |
| | | | | | | |
| <validate the Proof> | | | <validate the proof> | |
| | | | | |
|<----------- NA EARO (status=10)---<if failed> | | |<------- NA(EARO) (Status=10) -----<if failed> | |
| | | | | |
| <else> | | | <else> | |
| | | | | | | |
| |--------- EDAR ------->| | |--------- EDAR ------->|
| | | | | |
| |<-------- EDAC --------| | |<-------- EDAC --------|
| | | | | |
| | | | | | | |
| |-DAO(X=0)->| | | |-DAO(X=0)->| |
| | | | | | | |
| |<- DAO-ACK-| | | |<- DAO-ACK-| |
| | | | | | | |
|<----------- NA EARO (status=0)----------| | | |<---------- NA(EARO) (Status=0) ---------| | |
| | | | | | | |
... ...
| | | | | | | |
|------ NS EARO (ROVR=Crypto-ID) -------->| | | |------ NS(EARO) (ROVR=Crypto-ID) ------->| | |
| |-DAO(X=1)->| | | |-DAO(X=1)->| |
| | |-- EDAR -->| | | |-- EDAR -->|
| | | | | | | |
| | |<-- EDAC --| | | |<-- EDAC --|
| |<- DAO-ACK-| | | |<- DAO-ACK-| |
|<----------- NA EARO (status=0)----------| | | |<---------- NA(EARO) (Status=0) ---------| | |
| | | | | | | |
... ...]]></artwork>
]]></artwork> </figure>
</figure>
<t> <t>
The 6LR may at any time send a unicast asynchronous NA(EARO) with the R Flag If the challenge succeeded, then the operations continue as normal.
set to 0 to signal that it stops providing routing services, and/or with the EAR In particular, a DAO message is generated
O Status 2 "Neighbor Cache full" to signal that it removes the NCE. It may also upon the NS(EARO) that proves the ownership of the address. If the challenge
send a final RA, unicast or multicast, with a router Lifetime field of zero, to failed, the 6LR rejects the registration as prescribed by AP-ND and may take
signal that it is ceasing to serve as router, as specified in section 6.2.5 of < actions to protect itself against Denial-Of-Service (DoS) attacks by a rogue
xref target='RFC4861'/>. This may happen upon a 6LN; see
DCO or a DAO-ACK message indicating the path is already removed; else the <xref target='security-considerations'/>.
6LR MUST remove the host route to the 6LN using a DAO message with a Path </t>
Lifetime of zero.
<t>
The 6LR may, at any time, send a unicast asynchronous NA(EARO) with the R fla
g set to 0 to signal that it has stopped providing routing services, and/or with
an EARO Status of 2 (Neighbor Cache Full) to signal that it removed the NCE. It
may also send a final RA -- unicast or multicast -- with a router Lifetime fiel
d of 0, to signal that it will cease to serve as the router, as specified in <xr
ef target="RFC4861" sectionFormat="of" section="6.2.5"/>. This may happen upon a
DCO or a DAO-ACK message indicating that the path is already removed; otherwi
se, the
6LR <bcp14>MUST</bcp14> remove the host route to the 6LN using a DAO message
with a Path
Lifetime of 0.
</t><t> </t><t>
A valid NS(EARO) message with the R Flag set to 0 and a Registration Lifetime that is not zero signals that the 6LN wishes to maintain the binding but does n ot require the routing services from the 6LR (any more). A valid NS(EARO) message with the R flag set to 0 and a Registration Lifetime that is not zero signals that the 6LN wishes to maintain the binding but does n ot require (i.e., no longer requires) the routing services from the 6LR.
Upon this message, if, due to previous NS(EARO) with the R Flag set to 1, the Upon this message, if, due to a previous NS(EARO) with the R flag set to 1 th e
6LR was injecting the host route to the Registered Address in RPL using DAO 6LR was injecting the host route to the Registered Address in RPL using DAO
messages, then the 6LR MUST invalidate the host route in RPL using a DAO messages, then the 6LR <bcp14>MUST</bcp14> invalidate the host route in RPL u
with a Path Lifetime of zero. sing a DAO
with a Path Lifetime of 0.
It is up to the Registering 6LN to maintain the corresponding route from then It is up to the registering 6LN to maintain the corresponding route from then
on, either keeping it active via a different 6LR or by acting as a RAN and on, by either (1)&nbsp;keeping it active via a different 6LR or (2)&nbsp;acti
managing its own reachability. ng as a RAN and managing its own reachability.
</t><t> </t><t>
When forwarding a packet from the RUL into the RPL domain, if the packet does When forwarding a packet from the RUL into the RPL domain, if the packet does
not have an RPI then the 6LR MUST encapsulate the packet to the Root, and add not have an RPI, the 6LR <bcp14>MUST</bcp14> encapsulate the packet to the ro
an RPI. If there is an RPI in the packet, the 6LR MUST rewrite the RPI but it ot and add
an RPI. If there is an RPI in the packet, the 6LR <bcp14>MUST</bcp14> rewrite
the RPI, but it
does not need to encapsulate. does not need to encapsulate.
</t> </t>
</section> </section>
<section anchor='Root'><name>Perspective of the RPL Root</name> <section anchor='Root'><name>Perspective of the RPL DODAG Root</name>
<t> <t>
A RPL Root MUST set the 'P' flag to 1 in the RPL DODAG Configuration Option o f A RPL DODAG root <bcp14>MUST</bcp14> set the 'P' flag to 1 in the RPL DODAG C onfiguration option of
the DIO messages that it generates (see <xref target='upd'/>) to signal the DIO messages that it generates (see <xref target='upd'/>) to signal
that it proxies the EDAR/EDAC exchange and supports the Updated RPL Target that it proxies the EDAR/EDAC exchange and supports the updated RPL Target
option. option.
<!-- The remainder of this section assumes that it does. -->
</t><t> </t><t>
Upon reception of a DAO message, for each updated RPL Target Option Upon reception of a DAO message, for each updated RPL Target option
(see <xref target='tgt'/>) with the 'X' flag set to 1, the Root MUST notify (see <xref target='tgt'/>) with the 'X' flag set to 1, the root <bcp14>MUST</
the 6LBR by using a proxied EDAR/EDAC exchange; if the RPL Root and the 6LBR bcp14> notify
the 6LBR by using a proxied EDAR/EDAC exchange; if the RPL DODAG root and the
6LBR
are integrated, an internal API can be used instead. are integrated, an internal API can be used instead.
</t> </t>
<t> <t>
The EDAR message MUST be constructed as follows: The EDAR message <bcp14>MUST</bcp14> be constructed as follows:
</t> </t>
<ol spacing='normal'> <ol spacing='normal'>
<li> <li>
The Target IPv6 address from the RPL Target Option is placed in the The target IPv6 address from the RPL Target option is placed in the
Registered Address field of the EDAR message; Registered Address field of the EDAR message;
<!--and in the Target field of the NS message, respectively-->
</li><li> </li><li>
the Registration Lifetime is adapted from the Path Lifetime in the TIO by The Registration Lifetime is adapted from the Path Lifetime in the TIO by
converting the Lifetime Units used in RPL into units of 60 seconds used in the converting the Lifetime Units used in RPL into units of 60 seconds used in the
6LoWPAN ND messages; 6LoWPAN ND messages;
</li><li> </li><li>
<!--
the RPL Root indicates its own MAC address as Source Link Layer Address (SLLA)
in the NS(EARO);
</li><li>
-->
The TID value is set to the Path Sequence in the TIO and indicated with an ICM P The TID value is set to the Path Sequence in the TIO and indicated with an ICM P
code of 1 in the EDAR message; code of 1 in the EDAR message;
</li><li> </li><li>
The ROVR in the RPL Target Option is copied as is in the The ROVR in the RPL Target option is copied as is in the
EDAR and the ICMP Code Suffix is set to the appropriate value as shown in EDAR, and the ICMP Code Suffix is set to the appropriate value as shown in
Table 4 of <xref target='RFC8505'/> depending on the size of the ROVR field. Table 4 of <xref target='RFC8505'/>, depending on the size of the ROVR field.
</li> </li>
</ol> </ol>
<t> <t>
Upon receiving an EDAC message from the 6LBR, if a DAO is pending, then the Upon receiving an EDAC message from the 6LBR, if a DAO is pending, then the
Root MUST send a DAO-ACK back to the 6LR. Otherwise, if the Status in the EDA C message is not "Success", then it MUST send an asynchronous DCO to the 6LR. root <bcp14>MUST</bcp14> send a DAO-ACK back to the 6LR. Otherwise, if the st atus in the EDAC message is not "Success", then it <bcp14>MUST</bcp14> send an a synchronous DCO to the 6LR.
</t> </t>
<t> <t>
In either case, the EDAC Status is embedded in the RPL Status with the 'A' In either case, the EDAC Status is embedded in the RPL Status with the 'A'
flag set to 1. flag set to 1.
</t> </t>
<t> <t>
The proxied EDAR/EDAC exchange MUST be protected with a timer of an appropria The proxied EDAR/EDAC exchange <bcp14>MUST</bcp14> be protected with a timer who
te duration and a number of retries, that are implementation-dependent, and SHOU se
LD be configurable since the Root and the 6LBR are typically nodes with a higher appropriate duration and number of retries (1)&nbsp;are implementation dependent
capacity and manageability than 6LRs. and (2)&nbsp;<bcp14>SHOULD</bcp14> be configurable, since the root and the 6LBR
Upon timing out, the Root MUST send an error back to the 6LR as above, either are
using a DAO-ACK or a DCO, as appropriate, with the 'A' and 'E' flags set to 1 i typically nodes with a higher capacity and manageability than 6LRs.
n the RPL status, and a RPL Status value of of "6LBR Registry Saturated" <xref t Upon timing out, the root <bcp14>MUST</bcp14> send an error back to the 6LR a
arget='RFC8505'/>. s above, using either a DAO-ACK or a DCO, as appropriate, with the 'A' and 'U' f
lags set to 1 in the RPL Status, and a RPL Status value of "6LBR Registry Satura
ted" <xref target='RFC8505'/>.
</t> </t>
</section> </section>
<section anchor='lbr'><name>Perspective of the 6LBR</name> <section anchor='lbr'><name>Perspective of the 6LBR</name>
<t> <t>
The 6LBR is unaware that the RPL Root is not the new attachment 6LR of the RUL , The 6LBR is unaware that the RPL DODAG root is not the new attachment 6LR of t he RUL,
so it is not impacted by this specification. so it is not impacted by this specification.
</t> </t>
<t> <t>
Upon reception of an EDAR message, Upon reception of an EDAR message,
the 6LBR acts as prescribed by <xref target='RFC8505'/> and returns an EDAC m essage to the sender. the 6LBR behaves as prescribed by <xref target='RFC8505'/> and returns an EDA C message to the sender.
</t> </t>
</section> </section>
</section> </section>
</section> </section>
<section anchor='multiop'><name>Protocol Operations for Multicast Addresses</nam e> <section anchor='multiop'><name>Protocol Operations for Multicast Addresses</nam e>
<t> Section 12 of <xref target='RFC6550'/> details the RPL support for <t><xref target="RFC6550" sectionFormat="of" section="12"/> details RPL support
multicast flows. This support is activated by the MOP of 3 ("Storing Mode of for
Operation with multicast support") in the DIO messages that form the DODAG. Thi multicast flows. This support is activated by setting the MOP value to 3 ("S
s section also applies if and only if the MOP of the RPLInstance is 3. toring Mode of Operation with multicast support") in the DIO messages that form
the DODAG. This section also applies if and only if the MOP of the RPL Instance
is 3.
</t> </t>
<t> <t>
The RPL support of multicast is not source-specific and only operates as RPL support for multicast is not source specific and only operates as
an extension to the Storing Mode of Operation for unicast packets. an extension to the Storing mode of operation for unicast packets.
Note that Note that
it is the RPL model that the multicast packet is passed as a Layer-2 unicast it is the RPL model that the multicast packet is copied and transmitted as a
to each of the interested children. Layer 2 unicast
This remains true when forwarding between the 6LR and the listener 6LN. to each of the interested children. This remains true when forwarding betwe
en the 6LR and the listener 6LN.
</t> </t>
<t> <t>
<xref target='RFC3810'> "<xref target="RFC3810" format="title"/>" <xref target="RFC3810" format="def
"Multicast Listener Discovery Version 2 (MLDv2) for IPv6"</xref> provides an ault"/>
interface for a listener to register to multicast flows. provides an interface for a listener to register with multicast flows.
In the MLD model, the router is a "querier", and the host is a multicast In the MLD model, the router is a "querier", and the host is a multicast
listener that registers to the querier to obtain copies of the particular listener that registers with the querier to obtain copies of the particular
flows it is interested in. flows it is interested in.
</t><t> </t><t>
The equivalent of the first Address Registration happens as illustrated in The equivalent of the first Address Registration happens as illustrated in
<xref target='fReg3'/>. The 6LN, as an MLD listener, sends an unsolicited Report <xref target='fReg3'/>. The 6LN, as an MLD listener, sends an unsolicited Report
to the 6LR. This enables it to start receiving the flow immediately, and causes to the 6LR. This enables it to start receiving the flow immediately and causes
the 6LR to inject the multicast route in RPL. the 6LR to inject the multicast route in RPL.
</t> </t>
<t> This specification does not change MLD but will operate more efficiently
if the asynchronous messages for unsolicited Report and Done are sent by
the 6LN as Layer-2 unicast to the 6LR, in particular on wireless.
</t><t>
The 6LR acts as a generic MLD querier and generates a DAO with the Multicas
t Address as the Target Prefix as described in section 12 of <xref target='RFC65
50'/>. As for the Unicast host routes, the Path Lifetime associated to the Targe
t is mapped from the Query Interval, and set to be larger to account for variabl
e propagation delays to the Root.
The Root proxies the MLD exchange as a listener with the 6LBR acting as the
querier, so as to get packets from a source external to the RPL domain.
</t><t>
Upon a DAO with a Target option for a multicast address, the RPL Root check
s if it is already registered as a listener for that address, and if not, it per
forms its own unsolicited Report for the multicast address as described in secti
on 5.1 of <xref target='RFC3810'/>.
The report is source independent, so there is no Source Address listed.
</t>
<figure anchor='fReg3' suppress-title='false'><name>First Multicast Registratio n Flow</name> <figure anchor='fReg3' suppress-title='false'><name>First Multicast Registratio n Flow</name>
<artwork><![CDATA[ <artwork><![CDATA[
6LN/RUL 6LR Root 6LBR 6LN/RUL 6LR Root 6LBR
| | | | | | | |
| unsolicited Report | | | | unsolicited Report | | |
|------------------->| | | |------------------->| | |
| | DAO | | | | DAO | |
| |-------------->| | | |-------------->| |
| | DAO-ACK | | | | DAO-ACK | |
| |<--------------| | | |<--------------| |
| | | <if not done already> | | | | <if not done already> |
| | | unsolicited Report | | | | unsolicited Report |
| | |---------------------->| | | |---------------------->|
| | | | | | | |]]></artwork
]]></artwork> >
</figure> </figure>
<t>
The equivalent of the registration refresh is pulled periodically by the 6LR
acting as querier.
Upon the timing out of the Query Interval, the 6LR sends a Multicast Address <t> This specification does not change MLD but will operate more efficiently
Specific Query to each of its listeners, for each Multicast Address, and gets a if the asynchronous messages for unsolicited Report and Done are sent by
Report back that is mapped into a DAO one by one. the 6LN as Layer 2 unicast to the 6LR, particularly on wireless.
Optionally, the 6LR MAY send a General Query, where the Multicast Address fi </t><t>
eld is set to zero. In that case, the multicast packet is passed as a Layer-2 un The 6LR acts as a generic MLD querier and generates a DAO with the multicas
icast to each of the interested children. t address as the Target Prefix as described in <xref target="RFC6550" sectionFor
. mat="of" section="12"/>. As for the unicast host routes, the Path Lifetime assoc
iated to the Target is mapped from the Query Interval and is set to be larger, t
o account for variable propagation delays to the root.
The root proxies the MLD exchange as a listener with the 6LBR acting as the
querier, so as to get packets from a source external to the RPL domain.
</t><t>
Upon a DAO with a Target option for a multicast address, the RPL DODAG root
checks to see if it is already registered as a listener for that address, and i
f not, it performs its own unsolicited Report for the multicast address as descr
ibed in <xref target="RFC3810" sectionFormat="of" section="6.1"/>. The Report i
s source independent, so there is no source address listed.
</t> </t>
<t> <t>
Upon a Report, the 6LR generates a DAO with as many Target Options as there The equivalent of the registration refresh is pulled periodically by the 6LR
are Multicast Address Records in the Report message, copying the acting as the querier. Upon the timing out of the Query Interval, the 6LR sends
Multicast Address field in the Target Prefix of the RPL Target Option. a Multicast Address Specific Query to each of its listeners, for each multicast
The DAO message is a Storing Mode DAO, passed to a selection of the 6LR's address. The listeners respond with a Report. Based on the Reports, the 6LR mai
ntains the aggregated list of all the multicast addresses for which there is a l
istener and advertises them using DAO messages as specified in <xref target="RFC
6550" sectionFormat="of" section="12"/>. Optionally, the 6LR <bcp14>MAY</bcp14>
send a General Query, where the Multicast Address field is set to 0. In that cas
e, the multicast packet is passed as a Layer 2 unicast to each of the interested
children.
</t>
<t>
Upon a Report, the 6LR generates a DAO with as many Target options as there
are Multicast Address Records in the Report message, copying the
Multicast Address field in the Target Prefix of the RPL Target option.
The DAO message is a Storing mode DAO, passed to a selection of the 6LR's
parents. parents.
</t> </t>
<t> <t>
Asynchronously to this, a similar procedure happens between the Root and a r outer such as the 6LBR that serves multicast flows on the Link where the Root is located. Again the Query and Report messages are source independent. The Root l ists exactly once each Multicast Address for which it has at least one active mu lticast DAO state, copying the multicast address in the DAO state in the Multica st Address field of the Asynchronously to this, a similar procedure happens between the root and a r outer, such as the 6LBR, that serves multicast flows on the link where the root is located. Again, the Query and Report messages are source independent. The roo t lists exactly once each multicast address for which it has at least one active multicast DAO state, copying the multicast address in the DAO state in the Mult icast Address field of the
Multicast Address Records in the Report message. Multicast Address Records in the Report message.
</t> </t>
<t> <t>
This is illustrated in <xref target='fReg4'/>: This is illustrated in <xref target='fReg4'/>:
</t> </t>
<figure anchor='fReg4' suppress-title='false'><name>Next Registration Flow</nam e> <figure anchor='fReg4' suppress-title='false'><name>Next Registration Flow</nam e>
<artwork><![CDATA[ <artwork><![CDATA[
6LN/RUL 6LR Root 6LBR 6LN/RUL 6LR Root 6LBR
skipping to change at line 1645 skipping to change at line 1543
| Report | | | | Report | | |
|------------------->| | | |------------------->| | |
| | DAO | | | | DAO | |
| |-------------->| | | |-------------->| |
| | DAO-ACK | | | | DAO-ACK | |
| |<--------------| | | |<--------------| |
| | | Query | | | | Query |
| | |<-------------------| | | |<-------------------|
| | | Report | | | | Report |
| | |------------------->| | | |------------------->|
| | | | | | | |]]></artwork>
]]></artwork>
</figure> </figure>
<t>Note that any of the functions 6LR, Root and 6LBR might be collapsed in a <t>Note that all or any combination of the 6LR, the root, and the 6LBR might be
single node, in which case the flow above happens internally, and possibly collapsed in a single node, in which case the flow above happens internally, and
possibly
through internal API calls as opposed to messaging. through internal API calls as opposed to messaging.
</t> </t>
</section> </section>
<section anchor='security-considerations'><name>Security Considerations</name> <section anchor='security-considerations'><name>Security Considerations</name>
<t> <t>
It is worth noting that with <xref target='RFC6550'/>, every It is worth noting that with <xref target='RFC6550'/>, every
node in the LLN is RPL-aware and can inject any RPL-based attack in the node in the LLN is RPL aware and can inject any RPL-based attack in the
network. This specification improves the situation by isolating edge nodes network. This specification improves this situation by isolating edge nodes
that can only interact with the RPL routers using 6LoWPAN ND, meaning that t hey cannot perform RPL insider attacks. that can only interact with the RPL routers using 6LoWPAN ND, meaning that t hey cannot perform RPL insider attacks.
</t> </t>
<t> <t>
The LLN nodes depend on the 6LBR and the RPL participants for their The LLN nodes depend on the 6LBR and the RPL participants for their
operation. operation.
A trust model must be put in place to ensure that the right devices are A trust model must be put in place to ensure that the right devices are
acting in these roles, so as to avoid threats such as black-holing, acting in these roles, so as to avoid such threats as black-holing
(see <xref target='RFC7416'/> section 7), (see <xref target="RFC7416" sectionFormat="of" section="7"/>),
Denial-Of-Service attacks whereby a rogue 6LR creates a high churn in the RP DoS attacks whereby a rogue 6LR creates a high churn in the RPL network by a
L network by advertising and removing many forged addresses, dvertising and removing many forged addresses,
or bombing attack whereby an impersonated 6LBR would destroy state in or a bombing attack whereby an impersonated 6LBR would destroy state in
the network by using the status code of 4 ("Removed"). the network by using a status code of 4 ("Removed") <xref target="RFC850
5"/>.
</t><t> </t><t>
This trust model could be This trust model could be,
at a minimum based on a Layer-2 Secure joining and the Link-Layer security. at a minimum, based on Layer 2 secure joining and link-layer security.
This is a generic 6LoWPAN requirement, see Req5.1 in Appendix B.5 of <xref t This is a generic 6LoWPAN requirement; see Req-5.1 in
arget='RFC8505'/>. <xref target="RFC8505" format="default" section="B.5" sectionFormat="of"
derivedLink="https://rfc-editor.org/rfc/rfc8505#appendix-B.5"
derivedContent="RFC8505"/>.
</t><t> </t><t>
In a general manner, the Security Considerations in <xref target='RFC6550'/> In a general manner, the Security Considerations sections of <xref target='R
, FC6550'/>,
<xref target='RFC7416'/> <xref target='RFC6775'/>, and <xref target='RFC8505 <xref target='RFC7416'/>, <xref target='RFC6775'/>, and <xref target='RFC850
'/> apply to this specification as well. 5'/> apply to this specification as well.
</t><t> </t><t>
The Link-Layer security is needed in particular to prevent In particular, link-layer security is needed to prevent
Denial-Of-Service attacks whereby a rogue 6LN creates a high churn in the DoS attacks whereby a rogue 6LN creates a high churn in the
RPL network by constantly registering and deregistering addresses with the RPL network by constantly registering and deregistering addresses with the
R Flag set to 1 in the EARO. R flag set to 1 in the EARO.
</t> <t> </t> <t>
<xref target='RFC8928'/> updated 6LoWPAN ND with the called Address-Protected <xref target='RFC8928'/> updated 6LoWPAN ND with AP-ND. AP-ND protects the ow
Neighbor Discovery (AP-ND). AP-ND protects the owner of an address against addr ner of an address against address theft and impersonation attacks in an LLN. Nod
ess theft and impersonation attacks in a Low-Power and Lossy Network (LLN). Node es supporting the extension compute a cryptographic identifier (Crypto-ID) and u
s supporting the extension compute a cryptographic identifier (Crypto-ID), and u se it with one or more of their Registered Addresses. The Crypto-ID identifies t
se it with one or more of their Registered Addresses. The Crypto-ID identifies t he owner of the Registered Address and can be used to provide proof of ownership
he owner of the Registered Address and can be used to provide proof of ownership of the Registered Addresses. Once an address is registered with the Crypto&nbhy
of the Registered Addresses. Once an address is registered with the Crypto-ID a ;ID and proof of ownership is provided, only the owner of that address can modif
nd a proof of ownership is provided, only the owner of that address can modify t y the registration information, thereby enforcing SAVI.
he registration information, thereby enforcing Source Address Validation. <xref target='RFC8928'/> reduces even further
<xref target='RFC8928'/> the attack perimeter that is available to the edge nodes,
reduces even more the attack perimeter that is available to the edge nodes
and its use is suggested in this specification. and its use is suggested in this specification.
</t><t> </t><t>
Additionally, the trust model could include a role validation (e.g., using a Additionally, the trust model could include role validation (e.g., using
role-based authorization) to ensure that the node that role-based authorization) to ensure that the node that
claims to be a 6LBR or a RPL Root is entitled to do so. claims to be a 6LBR or a RPL DODAG root is entitled to do so.
</t><t> </t><t>
The Opaque field in the EARO enables the RUL to suggest a RPLInstanceID The Opaque field in the EARO enables the RUL to suggest a RPLInstanceID
where its traffic is placed. It is also possible for an attacker RUL to where its traffic is placed. It is also possible for an attacker RUL to
include an RPI in the packet. This opens to attacks where a RPL instance include an RPI in the packet. This opens the door to attacks where a RPL Ins tance
would be reserved for critical traffic, e.g., with a specific bandwidth would be reserved for critical traffic, e.g., with a specific bandwidth
reservation, that the additional traffic generated by a rogue may disrupt. reservation, that the additional traffic generated by a rogue may disrupt.
The attack may be alleviated by traditional access control and traffic The attack may be alleviated by traditional access control and traffic-shapi
shaping mechanisms where the 6LR controls the incoming traffic from the ng mechanisms where the 6LR controls the incoming traffic from the
6LN. More importantly, the 6LR is the node that injects the traffic in the 6LN. More importantly, the 6LR is the node that injects the traffic in the
RPL domain, so it has the final word on which RPLInstance is to be used RPL domain, so it has the final word on which RPL Instance is to be used
for the traffic coming from the RUL, per its own policy. In particular, a for the traffic coming from the RUL, per its own policy. In particular, a
policy can override the formal language that forces to use the Opaque field policy can override the formal language that forces the use of the Opaque fi
or to rewrite the RPI provided by the RUL, in a situation where the eld
or the rewriting of the RPI provided by the RUL, in a situation where the
network administrator finds it relevant. network administrator finds it relevant.
</t><t> </t><t>
At the time of this writing, RPL does not have a Route Ownership Validation At the time of this writing, RPL does not have a route ownership validation
model whereby it is possible to validate the origin of an address that is model whereby it is possible to validate the origin of an address that is
injected in a DAO. injected in a DAO.
This specification makes a first step in that direction by This specification makes a first step in that direction by
allowing the Root to challenge the RUL via the 6LR that serves it. allowing the root to challenge the RUL via the 6LR that serves it.
</t><t> </t><t>
<xref target='tgt'/> indicates that when the length of the ROVR field is unkn <xref target='tgt'/> indicates that when the length of the ROVR field is unkn
own, the RPL Target Option must be passed on as received in RPL storing Mode. Th own, the RPL Target option must be passed on as received in RPL Storing mode. Th
is creates a possible opening for using DAO messages as a is creates a possible opening for using DAO messages as a
covert channel. Note that DAO messages are rare and overusing that channel co covert channel. Note that DAO messages are rare, and overusing that channel c
uld be detected. An implementation SHOULD notify the network ould be detected. An implementation <bcp14>SHOULD</bcp14> notify the network
management when a RPL Target Option is receives with an unknown ROVR field si management system when a RPL Target option is received with an unknown ROVR f
ze, to ensure that the situation is known to the network administrator. ield size, to ensure that the network administrator is aware of the situation.
</t><t> </t><t>
<xref target='I-D.ietf-roll-efficient-npdao'/> introduces the ability for <xref target='RFC9009'/> introduces the ability for
a rogue common ancestor node to invalidate a route on behalf of the target a rogue common ancestor node to invalidate a route on behalf of the target
node. In this case, the RPL Status in the DCO has the 'A' flag set to 0, an d a NA(EARO) is returned to the 6LN with the R flag set to 0. This encourages th e 6LN to try another 6LR. If a 6LR exists that does not use node. In this case, the RPL Status in the DCO has the 'A' flag set to 0, an d an NA(EARO) is returned to the 6LN with the R flag set to 0. This encourages t he 6LN to try another 6LR. If a 6LR exists that does not use
the rogue common ancestor, then the 6LN will eventually succeed gaining the rogue common ancestor, then the 6LN will eventually succeed gaining
reachability over the RPL network in spite of the rogue node. reachability over the RPL network in spite of the rogue node.
</t> </t>
</section> </section>
<section anchor='iana-considerations'><name>IANA Considerations</name> <section anchor='iana-considerations'><name>IANA Considerations</name>
<section anchor='iana-arof'><name>Fixing the Address Registration Option Flags</ name> <section anchor='iana-arof'><name>Fixing the Address Registration Option Flags</ name>
<t>Section 9.1 of <xref target='RFC8505'/> creates a Registry for the 8-bit <t><xref target="RFC8505" sectionFormat="of" section="9.1"/> created a registry for the 8-bit
Address Registration Option Flags field. Address Registration Option Flags field.
IANA is requested to rename the first column of the table from "ARO Status" to "Bit number". IANA has renamed the first column of the table from "ARO Status" to "Bit Num ber".
</t> </t>
</section> <!-- Fixing the Address Registration Option Flags --> </section>
<section anchor="iana-aro"><name>Resizing the ARO Status values</name> <section anchor="iana-aro"><name>Resizing the ARO Status Values</name>
<t> Section 12 of <xref target='RFC6775'/> creates the <t><xref target="RFC6775" sectionFormat="of" section="12"/> created the
Address Registration Option Status values Registry with a range 0-255. "Address Registration Option Status Values" registry with a range of 0-255.
</t> </t>
<t> <t>
This specification reduces that range to 0-63, see <xref target='stat'/>. This specification reduces that range to 0-63; see <xref target='stat'/>.
</t> </t>
<t> <t>
IANA is requested to modify the Address Registration Option Status values IANA has modified the "Address Registration Option Status Values"
Registry so that the upper bound of the unassigned values is 63. This registry so that the upper bound of the unassigned values is 63. This
document should be added as a reference. The registration procedure does document has been added as a reference. The registration procedure has
not change. not changed.
</t> </t>
</section> <!-- end section "New ARO Status values" --> </section>
<section anchor="iana-conf"><name>New RPL DODAG Configuration Option Flag</na me> <section anchor="iana-conf"><name>New RPL DODAG Configuration Option Flag</na me>
<t> <t>
IANA is requested to assign a flag from the "DODAG Configuration Option IANA has assigned the following flag in the "DODAG Configuration Option
Flags for MOP 0..6" <xref target='I-D.ietf-roll-useofrplinfo'/> registry as Flags for MOP 0..6" registry <xref target='RFC9008'/>:
follows:
</t> </t>
<table anchor="nexndopt"><name>New DODAG Configuration Option Flag</name> <table anchor="nexndopt"><name>New DODAG Configuration Option Flag</name>
<thead> <thead>
<tr><td>Bit Number</td><td>Capability Description</td><td>Reference</td></ tr> <tr><td>Bit Number</td><td>Capability Description</td><td>Reference</td></ tr>
</thead><tbody> </thead><tbody>
<tr><td>1 (suggested)</td><td>Root Proxies EDAR/EDAC (P)</td><td>THIS RFC< /td></tr> <tr><td>1</td><td>Root Proxies EDAR/EDAC (P)</td><td>RFC 9010</td></tr>
</tbody> </tbody>
</table> </table>
<t>IANA is requested to add [this document] as a reference for MOP 7 in the RPL <t>IANA has added this document as a reference for MOP 7 in the RPL
Mode of Operation registry. "Mode of Operation" registry.
</t> </t>
</section><!-- New RPL DODAG Configuration Option Flag --> </section>
<section anchor="iana-full"><name>RPL Target Option Registry</name> <section anchor="iana-full"><name>RPL Target Option Flags Registry</name>
<t> <t>
This document modifies the "RPL Target Option Flags" registry initially This document modifies the "RPL Target Option Flags" registry initially
created in Section 20.15 of <xref target='RFC6550'/> . The registry now created per <xref target="RFC6550" sectionFormat="of" section="20.15"/>. The
includes only 4 bits (<xref target='tgt'/>) and should point to this registry now
document as an additional reference. The registration procedure does not includes only 4 bits (<xref target='tgt'/>) and lists this
change. document as an additional reference. The registration procedure has not
changed.
</t><t> </t><t>
<xref target='tgt'/> also defines 2 new entries in the Registry as follows: <xref target='tgt'/> also defines two new entries in the registry, as follows:
</t> </t>
<table anchor="ianatarget"><name>RPL Target Option Registry</name> <table anchor="ianatarget"><name>RPL Target Option Flags Registry</name>
<thead> <thead>
<tr><td>Bit Number</td><td>Capability Description</td><td>Reference</td></ tr> <tr><td>Bit Number</td><td>Capability Description</td><td>Reference</td></ tr>
</thead><tbody> </thead><tbody>
<tr><td>0 (suggested)</td><td>Advertiser address in Full (F)</td><td>THIS <tr><td>0</td><td>Advertiser address in Full (F)</td><td>RFC 9010</td></tr
RFC</td></tr> >
<tr><td>1 (suggested)</td><td>Proxy EDAR Requested (X)</td><td>THIS RFC</t <tr><td>1</td><td>Proxy EDAR Requested (X)</td><td>RFC 9010</td></tr>
d></tr>
</tbody> </tbody>
</table> </table>
</section> </section>
<section anchor='iana-stats-nonrej'><name>New Subregistry for RPL Non-Rejection Status values </name> <section anchor='iana-stats-nonrej'><name>New Subregistry for RPL Non-Rejection Status Values</name>
<t> <t>
This specification creates a new Subregistry for the RPL Non-Rejection St atus values for use in the RPL DAO-ACK, DCO, and DCO-ACK messages with the 'A' f lag set to 0, under the RPL registry. IANA has created a new subregistry for the RPL Non-Rejection Status valu es for use in the RPL DAO-ACK, DCO, and DCO-ACK messages with the 'A' flag set t o 0 and the 'U' flag set to 1, under the "Routing Protocol for Low Power and Los sy Networks (RPL)" registry.
</t> </t>
<ul spacing='normal'> <ul spacing='normal'>
<li> Possible values are 6-bit unsigned integers (0..63).</li> <li>Possible values are 6-bit unsigned integers (0..63).</li>
<li> Registration procedure is "IETF Review" <xref target='RFC8126'/>.</li> <li>The registration procedure is IETF Review <xref target='RFC8126'/>.</li>
<li> Initial allocation is as indicated in <xref target='iana-ACK-Status'/>:</ <li>The initial allocation is as indicated in <xref target='iana-ACK-Status'/>
li> :</li>
</ul> </ul>
<table anchor='iana-ACK-Status'><name>Acceptance values of the RPL Status</na me> <table anchor='iana-ACK-Status'><name>Acceptance Values of the RPL Status</na me>
<thead> <thead>
<tr><td>Value</td><td>Meaning</td><td>Reference</td></tr> <tr><td>Value</td><td>Meaning</td><td>Reference</td></tr>
</thead><tbody> </thead><tbody>
<tr><td>0</td><td>Unqualified acceptance</td><td>THIS RFC / RFC 6550 </td> <tr><td>0</td><td>Success / Unqualified acceptance</td><td>RFC 6550 / RFC
</tr> 9010</td></tr>
<!--
<tr><td>1</td><td> No routing-entry for the indicated Target found</td><td
><xref target='I-D.ietf-roll-efficient-npdao'/></td></tr>
-->
<tr><td>1..63</td><td>Unassigned</td><td></td></tr> <tr><td>1..63</td><td>Unassigned</td><td></td></tr>
</tbody> </tbody>
</table> </table>
</section> <!-- New Subregistry for RPL Non-Rejection Status values --> </section>
<section anchor='iana-stats-rej'><name>New Subregistry for RPL Rejection Status values </name> <section anchor='iana-stats-rej'><name>New Subregistry for RPL Rejection Status Values</name>
<t> <t>
This specification creates a new Subregistry for the RPL Rejection Status values for use in the RPL DAO-ACK and DCO messages with the 'A' flag set to 0, under the RPL registry. IANA has created a new subregistry for the RPL Rejection Status values f or use in the RPL DAO-ACK and DCO messages with the 'A' flag set to 0 and the 'U ' flag set to 1, under the "Routing Protocol for Low Power and Lossy Networks (R PL)" registry.
</t><ul spacing='normal'> </t><ul spacing='normal'>
<li> Possible values are 6-bit unsigned integers (0..63).</li> <li>Possible values are 6-bit unsigned integers (0..63).</li>
<li> Registration procedure is "IETF Review" <xref target='RFC8126'/>.</li> <li>The registration procedure is IETF Review <xref target='RFC8126'/>.</li>
<li> Initial allocation is as indicated in <xref target='iana-nack-Status'/>:< <li>The initial allocation is as indicated in <xref target='iana-nack-Status'/
/li> >:</li>
</ul> </ul>
<table anchor='iana-nack-Status'><name>Rejection values of the RPL Status </n ame> <table anchor='iana-nack-Status'><name>Rejection Values of the RPL Status</na me>
<thead> <thead>
<tr><td>Value</td><td>Meaning</td><td>Reference</td></tr> <tr><td>Value</td><td>Meaning</td><td>Reference</td></tr>
</thead><tbody> </thead><tbody>
<tr><td>0</td><td>Unqualified rejection</td><td>THIS RFC</td></tr> <tr><td>0</td><td>Unqualified rejection</td><td>RFC 9010</td></tr>
<tr><td>1 (suggested in <xref target='I-D.ietf-roll-efficient-npdao'/>)</t <tr><td>1</td><td>No routing entry</td><td>RFC 9009</td></tr>
d><td>No routing entry</td><td><xref target='I-D.ietf-roll-efficient-npdao'/></t
d></tr>
<tr><td>2..63</td><td>Unassigned</td><td></td></tr> <tr><td>2..63</td><td>Unassigned</td><td></td></tr>
</tbody> </tbody>
</table> </table>
</section> <!-- Subregistry for RPL Rejection Status values -->
</section> </section>
<section anchor='Acks'><name>Acknowledgments</name>
<t>
The authors wish to thank Ines Robles, Georgios Papadopoulos and
especially Rahul Jadhav and Alvaro Retana
for their reviews and contributions to this document.
Also many thanks to Eric Vyncke, Erik Kline, Murray Kucherawy,
Peter Van der Stok, Carl Wallace, Barry Leiba, Julien Meuric,
and especially Benjamin Kaduk and Elwyn Davies,
for their reviews and useful comments
during the IETF Last Call and the IESG review sessions.
</t>
</section> </section>
</middle> </middle>
<back> <back>
<!-- <references>
<displayreference target="RFC8928" to="AP-ND"/> <name>References</name>
<displayreference target="RFC8929" to="6BBR"/> <references>
<displayreference target="I-D.ietf-roll-useofrplinfo" <name>Normative References</name>
to="USEofRPLinfo"/> <xi:include href='https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.211
<displayreference target="I-D.ietf-roll-efficient-npdao" to="E 9.xml'/>
FFICIENT-NPDAO"/> <xi:include href='https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.381
0.xml'/>
<references><name>Normative References</name> <xi:include href='https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.486
<xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refe 1.xml'/>
rence.RFC.2119.xml'/> <xi:include href='https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.655
0.xml'/>
<xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refe <xi:include href='https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.677
rence.RFC.3810.xml'/> 5.xml'/>
<xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refe <xi:include href='https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.710
rence.RFC.4861.xml'/> 2.xml'/>
<xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refe <xi:include href='https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.740
rence.RFC.6550.xml'/> 0.xml'/>
<xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refe <xi:include href='https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.812
rence.RFC.6775.xml'/> 6.xml'/>
<xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference <xi:include href='https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.817
.RFC.7102.xml'/> 4.xml'/>
<xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.R <xi:include href='https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.820
FC.7400.xml'/> 0.xml'/>
<xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference. <xi:include href='https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.850
RFC.8126.xml'/> 4.xml'/>
<xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference. <xi:include href='https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.850
RFC.8174.xml'/> 5.xml'/>
<xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference. <xi:include href='https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.892
RFC.8200.xml'/> 8.xml'/>
<xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference. <!-- draft-ietf-roll-useofrplinfo (RFC 9008) -->
RFC.8504.xml'/> <reference anchor='RFC9008' target="https://www.rfc-editor.org/info/rfc9008">
<xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference. <front>
RFC.8505.xml'/> <title>Using RPI Option Type, Routing Header for Source Routes, and IPv6-in-IPv6
<xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference. Encapsulation in the RPL Data Plane</title>
RFC.8928.xml'/> <author initials='M.I.' surname='Robles' fullname='Ines Robles'>
<organization />
</author>
<author initials='M' surname='Richardson' fullname='Michael Richardson'>
<organization />
</author>
<author initials='P' surname='Thubert' fullname='Pascal Thubert'>
<organization />
</author>
<date month='April' year='2021'/>
</front>
<seriesInfo name="RFC" value="9008"/>
<seriesInfo name="DOI" value="10.17487/RFC9008"/>
</reference>
<xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I- <!-- draft-ietf-roll-efficient-npdao (RFC 9009) -->
D.ietf-roll-useofrplinfo.xml'/> <reference anchor='RFC9009' target="https://www.rfc-editor.org/info/rfc9009">
<xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference <front>
.I-D.ietf-roll-efficient-npdao.xml'/> <title>Efficient Route Invalidation</title>
<author initials='R' surname='Jadhav' fullname='Rahul Jadhav' role="editor">
<organization />
</author>
<author initials='P' surname='Thubert' fullname='Pascal Thubert'>
<organization />
</author>
<author initials='R' surname='Sahoo' fullname='Rabi Sahoo'>
<organization />
</author>
<author initials='Z' surname='Cao' fullname='Zhen Cao'>
<organization />
</author>
<date month='April' year='2021'/>
</front>
<seriesInfo name="RFC" value="9009"/>
<seriesInfo name="DOI" value="10.17487/RFC9009"/>
</reference>
</references> </references>
<references><name>Informative References</name> <references><name>Informative References</name>
<xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refe <xi:include href='https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.491
rence.RFC.4919.xml'/> 9.xml'/>
<xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refe <xi:include href='https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.486
rence.RFC.4862.xml'/> 2.xml'/>
<xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refe <xi:include href='https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.655
rence.RFC.6553.xml'/> 3.xml'/>
<xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refe <xi:include href='https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.655
rence.RFC.6554.xml'/> 4.xml'/>
<xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refe <xi:include href='https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.660
rence.RFC.6606.xml'/> <xi:include href='https://xml2rfc.tools.ietf.org/public 6.xml'/>
/rfc/bibxml/reference.RFC.7039.xml'/> <xi:include href='https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.703
<xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/ref 9.xml'/>
erence.RFC.7228.xml'/> <xi:include href='https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.722
<xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/ref 8.xml'/>
erence.RFC.8138.xml'/> <xi:include href='https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.813
<xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.R 8.xml'/>
FC.8415.xml'/> <xi:include href='https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.841
<xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refe 5.xml'/>
rence.RFC.6282.xml'/> <xi:include href='https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.628
<xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refe 2.xml'/>
rence.RFC.6687.xml'/> <xi:include href='https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.668
<xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen 7.xml'/>
ce.RFC.7416.xml'/> <xi:include href='https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.741
<xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refe 6.xml'/>
rence.RFC.8025.xml'/> <xi:include href='https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.802
<xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen 5.xml'/>
ce.RFC.8929.xml'/> <xi:include href='https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.892
9.xml'/>
</references>
</references> </references>
<section anchor='u8138'><name>Example Compression</name> <section anchor='u8138'><name>Example Compression</name>
<t> <t>
<xref target='rtghc'/> illustrates the case in Storing Mode where the packet <xref target='rtghc'/> illustrates the case in Storing mode where the packet
is received from the Internet, then the Root encapsulates the packet to is received from the Internet, then the root encapsulates the packet to
insert the RPI and deliver to the 6LR that is the parent and last hop to the insert the RPI and deliver it to the 6LR that is the parent and last hop to
the
final destination, which is not known to support <xref target='RFC8138'/>. final destination, which is not known to support <xref target='RFC8138'/>.
</t> </t>
<figure anchor='rtghc'><name>Encapsulation to Parent 6LR in Storing Mode</n ame> <figure anchor='rtghc'><name>Encapsulation to Parent 6LR in Storing Mode</n ame>
<artwork> <artwork>
<![CDATA[ <![CDATA[
+-+ ... -+-+ ... +-+- ... -+-+ ... -+-+-+ ... +-+-+ ... -+ ... +-... +-+ ... -+-+ ... +-+- ... -+-+ ... -+-+-+ ... +-+-+ ... -+ ... +-...
|11110001|SRH-6LoRH| RPI- |IP-in-IP| NH=1 |11110CPP| UDP | UDP |11110001|SRH-6LoRH| RPI- |IP-in-IP| NH=1 |11110CPP| UDP | UDP
|Page 1 |Type1 S=0| 6LoRH | 6LoRH |LOWPAN_IPHC| UDP | hdr |Payld |Page 1 |Type1 S=0| 6LoRH | 6LoRH |LOWPAN_IPHC| UDP | hdr |Payld
+-+ ... -+-+ ... +-+- ... -+-+ ... -+-+-+ ... +-+-+ ... -+ ... +-... +-+ ... -+-+ ... +-+- ... -+-+ ... -+-+-+ ... +-+-+ ... -+ ... +-...
<-4 bytes-> <- RFC 6282 -> <-4 bytes-> <- RFC 6282 ->
<- No RPL artifact ... <- No RPL artifact ...]]></artwork></fig
]]></artwork></figure> ure>
<t> <t>
The difference with the example presented in Figure 19 of The difference from the example presented in Figure 19 of
<xref target='RFC8138'/> is the addition of a SRH-6LoRH before the RPI-6LoRH <xref target='RFC8138'/> is the addition of an SRH-6LoRH before the RPI-6LoR
H
to transport the compressed address of the 6LR as the destination address of to transport the compressed address of the 6LR as the destination address of
the outer IPv6 header. In the <xref target='RFC8138'/> example the destinati on IP of the the outer IPv6 header. In Figure 19 of <xref target='RFC8138'/>, the destina tion IP of the
outer header was elided and was implicitly the same address as the outer header was elided and was implicitly the same address as the
destination of the inner header. destination of the inner header.
Type 1 was arbitrarily chosen, and the size of 0 denotes a single address in Type 1 was arbitrarily chosen, and the size of 0 denotes a single address in
the SRH. the SRH.
</t> </t>
<t> <t>
In <xref target='rtghc'/>, the source of the IPv6-in-IPv6 encapsulation is In <xref target='rtghc'/>, the source of the IPv6-in-IPv6 encapsulation is
the Root, so it is elided in the IPv6-in-IPv6 6LoRH. The destination i the root, so it is elided in the IPv6-in-IPv6 6LoRH. The destination i
s s
the parent 6LR of the destination of the encapsulated packet so it the parent 6LR of the destination of the encapsulated packet, so it
cannot be elided. If the DODAG is operated in Storing Mode, it is the cannot be elided. If the DODAG is operated in Storing mode, it is the
single entry in the SRH-6LoRH and the SRH-6LoRH Size is encoded as 0. single entry in the SRH-6LoRH and the SRH-6LoRH Size is encoded as 0.
The SRH-6LoRH is the first 6LoRH in the chain. The SRH-6LoRH is the first 6LoRH in the chain.
In this particular example, the 6LR address can In this particular example, the 6LR address can
be compressed to 2 bytes so a Type of 1 is used. be compressed to 2 bytes, so a Type of 1 is used.
It results that the total length of the SRH-6LoRH is 4 bytes. The result is that the total length of the SRH-6LoRH is 4 bytes.
</t> </t>
<t> <t>
In Non-Storing Mode, the encapsulation from the Root would be similar In Non-Storing mode, the encapsulation from the root would be similar
to that represented in <xref target='rtghc'/> with possibly more hops to that represented in <xref target='rtghc'/> with possibly more hops
in the SRH-6LoRH and possibly multiple SRH-6LoRHs if the various in the SRH&nbhy;6LoRH and possibly multiple SRH-6LoRHs if the various
addresses in the routing header are not compressed to the same format. addresses in the routing header are not compressed to the same format.
Note that on the last hop to the parent 6LR, the RH3 is consumed and Note that on the last hop to the parent 6LR, the RH3 is consumed and
removed from the compressed form, so the use of Non-Storing Mode vs. removed from the compressed form, so the use of Non-Storing mode vs.&n
Storing Mode is indistinguishable from the packet format. bsp;Storing mode is indistinguishable from the packet format.
</t> </t>
<t> <t>
The SRH-6LoRHs are followed by RPI-6LoRH and then the IPv6-in-IPv6 6Lo RH. The SRH-6LoRHs are followed by the RPI-6LoRH and then the IPv6-in-IPv6 6LoRH.
When the IPv6-in-IPv6 6LoRH is removed, all the 6LoRH Headers that When the IPv6-in-IPv6 6LoRH is removed, all the 6LoRH Headers that
precede it are also removed. precede it are also removed.
The Paging Dispatch <xref target='RFC8025'/> may also be removed if The Paging Dispatch <xref target='RFC8025'/> may also be removed if
there was no previous Page change to a Page other than 0 or 1, since there was no previous Page change to a Page other than 0 or 1, since
and in Page 1. The resulting packet to the destination is the and in Page 1. The resulting packet to the destination is the
encapsulated packet compressed with <xref target='RFC6282'/>. encapsulated packet compressed per <xref target='RFC6282'/>.
</t> </t>
</section>
<section anchor='Acks' numbered="false"><name>Acknowledgments</name>
<t>
The authors wish to thank <contact fullname="Ines Robles"/>, <contact fullnam
e="Georgios Papadopoulos"/>, and
especially <contact fullname="Rahul Jadhav"/> and <contact fullname="Alvaro R
etana"/>
for their reviews and contributions to this document.
Also many thanks to <contact fullname="Éric Vyncke"/>, <contact fullname="Eri
k Kline"/>, <contact fullname="Murray Kucherawy"/>,
<contact fullname="Peter van der Stok"/>, <contact fullname="Carl Wallace"/>,
<contact fullname="Barry Leiba"/>, <contact fullname="Julien Meuric"/>,
and especially <contact fullname="Benjamin Kaduk"/> and <contact fullname="El
wyn Davies"/>,
for their reviews and useful comments
during the IETF Last Call and the IESG review sessions.
</t>
</section> </section>
</back> </back>
</rfc> </rfc>
 End of changes. 375 change blocks. 
1025 lines changed or deleted 1069 lines changed or added

This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/