<?xml version='1.0' encoding='utf-8'?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" category="std" consensus="true" docName="draft-ietf-dhc-mac-assign-09" indexInclude="true" ipr="trust200902" number="8947" prepTime="2020-12-01T15:58:28" scripts="Common,Latin" sortRefs="true" submissionType="IETF" symRefs="true" tocDepth="4" tocInclude="true" xml:lang="en">
  <link href="https://datatracker.ietf.org/doc/draft-ietf-dhc-mac-assign-09" rel="prev"/>
  <link href="https://dx.doi.org/10.17487/rfc8947" rel="alternate"/>
  <link href="urn:issn:2070-1721" rel="alternate"/>
  <front>
    <title abbrev="DHCPv6 Link-Layer Address Assignment">Link-Layer Address Assignment Mechanism for DHCPv6</title>
    <seriesInfo name="RFC" value="8947" stream="IETF"/>
    <author fullname="Bernie Volz" initials="B" surname="Volz">
      <organization abbrev="Cisco" showOnFrontPage="true">Cisco Systems, Inc.</organization>
      <address>
        <postal>
          <street>300 Beaver Brook Rd</street>
          <city>Boxborough</city>
          <region>MA</region>
          <code>01719</code>
          <country>United States of America</country>
        </postal>
        <email>volz@cisco.com</email>
      </address>
    </author>
    <author fullname="Tomek Mrugalski" initials="T." surname="Mrugalski">
      <organization abbrev="ISC" showOnFrontPage="true">Internet Systems Consortium, Inc.</organization>
      <address>
        <postal>
          <street>PO Box 360</street>
          <city>Newmarket</city>
          <region>NH</region>
          <code>03857</code>
          <country>United States of America</country>
        </postal>
        <email>tomasz.mrugalski@gmail.com</email>
      </address>
    </author>
    <author fullname="Carlos J. Bernardos" initials="CJ." surname="Bernardos">
      <organization abbrev="UC3M" showOnFrontPage="true">Universidad Carlos III de Madrid</organization>
      <address>
        <postal>
          <street>Av. Universidad, 30</street>
          <city>Leganes, Madrid</city>
          <code>28911</code>
          <country>Spain</country>
        </postal>
        <phone>+34 91624 6236</phone>
        <email>cjbc@it.uc3m.es</email>
        <uri>http://www.it.uc3m.es/cjbc/</uri>
      </address>
    </author>
    <date month="12" year="2020"/>
    <area>Internet</area>
    <workgroup>Dynamic Host Configuration (DHC)</workgroup>
    <keyword>DHCPv6</keyword>
    <keyword>DHCP</keyword>
    <keyword>Link-layer</keyword>
    <keyword>assignment</keyword>
    <abstract pn="section-abstract">
      <t indent="0" pn="section-abstract-1">In certain environments, e.g., large-scale virtualization
      deployments, new devices are created in an automated manner. Such
      devices may have their link-layer addresses assigned in an automated
      fashion. With sufficient scale, the likelihood of a collision using
      random assignment without duplication detection is not
      acceptable.    
      Therefore, an allocation mechanism is required. This document proposes
      an extension to DHCPv6 that allows a scalable approach to link-layer
      address assignments
      where preassigned link-layer address assignments (such as by a
      manufacturer) are not possible or are unnecessary.</t>
    </abstract>
    <boilerplate>
      <section anchor="status-of-memo" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.1">
        <name slugifiedName="name-status-of-this-memo">Status of This Memo</name>
        <t indent="0" pn="section-boilerplate.1-1">
            This is an Internet Standards Track document.
        </t>
        <t indent="0" pn="section-boilerplate.1-2">
            This document is a product of the Internet Engineering Task Force
            (IETF).  It represents the consensus of the IETF community.  It has
            received public review and has been approved for publication by
            the Internet Engineering Steering Group (IESG).  Further
            information on Internet Standards is available in Section 2 of 
            RFC 7841.
        </t>
        <t indent="0" pn="section-boilerplate.1-3">
            Information about the current status of this document, any
            errata, and how to provide feedback on it may be obtained at
            <eref target="https://www.rfc-editor.org/info/rfc8947" brackets="none"/>.
        </t>
      </section>
      <section anchor="copyright" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.2">
        <name slugifiedName="name-copyright-notice">Copyright Notice</name>
        <t indent="0" pn="section-boilerplate.2-1">
            Copyright (c) 2020 IETF Trust and the persons identified as the
            document authors. All rights reserved.
        </t>
        <t indent="0" pn="section-boilerplate.2-2">
            This document is subject to BCP 78 and the IETF Trust's Legal
            Provisions Relating to IETF Documents
            (<eref target="https://trustee.ietf.org/license-info" brackets="none"/>) in effect on the date of
            publication of this document. Please review these documents
            carefully, as they describe your rights and restrictions with
            respect to this document. Code Components extracted from this
            document must include Simplified BSD License text as described in
            Section 4.e of the Trust Legal Provisions and are provided without
            warranty as described in the Simplified BSD License.
        </t>
      </section>
    </boilerplate>
    <toc>
      <section anchor="toc" numbered="false" removeInRFC="false" toc="exclude" pn="section-toc.1">
        <name slugifiedName="name-table-of-contents">Table of Contents</name>
        <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1">
          <li pn="section-toc.1-1.1">
            <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.1"><xref derivedContent="1" format="counter" sectionFormat="of" target="section-1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-introduction">Introduction</xref></t>
          </li>
          <li pn="section-toc.1-1.2">
            <t indent="0" keepWithNext="true" pn="section-toc.1-1.2.1"><xref derivedContent="2" format="counter" sectionFormat="of" target="section-2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-requirements-language">Requirements Language</xref></t>
          </li>
          <li pn="section-toc.1-1.3">
            <t indent="0" keepWithNext="true" pn="section-toc.1-1.3.1"><xref derivedContent="3" format="counter" sectionFormat="of" target="section-3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-terminology">Terminology</xref></t>
          </li>
          <li pn="section-toc.1-1.4">
            <t indent="0" pn="section-toc.1-1.4.1"><xref derivedContent="4" format="counter" sectionFormat="of" target="section-4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-deployment-scenarios">Deployment Scenarios</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.4.2">
              <li pn="section-toc.1-1.4.2.1">
                <t indent="0" pn="section-toc.1-1.4.2.1.1"><xref derivedContent="4.1" format="counter" sectionFormat="of" target="section-4.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-scenario-proxy-client-mode">Scenario: Proxy Client Mode</xref></t>
              </li>
              <li pn="section-toc.1-1.4.2.2">
                <t indent="0" pn="section-toc.1-1.4.2.2.1"><xref derivedContent="4.2" format="counter" sectionFormat="of" target="section-4.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-scenario-direct-client-mode">Scenario: Direct Client Mode</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.5">
            <t indent="0" pn="section-toc.1-1.5.1"><xref derivedContent="5" format="counter" sectionFormat="of" target="section-5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-mechanism-overview">Mechanism Overview</xref></t>
          </li>
          <li pn="section-toc.1-1.6">
            <t indent="0" pn="section-toc.1-1.6.1"><xref derivedContent="6" format="counter" sectionFormat="of" target="section-6"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-design-assumptions">Design Assumptions</xref></t>
          </li>
          <li pn="section-toc.1-1.7">
            <t indent="0" pn="section-toc.1-1.7.1"><xref derivedContent="7" format="counter" sectionFormat="of" target="section-7"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-information-encoding">Information Encoding</xref></t>
          </li>
          <li pn="section-toc.1-1.8">
            <t indent="0" pn="section-toc.1-1.8.1"><xref derivedContent="8" format="counter" sectionFormat="of" target="section-8"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-requesting-addresses">Requesting Addresses</xref></t>
          </li>
          <li pn="section-toc.1-1.9">
            <t indent="0" pn="section-toc.1-1.9.1"><xref derivedContent="9" format="counter" sectionFormat="of" target="section-9"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-renewing-addresses">Renewing Addresses</xref></t>
          </li>
          <li pn="section-toc.1-1.10">
            <t indent="0" pn="section-toc.1-1.10.1"><xref derivedContent="10" format="counter" sectionFormat="of" target="section-10"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-releasing-addresses">Releasing Addresses</xref></t>
          </li>
          <li pn="section-toc.1-1.11">
            <t indent="0" pn="section-toc.1-1.11.1"><xref derivedContent="11" format="counter" sectionFormat="of" target="section-11"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-option-definitions">Option Definitions</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.11.2">
              <li pn="section-toc.1-1.11.2.1">
                <t indent="0" pn="section-toc.1-1.11.2.1.1"><xref derivedContent="11.1" format="counter" sectionFormat="of" target="section-11.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-identity-association-for-li">Identity Association for Link-Layer Addresses Option</xref></t>
              </li>
              <li pn="section-toc.1-1.11.2.2">
                <t indent="0" pn="section-toc.1-1.11.2.2.1"><xref derivedContent="11.2" format="counter" sectionFormat="of" target="section-11.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-link-layer-addresses-option">Link-Layer Addresses Option</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.12">
            <t indent="0" pn="section-toc.1-1.12.1"><xref derivedContent="12" format="counter" sectionFormat="of" target="section-12"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-selecting-link-layer-addres">Selecting Link-Layer Addresses for Assignment to an IA_LL</xref></t>
          </li>
          <li pn="section-toc.1-1.13">
            <t indent="0" pn="section-toc.1-1.13.1"><xref derivedContent="13" format="counter" sectionFormat="of" target="section-13"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-iana-considerations">IANA Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.14">
            <t indent="0" pn="section-toc.1-1.14.1"><xref derivedContent="14" format="counter" sectionFormat="of" target="section-14"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-security-considerations">Security Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.15">
            <t indent="0" pn="section-toc.1-1.15.1"><xref derivedContent="15" format="counter" sectionFormat="of" target="section-15"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-privacy-considerations">Privacy Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.16">
            <t indent="0" pn="section-toc.1-1.16.1"><xref derivedContent="16" format="counter" sectionFormat="of" target="section-16"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-references">References</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.16.2">
              <li pn="section-toc.1-1.16.2.1">
                <t indent="0" pn="section-toc.1-1.16.2.1.1"><xref derivedContent="16.1" format="counter" sectionFormat="of" target="section-16.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-normative-references">Normative References</xref></t>
              </li>
              <li pn="section-toc.1-1.16.2.2">
                <t indent="0" pn="section-toc.1-1.16.2.2.1"><xref derivedContent="16.2" format="counter" sectionFormat="of" target="section-16.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-informative-references">Informative References</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.17">
            <t indent="0" pn="section-toc.1-1.17.1"><xref derivedContent="Appendix A" format="default" sectionFormat="of" target="section-appendix.a"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-ieee-802c-summary">IEEE 802c Summary</xref></t>
          </li>
          <li pn="section-toc.1-1.18">
            <t indent="0" pn="section-toc.1-1.18.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.b"/><xref derivedContent="" format="title" sectionFormat="of" target="name-acknowledgments">Acknowledgments</xref></t>
          </li>
          <li pn="section-toc.1-1.19">
            <t indent="0" pn="section-toc.1-1.19.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.c"/><xref derivedContent="" format="title" sectionFormat="of" target="name-authors-addresses">Authors' Addresses</xref></t>
          </li>
        </ul>
      </section>
    </toc>
  </front>
  <middle>
    <section anchor="intro" numbered="true" removeInRFC="false" toc="include" pn="section-1">
      <name slugifiedName="name-introduction">Introduction</name>
      <t indent="0" pn="section-1-1">There are several deployment types that deal with a large number
      of devices that need to be initialized. One of them is a scenario
      where virtual machines (VMs) are created on a massive scale.
      Typically, the new VM instances are assigned a link-layer address,
      but random assignment does not scale well due to the risk of a collision
      (see <xref target="RFC4429" sectionFormat="of" section="A.1" format="default" derivedLink="https://rfc-editor.org/rfc/rfc4429#appendix-A.1" derivedContent="RFC4429"/>). Another
      use case is Internet of Things (IoT) devices (see
      <xref target="RFC7228" format="default" sectionFormat="of" derivedContent="RFC7228"/>). The huge number of such devices could
      strain the IEEE's available Organizationally Unique Identifier (OUI)
      global address space. While there is typically no need to provide
      global link-layer address uniqueness for such devices, a link-layer
      assignment mechanism allows for conflicts to be avoided
      inside an administrative domain. For those reasons, it is desired to
      have some form of mechanism that would be able to assign locally
      unique Media Access Control (MAC) addresses.</t>
      <t indent="0" pn="section-1-2">This document proposes a new mechanism that extends DHCPv6
      operation to handle link-layer address assignments.</t>
      <t indent="0" pn="section-1-3">Since DHCPv6 <xref target="RFC8415" format="default" sectionFormat="of" derivedContent="RFC8415"/> is a protocol
      that can allocate various types of resources (non-temporary
      addresses, temporary addresses, prefixes, as well as many options)
      and has the necessary infrastructure to maintain such allocations
      (numerous server and client implementations, large deployed
      relay infrastructure, and supportive solutions such as leasequery
      and failover), it is a good candidate to address the desired
      functionality.</t>
      <t indent="0" pn="section-1-4">While this document presents a design that should be usable for
      any link-layer address type, some of the details are specific to
      IEEE 802 48-bit MAC addresses <xref target="IEEEStd802" format="default" sectionFormat="of" derivedContent="IEEEStd802"/>. Future
      documents may provide specifics for other link-layer address
      types.</t>
      <t indent="0" pn="section-1-5">IEEE 802 originally set aside half of the 48-bit MAC address
      space for local use (where the Universal/Local (U/L) bit is set to 1). In 2017,
      IEEE published an amendment <xref target="IEEEStd802c" format="default" sectionFormat="of" derivedContent="IEEEStd802c"/> that
      divides this space into quadrants with differentiated address rules.
      More details are in <xref target="IEEE802cSummary" format="default" sectionFormat="of" derivedContent="Appendix A"/>.</t>
      <t indent="0" pn="section-1-6">IEEE is also developing protocols and procedures for
      assignment of locally unique addresses (IEEE 802.1CQ). This work may
      serve as an alternative protocol for assignment. For additional
      background, see <xref target="IEEE-P802.1CQ-Project" format="default" sectionFormat="of" derivedContent="IEEE-P802.1CQ-Project"/>.</t>
    </section>
    <section anchor="requirements" numbered="true" removeInRFC="false" toc="include" pn="section-2">
      <name slugifiedName="name-requirements-language">Requirements Language</name>
      <t indent="0" pn="section-2-1">
    The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
    "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
    described in BCP 14 <xref target="RFC2119" format="default" sectionFormat="of" derivedContent="RFC2119"/> <xref target="RFC8174" format="default" sectionFormat="of" derivedContent="RFC8174"/> 
    when, and only when, they appear in all capitals, as shown here.
      </t>
    </section>
    <section anchor="terminology" numbered="true" removeInRFC="false" toc="include" pn="section-3">
      <name slugifiedName="name-terminology">Terminology</name>
      <t indent="0" pn="section-3-1">The DHCP terminology relevant to this specification from
      <xref target="RFC8415" format="default" sectionFormat="of" derivedContent="RFC8415"/> applies here. The following definitions
      either modify those definitions as to how they are used in this
      document or define new terminology used herein.</t>
      <dl newline="false" spacing="normal" indent="16" pn="section-3-2">
        <dt pn="section-3-2.1">address</dt>
        <dd pn="section-3-2.2">Unless specified otherwise, a link-layer (or MAC) address, as specified in
          <xref target="IEEEStd802" format="default" sectionFormat="of" derivedContent="IEEEStd802"/>. The
          address is typically six octets long, but some network
          architectures may use different lengths.</dd>
        <dt pn="section-3-2.3">address block</dt>
        <dd pn="section-3-2.4">A number of consecutive link-layer
          addresses. An address block is expressed as a first address
          plus a number that designates the number of additional (extra)
          addresses. A single address can be represented by the address
          itself and zero extra addresses.</dd>
        <dt pn="section-3-2.5">client</dt>
        <dd pn="section-3-2.6">A node that is interested in obtaining
          link-layer addresses. It implements the basic DHCP mechanisms
          needed by a DHCP
          client, as described in <xref target="RFC8415" format="default" sectionFormat="of" derivedContent="RFC8415"/>, and
          supports the new options specified in this document (IA_LL and LLADDR). The client may or may not support IPv6
          address assignment and prefix delegation, as specified in
          <xref target="RFC8415" format="default" sectionFormat="of" derivedContent="RFC8415"/>.</dd>
        <dt pn="section-3-2.7">IA_LL</dt>
        <dd pn="section-3-2.8">Identity Association for Link-Layer Address,
          an identity association (IA) used to request or assign
          link-layer addresses. See <xref target="IA_LL" format="default" sectionFormat="of" derivedContent="Section 11.1"/> for details on
          the IA_LL option.</dd>
        <dt pn="section-3-2.9">LLADDR</dt>
        <dd pn="section-3-2.10">Link-layer address option that is used to
          request or assign a block of link-layer addresses. See
          <xref target="LLADDR" format="default" sectionFormat="of" derivedContent="Section 11.2"/> for details on the LLADDR option.</dd>
        <dt pn="section-3-2.11">server</dt>
        <dd pn="section-3-2.12">A node that manages link-layer address allocation
          and is able to respond to client queries. It implements basic DHCP
          server functionality, as described in <xref target="RFC8415" format="default" sectionFormat="of" derivedContent="RFC8415"/>, and
          supports the new options specified in this document
          (IA_LL and LLADDR). The server may or
          may not support IPv6 address assignment and prefix delegation as
          specified in <xref target="RFC8415" format="default" sectionFormat="of" derivedContent="RFC8415"/>.</dd>
      </dl>
    </section>
    <section anchor="overview" numbered="true" removeInRFC="false" toc="include" pn="section-4">
      <name slugifiedName="name-deployment-scenarios">Deployment Scenarios</name>
      <t indent="0" pn="section-4-1">This mechanism is designed to be generic and usable in many
      deployments, but there are two scenarios it attempts to address in
      particular: (i) proxy client mode and (ii) direct client mode.</t>
      <section anchor="proxy" numbered="true" removeInRFC="false" toc="include" pn="section-4.1">
        <name slugifiedName="name-scenario-proxy-client-mode">Scenario: Proxy Client Mode</name>
        <t indent="0" pn="section-4.1-1">This mode is used when an entity acts as a DHCP client that
	requests that available DHCP servers assign one or more
        addresses (an address block) for the DHCP client to then
	assign to the final end devices to use. Large-scale virtualization is one
        application scenario for proxy client mode. In such
        environments, this entity is often called a "hypervisor" and is
        frequently required to spawn new VMs. The hypervisor needs to
        assign new addresses to those machines. The hypervisor does
        not use those addresses for itself, but rather it uses them to
        create new VMs with appropriate addresses. It is worth
        pointing out the cumulative nature of this scenario. Over
        time, the hypervisor is likely to increase its address
        use. Some obsolete VMs will be deleted; their addresses
        are potentially eligible for reuse by new VMs.</t>
      </section>
      <section anchor="direct" numbered="true" removeInRFC="false" toc="include" pn="section-4.2">
        <name slugifiedName="name-scenario-direct-client-mode">Scenario: Direct Client Mode</name>
        <t indent="0" pn="section-4.2-1">This mode can be used when an entity acts as a DHCP client that
        requests that available DHCP servers assign one or more addresses
        (an address block) for its own use. This usage scenario is related to
        IoT (see <xref target="intro" format="default" sectionFormat="of" derivedContent="Section 1"/>). Upon first
        boot, for each interface, the device uses a temporary address, as
        described in <xref target="IEEEStd802.11" format="default" sectionFormat="of" derivedContent="IEEEStd802.11"/> and
        IEEE 802.1CQ <xref target="IEEE-P802.1CQ-Project" format="default" sectionFormat="of" derivedContent="IEEE-P802.1CQ-Project"/>, to send
        initial DHCP packets to available DHCP servers wherein the device
        requests a single address for that network interface. Once the
        server assigns an address, the device abandons its
        temporary address and uses the assigned (leased) address.</t>
        <t indent="0" pn="section-4.2-2">Note that a client that operates as above that does not have a
        globally unique link-layer address on any of its interfaces <bcp14>MUST NOT</bcp14> use a link-layer-based DHCP Unique Identifier (DUID). For more
        details, refer to <xref target="RFC8415" sectionFormat="of" section="11" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8415#section-11" derivedContent="RFC8415"/>.</t>
        <t indent="0" pn="section-4.2-3">Also, a client that operates as above may run into issues if
        the switch it is connected to prohibits or restricts link-layer
        address changes. This may limit where this capability can be used
        or may require the administrator to adjust the configuration of
        the switch(es) to allow a change in address.</t>
      </section>
    </section>
    <section anchor="mechanism" numbered="true" removeInRFC="false" toc="include" pn="section-5">
      <name slugifiedName="name-mechanism-overview">Mechanism Overview</name>
      <t indent="0" pn="section-5-1">In the scenarios described in <xref target="overview" format="default" sectionFormat="of" derivedContent="Section 4"/>, the protocol operates in fundamentally the
        same way.

	The device requesting an address, acting as a DHCP
        client, will send a Solicit message with an IA_LL option to all
        available DHCP servers. That IA_LL option <bcp14>MUST</bcp14> include an LLADDR
        option specifying the link-layer-type and
        link-layer-len, and it may include a specific address or address
        block as a hint for the server. Each available server responds
        with either a Reply message with committed address(es) (if Rapid
        Commit was requested and honored) or an Advertise message with
        offered address(es). The client selects a server's response, as
        governed by <xref target="RFC8415" format="default" sectionFormat="of" derivedContent="RFC8415"/>. If necessary, the client
        sends a Request message; the target server will then assign the
        address(es) and send a Reply message. Once a Reply is received,
        the client can start using those address(es).</t>
      <t indent="0" pn="section-5-2">Normal DHCP mechanisms are in use. The client is expected to
        periodically renew the addresses as governed by T1 and T2 timers
        and to stop using the address once the valid lifetime expires.
        Renewals can be administratively disabled by the server
        sending "infinity" as the T1 and T2 values (see <xref target="RFC8415" sectionFormat="of" section="7.7" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8415#section-7.7" derivedContent="RFC8415"/>). An administrator may make the
	address assignment permanent by specifying use of the "infinity" valid
        lifetime, as defined in <xref target="RFC8415" sectionFormat="of" section="7.7" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8415#section-7.7" derivedContent="RFC8415"/>.</t>
      <t indent="0" pn="section-5-3">The client can release addresses when they are no longer
        needed by sending a Release message (see <xref target="RFC8415" sectionFormat="of" section="18.2.7" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8415#section-18.2.7" derivedContent="RFC8415"/>).</t>
      <t indent="0" pn="section-5-4">Figure 9 in <xref target="RFC8415" format="default" sectionFormat="of" derivedContent="RFC8415"/> shows
        a timeline diagram of the messages exchanged between a client and
        two servers for the typical life cycle of one or more leases.</t>
      <t indent="0" pn="section-5-5">Confirm and Information-request messages are not used in
        link-layer address assignment. Decline should technically
        never be needed, but see <xref target="selecting-addresses" format="default" sectionFormat="of" derivedContent="Section 12"/> for
        one situation where this message is needed.</t>
      <t indent="0" pn="section-5-6">Clients implementing this mechanism <bcp14>SHOULD</bcp14> use the Rapid Commit
        option, as specified in Sections <xref target="RFC8415" section="5.1" sectionFormat="bare" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8415#section-5.1" derivedContent="RFC8415"/> and <xref target="RFC8415" section="18.2.1" sectionFormat="bare" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8415#section-18.2.1" derivedContent="RFC8415"/> of <xref target="RFC8415" format="default" sectionFormat="of" derivedContent="RFC8415"/>, to obtain addresses
	with a two-message exchange when possible.</t>
      <t indent="0" pn="section-5-7">Devices supporting this proposal <bcp14>MAY</bcp14> support the reconfigure
        mechanism, as defined in <xref target="RFC8415" sectionFormat="of" section="18.2.11" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8415#section-18.2.11" derivedContent="RFC8415"/>. If supported by both server and client, 
        the reconfigure mechanism allows the administrator to immediately
        notify clients that the configuration has changed and triggers
        retrieval of relevant changes immediately, rather than after the
        T1 timer elapses. Since this mechanism requires implementation of
        Reconfiguration Key Authentication Protocol (see <xref target="RFC8415" sectionFormat="of" section="20.4" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8415#section-20.4" derivedContent="RFC8415"/>), small-footprint devices may
	choose not to support it.</t>
    </section>
    <section numbered="true" removeInRFC="false" toc="include" pn="section-6">
      <name slugifiedName="name-design-assumptions">Design Assumptions</name>
      <t indent="0" pn="section-6-1">One of the essential aspects of this mechanism is its cumulative
      nature, especially in the hypervisor scenario. The server-client
      relationship does not look like other DHCP transactions in the
      hypervisor scenario. In a typical environment, there would be one
      server and a rather small number of hypervisors, possibly
      even only one. However, over time, the number of addresses requested
      by the hypervisor(s) will increase as more VMs are spawned.</t>
      <t indent="0" pn="section-6-2">Another aspect crucial for efficient design is the observation
      that a single client acting as hypervisor will likely use thousands
      of addresses. An approach similar to what is used for IPv6
      address or prefix assignment (IA container with all assigned
      addresses listed, one option for each address) would not work well.
      Therefore, the mechanism should operate on address blocks rather
      than single values. A single address can be treated as an address
      block with just one address.</t>
      <t indent="0" pn="section-6-3">The DHCP mechanisms are reused to a large degree, including message
      and option formats, transmission mechanisms, relay infrastructure,
      and others. However, a device wishing to support only link-layer
      address assignment is not required to support full DHCP. In other
      words, the device may support only assignment of link-layer
      addresses but not IPv6 addresses or prefixes.</t>
    </section>
    <section anchor="Information-Encoding" numbered="true" removeInRFC="false" toc="include" pn="section-7">
      <name slugifiedName="name-information-encoding">Information Encoding</name>
      <t indent="0" pn="section-7-1">A client <bcp14>MUST</bcp14> send an LLADDR option encapsulated in an IA_LL
      option to specify the link-layer-type and link-layer-len values. For
      link-layer-type 1 (Ethernet) and 6 (IEEE 802 Networks), a client
      sets the link-layer-address field to:
      </t>
      <ol spacing="normal" type="1" indent="adaptive" start="1" pn="section-7-2">
        <li pn="section-7-2.1" derivedCounter="1.">All zeroes if the client has
          no hint as to the starting address of the unicast address block.
          This address has the IEEE 802 individual/group bit set to 0
          (individual).
	</li>
        <li pn="section-7-2.2" derivedCounter="2.">Any other value to request a specific block of
        address starting with the specified address.
        </li>
      </ol>
      <t indent="0" pn="section-7-3">Encoding information for other link-layer-types may be added in
      the future by publishing an RFC that specifies those values.</t>
      <t indent="0" pn="section-7-4">A client sets the extra-addresses field to either 0 for a single
      address or the size of the requested address block minus 1.</t>
      <t indent="0" pn="section-7-5">A client <bcp14>MUST</bcp14> set the valid-lifetime field to 0 (this field
      <bcp14>MUST</bcp14> be ignored by the server).</t>
    </section>
    <section numbered="true" removeInRFC="false" toc="include" pn="section-8">
      <name slugifiedName="name-requesting-addresses">Requesting Addresses</name>
      <t indent="0" pn="section-8-1">The addresses are assigned in blocks. The smallest block is a
      single address. To request an assignment, the client sends a Solicit
      message with an IA_LL option inside. The IA_LL option <bcp14>MUST</bcp14>
      contain an LLADDR option, as specified in
      <xref target="Information-Encoding" format="default" sectionFormat="of" derivedContent="Section 7"/>.</t>
      <t indent="0" pn="section-8-2">The server, upon receiving an IA_LL option, inspects its content
      and may offer an address or addresses for each LLADDR option
      according to its policy. The server <bcp14>MAY</bcp14> take into consideration the
      address block requested by the client in the LLADDR option. However,
      the server <bcp14>MAY</bcp14> choose to ignore some or all parameters of the
      requested address block. In particular, the server may send
      either a
      different starting address or a smaller number of
      addresses than requested. The server sends back an Advertise
      message with an IA_LL option containing an LLADDR option that
      specifies the addresses being offered. If the server is unable to 
      provide any addresses, it <bcp14>MUST</bcp14> return the IA_LL option containing a
      Status Code option (see <xref target="RFC8415" sectionFormat="of" section="21.13" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8415#section-21.13" derivedContent="RFC8415"/>) with status set to NoAddrsAvail.</t>
      <t indent="0" pn="section-8-3">Note that servers that do not support the IA_LL option will ignore
      the option and not return it in Advertise (and Reply) messages.
      Clients that send IA_LL options <bcp14>MUST</bcp14> treat this as if the server
      returned the NoAddrsAvail status for these IA_LL option(s).
      </t>
      <t indent="0" pn="section-8-4">The client waits for available servers to send Advertise
      responses and picks one server, as defined in <xref target="RFC8415" sectionFormat="of" section="18.2.9" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8415#section-18.2.9" derivedContent="RFC8415"/>. The client then sends a Request 
      message that includes the IA_LL container option with the LLADDR
      option copied from the Advertise message sent by the chosen
      server.</t>
      <t indent="0" pn="section-8-5">The client <bcp14>MUST</bcp14> process the address block(s) returned in the
      Advertise, rather than what it included in the Solicit message, and may 
      consider the offered address block(s) in selecting the Advertise
      message to
      accept. The server may offer a smaller number of addresses or
      different addresses from those requested. A client <bcp14>MUST NOT</bcp14> use
      resources returned in an Advertise message except to select a server
      and in sending the Request message to that server; resources are only
      useable by a client when returned in a Reply message.</t>
      <t indent="0" pn="section-8-6">Upon reception of a Request message with the IA_LL container option,
      the server assigns the requested addresses. The server allocates a
      block of addresses according to its configured policy. The server
      <bcp14>MAY</bcp14> assign a different block or smaller block size than requested in
      the Request message. The server then generates and sends a Reply
      message back to the client.</t>
      <t indent="0" pn="section-8-7">Upon receiving a Reply message, the client parses the IA_LL
      container option and may start using all provided addresses. It <bcp14>MUST</bcp14> 
      restart its T1 and T2 timers using the values specified in the IA_LL
      option.</t>
      <t indent="0" pn="section-8-8">The client <bcp14>MUST</bcp14> use the address block(s) returned in the Reply
      message, which may be a smaller block(s) or may have a different address(es)
      than requested.</t>
      <t indent="0" pn="section-8-9">A client that has included a Rapid Commit option in the Solicit
      message may receive a Reply in response to the Solicit message and skip the
      Advertise and Request message steps above (see <xref target="RFC8415" sectionFormat="of" section="18.2.1" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8415#section-18.2.1" derivedContent="RFC8415"/>).</t>
      <t indent="0" pn="section-8-10">A client that changes its link-layer address on an interface
      <bcp14>SHOULD</bcp14> follow the recommendations in <xref target="RFC4861" sectionFormat="of" section="7.2.6" format="default" derivedLink="https://rfc-editor.org/rfc/rfc4861#section-7.2.6" derivedContent="RFC4861"/> to inform its
      neighbors of the new link-layer address quickly.</t>
    </section>
    <section numbered="true" removeInRFC="false" toc="include" pn="section-9">
      <name slugifiedName="name-renewing-addresses">Renewing Addresses</name>
      <t indent="0" pn="section-9-1">Address renewals follow the normal DHCP renewals processing
      described in <xref target="RFC8415" sectionFormat="of" section="18.2.4" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8415#section-18.2.4" derivedContent="RFC8415"/>. Once the T1
      timer elapses, the client starts sending Renew messages with the
      IA_LL option containing an LLADDR option for the address block being
      renewed. The server responds with a Reply message that contains the
      renewed address block. The server <bcp14>MUST NOT</bcp14> shrink or expand the
      address block. Once a block is assigned and has a non-zero valid
      lifetime, its size, starting address, and ending address <bcp14>MUST NOT</bcp14>
      change.</t>
      <t indent="0" pn="section-9-2">If the requesting client needs additional addresses (e.g., in
      the hypervisor scenario because addresses need to be assigned to new
      VMs), it <bcp14>MUST</bcp14> send an IA_LL option with a different
      Identity Association IDentifier (IAID) to create
      another "container" for more addresses.</t>
      <t indent="0" pn="section-9-3">If the client is unable to renew before the T2 timer elapses, it
      starts sending Rebind messages, as described in
      <xref target="RFC8415" sectionFormat="of" section="18.2.5" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8415#section-18.2.5" derivedContent="RFC8415"/>.</t>
    </section>
    <section numbered="true" removeInRFC="false" toc="include" pn="section-10">
      <name slugifiedName="name-releasing-addresses">Releasing Addresses</name>
      <t indent="0" pn="section-10-1">The client may decide to release a leased address block. A client
      <bcp14>MUST</bcp14> release the block in its entirety. A client releases an
      address block by sending a Release message that includes an IA_LL
      option containing the LLADDR option for the address block to
      release. The Release transmission mechanism is described in <xref target="RFC8415" sectionFormat="of" section="18.2.7" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8415#section-18.2.7" derivedContent="RFC8415"/>.</t>
      <t indent="0" pn="section-10-2">Note that if the client is releasing the link-layer address it is
      using, it <bcp14>MUST</bcp14> stop using this address before sending the
      Release message (as per <xref target="RFC8415" format="default" sectionFormat="of" derivedContent="RFC8415"/>). In order to send
      the Release message, the client <bcp14>MUST</bcp14> use another address (such as
      the one originally used to initiate DHCPv6 to provide an allocated
      link-layer address).</t>
    </section>
    <section anchor="option" numbered="true" removeInRFC="false" toc="include" pn="section-11">
      <name slugifiedName="name-option-definitions">Option Definitions</name>
      <t indent="0" pn="section-11-1">This mechanism uses an approach similar to the existing
      mechanisms in DHCP. There is one container option (the IA_LL option)
      that contains the actual address or addresses, represented by an
      LLADDR option. Each LLADDR option represents an address block, which
      is expressed as a first address with a number that specifies how
      many additional addresses are included.</t>
      <section anchor="IA_LL" numbered="true" removeInRFC="false" toc="include" pn="section-11.1">
        <name slugifiedName="name-identity-association-for-li">Identity Association for Link-Layer Addresses Option</name>
        <t indent="0" pn="section-11.1-1">The Identity Association for Link-Layer Addresses option
	(the IA_LL
   option) is used to carry an IA_LL, the parameters
   associated with the IA_LL, and the address blocks associated with
   the IA_LL.</t>
        <t indent="0" pn="section-11.1-2">The format of the IA_LL option is:</t>
        <figure anchor="ia-ll-syntax" align="left" suppress-title="false" pn="figure-1">
          <name slugifiedName="name-ia_ll-option-format">IA_LL Option Format</name>
          <artwork align="left" pn="section-11.1-3.1">
   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
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |          OPTION_IA_LL         |          option-len           |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |                        IAID (4 octets)                        |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |                          T1 (4 octets)                        |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |                          T2 (4 octets)                        |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  .                                                               .
  .                         IA_LL-options                         .
  .                                                               .
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
</artwork>
        </figure>
        <dl newline="false" spacing="normal" indent="16" pn="section-11.1-4">
          <dt pn="section-11.1-4.1">option-code</dt>
          <dd pn="section-11.1-4.2">OPTION_IA_LL (138).</dd>
          <dt pn="section-11.1-4.3">option-len</dt>
          <dd pn="section-11.1-4.4">12 + length of IA_LL-options field.</dd>
          <dt pn="section-11.1-4.5">IAID</dt>
          <dd pn="section-11.1-4.6">The unique identifier for this IA_LL; the
                           IAID must be unique among the identifiers for
                           all of this client's IA_LLs.  The number
                           space for IA_LL IAIDs is separate from the
                           number space for other IA option types (i.e.,
                           IA_NA, IA_TA, and IA_PD). A 4-octet field
                           containing an unsigned integer.</dd>
          <dt pn="section-11.1-4.7">T1</dt>
          <dd pn="section-11.1-4.8">The time interval after which the client
                           should contact the server from which the
                           addresses in the IA_LL were obtained to extend
                           the valid lifetime of the addresses assigned to
                           the IA_LL; T1 is a time duration relative to
                           the current time expressed in units of seconds.
                           A 4-octet field containing an unsigned integer.
                           </dd>
          <dt pn="section-11.1-4.9">T2</dt>
          <dd pn="section-11.1-4.10">The time interval after which the client
                           should contact any available server to extend
                           the valid lifetime of the addresses assigned to
                           the IA_LL; T2 is a time duration relative to
                           the current time expressed in units of seconds.
                           A 4-octet field containing an unsigned integer.
                           </dd>
          <dt pn="section-11.1-4.11">IA_LL-options</dt>
          <dd pn="section-11.1-4.12">Options associated with this
                           IA_LL. A variable-length field (12 octets less
                           than the value in the option-len field).</dd>
        </dl>
        <t indent="0" pn="section-11.1-5">An IA_LL option may only appear in the options area of a DHCP
        message.  A DHCP message may contain multiple IA_LL options
        (though each must have a unique IAID).</t>
        <t indent="0" pn="section-11.1-6">The status of any operations involving this IA_LL is indicated
        in a Status Code option (see <xref target="RFC8415" sectionFormat="of" section="21.13" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8415#section-21.13" derivedContent="RFC8415"/>) in the IA_LL-options field.</t>
        <t indent="0" pn="section-11.1-7">Note that an IA_LL has no explicit "lifetime" or "lease length"
        of its own. When the valid lifetimes of all of the addresses in an
        IA_LL have expired, the IA_LL can be considered to be expired.
        T1 and T2 are included to give servers explicit control over when
        a client recontacts the server about a specific IA_LL.</t>
        <t indent="0" pn="section-11.1-8">In a message sent by a client to a server, the T1 and T2 fields
        <bcp14>MUST</bcp14> be set to 0.  The server <bcp14>MUST</bcp14> ignore any values in these
        fields in messages received from a client.</t>
        <t indent="0" pn="section-11.1-9">In a message sent by a server to a client, the client <bcp14>MUST</bcp14> use
        the values in the T1 and T2 fields for the T1 and T2 times, unless
        those values in those fields are 0.  The values in the T1 and T2
        fields are the number of seconds until T1 and T2.</t>
        <t indent="0" pn="section-11.1-10">As per <xref target="RFC8415" sectionFormat="of" section="7.7" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8415#section-7.7" derivedContent="RFC8415"/>,
        the value 0xffffffff is taken to mean "infinity" and should be
        used carefully.</t>
        <t indent="0" pn="section-11.1-11">The server selects the T1 and T2 times to allow the client to
        extend the lifetimes of any address block in the IA_LL before the
        lifetimes expire, even if the server is unavailable for some short
        period of time.  Recommended values for T1 and T2 are .5 and .8
        times the shortest valid lifetime of the address blocks in the IA
        that the server is willing to extend, respectively.  If the
        "shortest" valid lifetime is 0xffffffff ("infinity"), the
        recommended T1 and T2 values are also 0xffffffff.  If the time at
        which the addresses in an IA_LL are to be renewed is to be left to
        the discretion of the client, the server sets T1 and T2 to 0.  The
        client <bcp14>MUST</bcp14> follow the rules defined in
        <xref target="RFC8415" sectionFormat="of" section="14.2" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8415#section-14.2" derivedContent="RFC8415"/>.
        </t>
        <t indent="0" pn="section-11.1-12">If a client receives an IA_LL with T1 greater than T2, and both
        T1 and T2 are greater than 0, the client discards the IA_LL option
        and processes the remainder of the message as though the server
        had not included the invalid IA_LL option.</t>
        <t indent="0" pn="section-11.1-13">The IA_LL-options field typically contains one or more LLADDR
        options (see <xref target="LLADDR" format="default" sectionFormat="of" derivedContent="Section 11.2"/>). If a client does not include
        an LLADDR option in a Solicit or Request message, the server <bcp14>MUST</bcp14>
        treat this as a request for a single address and that the
        client has no hint as to the address it would like.</t>
      </section>
      <section anchor="LLADDR" numbered="true" removeInRFC="false" toc="include" pn="section-11.2">
        <name slugifiedName="name-link-layer-addresses-option">Link-Layer Addresses Option</name>
        <t indent="0" pn="section-11.2-1">The Link-Layer Addresses option is used to specify an address block
   associated with an IA_LL. The option must be encapsulated in the
   IA_LL-options field of an IA_LL option.  The LLaddr-options field
   encapsulates those options that are specific to this address block.</t>
        <t indent="0" pn="section-11.2-2">The format of the Link-Layer Addresses option is:</t>
        <figure anchor="lladdr-syntax" align="left" suppress-title="false" pn="figure-2">
          <name slugifiedName="name-lladdr-option-format">LLADDR Option Format</name>
          <artwork align="left" pn="section-11.2-3.1">
   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
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |          OPTION_LLADDR        |          option-len           |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |       link-layer-type         |        link-layer-len         |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  .                                                               .
  .                     link-layer-address                        .
  .                                                               .
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |                      extra-addresses                          |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |                      valid-lifetime                           |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  .                                                               .
  .                      LLaddr-options                           .
  .                                                               .
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
</artwork>
        </figure>
        <dl newline="false" spacing="normal" indent="21" pn="section-11.2-4">
          <dt pn="section-11.2-4.1">option-code</dt>
          <dd pn="section-11.2-4.2">OPTION_LLADDR (139).</dd>
          <dt pn="section-11.2-4.3">option-len</dt>
          <dd pn="section-11.2-4.4">12 + link-layer-len field value
            + length of LLaddr-options field. Assuming a 
            link-layer-address length of 6 and no extra options, the
            option-len would be 18.</dd>
          <dt pn="section-11.2-4.5">link-layer-type</dt>
          <dd pn="section-11.2-4.6">The link-layer type <bcp14>MUST</bcp14> be a
            valid hardware type assigned by IANA, as described in
            <xref target="RFC5494" format="default" sectionFormat="of" derivedContent="RFC5494"/>, and registered in the "Hardware Types" registry at
            <eref target="https://www.iana.org/assignments/arp-parameters" brackets="angle"/>.
            A 2-octet field containing an unsigned integer.</dd>
          <dt pn="section-11.2-4.7">link-layer-len</dt>
          <dd pn="section-11.2-4.8">Specifies the length, in octets,
            of the link-layer-address field (typically 6 for a
            link-layer-type of 1 (Ethernet) and 6 (IEEE 802 Networks)).
            This is to accommodate link layers that may have
            variable-length addresses. A 2-octet field containing an
            unsigned integer.</dd>
          <dt pn="section-11.2-4.9">link-layer-address</dt>
          <dd pn="section-11.2-4.10">Specifies the address of
            the first link-layer address that is being requested or
            assigned depending on the message. A client <bcp14>MAY</bcp14> send a
            special value to request any address.

	    For link-layer
            types 1 and 6, see
            <xref target="Information-Encoding" format="default" sectionFormat="of" derivedContent="Section 7"/> for details on this
            field. A link-layer-len length octet field containing an
            address.</dd>
          <dt pn="section-11.2-4.11">extra-addresses</dt>
          <dd pn="section-11.2-4.12">Specifies the number of
            additional addresses that follow the address specified in
            link-layer-address. For a single address, 0 is used.
            For example, link-layer-address 02:04:06:08:0a and
            extra-addresses 3 designate a block of four addresses,
            starting from 02:04:06:08:0a and ending with
            02:04:06:08:0d (inclusive). A 4-octet field containing an
            unsigned integer.</dd>
          <dt pn="section-11.2-4.13">valid-lifetime</dt>
          <dd pn="section-11.2-4.14">The valid lifetime for the
            address(es) in the option, expressed in units of seconds.
            A 4-octet field containing an unsigned integer.</dd>
          <dt pn="section-11.2-4.15">LLaddr-options</dt>
          <dd pn="section-11.2-4.16">Any encapsulated options that
            are specific to this particular address block. Currently, there
            are no such options defined, but there may be in the future.
            </dd>
        </dl>
        <t indent="0" pn="section-11.2-5">In a message sent by a client to a server, the valid
        lifetime field <bcp14>MUST</bcp14> be set to 0.  The server <bcp14>MUST</bcp14> ignore any
        received value.</t>
        <t indent="0" pn="section-11.2-6">In a message sent by a server to a client, the client <bcp14>MUST</bcp14> use
        the value in the valid lifetime field for the valid lifetime for
        the address block. The value in the valid lifetime field is the
        number of seconds remaining in the lifetime.</t>
        <t indent="0" pn="section-11.2-7">As per <xref target="RFC8415" sectionFormat="of" section="7.7" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8415#section-7.7" derivedContent="RFC8415"/>,
        the valid lifetime of 0xffffffff is taken to mean "infinity" and
        should be used carefully.</t>
        <t indent="0" pn="section-11.2-8">More than one LLADDR option can appear in an IA_LL option.</t>
      </section>
    </section>
    <section anchor="selecting-addresses" numbered="true" removeInRFC="false" toc="include" pn="section-12">
      <name slugifiedName="name-selecting-link-layer-addres">Selecting Link-Layer Addresses for Assignment to an IA_LL</name>
      <t indent="0" pn="section-12-1">A server selects link-layer addresses to be assigned to an IA_LL
      according to the assignment policies determined by the server
      administrator and the requirements of that address space.</t>
      <t indent="0" pn="section-12-2">Link-layer addresses are typically specific to a link and the
      server <bcp14>SHOULD</bcp14> follow the steps in <xref target="RFC8415" sectionFormat="of" section="13.1" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8415#section-13.1" derivedContent="RFC8415"/> to determine the client's link.</t>
      <t indent="0" pn="section-12-3">For IEEE 802 MAC addresses (see <xref target="IEEEStd802" format="default" sectionFormat="of" derivedContent="IEEEStd802"/> as
      amended by <xref target="IEEEStd802c" format="default" sectionFormat="of" derivedContent="IEEEStd802c"/>):</t>
      <ol spacing="normal" type="1" indent="adaptive" start="1" pn="section-12-4">
        <li pn="section-12-4.1" derivedCounter="1.">Server administrators <bcp14>SHOULD</bcp14> follow the IEEE 802
        Specifications with regard to the unicast address pools made
        available for assignment (see <xref target="IEEE802cSummary" format="default" sectionFormat="of" derivedContent="Appendix A"/> and
        <xref target="IEEEStd802c" format="default" sectionFormat="of" derivedContent="IEEEStd802c"/>) -- only address space reserved for
        local use or with the authorization of the assignee may be used.
        </li>
        <li pn="section-12-4.2" derivedCounter="2.">Servers <bcp14>MUST NOT</bcp14> allow administrators to
        configure address pools that would cross the boundary of 2<sup>42</sup> bits
        (for 48-bit MAC addresses) to avoid issues with changes in the
        first octet of the address and the special bits therein (see
        <xref target="IEEE802cSummary" format="default" sectionFormat="of" derivedContent="Appendix A"/>). Clients <bcp14>MUST</bcp14> reject assignments
        where the assigned block would cross this boundary (they <bcp14>MUST</bcp14>
        decline the allocation -- see <xref target="RFC8415" sectionFormat="of" section="18.2.8" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8415#section-18.2.8" derivedContent="RFC8415"/>). 
        </li>
        <li pn="section-12-4.3" derivedCounter="3.">A server <bcp14>MAY</bcp14> use options supplied by a
        relay agent or client to select the quadrant (see
        <xref target="IEEE802cSummary" format="default" sectionFormat="of" derivedContent="Appendix A"/>) from which addresses are to be
        assigned. This <bcp14>MAY</bcp14> include options like those specified in
        <xref target="RFC8948" format="default" sectionFormat="of" derivedContent="RFC8948"/>.</li>
      </ol>
    </section>
    <section anchor="iana" numbered="true" removeInRFC="false" toc="include" pn="section-13">
      <name slugifiedName="name-iana-considerations">IANA Considerations</name>
      <t indent="0" pn="section-13-1">IANA has assigned the OPTION_IA_LL (138)
   option code from the "Option Codes" subregistry of the
   "Dynamic Host Configuration Protocol for IPv6 (DHCPv6)" registry maintained at
   <eref target="http://www.iana.org/assignments/dhcpv6-parameters" brackets="angle"/>:</t>
      <dl newline="false" spacing="compact" indent="14" pn="section-13-2">
        <dt pn="section-13-2.1">Value:</dt>
        <dd pn="section-13-2.2">138</dd>
        <dt pn="section-13-2.3">Description:</dt>
        <dd pn="section-13-2.4">OPTION_IA_LL</dd>
        <dt pn="section-13-2.5">Client ORO:</dt>
        <dd pn="section-13-2.6">No</dd>
        <dt pn="section-13-2.7">Singleton Option:</dt>
        <dd pn="section-13-2.8">No</dd>
        <dt pn="section-13-2.9">Reference:</dt>
        <dd pn="section-13-2.10">RFC 8947</dd>
      </dl>
      <t indent="0" pn="section-13-3">IANA has assigned the OPTION_LLADDR (139)
      option code from the "Option Codes" subregistry of the
   "Dynamic Host Configuration Protocol for IPv6 (DHCPv6)" registry maintained at
   <eref target="http://www.iana.org/assignments/dhcpv6-parameters" brackets="angle"/>:</t>
      <dl newline="false" spacing="compact" indent="14" pn="section-13-4">
        <dt pn="section-13-4.1">Value:</dt>
        <dd pn="section-13-4.2">139</dd>
        <dt pn="section-13-4.3">Description:</dt>
        <dd pn="section-13-4.4">OPTION_LLADDR</dd>
        <dt pn="section-13-4.5">Client ORO:</dt>
        <dd pn="section-13-4.6">No</dd>
        <dt pn="section-13-4.7">Singleton Option:</dt>
        <dd pn="section-13-4.8">No</dd>
        <dt pn="section-13-4.9">Reference:</dt>
        <dd pn="section-13-4.10">RFC 8947</dd>
      </dl>
    </section>
    <section anchor="security" numbered="true" removeInRFC="false" toc="include" pn="section-14">
      <name slugifiedName="name-security-considerations">Security Considerations</name>
      <t indent="0" pn="section-14-1">See <xref target="RFC8415" sectionFormat="of" section="22" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8415#section-22" derivedContent="RFC8415"/> and
      <xref target="RFC7227" sectionFormat="of" section="23" format="default" derivedLink="https://rfc-editor.org/rfc/rfc7227#section-23" derivedContent="RFC7227"/> for
      the DHCP security considerations. See <xref target="RFC8200" format="default" sectionFormat="of" derivedContent="RFC8200"/>
      for the IPv6 security considerations.</t>
      <t indent="0" pn="section-14-2">As discussed in <xref target="RFC8415" sectionFormat="of" section="22" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8415#section-22" derivedContent="RFC8415"/>:</t>
      <blockquote pn="section-14-3">
        <t indent="0" pn="section-14-3.1">DHCP
      lacks end-to-end encryption between clients and servers; thus,
      hijacking, tampering, and eavesdropping attacks are all possible as
      a result.</t>
      </blockquote>
      <t indent="0" pn="section-14-4">In some network environments, it is possible to secure
      them, as discussed later in <xref target="RFC8415" sectionFormat="of" section="22" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8415#section-22" derivedContent="RFC8415"/>.</t>
      <t indent="0" pn="section-14-5">If not all parties on a link use this mechanism to obtain an address from the space assigned to the DHCP server, there is the possibility of the same link-layer address being used by more than one device.


      Note that this issue would exist on these networks
      even if DHCP were not used to obtain the address.</t>
      <t indent="0" pn="section-14-6">Server implementations <bcp14>SHOULD</bcp14> consider configuration options to
      limit the maximum number of addresses to allocate (both in a single
      request and in total) to a client. However, note that this does not
      prevent a bad client actor from pretending to be many different
      clients and consuming all available addresses.</t>
    </section>
    <section anchor="privacy" numbered="true" removeInRFC="false" toc="include" pn="section-15">
      <name slugifiedName="name-privacy-considerations">Privacy Considerations</name>
      <t indent="0" pn="section-15-1">See <xref target="RFC8415" sectionFormat="of" section="23" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8415#section-23" derivedContent="RFC8415"/> for the
      DHCP privacy considerations.</t>
      <t indent="0" pn="section-15-2">For a client requesting a link-layer address directly from
      a server, as the address assigned to a client will
      likely be used by the client to communicate on the link, the
      address will be exposed to those able to listen in on this
      communication. For those peers on the link that are able to
      listen in on the DHCP exchange, they would also be able to
      correlate the client's identity (based on the DUID used) with the
      assigned address. Additional mechanisms, such as the ones described
      in <xref target="RFC7844" format="default" sectionFormat="of" derivedContent="RFC7844"/>, can also be used to improve
      anonymity by minimizing what is exposed.</t>
      <t indent="0" pn="section-15-3">As discussed in <xref target="RFC8415" sectionFormat="of" section="23" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8415#section-23" derivedContent="RFC8415"/>, DHCP
      servers and hypervisors may need to consider the implications of
      assigning addresses sequentially. Though in general, this is only
      of link-local concern unlike for IPv6 address assignment and
      prefix delegation, as these may be used for communication over the
      Internet.</t>
    </section>
  </middle>
  <back>
    <references pn="section-16">
      <name slugifiedName="name-references">References</name>
      <references pn="section-16.1">
        <name slugifiedName="name-normative-references">Normative References</name>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" quoteTitle="true" derivedAnchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author initials="S." surname="Bradner" fullname="S. Bradner">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="1997" month="March"/>
            <abstract>
              <t indent="0">In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized. This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC4861" target="https://www.rfc-editor.org/info/rfc4861" quoteTitle="true" derivedAnchor="RFC4861">
          <front>
            <title>Neighbor Discovery for IP version 6 (IPv6)</title>
            <author initials="T." surname="Narten" fullname="T. Narten">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="E." surname="Nordmark" fullname="E. Nordmark">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="W." surname="Simpson" fullname="W. Simpson">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="H." surname="Soliman" fullname="H. Soliman">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2007" month="September"/>
            <abstract>
              <t indent="0">This document specifies the Neighbor Discovery protocol for IP Version 6.  IPv6 nodes on the same link use Neighbor Discovery to discover each other's presence, to determine each other's link-layer addresses, to find routers, and to maintain reachability information about the paths to active neighbors.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4861"/>
          <seriesInfo name="DOI" value="10.17487/RFC4861"/>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" quoteTitle="true" derivedAnchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author initials="B." surname="Leiba" fullname="B. Leiba">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2017" month="May"/>
            <abstract>
              <t indent="0">RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC8415" target="https://www.rfc-editor.org/info/rfc8415" quoteTitle="true" derivedAnchor="RFC8415">
          <front>
            <title>Dynamic Host Configuration Protocol for IPv6 (DHCPv6)</title>
            <author initials="T." surname="Mrugalski" fullname="T. Mrugalski">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="M." surname="Siodelski" fullname="M. Siodelski">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="B." surname="Volz" fullname="B. Volz">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="A." surname="Yourtchenko" fullname="A. Yourtchenko">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="M." surname="Richardson" fullname="M. Richardson">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S." surname="Jiang" fullname="S. Jiang">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="T." surname="Lemon" fullname="T. Lemon">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="T." surname="Winters" fullname="T. Winters">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2018" month="November"/>
            <abstract>
              <t indent="0">This document describes the Dynamic Host Configuration Protocol for IPv6 (DHCPv6): an extensible mechanism for configuring nodes with network configuration parameters, IP addresses, and prefixes. Parameters can be provided statelessly, or in combination with stateful assignment of one or more IPv6 addresses and/or IPv6 prefixes.  DHCPv6 can operate either in place of or in addition to stateless address autoconfiguration (SLAAC).</t>
              <t indent="0">This document updates the text from RFC 3315 (the original DHCPv6 specification) and incorporates prefix delegation (RFC 3633), stateless DHCPv6 (RFC 3736), an option to specify an upper bound for how long a client should wait before refreshing information (RFC 4242), a mechanism for throttling DHCPv6 clients when DHCPv6 service is not available (RFC 7083), and relay agent handling of unknown messages (RFC 7283).  In addition, this document clarifies the interactions between models of operation (RFC 7550).  As such, this document obsoletes RFC 3315, RFC 3633, RFC 3736, RFC 4242, RFC 7083, RFC 7283, and RFC 7550.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8415"/>
          <seriesInfo name="DOI" value="10.17487/RFC8415"/>
        </reference>
      </references>
      <references pn="section-16.2">
        <name slugifiedName="name-informative-references">Informative References</name>
        <reference anchor="IEEE-P802.1CQ-Project" target="https://standards.ieee.org/project/802_1CQ.html" quoteTitle="true" derivedAnchor="IEEE-P802.1CQ-Project">
          <front>
            <title>P802.1CQ - Standard for Local and Metropolitan Area Networks: Multicast and Local Address Assignment</title>
            <author>
              <organization showOnFrontPage="true">IEEE</organization>
            </author>
          </front>
        </reference>
        <reference anchor="IEEEStd802" quoteTitle="true" target="https://doi.org/10.1109/IEEESTD.2014.6847097" derivedAnchor="IEEEStd802">
          <front>
            <title>IEEE Standard for Local and Metropolitan Area Networks: Overview and Architecture, IEEE Std 802</title>
            <author>
              <organization showOnFrontPage="true">IEEE</organization>
            </author>
          </front>
          <seriesInfo name="DOI" value="10.1109/IEEESTD.2014.6847097"/>
          <refcontent>IEEE STD 802-2014</refcontent>
        </reference>
        <reference anchor="IEEEStd802.11" quoteTitle="true" target="https://doi.org/10.1109/IEEESTD.2016.7786995" derivedAnchor="IEEEStd802.11">
          <front>
            <title>IEEE Standard for Information technology--Telecommunications and information exchange between systems Local and metropolitan area networks--Specific requirements - Part 11: Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) Specifications</title>
            <author>
              <organization showOnFrontPage="true">IEEE</organization>
            </author>
          </front>
          <seriesInfo name="DOI" value="10.1109/IEEESTD.2016.7786995"/>
          <refcontent>IEEE Std 802.11</refcontent>
        </reference>
        <reference anchor="IEEEStd802c" quoteTitle="true" target="https://doi.org/10.1109/IEEESTD.2017.8016709" derivedAnchor="IEEEStd802c">
          <front>
            <title>IEEE Standard for Local and Metropolitan Area Networks:Overview and Architecture--Amendment 2: Local Medium Access Control (MAC) Address Usage</title>
            <author>
              <organization showOnFrontPage="true">IEEE</organization>
            </author>
          </front>
          <seriesInfo name="DOI" value="10.1109/IEEESTD.2017.8016709"/>
          <refcontent>IEEE Std 802c-2017</refcontent>
        </reference>
        <reference anchor="RFC2464" target="https://www.rfc-editor.org/info/rfc2464" quoteTitle="true" derivedAnchor="RFC2464">
          <front>
            <title>Transmission of IPv6 Packets over Ethernet Networks</title>
            <author initials="M." surname="Crawford" fullname="M. Crawford">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="1998" month="December"/>
            <abstract>
              <t indent="0">This document specifies the frame format for transmission of IPv6 packets and the method of forming IPv6 link-local addresses and statelessly autoconfigured addresses on Ethernet networks.  It also specifies the content of the Source/Target Link-layer Address option used in Router Solicitation, Router Advertisement, Neighbor Solicitation, Neighbor Advertisement and Redirect messages when those messages are transmitted on an Ethernet.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2464"/>
          <seriesInfo name="DOI" value="10.17487/RFC2464"/>
        </reference>
        <reference anchor="RFC4429" target="https://www.rfc-editor.org/info/rfc4429" quoteTitle="true" derivedAnchor="RFC4429">
          <front>
            <title>Optimistic Duplicate Address Detection (DAD) for IPv6</title>
            <author initials="N." surname="Moore" fullname="N. Moore">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2006" month="April"/>
            <abstract>
              <t indent="0">Optimistic Duplicate Address Detection is an interoperable modification of the existing IPv6 Neighbor Discovery (RFC 2461) and Stateless Address Autoconfiguration (RFC 2462) processes.  The intention is to minimize address configuration delays in the successful case, to reduce disruption as far as possible in the failure case, and to remain interoperable with unmodified hosts and routers.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4429"/>
          <seriesInfo name="DOI" value="10.17487/RFC4429"/>
        </reference>
        <reference anchor="RFC5494" target="https://www.rfc-editor.org/info/rfc5494" quoteTitle="true" derivedAnchor="RFC5494">
          <front>
            <title>IANA Allocation Guidelines for the Address Resolution Protocol (ARP)</title>
            <author initials="J." surname="Arkko" fullname="J. Arkko">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="C." surname="Pignataro" fullname="C. Pignataro">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2009" month="April"/>
            <abstract>
              <t indent="0">This document specifies the IANA guidelines for allocating new values in the Address Resolution Protocol (ARP).  This document also reserves some numbers for experimentation purposes.  The changes also affect other protocols that employ values from the ARP name spaces.   [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5494"/>
          <seriesInfo name="DOI" value="10.17487/RFC5494"/>
        </reference>
        <reference anchor="RFC7227" target="https://www.rfc-editor.org/info/rfc7227" quoteTitle="true" derivedAnchor="RFC7227">
          <front>
            <title>Guidelines for Creating New DHCPv6 Options</title>
            <author initials="D." surname="Hankins" fullname="D. Hankins">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="T." surname="Mrugalski" fullname="T. Mrugalski">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="M." surname="Siodelski" fullname="M. Siodelski">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S." surname="Jiang" fullname="S. Jiang">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S." surname="Krishnan" fullname="S. Krishnan">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2014" month="May"/>
            <abstract>
              <t indent="0">This document provides guidance to prospective DHCPv6 option developers to help them create option formats that are easily adoptable by existing DHCPv6 software.  It also provides guidelines for expert reviewers to evaluate new registrations.  This document updates RFC 3315.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="187"/>
          <seriesInfo name="RFC" value="7227"/>
          <seriesInfo name="DOI" value="10.17487/RFC7227"/>
        </reference>
        <reference anchor="RFC7228" target="https://www.rfc-editor.org/info/rfc7228" quoteTitle="true" derivedAnchor="RFC7228">
          <front>
            <title>Terminology for Constrained-Node Networks</title>
            <author initials="C." surname="Bormann" fullname="C. Bormann">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="M." surname="Ersue" fullname="M. Ersue">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="A." surname="Keranen" fullname="A. Keranen">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2014" month="May"/>
            <abstract>
              <t indent="0">The Internet Protocol Suite is increasingly used on small devices with severe constraints on power, memory, and processing resources, creating constrained-node networks.  This document provides a number of basic terms that have been useful in the standardization work for constrained-node networks.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7228"/>
          <seriesInfo name="DOI" value="10.17487/RFC7228"/>
        </reference>
        <reference anchor="RFC7844" target="https://www.rfc-editor.org/info/rfc7844" quoteTitle="true" derivedAnchor="RFC7844">
          <front>
            <title>Anonymity Profiles for DHCP Clients</title>
            <author initials="C." surname="Huitema" fullname="C. Huitema">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="T." surname="Mrugalski" fullname="T. Mrugalski">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S." surname="Krishnan" fullname="S. Krishnan">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2016" month="May"/>
            <abstract>
              <t indent="0">Some DHCP options carry unique identifiers.  These identifiers can enable device tracking even if the device administrator takes care of randomizing other potential identifications like link-layer addresses or IPv6 addresses.  The anonymity profiles are designed for clients that wish to remain anonymous to the visited network.  The profiles provide guidelines on the composition of DHCP or DHCPv6 messages, designed to minimize disclosure of identifying information.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7844"/>
          <seriesInfo name="DOI" value="10.17487/RFC7844"/>
        </reference>
        <reference anchor="RFC8200" target="https://www.rfc-editor.org/info/rfc8200" quoteTitle="true" derivedAnchor="RFC8200">
          <front>
            <title>Internet Protocol, Version 6 (IPv6) Specification</title>
            <author initials="S." surname="Deering" fullname="S. Deering">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="R." surname="Hinden" fullname="R. Hinden">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2017" month="July"/>
            <abstract>
              <t indent="0">This document specifies version 6 of the Internet Protocol (IPv6). It obsoletes RFC 2460.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="86"/>
          <seriesInfo name="RFC" value="8200"/>
          <seriesInfo name="DOI" value="10.17487/RFC8200"/>
        </reference>
        <reference anchor="RFC8948" target="https://www.rfc-editor.org/info/rfc8948" quoteTitle="true" derivedAnchor="RFC8948">
          <front>
            <title>Structured Local Address Plan (SLAP) Quadrant Selection Option for DHCPv6</title>
            <author initials="CJ" surname="Bernardos" fullname="Carlos J. Bernardos">
              <organization showOnFrontPage="true">Universidad Carlos III de Madrid</organization>
            </author>
            <author initials="A" surname="Mourad" fullname="Alain Mourad">
              <organization showOnFrontPage="true">InterDigital Europe</organization>
            </author>
            <date month="December" year="2020"/>
          </front>
          <seriesInfo name="RFC" value="8948"/>
          <seriesInfo name="DOI" value="10.17487/RFC8948"/>
        </reference>
      </references>
    </references>
    <section anchor="IEEE802cSummary" numbered="true" removeInRFC="false" toc="include" pn="section-appendix.a">
      <name slugifiedName="name-ieee-802c-summary">IEEE 802c Summary</name>
      <t indent="0" pn="section-appendix.a-1">This appendix provides a brief summary of IEEE 802c
           <xref target="IEEEStd802c" format="default" sectionFormat="of" derivedContent="IEEEStd802c"/>.</t>
      <t indent="0" pn="section-appendix.a-2">The original IEEE 802 specifications assigned half of the 48-bit
      MAC address space to local use -- these addresses have the U/L bit
      set to 1 and are locally administered with no imposed structure.</t>
      <t indent="0" pn="section-appendix.a-3">In 2017, the IEEE issued the IEEE Std 802c specification, which
      defines a new optional "Structured Local Address Plan (SLAP) that
      specifies different assignment approaches in four specified regions
      of the local MAC address space". Under this plan, there are four SLAP
      quadrants that use different assignment policies.</t>
      <t indent="0" pn="section-appendix.a-4">The first octet of the MAC address Z and Y bits define the
      quadrant for locally assigned addresses (X-bit is 1). In IEEE
      representation, these bits are as follows:</t>
      <t keepWithNext="true" indent="0" pn="section-appendix.a-5"/>
      <figure anchor="SLAP-Bits" align="left" suppress-title="false" pn="figure-3">
        <name slugifiedName="name-slap-bits">SLAP Bits</name>
        <artwork align="left" pn="section-appendix.a-6.1">
    LSB                MSB
    M  X  Y  Z  -  -  -  -
    |  |  |  |
    |  |  |  +------------ SLAP Z-bit
    |  |  +--------------- SLAP Y-bit
    |  +------------------ X-bit (U/L) = 1 for locally assigned
    +--------------------- M-bit (I/G) (unicast/group)
</artwork>
      </figure>
      <t keepWithPrevious="true" indent="0" pn="section-appendix.a-7"/>
      <t indent="0" pn="section-appendix.a-8">The SLAP quadrants are:</t>
      <table align="center" pn="table-1">
        <name slugifiedName="name-slap-quadrants">SLAP Quadrants</name>
        <thead>
          <tr>
            <th align="right" colspan="1" rowspan="1">Quadrant</th>
            <th align="left" colspan="1" rowspan="1">Y-bit</th>
            <th align="left" colspan="1" rowspan="1">Z-bit</th>
            <th align="left" colspan="1" rowspan="1">Local Identifier Type</th>
            <th align="left" colspan="1" rowspan="1">Local Identifier</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="right" colspan="1" rowspan="1">01</td>
            <td align="left" colspan="1" rowspan="1">0</td>
            <td align="left" colspan="1" rowspan="1">1</td>
            <td align="left" colspan="1" rowspan="1">Extended Local</td>
            <td align="left" colspan="1" rowspan="1">ELI</td>
          </tr>
          <tr>
            <td align="right" colspan="1" rowspan="1">11</td>
            <td align="left" colspan="1" rowspan="1">1</td>
            <td align="left" colspan="1" rowspan="1">1</td>
            <td align="left" colspan="1" rowspan="1">Standard Assigned</td>
            <td align="left" colspan="1" rowspan="1">SAI</td>
          </tr>
          <tr>
            <td align="right" colspan="1" rowspan="1">00</td>
            <td align="left" colspan="1" rowspan="1">0</td>
            <td align="left" colspan="1" rowspan="1">0</td>
            <td align="left" colspan="1" rowspan="1">Administratively Assigned</td>
            <td align="left" colspan="1" rowspan="1">AAI</td>
          </tr>
          <tr>
            <td align="right" colspan="1" rowspan="1">10</td>
            <td align="left" colspan="1" rowspan="1">1</td>
            <td align="left" colspan="1" rowspan="1">0</td>
            <td align="left" colspan="1" rowspan="1">Reserved</td>
            <td align="left" colspan="1" rowspan="1">Reserved</td>
          </tr>
        </tbody>
      </table>
      <t indent="0" pn="section-appendix.a-10">MAC addresses derived from an Extended Local Identifier (ELI) are based
      on an assigned Company ID (CID), which is 24 bits (including the M,
      X, Y, and Z bits) for 48-bit MAC addresses. This leaves 24 bits for
      the locally assigned address for each CID for unicast (M-bit = 0)
      and also for multicast (M-bit = 1). The CID is assigned by the IEEE
      Registration Authority (RA).</t>
      <t indent="0" pn="section-appendix.a-11">MAC addresses derived from a Standard Assigned Identifier (SAI) are
      assigned by a protocol specified in an IEEE 802 standard. For
      48-bit MAC addresses, 44 bits are available. Multiple protocols
      for assigning SAIs may be specified in IEEE standards. Coexistence
      of multiple protocols may be supported by limiting the subspace
      available for assignment by each protocol.</t>
      <t indent="0" pn="section-appendix.a-12">MAC addresses derived from an Administratively Assigned Identifier (AAI)
      are assigned locally. Administrators manage the space as needed.
      Note that multicast IPv6 packets <xref target="RFC2464" format="default" sectionFormat="of" derivedContent="RFC2464"/> use a
      destination address starting in 33-33, so AAI addresses in that
      range should not be assigned. For 48-bit MAC addresses, 44 bits are
      available.</t>
      <t indent="0" pn="section-appendix.a-13">The last quadrant is reserved for future use. While this quadrant
      may also be used similar to AAI space, administrators should be
      aware that future specifications may define alternate uses that
      could be incompatible.</t>
    </section>
    <section anchor="acknowledgements" numbered="false" removeInRFC="false" toc="include" pn="section-appendix.b">
      <name slugifiedName="name-acknowledgments">Acknowledgments</name>
      <t indent="0" pn="section-appendix.b-1">Thanks to the DHC Working Group participants that reviewed this
      document and provided comments and support. With special thanks to
      <contact fullname="Ian Farrer"/> for his thorough reviews and shepherding of this
      document through the IETF process. Thanks also to directorate reviewers
      <contact fullname="Samita Chakrabarti"/>, <contact fullname="Roni       Even"/>, and <contact fullname="Tianran Zhou"/> and IESG members
      <contact fullname="Martin Duke"/>, <contact fullname="Benjamin Kaduk"/>,
      <contact fullname="Murray Kucherawy"/>, <contact fullname="Warren       Kumari"/>, <contact fullname="Barry Leiba"/>, <contact fullname="Alvaro       Retana"/>, <contact fullname="Éric Vyncke"/>, and <contact fullname="Robert Wilton"/> for their 
      suggestions. And thanks to <contact fullname="Roger Marks"/>, <contact fullname="Robert Grow"/>, and <contact fullname="Antonio de la       Oliva"/>
      for comments related to IEEE work and references.
      </t>
    </section>
    <section anchor="authors-addresses" numbered="false" removeInRFC="false" toc="include" pn="section-appendix.c">
      <name slugifiedName="name-authors-addresses">Authors' Addresses</name>
      <author fullname="Bernie Volz" initials="B" surname="Volz">
        <organization abbrev="Cisco" showOnFrontPage="true">Cisco Systems, Inc.</organization>
        <address>
          <postal>
            <street>300 Beaver Brook Rd</street>
            <city>Boxborough</city>
            <region>MA</region>
            <code>01719</code>
            <country>United States of America</country>
          </postal>
          <email>volz@cisco.com</email>
        </address>
      </author>
      <author fullname="Tomek Mrugalski" initials="T." surname="Mrugalski">
        <organization abbrev="ISC" showOnFrontPage="true">Internet Systems Consortium, Inc.</organization>
        <address>
          <postal>
            <street>PO Box 360</street>
            <city>Newmarket</city>
            <region>NH</region>
            <code>03857</code>
            <country>United States of America</country>
          </postal>
          <email>tomasz.mrugalski@gmail.com</email>
        </address>
      </author>
      <author fullname="Carlos J. Bernardos" initials="CJ." surname="Bernardos">
        <organization abbrev="UC3M" showOnFrontPage="true">Universidad Carlos III de Madrid</organization>
        <address>
          <postal>
            <street>Av. Universidad, 30</street>
            <city>Leganes, Madrid</city>
            <code>28911</code>
            <country>Spain</country>
          </postal>
          <phone>+34 91624 6236</phone>
          <email>cjbc@it.uc3m.es</email>
          <uri>http://www.it.uc3m.es/cjbc/</uri>
        </address>
      </author>
    </section>
  </back>
</rfc>
