<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent">

<?rfc toc="yes"?>
<?rfc tocompact="yes"?>
<?rfc tocdepth="3"?>
<?rfc tocindent="yes"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc compact="no"?>
<?rfc subcompact="no"?>
<?rfc authorship="yes"?>
<?rfc tocappendix="yes"?>
<rfc  xmlns:xi="http://www.w3.org/2001/XInclude" category="std" ipr='trust200902' tocInclude="true" updates='' obsoletes="" consensus="true"
      submissionType="IETF" xml:lang="en" version="3"
      docName="draft-thubert-bess-secure-evpn-mac-signaling-03" >


<front>


    <title abbrev='EVPN Secure MAC'>Secure EVPN MAC Signaling</title>

   <author initials='P' surname='Thubert' fullname="Pascal Thubert" role="editor">
      <organization abbrev='Cisco Systems'>Cisco Systems, Inc</organization>
      <address>
         <postal>
          <country>France</country>
         </postal>
         <phone>+33 497 23 26 34</phone>
         <email>pthubert@cisco.com</email>
      </address>
   </author>

    <author fullname="Tony Przygienda" initials="A." surname="Przygienda">
        <organization>Juniper Networks, Inc</organization>
        <address>
            <postal>
                <country>Switzerland
                </country>
            </postal>
            <phone/>
            <email>prz@juniper.net
            </email>
            <uri/>
        </address>
    </author>
    <author initials="J." surname="Tantsura" fullname="Jeff Tantsura">
            <organization>Microsoft</organization>
        <address>
                <email>jefftant.ietf@gmail.com</email>
        </address>
    </author>

<!--
   <author initials='S' surname='Litkowski' fullname='Stephane Litkowski' >
      <organization abbrev='Cisco Systems'>Cisco Systems, Inc</organization>
      <address>
         <postal>
          <country>France</country>
         </postal>
         <phone></phone>
         <email>slitkows@cisco.com</email>
      </address>
   </author>

   <author initials='A' surname='Sajassi' fullname='Ali Sajassi' >
      <organization abbrev='Cisco Systems'>Cisco Systems, Inc</organization>
      <address>
         <postal>
          <country>France</country>
         </postal>
         <phone></phone>
         <email>sajassi@cisco.com</email>
      </address>
   </author>

-->

<date/>
<area>Routing</area>
<workgroup>BESS</workgroup>


<abstract>
<t>
  This specification adds attributes to EVPN to carry IPv6 address metadata
  learned from RFC 8505 and RFC 8928 so as to maintain a synchronized copy of
  the 6LoWPAN ND registrar at each EVPN router and perform locally a unicast
  IPv6 ND service for address lookup and duplicate address detection.
</t>
</abstract>


</front>

<middle>


<section anchor='introduction'><name>Introduction</name>


<t>
  <xref target='RFC8505'>"Registration Extensions for IPv6 over 6LoWPAN
  Neighbor Discovery"</xref> (ND) provides a zeroconf routing-agnostic
  Host-to-Router Link-Local interface for Stateful Address Autoconfiguration.
  <xref target='RFC8928'>"Address-Protected Neighbor Discovery for Low-Power and
  Lossy Networks"</xref> (AP-ND) adds a zeroconf anti-theft protection that protects the ownership of the autoconfigured address with autoconfigured proof of ownership called a Registration Ownership Verifier (ROVR).
</t>
<t>
  <xref target='RFC8505'/> enables the host to claim an IPv6 address and obtain
  reachability services for that address. It is already used to inject host
  routes in RPL <xref target='RFC9010'/> and RIFT
  <xref target='I-D.ietf-rift-rift'>"Routing in Fat Trees"</xref>, and to
  maintain a proxy-ND state in a backbone router <xref target='RFC8929'/>; this
  specification extends its applicability to the case of Ethernet Virtual
  Private Network (EVPN).
</t>

<t>
  <xref target="RFC8505"/> specifies a unicast address registration mechanism
  that enables the host called a 6LowPAN Node (6LN) to install a ND binding
  state in the 6LowPAN Router (6LR) that can serve as Neighbor Cache Entry (NCE),
  though it is not operated as a cache.
  The protocol provides the means to reject the registration in case of address
  duplication. It also enables to discriminate mobility from multihoming.
  <xref target='RFC8928'/> adds the capability to verify the ownership of the
  address and prevent an attacker from stealing and/or impersonating an address.
</t>

<t>
  <xref target="RFC8505"/> defines the 6LoWPAN Border Router (6LBR) as an
  abstract address registrar that provides authoritative service for Address
  Registration and duplicate detection. The 6LBR stores address metadata
  that is obtained during the Address Registration, including an owner ID and a
  sequence counter.
  As part of the process of a new Address Registration, the 6LR queries the 6LBR
  for existing metadata related to the address being registered. This enables in
  particular to detect a duplication and reject the registration.
  This specification extends the 6LBR abstract data model to store the
  Link Layer Address (LLA) of the Registering Node. This enables the 6LBR to
  perform locally, and using unicast communication, the IPv6 ND services of
  address lookup and duplicate address detection.
</t>

<t>
  The <xref target='RFC8505'/> address registrar can be centralized, but it can
  also be distributed and maintained synchronized using a routing protocol.
  This specification adds attributes to EVPN to carry the IPv6 address metadata
  learned from <xref target='RFC8505'/> so as to maintain a synchronized copy of
  the 6LBR abstract data at each EVPN router.
</t>




</section>

<section><name>Terminology</name>
<section anchor='bcp'><name>Requirements Language</name>
<t>

    The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
    "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
    "OPTIONAL" in this document are to be interpreted as described in BCP 14
 <xref target='RFC2119'/> <xref target='RFC8174'/> when, and only when, they
    appear in all capitals, as shown here.

</t>
</section>	<!-- end section "Requirements Language" -->


<section anchor='gloss'><name>Glossary</name>
 <t> This document uses the following acronyms:
    </t>

    <dl  spacing='compact'>
    <dt>6CIO</dt><dd>Capability Indication Option <xref target='RFC7400'/></dd>
    <dt>6LN:</dt><dd> 6LoWPAN Node (the Host) <xref target='RFC6775'/> </dd>
    <dt>6LR:</dt><dd> 6LoWPAN router (the router) <xref target='RFC6775'/></dd>
    <dt>6LBR:</dt><dd> 6LoWPAN Border router  <xref target='RFC6775'/></dd>
    <dt>AMC:</dt><dd> Address Mapping Confirmation <xref target=
         "I-D.thubert-6lo-unicast-lookup"/></dd>
    <dt>AMR:</dt><dd> Address Mapping Request <xref target=
         "I-D.thubert-6lo-unicast-lookup"/></dd>
    <dt>ARO</dt><dd>Address Registration Option  <xref target='RFC6775'/></dd>
    <dt>CIPO:</dt><dd>Crypto-ID Parameters Option</dd>
    <dt>DAD:</dt><dd> Duplicate Address Detection <xref target='RFC4862'/></dd>
    <dt>ICMPv6:</dt><dd> Internet Control Message Protocol for IPv6</dd>
    <dt>DAC</dt><dd>Duplicate Address Confirmation  <xref target='RFC6775'/> </dd>
    <dt>DAR</dt><dd>Duplicate Address Request <xref target='RFC6775'/></dd>
    <dt>EDAC</dt><dd>Extended Duplicate Address Confirmation  <xref target=
       'RFC8505'/></dd>
    <dt>EDAR</dt><dd>Extended Duplicate Address Request <xref target='RFC8505'/></dd>
    <dt>EARO:</dt><dd> Extended Address Registration Option <xref target='RFC8505'/></dd>
    <dt>EVPN:</dt><dd> Ethernet VPN  <xref target='RFC7432'/></dd>
    <dt>LLA:</dt><dd> Link-Layer Address (the MAC address on Ethernet)</dd>
    <dt>LLN</dt><dd>Low-Power and Lossy Network <xref target='RFC6550'/></dd>
    <dt>NA:</dt><dd>  Neighbor Advertisement <xref target='RFC4861'/></dd>
    <dt>NCE:</dt><dd>  Neighbor Cache Entry <xref target='RFC4861'/> </dd>
    <dt>ND:</dt><dd>  Neighbor Discovery <xref target='RFC4861'/> </dd>
    <dt>NDPSO:</dt><dd> Neighbor Discovery Protocol Signature Option</dd>
    <dt>NS:</dt><dd>  Neighbor Solicitation <xref target='RFC4861'/> </dd>
    <dt>RA:</dt><dd>  Router Advertisement <xref target='RFC4861'/> </dd>
    <dt>ROVR:</dt><dd> Registration Ownership Verifier <xref target='RFC8505'/></dd>
    <dt>TID:</dt><dd> Transaction ID (a sequence counter in the EARO) <xref target='RFC8505'/></dd>
    <dt>SLAAC:</dt><dd> Stateless Address Autoconfiguration <xref target='RFC4862'/></dd>
    <dt>SLLAO:</dt><dd> Source Link-Layer Address Option <xref target='RFC4861'/></dd>
    <dt>TLLAO:</dt><dd> Target Link-Layer Address Option <xref target='RFC4861'/></dd>

    <dt>ROVR MAC:</dt><dd> MAC obtained from a host meeting requirements in <xref target="prereq"/> </dd>
    <dt>Validated ROVR MAC:</dt><dd> ROVR MAC validated by procedures specified in <xref target='RFC8928'/></dd>
    <dt>ROVR Node:</dt><dd> EVPN node capable of advertising ROVR MACs </dd>
    <dt>non-ROVR Node:</dt><dd> EVPN node not supporting extensions defined in this document.</dd>
    <dt>VPN:</dt><dd> Virtual Private Network</dd>



    </dl>


</section> <!-- end section "Subset of a 6LoWPAN Glossary" -->


<section anchor='lo'><name>References</name>


<t>
This document uses the terms Clos fabric and Fat Tree interchangeably, to
refer to a folded spine-and-leaf topology as defined in the terminology section
of <xref target='I-D.ietf-rift-rift'>"RIFT: Routing in Fat Trees"</xref>.
</t>
<t>
The term "leaf" represents the access switch that connects the servers to the
Fat Tree. The leaf is typically a Top-of-Rack (ToR) switch.
</t>
<t>
This specification uses the terms 6LN, 6LR and 6LBR to refer specifically to
nodes that implement the said roles in <xref target='RFC8505'/> and does not
expect other functionality such as 6LoWPAN Header Compression:
</t>

<ul>
   <li>
   In the context of this document, the 6LN is a server that advertises an
   address mapping using <xref target='RFC8505'/>, and optionally protects its
   ownership with <xref target='RFC8928'/>.
   </li><li>
   The 6LR and 6LBR function are collapsed at the leaf and its state is
   synchronized with that of the EVPN functional support using an internal
   interface that is out of scope. That interface could be "pull" meaning that
   the 6LBR fetches the EVPN information when it needs it, or "push", meaning
   that any information that EVPN distributes is immediately fed in all the
   6LBRs in all the leaves. Note that this is pure control plane and is not
   subject to abbreviating optimization as the FIB may be.
   </li>
</ul>

<t>
	In this document, readers will encounter terms and concepts
	that are discussed in the following documents:
</t>
<dl>
	<dt>EVPN:</dt><dd> <xref target='RFC7432'>"BGP MPLS-Based Ethernet VPN"
		</xref> and
	    <xref target='RFC8365'>"Network Virtualization Overlay Solution"
		</xref>, </dd>

	<dt>Classical IPv6 ND:</dt><dd> <xref target='RFC4861'>"Neighbor Discovery for IP version 6"
		</xref> and
	    <xref target='RFC4862'>"IPv6 Stateless Address Autoconfiguration"
		</xref>, </dd>


	<dt>6LoWPAN ND:</dt><dd> <xref target='RFC6775'>Neighbor Discovery Optimization for Low-Power
		and Lossy Networks</xref>,
	    <xref target='RFC8505'>
		"Registration Extensions for 6LoWPAN Neighbor Discovery"</xref>,
        <xref target='RFC8928'>
        "Address Protected Neighbor Discovery for Low-power and Lossy Networks"
        </xref>, and <xref target='RFC8929'>"IPv6 Backbone Router"</xref>.
	</dd>
</dl>
</section>	<!-- end section "References" -->

</section>	<!-- end section "Terminology" -->


<section anchor='lpnd'><name>6LoWPAN Neighbor Discovery</name>
<t>
  6LoWPAN Neighbor Discovery defines a stateful address autoconfiguration
  mechanism for IPv6. 6LoWPAN ND enables to divorce the L3 abstractions for
  link and subnet from the characteristics of the L2 link and broadcast domain.
  It is applicable beyond its original field of IoT to any environment where
  the broadcast nature of the underlaying network should not be exploited, e.g.,
  in the case of a wireless link where broadcast uses an excessive amount of
  spectrum, and a distributed cloud, where it may span too widely.
</t>
<t>
  In contrast to Stateless Address Autoconfiguration (SLAAC) <xref target=
  'RFC4862'/> which relies on broadcast for duplicate address detection (DAD)
  and address lookup, 6LoWPAN ND installs and maintains a state in the
  neighbors for the duration of their interaction. Though it is also called a
  Neighbor Cache Entry (BCE) in <xref target='RFC6775'/>, and in contrast with
  the the BCE in SLAAC, that state is not a cache that can be casually flushed
  and rebuilt. It must be installed proactively and refreshed periodically to
  maintain the connectivity and enable unicast-only operations.
</t>

<t>
  This section goes through the 6LoWPAN ND network abstractions and mechanisms
  that this specification leverages, as a non-normative reference to the reader.
  The relevant normative text is to be found in <xref target='RFC6775'/>,
  <xref target='RFC8505'/>, and <xref target='RFC8928'/>.
</t>

<section anchor='link'><name>IPv6 Interface, Link, and Subnet</name>
<t>
  The typical abstraction for an IP Link with 6LoWPAN ND is a logical
  point-to-point (P2P) link between a node (a host or a router) and a router,
  regardless of the physical medium between the node and the router, which
  may or may not be shared with other nodes.
</t>
<t>
  A Subnet is deployed over a mesh of nodes connected with those logical P2P
  Links, where routers form a connected dominating set as represented in
  <xref target="FigMesh"/>; the resulting aggregate is called a multilink subnet
  (MLSN). An MLSN may be only partially meshed, and the underlaying network is
  not expected to provide a multicast or a broadcast service across the subnet.
  </t>
<figure anchor="FigMesh">
          <name>P2P Links in a Multilink Subnet</name>
       <artwork align="center" name="" type="" alt="">
       <![CDATA[

    +------+                     +------+
    | Host |----------+    +-----| Host |
    +------+          |    |     +------+
        |           +--------+
        |   +-------| Router |
        |   |       +--------+
     +--------+        |   |       +------+
     | Router |        |   +------ | Host |
     +--------+        |           +------+
        |   |   +--------+
        |   +---| Router |
        |       +--------+
      +------+     |  |     +------+
      | Host |-----+  +-----| Host |
      +------+                +------+

]]>
       </artwork>
</figure>
<t>
  Consequently, the subnet model is not-on-link, meaning that the any-to-any
  connectivity across the subnet is ensured through L3 operations (routing or
  proxy) as opposed to transitive (any-to-any) reachability from L2. It also
  means that hosts do not lookup other nodes using IPv6 Neighbor Discovery but
  forward all their traffic via their connected routers. Which in turn means
  that only routers need to be discovered, which is done by sending Router
  Advertisement (RA) messages to all directly reachable nodes in the subnet,
  e.g., using a radio broadcast.
</t>

<t>
  As illustrated in <xref target="FigIntf"/>, an IP interface bundles multiple
  sub-interfaces to connect the IP links between this node and peers in the
  same subnet, which is known as a point-to-multipoint (P2MP) interface.
</t>


<figure anchor="FigIntf">
          <name>P2MP Interface</name>
       <artwork align="center" name="" type="" alt="">
       <![CDATA[

    +---------------------
    | P2MP Interface
    | --------------
    |  MAC Address
    |  IPv6 Link-Local address(es)
    |  IPv6 global addresses
    |
    |   +------------------------
    |   | P2P sub-interface
    |   | -----------------
    |   |  Peer MAC Address
    |   |  Peer IP addresses
    |   +------------------------
    |
    |   +------------------------
    |   | P2P sub-interface
    |   | -----------------
    |   |  Peer MAC Address
    |   |  Peer IP addresses
    |   +------------------------
    |
    |   +------------------------
    |   | P2P sub-interface
    |   | -----------------
    |   |  Peer MAC Address
    |   |  Peer IP addresses
    |   +------------------------
    |
    |    ....
    |
    +---------------
]]>
       </artwork>
</figure>
<t>
  In the case of a 6LoWPAN radio, the IP Interface may be physical, and the P2P
  IP links are virtual based on discovered neighbor routers; the same model can
  apply when the node is connected via a switch to one or more routers.
</t>
<t>
  In the case of a multihomed NIC card in a datacenter, the NIC is connected to
  several Top-of-Rack (ToR) switches acting as leaves in the fabric, over as
  many Ethernet physical interfaces.
  If the NIC provides a L2 virtual switch, then the stack can apply the same
  model as above, modeling the virtual port to the virtual switch as a P2MP
  interface.
</t>
<t>
  On the other hand, if the NIC provides a virtual router, then Ethernet ports
  are L3 ports and the physical link to the leaf is modeled as P2P. To form
  the P2MP interface, the router bundles (aggregates) the physical interfaces as
  the sub-interfaces of a single logical P2MP Link, as shown in
  <xref target="FigbundleIntf"/>.
</t>
<figure anchor="FigbundleIntf">
          <name>Logical P2MP Interface</name>
       <artwork align="center" name="" type="" alt="">
       <![CDATA[

    +---------------------
    | NIC Aggregate interface
    | -----------------------
    |  virtual MAC Address
    |  IPv6 global addresses
    |
    |   +------------------------
    |   |  Ethernet Port 1
    |   | -----------------
    |   |  Physical MAC Address
    |   |  IPv6 Link-Local address(es)
    |   |  Leaf MAC Address
    |   |  Leaf IP addresses
    |   +------------------------
    |
    |   +------------------------
    |   | Ethernet Port 2
    |   | -----------------
    |   |  Physical MAC Address
    |   |  IPv6 Link-Local address(es)
    |   |  Leaf MAC Address
    |   |  Leaf IP addresses
    |   +------------------------
    |
    |    ....
    |
    +---------------
]]>
       </artwork>
</figure>
<t>
  To conserve the same model, it makes sense to configure the same (virtual) MAC
  address on all the physical interfaces, and use it for the purpose of IPv6 ND.
  In that case, the same MAC address is exposed as Link-layer Address (LLA) to
  both leaves for the NIC IP addresses, and the IPv6 address still appears as
  unicast.
  Note that the Link-Local addresses used to register the global IPv6 addresses
  to the leaf may be different but that does not affect the exposed mapping.
</t>
<t>
  When that is not possible, then the same IP address is advertised with
  the physical MAC address of each port as the LLA over that port. In that
  case, the global IPv6 address appears as anycast, and SHOULD be advertised
  as such, more in <xref target='mcast'/>.
</t>

</section> <!--IPv6 Interface, Link, and Subnet -->
<section anchor='R6775'><name>RFC 6775 Address Registration</name>

<t>
   The classical "IPv6 Neighbor Discovery (IPv6 ND) Protocol"
   <xref target='RFC4861'/> <xref target='RFC4862'/> was defined for serial
   links and transit media such as Ethernet. It is a reactive protocol that
   relies heavily on multicast operations for Address Discovery (aka Lookup) and
   Duplicate Address Detection (DAD).
</t><t>
   <xref target='RFC6775'>
   "Neighbor Discovery Optimizations for 6LoWPAN networks"</xref>
   adapts IPv6 ND for operations over energy-constrained LLNs.
   The main functions of <xref target='RFC6775'/> are to proactively establish
   the Neighbor Cache Entry (NCE) in the 6LR and to prevent address duplication.
   To that effect, <xref target='RFC6775'/> introduces a new unicast Address
   Registration  mechanism that contributes to reducing the use of multicast
   messages compared to the classical IPv6 ND protocol.

</t><t><xref target='RFC6775'/> defines a new Address
   Registration Option (ARO) that is carried in the unicast
   Neighbor Solicitation (NS) and Neighbor Advertisement (NA) messages between
   the 6LoWPAN Node (6LN) and the 6LoWPAN router (6LR).
   It also defines the Duplicate Address Request (DAR) and Duplicate
   Address Confirmation (DAC) messages between the 6LR and the 6LBR.
   In a Low-Power and Lossy Network (LLN), the 6LBR is the central repository of
   all the Registered Addresses in its domain and the authoritative source of
   truth for uniqueness and ownership.
</t>
</section>	<!-- end section "RFC 6775" -->
<section anchor='R8505E'><name>RFC 8505 Extended Address Registration</name>

<t>
   <xref target='RFC8505'>
   "Registration Extensions for 6LoWPAN Neighbor Discovery"</xref>
   updates RFC 6775 into a generic Address Registration mechanism that can be
   used to access services such as routing and ND proxy. To that effect,
   <xref target='RFC8505'/> defines the Extended Address Registration Option
   (EARO), shown in <xref target='EARO'/>:
</t>
 <figure anchor='EARO'><name>EARO Option Format</name>
 <artwork align="center"> <![CDATA[
   0                   1                   2                   3
   0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |     Type      |     Length    |    Status     |    Opaque     |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |  Rsvd | I |R|T|     TID       |     Registration Lifetime     |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |                                                               |
 ...             Registration Ownership Verifier                 ...
  |                                                               |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    ]]></artwork>
 </figure>


<section anchor='R8505ER'><name>R Flag</name>
<t>
<xref target='RFC8505'/> introduces the R Flag in the EARO.
   The Registering Node sets the R Flag to indicate whether the 6LR should
   ensure reachability for the Registered Address.
   If the R Flag is set to 0, then the Registering Node handles the reachability
   of the Registered Address by other means. In an EVPN network, this means that
   either it is a RAN that injects the route by itself or that it uses another
   EVPN router for reachability services.
</t><t>
   This document specifies how the R Flag is used in the context of EVPN.
   An EVPN Host that implements the 6LN functionality from <xref target='RFC8505'/>
   requires reachability services for an IPv6 address if and only if it sets
   the R Flag in the NS(EARO) used to register the address to a 6LR acting as
   an EVPN border router. Upon receiving the NS(EARO), the EVPN router
   generates a BGP advertisement for the Registered Address if and only if the R
   flag is set to 1.
</t><t>
</t><t>

   <xref target='RFC9010'/> specifies that the 'R' flags is
   set in the responded NA messages if and only if the route was installed.
   This specification echoes that behavior.
</t>

</section> <!-- end section "R Flag" -->
<section anchor='R8505ETID'><name>TID, "I" Field and Opaque Fields</name>

<t>
   When the T Flag is set to 1, the EARO includes a sequence counter called
   Transaction ID (TID), that is needed to format the MAC Mobility Extended Community.
   This is the reason why the support of <xref target='RFC8505'/>
   by the Host, as opposed to only <xref target='RFC6775'/>, is a prerequisite for
   this specification); this requirement is fully explained in
   <xref target='prereq6lp'/>. The EARO also
   transports an Opaque field and an associated "I" field that describes what
   the Opaque field transports and how to use it.
</t><t>
   This document specifies the use of the "I" field and the Opaque
   field by a Host.
</t>

</section> <!-- end section "TID, I Field and Opaque Fields" -->
<section anchor='R8505stat'><name>Status</name>

<t>
   The values of the EARO status are maintained by IANA in the
   Address Registration Option Status Values subregistry
   <xref target="IANA-EARO-STATUS"/> of the
   Internet Control Message Protocol version 6 (ICMPv6) Parameters registry.
</t>
<t>
  <xref target='RFC6775'/> and <xref target='RFC8505'/> defined the original
  values whereas <xref target='RFC9010'/> reduced range to 64 values and
  reformatted the octet field to enable to transport an external error, e.g.,
  coming form a routing protocol.
</t>
<t>
  This specification uses the  format expressed in <xref target='RFC9010'/>.
  The value of 0 denotes an unqualified success, 1 indicates an address
  duplication, 3 a TID value that is outdated, and 4 is used in an asynchronous
  NA to indicate that 6LN should remove that address and possibly form new ones.
</t>
</section> <!-- end section "Status" -->
<section anchor='R8505EROVR'><name>Route Ownership Verifier</name>
<t>
   Section 5.3 of <xref target='RFC8505'/> introduces the Registration
   Ownership Verifier (ROVR) field of variable length from 64 to 256 bits.
   The ROVR is a replacement of the EUI-64 in the ARO
   <xref target='RFC6775'/> that was used to identify uniquely an Address
   Registration with the Link-Layer address of the owner but provided no
   protection against spoofing.
</t><t>

   <xref target='RFC8928'>"Address Protected Neighbor Discovery for
   Low-power and Lossy Networks"</xref> leverages the ROVR field as a
   cryptographic proof of ownership to prevent a rogue third party from
   registering an address that is already owned.
   The use of ROVR field enables the 6LR to block traffic that is not
   sourced at an owned address.
</t><t>

   This specification does not address how the protection by
   <xref target='RFC8928'/> could be extended for use in EVPN.
   On the other hand, it adds the ROVR to the BGP advertisement to share the
   state with the other routers via the Reflector (see <xref target='aec'/>),
   which means that the routers that are aware of the Host route are also aware
   of the ROVR associated to the Target Address, whether it is cryptographic
   and should be verified.
</t>

</section> <!-- end section "ROVR" -->

<section anchor='mcast'><name>Anycast and Multicast Addresses</name>
<t>
  <xref target="I-D.thubert-6lo-multicast-registration">
  "IPv6 Neighbor Discovery Multicast Address Registration"
  </xref> updates <xref target='RFC8505'/>  to enable the address registration
  of IPv6 anycast and multicast addresses. From the host perspective, the
  registration is very similar to that of unicast addresses, but for a flag in
  the EARO that signals that the address is multicast or anycast.
</t><t>
  This procedure can be used as a replacement to <xref target="RFC3810">
  "Multicast Listener Discovery Version 2 (MLDv2) for IPv6" </xref> for
  source-independant multicast operation. As for unicast, the method saves the
  need for the host to listen to pollings from the router, and allows the
  host to sleep for periods of time.
</t>

</section> <!-- end section "RFC 8505 Extended ARO" -->
</section> <!-- end section Anycast and Multicast Addresses -->

<section anchor='R8505D'><name>RFC 8505 Extended DAR/DAC</name>

<t>
   <xref target='RFC8505'/> updates the DAR/DAC messages to EDAR/EDAC messages
   to carry  the ROVR field. The EDAR/EDAC exchange takes place between the 6LR
   to which the node registers an address, and the abstract 6LBR that stores the
   reference value for the ROVR and the TID associated to that address.
   It is triggered by an NS(EARO) message from a 6LN to the 6LR, to create,
   refresh, compare and delete the corresponding state in the 6LBR.
</t>
<t>
   In the status returned with the EDAC message, the 6LBR indicates if the
   registration is accepted, should be challenged, or is duplicate. The status
   of 0 (success) indicates that the address is either new or that the current
   registration matches, and in particular that the ROVR at the 6LBR and the
   one in the EDAR message  are identical.
</t>


<figure anchor="Figedarc">
          <name>EDAR/EDAC flow</name>
       <artwork align="center" name="" type="" alt="">
       <![CDATA[
   6LN               6LR                6LBR
    |                 |                   |
    |   IP Link       |    subnetwork     |
    |                 |                   |
    |  NS(EARO)       |                   |
    |---------------->|                   |
    |                 |                   |
    |                 |    EDAR           |
    |                 |------------------>|
    |                 |                   |
    |                 |      EDAC(status) |
    |                 |<------------------|
    |                 |                   |
    |       NA(EARO)  |                   |
    |<----------------|                   |
    |                 |                   |
]]>
       </artwork>
</figure>
<t>
   The EDAR/EDAC
   exchange is protected by the retry mechanism specified in Section 8.2.6 of
   <xref target='RFC6775'/>, though in a data center, a duration significantly
   shorter than the default value of the Retransmission Timer <xref target=
   'RFC4861'/> of 1 second may be sufficient to cover the round-trip delay
   between the 6R and the 6LBR.
</t>
<t>
   With this specification, the 6LBR is distributed across the leaves, and all
   the leaves where an address is currently registered maintain a full 6LBR
   state for the address, aka local state in the following text.  The
   specification leverages the EDAR/EDAC exchange to ensure
   that a leaf (acting as a 6LR) that needs to create a 6LBR state for a new
   registration has the same value for the ROVR as any 6LBR already serving that
   address on another leaf. At the same time, the specification avoids placing
   full ROVR information in BGP so 1) it is not observable by a potential
   attacker and 2) the new attributes remain reasonably small.
</t>
</section> <!-- end section "RFC 8505 Extended DAR/DAC" -->

<section anchor='R7400'><name>RFC 7400 Capability Indication Option</name>

<t>
   <xref target='RFC7400'> "6LoWPAN-GHC: Generic Header Compression for IPv6
   over Low-Power Wireless Personal Area Networks (6LoWPANs)"</xref> defines the
   6LoWPAN Capability Indication Option (6CIO) that enables a node to expose its
   capabilities in router Advertisement (RA) messages.
</t><t>
   <xref target='RFC8505'/> defines a number of bits in the 6CIO, in particular:
</t>
	<dl spacing='compact'>
	<dt>L:</dt><dd> Node is a 6LR.  </dd>
	<dt>E:</dt><dd> Node is an IPv6 ND Registrar -- i.e., it supports
			  registrations based on EARO.  </dd>
	<dt>P:</dt><dd> Node is a Routing Registrar, -- i.e., an IPv6 ND Registrar
         that also provides reachability services for the Registered Address.
         </dd>
	</dl>
 <figure anchor='CIO'><name>6CIO flags</name>
 <artwork align="center">
    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Type      |   Length = 1  |     Reserved      |D|L|B|P|E|G|
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                           Reserved                            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
</artwork>
 </figure>
 <t>

    A 6LR that provides reachability services for a Host in an EVPN network
    as specified in this document includes a 6CIO in its RA messages and
    set the L, P and E flags to 1 as prescribed by <xref target='RFC8505'/>.
 </t>

</section> <!-- end section "RFC 7400 Capability Indication Option" -->


</section> <!-- end section "6LoWPAN Neighbor Discovery" -->

<section anchor='ext8505'><name>Extending 6LoWPAN ND</name>



<section anchor='upd2'><name>Use of the R flag in NA</name>

<t>
   This document extends <xref target='RFC8928'/> and <xref target='RFC8505'/> as follows

   </t><t>
   This document also updates the behavior of a 6LR acting as EVPN router and of
   a 6LN acting as Host in the 6LoWPAN ND Address Registration  as follows:
   </t>
   <ul>
   <li>
   The use of the R Flag is extended to the NA(EARO) to confirm whether the
   route was installed.
 </li>
   </ul>

</section> <!-- end section "Enhancements to RFC8928 and RFC8505" -->

<section anchor='dist'><name>Distributing the 6LBR</name>


   <t>
	This specification enables to distribute the 6LBR at the edge of the EVPN
    network and collapse the 6LBR function with that of the EVPN support.
    In that model, the EVPN to 6LBR interaction becomes an internal interface,
    where each side informs the other in case of new information concerning an
    IP to Link-Layer Address (LLA) mapping. Since this is an internal interface,
    this specification makes no assumption on whether the 6LBR stores its own
    representation of the full EVPN state, which means that the EVPN support
    informs the 6LBR in case of any change on the EVPN side (this is called
    the push model, see <xref target="Figpush"/>), or if the 6LBR queries the
    EVPN support when it does not have a mapping to satisfy a request (pull
    model, see <xref target="Figpull"/>).
   </t>
   <t>
    This specification leverages <xref target='RFC8929'/> that augments the
    abstract data model of the 6LBR to store the LLA associated with the
    registered address. Based on that additional state, the 6LBR in a leaf can
    communicate the mapping to the collocated EVPN function and respond to
    unicast address mapping lookups from the server side.
   </t>
   <t>
    In an environment where the server ranges from a classical host to a more
    complex platform that runs a collection of virtual hosts interconnected by
    a virtual switch, but where the host-to-leaf interface remains at layer 2,
    the 6LR and the 6LBR functions can be collapsed in the  leaf.
    The 6LR to 6LBR interaction also becomes an internal interface, and
    there is no need for EDAR/EDAC messages.
   </t>
   <t>
    In that case, the MAC address associated to the Registered Address is
    indicated in the Target Link-Layer Address Option (TLLAO) in the NS message
    used for the registration, as shown in <xref target="Figdir"/>.
    In the case of a pull model, if the 6LBR does not have a local state for
    the mapping, it queries the EVPN support to obtain the EVPN state if any.
    If a mapping is known then the 6LR/6LBR evaluates the registration for
    address duplication and other possible issues per <xref target='RFC8505'/>.
    Else (this is for a new mapping), if the registration is accepted, then
    the 6LBR notifies the EVPN support to inject a route type 2 in the fabric.
    </t>

<figure anchor="Figdir">
          <name>Direct Registration</name>
       <artwork align="center" name="" type="" alt="">
       <![CDATA[
        Server              Leaf
  +--------------+   +-------------------+
  |              |   |                   |
   6LN                6LR/6LBR       EVPN
    |                    |            |
    | <vSwitch> Ethernet | <call I/F> |
    |                    |            |
    |  NS(EARO)          |            |
    |------------------->|            |
    |                    |            | ^
    |                    |   query    | |
    |                    |----------->| | if pull
    |                    |  response  | | model
    |                    |<-----------| |
    |                                 | v
    |            Evaluation (DAD)     |
    |                                 |
    |                    |new mapping |
    |                    | indication |
    |                    |----------->|
    |                                 | Inject/maintain
    |         store a mapping state   | EVPN route type 2
    |                                 | ------------------>
    |       NA(EARO)     |            | [via BGP signaling]
    |<-------------------|            |
    |                    |            |
]]>
       </artwork>
</figure>
   <t>
    In another type of deployment, the 6LR may be a virtual router in the server
    whereas the 6LBR runs in the leaf node. To address that case, the EDAR/EDAC
    may be used to communicate as shown in figure 5 of <xref target="RFC8505"/>.
    This draft leverages the capability to insert IPv6 ND options in the EDAR
    and EDAC messages introduced in <xref target="RFC8929"/> to place a TLLAO
    that carries the MAC address associated to the Registered address in the
    EDAR and EDAC messages as shown in <xref target="FigDAR"/>:
   </t>

<figure anchor="FigDAR">
          <name>leveraging EDAR</name>
       <artwork align="center" name="" type="" alt="">
       <![CDATA[
        Server                       Leaf
  +----------------+          +----------------+
  |                |          |                |
   6LN          6LR            6LBR        EVPN
    |            |              |            |
    | <vSwitch>  |  Ethernet    | <call I/F> |
    |            |              |            |
    |  NS(EARO)  |              |            |
    |----------->|              |            |
    |            |  EDAR(TLLAO) |            |
    |            |------------->|            |
    |            |              |            | ^
    |            |              |   query    | |
    |            |              |----------->| | if pull
    |            |              |  response  | | model
    |            |              |<-----------| |
    |            |                           | v
    |            |    Evaluation (DAD)       |
    |            |                           |
    |            |              |new mapping |
    |            |              | indication |
    |            |              |----------->|
    |            |                           | Inject/maintain
    |            |   store a mapping state   | EVPN route type 2
    |            |                           | ------------------>
    |            |  EDAC(TLLAO) |            | [via BGP signaling]
    |            |<-------------|            |
    |  NA(EARO)  |              |            |
    |<-----------|              |            |
    |            |              |            |
]]>
       </artwork>
</figure>

<t>
   <xref target='RFC8505'/> updates the DAR/DAC messages into the Extended
   DAR/DAC to carry the ROVR field. With this specification, the abstract 6LBR
   is distributed in all the Leaf nodes and synchronized with EVPN.
   When a server successfully registers an address to a leaf, the 6LR on that
   leaf becomes 6LBR for that address. It stores the full state for that address
   including the ROVR and the TID. When the address registration moves to
   another leaf, an EDAR/EDAC flow between the 6LR in the new leaf and the 6LBR
   in the old leaf confirms that the ROVR in the NS(EARO) received at the new
   leaf is correct, in which case the 6LR in the new leaf becomes 6LBR.
</t>
<t>
   When the address is already registered to the local leaf,
   the EDAR/EDAC exchange is either local between a virtual router in the server
   and the leaf, or internal to the leaf between a collapsed 6LR and 6LBR.
   Based on its local state, the 6LBR in the leaf checks whether the proposed
   address/route is new and legit, and can reject it otherwise.
</t>
<t>
   It results that
   duplicate addresses and address impersonation attacks can be filtered at the
   level of IPv6 ND by the 6LBR before the information reaches EVPN.
</t>
</section> <!-- Distributing the 6LBR -->


<section anchor='unic'><name>Unicast Address Lookup with the 6LBR</name>


<t>
  A classical IPv6 ND stack in the server that treats the subnet prefix as
  on-link (more in section 4.6.2. of <xref target="RFC4861" format="default"
  sectionFormat="of"/>), will resolve an unknown LLA mapping with a multicast
  NS(lookup) message addressed to the solicited node multicast address (SNMA)
  associated with the destination address being resolved. The RECOMMENDED
  operation in that case is for the 6LBR that has a mapping state to forward the
  packet as a unicast MAC to the LLA that is stored for the IPv6 address as
  expected by  <xref target="RFC6085"/>. The actual owner of the address can
  then answer unicast with a NA message, setting the override (O) bit to 1,
  as shown in <xref target="figlkup1"/>.
</t>

<figure anchor="figlkup1">
          <name>Forwarding legacy NS (Lookup)</name>
       <artwork align="center" name="" type="" alt="">
       <![CDATA[
  Local             Local                   Remote
  Server            Leaf                    Server
  +----+          +--------+                +----+
  |    |          |        |                |    |
   6LN             6LR/6LBR                  6LN
    |                 |                       |
    |    Ethernet     |                       |
    |                 |     [via EVPN    ]    |
    |    multicast    |     [Data Tunnels]    |
    |    NS(lookup)   |                       |
    |---------------->|                       |
    |                 |    forward unicast    |
    |                 |     NS(lookup)        |
    |                 |---------------------->|
    |                 |                       |
    |                 |         NA(O)         |
    |                 |<----------------------|
    |      NA(O)      |                       |
    |<----------------|                       |
    |                 |                       |
]]>
       </artwork>
</figure>


  <t>
  Section 3.1. of <xref target="RFC8929" format="default" sectionFormat="of"/>
  adds the capability to insert IPv6 ND options in the EDAR and EDAC messages.
  This enables the 6LBR to store the link-layer address associated with the
  Registered Address and to serve as a mapping server.
  <xref target="I-D.thubert-6lo-unicast-lookup"/> leverages that state to define
  a new unicast address lookup operation, extending the EDAR and EDAC
  messages as the Address Mapping Request (AMR) and Confirmation (AMC) with a
  different Code Prefix <xref target='RFC8505'/>.
  </t>
  <t>
  In that model, the router advertises the subnet prefix as not on-link by
  setting the L flag to 0 in the Prefix Information Option (PIO), more in
  section 4.6.2. of <xref target="RFC4861" format="default" sectionFormat="of"/>.
  The expected behavior is that the host that communicates with a peer in the
  same subnet refrains from resolving the address mapping and passes the packets
  directly to the router.
  </t>
  <t>In the case where the router is a virtual 6LR running in the server, and
  the source and destination are in the same subnet served by EVPN, the router
  then resolves the address mapping on behalf of the host. To that effect,
  the router sends a unicast AMR message to the 6LBR.
  The message contains the SLLAO of the router to which the 6LBR will reply.
  If the binding is found, the 6LBR replies with an AMC message that contains
  the TLLOA with the requested MAC address, as shown in <xref target="unilook1"/>.
  </t>
<figure anchor="unilook1">
          <name>Unicast Lookup from the virtual Host</name>
       <artwork align="center" name="" type="" alt="">
       <![CDATA[
        Local                 Local             Remote
        Server                 Leaf             Server
  +----------------+       +---------+          +----+
  |                |       |         |          |    |
   6LN          6LR         6LBR/EVPN            6LN
    |            |              |                 |
    |            |              |  [via EVPN    ] |
    | <vSwitch>  |  Ethernet    |  [Data Tunnels] |
    |            |              |                 |
    |            |              |                 |
    |  RA(PIO)   |              |                 |
    | not onlink |              |                 |
    |<-----------|              |                 |
    |            |              |                 |
    |  Packet    |              |                 |
    |----------->|              |                 |
    |            |              |                 |
    |            | AMR (SLLAO)  |                 |
    |            |------------->|                 |
    |            |              |                 |
    |            | AMC (TLLAO)  |                 |
    |            |<-------------|                 |
    |            |              |                 |
    |    NCE in STALE state     |                 |
    |            |                                |
    |            |            Packet              |
    |            |------------------------------->|
    |            |                                |
    |    NCE in DELAY state     |                 |
    |            |              |                 |
]]>
       </artwork>
</figure>

<t>
  If it is not found,
  <xref target="I-D.thubert-6lo-unicast-lookup"/> provides the capability to
  indicate immediately that the mapping is not known with a "not found" status
  in the AMC, as opposed to waiting for an NS(lookup) and retries to time out
  per <xref target='RFC4861'/>.
 </t>
 <t>
  In a fully stateful subnet where all nodes register all their addresses with
  <xref target="RFC8505"/>, this means that the looked up address is not
  present in the network; in that case the packet is dropped and an ICMP error
  type 1 "Destination Unreachable" code 3 "Address unreachable" <xref target=
  'RFC4443'/> is returned as shown in <xref target="unilookfail"/>.
</t>
<figure anchor="unilookfail">
          <name>Unicast Lookup failure</name>
       <artwork align="center" name="" type="" alt="">
       <![CDATA[

           Local                 Local
           Server                 Leaf
     +----------------+       +---------+
     |                |       |         |
      6LN          6LR         6LBR/EVPN
       |            |              |
       |            |              |
       | <vSwitch>  |  Ethernet    |
       |            |              |
       |            |              |
       |   RA(PIO   |              |
       |not on-link)|              |
       |<-----------|              |
       |            |              |
       |  Packet    |              |
       |----------->|              |
       |            |              |
       |            | AMR (SLLAO)  |
       |            |------------->|
       |            |              |
       |            | AMC(status=  |
       |            | "Not Found") |
       |            |<-------------|
       |ICMPv6 Error|              |
       | "Address   |              |
       |Unreachable"|              |
       |<-----------|              |
       |         Drop Packet       |
       |            |              |
    ]]>
       </artwork>
</figure>

  <t>
  Note that the figures above make no assumption on the pull vs. push model.
  In the case of pull model, the 6LBR queries the EVPN support when it does not have the mapping information to satisfy a request.
  <xref target="Figpull"/> illustrates a successful pull model lookup flow,
  when the route type 2 for the mapping is already known on the EVPN side.

</t>

<figure anchor="Figpull">
          <name>Pull model</name>
       <artwork align="center" name="" type="" alt="">
       <![CDATA[
        Server                       Leaf
  +----------------+          +----------------+
  |                |          |                |
   6LN          6LR            6LBR        EVPN
    |            |              |            |
    | <vSwitch>  |  Ethernet    | <call I/F> |
    |            |              |            |
    |            |              |            |
    |            |              |            | Receive EVPN
    |            |              |            | route type 2 for
    |            |              |            | remote address A'
    |            |              |            | [via BGP signaling]
    |            |              |            |<-----------------
    |            |              |     store a mapping state
    |            |              |            |
    |Packet for A'              |            |
    |----------->|              |            |
    |            |AMR(lookup A')|            |
    |            |------------->|            |
    |            |              |Query addr A'
    |            |              |----------->|
    |            |              |            |
    |            |              | return LLA |
    |            |              |<-----------|
    |            |              |            |
    |            |AMC(A''s TLLA)|            |
    |            |<-------------|            |
    |            |              |            |
    |            |            Packet for A'  |
    |            |            [via EVPN    ] |
    |            |            [Data Tunnels] |
    |            |----------------------------------->
    |            |              |            |
]]>
       </artwork>
</figure>

<t>
  In the case of push model, the EVPN support synchronizes its state upon a route type 2 with the 6LBR, and the 6LBR maintains an abstract data structure for all information known to EVPN. This way, the 6LBR already has the mapping information to satisfy any request for an existing mapping and
  it can answer right away.
  <xref target="Figpush"/> illustrates a successful push model lookup flow,
  when the 6LBR is already in possession of the mapping.
</t>

<figure anchor="Figpush">
          <name>Push model</name>
       <artwork align="center" name="" type="" alt="">
       <![CDATA[
        Server                       Leaf
  +----------------+          +----------------+
  |                |          |                |
   6LN          6LR            6LBR        EVPN
    |            |              |            |
    | <vSwitch>  |  Ethernet    | <call I/F> |
    |            |              |            |
    |            |              |            |
    |            |              |            |
    |            |              |            | Receive EVPN
    |            |              |            | route type 2 for
    |            |              |            | remote address A'
    |            |              |            | [via BGP signaling]
    |            |              |            |<-----------------
    |            |              |     store a mapping state
    |            |              |            |
    |            |              |indicate LLA|
    |            |              |<-----------|
    |            |    store a mapping state  |
    |            |              |            |
    |Packet to A'|              |            |
    |----------->|              |            |
    |            |AMR(lookup A')|            |
    |            |------------->|            |
    |            |              |            |
    |            |AMC(A's TLLA) |            |
    |            |<-------------|            |
    |            |              |            |
    |            |            Packet to A'   |
    |            |            [via EVPN    ] |
    |            |            [Data Tunnels] |
    |            |----------------------------------->
    |            |              |            |
]]>
       </artwork>
</figure>

  <t>
  In a mixed environment, a lookup failure (the mapping is not found though
  the address is present in the network) may be caused by a legacy node that
  was node discovered (aka a silent node).
  In that case, it is an administrative decision for the 6LR to broadcast an
  NS(lookup) or to return an error as shown in <xref target="unilookfail"/>.
  </t>

</section> <!-- Unicast Address Lookup with the 6LBR -->

</section> <!-- Extending 6LoWPAN ND -->





<section anchor='prereq'><name>Requirements on the EVPN-Unaware Host</name>
<t>
   This document describes how EVPN routing can be extended to reach a Host.
   This section specifies the minimal EVPN-independent functionality that the Host
   needs to implement to obtain routing services for its addresses.
</t>

 <section anchor='prereq6lp'><name>Support of 6LoWPAN ND</name>
<t>
   A host sees a prefix as not on-link (e.g., it learned that prefix in a PIO
   in a RA with the L flag not set) should not attempt to resolve an address
   within that prefix using a multicast NS(lookup).
   Instead, it must pass its packets to a router, preferably one that advertises
   that prefix in a PIO; it must register the address that it uses as source to
   that router to enable source address validation using
   <xref target='RFC8505'/>.
   It is recommended that the Host also implements <xref target='RFC8928'/> to
   prove its ownership of its addresses.
</t><t>
   The Host is expected to request routing services from a router only if that
   router originates RA messages with a 6CIO that has the L, P, and E flags all
   set to 1 as discussed in <xref target='R7400'/>, unless configured to do so.
   To obtain routing services for one of its addresses, the host must register
   the address to a router that advertises the prefix, setting the "R" and "T"
   flags in the EARO to 1 as discussed in <xref target='R8505ER'/> and
   <xref target='R8505ETID'/>, respectively.
</t><t>
   This document echoes the behavior specified in <xref target='RFC9010'/>
   whereby, when the R Flag set to 1 in a NS(EARO) is not echoed in the NA(EARO),
   the host must understand that the route injection failed, and
   if the R flag is reset later in an asynchronous NA(EARO), the host must
   understand that routing service has failed.
</t><t>
   The host may attach to multiple 6LRs and is expected to prefer those that
   provide routing services. The abstract model for this is a P2MP interface
   that wraps together as many P2P IP Links the host has adjacencies to 6LRs
   over that interface. The IPv6 address and the subnet are associated to that
   interface.
   The interface may be virtual and it may bundle multiple physical Ethernet
   interfaces that connect to the individual 6LRs over point to point wires,
   possibly via a software switch.
   It can also be associated to one physical interface to an external switch,
   either way the PI Links can be associated to sub-interface of the interface.

</t>
<t>
   The Host needs to register to all the 6LRs from which it desires routing
   services. The multiple Address Registrations to several 6LRs should be
   performed in a rapid sequence, using the same EARO for the same Address.
   Gaps between the Address Registrations will invalidate some of the routes
   till the Address Registration finally shows on those routes.
   The routers recognize the same (ROVR, TID) as the signal of a multihomed
   address and maintain all the routes.
   In the case of EVPN, the Ethernet Segment must also be the same. The flow
   for a successful multihomed registration is illustrated in
   <xref target = 'fRegmul'/>.
</t>
<t><xref target='RFC8505'/> introduces error Status values in the NA(EARO)
   which can be received synchronously upon an NS(EARO) or asynchronously.
   The Host needs to support both cases and refrain from using the address
   when the Status value indicates a rejection.
</t>
<t>This specification can be used to register Anycast and Multicast IPv6
   addresses as discussed in <xref target='mcast'/> and replace MLDv2.
   To benefit from that capability, both the host and the 6LR MUST support
   the "A" and "M" flags that indicate Anycast and Multicast Addresses
   respectively. Those flags are defined in
   <xref target="I-D.thubert-6lo-multicast-registration"/> for use in the EARO
   and in the EDAR and EDAC messages.
   <!--
   If the registration is successful, the
   6LBR injects the Anycast addresses with a new "anycast" or "multicast" flag
   set in the extended community.
   -->
</t>
</section> <!-- end section "Support of 6LoWPAN ND" -->



</section> <!-- "Requirements to be an EVPN-Unaware Host" -->









<section anchor='upd'><name>Enhancements to EVPN</name>
    <t>This section addresses the necessary changes to EVPN formats and behavior to support
        address registration security per <xref target='RFC8928'/> and mobility per <xref target='RFC8505'/>
        while retaining interoperability with traditional nodes.
        Basically the MAC Mobility Extended Community <xref target='RFC7432'/> and the
        ARP/ND Extended Community <xref target='RFC9047'/> are extended to advertise
        the sequencing and ownership validation information received in the EARO.
        With 6LRs injecting not only MACs via packet sources and TLLAO options but also ROVR into MAC Mobility and ARP/ND Extended Community, their semantics must be extended.
        Specifically following issues have to be addressed:</t>
    <ul>
        <li>
            The ROVR extends the semantics of the type-2 MAC advertisement via changes in ARP/ND
           and MAC Mobility Extended Community in the sense that the MAC
            must be aligned with the ROVR and under normal circumstances
            only the validity of ROVR guarantees that the type-2
            MAC can be allocated to the requester. A MAC validated by ROVR should take precedence
            over MAC addresses allocated without using it given it presents a much more trustworthy
            topological information (it will be called ROVR MAC in further
            text). EVPN nodes not supporting extensions introduced by this document
            will need to be led to believe that a ROVR MAC is to be preferred over any advertisement
            they see as long a ROVR MAC route is present. The primary key of NRLI is still
            the (IP, MAC, Ethernet Tag ID) tuple as defined in <xref target='RFC7432'/>, Section 7.2 and 7.7.
            This implies that the same MAC (and consequently ROVR MAC) can be
            assigned multiple IP addresses with differeent ROVRs and those
            represent independent NLRIs.
        </li>
        <li>
           The TID field in the EARO is smaller than the mobility sequence number in <xref target='RFC7432'/>.
           To allow a ROVR MAC mobility to "win" over legacy MACs in every circumstance,
            signaling must be introduced that enables to
           distinguish a TID-generated sequence number from a legacy sequence number.
        </li>
        <li>
           <xref target='RFC8505'/> supports IP multihoming, but does not differentiate multihoming from anycast or MAC address rotation. If an anycast IP address
            is registered with a different ROVR it will be rejected as duplicate. If it is
           registered with a different TID, the older sequence will be withdrawn. So the basic expectation
            with <xref target='RFC8505'/> is that
           the advertisement of an anycast address is coordinated, with the same keypair known to all parties,
            and the same value of the TID used by all nodes (and possibly never increasing), in other words,
            with no concept of mobility.

        </li>
        <li><t>
        <xref target="I-D.thubert-6lo-multicast-registration"/> adds new flags in the EARO
        to signal that an address is anycast or multicast, respectively. This specification
        injects that information in the ARP/ND extended community using matching flags as follows:
        </t>
        <ul>
        <li>
           This specification uses the "O" flag in the ARP/ND extended community to signal that the IP address is anycast, and requires
            the local 6LBR to ignore the duplication if the same IP address is registered locally, and then to
            inject the NLRI with the "O" flag set on the ARP/ND Extended Community as well.
        </li>
        <li>
           This specification adds the new "M" flag in the ARP/ND extended community to signal that the IP address is multicast, and requires
            the local 6LBR to ignore the duplication if the same IP address is registered locally, and then to
            inject the NLRI with the "M" flag set on the ARP/ND Extended Community as well.


        </li>
        </ul>
        </li>
        <li>
           <xref target='RFC8928'/> needs the full ROVR to validate the address ownership,
            but the full ROVR can be too large to advertise through BGP.
           When an IP address is advertised through EVPN, it is REQUIRED that the EVPN Next Hop
            represents
            the address of the 6LBR of the leaf where the address was registered as well.
            This way, if the address is registered later on a second leaf,
            the 6LR in second leaf can leverage an out-of-band, i.e. via EVPN traffic carrying
            tunnels, EDAR/EDAC exchange
            with that 6LBR to validate that the ROVR in the registration is indeed the same.
            When that is the case, it can continue with the registration procedure and if
            successful, become a 6LBR for that IP address, either as a mobility event or as a
            multihomed registration.

        </li>
        <li>
           <xref target='RFC8928'/> expects nodes to autoconfigure the keypair that is
            used to form the ROVR, in which case the IPv6 address can be locally
            autoconfigured with no central coordination; in that case, the ROVR
            protects the address ownership and allows the fabric to enforce
            first-come first-serve and source address validation (SAVI).
            But it is also possible to provision the ROVR in the 6LBR in advance
            and later configure the keypair in the node, e.g., in the case of a trusted
            server. To enable that capability in EVPN, this specification adds a flag (U) to
            signal that the 6LBR that injects the address in EVPN does not provide
            reachability to the address. When that flag is set, the value of the TID is
            ignored in the mobility computation, the mapping to the MAC address is ignored,
            and the route to the IP address is not injected in the RIB on ROVR nodes.
            Non-ROVR nodes will consider the node a "honey-pot". Once the address is
            registered by a 6LN in the network and the according validation with
            the node advertising the U-bit version of the route is performed, the
            owner will inject the route without the U-bit. A node advertising the
            NLRI with U-bit in its ARP/ND Extended Community MUST withdraw the U-bit route once it sees a validated
            NLRI without the U-bit and it MAY reinject the route with the U-bit once all routes without the U-bit are withdrawn to protect the address again.
        </li>
    </ul>

<section anchor='aec'><name>Updated ARP/ND Extended Community</name>
<t>
   The ARP/ND Extended Community defined in <xref target='RFC9047'/>
   is a transitive EVPN Extended Community (Type field value of 0x06) with a
   Sub-Type of 0x08. It is advertised along with EVPN MAC/IP Advertisement
   routes that carry an IPv4 or IPv6 address.
   This  the ARP/ND Extended Community to transport fields from the
   EARO is natural since the EARO is an extension to IPv6 ND.
</t>

    <t>
   EVPN signaling is not used to carry the full ROVR since without challenge per
   <xref target="RFC8928"/> they do not represent any difference over using the
   IP/MAC combination.
   A Hash of the ROVR is still passed in the ARP/ND Extended Community to
   immediately detect a duplication, with 2 different values of the hash
   for the same address.
   The full ROVR is verified upon a movement or a multi-homed advertisement
   using an EDAR/EDAC exchange with the 6LBR that advertised the address
   first.
</t>

    <t>
   Additionally, backwards compatibility could not be preserved given comparing
   routes based on ROVR would present a change in primary key of NLRIs which
   non-ROVR routers do not implement. An indication from a ROVR node that a MAC
   has been validated by proof of ownership is enough to convey the necessary
   information.
    </t>
    <t>
    ROVR nodes MUST set the "H" flag in the ARP/ND Extended Community to indicate
    that the advertisement carries a TID and a ROVR Hash in case the host
    followed the according procedures. </t>

    <t>ROVR nodes MUST set the "V" flag if the address assignment passed proof of ownership per
        <xref target="RFC8928"/>. Such "validated" ROVR MAC addresses will be preferred by
        ROVR nodes over non-validated ROVR MACs. </t>

    <t>In case a ROVR node configures the address as "sticky" (since the sticky bit semantics
    have been changed to the point a ROVR cannot tell whether address is really sticky unless
    advertised as such by non-ROVR node) a new "X" flag called "super sticky" is introduced.</t>
<figure anchor="aecpic">
          <name>Updated ARP/ND Extended Community</name>
       <artwork align="center" name="" type="" alt="">

  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 | Type=0x06     | Sub-Type=0x08 |    Flags (2 octet)            |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |      TID      |                 ROVR Hash                     |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

    Flags field:
  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |U|M|V|H|I| |O|R|   Reserved    |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       </artwork>
</figure>

   <t>
    The "I","O", and "R" flags are defined in <xref target='RFC9047'/>.
    The following new fields are defined:
    </t>

    <dl  spacing='normal'>

	<dt>U:</dt><dd>1-bit flag. "Unreachable", indicating that the IP address is not reachable
        via that EVPN next hop, but is advertised for the purpose of protecting
        the value of the ROVR until a first 6LBR that can reach the address
        becomes available.</dd>

	<dt>M:</dt><dd>1-bit flag. "Multicast", indicating that the IP address duplication
        should be ignored. When this bit is set, TID should be ignored in
        comparison of EVPN advertisements, i.e. all ROVR MACs at same
        level of validation MUST be considered having same TID.</dd>


    <dt>V:</dt><dd>1-bit flag. "ROVR Validated" indicates that the MAC passed proof of ownership per
            <xref target="RFC8928"/>. Presence of this bit implies the "R" bit being set regardless of its value.</dd>

    <dt>H:</dt><dd>1-bit flag. "ROVR Capable" indicates that the advertisement is originated
        after processing signaling from host meeting the requirements in
        <xref target="prereq"/>, and that the advertised MAC address is a ROVR MAC.
        This also indicates that the TID and ROVR Hash
        fields are populated based on information from the most recent EARO
        <xref target="RFC8505"/> from the host.</dd>

    <dt>TID:</dt><dd>8-bits structure. The TID <xref target="RFC8505"/> from the Registering Node. </dd>
    <dt>ROVR Hash:</dt><dd>16-bits hash of ROVR <xref target="RFC8505"/> from the Registering Node.
    The Hash is built by XOR'ing ROVR bytes in network order into the least
    significant byte and rotating the two bytes result after every byte by one bit to the left.</dd>
	</dl>
</section> <!-- "ARP/ND Extended Community" -->
<section anchor='mec'><name>Updated Mobility Extended Community</name>

    <t>
    This specification extends the MAC Mobility Extended Community to transport
    the TID instead of increasing the normal sequence number.
    The TID is placed in the high bits of the sequence number field to "override"
    any normal MAC advertisement (further considerations will be provided in
    <xref target="EVPNproc"/>).
    this allows to design a solution that, while backwards compatible, allows
    to introduce ROVR MAC as "more trusted" entities.
    <xref target="fEVPNtgt"/> presents the according extensions that
     will however necessitate some further explanation.
    </t>

    <t>
        To introduce a "precedence" of ROVR MACs over normal EVPN MACs ROVR MACs are advertised
        to look like "sticky" MACs for non-ROVR nodes.
        As defined in the glossary, for simplicity reasons such nodes will be called non-ROVR nodes vs. ROVR nodes.
        The "sticky" bit will force non-ROVR nodes to disregard the sequence number and
        accept any IP/MAC route provided.
    </t>


 <figure anchor='fEVPNtgt' suppress-title='false'><name>Updating the MAC Mobility Extended Community for ROVR MACs</name>
 <artwork>
  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 | Type=0x06     | Sub-Type=0x00 | Flags = 0 |X|S|  Reserved = 0 |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |T| Flags = 0   |       TID     |     Reserved = 0              |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
</artwork>
 </figure>

    <t>
   This specification updates the Sequence Number field defined in
   <xref target='RFC7432'/>. The field is split in 3 parts, one 8-bit flags
   field, the TID, and a reserver 2-byte field. The unspecified flags and the
   reserved fields MUST be set to 0 by the sender and ignored by the receiver.
    </t>
    <t>
    The "S" flag is defined in <xref target='RFC7432'/>.
    The following new fields are defined:
    </t>


    <dl spacing='normal'>
        <dt>X:</dt>
            <dd>1-bit flag. "Super Sticky" indicates that the ROVR MAC is sticky and should follow
                procedures of sticky per <xref target='RFC7432'/>. </dd>
        <dt>T:</dt>
            <dd>1-bit flag. "TID Present", MUST be set to 1 when this specification is used. This
        ensures that the TID always wins vs. the sequence counter defined in
        <xref target='RFC7432'/></dd>
        <dt>TID:</dt>
            <dd>The TID copied from the most recent EARO <xref target="RFC8505"/> from the Registering Node. </dd>
    </dl>

</section> <!-- end section "Updated EVPN Target Option" -->

    <section anchor='EVPNproc'><name>Extended ROVR MAC Procedures</name>
        <t>In case a non-ROVR node advertises a sticky MAC by setting the "S" bit and a ROVR node
            sees an ROVR address registration for the same MAC it MUST follow procedures per <xref target='RFC7432'/>.</t>
        <t>In case a non-ROVR node advertises a sequence number larger than the one generated by TID on a ROVR
            node, the ROVR node SHOULD advertise a Sequence Number consisting of all bits being set to force a "roll-over" on all nodes and
        then fall back to advertising the TID generated sequence number again. In case a non-ROVR node persists in
        increasing the sequence number after that it is indication of violation of  <xref target='RFC7432'/> on its part.</t>
        <t>
            A ROVR node advertising a ROVR MAC that has not been validated and receiving same type-2 route that has been
            validated MUST immediately withdraw its advertisement.
        </t>
        <t>
            A ROVR node advertising a ROVR MAC and receiving an equivalent ROVR MAC from other node with a higher TID
            MUST immediately withdraw its advertisement. This will allow the non-ROVR nodes to correctly interpret
            the sequence as MAC move despite ignoring the sequence number due to presence of "S" bit.
        </t>
        <t>
            A ROVR node that receives a ROVR MAC with "super sticky" indication and seeing the MAC locally MUST
            follow analogous procedures to <xref target='RFC7432'/>.
        </t>
        <t>
            Multi-homing a MAC on mix of ROVR and non-ROVR nodes will lead to operational notifications since
            per <xref target='RFC7432'/> the non-ROVR node will interpret the situation as a sticky MAC that
            has shown up on its local interface unless an implementation is somewhat clever and understands that
            the presence of the same ESI on all the routes indicates that this situation does not represent a
            sticky MAC being moved.
        </t>

    </section>


</section> <!-- Enhancements to  EVPN -->








<section anchor='op'><name>Protocol Operations </name>

<t>
   Following section illustrates several situations and resulting signaling
   in EVPN from the point of view of a ROVR node.
</t>
<t>
  <xref target='fReg1'/> illustrates the registration flow of a new address
  protected by <xref target='RFC8928'/>. The ROVR in the EARO is a Crypto-ID
  that derives from a public address through hashing with some other terms.
  The router challenges the host with a status of 5 (validation requested).
</t>
<t>
  The host performs the NS again, passing the parameters that enable to build
  the Crypto-ID in a Crypto-ID Parameters Option (CIPO), and signing that set
  of parameters together with a pair of Nonce values, one from each side, in a
  resulting Neighbor Discovery Protocol Signature Option (NDPDO). The 6LR first
  verifies that the Crypto-ID can be rebuilt based on the public key, then verifies that the signature in the NDPSO was effectively performed with the
  associated public key. When that is the case, the registration flow can
  continue, else the registration is rejected with a status of 10 (Validation
  Failed) in the NA(EARO).
</t>

<t>
  With this specification, the 6LBR communicates internally with the collocated
  EVPN router to inject the route in EVPN. Since the <xref target='RFC8928'/>
  validation was performed, the V flag is set. Once this is done, the local 6LBR
  installs a local state associated to the NCE and becomes owner of the
  registration, whereas the remote leaves optionally install a remote state for
  the address with the indication of the 6LBR that owns the registration. The
  local 6LBR MUST be signalled as EVPN Next Hop for the route.
</t>

 <figure anchor='fReg1' suppress-title='false'><name>Host Registration</name>
 <artwork align="center"><![CDATA[
   Local            Local              Route           Remote
   Server           Leaf             Reflector         Leaf
  +-------+       +---------+        +-------+        +---------+
  |       |       |         |        |       |        |         |
     6LN           6LBR/EVPN            BGP            EVPN/6LBR
      |                |                 |                |
      |    Ethernet    |      [via BGP signaling]         |
      |                |                 |                |
      |                |                 |                |
      |  NS(EARO(      |                 |                |
      |       R set))  |                 |                |
      |--------------->|                 |                |
      |   ROVR in EARO is cryptographic  |                |
      |                |                 |                |
      |     NA(EARO(   |                 |                |
      |   R not set,   |                 |                |
      |   status = 5), |                 |                |
      |        Nonce1) |                 |                |
      |<---------------|                 |                |
      |                |                 |                |
      |   NS(EARO(     |                 |                |
      |        R set), |                 |                |
      |      CIPO,     |                 |                |
      |      Nonce2,   |                 |                |
      |      NDPSO)    |                 |                |
      |--------------->|                 |                |
      |        Proof verified            |                |
      |     no state for that address    |                |
      |      install local state         |                |
      |                |                 |                |
      |                |  ROVR MAC Route A'               |
      |                |---------------->|                |
      |        route injected            |                |
      |                |                 |                |
      |     NA(EARO(   |                 |                |
      |   R set,       |                 |                |
      |   status = 0)) |                 |                |
      |<---------------|                 |                |
      |                |                 | ROVR MAC Route A'
      |                |                 |--------------->|
      |                |                 |    install remote state
      |                |                 |                |

]]></artwork>
 </figure>
 <t>
  <xref target='fRegmul'/> presents the same flow but for a multihomed address;
  here and in the following flows, the proof of ownership section is not shown,
  but its use is RECOMMENDED. The interesting piece is that when the node
  registers to the second 6LBR, that second 6LBR find that there is a first
  6LBR that already own the registration. Using and EDAR / EDAC flow, the
  second 6LBR validates that the ROVR and TID are identical, in which case it
  accepts the registration and becomes another 6LBR owner of the registration.
  The result is that the 2 6LBRs are synchronized and any of the 2 can now be
  used, e.g., if the address is registered a third time.
</t>
 <figure anchor='fRegmul' suppress-title='false'><name>Multihoming</name>
 <artwork align="center"><![CDATA[
    Local            Local          Local
    Server           Leaf 1         Leaf 2           Reflector
  +-------+       +---------+    +---------+       +---------+
  |       |       |         |    |         |       |         |
     6LN           6LBR/EVPN      6LBR/EVPN             |
      |                |              |                 |
      |    Ethernet    |              |                 |
      |                |              |       [via BGP signaling]
      |                |              |                 |
      |   NS(EARO)     |              |                 |
      |--------------->|              |                 |
      |      install local state      |                 |
      |                |                                |
      |                |------ROVR MAC Route A'   ----->|
      |   NA(EARO)     |              |                 |
      |<---------------|              |                 |
      |                |              |<----------------|
      |                |    install remote state        |
      |                |              |                 |
      | NS(same address, ES and EARO) |                 |
      |------------------------------>|                 |
      |                |              |                 |
      |                |        Same ES and ROVR Hash   |
      |                |   EDAR       |                 |
      |                |<-------------|                 |
      |                |              |                 |
      |       ROVR match, TID OK      |                 |
      |                |              |                 |
      |                |EDAC(status=0)|                 |
      |                |------------->|                 |
      |                |    install local state         |
      |                |              |                 |
      |                |       ROVR MAC Route A'        |
      |                |              |---------------->|
      |                |<-------------------------------|
      |        install remote state   |                 |
      |                |              |                 |
      |     NA(EARO(status = 0))      |                 |
      |<------------------------------|                 |
      |                |              |                 |
]]></artwork>
 </figure>
 <t>
   The registration is associated with a lifetime, and it must be renewed with
   an incremented TID. The new TID is propagated in EVPN as illustrated in
  <xref target='fReg2'/>.
 </t>
 <figure anchor='fReg2' suppress-title='false'><name>Host Registration Renewal</name>
 <artwork align="center"><![CDATA[

   Local            Local              Route           Remote
   Server           Leaf             Reflector         Leaf
  +-------+       +---------+        +-------+        +---------+
  |       |       |         |        |       |        |         |
     6LN           6LBR/EVPN            BGP            EVPN/6LBR
      |                |                 |                |
      |    Ethernet    |      [via BGP signaling]        |
      |                |                 |                |
      |                |                 |                |
      |  NS(EARO(      |                 |                |
      |    TID+1))     |                 |                |
      |--------------->|                 |                |
      |   renew lifetime locally         |                |
      |                |                 |                |
      |                |  ROVR MAC Route A'(TID+1)        |
      |                |---------------->|                |
      |   NA(EARO      |                 |--------------->|
      |   status = 0)) |                 |     update remote state
      |<---------------|                 |                |
      |                |                 |                |
      |                |                 |                |
]]></artwork>
</figure>

 <t>
  <xref target='fRegdup'/> illustrates the case where a second host registers
  the same address, creating a potential address duplication situation.
  in most cases, the ROVR hash will be different, and the local 6LBR can reject
  the registration is a status of 1 (duplicate) right away.
 </t>

 <figure anchor='fRegdup' suppress-title='false'><name>Duplicate Addresses</name>
 <artwork align="center"><![CDATA[
   Local            Local              Route           Remote
   Server           Leaf             Reflector         Leaf
  +-------+       +---------+        +-------+        +---------+
  |       |       |         |        |       |        |         |
     6LN           6LBR/EVPN            BGP            EVPN/6LBR
      |                |                 |                |
      |    Ethernet    |                 |                |
      |                |        [via BGP signaling]      |
      |                |                 |                |
      |                |                 |         Local state for A'
      |                |                 |                |
      |                |          ROVR MAC Route A'       |
      |                |              ROVR Hash G         |
      |                |                 |<---------------|
      |                |<----------------|                |
      |      Create remote state for A'  |                |
      |                |                 |                |
      |   NS(EARO)     |                 |                |
      |--------------->|                 |                |
      |         compute ROVR Hash F      |                |
      |                |                 |                |
      |   NA(EARO(     |                 |                |
      |   status = 1)) |                 |                |
      |<---------------|                 |                |
      |                |                 |                |
      |                |                 |                |
]]></artwork> </figure>

 <t>
  <xref target='fRegdup2'/> illustrates the case of an address duplication
  situation where by chance, the ROVR hashes are the same. In that case, the
  local 6LR checks with the 6LBR that owns the registration using an EDAR/EDAC message exchange. As opposed to the ROVR hash, the full ROVRs do not collide
  and the registration is also rejected.
 </t>
 <figure anchor='fRegdup2' suppress-title='false'><name>Duplicate Addresses, ROVR Hash Collision</name>
 <artwork align="center"><![CDATA[
   Local            Local              Route           Remote
   Server           Leaf             Reflector         Leaf
  +-------+       +---------+        +-------+        +---------+
  |       |       |         |        |       |        |         |
     6LN           6LBR EVPN            BGP            EVPN/6LBR
      |              |   |               |               |   |
      |    Ethernet  |   |               |               |   |
      |              |   |        [via BGP signaling]    |   |
      |              |   |               |               |   |
      |              |   |               |     Local state for A'
      |              |   |               |               |   |
      |              |   |        ROVR MAC Route A'      |   |
      |              |   |            ROVR Hash G        |   |
      |              |   |               |<--------------|   |
      |              |   |<--------------|               |   |
      |      Create remote state for A'  |               |   |
      |              |   |                               |   |
      |              |                                       |
      |              |       [[out of band signaling]]       |
      |   NS(EARO)   |                                       |
      |------------->|                                       |
      |         compute ROVR Hash G                          |
      |              |                                       |
      |              |      EDAR to EVPN Next Hop            |
      |              |-------------------------------------->|
      |              |                                       |
      |              |               EDAC (status = 1)       |
      |              |<--------------------------------------|
      |              |                                       |
      |  NA(EARO(    |                                       |
      |  status = 1))|                                       |
      |<-------------|                                       |
      |              |                                       |
]]></artwork> </figure>

 <t>
  <xref target='fRegold'/> shows a rare case where the registration has already
  moved elsewhere with an incremented TID when the local registration is
  received after being delayed in the network. In that case, the registration is
  rejected with a status of 3 (moved).
 </t>
 <figure anchor='fRegold' suppress-title='false'><name>Address Already Moved</name>
 <artwork align="center"><![CDATA[
   Local            Local              Route           Remote
   Server           Leaf             Reflector         Leaf
  +-------+       +---------+        +-------+        +---------+
  |       |       |         |        |       |        |         |
     6LN           6LBR/EVPN            BGP            EVPN/6LBR
      |                |                 |                |
      |    Ethernet    |                 |                |
      |                |        [via BGP signaling]       |
      |                |                 |                |
      |                |          ROVR MAC Route A'       |
      |                |         ESI X', Hash F, TID Z    |
      |                |                 |<---------------|
      |                |<----------------|                |
      |         create remote start A'   |                |
      |       ESI X', ROVR Hash F, TID Z |                |
      |                |                 |                |
      |   NS(EARO(     |                 |                |
      |     TID=Z-1))  |                 |                |
      |--------------->|                 |                |
      |           computes as            |                |
      |           ROVR Hash F            |                |
      |           ESI X'', TID Z-1       |                |
      |   NA(EARO)     |                 |                |
      |   status = 3)) |                 |                |
      |<---------------|                 |                |
      |                |                 |                |
]]></artwork> </figure>

    <t>
        Address move differs from multi-homing by the ESI being different
        as visualized by <xref target="fRegmov"/>.
        In case of different ESI BGP signalling happens immediately, in
        case of multi-homing we can reasonably expect for the signalling
        to catch up on the other leg with a new, higher TID. However,
        since ESI matches TID doesn't matter strictly speaking and the
        new remote state can be installed as is. However, if 6LN is
        not refreshing it registration we can expect elapsed lifetime
        to create scenario
        <xref target="fRegTO"/> over time.
    </t>

 <figure anchor='fRegmov' suppress-title='false'><name>Address Move</name>
 <artwork align="center"><![CDATA[

   Local            Local              Route           Remote
   Server           Leaf             Reflector         Leaf
  +-------+       +---------+        +-------+        +---------+
  |       |       |         |        |       |        |         |
     6LN           6LBR/EVPN            BGP            EVPN/6LBR
      |                |                 |                |
      |    Ethernet    |                 |                |
      |                |        [via BGP signaling]       |
      |   NS(EARO)     |                 |                |
      |--------------->|                 |                |
      |        Create local state        |                |
      |                |        ROVR MAC Route A'         |
      |                |     ESI X', ROVR Hash F, TID Z   |
      |                |---------------->|                |
      |                |                 |--------------->|
      |                |                 |     Create remote state

Same ES (multihomed):
      |                |                 |                |<--
      |                |                 | New local state A' created
      |                |                 |                |
      |                |          ROVR MAC Route A'       |
      |                |         ESI X', Hash F, TID Z+1  |
      |                |                 |<---------------|
      |                |<----------------|                |
      |        Create remote state       |                |
      |       Keep local expect renew    |                |
      |                |                 |                |

Different ES (movement):
      |                |                 |                |<--
      |                |                 | New local state A' created
      |                |                 |                |
      |                |          ROVR MAC Route A'       |
      |                |    ESI X'', ROVR Hash F, TID Z+1 |
      |                |                 |<---------------|
      |                |<----------------|                |
      |        Create remote state       |                |
      |                |                 |                |
      |   NA(EARO(     |                 |                |
      |   status = 4)) |                 |                |
      |<---------------|                 |                |
      |                | Withdraw ROVR MAC Route A'       |
      |                |---------------->|                |
      |                |                 |--------------->|
      |     remove local state           |                |
      |                |                 |                |

]]></artwork> </figure>
 <t>
  The host that registered the address may cancel the registration at any time,
  e.g., if the address is removed fmor its own interface. This is done by
  registering with a lifetime if 0 as shown in <xref target='fRegArmov'/>.
  The Leaf may respond with a status of 0 to indicate success, but a status of 4 (removed) is preferred for this situation.
 </t>
 <figure anchor='fRegArmov' suppress-title='false'><name>Address Removal</name>
 <artwork align="center"><![CDATA[
   Local            Local              Route           Remote
   Server           Leaf             Reflector         Leaf
  +-------+       +---------+        +-------+        +---------+
  |       |       |         |        |       |        |         |
     6LN           6LBR/EVPN            BGP            EVPN/6LBR
      |                |                 |                |
      |    Ethernet    |                 |                |
      |                |        [via BGP signaling]       |
      |                |                 |                |
      | NS(EARO,       |                 |                |
      |    lifetime=0) |                 |                |
      |--------------->|                 |                |
      |                |                 |                |
      |                | Withdraw ROVR MAC Route A'       |
      |                |---------------->|                |
      |                |                 |--------------->|
      |   NA(EARO(     |                 |                |
      |   status = 4)) |                 |                |
      |<---------------|                 |                |
      |                |                 |                |
      |     remove local state           |                |
      |                |                 |                |
]]></artwork> </figure>

 <t>
  The host that registered the address may withdraw the route but maintain the
  NCE, e.g., in the case where it is multihomed but does not want to use one
  interface for the traffic back as this time. This is done by
  registering with the R flag set to 0 as shown in <xref target='fRegRrmov'/>.
 </t>

 <figure anchor='fRegRrmov' suppress-title='false'><name>Route Type 2 Removal</name>
 <artwork align="center"><![CDATA[
    Local            Local              Route           Remote
   Server           Leaf             Reflector         Leaf
  +-------+       +---------+        +-------+        +---------+
  |       |       |         |        |       |        |         |
     6LN           6LBR/EVPN            BGP            EVPN/6LBR
      |                |                 |                |
      |    Ethernet    |                 |                |
      |                |        [via BGP signaling]       |
      |                |                 |                |
      | NS(EARO,       |                 |                |
      |    R reset)    |                 |                |
      |--------------->|                 |                |
      |                |                 |                |
      |                | Withdraw ROVR MAC Route A'       |
      |                |---------------->|                |
      |                |                 |--------------->|
      |   NA(EARO(     |                 |                |
      |   R reset,     |                 |                |
      |   status = 0)) |                 |                |
      |<---------------|                 |                |
      |                |                 |                |
      |     retain only NCE              |                |
      |                |                 |                |
]]></artwork> </figure>
 <t>
  When the lifetime elapses, the 6LBR requires the collocated EVPN router to
  withdraw the route.
 </t>
 <figure anchor='fRegTO' suppress-title='false'><name>Lifetime Elapse</name>
 <artwork align="center"><![CDATA[
    Local            Local              Route           Remote
   Server           Leaf             Reflector         Leaf
  +-------+       +---------+        +-------+        +---------+
  |       |       |         |        |       |        |         |
     6LN           6LBR/EVPN            BGP            EVPN/6LBR
      |                |                 |                |
      |    Ethernet    |                 |                |
      |                |        [via BGP signaling]       |
      |                |                 |                |
      |     lifetime Expired             |                |
      |                |                 |                |
      |                | Withdraw ROVR MAC Route A'       |
      |                |---------------->|                |
      |                |                 |--------------->|
      |   NA(EARO(     |                 |                |
      |   status = 4)) |                 |                |
      |<---------------|                 |                |
      |                |                 |                |
      |     remove local state           |                |
      |                |                 |                |
]]></artwork> </figure>

</section>

<section anchor='security-considerations'><name>Security Considerations</name>
 <t>TBD
 </t>

</section>


<section anchor='iana-considerations'><name>IANA Considerations</name>
<!--

<section anchor='ianaearostat'><name>New EARO Status Value</name>

    <t>
    This specification extends the "Address Registration Option Status Values" subregistry i the "Internet Control Message Protocol version 6 (ICMPv6) Parameters" to add the following value:
    </t>

   <table anchor='IAROstatus'><name>Rejection values of the EARO Status </name>
   <thead>
      <tr><td>Value</td><td>Description</td><td>Reference</td></tr>
   </thead><tbody>

       <tr><td>11 (suggested)</td><td>Not Found: The address is not present in the Address Registrar</td>
      <td>This document</td></tr>
   </tbody>

   </table>

</section>  New EARO Status Value -->



<section anchor="iana-MAC"><name>MAC Mobility Extended Community Flags</name>


<t>
   This document creates the "MAC Mobility Extended Community Flags" registry
   based on one flag initially defined in <xref target='RFC9047'/> and more
   flags defined in <xref target="mec"/> as shown in <xref target="mect"/>:
    </t>

   <table  anchor="mect">
      <name>MAC Mobility Extended Community Flags</name>
   <thead>
      <tr><td>Flag Position</td><td>Name</td><td>Reference</td></tr>
   </thead><tbody>

      <tr> <td>0..5</td> <td>Unassigned</td> <td>N/A</td> </tr>
      <tr><td>6</td><td>Super-sticky (X)</td><td>THIS RFC</td></tr>
      <tr><td>7 </td><td>Sticky (S)</td><td>RFC 7432</td></tr>
   </tbody>
   </table>

   </section>

<section anchor="iana-ARP"><name>ARP/ND Extended Community Flags</name>


<t>
   This document modifies the "ARP/ND Extended Community Flags" registry
   initially created in Section 5 of <xref target='RFC9047'/> .
  <xref target='aec'/> suggests to assign new entries in the Registry as
  indicated in <xref target="aect"/>:
    </t>

   <table  anchor="aect">
      <name>New ARP/ND Extended Community Flags</name>
   <thead>
      <tr><td>Flag Position</td><td>Name</td><td>Reference</td></tr>
   </thead><tbody>
      <tr><td>0 (Suggested)</td><td>Unreachable(U)</td><td>THIS RFC</td></tr>
      <tr><td>1 (Suggested)</td><td>Multicast (M)</td><td>THIS RFC</td></tr>
      <tr><td>2 (Suggested)</td><td>ROVR Validated (V)</td><td>THIS RFC</td></tr>
      <tr><td>3 (Suggested)</td><td>ROVR Capable (H)</td><td>THIS RFC</td></tr>
   </tbody>
   </table>

   </section>


</section>

<section anchor='Acks'><name>Acknowledgments</name>
<t>
   The authors wish to thank you for reading that far.
   We acknowledge and express gratitude to Wen Lin, Stephane Litkowski, Eric
   Levy-Abegnoli, Lukas Krattiger, Jerome Tollet, and Ali Sajassi, for their
   help and support.
  </t>

</section>


  </middle>

 <back>

      <displayreference   target="I-D.ietf-rift-rift"  to="RIFT"/>
    <displayreference target="I-D.thubert-6lo-unicast-lookup" to="UNICAST-LOOKUP"/>


 <references><name>Normative References</name>
   <xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml'/>
   <xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.3810.xml'/>
   <xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.4443.xml'/>
   <xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.4861.xml'/>
   <xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.4862.xml'/>
   <xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6775.xml'/>
   <xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6085.xml'/>
   <xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7400.xml'/>
   <xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7432.xml'/>
   <xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml'/>
   <xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8505.xml'/>
   <xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8365.xml'/>
   <xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8928.xml'/>
   <xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.9047.xml'/>
   <xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.thubert-6lo-unicast-lookup.xml'/>
   <xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.thubert-6lo-multicast-registration.xml'/>

 </references>
 <references><name>Informative References</name>
   <xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6550.xml'/>
   <xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8929.xml'/>

   <xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.9010.xml'/>

   <xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-rift-rift.xml'/>



    <reference anchor="IANA-EARO-STATUS" target="https://www.iana.org/assignments/icmpv6-parameters/icmpv6-parameters.xhtml#address-registration">
      <front>
        <title>Address Registration Option Status Values</title>
        <author>
          <organization>IANA</organization>
        </author>
        <date/>
      </front>
    </reference>

 </references>


 </back>
</rfc>
