rfc8929xml2.original.xml | rfc8929.xml | |||
---|---|---|---|---|
<?xml version="1.0" encoding="UTF-8"?> | ||||
<!-- updated by Chris 04/09/20 --> | ||||
<!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent"> | ||||
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" submissionType="IETF" category=" | ||||
std" consensus="true" ipr='trust200902' tocInclude="true" sortRefs="true" symRef | ||||
s="true" obsoletes="" updates="6775, 8505" xml:lang="en" version="3" docName="dr | ||||
aft-ietf-6lo-backbone-router-20" number="8929"> | ||||
<front> | ||||
<title>IPv6 Backbone Router</title> | ||||
<seriesInfo name="RFC" value="8929"/> | ||||
<author fullname='Pascal Thubert' initials='P.' role='editor' surname='Thube | ||||
rt'> | ||||
<organization abbrev='Cisco Systems'>Cisco Systems, Inc.</organization> | ||||
<address> | ||||
<postal> | ||||
<extaddr>Building D</extaddr> | ||||
<street>45 Allee des Ormes - BP1200</street> | ||||
<city>MOUGINS - Sophia Antipolis</city> | ||||
<code>06254</code> | ||||
<country>France</country> | ||||
</postal> | ||||
<phone>+33 497 23 26 34</phone> | ||||
<email>pthubert@cisco.com</email> | ||||
</address> | ||||
</author> | ||||
<!--[rfced] Charles - please review contact information to ensure | ||||
that it appears as desired (i.e., no state is listed in postal | ||||
address: should it be added or should Saratoga and the zip code | ||||
be deleted as well?). --> | ||||
<author fullname='Charles E. Perkins' initials='C.E.' surname='Perkins'> | ||||
<organization>Blue Meadow Networking</organization> | ||||
<address> | ||||
<postal> | ||||
<street/> | ||||
<city>Saratoga</city> | ||||
<region/> | ||||
<code>95070</code> | ||||
<country>United States of America</country> | ||||
</postal> | ||||
<phone/> | ||||
<email>charliep@computer.org</email> | ||||
</address> | ||||
</author> | ||||
<author fullname='Eric Levy-Abegnoli' initials='E.' surname='Levy-Abegnoli'> | ||||
<organization abbrev='Cisco Systems'>Cisco Systems, Inc.</organization> | ||||
<address> | ||||
<postal> | ||||
<extaddr>Building D</extaddr> | ||||
<street>45 Allee des Ormes - BP1200</street> | ||||
<city>MOUGINS - Sophia Antipolis</city> | ||||
<code>06254</code> | ||||
<country>France</country> | ||||
</postal> | ||||
<phone>+33 497 23 26 20</phone> | ||||
<email>elevyabe@cisco.com</email> | ||||
</address> | ||||
</author> | ||||
<date year="2020" month="October" /> | ||||
<area>Internet</area> | ||||
<workgroup>6lo</workgroup> | ||||
<!-- [rfced] Please insert any keywords (beyond those that appear in | ||||
the title) for use on https://www.rfc-editor.org/search. --> | ||||
<abstract> | ||||
<t> | ||||
This document updates RFCs 6775 and 8505 in order to enable | ||||
proxy services for IPv6 Neighbor Discovery by Routing Registrars | ||||
called "Backbone Routers". | ||||
Backbone Routers are placed along the wireless edge of a Backbone and | ||||
federate multiple wireless links to form a single Multi-Link | ||||
Subnet (MLSN). | ||||
</t> | ||||
</abstract> | ||||
</front> | ||||
<middle> | ||||
<section anchor='introduction'><name>Introduction</name> | ||||
<t> | ||||
Ethernet bridging per IEEE Std 802.1 <xref target='IEEEstd8021'/> | ||||
provides an efficient and reliable broadcast service for wired | ||||
networks; applications and protocols have been built that heavily | ||||
depend on that feature for their core operation. Unfortunately, | ||||
Low-Power and Lossy Networks (LLNs) and local wireless networks generally | ||||
do not provide the broadcast capabilities of Ethernet bridging in an | ||||
economical fashion. | ||||
</t> | ||||
<t> | ||||
As a result, protocols designed for bridged networks that rely | ||||
on multicast and broadcast often exhibit disappointing behaviors | ||||
when employed unmodified on a local wireless medium (see | ||||
<xref target='I-D.ietf-mboned-ieee802-mcast-problems'/>). | ||||
</t> | ||||
<t> | ||||
Wi-Fi <xref target='IEEEstd80211'></xref> Access Points (APs) | ||||
deployed in an Extended Service Set (ESS) act as Ethernet bridges | ||||
<xref target='IEEEstd8021'/>, with the property that the bridging | ||||
state is established at the time of association. This ensures | ||||
connectivity to the end node (the Wi-Fi Station (STA)) and protects the w | ||||
ireless medium | ||||
against broadcast-intensive transparent bridging reactive lookups. | ||||
<!--[rfced] Please confirm if this author comment has already been addressed | ||||
in the text: | ||||
CEP: citation needed for Transparent Bridging. | ||||
Original: | ||||
This ensures connectivity to the end node (the Wi-Fi | ||||
STA) and protects the wireless medium against broadcast-intensive | ||||
Transparent Bridging reactive Lookups. | ||||
--> | ||||
<!-- CEP: citation needed for Transparent Bridging. --> | ||||
In other words, the association process is used to register the Medium Ac | ||||
cess Control (MAC) | ||||
address of the STA to the AP. The AP subsequently proxies the | ||||
bridging operation and does not need to forward the broadcast lookups | ||||
over the radio. | ||||
</t> | ||||
<t> | ||||
In the same way as transparent bridging, the IPv6 <xref target='RFC8200' | ||||
/> | ||||
Neighbor Discovery (IPv6 ND) protocol <xref target='RFC4861'/> <xref tar | ||||
get='RFC4862'/> | ||||
is a reactive protocol, based on multicast | ||||
transmissions to locate an on-link correspondent and ensure the | ||||
uniqueness of an IPv6 address. The mechanism for Duplicate Address | ||||
Detection (DAD) <xref target='RFC4862'/> was designed for | ||||
the efficient broadcast operation of Ethernet bridging. | ||||
Since broadcast can be unreliable over wireless media, DAD often | ||||
fails to discover duplications | ||||
<xref target='I-D.yourtchenko-6man-dad-issues'/>. In practice, the fact | ||||
that IPv6 addresses very rarely conflict is mostly attributable to the entropy o | ||||
f the 64-bit Interface IDs as opposed to the successful operation of the IPv6 ND | ||||
DAD and resolution mechanisms.</t> | ||||
<t> | ||||
The IPv6 ND Neighbor Solicitation (NS) <xref target='RFC4861'/> message | ||||
is used for DAD and address lookup when a node moves or wakes up and | ||||
reconnects to the wireless network. The NS message is targeted to a | ||||
Solicited-Node Multicast Address (SNMA) <xref target='RFC4291'/> and | ||||
should, in theory, only reach a very small group of nodes. But, in | ||||
reality, IPv6 multicast messages are typically broadcast on the | ||||
wireless medium, so they | ||||
are processed by most of the wireless nodes over the subnet (e.g., the | ||||
ESS fabric) regardless of how few of the nodes are subscribed to the | ||||
SNMA. As a result, IPv6 ND address lookups and DADs over a large | ||||
wireless network and/or LLN can consume enough | ||||
bandwidth to cause a substantial degradation to the unicast traffic | ||||
service.</t> | ||||
<t> | ||||
Because IPv6 ND messages sent to the SNMA group are broadcast at the | ||||
radio MAC layer, wireless nodes that do not belong to the SNMA group | ||||
still have to keep their radio turned on to listen to multicast NS | ||||
messages, which is a waste of energy for them. In order to | ||||
reduce their power consumption, certain battery-operated devices such | ||||
as Internet of Things (IoT) sensors and smartphones ignore some of the br | ||||
oadcasts, making | ||||
IPv6 ND operations even less reliable. | ||||
</t> | ||||
<t> | ||||
These problems can be alleviated by reducing the IPv6 ND broadcasts | ||||
over wireless access links. This has been done by splitting the broadcas | ||||
t | ||||
domains and routing between subnets to the extreme by assigning | ||||
a /64 prefix to each wireless node (see <xref target='RFC8273'/>). | ||||
But deploying a single large subnet can still be attractive to avoid | ||||
renumbering in situations that involve large numbers of devices and mobility | ||||
within a bounded area. | ||||
</t> | ||||
<t> | ||||
A way to reduce the propagation of IPv6 ND broadcast in the wireless doma | ||||
in | ||||
while preserving a large single subnet is to form a Multi-Link Subnet (MLSN) | ||||
. | ||||
Each Link in the MLSN, including the backbone, is its own broadcast domain. | ||||
A key property of MLSNs is that Link-Local unicast traffic, link-scope multi | ||||
cast, and traffic with a hop limit of 1 will not transit to nodes in the same su | ||||
bnet on a different link, which is something that may produce unexpected behavio | ||||
r in software that expects a subnet to be entirely contained within a single lin | ||||
k. | ||||
</t> | ||||
<t> | ||||
This specification considers a special type of MLSN with a central backbone | ||||
that federates edge (LLN) links, with each Link providing its own protection aga | ||||
inst rogue access and tempering or replaying packets. In particular, the use of | ||||
classical IPv6 ND on the backbone requires that the all nodes are trusted and th | ||||
at rogue access | ||||
to the backbone is prevented at all times (see <xref target='sec'/>). | ||||
</t> | ||||
<t> | ||||
In that particular topology, ND proxies can be placed at the boundary of the | ||||
edge links and the backbone to handle IPv6 ND on behalf of Registered Nodes and | ||||
to forward IPv6 packets back and forth. | ||||
The ND proxy enables the continuity of IPv6 ND operations beyond the backbon | ||||
e and enables communication using Global or Unique Local Addresses between any p | ||||
air of nodes in the MLSN. | ||||
</t> | ||||
<t> | ||||
The 6LoWPAN Backbone Router (6BBR) is a Routing Registrar <xref target='RFC8 | ||||
505'/> that provides proxy-ND services. | ||||
A 6BBR acting as a Bridging Proxy provides a proxy-ND function with Layer 2 | ||||
continuity and can be | ||||
collocated with a Wi-Fi AP as prescribed by IEEE Std 802.11 <xref target='IE | ||||
EEstd80211'></xref>. A 6BBR acting as a Routing Proxy is applicable to any type | ||||
of LLN, including LLNs that cannot be bridged onto the backbone, such as IEEE St | ||||
d 802.15.4 <xref target='IEEEstd802154'></xref>. | ||||
</t> | ||||
<t> | ||||
Knowledge of which address to proxy can be obtained by snooping the | ||||
IPv6 ND protocol (see <xref target='I-D.bi-savi-wlan'/>), but it has been | ||||
found to be unreliable. | ||||
An IPv6 address may not be discovered immediately due to a packet loss or if | ||||
a "silent" node | ||||
is not currently using one of its addresses. A change of state (e.g., | ||||
due to movement) may be missed or misordered, leading to unreliable | ||||
connectivity and incomplete knowledge of the state of the network. | ||||
</t> | ||||
<t> | ||||
With this specification, the address to be proxied is signaled explicitly th | ||||
rough a registration process. | ||||
A 6LoWPAN Node (6LN) registers all of its IPv6 Addresses using NS messages w | ||||
ith an Extended Address Registration Option (EARO) as specified in <xref target= | ||||
'RFC8505'/> to a 6LoWPAN Router (6LR) to which it is directly attached. | ||||
If the 6LR is a 6BBR, then the 6LN is both the Registered Node and the Regis | ||||
tering Node. If not, then the 6LoWPAN Border Router (6LBR) that serves the LLN p | ||||
roxies the registration to the 6BBR. In that case, the 6LN is the Registered Nod | ||||
e and the 6LBR is the Registering Node. | ||||
The 6BBR performs IPv6 ND operations on its Backbone interface on behalf of | ||||
the 6LNs that have registered addresses on its LLN interfaces, without the need | ||||
of a broadcast over the wireless medium. | ||||
</t> | ||||
<t> | ||||
A Registering Node that resides on the backbone does not register to the SNM | ||||
A groups associated to its Registered Addresses and defers to the 6BBR to answer | ||||
or preferably forward the corresponding multicast packets to it as unicast. | ||||
</t> | ||||
</section> | ||||
<section><name>Terminology</name> | ||||
<section anchor='bcp'><name>Requirements Language</name> | ||||
<t> | ||||
The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQU | ||||
IRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL | ||||
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14> | ||||
RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | ||||
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to | ||||
be interpreted as | ||||
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> | ||||
when, and only when, they appear in all capitals, as shown here. | ||||
</t> | ||||
</section> | ||||
<section anchor='new'><name>New Terms</name> | ||||
<t> | ||||
This document introduces the following terminology: | ||||
</t><dl> | ||||
<dt>Federated:</dt><dd> | ||||
A subnet that comprises a Backbone, and one or more (wireless) | ||||
access links, is said to be federated into one MLSN. | ||||
The proxy-ND operation of 6BBRs over the Backbone extends IPv6 ND ope | ||||
ration over the access links. | ||||
</dd> | ||||
<dt>Sleeping Proxy:</dt><dd> | ||||
A 6BBR acts as a Sleeping Proxy if it answers IPv6 ND NSs over the Back | ||||
bone on behalf of the Registering | ||||
Node that is in a sleep state and that cannot answer in due time. | ||||
</dd> | ||||
<dt>Routing Proxy:</dt><dd> | ||||
A Routing Proxy provides IPv6 ND proxy functions and enables the | ||||
MLSN operation over federated links that may not be compatible for | ||||
bridging. The Routing Proxy advertises its own MAC | ||||
address as the Target Link-Layer Address (TLLA) in the proxied Neighbor | ||||
Advertisements (NAs) | ||||
over the Backbone and routes | ||||
at the network layer between the federated links. | ||||
</dd> | ||||
<dt>Bridging Proxy:</dt><dd> | ||||
A Bridging Proxy provides IPv6 ND proxy functions while preserving | ||||
forwarding continuity at the MAC layer. | ||||
<!--[rfced] Should this text be made "IPv6 proxy-ND functions" where | ||||
it occurs (more than one location)? | ||||
Original: | ||||
A Bridging Proxy provides IPv6 ND proxy functions while preserving | ||||
forwarding continuity at the MAC layer. | ||||
... | ||||
A Routing Proxy provides IPv6 ND proxy functions for Global and Unique | ||||
Local Addresses between the LLN and the backbone, but not for Link-Local | ||||
addresses | ||||
... | ||||
A Bridging Proxy provides IPv6 ND proxy functions between the LLN and the | ||||
backbone while preserving the forwarding continuity at the MAC layer. | ||||
--> | ||||
In | ||||
that case, the MAC address and the mobility of the Registering Node is | ||||
visible across the bridged Backbone. The Bridging Proxy advertises | ||||
the MAC address of the Registering Node as the TLLA in the proxied NAs | ||||
over the Backbone, and it proxies ND for all unicast addresses including | ||||
Link-Local Addresses. | ||||
<!--[rfced] We updated "NS Lookup" to be "NS(Lookup)" in the following | ||||
sentence for consistency, and we updated "and let it respond on | ||||
its own" to "so it can respond on its own" for clarity. If this | ||||
is not correct, please let us know. | ||||
Original: | ||||
Instead of replying on | ||||
behalf of the Registering Node, a Bridging Proxy will preferably | ||||
forward the NS Lookup and NUD messages that target the Registered | ||||
Address to the Registering Node as unicast frames and let it | ||||
respond in its own. | ||||
Current: | ||||
Instead of replying on | ||||
behalf of the Registering Node, a Bridging Proxy will preferably | ||||
forward the NS(Lookup) and Neighbor Unreachability Detection (NUD) | ||||
messages that target the Registered Address to the Registering Node | ||||
as unicast frames, so it can respond on its own. | ||||
--> | ||||
Instead of replying on behalf of the Registering Node, a Bridging Proxy | ||||
will preferably forward the NS(Lookup) and Neighbor Unreachability Detec | ||||
tion (NUD) messages that target the | ||||
Registered Address to the Registering Node as unicast frames, so it can | ||||
respond in its own. | ||||
</dd> | ||||
<dt>Binding Table:</dt><dd> | ||||
The Binding Table is an abstract database that is maintained by the | ||||
6BBR to store the state associated with its registrations. | ||||
</dd> | ||||
<dt>Binding:</dt><dd> | ||||
A Binding is an abstract state associated to one registration; in | ||||
other words, it's associated to one entry in the Binding Table. | ||||
</dd> | ||||
</dl> | ||||
</section> | ||||
<!--[rfced] Should the following abbreviations be added to Section 2.3? | ||||
AP | ||||
ESS | ||||
STA | ||||
MLSN | ||||
HA | ||||
MIPv6 | ||||
HA | ||||
SLLAO | ||||
TLLAO | ||||
ODAD | ||||
MTU | ||||
--> | ||||
<section anchor='acronyms'><name>Abbreviations</name> | ||||
<t> This document uses the following abbreviations: | ||||
</t><dl spacing='compact' indent="12"> | ||||
<dt>6BBR:</dt><dd>6LoWPAN Backbone Router </dd> | ||||
<dt>6LBR:</dt><dd>6LoWPAN Border Router </dd> | ||||
<dt>6LN:</dt><dd>6LoWPAN Node </dd> | ||||
<dt>6LR:</dt><dd>6LoWPAN Router </dd> | ||||
<dt>ARO:</dt><dd>Address Registration Option</dd> | ||||
<dt>DAC:</dt><dd>Duplicate Address Confirmation </dd> | ||||
<dt>DAD:</dt><dd>Duplicate Address Detection </dd> | ||||
<dt>DAR:</dt><dd>Duplicate Address Request</dd> | ||||
<dt>EARO:</dt><dd>Extended Address Registration Option</dd> | ||||
<dt>EDAC:</dt><dd>Extended Duplicate Address Confirmation </dd> | ||||
<dt>EDAR:</dt><dd>Extended Duplicate Address Request</dd> | ||||
<dt>DODAG:</dt><dd>Destination-Oriented Directed Acyclic Graph </dd> | ||||
<dt>ID:</dt><dd>Identifier </dd> | ||||
<dt>LLA:</dt><dd>Link-Layer Address (aka MAC address)</dd> | ||||
<dt>LLN:</dt><dd>Low-Power and Lossy Network </dd> | ||||
<dt>MAC:</dt><dd>Medium Access Control </dd> | ||||
<dt>NA:</dt><dd>Neighbor Advertisement </dd> | ||||
<dt>NCE:</dt><dd>Neighbor Cache Entry </dd> | ||||
<dt>ND:</dt><dd>Neighbor Discovery </dd> | ||||
<dt>NDP:</dt><dd>Neighbor Discovery Protocol </dd> | ||||
<dt>NS:</dt><dd>Neighbor Solicitation </dd> | ||||
<dt>NS(DAD):</dt><dd>NDP NS message used for the purpose of duplication a | ||||
voidance (multicast) </dd> | ||||
<dt>NS(Lookup):</dt><dd>NDP NS message used for the purpose of address re | ||||
solution (multicast) </dd> | ||||
<dt>NS(NUD):</dt><dd>NDP NS message used for the purpose of unreachabilit | ||||
y detection (unicast) </dd> | ||||
<dt>NUD:</dt><dd>Neighbor Unreachability Detection</dd> | ||||
<dt>RA:</dt><dd>Router Advertisement </dd> | ||||
<dt>ROVR:</dt><dd>Registration Ownership Verifier </dd> | ||||
<dt>RPL:</dt><dd>Routing Protocol for LLNs </dd> | ||||
<dt>RS:</dt><dd>Router Solicitation </dd> | ||||
<dt>SLLA:</dt><dd>Source Link-Layer Address</dd> | ||||
<dt>SNMA:</dt><dd>Solicited-Node Multicast Address </dd> | ||||
<dt>TID:</dt><dd>Transaction ID </dd> | ||||
<dt>TLLA:</dt><dd>Target Link-Layer Address</dd> | ||||
</dl> | ||||
</section> | ||||
<section anchor='lo'><name>References</name> | ||||
<t> | ||||
In this document, readers will encounter terms and concepts | ||||
that are discussed in the following documents: | ||||
</t> | ||||
<dl> | ||||
<dt>Classical IPv6 ND:</dt><dd>"Neighbor Discovery for IP version 6 (IPv6 | ||||
)" <xref target='RFC4861'/>, | ||||
"IPv6 Stateless Address Autoconfiguration" <xref target='RFC4862'/>, | ||||
and | ||||
"Optimistic Duplicate Address Detection (DAD) for IPv6" <xref target= | ||||
'RFC4429'/>;</dd> | ||||
<dt>IPv6 ND over multiple links:</dt><dd> "Neighbor Discovery Proxies (ND Pr | ||||
oxy)" | ||||
<xref target='RFC4389'></xref> and | ||||
"Multi-Link Subnet Issues" <xref target='RFC4903'></xref>;</dd> | ||||
<dt>6LoWPAN:</dt><dd>"Problem Statement and Requirements for | ||||
IPv6 over Low-Power Wireless Personal Area Network (6LoWPAN) | ||||
Routing" <xref target='RFC6606'></xref>; and</dd> | ||||
<dt>6LoWPAN ND:</dt><dd>Neighbor Discovery Optimization for IPv6 over Low | ||||
-Power | ||||
Wireless Personal Area Networks (6LoWPANs) <xref target='RFC6775' | ||||
></xref>, | ||||
"Registration Extensions for IPv6 over Low-Power Wireless Persona | ||||
l Area Network (6LoWPAN) Neighbor Discovery" <xref target='RFC8505'></xref>, | ||||
and | ||||
"Address-Protected Neighbor Discovery for Low-Power and Lossy Networks" | ||||
<xref target='RFC8928'></xref>.</dd> | ||||
</dl> | ||||
</section> | ||||
</section> | ||||
<section anchor='overview'><name>Overview</name> | ||||
<t> This section and its subsections present a non-normative high-level view of | ||||
the operation of the 6BBR. The following sections cover the normative part. | ||||
</t> | ||||
<t> | ||||
<xref target='figBackbone'/> illustrates a Backbone Link that federates a | ||||
collection of LLNs as a single IPv6 subnet, with a number of 6BBRs | ||||
providing proxy-ND services to their attached LLNs. | ||||
</t> | ||||
<figure anchor='figBackbone'><name>Backbone Link and Backbone Routers</name> | ||||
<artwork><![CDATA[ | ||||
| | ||||
+-----+ +-----+ +-----+ IPv6 | ||||
(default) | | (optional) | | | | Node | ||||
Router | | 6LBR | | | | or | ||||
+-----+ +-----+ +-----+ 6LN | ||||
| Backbone side | | | ||||
----+-------+-----------------+---+-------------+----+----- | ||||
| | | | ||||
+------+ +------+ +------+ | ||||
| 6BBR | | 6BBR | | 6BBR | | ||||
| | | | | | | ||||
+------+ +------+ +------+ | ||||
o Wireless side 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 LLN 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 | ||||
]]></artwork></figure> | ||||
<t> | ||||
The LLN may be a hub-and-spoke access link such as (Low-Power) | ||||
IEEE Std 802.11 (Wi-Fi) <xref target='IEEEstd80211'/> | ||||
and IEEE Std 802.15.1 (Bluetooth) <xref target='IEEEstd802151'/> | ||||
or a Mesh-Under or a Route-Over network <xref target='RFC8505'/>. | ||||
The proxy state can be distributed across multiple 6BBRs attached to | ||||
the same Backbone. | ||||
</t> | ||||
<t> | ||||
The main features of a 6BBR are as follows: | ||||
</t> | ||||
<ul> | ||||
<li> | ||||
MLSN functions (provided by the 6BBR on the | ||||
backbone) performed on behalf of Registered Nodes | ||||
</li> | ||||
<li> | ||||
<t> | ||||
Routing Registrar services that reduce multicast within the LLN: | ||||
</t> | ||||
<ul spacing='compact' empty="true"> | ||||
<li>- Binding Table management | ||||
</li> | ||||
<li>- failover, e.g., due to mobility | ||||
</li> | ||||
</ul> | ||||
</li> | ||||
</ul> | ||||
<t> | ||||
Each Backbone Router (6BBR) maintains a data structure for its | ||||
Registered Addresses called a Binding Table. The abstract data that | ||||
is stored in the Binding Table includes the Registered Address; anchor infor | ||||
mation on the Registering Node such as the connecting interface, Link-Local Addr | ||||
ess, and Link-Layer Address (LLA) of the Registering Node on that interface; the | ||||
EARO including ROVR and TID; a state that can be either Reachable, Tentative, o | ||||
r Stale; and other information such as a trust level that may be configured, e.g | ||||
., to protect a server. The combined Binding Tables | ||||
of all the 6BBRs on a backbone form a distributed database of Registered | ||||
Nodes | ||||
that reside in the LLNs or on the IPv6 Backbone. | ||||
</t> | ||||
<t> | ||||
Unless otherwise configured, a 6BBR does the following: | ||||
</t> | ||||
<ul> | ||||
<li>Creates a new entry in a Binding Table for a newly | ||||
Registered Address and ensures that the Address is not | ||||
duplicated over the Backbone. | ||||
</li> | ||||
<li>Advertises a Registered Address over the Backbone using an NA message | ||||
as | ||||
either unsolicited or a response to an NS message. This includes | ||||
joining the multicast group associated to the SNMA derived from the | ||||
Registered Address, as specified in | ||||
<xref target='RFC4861' sectionFormat="of" section="7.2.1"/>, over the Ba | ||||
ckbone. | ||||
</li> | ||||
<li> | ||||
<t> | ||||
The 6BBR <bcp14>MAY</bcp14> respond immediately as a proxy in lieu of the | ||||
Regsitering Node, e.g., if the Registering Node has a sleeping cycle that the 6B | ||||
BR does not want to interrupt or if the 6BBR has a recent state that is deemed f | ||||
resh enough to permit the proxied response. It is preferred, though, that the 6B | ||||
BR checks whether the Registering Node is still responsive on the Registered Add | ||||
ress. To that effect: | ||||
</t> | ||||
<!--[rfced] This sentence is lengthy. May we add a semicolon for | ||||
easier readability? Please let us know if this is agreeable or if | ||||
you prefer otherwise. | ||||
Original: | ||||
the 6BBR forwards the multicast DAD and Address Lookup messages | ||||
as a unicast MAC-Layer frames to the MAC address of the | ||||
Registering Node that matches the Target in the ND message, and | ||||
forwards as is the unicast Neighbor Unreachability Detection | ||||
(NUD) messages, so as to let the Registering Node answer with | ||||
the ND Message and options that it sees fit; | ||||
Perhaps: | ||||
the 6BBR forwards the multicast DAD and address lookup messages | ||||
as a unicast MAC-Layer frame to the MAC address of the | ||||
Registering Node that matches the target in the ND message; it | ||||
then forwards the unicast Neighbor Unreachability Detection | ||||
(NUD) messages as is, in order to let the Registering Node | ||||
answer with the ND Message and options that it sees fit. | ||||
--> | ||||
<dl spacing='compact' newline="true"> | ||||
<dt> - as a Bridging Proxy:</dt> | ||||
<dd>the 6BBR forwards the multicast DAD and address lookup messages as a | ||||
unicast MAC-layer frame to the MAC address of the Registering Node that matches | ||||
the target in the ND message, and forwards as is the unicast Neighbor Unreachabi | ||||
lity Detection (NUD) messages so as to let the Registering Node answer with the | ||||
ND Message and options that it sees fit.</dd> | ||||
<dt> - as a Routing Proxy:</dt> | ||||
<dd>the 6BBR checks the liveliness of the Registering Node, e.g., using a | ||||
NUD verification, before answering on its behalf.</dd> | ||||
</dl> | ||||
</li> | ||||
<li> Delivers packets arriving from the LLN, using Neighbor Solicitation | ||||
messages to look up the destination over the Backbone. </li> | ||||
<li> Forwards or bridges packets between the LLN and the Backbone. </li> | ||||
<li> Verifies liveness for a registration, when needed. </li> | ||||
</ul> | ||||
<t> | ||||
The first of these functions enables the 6BBR to fulfill its | ||||
role as a Routing Registrar for each of its attached LLNs. | ||||
The remaining functions fulfill the role of the 6BBRs as the | ||||
border routers that federate the Multi-Link IPv6 Subnet. | ||||
</t> | ||||
<t> | ||||
The operation of IPv6 ND and proxy-ND are not mutually exclusive on the Back | ||||
bone, meaning that nodes attached to the Backbone and using IPv6 ND can transpar | ||||
ently interact with 6LNs that rely on a 6BBR to proxy-ND for them, whether the 6 | ||||
LNs are reachable over an LLN or directly attached to the Backbone. | ||||
</t> | ||||
<t> | ||||
The registration mechanism <xref target='RFC8505'/> used to learn addresses | ||||
to be proxied may | ||||
coexist in a 6BBR with a proprietary snooping or the traditional bridging fu | ||||
nctionality of an AP, in order to support legacy LLN nodes that do not support t | ||||
his specification. | ||||
</t> | ||||
<t> | ||||
The registration to a proxy service uses an NS/NA exchange with EARO. | ||||
The 6BBR operation resembles that of a | ||||
Mobile IPv6 (MIPv6) <xref target='RFC6275'></xref> Home Agent (HA). | ||||
The combination of a 6BBR and a MIPv6 HA enables full mobility | ||||
support for 6LNs, inside and outside the links that form the subnet. | ||||
</t> | ||||
<t> | ||||
6BBRs perform IPv6 ND functions over the backbone as follows: | ||||
</t><ul > | ||||
<li> | ||||
The EARO <xref target='RFC8505'/> is used in IPv6 ND exchanges over | ||||
the Backbone between the 6BBRs to help distinguish duplication from move | ||||
ment. | ||||
Extended Duplicate Address Messages (EDAR and EDAC) may also be | ||||
used to communicate with a 6LBR, if one is present. | ||||
Address duplication is detected using the ROVR field. | ||||
Conflicting registrations to different 6BBRs for the same | ||||
Registered Address are resolved using the TID field, which forms an o | ||||
rder | ||||
of registrations. | ||||
</li> | ||||
<li> | ||||
The LLA that the 6BBR advertises for the | ||||
Registered Address on behalf of the Registered Node over the | ||||
Backbone can belong to the Registering Node; in that case, the 6BBR | ||||
(acting as a Bridging Proxy (see <xref target='bridge_proxy'/>)) | ||||
bridges the unicast packets. Alternatively, the LLA can be that | ||||
of the 6BBR on the Backbone interface, in which case, the 6BBR | ||||
(acting as a Routing Proxy (see <xref target='rtr_proxy'/>)) | ||||
receives the unicast packets at Layer 3 and routes over. | ||||
</li> | ||||
</ul> | ||||
<section anchor='updating'><name>Updating RFCs 6775 and 8505</name> | ||||
<t> | ||||
This specification adds the EARO as a possible option in RS, NS(DAD), | ||||
and NA messages over the backbone. | ||||
This document specifies the use of those ND messages by 6BBRs | ||||
over the backbone, at a high level in <xref target='bbrbb'/> and in more | ||||
detail in <xref target='crea'/>. | ||||
</t> | ||||
<aside> | ||||
<t> | ||||
Note: <xref target='RFC8505'/> requires | ||||
that the registration NS(EARO) contain a Source Link-Layer Address Option | ||||
(SLLAO). <xref target='RFC4862'/> requires that | ||||
the NS(DAD) be sent from the unspecified address for which there cannot be a | ||||
n | ||||
SLLAO. Consequently, an NS(DAD) cannot be confused with a registration. | ||||
</t> | ||||
</aside> | ||||
<t> | ||||
This specification allows the deployment of a 6LBR on the backbone where EDA | ||||
R and | ||||
EDAC messages coexist with classical ND. | ||||
<!--[rfced] Should 'receiving' perhaps be added to the sentence below | ||||
for clarity? | ||||
Original: | ||||
A 6BBR acting as a 6LR for the Registered Address can insert | ||||
an SLLAO in the EDAR to the 6LBR in order to avoid a Lookup back. | ||||
Perhaps: | ||||
A 6BBR acting as a 6LR for the Registered Address can insert | ||||
an SLLAO in the EDAR to the 6LBR in order to avoid receiving | ||||
a lookup back. | ||||
--> | ||||
It also adds the capability to insert IPv6 ND options in the EDAR and EDAC mess | ||||
ages. A 6BBR acting as a 6LR | ||||
for the Registered Address can insert an SLLAO in the EDAR to the 6LB | ||||
R in | ||||
order to avoid a lookup back. This enables the 6LBR to store the MAC | ||||
address associated with the Registered Address on a link and to serve as a | ||||
mapping server as described in | ||||
<xref target='I-D.thubert-6lo-unicast-lookup'/>. | ||||
</t> | ||||
<t> | ||||
This specification allows an address to be registered to more than one | ||||
6BBR. Consequently, a 6LBR that is deployed on the backbone <bcp14>MUST</bcp | ||||
14> be capable | ||||
of maintaining state for each of the 6BBRs that have registered with the sam | ||||
e | ||||
TID and same ROVR. | ||||
</t> | ||||
</section> | ||||
<section anchor='WAL'><name>Access Link</name> | ||||
<t> | ||||
The simplest MLSN topology from the Layer 3 perspective occurs | ||||
when the wireless network appears as a single-hop hub-and-spoke network as | ||||
shown in <xref target='figBackbone1'/>. The Layer 2 operation may effectively | ||||
be hub-and-spoke (e.g., Wi-Fi) or Mesh-Under, with a Layer 2 protocol | ||||
handling the complex topology. | ||||
</t> | ||||
<figure anchor='figBackbone1'><name>Access Link Use Case</name> | ||||
<artwork><![CDATA[ | ||||
| | ||||
+-----+ +-----+ +-----+ IPv6 | ||||
(default) | | (optional) | | | | Node | ||||
Router | | 6LBR | | | | or | ||||
+-----+ +-----+ +-----+ 6LN | ||||
| Backbone Side | | | ||||
----+-------+-----------------+---+-------------+----+----- | ||||
| | | | ||||
+------+ +------+ +------+ | ||||
| 6BBR | | 6BBR | | 6BBR | | ||||
| 6LR | | 6LR | | 6LR | | ||||
+------+ +------+ +------+ | ||||
(6LN) (6LN) (6LN) (6LN) (6LN) (6LN) (6LN) (6LN) | ||||
]]></artwork></figure> | ||||
<t> | ||||
<xref target='figReg2'/> illustrates a flow where 6LN forms an IPv6 | ||||
Address and registers it to a 6BBR acting as a 6LR | ||||
<xref target='RFC8505'/>. The 6BBR applies Optimistic Duplicate Address D | ||||
etection (ODAD) (see | ||||
<xref target='odad'/>) to the registered address to enable | ||||
connectivity while the message flow is still in progress. | ||||
</t> | ||||
<figure anchor='figReg2' suppress-title='false'><name>Initial Registration F | ||||
low to a 6BBR Acting as a Routing Proxy</name> | ||||
<artwork><![CDATA[ | ||||
6LN(STA) 6BBR(AP) 6LBR default GW | ||||
| | | | | ||||
| LLN Access Link | IPv6 Backbone (e.g., Ethernet) | | ||||
| | | | | ||||
| RS(multicast) | | | | ||||
|---------------->| | | | ||||
| RA(PIO, Unicast)| | | | ||||
|<----------------| | | | ||||
| NS(EARO) | | | | ||||
|---------------->| | | | ||||
| | Extended DAR | | | ||||
| |--------------->| | | ||||
| | Extended DAC | | | ||||
| |<---------------| | | ||||
| | | | ||||
| | NS-DAD(EARO, multicast) | | ||||
| |--------> | | ||||
| |----------------------------------->| | ||||
| | | | ||||
| | RS(no SLLAO, for ODAD) | | ||||
| |----------------------------------->| | ||||
| | if (no fresher Binding) NS(Lookup) | | ||||
| | <----------------| | ||||
| |<-----------------------------------| | ||||
| | NA(SLLAO, not(O), EARO) | | ||||
| |----------------------------------->| | ||||
| | RA(unicast) | | ||||
| |<-----------------------------------| | ||||
| | | | ||||
| IPv6 Packets in optimistic mode | | ||||
|<---------------------------------------------------->| | ||||
| | | | ||||
| | | ||||
| NA(EARO) |<DAD timeout> | ||||
|<----------------| | ||||
| |]]></artwork> | ||||
</figure> | ||||
<t> | ||||
In this example, a 6LBR is deployed on the Backbone Link to serve the whole | ||||
subnet, and EDAR/EDAC messages are used in combination with DAD to enable | ||||
coexistence with IPv6 ND over the backbone. | ||||
</t> <t> | ||||
The RS sent initially by the 6LN (e.g., a Wi-Fi STA) is transmitted as a mul | ||||
ticast, but | ||||
since it is intercepted by the 6BBR, it is never effectively broadcast. | ||||
The multiple arrows associated to the ND messages on the Backbone denote a | ||||
real Layer 2 broadcast. | ||||
</t> | ||||
</section> | ||||
<section anchor='ROM'><name>Route-Over Mesh</name> | ||||
<t> | ||||
A more complex MLSN topology occurs when the wireless network | ||||
appears as a Layer 3 mesh network as shown in <xref target='figBackbone2'/>. | ||||
A so-called Route-Over routing protocol exposes routes between 6LRs towards | ||||
both 6LRs and 6LNs, and a 6LBR acts as the Root of the Layer 3 mesh network a | ||||
nd | ||||
proxy-registers the LLN addresses to the 6BBR. | ||||
</t> | ||||
<figure anchor='figBackbone2'><name>Route-Over Mesh Use Case</name> | ||||
<artwork><![CDATA[ | ||||
| | ||||
+-----+ +-----+ +-----+ IPv6 | ||||
(default) | | (optional) | | | | Node | ||||
Router | | 6LBR | | | | or | ||||
+-----+ +-----+ +-----+ 6LN | ||||
| Backbone side | | | ||||
----+-------+-----------------+---+-------------+----+----- | ||||
| | | | ||||
+------+ +------+ +------+ | ||||
| 6BBR | | 6BBR | | 6BBR | | ||||
+------+ +------+ +------+ | ||||
| | | | ||||
+------+ +------+ +------+ | ||||
| 6LBR | | 6LBR | | 6LBR | | ||||
+------+ +------+ +------+ | ||||
(6LN) (6LR) (6LN) (6LR) (6LN) (6LR) (6LR) (6LR)(6LN) | ||||
(6LN)(6LR) (6LR) (6LN) (6LN) (6LR)(6LN) (6LR) (6LR) (6LR) (6LN) | ||||
(6LR)(6LR) (6LR) (6LR) (6LR)(6LN) (6LR) (6LR)(6LR) | ||||
(6LR) (6LR) (6LR) (6LR) (6LN)(6LR) (6LR) (6LR) (6LR) (6LR) | ||||
(6LN) (6LN)(6LN) (6LN) (6LN) (6LN) (6LN) (6LN) (6LN) (6LN) | ||||
]]></artwork></figure> | ||||
<t> | ||||
<xref target='figReg'/> illustrates IPv6 signaling that | ||||
enables a 6LN (the Registered Node) to form a Global or a Unique Local Ad | ||||
dress and register it to the 6LBR that serves its LLN using <xref target='RFC850 | ||||
5'/> and a neighboring 6LR as relay. | ||||
The 6LBR (the Registering Node) then proxies the registration <xref target=' | ||||
RFC8505'/> to the 6BBR to obtain proxy-ND services from the 6BBR. | ||||
</t> <t> | ||||
The RS sent initially by the 6LN is transmitted as a multicast and contained | ||||
within 1-hop broadcast range where hopefully a 6LR is found. The 6LR is expecte | ||||
d to be already connected to the LLN and capable of reaching the 6LBR, which is | ||||
possibly multiple hops away, using unicast messages. | ||||
</t> | ||||
<figure anchor='figReg' suppress-title='false'><name>Initial Registration Fl | ||||
ow over Route-Over Mesh</name> | ||||
<artwork><![CDATA[ | ||||
6LoWPAN Node 6LR 6LBR 6BBR | ||||
(mesh leaf) (mesh router) (mesh root) | ||||
| | | | | ||||
| 6LoWPAN ND |6LoWPAN ND | 6LoWPAN ND | IPv6 ND | ||||
| LLN link |Route-Over mesh|Ethernet/serial| Backbone | ||||
| | |/Internal call | | ||||
| IPv6 ND RS | | | | ||||
|-------------->| | | | ||||
|-----------> | | | | ||||
|------------------> | | | ||||
| IPv6 ND RA | | | | ||||
|<--------------| | | | ||||
| | | | | ||||
| NS(EARO) | | | | ||||
|-------------->| | | | ||||
| 6LoWPAN ND | Extended DAR | | | ||||
| |-------------->| | | ||||
| | | NS(EARO) | | ||||
| | |-------------->| | ||||
| | | (proxied) | NS-DAD | ||||
| | | |------> | ||||
| | | | (EARO) | ||||
| | | | | ||||
| | | NA(EARO) |<timeout> | ||||
| | |<--------------| | ||||
| | Extended DAC | | | ||||
| |<--------------| | | ||||
| NA(EARO) | | | | ||||
|<--------------| | | | ||||
| | | |]]> | ||||
</artwork> | ||||
</figure> | ||||
<t> | ||||
As a non-normative example of a Route-Over Mesh, the | ||||
IPv6 over the TSCH mode of IEEE 802.15.4e (6TiSCH) architecture <xref tar | ||||
get='I-D.ietf-6tisch-architecture'></xref> | ||||
suggests using the RPL <xref target='RFC6550'/> and collocating the RPL | ||||
root with a 6LBR that serves the LLN. The 6LBR is also either collocated | ||||
with or directly connected to the 6BBR over an IPv6 link. | ||||
</t> | ||||
</section> | ||||
<section anchor='Binding'><name>The Binding Table</name> | ||||
<t> | ||||
Addresses in an LLN that are reachable from the Backbone by way of the 6BBR | ||||
function must be registered to that 6BBR, using an NS(EARO) with the R flag | ||||
set <xref target='RFC8505'/>. The 6BBR answers with an NA(EARO) | ||||
and maintains a state for the registration in an abstract | ||||
Binding Table. | ||||
</t> | ||||
<t> | ||||
An entry in the Binding Table is called a "Binding". | ||||
A Binding may be in Tentative, Reachable, or Stale state. | ||||
</t> | ||||
<t> | ||||
<!--[rfced] Please confirm if these author comments have already been addressed | ||||
in the document: | ||||
1) CEP: The false positive is supposed to be prevented by the last two | ||||
sentences. This needs to be reworded somehow, because | ||||
prevention means that the false positive doesn't arise. | ||||
2) CEP: Need to check RFC 8505 and delete the list items specified there. | ||||
3) CEP: Something is wrong here. | ||||
4) CEP: Guessing that the last "different" should simply be deleted. | ||||
5) CEP: This does not belong here. It is specified later, as is proper. | ||||
In the latter case, the 6BBR maintains the list of correspondents | ||||
to which it has advertised its own MAC Address on behalf of the LLN | ||||
node. | ||||
--> | ||||
<!-- CEP: The false positive is supposed to be prevented by the last two | ||||
sentences. This needs to be reworded somehow, because | ||||
prevention means that the false positive doesn't arise. --> | ||||
The 6BBR uses a combination of <xref target='RFC8505'/> and IPv6 ND over the | ||||
Backbone to advertise the registration and avoid a duplication. | ||||
Conflicting registrations are solved by the 6BBRs and are transparent to | ||||
the | ||||
Registering Nodes. | ||||
</t> | ||||
<t> | ||||
Only one 6LN may register a given Address, but the Address may be registe | ||||
red | ||||
to multiple 6BBRs for higher availability. | ||||
<!-- CEP: But the primary/secondary distinction was described as optional. --> | ||||
</t> | ||||
<t> | ||||
<!-- CEP:Need to check RFC 8505 and delete the list items specified there.--> | ||||
Over the LLN, Binding Table management is as follows: | ||||
</t><ul> | ||||
<li> De-registrations (newer TID, same ROVR, null Lifetime) are | ||||
accepted with a status of 4 ("Removed"); the entry is deleted. </li> | ||||
<li> Newer registrations (newer TID, same ROVR, non-null Lifetime) are | ||||
accepted with a status of 0 ("Success"); the Binding is updated | ||||
with the new TID, the Registration Lifetime, and the Registering | ||||
Node. In Tentative state, the EDAC response | ||||
is held and may be overwritten; in other states, the | ||||
Registration Lifetime timer is restarted, and the entry is placed | ||||
in Reachable state. </li> | ||||
<li> Identical registrations (same TID, same ROVR) from the same | ||||
Registering Node are accepted with a status of 0 ("Success"). | ||||
In Tentative state, the response is held and may be overwritten, | ||||
but the response is eventually produced, carrying | ||||
the result of the DAD process. </li> | ||||
<li> Older registrations (older TID, same ROVR) from the same | ||||
Registering Node are discarded. </li> | ||||
<!-- CEP: Something is wrong here. --> | ||||
<li> Identical and older registrations (not-newer TID, same ROVR) from | ||||
a different Registering Node are rejected with a status of 3 | ||||
("Moved"); this may be rate-limited to avoid undue interference. </li | ||||
> | ||||
<!-- CEP: Guessing that the last "different" should simply be deleted. --> | ||||
<li> Any registration for the same address but with a different | ||||
ROVR is rejected with a status of 1 ("Duplicate Address").</li> | ||||
</ul> | ||||
<t>The operation of the Binding Table is specified in detail in <xref target | ||||
='crea'/>. | ||||
</t> | ||||
</section> | ||||
<section anchor='primary'><name>Primary and Secondary 6BBRs</name> | ||||
<t> | ||||
A Registering Node <bcp14>MAY</bcp14> register the same address to more than | ||||
one 6BBR, | ||||
in which case, the Registering Node uses the same EARO in all the parallel | ||||
registrations. | ||||
On the other hand, there is no provision in 6LoWPAN ND for a 6LN (acting | ||||
as Registered Node) to select its 6LBR (acting as Registering Node), so it | ||||
cannot select more than one either. | ||||
<!--[rfced] In the following text, does "but" mean "except"? That | ||||
is, are NS(DAD) and NA messages with an EARO are used to | ||||
select the primary 6BBR but are ignored otherwise? | ||||
Original: | ||||
To allow for this, NS(DAD) and NA messages with an EARO | ||||
received over the backbone that indicate an identical Binding in | ||||
another 6BBR (same Registered address, same TID, same ROVR) are | ||||
silently ignored but for the purpose of selecting the primary 6BBR for | ||||
that registration. | ||||
--> | ||||
To allow for this, NS(DAD) and NA messages with an EARO received over the | ||||
backbone that indicate an identical Binding in another 6BBR (same Registered | ||||
address, same TID, same ROVR) are silently ignored but for the purpose of | ||||
selecting the primary 6BBR for that registration. | ||||
</t> | ||||
<t> | ||||
A 6BBR may be either primary or secondary. The primary is the 6BBR | ||||
that has the highest 64-bit Extended Unique Identifier (EUI-64) | ||||
address of all the 6BBRs that share a registration for the same | ||||
Registered Address, with the same ROVR and same Transaction ID, and the | ||||
EUI-64 address is considered an unsigned 64-bit integer. | ||||
A given 6BBR can be primary for a given address and secondary for another | ||||
address, regardless of whether or not the addresses belong to the same 6 | ||||
LN. | ||||
</t> | ||||
<t> | ||||
In the following sections, it is expected that an NA will be sent over the | ||||
backbone only if the node is primary or does not support the concept of | ||||
primary. More than one 6BBR claiming or defending an address generates | ||||
unwanted traffic, but there is no reachability issue since all 6BBRs provide | ||||
reachability from the Backbone to the 6LN. | ||||
</t> | ||||
<t> | ||||
<!--[rfced] Fyi, we inserted '6BBR' after 'its' in the sentence below; | ||||
if this is not correct, please let us know how you would like it | ||||
to be updated. | ||||
Original: | ||||
If a Registering Node loses connectivity to its or one of the 6BBRs | ||||
to which it registered an address, it retries the registration to the | ||||
(one or more) available 6BBR(s). | ||||
Current: | ||||
If a Registering Node loses connectivity to its 6BBR or one of the 6BBRs | ||||
to which it registered an address, it retries the registration to the | ||||
(one or more) available 6BBR(s). | ||||
--> | ||||
If a Registering Node loses connectivity to its 6BBR or one of the 6BBRs to | ||||
which | ||||
it registered an address, it retries the registration to the (one or more) | ||||
available 6BBR(s). When doing that, the Registering Node <bcp14>MUST</bcp14> | ||||
increment the | ||||
TID in order to force the migration of the state to the new 6BBR and | ||||
the reselection of the primary 6BBR if it is the node that was lost. | ||||
</t> | ||||
</section> | ||||
<section anchor='odad'><name>Using Optimistic DAD</name> | ||||
<t> | ||||
ODAD <xref target='RFC4429'></xref> specifies how an IPv6 Address can be | ||||
used before completion of | ||||
DAD. ODAD guarantees that this behavior | ||||
will not cause harm if the new address is a duplicate. </t> | ||||
<t> | ||||
Support for ODAD avoids delays in installing the Neighbor Cache Entry (NC | ||||
E) | ||||
in the 6BBRs and the default router, enabling immediate connectivity | ||||
to the Registered Node. As shown in <xref target='figReg2'/>, if the | ||||
6BBR is aware of the LLA of a router, then the | ||||
6BBR sends a Router Solicitation (RS), using the Registered Address as | ||||
the IP Source Address, to the known router(s). The RS is sent | ||||
without an SLLAO, to avoid invalidating a | ||||
preexisting NCE in the router. | ||||
</t> | ||||
<t> | ||||
Following ODAD, the router may then send a unicast RA to the Registered | ||||
Address, and it may resolve that Address using an NS(Lookup) message. | ||||
In response, the 6BBR sends an NA with an EARO and the Override flag | ||||
<xref target='RFC4861'/> that is not set. | ||||
The router can then determine the freshest EARO in case of | ||||
conflicting NA(EARO) messages, using the method described in | ||||
<xref target='RFC8505' sectionFormat="of" section="5.2.1"/>. | ||||
If the NA(EARO) is the freshest answer, the default router creates a | ||||
Binding with the SLLAO of the 6BBR (in Routing Proxy mode) or that of the | ||||
Registering Node (in Bridging Proxy mode), so traffic from/to the | ||||
Registered Address can flow immediately. | ||||
</t> | ||||
</section> | ||||
</section> | ||||
<section anchor='sn'><name>Multi-Link Subnet Considerations</name> | ||||
<t> | ||||
The Backbone and the federated LLN links are considered to be different | ||||
links in the MLSN, even if multiple LLNs are attached to | ||||
the same 6BBR. ND messages are link-scoped and are not forwarded by the | ||||
6BBR between the backbone and the LLNs, though some packets may be | ||||
reinjected in Bridging Proxy mode (see <xref target='bridge_proxy'/>). | ||||
</t> | ||||
<t> | ||||
Legacy nodes located on the backbone expect that the subnet is deployed | ||||
within a single link and that there is a common Maximum Transmission Unit | ||||
(MTU) for intra-subnet communication: the Link MTU. | ||||
They will not perform the IPv6 Path MTU Discovery <xref target='RFC8201'/> | ||||
for a destination within the subnet. For that reason, the MTU <bcp14>MUST</ | ||||
bcp14> have | ||||
the same value on the Backbone and on all federated LLNs in the MLSN. As | ||||
a | ||||
consequence, the 6BBR <bcp14>MUST</bcp14> use the same MTU value in RAs over | ||||
the Backbone | ||||
and in the RAs that it transmits toward the LLN links. | ||||
</t> | ||||
</section> | ||||
<section anchor='lbr'><name>Optional 6LBR Serving the Multi-Link Subnet</name> | ||||
<t> | ||||
A 6LBR can be deployed to serve the whole MLSN. It may be attached to the | ||||
backbone, in which case it can be discovered by its capability advertisement | ||||
(see <xref target='RFC8505' sectionFormat="of" section="4.3"/>) in RA messag | ||||
es. | ||||
</t> | ||||
<t> | ||||
When a 6LBR is present, the 6BBR uses an EDAR/EDAC message | ||||
exchange with the 6LBR to check if the new registration corresponds to a dup | ||||
lication or a movement. | ||||
This is done prior to the NS(DAD) process, which may be avoided if | ||||
the 6LBR already maintains a conflicting state for the Registered Address. | ||||
</t> | ||||
<t> | ||||
If this registration is a duplicate or not the freshest, then the 6LBR | ||||
replies with an EDAC message with a status code of 1 ("Duplicate Address") o | ||||
r 3 ("Moved"), respectively. | ||||
If this registration is the freshest, then the 6LBR replies with a status | ||||
code of 0 ("Success"). In that case, if this registration is fresher than a | ||||
n existing | ||||
registration for another 6BBR, then the 6LBR also sends an asynchronous | ||||
EDAC with a status of 4 ("Removed") to the older 6BBR. | ||||
</t> | ||||
<t> | ||||
The EDAR message <bcp14>SHOULD</bcp14> carry the SLLAO used in NS messages b | ||||
y the 6BBR | ||||
for that Binding, and the EDAC message <bcp14>SHOULD</bcp14> carry the Targe | ||||
t Link-Layer | ||||
Address Option (TLLAO) associated with the currently accepted registration. | ||||
This enables a 6BBR to locate | ||||
the new position of a mobile 6LN in the case of a Routing Proxy operation | ||||
and opens the capability for the 6LBR to serve as a mapping server in the | ||||
future. | ||||
</t> | ||||
<t> | ||||
Note that if Link-Local Addresses are registered, then the scope of | ||||
uniqueness on which the address duplication is checked is the total | ||||
collection of links that the 6LBR serves, as opposed to the sole link on | ||||
which the Link-Local Address is assigned. | ||||
</t> | ||||
</section> | ||||
<section anchor='bbrbb'><name>Using IPv6 ND over the Backbone Link</name> | ||||
<t> | ||||
On the Backbone side, the 6BBR <bcp14>MUST</bcp14> join the SNMA group co | ||||
rresponding | ||||
to a Registered Address as soon as it creates a Binding for that | ||||
Address and maintain that SNMA membership as long as it maintains the | ||||
registration. | ||||
The 6BBR uses either the SNMA or plain unicast to | ||||
defend the Registered Addresses in its Binding Table over the | ||||
Backbone (as specified in <xref target='RFC4862'/>). | ||||
The 6BBR advertises and defends the Registered Addresses over the | ||||
Backbone Link using RS, NS(DAD), and NA messages with the Registered | ||||
Address as the Source or Target Address. | ||||
</t> | ||||
<t> | ||||
The 6BBR <bcp14>MUST</bcp14> place an EARO in the IPv6 ND messages that it g | ||||
enerates | ||||
on behalf of the Registered Node. Note that an NS(DAD) does not | ||||
contain an SLLAO and cannot be confused with a proxy registration such as | ||||
performed by a 6LBR. | ||||
</t> | ||||
<t> | ||||
IPv6 ND operates as follows on the backbone: | ||||
</t> | ||||
<ul> | ||||
<li> | ||||
<xref target='RFC4861' sectionFormat="of" section="7.2.8"/> specifies that a | ||||
n NA message generated as a proxy does not have the Override flag set in order t | ||||
o ensure that if the real owner is present on the link, its own NA will take pre | ||||
cedence, and this NA does not update the NCE for the real owner if one exists. | ||||
</li> | ||||
<li> | ||||
A node that receives multiple NA messages updates an existing NCE only if th | ||||
e Override flag is set; otherwise, the node will probe the cached address. | ||||
</li> | ||||
<!--[rfced] FYI - In the sentence below, we moved the RFC 4862 citation so | ||||
that it follows the text it is referencing. | ||||
Original: | ||||
When an NS(DAD) is received for a tentative address, which means | ||||
that two nodes form the same address at nearly the same time, | ||||
section 5.4.3 of [RFC4862] cannot detect which node first claimed | ||||
the address and the address is abandoned. | ||||
Current: | ||||
When an NS(DAD) is received for a tentative address, which means | ||||
that two nodes form the same address at nearly the same time, | ||||
the node that first claimed the address cannot be detected per | ||||
Section 5.4.3 of [RFC4862], and the address is abandoned. | ||||
--> | ||||
<li> | ||||
When an NS(DAD) is received for a tentative address, which means that two no | ||||
des form the same address at nearly the same time, the node that first claimed t | ||||
he address cannot be detected per <xref target='RFC4862' sectionFormat="of" sect | ||||
ion="5.4.3"/>, and the address is abandoned. | ||||
</li> | ||||
<li> | ||||
In any case, <xref target='RFC4862'/> indicates that a node never responds | ||||
to a Neighbor Solicitation for a tentative address. | ||||
</li> | ||||
</ul> | ||||
<t> | ||||
This specification adds information about proxied addresses that helps to so | ||||
rt out a duplication (different ROVR) from a movement (same ROVR, different TID) | ||||
; in the latter case, the older registration is sorted out from the fresher one | ||||
(by comparing TIDs). | ||||
</t> | ||||
<t> | ||||
When a Registering Node moves from one 6BBR to the next, the new 6BBR sends | ||||
NA messages over the backbone to update existing NCEs. | ||||
A node that supports this specification and that receives multiple NA messag | ||||
es with an EARO option and the same ROVR <bcp14>MUST</bcp14> favor the NA with t | ||||
he freshest EARO over the others. | ||||
</t> | ||||
<t> | ||||
The 6BBR <bcp14>MAY</bcp14> set the Override flag in the NA messages if it d | ||||
oes not compete | ||||
with the Registering Node for the NCE in backbone nodes. This is assured if | ||||
the Registering Node is attached via an interface that cannot be bridged | ||||
onto the backbone, making it impossible for the Registering Node to defend | ||||
its own addresses there. This may also be signaled by the Registering Node t | ||||
hrough a protocol extension that is not in scope for this specification. | ||||
</t> | ||||
<t> | ||||
When the Binding is in Tentative state, the 6BBR acts as follows: | ||||
</t> | ||||
<ul> | ||||
<li> | ||||
an NS(DAD) that indicates a duplication can still not be asserted for first | ||||
come, but the situation can be avoided using a 6LBR on the backbone that will se | ||||
rialize the order of appearance of the address and ensure first-come, first-serv | ||||
ed. | ||||
</li> | ||||
<li> | ||||
an NS or an NA that denotes an older registration for the same Registered No | ||||
de is not interpreted as a duplication as specified in Sections <xref target='RF | ||||
C4862' section="5.4.3" sectionFormat="bare"/> and <xref target='RFC4862' section | ||||
="5.4.4" sectionFormat="bare" /> of <xref target="RFC4862"/>, respectively. | ||||
</li> | ||||
</ul> | ||||
<t> | ||||
When the Binding is no longer in Tentative state, the 6BBR acts as follows: | ||||
</t> | ||||
<ul> | ||||
<li> | ||||
an NS or an NA with an EARO that denotes a duplicate registration | ||||
(different ROVR) is answered with an NA message that carries an | ||||
EARO with a status of 1 ("Duplicate Address"), unless the received | ||||
message is an NA that carries an EARO with a status of 1 | ||||
("Duplicate Address"). | ||||
</li> | ||||
</ul> | ||||
<t> | ||||
In any state, the 6BBR acts as follows: | ||||
</t> | ||||
<ul> | ||||
<li> | ||||
an NS or an NA with an EARO that denotes an older registration (same ROVR) i | ||||
s answered with an NA message that carries an EARO with a status of 3 ("Moved") | ||||
to ensure that the Stale state is removed rapidly. | ||||
</li> | ||||
</ul> | ||||
<t> | ||||
This behavior is specified in more detail in <xref target='crea'/>. | ||||
</t> | ||||
<t> | ||||
This specification enables proxy operation for the IPv6 ND resolution of | ||||
LLN devices, and a prefix that is used across an MLSN <bcp14>MAY</bcp14> be | ||||
advertised as on-link over the Backbone. This is done for backward | ||||
compatibility with existing IPv6 hosts by setting the L flag in the Prefix | ||||
Information Option (PIO) of RA messages <xref target='RFC4861'/>. | ||||
</t> | ||||
<t> | ||||
For movement involving a slow reattachment, the NUD procedure | ||||
defined in <xref target='RFC4861'/> may timeout too | ||||
quickly. Nodes on the backbone <bcp14>SHOULD</bcp14> support <xref targe | ||||
t='RFC7048'/> | ||||
whenever possible. | ||||
</t> | ||||
</section> | ||||
<section anchor='rtr_proxy'><name>Routing Proxy Operations</name> | ||||
<t> | ||||
A Routing Proxy provides IPv6 ND proxy functions for Global and Unique | ||||
Local Addresses between the LLN and the backbone, but not for Link-Local | ||||
addresses. It operates as an IPv6 border router and provides a full | ||||
Link-Layer isolation. | ||||
</t> | ||||
<t> | ||||
In this mode, it is not required that the MAC addresses of the 6LNs be | ||||
visible at Layer 2 over the Backbone. Thus, it is useful when the messaging | ||||
over the Backbone that is associated with wireless mobility becomes | ||||
expensive, e.g., when the Layer 2 topology is virtualized over a wide area | ||||
IP underlay. | ||||
</t> | ||||
<t> | ||||
This mode is definitely required when the LLN uses a MAC address format | ||||
that is different from that on the Backbone (e.g., EUI-64 versus EUI-48). | ||||
Since a 6LN may not be able to resolve an arbitrary destination in the | ||||
MLSN directly, a prefix that is used across a MLSN <bcp14>MUST NOT</bcp14> b | ||||
e advertised as | ||||
on-link in RA messages sent towards the LLN. | ||||
</t> | ||||
<t> | ||||
In order to maintain IP connectivity, the 6BBR installs a connected | ||||
host route to the Registered Address on the LLN interface, via the | ||||
Registering Node as identified by the source address and the SLLA | ||||
option in the NS(EARO) messages. | ||||
</t> | ||||
<t> | ||||
When operating as a Routing Proxy, the 6BBR <bcp14>MUST</bcp14> use its Laye | ||||
r 2 | ||||
address on its Backbone interface in the SLLAO of the RS messages and | ||||
the TLLAO of the NA messages that it generates to advertise the | ||||
Registered Addresses. | ||||
</t> | ||||
<t> | ||||
For each Registered Address, multiple peers on the Backbone may | ||||
have resolved the Address with the 6BBR MAC address, maintaining that | ||||
mapping in their Neighbor Cache. The 6BBR <bcp14>SHOULD</bcp14> maintain | ||||
a list of | ||||
the peers on the Backbone that have associated its MAC address with | ||||
the Registered Address. If that Registered Address moves to another 6BBR, | ||||
the previous 6BBR <bcp14>SHOULD</bcp14> unicast a gratuitous NA to each s | ||||
uch peer, to supply the LLA of the new 6BBR in the TLLA option for the Address. | ||||
A 6BBR that does not maintain this list <bcp14>MAY</bcp14> multicast a | ||||
gratuitous NA message; this NA | ||||
will possibly hit all the nodes on the Backbone, whether or not | ||||
they maintain an NCE for the Registered Address. | ||||
In either case, the 6BBR <bcp14>MAY</bcp14> set the Override flag if it is k | ||||
nown that the Registered Node cannot attach to the backbone; this will avoid int | ||||
erruptions and save probing flows in the future. | ||||
</t> | ||||
<t> | ||||
If a correspondent fails to receive the gratuitous NA, it will keep | ||||
sending traffic to a 6BBR to which the node was previously registered. | ||||
Since the previous 6BBR removed its host route to the Registered Address, | ||||
it will look up the address over the backbone, resolve the address | ||||
with the LLA of the new 6BBR, and forward the packet to the correct | ||||
6BBR. The previous 6BBR <bcp14>SHOULD</bcp14> also issue a redirect mess | ||||
age | ||||
<xref target='RFC4861'/> to update the cache of the correspondent. | ||||
</t> | ||||
</section> | ||||
<section anchor='bridge_proxy'><name>Bridging Proxy Operations</name> | ||||
<t> | ||||
A Bridging Proxy provides IPv6 ND proxy functions between the LLN and the | ||||
backbone while preserving the forwarding continuity at the MAC layer. | ||||
It acts as a Layer 2 bridge for all types of unicast packets including | ||||
link-scoped, and it appears as an IPv6 Host on the Backbone. | ||||
</t> | ||||
<t> | ||||
The Bridging Proxy registers any Binding, including a Link-Local | ||||
address to the 6LBR (if present), and defends it over the backbone in IPv6 | ||||
ND procedures. | ||||
</t> | ||||
<t> | ||||
To achieve this, the Bridging Proxy intercepts the IPv6 ND messages | ||||
and may reinject them on the other side, respond directly, or drop them. | ||||
For instance, an ND(Lookup) from the backbone that matches a Binding can be | ||||
responded to directly or turned into a unicast on the LLN side to let the | ||||
6LN respond. | ||||
</t> | ||||
<t> | ||||
As a Bridging Proxy, the 6BBR <bcp14>MUST</bcp14> use the Registering Nod | ||||
e's Layer 2 | ||||
address in the SLLAO of the NS/RS messages and the TLLAO of the NA | ||||
messages that it generates to advertise the Registered Addresses. | ||||
The Registering Node's Layer 2 address is found in the SLLA of the | ||||
registration NS(EARO) and maintained in the Binding Table. | ||||
</t> | ||||
<t> | ||||
The MLSN prefix <bcp14>SHOULD NOT</bcp14> be advertised as on-link in RA | ||||
messages sent towards the LLN. | ||||
If a destination address is seen as on-link, then a 6LN may use NS(Lookup) | ||||
messages to resolve that address. In that case, the 6BBR <bcp14>MUST</bcp14> | ||||
either answer the NS(Lookup) message directly or reinject the message on the | ||||
backbone, as either a Layer 2 unicast or a multicast. | ||||
</t> | ||||
<t> | ||||
If the Registering Node owns the Registered Address, meaning that the Regist | ||||
ering Node is the Registered Node, then its mobility does not impact exis | ||||
ting NCEs over the Backbone. | ||||
In a network where proxy registrations are used, meaning that the Registerin | ||||
g Node acts on behalf of the Registered Node, if the Registered Node selects a n | ||||
ew Registering Node, then the existing NCEs across the Backbone pointing at the | ||||
old Registering Node must be updated. | ||||
In that case, the 6BBR <bcp14>SHOULD</bcp14> attempt to fix the existing NCE | ||||
s across the Backbone pointing at other 6BBRs using NA messages as described in | ||||
<xref target='rtr_proxy'/>. | ||||
</t> | ||||
<t> | ||||
This method can fail if the multicast message is not received; one or | ||||
more | ||||
correspondent nodes on the Backbone might maintain a stale NCE, | ||||
and packets to the Registered Address may be lost. | ||||
When this condition happens, it is eventually discovered and | ||||
resolved using NUD as | ||||
defined in <xref target='RFC4861'/>. | ||||
</t> | ||||
</section> | ||||
<section anchor='crea'><name>Creating and Maintaining a Binding</name> | ||||
<t> | ||||
Upon receiving a registration for a new Address (i.e., an NS(EARO) with | ||||
the R flag set), the 6BBR creates a Binding and operates as a 6LR accordi | ||||
ng | ||||
to <xref target='RFC8505'/>, interacting with the 6LBR if one is present. | ||||
</t> | ||||
<t> | ||||
An implementation of a Routing Proxy that creates a Binding <bcp14>MUST</bcp | ||||
14> also create an associated host route pointing to the Registering Node in the | ||||
LLN | ||||
interface from which the registration was received. | ||||
</t> | ||||
<t> | ||||
Acting as a 6BBR, the 6LR operation is modified as follows: | ||||
</t><ul> | ||||
<li> | ||||
Acting as a Bridging Proxy, the 6LR | ||||
<bcp14>MUST</bcp14> proxy-ND over the backbone for registered Link-Local | ||||
Addresses. | ||||
</li> | ||||
<li> | ||||
EDAR and EDAC messages <bcp14>SHOULD</bcp14> carry an SLLAO and a TLLAO, | ||||
respectively. | ||||
</li> | ||||
<li> | ||||
An EDAC message with a status of 9 ("6LBR Registry Saturated") is | ||||
assimilated as a status of 0 ("Success") if a following DAD process prot | ||||
ects the | ||||
address against duplication. | ||||
</li> | ||||
</ul> | ||||
<t> | ||||
This specification enables nodes on a Backbone Link to coexist along | ||||
with nodes implementing IPv6 ND <xref target='RFC4861'/> as well as other | ||||
non-normative specifications such as <xref target='I-D.bi-savi-wlan'/>. | ||||
It is possible that not all IPv6 addresses on the Backbone are registered | ||||
and known to the 6LBR, and an EDAR/EDAC exchange with the 6LBR might | ||||
succeed even for a duplicate address. | ||||
Consequently, the 6BBR still | ||||
needs to perform IPv6 ND DAD over the backbone after an EDAC with a | ||||
status code of 0 ("Success") or 9 ("6LBR Registry Saturated"). | ||||
</t> | ||||
<t> | ||||
For the DAD operation, the Binding is placed in Tentative state for a | ||||
duration of TENTATIVE_DURATION (<xref target='const'/>), | ||||
and an NS(DAD) message is sent as a multicast | ||||
message over the Backbone to the SNMA associated with the registered Address | ||||
<xref target='RFC4862'/>. | ||||
The EARO from the registration <bcp14>MUST</bcp14> be placed unchanged in th | ||||
e NS(DAD) | ||||
message. | ||||
</t> | ||||
<t> | ||||
If a registration is received for an existing Binding with a non-null | ||||
Registration Lifetime and the registration is fresher (same ROVR, fresher TI | ||||
D), then the Binding is updated with the new Registration Lifetime, | ||||
TID, and possibly Registering Node. In Tentative state | ||||
(see <xref target='tent'/>), the current DAD operation continues unaltered. | ||||
In other states (see Sections <xref target='defend' format='counter'/> and < | ||||
xref target='stale' format='counter'/> ), | ||||
the Binding is placed in Reachable state for the Registration Lifetime, and | ||||
the 6BBR returns an NA(EARO) to the Registering Node with a status of 0 | ||||
("Success"). | ||||
</t> | ||||
<t> | ||||
Upon a registration that is identical (same ROVR, TID, and Registering | ||||
Node), the 6BBR does not alter its current state. In Reachable state, it ret | ||||
urns an NA(EARO) back to the Registering Node with a status of 0 ("Success"). | ||||
A registration that is not as fresh (same ROVR, older TID) is ignored. | ||||
</t> | ||||
<t> | ||||
If a registration is received for an existing Binding and a Registration | ||||
Lifetime of 0, then the Binding is removed, and the 6BBR returns an | ||||
NA(EARO) back to the Registering Node with a status of 0 ("Success"). | ||||
An implementation of a Routing Proxy that removes a binding <bcp14>MUST</bcp | ||||
14> remove the | ||||
associated host route pointing on the Registering Node. | ||||
</t> | ||||
<t> | ||||
The old 6BBR removes its Binding Table entry and notifies the Registering No | ||||
de with a status of 3 ("Moved") if a new 6BBR claims a fresher registration (sam | ||||
e ROVR, fresher TID) for the same address. | ||||
The old 6BBR <bcp14>MAY</bcp14> preserve a temporary state in order to forwa | ||||
rd packets in | ||||
flight. | ||||
<!--[rfced] Please clarify the following sentence. Is the NCE formed | ||||
when an NA message is received? If so, please let us know if the | ||||
suggested text is agreeable. | ||||
Original: | ||||
The state may for instance be a NCE formed based | ||||
on a received NA message. | ||||
Perhaps: | ||||
The state may be, for instance, an NCE that was | ||||
formed when an NA message was received. | ||||
--> | ||||
The state may be, for instance, an NCE formed based on a received NA message | ||||
. It may also be a Binding Table entry in Stale state, pointing at the new 6BBR | ||||
on the backbone or any other abstract cache entry that can be used to resolve th | ||||
e Link-Layer Address of the new 6BBR. | ||||
<!--[rfced] Please clarify the following sentence. Does the Registered | ||||
Address point to the new 688R? | ||||
Original: | ||||
The old 6BBR SHOULD also use REDIRECT messages as | ||||
specified in [RFC4861] to update the correspondents | ||||
for the Registered Address, pointing to the new 6BBR. | ||||
Perhaps: | ||||
The old 6BBR SHOULD also use REDIRECT messages as | ||||
specified in [RFC4861] to update the correspondents | ||||
for the Registered Address, which points to the new | ||||
6BBR. | ||||
--> | ||||
The old 6BBR <bcp14>SHOULD</bcp14> also use REDIRECT messages as specified i | ||||
n | ||||
<xref target='RFC4861'/> to update the correspondents for the Registered | ||||
Address, pointing to the new 6BBR. | ||||
</t> | ||||
<section anchor='tent'><name>Operations on a Binding in Tentative State</nam | ||||
e> | ||||
<t>The Tentative state covers a DAD period over the backbone during which | ||||
an address being registered is checked for duplication using the procedures | ||||
defined in <xref target='RFC4862'/>. | ||||
</t> | ||||
<t> | ||||
For a Binding in Tentative state: | ||||
</t><ul> | ||||
<li> | ||||
The Binding <bcp14>MUST</bcp14> be removed if an NA message is received o | ||||
ver the | ||||
Backbone for the Registered Address with no EARO or with an EARO that in | ||||
dicates an existing registration owned by a different Registering Node (differen | ||||
t ROVR). In that case, an NA is | ||||
sent back to the Registering Node with a status of 1 | ||||
("Duplicate Address") to indicate that the binding has been rejected. Thi | ||||
s behavior might be overridden by policy, in particular | ||||
if the registration is trusted, e.g., based on the validation of the | ||||
ROVR field (see <xref target='RFC8928'/>). | ||||
</li> | ||||
<li> | ||||
The Binding <bcp14>MUST</bcp14> be removed if an NS(DAD) message is recei | ||||
ved over the | ||||
Backbone for the Registered Address with no EARO or with an EARO that ha | ||||
s a different ROVR that indicates a tentative registration by a different Regist | ||||
ering Node. In that case, an NA is | ||||
sent back to the Registering Node with a status of 1 | ||||
("Duplicate Address"). This behavior might be overridden by policy, in p | ||||
articular | ||||
if the registration is trusted, e.g., based on the validation of the | ||||
ROVR field (see <xref target='RFC8928'/>). | ||||
</li> | ||||
<li> | ||||
<!--[rfced] Please confirm if a word missing after 'with a' (e.g., 'an | ||||
EARO with a that indicates'); note that there are 2 instances in | ||||
the text. | ||||
1) | ||||
Original: | ||||
The Binding MUST be removed if an NA or an NS(DAD) | ||||
message is received over the Backbone for the | ||||
Registered Address containing an EARO with a that | ||||
indicates a fresher registration ([RFC8505]) for | ||||
the same Registering Node (same ROVR). | ||||
Perhaps: | ||||
The Binding MUST be removed if an NA or an NS(DAD) | ||||
message is received over the Backbone for the | ||||
Registered Address and contains an EARO that | ||||
indicates a fresher registration [RFC8505] | ||||
for the same Registering Node (same ROVR). | ||||
2) | ||||
Original: | ||||
The Binding MUST be kept unchanged if an NA or | ||||
an NS(DAD) message is received over the Backbone | ||||
for the Registered Address containing an EARO | ||||
with a that indicates an older registration | ||||
([RFC8505]) for the same Registering Node | ||||
(same ROVR). | ||||
Perhaps: | ||||
The Binding MUST be kept unchanged if an NA or | ||||
an NS(DAD) message is received over the Backbone | ||||
for the Registered Address and contains an EARO | ||||
that indicates an older registration [RFC8505] | ||||
for the same Registering Node (same ROVR). | ||||
--> | ||||
The Binding <bcp14>MUST</bcp14> be removed if an NA or an NS(DAD) messag | ||||
e is received over the Backbone for the Registered Address containing an EARO wi | ||||
th a that indicates a fresher registration <xref target='RFC8505'/> for the same | ||||
Registering Node (same ROVR). In that case, an NA <bcp14>MUST</bcp14> be sent b | ||||
ack to the Registering Node with a status of 3 ("Moved"). | ||||
</li> | ||||
<li> | ||||
The Binding <bcp14>MUST</bcp14> be kept unchanged if an NA or an NS(DAD) | ||||
message is received over the Backbone for the Registered Address containing an | ||||
EARO with a that indicates an older registration <xref target='RFC8505'/> for th | ||||
e same Registering Node (same ROVR). The message is answered with an NA that car | ||||
ries an EARO with a status of 3 ("Moved") and the Override flag not set. This be | ||||
havior might be overridden by policy, in particular if the registration is not t | ||||
rusted. | ||||
</li> | ||||
<li> Other NS(DAD) and NA messages from the Backbone are ignored. | ||||
</li> | ||||
<li> NS(Lookup) and NS(NUD) messages <bcp14>SHOULD</bcp14> be optimistica | ||||
lly answered with | ||||
an NA message containing an EARO with a status of 0 | ||||
("Success") and the Override | ||||
flag not set (see <xref target='odad'/>). | ||||
If optimistic DAD is disabled, then they <bcp14>SHOULD</bcp14> be queued | ||||
to be answered | ||||
when the Binding goes to Reachable state. | ||||
</li> | ||||
</ul> | ||||
<t> When the TENTATIVE_DURATION (<xref target='const'/>) timer elapses, | ||||
the Binding is placed in | ||||
Reachable state for the Registration Lifetime, and the 6BBR returns | ||||
an NA(EARO) to the Registering Node with a status of 0 ("Success"). | ||||
</t> | ||||
<t> | ||||
The 6BBR also attempts to take over any existing Binding from other | ||||
6BBRs and to update existing NCEs in backbone nodes. This is done by | ||||
sending an NA message with an EARO and the Override flag not set over | ||||
the backbone | ||||
(see Sections <xref target='rtr_proxy' format='counter'/> and <xref targ | ||||
et='bridge_proxy' format='counter'/>). | ||||
</t> | ||||
</section> | ||||
<section anchor='defend'><name>Operations on a Binding in Reachable State</n | ||||
ame> | ||||
<t> | ||||
The Reachable state covers an active registration after a successful DAD | ||||
process. | ||||
</t> | ||||
<t> | ||||
If the Registration Lifetime is of a long duration, | ||||
an implementation might be configured to reassess the availability of the | ||||
Registering Node at a lower period, using a NUD procedure as specified in | ||||
<xref target='RFC7048'/>. If the NUD procedure fails, the Binding <bcp14>SHO | ||||
ULD</bcp14> be | ||||
placed in Stale state immediately. | ||||
</t> | ||||
<t> | ||||
For a Binding in Reachable state: | ||||
</t><ul > | ||||
<li> | ||||
The Binding <bcp14>MUST</bcp14> be removed if an NA or an NS(DAD) messag | ||||
e is received | ||||
over the Backbone for the Registered Address and contains an EARO that | ||||
indicates a fresher registration <xref target='RFC8505'/> for the same | ||||
Registered Node (i.e., same ROVR but fresher TID). | ||||
A status of 4 ("Removed") is returned in an asynchronous NA(EARO) to the | ||||
Registering Node. | ||||
Based on configuration, an implementation may delay this operation by a | ||||
timer with a short setting, e.g., a few seconds to a minute, in order | ||||
to allow for a parallel registration to reach this node, in which case | ||||
the NA might be ignored. | ||||
</li> | ||||
<li> NS(DAD) and NA messages containing an EARO that indicates a | ||||
registration for the same Registered Node that is not as fresh as this | ||||
binding <bcp14>MUST</bcp14> be answered with an NA message containing an | ||||
EARO with a | ||||
status of 3 ("Moved"). | ||||
</li> | ||||
<li> An NS(DAD) with no EARO or with an EARO that indicates a duplicate | ||||
registration (i.e., different ROVR) <bcp14>MUST</bcp14> be answered with | ||||
an NA message | ||||
containing an EARO with a status of 1 ("Duplicate Address") and the Over | ||||
ride flag | ||||
not set, unless the received message is an NA that carries an | ||||
EARO with a status of 1 ("Duplicate Address"), in which case the node ref | ||||
rains from answering. | ||||
</li> | ||||
<li> Other NS(DAD) and NA messages from the Backbone are ignored. | ||||
</li> | ||||
<li> NS(Lookup) and NS(NUD) messages <bcp14>SHOULD</bcp14> be answered wi | ||||
th | ||||
an NA message containing an EARO with a status of 0 | ||||
("Success") and the Override | ||||
flag not set. The 6BBR <bcp14>MAY</bcp14> check whether | ||||
the Registering Node is still available using a NUD procedure over the | ||||
LLN prior to answering; | ||||
this behavior depends on the use case and is subject to configuration. | ||||
</li> | ||||
</ul> | ||||
<t> When the Registration Lifetime timer elapses, the Binding is placed i | ||||
n | ||||
Stale state for a duration of STALE_DURATION (<xref target='const'/>). | ||||
</t> | ||||
</section> | ||||
<section anchor='stale'><name>Operations on a Binding in Stale State</name> | ||||
<t> | ||||
The Stale state enables tracking of the Backbone peers that have a | ||||
NCE pointing to this 6BBR in case the Registered Address shows up later. | ||||
</t> | ||||
<t> | ||||
If the Registered Address is claimed by another 6LN on the Backbone, with an | ||||
NS(DAD) or an NA, the 6BBR does not defend the Address. | ||||
</t> | ||||
<t> | ||||
For a Binding in Stale state: | ||||
</t><ul> | ||||
<li> | ||||
The Binding <bcp14>MUST</bcp14> be removed if an NA or an NS(DAD) message | ||||
is received | ||||
over the Backbone for the Registered Address with no EARO or with | ||||
an EARO that indicates either a fresher registration for the same | ||||
Registered Node or a duplicate registration. | ||||
A status of 4 ("Removed") <bcp14>MAY</bcp14> be returned in an asynchron | ||||
ous NA(EARO) to | ||||
the Registering Node. | ||||
</li> | ||||
<li> NS(DAD) and NA messages containing an EARO that indicates a | ||||
registration for the same Registered Node that is not as fresh as this | ||||
<bcp14>MUST</bcp14> be answered with an NA message containing an EARO wi | ||||
th a | ||||
status of 3 ("Moved"). | ||||
</li> | ||||
<li> If the 6BBR receives an NS(Lookup) or an NS(NUD) message for the | ||||
Registered Address, the 6BBR <bcp14>MUST</bcp14> attempt a NUD procedure | ||||
as specified | ||||
in <xref target='RFC7048'/> to the Registering Node, targeting | ||||
the Registered Address, prior to answering. If the NUD procedure | ||||
succeeds, the operation in Reachable state applies. If the NUD fails, | ||||
the 6BBR refrains from answering. </li> | ||||
<li> Other NS(DAD) and NA messages from the Backbone are ignored. | ||||
</li> | ||||
</ul> | ||||
<t> When the STALE_DURATION (<xref target='const'/>) timer elapses, the | ||||
Binding <bcp14>MUST</bcp14> be removed. | ||||
</t> | ||||
</section> | ||||
</section> | ||||
<section anchor='lln_proxy'><name>Registering Node Considerations</name> | ||||
<t> | ||||
A Registering Node <bcp14>MUST</bcp14> implement <xref target='RFC8505'/> | ||||
in order to | ||||
interact with a 6BBR (which acts as a Routing Registrar). Following | ||||
<xref target='RFC8505'/>, the Registering Node signals that it requires IPv6 | ||||
proxy-ND services from a 6BBR by registering the corresponding IPv6 Address | ||||
using an NS(EARO) message with the R flag set. | ||||
</t> | ||||
<t> | ||||
The Registering Node may be the 6LN owning the IPv6 Address or a 6LBR tha | ||||
t | ||||
performs the registration on its behalf in a Route-Over mesh. | ||||
</t> | ||||
<t> | ||||
A 6LN <bcp14>MUST</bcp14> register all of its IPv6 Addresses to its 6LR, | ||||
which is the 6BBR when they are connected at Layer 2. Failure to register an | ||||
address may result in the address being unreachable by other parties. Thi | ||||
s | ||||
would happen, for instance, if the 6BBR propagates the NS(Lookup) from the b | ||||
ackbone only to the LLN nodes that do not register their addresses. | ||||
</t> | ||||
<t> | ||||
The Registering Node <bcp14>MUST</bcp14> refrain from using multicast NS(Loo | ||||
kup) when the | ||||
destination is not known as on-link, e.g., if the prefix is advertised | ||||
in a PIO with the L flag not set. In that case, the Registering | ||||
Node sends its packets directly to its 6LR. | ||||
</t> | ||||
<t> | ||||
The Registering Node <bcp14>SHOULD</bcp14> also follow <xref target='RFC7 | ||||
772'>BCP 202</xref> in order to | ||||
limit the use of multicast RAs. It <bcp14>SHOULD</bcp14> also implement | ||||
"Simple Procedures for Detecting Network Attachment | ||||
in IPv6" <xref target='RFC6059'></xref> (DNA procedures) to detect movements | ||||
and | ||||
support | ||||
"Packet-Loss Resiliency for Router Solicitations" <xref target='RFC7559'> | ||||
</xref> in order to | ||||
improve reliability for the unicast RS messages. | ||||
</t> | ||||
</section> | ||||
<section anchor='sec'><name>Security Considerations</name> | ||||
<t> | ||||
The procedures in this document modify the mechanisms used for IPv6 ND | ||||
and DAD and should not affect other aspects of IPv6 or | ||||
higher-level-protocol operation. As such, the main classes of attacks | ||||
that are in play are those that work to block Neighbor Discovery or to | ||||
forcibly claim an address that another node is attempting to use. In the | ||||
absence of cryptographic protection at higher layers, the latter class of | ||||
attacks can have significant consequences, with the attacker being able | ||||
to read all the "stolen" traffic that was directed to the target of the | ||||
attack. | ||||
</t> | ||||
<t> | ||||
This specification applies to LLNs and a backbone in which the individual | ||||
links are protected against rogue access on the LLN by authenticating a node th | ||||
at attaches to the network and encrypting the transmissions at the MAC layer and | ||||
on the backbone side, using the physical security and access control measures t | ||||
hat are typically applied there; thus, packets may neither be forged nor overhea | ||||
rd. | ||||
</t> | ||||
<t> | ||||
In particular, the LLN MAC is required to provide secure unicast to/from | ||||
the | ||||
Backbone Router and secure broadcast from the routers | ||||
in a way that prevents tampering with or replaying the ND messages. | ||||
</t> | ||||
<t> | ||||
For the IPv6 ND operation over the backbone, and unless the classical ND | ||||
is disabled (e.g., by configuration), the classical ND messages are | ||||
interpreted as emitted by the address owner and have precedence over the | ||||
6BBR that is only a proxy. | ||||
</t> | ||||
<t> | ||||
As a result, the security threats that are | ||||
detailed in <xref target='RFC4861' sectionFormat="of" section="11.1"/> fully | ||||
apply to this | ||||
specification as well. In short: | ||||
</t> | ||||
<ul> | ||||
<li> | ||||
Any node that can send a packet on the backbone can take over any address, | ||||
including addresses of LLN nodes, by | ||||
claiming it with an NA message and the Override bit set. This means that the | ||||
real owner will stop receiving its packets. | ||||
</li> | ||||
<li> | ||||
Any node that can send a packet on the backbone can forge traffic and | ||||
pretend it is issued from an address that it does not own, even if it did | ||||
not claim the address using ND. | ||||
</li> | ||||
<li> | ||||
Any node that can send a packet on the backbone can present itself as a | ||||
preferred router to intercept all traffic outgoing on the subnet. It may eve | ||||
n | ||||
expose a prefix on the subnet as "not-on-link" and intercept all the traffic | ||||
within the subnet. | ||||
</li> | ||||
<li>If the rogue can receive a packet from the backbone, it can also snoop | ||||
all the intercepted traffic, by stealing an address or the role of a | ||||
router. | ||||
</li> | ||||
</ul> | ||||
<t> | ||||
This means that any rogue access to the backbone must be prevented | ||||
at all times, and nodes that are attached to the backbone must be fully | ||||
trusted / never compromised. | ||||
</t> | ||||
<t> | ||||
Using address registration as the sole ND mechanism on a link and coupling | ||||
it with <xref target='RFC8928'/> guarantees the ownership of a registered ad | ||||
dress within that link. | ||||
</t> | ||||
<ul> | ||||
<li> | ||||
The protection is based on a proof of ownership encoded in the ROVR field, a | ||||
nd it protects against address theft and impersonation by a 6LN, because the 6LR | ||||
can challenge the Registered Node for a proof of ownership. | ||||
</li> | ||||
<li> | ||||
The protection extends to the full LLN in the case of an LLN link, but it do | ||||
es not extend over the backbone since the 6BBR cannot provide the proof of owner | ||||
ship | ||||
when it defends the address. | ||||
</li> | ||||
</ul> | ||||
<t> | ||||
A possible attack over the backbone can be done by sending an NS with | ||||
an EARO and expecting the NA(EARO) back to contain the TID and ROVR | ||||
fields of the existing state. With that information, the attacker can | ||||
easily increase the TID and take over the Binding. | ||||
</t> | ||||
<t> | ||||
If the classical ND is disabled on the backbone and the use of <xref target= | ||||
'RFC8928'/> and a 6LBR are mandated, the network will benefit from | ||||
the following new advantages: | ||||
</t> | ||||
<dl> | ||||
<dt>Zero-trust security for ND flows within the whole subnet:</dt> | ||||
<dd> | ||||
the increased security that <xref target='RFC8928'/> provides on the LLN wil | ||||
l also apply to the backbone; it becomes impossible for an attached node to clai | ||||
m an address that belongs to another node using ND, and the network can filter p | ||||
ackets that are not originated by the owner of the source address (Source Addres | ||||
s Validation Improvement (SAVI)), as long as the routers are known and trusted. | ||||
</dd> | ||||
<dt>Remote ND DoS attack avoidance:</dt> | ||||
<dd>the complete list of addresses in the network will be known to the 6LBR | ||||
and available to the default router; with that information, the router does not | ||||
need to send a multicast NA(Lookup) in case of a Neighbor Cache miss for an inco | ||||
ming packet, which is a source of remote DoS attack against the network. | ||||
</dd> | ||||
<dt>Less IPv6 ND-related multicast on the backbone:</dt> | ||||
<dd> | ||||
DAD and NS(Lookup) become unicast queries to the 6LBR. | ||||
</dd> | ||||
<dt>Better DAD operation on wireless:</dt> | ||||
<dd> | ||||
DAD has been found to fail to detect duplications on large Wi-Fi infrastruct | ||||
ures due to the unreliable broadcast operation on wireless; using a 6LBR enables | ||||
a unicast lookup. | ||||
</dd> | ||||
<dt>Less Layer 2 churn on the backbone:</dt> | ||||
<dd> | ||||
Using the Routing Proxy approach, the Link-Layer address of the LLN devices | ||||
and their mobility are not visible in the backbone; only the Link-Layer addresse | ||||
s of the 6BBR and backbone nodes are visible at Layer 2 on the backbone. This is | ||||
mandatory for LLNs that cannot be bridged on the backbone and useful in any cas | ||||
e to scale down, stabilize the forwarding tables at Layer 2, and avoid the gratu | ||||
itous frames that are typically broadcasted to fix the transparent bridging tabl | ||||
es when a wireless node roams from an AP to the next. | ||||
</dd> | ||||
</dl> | ||||
<t> | ||||
This specification introduces a 6BBR that is a router on the path of the LLN | ||||
traffic and a 6LBR that is used for the lookup. They could be interesting | ||||
targets for an attacker. A compromised 6BBR can accept a registration but | ||||
block the traffic or refrain from proxying. A compromised 6LBR may | ||||
unduly accept the transfer of ownership of an address or block a newcomer by | ||||
faking that its address is a duplicate. But those attacks are possible | ||||
in a classical network from a compromised default router and a DHCP | ||||
server, respectively, and can be prevented using the same methods. | ||||
</t> | ||||
<t> | ||||
A possible attack over the LLN can still be done by compromising a 6LR. | ||||
A compromised 6LR may modify the ROVR of EDAR messages in flight and transfe | ||||
r | ||||
the ownership of the Registered Address to itself or a tier. It may also cla | ||||
im | ||||
that a ROVR was validated when it really wasn't and reattribute an address | ||||
to itself or to an attached 6LN. This means that 6LRs, as well as 6LBRs and | ||||
6BBRS, must still be fully trusted / never compromised. | ||||
</t> | ||||
<t> | ||||
This specification mandates checking on the 6LBR on the backbone before doin | ||||
g | ||||
the classical DAD, in case the address already exists. This may delay the DA | ||||
D | ||||
operation and should be protected by a short timer, in the order of 100 ms o | ||||
r | ||||
less, which will only represent a small extra delay versus the 1 s wait of t | ||||
he | ||||
DAD operation. | ||||
</t> | ||||
</section> | ||||
<section anchor='const'><name>Protocol Constants</name> | ||||
<t> | ||||
This specification uses the following constants: | ||||
</t><dl> | ||||
<dt>TENTATIVE_DURATION:</dt><dd>800 milliseconds</dd> | ||||
</dl> | ||||
<t> | ||||
In LLNs with long-lived Addresses such as Low-Power WAN (LPWANs), STALE_D | ||||
URATION | ||||
<bcp14>SHOULD</bcp14> be configured with a relatively long value to cover | ||||
an interval when the address may be reused and before it is safe to expect that | ||||
the address was definitively released. A good default value is 24 hours. | ||||
In LLNs where addresses are renewed rapidly, e.g., for privacy reasons, | ||||
STALE_DURATION <bcp14>SHOULD</bcp14> be configured with a relatively shor | ||||
ter value -- 5 minutes by default. | ||||
</t> | ||||
</section> | ||||
<section><name>IANA Considerations</name> | ||||
<t> This document has no IANA actions.</t> | ||||
</section> | ||||
</middle> | ||||
<back> | ||||
<displayreference target="I-D.yourtchenko-6man-dad-issues" to="DAD-ISSUES"/> | ||||
<displayreference target="I-D.nordmark-6man-dad-approaches" to="DAD-APPROACHES"/ | ||||
> | ||||
<displayreference target="I-D.ietf-6man-rs-refresh" to="RS-REFRESH"/> | ||||
<displayreference target="I-D.ietf-mboned-ieee802-mcast-problems" to="MCAST-PROB | ||||
LEMS"/> | ||||
<displayreference target="I-D.bi-savi-wlan" to="SAVI-WLAN"/> | ||||
<displayreference target="I-D.thubert-6lo-unicast-lookup" to="UNICAST-LOOKUP"/> | ||||
<displayreference target="I-D.ietf-6tisch-architecture" to="TISCH-ARCHITECTURE"/ | ||||
> | ||||
<references><name>Normative References</name> | ||||
<xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refere | ||||
nce.RFC.2119.xml'/> | ||||
<xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refere | ||||
nce.RFC.4291.xml'/> | ||||
<xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refere | ||||
nce.RFC.4429.xml'/> | ||||
<xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refere | ||||
nce.RFC.4861.xml'/> | ||||
<xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refere | ||||
nce.RFC.4862.xml'/> | ||||
<xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refere | ||||
nce.RFC.6059.xml'/> | ||||
<xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refere | ||||
nce.RFC.6775.xml'/> | ||||
<xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refere | ||||
nce.RFC.7048.xml'/> | ||||
<xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refere | ||||
nce.RFC.7559.xml'/> | ||||
<xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refere | ||||
nce.RFC.7772.xml'/> | ||||
<xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refere | ||||
nce.RFC.8174.xml'/> | ||||
<xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refere | ||||
nce.RFC.8200.xml'/> | ||||
<xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refere | ||||
nce.RFC.8201.xml'/> | ||||
<xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refere | ||||
nce.RFC.8505.xml'/> | ||||
</references> | ||||
<references><name>Informative References</name> | ||||
<xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refere | ||||
nce.RFC.4389.xml'/> | ||||
<xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refere | ||||
nce.RFC.4903.xml'/> | ||||
<xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refere | ||||
nce.RFC.5415.xml'/> | ||||
<xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refere | ||||
nce.RFC.5568.xml'/> | ||||
<xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refere | ||||
nce.RFC.6606.xml'/> | ||||
<xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refere | ||||
nce.RFC.6275.xml'/> | ||||
<xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refere | ||||
nce.RFC.6550.xml'/> | ||||
<xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refere | ||||
nce.RFC.6830.xml'/> | ||||
<xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refere | ||||
nce.RFC.8273.xml'/> | ||||
<!--[I-D.yourtchenko-6man-dad-issues]; IESG state - Expired --> | ||||
<xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/refer | ||||
ence.I-D.yourtchenko-6man-dad-issues.xml'/> | ||||
<!--[I-D.nordmark-6man-dad-approaches]; IESG state - Expired --> | ||||
<xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/refer | ||||
ence.I-D.nordmark-6man-dad-approaches.xml'/> | ||||
<!--[I-D.ietf-6man-rs-refresh]; IESG state - Expired --> | ||||
<xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/refer | ||||
ence.I-D.ietf-6man-rs-refresh.xml'/> | ||||
<!--[I-D.ietf-6lo-ap-nd] in EDIT state; C310 companion document--> | ||||
<!--Note: per updates to the companion doc's title, capped "Power" and added a h | ||||
yphen--> | ||||
<reference anchor='RFC8928' target='https://www.rfc-editor.org/info/rfc8928'> | ||||
<front> | ||||
<title>Address-Protected Neighbor Discovery for Low-Power and Lossy Networks</ti | ||||
tle> | ||||
<author initials='P' surname='Thubert' fullname='Pascal Thubert' role='editor'> | ||||
<organization /> | ||||
</author> | ||||
<author initials='B' surname='Sarikaya' fullname='Behcet Sarikaya'> | ||||
<organization /> | ||||
</author> | ||||
<author initials='M' surname='Sethi' fullname='Mohit Sethi'> | ||||
<organization /> | ||||
</author> | ||||
<author initials='R' surname='Struik' fullname='Rene Struik'> | ||||
<organization /> | ||||
</author> | ||||
<date month='October' year='2020' /> | ||||
</front> | ||||
<seriesInfo name="RFC" value="8928"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8928"/> | ||||
</reference> | ||||
<!--[I-D.ietf-6tisch-architecture] in MISSREF state as of 04/08/20 --> | ||||
<xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/refer | ||||
ence.I-D.ietf-6tisch-architecture.xml'/> | ||||
<!-- [rfced] [I-D.ietf-mboned-ieee802-mcast-problems] IESG state IESG Ev | ||||
aluation::Revised I-D Needed --> | ||||
<xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/refer | ||||
ence.I-D.ietf-mboned-ieee802-mcast-problems.xml'/> | ||||
<!-- [rfced] [I-D.bi-savi-wlan] IESG state I-D Exists --> | ||||
<xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/refe | ||||
rence.I-D.bi-savi-wlan.xml'/> | ||||
<!-- [rfced] [I-D.thubert-6lo-unicast-lookup] IESG state Expired --> | ||||
<xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/refer | ||||
ence.I-D.thubert-6lo-unicast-lookup.xml'/> | ||||
<!--[rfced] There are several IEEE Std 802.1 documents, and we are | ||||
unable to locate the specific document outlined below. Please | ||||
provide the standard number and URL for the document you would | ||||
like to cite, so we can review the title and include a link/DOI. | ||||
Original: | ||||
[IEEEstd8021] | ||||
IEEE standard for Information Technology, "IEEE Standard | ||||
for Information technology - Telecommunications and | ||||
information exchange between systems Local and | ||||
metropolitan area networks Part 1: Bridging and | ||||
Architecture". | ||||
--> | ||||
<!-- [IEEEstd8021]--> | ||||
<reference anchor='IEEEstd8021'> | ||||
<front> | ||||
<title> | ||||
IEEE Standard for Information technology -- Telecommunications | ||||
and information exchange between systems Local and metropolitan | ||||
area networks Part 1: Bridging and Architecture | ||||
</title> | ||||
<author> | ||||
<organization>IEEE</organization> | ||||
</author> | ||||
</front> | ||||
<refcontent>IEEE Std 802.1</refcontent> | ||||
</reference> | ||||
<!--[IEEEstd80211] URL https://ieeexplore.ieee.org/document/7786995 --> | ||||
<reference anchor='IEEEstd80211' target='https://ieeexplore.ieee.org/document/77 | ||||
86995'> | ||||
<front> | ||||
<title>IEEE Standard for Information technology--Telecommunications and inform | ||||
ation exchange between systems Local and metropolitan area networks--Specific re | ||||
quirements - Part 11: Wireless LAN Medium Access Control (MAC) and Physical Laye | ||||
r (PHY) Specifications</title> | ||||
<author> | ||||
<organization>IEEE</organization> | ||||
</author> | ||||
<date month='December' year='2016' /> | ||||
</front> | ||||
<seriesInfo name='IEEE' value='802.11-2012' /> | ||||
<seriesInfo name='DOI' value='10.1109/ieeestd.2016.7786995' /> | ||||
</reference> | ||||
<!-- [IEEEstd802151] URL https://ieeexplore.ieee.org/document/1490827 --> | ||||
<reference anchor='IEEEstd802151' target='https://ieeexplore.ieee.org/document/1 | ||||
490827'> | ||||
<front> | ||||
<title>IEEE Standard for Information technology--Local and metropolitan area n | ||||
etworks--Specific requirements--Part 15.1a: Wireless Medium Access Control (MAC) | ||||
and Physical Layer (PHY) specifications for Wireless Personal Area Networks (WP | ||||
AN)</title> | ||||
<author> | ||||
<organization>IEEE</organization> | ||||
</author> | ||||
<date month='June' year='2005' /> | ||||
<abstract><t>Methods for communicating devices in a personal area network (PAN | ||||
) are covered in this standard.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name='IEEE' value='802.15.1-2005' /> | ||||
<seriesInfo name='DOI' value='10.1109/ieeestd.2005.96290' /> | ||||
</reference> | ||||
<!-- [IEEEstd802154] URL https://ieeexplore.ieee.org/document/6012487 --> | ||||
<reference anchor='IEEEstd802154' target='https://ieeexplore.ieee.org/document/6 | ||||
012487'> | ||||
<front> | ||||
<title>IEEE Standard for Local and metropolitan area networks--Part 15.4: Low-R | ||||
ate Wireless Personal Area Networks (LR-WPANs)</title> | ||||
<author> | ||||
<organization>IEEE</organization> | ||||
</author> | ||||
<date month='September' year='2011' /> | ||||
</front> | ||||
<seriesInfo name='IEEE' value='802.15.4-2011' /> | ||||
<seriesInfo name='DOI' value='10.1109/ieeestd.2011.6012487'/> | ||||
</reference> | ||||
</references> | ||||
<section><name>Possible Future Extensions</name> | ||||
<t> | ||||
With the current specification, the 6LBR is not leveraged to avoid | ||||
multicast NS(Lookup) on the Backbone. This could be done by adding | ||||
a lookup procedure in the EDAR/EDAC exchange. | ||||
</t> | ||||
<t> | ||||
By default, the specification does not have a fine-grained trust model: all | ||||
nodes that can authenticate to the LLN MAC or attach to the backbone are equally | ||||
trusted. It would be desirable to provide a stronger authorization model, e.g. | ||||
, whereby | ||||
nodes that associate their address with a proof of ownership | ||||
<xref target='RFC8928'/> should be trusted more than nodes that | ||||
do not. Such a trust model and related signaling could be added in the | ||||
future to override the default operation and favor trusted nodes. | ||||
</t> | ||||
<t> | ||||
<!--[rfced] We updated the list of routing protocols for clarity (by | ||||
removing 2 instances of "or" and adding one instnace of | ||||
"over"). Please confirm if this retains the intended meaning or | ||||
if you prefer otherwise. | ||||
Original: | ||||
Future documents may extend this specification by allowing the 6BBR | ||||
to redistribute Host routes in routing protocols that would operate | ||||
over the Backbone, or in MIPv6 [RFC6275], or FMIP [RFC5568], or the | ||||
Locator/ID Separation Protocol (LISP) [RFC6830] to support mobility | ||||
on behalf of the 6LNs, etc... | ||||
Current: | ||||
Future documents may extend this specification by allowing the 6BBR | ||||
to redistribute host routes in routing protocols that would operate | ||||
over the Backbone, in MIPv6 [RFC6275], in Fast Handovers for Mobile | ||||
IP (FMIP) [RFC5568], or over the Locator/ID Separation Protocol (LISP) | ||||
[RFC6830] to support mobility on behalf of the 6LNs, etc. | ||||
--> | ||||
Future documents may extend this specification by allowing the | ||||
6BBR to redistribute host routes in routing protocols that would | ||||
operate over the Backbone, in MIPv6 <xref target='RFC6275'/>, in Fast Han | ||||
dovers for Mobile IP (FMIP) <xref target='RFC5568'/>, or over the | ||||
Locator/ID Separation Protocol (LISP) <xref target='RFC6830'></xref> | ||||
to support mobility on behalf of the 6LNs, etc. | ||||
LISP may also be used to provide an equivalent to the EDAR/EDAC exchange | ||||
using a Map Server / Map Resolver as a replacement to the 6LBR. | ||||
</t> | ||||
</section> | ||||
<section anchor='app'><name>Applicability and Requirements Served</name> | ||||
<t> | ||||
This document specifies proxy-ND functions that can be used to | ||||
federate an IPv6 Backbone Link and multiple IPv6 LLNs into a | ||||
single MLSN. The proxy-ND functions enable IPv6 ND | ||||
services for DAD and address lookup | ||||
that do not require broadcasts over the LLNs. | ||||
</t> | ||||
<t> | ||||
The term LLN is used to cover multiple types of WLANs and WPANs, | ||||
including (Low-Power) Wi-Fi, BLUETOOTH(R) Low Energy, | ||||
IEEE Std 802.11ah and IEEE Std 802.15.4 wireless meshes, and the | ||||
types of networks listed in "Requirements Related to Various Low-Power Li | ||||
nk Types" | ||||
(see <xref target='RFC8505' sectionFormat="of" section="B.3"/>). | ||||
</t> | ||||
<t> | ||||
<!--[rfced] Please clarify if "IPv6 Backbone Router (6BBR)" is correct | ||||
or if the intended meaning is "6LoWPAN Backbone Router | ||||
(6BBR)". If the latter, since 6BBR has already been expanded | ||||
earlier in the document, may we update the text to be "Each LLN | ||||
in the subnet is attached to a 6BBR"? | ||||
Original: | ||||
Each LLN in the subnet is attached to an IPv6 Backbone Router (6BBR). | ||||
Perhaps: | ||||
Each LLN in the subnet is attached to a 6BBR. | ||||
--> | ||||
Each LLN in the subnet is attached to an IPv6 Backbone Router (6BBR). | ||||
The Backbone Routers interconnect the LLNs and advertise the Addresses | ||||
of the 6LNs over the Backbone Link using proxy-ND operations. | ||||
</t> | ||||
<t> | ||||
This specification updates IPv6 ND over the Backbone to | ||||
distinguish Address movement from duplication and eliminate Stale | ||||
state in the Backbone routers and Backbone nodes once a 6LN has | ||||
roamed. This way, mobile nodes may roam rapidly from | ||||
one 6BBR to the next, and requirements are met per "Requirements Related | ||||
to Mobility" (see | ||||
<xref target='RFC8505' sectionFormat="of" section="B.1"/>). | ||||
</t> | ||||
<t> | ||||
A 6LN can register its IPv6 Addresses and thereby obtain proxy-ND | ||||
services over the Backbone, meeting the requirements | ||||
expressed in "Requirements Related to Proxy Operations" (see <xref target | ||||
='RFC8505' sectionFormat="of" section="B.4"/>. | ||||
</t> | ||||
<t> | ||||
<!-- CEP: This does not belong here. It is specified later, as is proper. | ||||
In the latter case, the 6BBR maintains the list of correspondents | ||||
to which it has advertised its own MAC Address on behalf of the LLN | ||||
node. | ||||
--> | ||||
The negative impact of the IPv6 ND-related broadcasts can be limited to o | ||||
ne of the federated links, enabling the number of 6LNs to grow. The Routing Prox | ||||
y operation avoids the need to expose the MAC addresses of the 6LNs onto the bac | ||||
kbone, keeping the Layer 2 topology simple and stable. This meets the requireme | ||||
nts in "Requirements Related to Scalability" (see <xref target='RFC8505' section | ||||
Format="of" section="B.6"/>), as long as the 6BBRs are dimensioned for the numbe | ||||
r of registrations that each needs to support. | ||||
</t> | ||||
<t> | ||||
In the case of a Wi-Fi access link, a 6BBR may be collocated | ||||
with the AP, a Fabric Edge (FE), or a Control and Provisioning of Wireles | ||||
s Access Points (CAPWAP) | ||||
<xref target='RFC5415'/> Wireless LAN Controller (WLC). | ||||
In those cases, the wireless client (STA) is the 6LN | ||||
that makes use of <xref target='RFC8505'/> to register its IPv6 | ||||
Address(es) to the 6BBR acting as the Routing Registrar. The 6LBR can be | ||||
centralized and either connected to the Backbone Link or reachable | ||||
over IP. | ||||
The 6BBR proxy-ND operations eliminate the need for wireless nodes | ||||
to respond synchronously when a lookup is performed for their IPv6 | ||||
Addresses. This provides the function of a Sleep Proxy for ND | ||||
<xref target='I-D.nordmark-6man-dad-approaches'/>. | ||||
</t> | ||||
<t> | ||||
For the Time-Slotted Channel Hopping (TSCH) mode of | ||||
<xref target='IEEEstd802154'/>, the | ||||
6TiSCH architecture <xref target='I-D.ietf-6tisch-architecture'></xref> | ||||
describes how a 6LoWPAN ND host could connect to the Internet via a | ||||
RPL mesh network, but doing so requires extensions to the 6LOWPAN ND | ||||
protocol to support mobility and reachability in a secure and | ||||
manageable environment. The extensions detailed in this document | ||||
also work for the 6TiSCH architecture, serving the requirements listed | ||||
in "Requirements Related to Routing Protocols" (see <xref target='RFC8505 | ||||
' sectionFormat="of" section="B.2"/>). | ||||
</t> | ||||
<t> | ||||
The registration mechanism may be seen as a more reliable alternate to | ||||
snooping <xref target='I-D.bi-savi-wlan'/>. Note that | ||||
registration and snooping are not mutually exclusive. Snooping may be used i | ||||
n | ||||
conjunction with the registration for nodes that do not register their IPv6 | ||||
Addresses. | ||||
The 6BBR assumes that if a node registers at least one IPv6 Address to it, | ||||
then the node registers all of its Addresses to the 6BBR. | ||||
With this assumption, the 6BBR can possibly cancel all undesirable multicast | ||||
NS messages that would otherwise have been delivered to that node. | ||||
</t> | ||||
<t> | ||||
Scalability of the MLSN <xref target='RFC4903'/> requires | ||||
avoidance of multicast/broadcast operations as much as possible even on | ||||
the Backbone <xref target='I-D.ietf-mboned-ieee802-mcast-problems'/>. | ||||
Although hosts can connect to the Backbone using IPv6 ND operations, | ||||
multicast RAs can be saved by using | ||||
<xref target='I-D.ietf-6man-rs-refresh'/>, which also requires the | ||||
support of <xref target='RFC7559'/>. | ||||
</t> | ||||
</section> | ||||
<section anchor="acknowledgements" numbered="false" toc="default"><name>Acknowle | ||||
dgments</name> | ||||
<t>Many thanks to <contact fullname="Dorothy Stanley"/>, <contact fullname=" | ||||
Thomas Watteyne"/>, and <contact fullname="Jerome Henry"/> for their various con | ||||
tributions. | ||||
Also, many thanks to <contact fullname="Timothy Winters"/> and <contact full | ||||
name="Erik Nordmark"/> for their help, review, and support in preparation for th | ||||
e IESG cycle and to <contact fullname="Kyle Rose"/>, <contact fullname="Elwyn Da | ||||
vies"/>, <contact fullname="Barry Leiba"/>, <contact fullname="Mirja Kuehlewind" | ||||
/>, <contact fullname="Alvaro Retana"/>, <contact fullname="Roman Danyliw"/>, an | ||||
d especially <contact fullname="Dominique Barthel"/> and <contact fullname="Benj | ||||
amin Kaduk"/> for their useful contributions through the IETF Last Call and IESG | ||||
process. | ||||
</t> | ||||
</section> | ||||
</back> | ||||
<!-- [rfced] Throughout the text, the following terminology appears to be used | ||||
inconsistently. Please review these occurrences and let us know if/how they | ||||
may be made consistent. | ||||
Address vs. address (when used in general) | ||||
Some examples: | ||||
ensure that the Address is not | ||||
register a given Address, but the Address | ||||
resolve that Address using | ||||
for a tentative address | ||||
form the same address | ||||
the address is abandoned | ||||
[Note: we recommend using the lowercase version when 'address' | ||||
is not a part of a term] | ||||
Fyi, note that we updated these terms to reflect lowercase 'address': | ||||
address lookup (per use in other RFCs) | ||||
EUI-64 address (per use in RFC 8505) | ||||
Layer 2 address (per use in other RFCs and the companion document) | ||||
MAC address (per use in RFC 8505) | ||||
... | ||||
Link vs. link (when used in general) | ||||
Some examples: | ||||
Each Link in the | ||||
each Link providing | ||||
on a Link and to | ||||
within a single link | ||||
mechanism on a link | ||||
is present on the link | ||||
[Note: we recommend using the lowercase version when 'link' | ||||
is not a part of a term.] | ||||
... | ||||
Backbone vs. backbone (and related terms) | ||||
We see Backbone Routers and Backbone routers | ||||
Backbone and backbone when alone in text (no router or link following) | ||||
--> | ||||
<!--[rfced] Please note that we made the use of status codes uniform | ||||
using "status code of # ("name of code")" format. We tried to | ||||
make the names uniform and insert the names where they were | ||||
missing. Please review these updates as well as if the names | ||||
should be double marked (using parentheses and double quotes).--> | ||||
</rfc> | ||||
End of changes. 1 change blocks. | ||||
lines changed or deleted | 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/ |