<?xml version='1.0' encoding='utf-8'?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" category="std" docName="draft-ietf-6man-pio-pflag-12" number="9762" ipr="trust200902" obsoletes="" updates="4861, 4862" submissionType="IETF" xml:lang="en" tocInclude="true" sortRefs="true" symRefs="true" consensus="true" prepTime="2025-06-16T20:53:46" indexInclude="true" scripts="Common,Latin" tocDepth="3">
  <link href="https://datatracker.ietf.org/doc/draft-ietf-6man-pio-pflag-12" rel="prev"/>
  <link href="https://dx.doi.org/10.17487/rfc9762" rel="alternate"/>
  <link href="urn:issn:2070-1721" rel="alternate"/>
  <front>
    <title abbrev="PIO P Flag">Using Router Advertisements to Signal the Availability of DHCPv6 Prefix Delegation to Clients</title>
    <seriesInfo name="RFC" value="9762" stream="IETF"/>
    <author initials="L." surname="Colitti" fullname="Lorenzo Colitti">
      <organization showOnFrontPage="true">Google</organization>
      <address>
        <postal>
          <street>Shibuya 3-21-3</street>
          <country>Japan</country>
        </postal>
        <email>lorenzo@google.com</email>
      </address>
    </author>
    <author fullname="Jen Linkova" initials="J" surname="Linkova">
      <organization showOnFrontPage="true">Google</organization>
      <address>
        <postal>
          <street>1 Darling Island Rd</street>
          <city>Pyrmont</city>
          <region>NSW</region>
          <code>2009</code>
          <country>Australia</country>
        </postal>
        <email>furry13@gmail.com</email>
        <email>furry@google.com</email>
      </address>
    </author>
    <author fullname="Xiao Ma" initials="X" role="editor" surname="Ma">
      <organization showOnFrontPage="true">Google</organization>
      <address>
        <postal>
          <street>Shibuya 3-21-3</street>
          <country>Japan</country>
        </postal>
        <email>xiaom@google.com</email>
      </address>
    </author>
    <author fullname="David 'equinox' Lamparter" initials="D" surname="Lamparter">
      <organization showOnFrontPage="true">NetDEF, Inc.</organization>
      <address>
        <postal>
          <city>Leipzig</city>
          <code>04229</code>
          <country>Germany</country>
        </postal>
        <email>equinox@diac24.net</email>
        <email>equinox@opensourcerouting.org</email>
      </address>
    </author>
    <date month="06" year="2025"/>
    <area>INT</area>
    <workgroup>6man</workgroup>
    <keyword>ipv6</keyword>
    <keyword>slaac</keyword>
    <keyword>pio</keyword>
    <keyword>dhcpv6-pd</keyword>
    <abstract pn="section-abstract">
      <t indent="0" pn="section-abstract-1">
This document defines the P flag in the Prefix Information Option (PIO) of
IPv6 Router Advertisements (RAs).  The flag is used to indicate that the
network prefers that clients use the deployment model in RFC 9663
instead of using individual addresses in the on-link prefix assigned using
Stateless Address Autoconfiguration (SLAAC) or DHCPv6 address assignment.
</t>
      <t indent="0" pn="section-abstract-2">
This document updates RFC 4862 to indicate that the Autonomous flag in a PIO
needs to be ignored if the PIO has the P flag set.  It also updates RFC 4861
to specify that the P flag indicates DHCPv6 prefix delegation support for
clients.
</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/rfc9762" 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) 2025 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 Revised BSD License text as described in
            Section 4.e of the Trust Legal Provisions and are provided without
            warranty as described in the Revised 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-rationale">Rationale</xref></t>
          </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-p-flag-overview">P Flag 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-router-behavior">Router Behavior</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-client-behavior">Client Behavior</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.7.2">
              <li pn="section-toc.1-1.7.2.1">
                <t indent="0" pn="section-toc.1-1.7.2.1.1"><xref derivedContent="7.1" format="counter" sectionFormat="of" target="section-7.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-processing-the-p-flag">Processing the P Flag</xref></t>
              </li>
              <li pn="section-toc.1-1.7.2.2">
                <t indent="0" pn="section-toc.1-1.7.2.2.1"><xref derivedContent="7.2" format="counter" sectionFormat="of" target="section-7.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-using-delegated-prefixes">
Using Delegated Prefix(es)
</xref></t>
              </li>
              <li pn="section-toc.1-1.7.2.3">
                <t indent="0" pn="section-toc.1-1.7.2.3.1"><xref derivedContent="7.3" format="counter" sectionFormat="of" target="section-7.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-absence-of-pios-with-the-p-">Absence of PIOs with the P Bit Set</xref></t>
              </li>
              <li pn="section-toc.1-1.7.2.4">
                <t indent="0" pn="section-toc.1-1.7.2.4.1"><xref derivedContent="7.4" format="counter" sectionFormat="of" target="section-7.4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-on-link-communication">On-Link Communication</xref></t>
              </li>
              <li pn="section-toc.1-1.7.2.5">
                <t indent="0" pn="section-toc.1-1.7.2.5.1"><xref derivedContent="7.5" format="counter" sectionFormat="of" target="section-7.5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-source-address-selection">Source Address Selection</xref></t>
              </li>
            </ul>
          </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-multihoming">
Multihoming
</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-modifications-to-rfc-mandat">
Modifications to RFC-Mandated Behavior 
</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.9.2">
              <li pn="section-toc.1-1.9.2.1">
                <t indent="0" pn="section-toc.1-1.9.2.1.1"><xref derivedContent="9.1" format="counter" sectionFormat="of" target="section-9.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-changes-to-rfc-4861">Changes to RFC 4861</xref></t>
              </li>
              <li pn="section-toc.1-1.9.2.2">
                <t indent="0" pn="section-toc.1-1.9.2.2.1"><xref derivedContent="9.2" format="counter" sectionFormat="of" target="section-9.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-changes-to-rfc-4862">Changes to RFC 4862</xref></t>
              </li>
            </ul>
          </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-security-considerations">Security Considerations</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-privacy-considerations">Privacy Considerations</xref></t>
          </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-iana-considerations">IANA Considerations</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-references">References</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.13.2">
              <li pn="section-toc.1-1.13.2.1">
                <t indent="0" pn="section-toc.1-1.13.2.1.1"><xref derivedContent="13.1" format="counter" sectionFormat="of" target="section-13.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-normative-references">Normative References</xref></t>
              </li>
              <li pn="section-toc.1-1.13.2.2">
                <t indent="0" pn="section-toc.1-1.13.2.2.1"><xref derivedContent="13.2" format="counter" sectionFormat="of" target="section-13.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-informative-references">Informative References</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.14">
            <t indent="0" pn="section-toc.1-1.14.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.a"/><xref derivedContent="" format="title" sectionFormat="of" target="name-acknowledgements">Acknowledgements</xref></t>
          </li>
          <li pn="section-toc.1-1.15">
            <t indent="0" pn="section-toc.1-1.15.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.b"/><xref derivedContent="" format="title" sectionFormat="of" target="name-authors-addresses">Authors' Addresses</xref></t>
          </li>
        </ul>
      </section>
    </toc>
  </front>
  <middle>
    <section numbered="true" removeInRFC="false" toc="include" pn="section-1">
      <name slugifiedName="name-introduction">Introduction</name>
      <t indent="0" pn="section-1-1">
<xref target="RFC9663" format="default" sectionFormat="of" derivedContent="RFC9663"/> documents an IPv6 address assignment model where IPv6 devices obtain dedicated prefixes from the network via DHCPv6 prefix delegation (DHCPv6-PD) <xref target="RFC8415" format="default" sectionFormat="of" derivedContent="RFC8415"/>. This model provides devices with a large IPv6 address space they can use to create addresses for communication, individually number virtual machines (VMs) or containers, or extend the network to downstream devices. It also provides scalability benefits on large networks because network infrastructure devices do not need to maintain per-address state, such as IPv6 neighbor cache, Source Address Validation Improvement (SAVI) <xref target="RFC7039" format="default" sectionFormat="of" derivedContent="RFC7039"/>  mappings, Virtual eXtensible Local Area Network (VXLAN) <xref target="RFC7348" format="default" sectionFormat="of" derivedContent="RFC7348"/> routes, etc.
</t>
      <t indent="0" pn="section-1-2">
  On networks with fewer devices, however, this model may not be appropriate, because scaling to support multiple individual IPv6 addresses per device is less of a concern. Also, many home networks currently offer prefix delegation but assume that a limited number of specialized devices and/or applications will require delegated prefixes and thus do not allocate enough address space to offer prefixes to every device that connects to the network.
  For example, if clients assume the <xref target="RFC9663" format="default" sectionFormat="of" derivedContent="RFC9663"/> deployment model on a home network that only receives a /60 from the ISP and each client obtains a /64 prefix, then the network will run out of prefixes after 15 devices have been connected.
</t>
      <t indent="0" pn="section-1-3">
Therefore, to safely roll out the support of the deployment model defined in <xref target="RFC9663" format="default" sectionFormat="of" derivedContent="RFC9663"/> on the client side, it is necessary to have a mechanism for the network to signal to the client which address assignment method is preferred.
</t>
      <t indent="0" pn="section-1-4">
</t>
    </section>
    <section 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 numbered="true" removeInRFC="false" toc="include" pn="section-3">
      <name slugifiedName="name-terminology">Terminology</name>
      <dl spacing="normal" newline="false" indent="3" pn="section-3-1">
        <dt pn="section-3-1.1">Node:</dt>
        <dd pn="section-3-1.2">a device that implements IPv6 <xref target="RFC8200" format="default" sectionFormat="of" derivedContent="RFC8200"/></dd>
        <dt pn="section-3-1.3">Host:</dt>
        <dd pn="section-3-1.4">any node that is not a router <xref target="RFC8200" format="default" sectionFormat="of" derivedContent="RFC8200"/></dd>
        <dt pn="section-3-1.5">Client:</dt>
        <dd pn="section-3-1.6">a node that connects to a network and acquires
	  addresses. The node may wish to obtain addresses for its own use, or it
	  may be a router that wishes to extend the network to its physical or
	  virtual subsystems, or both. It may be either a host or a router as
	  defined by <xref target="RFC8200" format="default" sectionFormat="of" derivedContent="RFC8200"/>.</dd>
        <dt pn="section-3-1.7">DHCPv6-PD:</dt>
        <dd pn="section-3-1.8">DHCPv6 Prefix Delegation <xref target="RFC8415" format="default" sectionFormat="of" derivedContent="RFC8415"/>; a mechanism to delegate IPv6 prefixes to clients.</dd>
        <dt pn="section-3-1.9">DHCPv6 IA_NA:</dt>
        <dd pn="section-3-1.10">Identity Association for Non-temporary Addresses (<xref section="21.4" sectionFormat="of" target="RFC8415" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8415#section-21.4" derivedContent="RFC8415"/>)</dd>
        <dt pn="section-3-1.11">DHCPv6 IA_PD:</dt>
        <dd pn="section-3-1.12">Identity Association for Prefix Delegation (<xref section="21.21" sectionFormat="of" target="RFC8415" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8415#section-21.21" derivedContent="RFC8415"/>)</dd>
        <dt pn="section-3-1.13">ND:</dt>
        <dd pn="section-3-1.14">Neighbor Discovery <xref target="RFC4861" format="default" sectionFormat="of" derivedContent="RFC4861"/></dd>
        <dt pn="section-3-1.15">On-link address:</dt>
        <dd pn="section-3-1.16">an address that is assigned to an interface on a specified link <xref target="RFC4861" format="default" sectionFormat="of" derivedContent="RFC4861"/></dd>
        <dt pn="section-3-1.17">On-link prefix:</dt>
        <dd pn="section-3-1.18">a prefix that is assigned to a specified link</dd>
        <dt pn="section-3-1.19">Off-link:</dt>
        <dd pn="section-3-1.20">the opposite of "on-link" (see <xref target="RFC4861" format="default" sectionFormat="of" derivedContent="RFC4861"/>)</dd>
        <dt pn="section-3-1.21">PIO:</dt>
        <dd pn="section-3-1.22">Prefix Information Option <xref target="RFC4862" format="default" sectionFormat="of" derivedContent="RFC4862"/></dd>
        <dt pn="section-3-1.23">RA:</dt>
        <dd pn="section-3-1.24">Router Advertisement <xref target="RFC4861" format="default" sectionFormat="of" derivedContent="RFC4861"/></dd>
        <dt pn="section-3-1.25">SLAAC:</dt>
        <dd pn="section-3-1.26">Stateless Address Autoconfiguration <xref target="RFC4862" format="default" sectionFormat="of" derivedContent="RFC4862"/></dd>
      </dl>
    </section>
    <section anchor="rationale" numbered="true" removeInRFC="false" toc="include" pn="section-4">
      <name slugifiedName="name-rationale">Rationale</name>
      <t indent="0" pn="section-4-1">
The network administrator might want to indicate to clients that requesting a prefix via DHCPv6-PD and using that prefix for address assignment (see <xref target="RFC9663" format="default" sectionFormat="of" derivedContent="RFC9663"/>) should be preferred over using individual addresses from the on-link prefix.
The information is passed to the client via a P flag in the PIO. The reasons for it being a PIO flag are as follows:
</t>
      <ul bare="false" empty="false" indent="3" spacing="normal" pn="section-4-2">
        <li pn="section-4-2.1">
The information must be contained in the RA because it must be available to the client before it decides to form IPv6 addresses from the PIO prefix using SLAAC. Otherwise, the client might use SLAAC to form IPv6 addresses from the PIO provided and start using them, even if a unique per-client prefix is available via DHCPv6-PD.
Forming addresses via SLAAC is suboptimal because if the client later acquires a prefix using DHCPv6-PD, it can either 1) use both the prefix and SLAAC addresses, reducing the scalability benefits of using DHCPv6-PD, or 2) remove the SLAAC addresses, which would be disruptive for applications that are using them.

</li>
        <li pn="section-4-2.2">
This information is specific to the particular prefix being announced. For
example, a network administrator might want clients to assign global addresses
from delegated prefixes but form Unique Local IPv6
Unicast Addresses <xref target="RFC4193" format="default" sectionFormat="of" derivedContent="RFC4193"/> from another PIO in the RA using SLAAC.  Also, in a multihoming situation,
one upstream network might choose to assign prefixes via prefix delegation and
another via PIOs.

</li>
      </ul>
      <t indent="0" pn="section-4-3">
Note that setting the P flag in a PIO expresses the network operator's preference that clients should attempt using DHCPv6-PD instead of performing individual address configuration on the prefix.
For clients that honor this preference by requesting prefix delegation, the actual delegated prefix will necessarily be a prefix different from the one from the PIO.
</t>
    </section>
    <section anchor="flag-over" numbered="true" removeInRFC="false" toc="include" pn="section-5">
      <name slugifiedName="name-p-flag-overview">P Flag Overview</name>
      <t indent="0" pn="section-5-1">
The P flag (also called the DHCPv6-PD Preferred Flag) is a 1-bit PIO flag, located after the R flag <xref target="RFC6275" format="default" sectionFormat="of" derivedContent="RFC6275"/>.

The presence of a PIO with the P flag set indicates that the network prefers that clients use prefix delegation instead of acquiring individual addresses via SLAAC or DHCPv6 address assignment. This implies that the network has a DHCPv6 server capable of making DHCPv6 prefix delegations to every device on the network, as described in <xref target="RFC9663" format="default" sectionFormat="of" derivedContent="RFC9663"/>.</t>
      <t indent="0" pn="section-5-2">
<xref target="fig_pio_new" format="default" sectionFormat="of" derivedContent="Figure 1"/> shows the resulting format of the PIO.
</t>
      <figure align="center" anchor="fig_pio_new" suppress-title="false" pn="figure-1">
        <artwork align="center" pn="section-5-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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Type      |    Length     | Prefix Length |L|A|R|P| Rsvd1 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                         Valid Lifetime                        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                       Preferred Lifetime                      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           Reserved2                           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
+                                                               +
|                                                               |
+                            Prefix                             +
|                                                               |
+                                                               +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
</artwork>
      </figure>
      <t indent="0" pn="section-5-4">
The P flag is independent of the value of the M and O flags in the RA.
If the network desires to delegate prefixes to devices that support DHCPv6 prefix delegation but do not support the P flag, it <bcp14>SHOULD</bcp14> also set the M or O bits in the RA to 1, because some devices, such as Customer Edge (CE) routers <xref target="RFC7084" format="default" sectionFormat="of" derivedContent="RFC7084"/>, might not initiate DHCPv6 prefix delegation if both the M and O bits are set to zero.
</t>
    </section>
    <section anchor="Router" numbered="true" removeInRFC="false" toc="include" pn="section-6">
      <name slugifiedName="name-router-behavior">Router Behavior</name>
      <t indent="0" pn="section-6-1">
Routers <bcp14>SHOULD</bcp14> set the P flag to zero by default, unless explicitly configured by the administrator, and <bcp14>SHOULD</bcp14> allow the operator to set the P flag value for any given prefix advertised in a PIO.
Routers <bcp14>MUST</bcp14> allow the P flag to be configured separately from the A flag.
In particular, enabling or disabling the P flag <bcp14>MUST NOT</bcp14> trigger automatic changes in the A flag value set by the router.
</t>
    </section>
    <section anchor="client" numbered="true" removeInRFC="false" toc="include" pn="section-7">
      <name slugifiedName="name-client-behavior">Client Behavior</name>
      <section numbered="true" removeInRFC="false" toc="include" pn="section-7.1">
        <name slugifiedName="name-processing-the-p-flag">Processing the P Flag</name>
        <t indent="0" pn="section-7.1-1">
This specification only applies to clients that support DHCPv6 prefix delegation.
Clients that do not support DHCPv6 prefix delegation <bcp14>MUST</bcp14> ignore the P flag.
The P flag is meaningless for link-local prefixes, and any PIO containing
the link-local prefix <bcp14>MUST</bcp14> be ignored as specified in <xref target="RFC4862" section="5.5.3" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc4862#section-5.5.3" derivedContent="RFC4862"/>.
In the following text, all prefixes are assumed not to be link-local.
</t>
        <t indent="0" pn="section-7.1-2">
For each interface, the client <bcp14>MUST</bcp14> keep a list of every prefix that was received
from a PIO with the P flag set and currently has a non-zero preferred lifetime.
The list affects the behavior of the DHCPv6 client as follows:
</t>
        <ul bare="false" empty="false" indent="3" spacing="normal" pn="section-7.1-3">
          <li pn="section-7.1-3.1">When a prefix's preferred lifetime becomes zero, either because the preferred
lifetime expires or because the client receives a PIO for the prefix with a zero
preferred lifetime, the prefix <bcp14>MUST</bcp14> be removed from the list.
</li>
          <li pn="section-7.1-3.2">When the length of the list increases to one, the client <bcp14>SHOULD</bcp14> start requesting
prefixes via DHCPv6 prefix delegation unless it is already doing so.</li>
          <li pn="section-7.1-3.3">When the length of the list decreases to zero, the client <bcp14>SHOULD</bcp14> stop requesting
or renewing prefixes via DHCPv6 prefix delegation if it has no other reason to do so.
The lifetimes of any prefixes already obtained via DHCPv6 are unaffected.</li>
          <li pn="section-7.1-3.4">
If the client has already received delegated prefix(es) from one or more
servers, then any time one or more prefix(es) are added to or removed from the list, the client <bcp14>MUST</bcp14> consider this to be a change in configuration information as
described in <xref target="RFC8415" section="18.2.12" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc8415#section-18.2.12" derivedContent="RFC8415"/>. In that case, the client <bcp14>MUST</bcp14> perform
a REBIND, unless the list is now empty.
This is in addition to performing a REBIND in the other cases required by that
section. Issuing a REBIND allows the client to obtain new prefixes if necessary, for example,
when the network is being renumbered. It also refreshes the state related to the
delegated prefix(es).
</li>
        </ul>
        <t indent="0" pn="section-7.1-4">
When a client requests a prefix via DHCPv6-PD, it <bcp14>MUST</bcp14> use the prefix length hint (<xref target="RFC8415" section="18.2.4" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc8415#section-18.2.4" derivedContent="RFC8415"/>) to request a prefix that is short enough to form addresses via SLAAC.</t>
        <t indent="0" pn="section-7.1-5">In order to achieve the scalability benefits of using DHCPv6-PD, the client
<bcp14>SHOULD</bcp14> prefer to form addresses from the delegated prefix
instead of using individual addresses in the on-link prefix(es). Therefore,
when the client requests a prefix using DHCPv6-PD, the client <bcp14>SHOULD NOT</bcp14> use SLAAC to obtain IPv6 addresses from PIOs with the P and A bits
set.  Similarly, if all PIOs processed by the client have the P bit set, the
client <bcp14>SHOULD NOT</bcp14> request individual IPv6 addresses from
DHCPv6, i.e., it <bcp14>SHOULD NOT</bcp14> include any IA_NA options in
Solicit messages <xref target="RFC8415" format="default" sectionFormat="of" derivedContent="RFC8415"/>.  The client <bcp14>MAY</bcp14>
continue to use addresses that are already configured.
</t>
        <t indent="0" pn="section-7.1-6">If the client does not obtain any suitable prefixes via DHCPv6-PD that are suitable for SLAAC, it <bcp14>MAY</bcp14> choose to disable further processing of the P flag on that interface, allowing the client to fall back to other address assignment mechanisms, such as forming addresses via SLAAC (if the PIO has the A flag set to 1) and/or requesting individual addresses via DHCPv6.</t>
      </section>
      <section anchor="received" numbered="true" removeInRFC="false" toc="include" pn="section-7.2">
        <name slugifiedName="name-using-delegated-prefixes">
Using Delegated Prefix(es)
</name>
        <t indent="0" pn="section-7.2-1">
		If the delegated prefix is too long to be used for SLAAC, the client <bcp14>MUST</bcp14> ignore it, as <xref section="7" sectionFormat="of" target="RFC9663" format="default" derivedLink="https://rfc-editor.org/rfc/rfc9663#section-7" derivedContent="RFC9663"/> requires the network to provide a SLAAC-suitable prefix to clients.
	If the prefix is shorter than required for SLAAC, the client <bcp14>SHOULD</bcp14> accept it, allocate one or more longer prefixes suitable for SLAAC, and use the prefixes as described below.
        </t>
        <t indent="0" pn="section-7.2-2">
For every accepted prefix:
</t>
        <ul bare="false" empty="false" indent="3" spacing="normal" pn="section-7.2-3">
          <li pn="section-7.2-3.1">
The client <bcp14>MAY</bcp14> form as many IPv6 addresses from the prefix as it chooses.
</li>
          <li pn="section-7.2-3.2">
The client <bcp14>MAY</bcp14> use the prefix to provide IPv6 addresses to internal components such as VMs or containers.
</li>
          <li pn="section-7.2-3.3">
The client <bcp14>MAY</bcp14> use the prefix to allow devices directly connected to it to obtain IPv6 addresses. For example, the client <bcp14>MAY</bcp14> route traffic for that prefix to an interface and send an RA containing a PIO for the prefix on that interface. That interface <bcp14>MUST NOT</bcp14> be the interface the prefix is obtained from. If the client advertises the prefix on an interface and it has formed addresses from the prefix, then it <bcp14>MUST</bcp14> act as though the addresses were assigned to that interface for the purposes of Neighbor Discovery and Duplicate Address Detection.
</li>
        </ul>
        <t indent="0" pn="section-7.2-4">The client <bcp14>MUST NOT</bcp14> send or forward packets with destination addresses within a delegated prefix to the interface that it obtained the prefix on, as this can cause a routing loop. This problem will not occur if the client has assigned the prefix to another interface. Another way the client can prevent this problem is to add to its routing table a high-metric discard route for the delegated prefix.
</t>
      </section>
      <section anchor="p0" numbered="true" removeInRFC="false" toc="include" pn="section-7.3">
        <name slugifiedName="name-absence-of-pios-with-the-p-">Absence of PIOs with the P Bit Set</name>
        <t indent="0" pn="section-7.3-1">
The P bit is purely a positive indicator, telling nodes that DHCPv6
prefix delegation is available and the network prefers that nodes use it,
even if they do not have any other reason to run a prefix delegation client.
The absence of any PIOs with the P bit does not carry any kind of signal to
the opposite and <bcp14>MUST NOT</bcp14> be processed to mean that DHCPv6-PD is absent. In
particular, nodes that run DHCPv6-PD due to explicit configuration or by default
(e.g., to extend the network) <bcp14>MUST NOT</bcp14> disable DHCPv6-PD on the absence of PIOs
with the P bit set.
A very common example of this are CE routers as described
by <xref target="RFC7084" format="default" sectionFormat="of" derivedContent="RFC7084"/>.
</t>
      </section>
      <section anchor="onlink" numbered="true" removeInRFC="false" toc="include" pn="section-7.4">
        <name slugifiedName="name-on-link-communication">On-Link Communication</name>
        <t indent="0" pn="section-7.4-1">
When the network delegates unique prefixes to clients, each client will consider other clients' destination addresses to be off-link, because those addresses are from the delegated prefixes and are not within any on-link prefix. When a client sends traffic to another client, packets will initially be sent to the default router. The router may respond with an ICMPv6 redirect message (<xref section="4.5" sectionFormat="of" target="RFC4861" format="default" derivedLink="https://rfc-editor.org/rfc/rfc4861#section-4.5" derivedContent="RFC4861"/>). If the client receives and accepts the redirect, then traffic can flow directly from device to device. Therefore, hosts supporting the P flag <bcp14>SHOULD</bcp14> process redirects unless configured otherwise.
Hosts that do not process ICMPv6 redirects, and routers that do not act on ICMPv6 redirects, may experience higher latency while communicating to prefixes delegated to other clients on the same link.
</t>
      </section>
      <section anchor="addrselect" numbered="true" removeInRFC="false" toc="include" pn="section-7.5">
        <name slugifiedName="name-source-address-selection">Source Address Selection</name>
        <t indent="0" pn="section-7.5-1">
  For the purpose of source address selection <xref target="RFC6724" format="default" sectionFormat="of" derivedContent="RFC6724"/>, if the host creates any addresses from a delegated prefix, it <bcp14>SHOULD</bcp14> treat those addresses as if they were assigned to the interface on which the prefix was received.
  This includes placing them in the candidate set and associating them with the outgoing interface when implementing Rule 5 of the source address selection algorithm <xref target="RFC6724" format="default" sectionFormat="of" derivedContent="RFC6724"/>.
</t>
      </section>
    </section>
    <section anchor="mhoming" numbered="true" removeInRFC="false" toc="include" pn="section-8">
      <name slugifiedName="name-multihoming">
Multihoming
</name>
      <t indent="0" pn="section-8-1">
In multi-prefix multihoming, the host generally needs to associate the prefix with the router that advertised it (for example, see Rule 5.5 in <xref target="RFC6724" format="default" sectionFormat="of" derivedContent="RFC6724"/>). If the host supports Rule 5.5, then it <bcp14>SHOULD</bcp14> associate each prefix with the link-local address of the DHCPv6 server or relay from which it received the REPLY packet.
When receiving multiple REPLYs carrying the same prefix from distinct
link-local addresses, the host <bcp14>SHOULD</bcp14> associate that prefix with all of these
addresses.  This can commonly happen in networks with redundant routers and
DHCPv6 servers or relays.


</t>
    </section>
    <section anchor="rfcchanges" numbered="true" removeInRFC="false" toc="include" pn="section-9">
      <name slugifiedName="name-modifications-to-rfc-mandat">
Modifications to RFC-Mandated Behavior 
</name>
      <section numbered="true" removeInRFC="false" toc="include" pn="section-9.1">
        <name slugifiedName="name-changes-to-rfc-4861">Changes to RFC 4861</name>
        <t indent="0" pn="section-9.1-1">This document makes the following changes to <xref section="4.2" sectionFormat="of" target="RFC4861" format="default" derivedLink="https://rfc-editor.org/rfc/rfc4861#section-4.2" derivedContent="RFC4861"/>:</t>
        <t indent="0" pn="section-9.1-2">OLD TEXT:</t>
        <blockquote pn="section-9.1-3">Note: If neither M nor O flags are set, this indicates that
       no information is available via DHCPv6.</blockquote>
        <t indent="0" pn="section-9.1-4">NEW TEXT:</t>
        <blockquote pn="section-9.1-5">Note: If the M, O, or P (RFC 9762)
       flags are not set, this indicates that no information is available via
       DHCPv6.</blockquote>
      </section>
      <section numbered="true" removeInRFC="false" toc="include" pn="section-9.2">
        <name slugifiedName="name-changes-to-rfc-4862">Changes to RFC 4862</name>
        <t indent="0" pn="section-9.2-1">This document makes the following changes to <xref section="5.5.3" sectionFormat="of" target="RFC4862" format="default" derivedLink="https://rfc-editor.org/rfc/rfc4862#section-5.5.3" derivedContent="RFC4862"/>:</t>
        <t indent="0" pn="section-9.2-2">OLD TEXT:</t>
        <blockquote pn="section-9.2-3">
          <t indent="0" pn="section-9.2-3.1">For each Prefix-Information option in the Router Advertisement:</t>
          <ol type="%c)" indent="adaptive" spacing="normal" start="1" pn="section-9.2-3.2">
	 <li pn="section-9.2-3.2.1" derivedCounter="a)">If the Autonomous flag is not set, silently ignore the Prefix Information option.</li>
            <li pn="section-9.2-3.2.2" derivedCounter="b)">If the prefix is the link-local prefix, silently ignore the Prefix Information option.</li>
            <li pn="section-9.2-3.2.3" derivedCounter="c)">If the preferred lifetime is greater than the valid lifetime,
	 silently ignore the Prefix Information option.  A node
	 <bcp14>MAY</bcp14> wish to log a system management error in this
	 case.</li>
            <li pn="section-9.2-3.2.4" derivedCounter="d)">If the prefix advertised is not equal to the prefix of an address
	 configured by stateless autoconfiguration already in the list of
	 addresses associated with the interface (where "equal" means the two
	 prefix lengths are the same and the first prefix-length bits of the
	 prefixes are identical), and if the Valid Lifetime is not 0, form an
	 address (and add it to the list) by combining the advertised prefix
	 with an interface identifier of the link as follows:</li>
          </ol>
        </blockquote>
        <t indent="0" pn="section-9.2-4">NEW TEXT:</t>
        <blockquote pn="section-9.2-5">
          <t indent="0" pn="section-9.2-5.1">For each Prefix Information Option in the Router Advertisement:</t>
          <ol type="%c)" indent="adaptive" spacing="normal" start="1" pn="section-9.2-5.2">
	 <li pn="section-9.2-5.2.1" derivedCounter="a)">If the prefix is the link-local prefix, silently ignore the
	 Prefix Information Option.</li>
            <li pn="section-9.2-5.2.2" derivedCounter="b)">If the P flag is set and the node implements
	 RFC 9762, it <bcp14>SHOULD</bcp14> treat the
	 Autonomous flag as if it was unset and use prefix delegation to
	 obtain addresses as described in RFC 9762.</li>
            <li pn="section-9.2-5.2.3" derivedCounter="c)">If the Autonomous flag is not set, silently ignore the Prefix Information Option.</li>
            <li pn="section-9.2-5.2.4" derivedCounter="d)">If the preferred lifetime is greater than the valid lifetime,
	 silently ignore the Prefix Information Option.  A node
	 <bcp14>MAY</bcp14> wish to log a system management error in this
	 case.</li>
            <li pn="section-9.2-5.2.5" derivedCounter="e)">If the prefix advertised is not equal to the prefix of an address
	 configured by stateless autoconfiguration already in the list of
	 addresses associated with the interface (where "equal" means the two
	 prefix lengths are the same and the first prefix-length bits of the
	 prefixes are identical) and if the Valid Lifetime is not 0, form an
	 address (and add it to the list) by combining the advertised prefix
	 with an interface identifier of the link as follows:</li>
          </ol>
        </blockquote>
      </section>
    </section>
    <section anchor="Security" numbered="true" removeInRFC="false" toc="include" pn="section-10">
      <name slugifiedName="name-security-considerations">Security Considerations</name>
      <t indent="0" pn="section-10-1"> The mechanism described in this document relies on the information
      provided in the RA and therefore shares the same
      security model as SLAAC.  If the network does not implement RA-Guard
      <xref target="RFC6105" format="default" sectionFormat="of" derivedContent="RFC6105"/>, an attacker might send RAs containing the PIO
      used by the network, set the P flag to 1, and force hosts to ignore the A
      flag.  In the absence of DHCPv6-PD infrastructure, hosts would either
      obtain no IPv6 addresses or, if they fall back to other IPv6 address
      assignment mechanisms such as SLAAC and IA_NA, would experience delays
      in obtaining IPv6 addresses. If the network does not support
      DHCPv6-Shield <xref target="RFC7610" format="default" sectionFormat="of" derivedContent="RFC7610"/>, the attacker could also run a
      rogue DHCPv6 server, providing the host with invalid prefixes or other
      invalid configuration information.</t>
      <t indent="0" pn="section-10-2">The attacker might force hosts to oscillate between DHCPv6-PD and
      PIO-based SLAAC by sending the same set of PIOs with and then without the P flag
      set.  That would cause the clients to issue REBIND requests, increasing
      the load on the DHCP infrastructure.  However, <xref section="14.1" sectionFormat="of" target="RFC8415" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8415#section-14.1" derivedContent="RFC8415"/> requires that DHCPv6-PD clients rate-limit
      transmitted DHCPv6 messages.</t>
      <t indent="0" pn="section-10-3">It should be noted that if the network allows rogue RAs to be sent,
      the attacker would be able to disrupt hosts' connectivity anyway, so this
      document doesn't introduce any fundamentally new security
      considerations.</t>
      <t indent="0" pn="section-10-4">Security considerations inherent to the PD-per-device model are
      documented in <xref section="15" sectionFormat="of" target="RFC9663" format="default" derivedLink="https://rfc-editor.org/rfc/rfc9663#section-15" derivedContent="RFC9663"/>.</t>
    </section>
    <section anchor="privacy" numbered="true" removeInRFC="false" toc="include" pn="section-11">
      <name slugifiedName="name-privacy-considerations">Privacy Considerations</name>
      <t indent="0" pn="section-11-1">
The privacy implications of implementing the P flag and using DHCPv6-PD to assign prefixes to hosts are similar to the privacy implications of using DHCPv6 to assign individual addresses. 
If the DHCPv6 infrastructure assigns the same prefix to the same client, then an observer might be able to identify clients based on the highest 64 bits of the client's address. Those implications and recommended countermeasures are discussed in <xref section="13" sectionFormat="of" target="RFC9663" format="default" derivedLink="https://rfc-editor.org/rfc/rfc9663#section-13" derivedContent="RFC9663"/>.</t>
      <t indent="0" pn="section-11-2">
Implementing the P flag support on a host and receiving will enable DHCPv6 on that host if the host receives an RA containing a PIO with the P bit set.
Sending DHCPv6 packets  may reveal some minor additional information about the host,
        most prominently the hostname. This is not a new concern and would apply for any network that uses DHCPv6 and sets the  M flag in RAs.
      </t>
      <t indent="0" pn="section-11-3">
        No privacy considerations result from supporting the P flag on the sender side.
      </t>
    </section>
    <section anchor="IANA" numbered="true" removeInRFC="false" toc="include" pn="section-12">
      <name slugifiedName="name-iana-considerations">IANA Considerations</name>
      <t indent="0" pn="section-12-1">IANA has made the following allocation in the "IPv6 Neighbor Discovery
      Prefix Information Option Flags" registry <xref target="RFC8425" format="default" sectionFormat="of" derivedContent="RFC8425"/>:
      </t>
      <table align="center" pn="table-1">
        <thead>
          <tr>
            <th align="left" colspan="1" rowspan="1">PIO Option Bit</th>
            <th align="left" colspan="1" rowspan="1">Description</th>
            <th align="left" colspan="1" rowspan="1">Reference</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left" colspan="1" rowspan="1">3</td>
            <td align="left" colspan="1" rowspan="1">P - DHCPv6-PD Preferred Flag</td>
            <td align="left" colspan="1" rowspan="1">RFC 9762</td>
          </tr>
        </tbody>
      </table>
    </section>
  </middle>
  <back>
    <references pn="section-13">
      <name slugifiedName="name-references">References</name>
      <references pn="section-13.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 fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <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 fullname="T. Narten" initials="T." surname="Narten"/>
            <author fullname="E. Nordmark" initials="E." surname="Nordmark"/>
            <author fullname="W. Simpson" initials="W." surname="Simpson"/>
            <author fullname="H. Soliman" initials="H." surname="Soliman"/>
            <date month="September" year="2007"/>
            <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="RFC4862" target="https://www.rfc-editor.org/info/rfc4862" quoteTitle="true" derivedAnchor="RFC4862">
          <front>
            <title>IPv6 Stateless Address Autoconfiguration</title>
            <author fullname="S. Thomson" initials="S." surname="Thomson"/>
            <author fullname="T. Narten" initials="T." surname="Narten"/>
            <author fullname="T. Jinmei" initials="T." surname="Jinmei"/>
            <date month="September" year="2007"/>
            <abstract>
              <t indent="0">This document specifies the steps a host takes in deciding how to autoconfigure its interfaces in IP version 6. The autoconfiguration process includes generating a link-local address, generating global addresses via stateless address autoconfiguration, and the Duplicate Address Detection procedure to verify the uniqueness of the addresses on a link. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4862"/>
          <seriesInfo name="DOI" value="10.17487/RFC4862"/>
        </reference>
        <reference anchor="RFC6724" target="https://www.rfc-editor.org/info/rfc6724" quoteTitle="true" derivedAnchor="RFC6724">
          <front>
            <title>Default Address Selection for Internet Protocol Version 6 (IPv6)</title>
            <author fullname="D. Thaler" initials="D." role="editor" surname="Thaler"/>
            <author fullname="R. Draves" initials="R." surname="Draves"/>
            <author fullname="A. Matsumoto" initials="A." surname="Matsumoto"/>
            <author fullname="T. Chown" initials="T." surname="Chown"/>
            <date month="September" year="2012"/>
            <abstract>
              <t indent="0">This document describes two algorithms, one for source address selection and one for destination address selection. The algorithms specify default behavior for all Internet Protocol version 6 (IPv6) implementations. They do not override choices made by applications or upper-layer protocols, nor do they preclude the development of more advanced mechanisms for address selection. The two algorithms share a common context, including an optional mechanism for allowing administrators to provide policy that can override the default behavior. In dual-stack implementations, the destination address selection algorithm can consider both IPv4 and IPv6 addresses -- depending on the available source addresses, the algorithm might prefer IPv6 addresses over IPv4 addresses, or vice versa.</t>
              <t indent="0">Default address selection as defined in this specification applies to all IPv6 nodes, including both hosts and routers. This document obsoletes RFC 3484. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6724"/>
          <seriesInfo name="DOI" value="10.17487/RFC6724"/>
        </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 fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <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 fullname="T. Mrugalski" initials="T." surname="Mrugalski"/>
            <author fullname="M. Siodelski" initials="M." surname="Siodelski"/>
            <author fullname="B. Volz" initials="B." surname="Volz"/>
            <author fullname="A. Yourtchenko" initials="A." surname="Yourtchenko"/>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <author fullname="S. Jiang" initials="S." surname="Jiang"/>
            <author fullname="T. Lemon" initials="T." surname="Lemon"/>
            <author fullname="T. Winters" initials="T." surname="Winters"/>
            <date month="November" year="2018"/>
            <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>
        <reference anchor="RFC8425" target="https://www.rfc-editor.org/info/rfc8425" quoteTitle="true" derivedAnchor="RFC8425">
          <front>
            <title>IANA Considerations for IPv6 Neighbor Discovery Prefix Information Option Flags</title>
            <author fullname="O. Troan" initials="O." surname="Troan"/>
            <date month="July" year="2018"/>
            <abstract>
              <t indent="0">The Prefix Information Option (PIO) in the IPv6 Neighbor Discovery Router Advertisement message defines an 8-bit flag field; this field has two flags defined, and the remaining 6 bits are reserved (Reserved1). RFC 6275 defines a flag from this field without creating an IANA registry or updating RFC 4861. The purpose of this document is to create an IANA registry for the PIO flags. This document updates RFC 4861.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8425"/>
          <seriesInfo name="DOI" value="10.17487/RFC8425"/>
        </reference>
      </references>
      <references pn="section-13.2">
        <name slugifiedName="name-informative-references">Informative References</name>
        <reference anchor="RFC4193" target="https://www.rfc-editor.org/info/rfc4193" quoteTitle="true" derivedAnchor="RFC4193">
          <front>
            <title>Unique Local IPv6 Unicast Addresses</title>
            <author fullname="R. Hinden" initials="R." surname="Hinden"/>
            <author fullname="B. Haberman" initials="B." surname="Haberman"/>
            <date month="October" year="2005"/>
            <abstract>
              <t indent="0">This document defines an IPv6 unicast address format that is globally unique and is intended for local communications, usually inside of a site. These addresses are not expected to be routable on the global Internet. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4193"/>
          <seriesInfo name="DOI" value="10.17487/RFC4193"/>
        </reference>
        <reference anchor="RFC6105" target="https://www.rfc-editor.org/info/rfc6105" quoteTitle="true" derivedAnchor="RFC6105">
          <front>
            <title>IPv6 Router Advertisement Guard</title>
            <author fullname="E. Levy-Abegnoli" initials="E." surname="Levy-Abegnoli"/>
            <author fullname="G. Van de Velde" initials="G." surname="Van de Velde"/>
            <author fullname="C. Popoviciu" initials="C." surname="Popoviciu"/>
            <author fullname="J. Mohacsi" initials="J." surname="Mohacsi"/>
            <date month="February" year="2011"/>
            <abstract>
              <t indent="0">Routed protocols are often susceptible to spoof attacks. The canonical solution for IPv6 is Secure Neighbor Discovery (SEND), a solution that is non-trivial to deploy. This document proposes a light-weight alternative and complement to SEND based on filtering in the layer-2 network fabric, using a variety of filtering criteria, including, for example, SEND status. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6105"/>
          <seriesInfo name="DOI" value="10.17487/RFC6105"/>
        </reference>
        <reference anchor="RFC6275" target="https://www.rfc-editor.org/info/rfc6275" quoteTitle="true" derivedAnchor="RFC6275">
          <front>
            <title>Mobility Support in IPv6</title>
            <author fullname="C. Perkins" initials="C." role="editor" surname="Perkins"/>
            <author fullname="D. Johnson" initials="D." surname="Johnson"/>
            <author fullname="J. Arkko" initials="J." surname="Arkko"/>
            <date month="July" year="2011"/>
            <abstract>
              <t indent="0">This document specifies Mobile IPv6, a protocol that allows nodes to remain reachable while moving around in the IPv6 Internet. Each mobile node is always identified by its home address, regardless of its current point of attachment to the Internet. While situated away from its home, a mobile node is also associated with a care-of address, which provides information about the mobile node's current location. IPv6 packets addressed to a mobile node's home address are transparently routed to its care-of address. The protocol enables IPv6 nodes to cache the binding of a mobile node's home address with its care-of address, and to then send any packets destined for the mobile node directly to it at this care-of address. To support this operation, Mobile IPv6 defines a new IPv6 protocol and a new destination option. All IPv6 nodes, whether mobile or stationary, can communicate with mobile nodes. This document obsoletes RFC 3775. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6275"/>
          <seriesInfo name="DOI" value="10.17487/RFC6275"/>
        </reference>
        <reference anchor="RFC7039" target="https://www.rfc-editor.org/info/rfc7039" quoteTitle="true" derivedAnchor="RFC7039">
          <front>
            <title>Source Address Validation Improvement (SAVI) Framework</title>
            <author fullname="J. Wu" initials="J." surname="Wu"/>
            <author fullname="J. Bi" initials="J." surname="Bi"/>
            <author fullname="M. Bagnulo" initials="M." surname="Bagnulo"/>
            <author fullname="F. Baker" initials="F." surname="Baker"/>
            <author fullname="C. Vogt" initials="C." role="editor" surname="Vogt"/>
            <date month="October" year="2013"/>
            <abstract>
              <t indent="0">Source Address Validation Improvement (SAVI) methods were developed to prevent nodes attached to the same IP link from spoofing each other's IP addresses, so as to complement ingress filtering with finer-grained, standardized IP source address validation. This document is a framework document that describes and motivates the design of the SAVI methods. Particular SAVI methods are described in other documents.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7039"/>
          <seriesInfo name="DOI" value="10.17487/RFC7039"/>
        </reference>
        <reference anchor="RFC7084" target="https://www.rfc-editor.org/info/rfc7084" quoteTitle="true" derivedAnchor="RFC7084">
          <front>
            <title>Basic Requirements for IPv6 Customer Edge Routers</title>
            <author fullname="H. Singh" initials="H." surname="Singh"/>
            <author fullname="W. Beebee" initials="W." surname="Beebee"/>
            <author fullname="C. Donley" initials="C." surname="Donley"/>
            <author fullname="B. Stark" initials="B." surname="Stark"/>
            <date month="November" year="2013"/>
            <abstract>
              <t indent="0">This document specifies requirements for an IPv6 Customer Edge (CE) router. Specifically, the current version of this document focuses on the basic provisioning of an IPv6 CE router and the provisioning of IPv6 hosts attached to it. The document also covers IP transition technologies. Two transition technologies in RFC 5969's IPv6 Rapid Deployment on IPv4 Infrastructures (6rd) and RFC 6333's Dual-Stack Lite (DS-Lite) are covered in the document. The document obsoletes RFC 6204.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7084"/>
          <seriesInfo name="DOI" value="10.17487/RFC7084"/>
        </reference>
        <reference anchor="RFC7348" target="https://www.rfc-editor.org/info/rfc7348" quoteTitle="true" derivedAnchor="RFC7348">
          <front>
            <title>Virtual eXtensible Local Area Network (VXLAN): A Framework for Overlaying Virtualized Layer 2 Networks over Layer 3 Networks</title>
            <author fullname="M. Mahalingam" initials="M." surname="Mahalingam"/>
            <author fullname="D. Dutt" initials="D." surname="Dutt"/>
            <author fullname="K. Duda" initials="K." surname="Duda"/>
            <author fullname="P. Agarwal" initials="P." surname="Agarwal"/>
            <author fullname="L. Kreeger" initials="L." surname="Kreeger"/>
            <author fullname="T. Sridhar" initials="T." surname="Sridhar"/>
            <author fullname="M. Bursell" initials="M." surname="Bursell"/>
            <author fullname="C. Wright" initials="C." surname="Wright"/>
            <date month="August" year="2014"/>
            <abstract>
              <t indent="0">This document describes Virtual eXtensible Local Area Network (VXLAN), which is used to address the need for overlay networks within virtualized data centers accommodating multiple tenants. The scheme and the related protocols can be used in networks for cloud service providers and enterprise data centers. This memo documents the deployed VXLAN protocol for the benefit of the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7348"/>
          <seriesInfo name="DOI" value="10.17487/RFC7348"/>
        </reference>
        <reference anchor="RFC7610" target="https://www.rfc-editor.org/info/rfc7610" quoteTitle="true" derivedAnchor="RFC7610">
          <front>
            <title>DHCPv6-Shield: Protecting against Rogue DHCPv6 Servers</title>
            <author fullname="F. Gont" initials="F." surname="Gont"/>
            <author fullname="W. Liu" initials="W." surname="Liu"/>
            <author fullname="G. Van de Velde" initials="G." surname="Van de Velde"/>
            <date month="August" year="2015"/>
            <abstract>
              <t indent="0">This document specifies a mechanism for protecting hosts connected to a switched network against rogue DHCPv6 servers. It is based on DHCPv6 packet filtering at the layer 2 device at which the packets are received. A similar mechanism has been widely deployed in IPv4 networks ('DHCP snooping'); hence, it is desirable that similar functionality be provided for IPv6 networks. This document specifies a Best Current Practice for the implementation of DHCPv6-Shield.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="199"/>
          <seriesInfo name="RFC" value="7610"/>
          <seriesInfo name="DOI" value="10.17487/RFC7610"/>
        </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 fullname="S. Deering" initials="S." surname="Deering"/>
            <author fullname="R. Hinden" initials="R." surname="Hinden"/>
            <date month="July" year="2017"/>
            <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="RFC9663" target="https://www.rfc-editor.org/info/rfc9663" quoteTitle="true" derivedAnchor="RFC9663">
          <front>
            <title>Using DHCPv6 Prefix Delegation (DHCPv6-PD) to Allocate Unique IPv6 Prefixes per Client in Large Broadcast Networks</title>
            <author fullname="L. Colitti" initials="L." surname="Colitti"/>
            <author fullname="J. Linkova" initials="J." role="editor" surname="Linkova"/>
            <author fullname="X. Ma" initials="X." role="editor" surname="Ma"/>
            <date month="October" year="2024"/>
            <abstract>
              <t indent="0">This document discusses an IPv6 deployment scenario when individual nodes connected to large broadcast networks (such as enterprise networks or public Wi-Fi networks) are allocated unique prefixes via DHCPv6 Prefix Delegation (DHCPv6-PD), as specified in RFC 8415.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9663"/>
          <seriesInfo name="DOI" value="10.17487/RFC9663"/>
        </reference>
      </references>
    </references>
    <section anchor="Acknowledgements" numbered="false" removeInRFC="false" toc="include" pn="section-appendix.a">
      <name slugifiedName="name-acknowledgements">Acknowledgements</name>
      <t indent="0" pn="section-appendix.a-1">Thanks to <contact fullname="Nick Buraglio"/>, <contact fullname="Brian Carpenter"/>, <contact fullname="Tim Chown"/>, <contact fullname="David Farmer"/>, <contact fullname="Fernando Gont"/>, <contact fullname="Susan Hares"/>, <contact fullname="Mahesh Jethanandani"/>,
      <contact fullname="Suresh Krishnan"/>, <contact fullname="Ted Lemon"/>,
      <contact fullname="Andrew McGregor"/>, <contact fullname="Tomek       Mrugalski"/>, <contact fullname="Erik Nordmark"/>, <contact fullname="Michael Richardson"/>, <contact fullname="Patrick Rohr"/>, <contact fullname="John Scudder"/>,
      <contact fullname="Ole Trøan"/>, <contact fullname="Dirk Von Hugo"/>,
      <contact fullname="Éric Vyncke"/> and <contact fullname="Timothy       Winters"/> for the discussions, reviews, input, and
      contributions.</t>
    </section>
    <section anchor="authors-addresses" numbered="false" removeInRFC="false" toc="include" pn="section-appendix.b">
      <name slugifiedName="name-authors-addresses">Authors' Addresses</name>
      <author initials="L." surname="Colitti" fullname="Lorenzo Colitti">
        <organization showOnFrontPage="true">Google</organization>
        <address>
          <postal>
            <street>Shibuya 3-21-3</street>
            <country>Japan</country>
          </postal>
          <email>lorenzo@google.com</email>
        </address>
      </author>
      <author fullname="Jen Linkova" initials="J" surname="Linkova">
        <organization showOnFrontPage="true">Google</organization>
        <address>
          <postal>
            <street>1 Darling Island Rd</street>
            <city>Pyrmont</city>
            <region>NSW</region>
            <code>2009</code>
            <country>Australia</country>
          </postal>
          <email>furry13@gmail.com</email>
          <email>furry@google.com</email>
        </address>
      </author>
      <author fullname="Xiao Ma" initials="X" role="editor" surname="Ma">
        <organization showOnFrontPage="true">Google</organization>
        <address>
          <postal>
            <street>Shibuya 3-21-3</street>
            <country>Japan</country>
          </postal>
          <email>xiaom@google.com</email>
        </address>
      </author>
      <author fullname="David 'equinox' Lamparter" initials="D" surname="Lamparter">
        <organization showOnFrontPage="true">NetDEF, Inc.</organization>
        <address>
          <postal>
            <city>Leipzig</city>
            <code>04229</code>
            <country>Germany</country>
          </postal>
          <email>equinox@diac24.net</email>
          <email>equinox@opensourcerouting.org</email>
        </address>
      </author>
    </section>
  </back>
</rfc>
