rfc9762.original.xml | rfc9762.xml | |||
---|---|---|---|---|
<?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="UTF-8"?> | |||
<?xml-model href="rfc7991bis.rnc"?> <!-- Required for schema validation and sch | ||||
ema-aware editing --> | ||||
<!-- <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?> --> | ||||
<!-- This third-party XSLT can be enabled for direct transformations in XML proc | ||||
essors, including most browsers --> | ||||
<!DOCTYPE rfc [ | <!DOCTYPE rfc [ | |||
<!ENTITY nbsp " "> | <!ENTITY nbsp " "> | |||
<!ENTITY zwsp "​"> | <!ENTITY zwsp "​"> | |||
<!ENTITY nbhy "‑"> | <!ENTITY nbhy "‑"> | |||
<!ENTITY wj "⁠"> | <!ENTITY wj "⁠"> | |||
]> | ]> | |||
<!-- If further character entities are required then they should be added to the | ||||
DOCTYPE above. | ||||
Use of an external entity file is not recommended. --> | ||||
<rfc | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="std" docName="draft-ie | |||
xmlns:xi="http://www.w3.org/2001/XInclude" | tf-6man-pio-pflag-12" number="9762" ipr="trust200902" obsoletes="" updates="4861 | |||
category="std" | , 4862" submissionType="IETF" xml:lang="en" version="3" tocInclude="true" sortR | |||
docName="draft-ietf-6man-pio-pflag-12" | efs="true" symRefs="true" consensus="true"> | |||
ipr="trust200902" | ||||
obsoletes="" | ||||
updates="4861,4862" | ||||
submissionType="IETF" | ||||
xml:lang="en" | ||||
version="3"> | ||||
<front> | <front> | |||
<title abbrev="pio-p-flag">Signaling DHCPv6 Prefix per Client Availability to Ho | ||||
sts</title> | <!--[rfced] Document title | |||
<seriesInfo name="Internet-Draft" value="draft-ietf-6man-pio-pflag-12"/> | ||||
a) Note that we updated "DHCPv6 Prefix" to "DHCPv6 Prefix Delegation" in the | ||||
document title. In addition, please review "Availability to Hosts" and | ||||
consider updating in one of the following ways to improve clarity of the | ||||
title. | ||||
Original: | ||||
Signaling DHCPv6 Prefix per Client Availability to Hosts | ||||
Current: | ||||
Signaling DHCPv6 Prefix Delegation per Client Availability to Hosts | ||||
Perhaps (1): | ||||
Signaling to Hosts the Availability of DHCPv6 Prefix Delegation per Client | ||||
Perhaps (2): | ||||
Signaling to Hosts the Preference for Using DHCPv6 Prefix Delegation per Clien | ||||
t | ||||
b) Note that we have updated the short title, which appears in the | ||||
running header in the PDF output, as follows. | ||||
Original: | ||||
pio-p-flag | ||||
Current: | ||||
PIO P Flag | ||||
--> | ||||
<title abbrev="PIO P Flag">Signaling DHCPv6 Prefix Delegation per Client Availab | ||||
ility to Hosts</title> | ||||
<seriesInfo name="RFC" value="9762"/> | ||||
<author initials="L." surname="Colitti" fullname="Lorenzo Colitti"> | <author initials="L." surname="Colitti" fullname="Lorenzo Colitti"> | |||
<organization>Google</organization> | <organization>Google</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street>Shibuya 3-21-3</street> | <street>Shibuya 3-21-3</street> | |||
<country>Japan</country> | <country>Japan</country> | |||
</postal> | </postal> | |||
<email>lorenzo@google.com</email> | <email>lorenzo@google.com</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="Jen Linkova" initials="J" surname="Linkova"> | <author fullname="Jen Linkova" initials="J" surname="Linkova"> | |||
<organization>Google</organization> | <organization>Google</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<!-- Reorder these if your country does things differently --> | ||||
<street>1 Darling Island Rd</street> | <street>1 Darling Island Rd</street> | |||
<city>Pyrmont</city> | <city>Pyrmont</city> | |||
<region>NSW</region> | <region>NSW</region> | |||
<code>2009</code> | <code>2009</code> | |||
<country>AU</country> | <country>Australia</country> | |||
</postal> | </postal> | |||
<email>furry13@gmail.com</email> | <email>furry13@gmail.com</email> | |||
<email>furry@google.com</email> | <email>furry@google.com</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="Xiao Ma" initials="X" role="editor" surname="Ma"> | <author fullname="Xiao Ma" initials="X" role="editor" surname="Ma"> | |||
<organization>Google</organization> | <organization>Google</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street>Shibuya 3-21-3</street> | <street>Shibuya 3-21-3</street> | |||
<country>Japan</country> | <country>Japan</country> | |||
</postal> | </postal> | |||
<email>xiaom@google.com</email> | <email>xiaom@google.com</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="David 'equinox' Lamparter" initials="D" surname="Lamparter"> | <author fullname="David 'equinox' Lamparter" initials="D" surname="Lamparter"> | |||
<organization>NetDEF, Inc.</organization> | <organization>NetDEF, Inc.</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<city>San Jose</city> | <city>Leipzig</city> | |||
<country>USA</country> | <code>04229</code> | |||
<country>Germany</country> | ||||
</postal> | </postal> | |||
<email>equinox@diac24.net</email> | <email>equinox@diac24.net</email> | |||
<email>equinox@opensourcerouting.org</email> | <email>equinox@opensourcerouting.org</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<date year="2024"/> | <date year="2025" month="March"/> | |||
<area>Internet</area> | ||||
<workgroup>IPv6 Maintenance</workgroup> | <area>INT</area> | |||
<workgroup>6man</workgroup> | ||||
<keyword>ipv6</keyword> | <keyword>ipv6</keyword> | |||
<keyword>slaac</keyword> | <keyword>slaac</keyword> | |||
<keyword>pio</keyword> | <keyword>pio</keyword> | |||
<keyword>dhcpv6-pd</keyword> | <keyword>dhcpv6-pd</keyword> | |||
<abstract> | <abstract> | |||
<t> | <t> | |||
This document defines a "P" flag in the Prefix Information Option (PIO) of IPv6 | This document defines the "P" flag in the Prefix Information Option (PIO) of | |||
Router Advertisements (RAs). | IPv6 Router Advertisements (RAs). The flag is used to indicate that the | |||
The flag is used to indicate that the network prefers that clients use the RFC96 | network prefers that clients use the deployment model in RFC 9663 | |||
63 deployment model instead of using individual adresses in the on-link prefix a | instead of using individual addresses in the on-link prefix assigned using | |||
ssigned using Stateless Address Autoconfiguration (SLAAC) or DHCPv6 address assi | Stateless Address Autoconfiguration (SLAAC) or DHCPv6 address assignment. | |||
gnment. | ||||
</t> | </t> | |||
<t> | <t> | |||
This document updates RFC4862 to indicate that the Autonomous flag in a PIO need | This document updates RFC 4862 to indicate that the Autonomous flag in a PIO | |||
s to be ignored if the PIO has the P flag set. | needs to be ignored if the PIO has the P flag set. It also updates RFC 4861 | |||
It also updates RFC4861 to specify that the P flag indicates DHCPv6 Prefix Deleg | to specify that the P flag indicates DHCPv6 Prefix Delegation support for | |||
ation support for clients. | clients. | |||
</t> | </t> | |||
</abstract> | </abstract> | |||
</front> | </front> | |||
<middle> | <middle> | |||
<section> | <section> | |||
<name>Introduction</name> | <name>Introduction</name> | |||
<t> | <t> | |||
<xref target="RFC9663"/> documents an IPv6 address assignment model where IPv6 d | <xref target="RFC9663"/> documents an IPv6 address assignment model where IPv6 d | |||
evices obtain dedicated prefixes from the network via DHCPv6 Prefix Delegation ( | evices obtain dedicated prefixes from the network via DHCPv6 Prefix Delegation ( | |||
DHCPv6-PD, <xref target="RFC8415"/>). | DHCPv6-PD) <xref target="RFC8415"/>. This model provides devices with a large IP | |||
This model provides devices with large IPv6 address space they can use to create | v6 address space they can use to create addresses for communication, individuall | |||
addresses for communication, individually number virtual machines (VM)s or cont | y number virtual machines (VMs) or containers, or extend the network to downstre | |||
ainers, or extend the network to downstream devices. It also provides scalabilit | am devices. It also provides scalability benefits on large networks because netw | |||
y benefits on large networks because network infrastructure devices do not need | ork infrastructure devices do not need to maintain per-address state, such as IP | |||
to maintain per-address state, such as IPv6 neighbor cache, Source Address Valid | v6 neighbor cache, Source Address Validation Improvement (SAVI) <xref target="RF | |||
ation Improvement (SAVI, <xref target="RFC7039"/>) mappings, Virtual eXtensible | C7039"/> mappings, Virtual eXtensible Local Area Network (VXLAN) <xref target=" | |||
Local Area Network (VXLAN, <xref target="RFC7348"/>) routes, etc. | RFC7348"/> routes, etc. | |||
</t> | </t> | |||
<t> | <t> | |||
On networks with fewer devices, however, this model may not be appropriate, beca | On networks with fewer devices, however, this model may not be appropriate, be | |||
use scaling to support multiple individual IPv6 addresses per device is less of | cause scaling to support multiple individual IPv6 addresses per device is less o | |||
a concern. Also, many home networks currently offer prefix delegation but assume | f a concern. Also, many home networks currently offer prefix delegation but assu | |||
that a limited number of specialized devices and/or applications will require d | me that a limited number of specialized devices and/or applications will require | |||
elegated prefixes, and thus do not allocate enough address space to offer prefix | delegated prefixes and thus do not allocate enough address space to offer prefi | |||
es to every device that connects to the network. For example, if clients enable | xes to every device that connects to the network. | |||
<xref target="RFC9663"/> 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 prefixe | <!--[rfced] How may we clarify the use of "[RFC9663]" in the two sentences below | |||
s after 15 devices have been connected. | ? | |||
Original: | ||||
For example, | ||||
if clients enable [RFC9663] on a home network that only receives a | ||||
/60 from the ISP, and each client obtains a /64 prefix... | ||||
... | ||||
Therefore, to safely roll out [RFC9663] implementations 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. | ||||
Perhaps: | ||||
For example, | ||||
if clients enable the mechanism described in [RFC9663] on a | ||||
home network that only receives a /60 from the ISP and each client | ||||
obtains a /64 prefix... | ||||
... | ||||
Therefore, to safely roll out implementations using the mechanism in [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. | ||||
Or: | ||||
For example, | ||||
if clients enable DHCPv6-PD [RFC9663] on a | ||||
home network that only receives a /60 from the ISP and each client | ||||
obtains a /64 prefix... | ||||
... | ||||
Therefore, to safely roll out implementations using DHCPv6-PD [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. | ||||
--> | ||||
For example, if clients enable <xref target="RFC9663"/> 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> | |||
<t> | <t> | |||
Therefore, to safely roll out <xref target="RFC9663"/> implementations on the cl ient side, it is necessary to have a mechanism for the network to signal to the client which address assignment method is preferred. | Therefore, to safely roll out <xref target="RFC9663"/> implementations on the cl ient side, it is necessary to have a mechanism for the network to signal to the client which address assignment method is preferred. | |||
</t> | </t> | |||
<t> | <t> | |||
</t> | </t> | |||
</section> | </section> | |||
<section> | <section> | |||
<name>Requirements Language</name> | <name>Requirements Language</name> | |||
<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", | <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp | |||
"SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT | 14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", | |||
RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be | "<bcp14>SHALL NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NO | |||
T</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT | ||||
RECOMMENDED</bcp14>", "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp1 | ||||
4>" in this document are to be | ||||
interpreted as described in BCP 14 <xref target="RFC2119"/> | interpreted as described in BCP 14 <xref target="RFC2119"/> | |||
<xref target="RFC8174"/> when, and only when, they appear in | <xref target="RFC8174"/> when, and only when, they appear in | |||
all capitals, as shown here.</t> | all capitals, as shown here.</t> | |||
</section> | </section> | |||
<section> | <section> | |||
<name>Terminology</name> | <name>Terminology</name> | |||
<t> | ||||
Node: a device that implements IPv6, <xref target= | ||||
"RFC8200"/>. | ||||
</t> | ||||
<t> | ||||
Host: any node that is not a router, <xref target= | ||||
"RFC8200"/>. | ||||
</t> | ||||
<t> | ||||
Client: a node which connects to a network and acquires addresses. The node may | ||||
wish to obtain addresses for its own use, or may be a router that wishes to exte | ||||
nd 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"/>. | ||||
</t> | ||||
<t> | ||||
DHCPv6-PD: DHCPv6 (<xref target="RFC8415"/>) mechanism to delegate IPv6 prefixes | ||||
to clients. | ||||
</t> | ||||
<t> | ||||
DHCPv6 IA_NA: Identity Association for Non-temporary Addresses (Section 21.4 of | ||||
<xref target="RFC8415"/>). | ||||
</t> | ||||
<t> | ||||
DHCPv6 IA_PD: Identity Association for Prefix Delegation (Section 21.21 of <xref | ||||
target="RFC8415"/>). | ||||
</t> | ||||
<t> | ||||
ND: Neighbor Discovery, <xref target="RFC4861"/>. | ||||
</t> | ||||
<t> | <dl spacing="normal" newline="false"> | |||
On-link address: an address that is assigned to an interface on a specified link | <dt>Node:</dt><dd>a device that implements IPv6 <xref target="RFC8200" | |||
(<xref target="RFC4861"/>). | /></dd> | |||
</t> | <dt>Host:</dt><dd>any node that is not a router <xref target="RFC8200" | |||
<t> | /></dd> | |||
On-link prefix: a prefix that is assigned to a specified link. | <dt>Client:</dt><dd>a node that connects to a network and acquires | |||
</t> | addresses. The node may wish to obtain addresses for its own use, or it | |||
<t> | may be a router that wishes to extend the network to its physical or | |||
Off-link: the opposite of "on-link" (see <xref target="RFC4861"/>). | virtual subsystems, or both. It may be either a host or a router as | |||
</t> | defined by <xref target="RFC8200"/>.</dd> | |||
<t> | ||||
PIO: Prefix Information Option, <xref target="RFC4862"/>. | ||||
</t> | ||||
<t> | ||||
SLAAC: IPv6 Stateless Address Autoconfiguration, <xref tar | ||||
get="RFC4862"/>. | ||||
</t> | ||||
</section> | <dt>DHCPv6-PD:</dt><dd>DHCPv6 Prefix Delegation [RFC8415]; a mechanism | |||
to delegate IPv6 prefixes to clients.</dd> | ||||
<dt>DHCPv6 IA_NA:</dt><dd>Identity Association for Non-temporary Addres | ||||
ses (<xref section="21.4" sectionFormat="of" target="RFC8415"/>)</dd> | ||||
<dt>DHCPv6 IA_PD:</dt><dd>Identity Association for Prefix Delegation (< | ||||
xref section="21.21" sectionFormat="of" target="RFC8415"/>)</dd> | ||||
<dt>ND:</dt><dd>Neighbor Discovery <xref target="RFC4861"/></dd> | ||||
<dt>On-link address:</dt><dd>an address that is assigned to an interfac | ||||
e on a specified link <xref target="RFC4861"/></dd> | ||||
<dt>On-link prefix:</dt><dd>a prefix that is assigned to a specified li | ||||
nk</dd> | ||||
<dt>Off-link:</dt><dd>the opposite of "on-link" (see <xref target="RFC4 | ||||
861"/>)</dd> | ||||
<dt>PIO:</dt><dd>Prefix Information Option <xref target="RFC4862"/></dd | ||||
> | ||||
<dt>SLAAC:</dt><dd>Stateless Address Autoconfiguration <xref target="R | ||||
FC4862"/></dd> | ||||
</dl> | ||||
</section> | ||||
<section anchor="rationale"> | <section anchor="rationale"> | |||
<name>Rationale</name> | <name>Rationale</name> | |||
<t> | <t> | |||
The network administrator might want to indicate to clients that requesting a pr efix via DHCPv6-PD and using that prefix for address assignment (see <xref targe t="RFC9663"/>) should be preferred over using individual addresses from the on-l ink prefix. | The network administrator might want to indicate to clients that requesting a pr efix via DHCPv6-PD and using that prefix for address assignment (see <xref targe t="RFC9663"/>) should be preferred over using individual addresses from the on-l ink prefix. | |||
The information is passed to the client via a P flag in the Prefix Information O ption (PIO). The reason for it being a PIO flag is as follows: | The information is passed to the client via a P flag in the Prefix Information O ption (PIO). The reasons for it being a PIO flag are as follows: | |||
</t> | </t> | |||
<ul> | <ul> | |||
<li> | ||||
<!-- [rfced] We added numbers in this long sentence to improve | ||||
readability. Please review. | ||||
Original: | ||||
Forming addresses via SLAAC is | ||||
suboptimal because if the client later acquires a prefix using | ||||
DHCPv6-PD, it can either use both the prefix and SLAAC addresses, | ||||
reducing the scalability benefits of using DHCPv6-PD, or can | ||||
remove the SLAAC addresses, which would be disruptive for | ||||
applications that are using them. | ||||
Updated: | ||||
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> | ||||
The information must be contained in the Router Advertisement because it must be available to the client before it decides to form IPv6 addresses from the PIO p refix 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 i s available via DHCPv6-PD. | The information must be contained in the Router Advertisement because it must be available to the client before it decides to form IPv6 addresses from the PIO p refix 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 i s available via DHCPv6-PD. | |||
Forming addresses via SLAAC is suboptimal because if the client later acquires a prefix using DHCPv6-PD, it can either use both the prefix and SLAAC addresses, reducing the scalability benefits of using DHCPv6-PD, or can remove the SLAAC ad dresses, which would be disruptive for applications that are using them. | 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 addresse s, 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> | |||
<li> | <li> | |||
This information is specific to the particular prefix being announced. For examp | This information is specific to the particular prefix being announced. For | |||
le, a network administrator might want clients to assign global addresses from d | example, a network administrator might want clients to assign global addresses | |||
elegated prefixes, but use the PIO prefix to form Unique Local Unicast (ULA, <xr | from delegated prefixes but use the PIO prefix to form Unique Local IPv6 | |||
ef target="RFC4193"/>) addresses. | Unicast Addresses <xref target="RFC4193"/>. Also, in a multihoming situation, | |||
Also, in a multihoming situation, one upstream network might choose to assign pr | one upstream network might choose to assign prefixes via prefix delegation and | |||
efixes via prefix delegation, and another via PIOs. | another via PIOs. | |||
</li> | </li> | |||
</ul> | </ul> | |||
<t> | <t> | |||
Note that setting the 'P' flag in a PIO expresses the network operator's prefere nce as to whether clients should attempt using DHCPv6-PD instead of performing i ndividual address configuration on the prefix. | Note that setting the 'P' flag in a PIO expresses the network operator's prefere nce 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 actu al delegated prefix will necessarily be a prefix different from the one from the PIO. | For clients that honor this preference by requesting prefix delegation, the actu al delegated prefix will necessarily be a prefix different from the one from the PIO. | |||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="flag-over"> | <section anchor="flag-over"> | |||
<name>P Flag Overview</name> | <name>P Flag Overview</name> | |||
<t> | <t> | |||
The P flag (also called DHCPv6-PD preferred flag) is a 1-bit PIO flag, located a fter the R flag (<xref target="RFC6275"/>). | The P flag (also called the DHCPv6-PD preferred flag) is a 1-bit PIO flag, locat ed after the R flag <xref target="RFC6275"/>. | |||
The presence of a PIO with the P flag set indicates that the network prefers tha t clients use Prefix Delegation instead of acquiring individual addresses via SL AAC or DHCPv6 address assignment. This implies that the network has a DHCPv6 ser ver capable of making DHCPv6 Prefix Delegations to every device on the network, as described in <xref target="RFC9663"/>.</t> | The presence of a PIO with the P flag set indicates that the network prefers tha t clients use Prefix Delegation instead of acquiring individual addresses via SL AAC or DHCPv6 address assignment. This implies that the network has a DHCPv6 ser ver capable of making DHCPv6 Prefix Delegations to every device on the network, as described in <xref target="RFC9663"/>.</t> | |||
<t> | <t> | |||
The resulting format of the Prefix Information Option is as follows (see Figure 1): | <xref target="fig_pio_new"/> shows the resulting format of the Prefix Informatio n Option. | |||
</t> | </t> | |||
<figure align="center" anchor="fig_pio_new"> | <figure align="center" anchor="fig_pio_new"> | |||
<artwork align="center"><![CDATA[ | <artwork align="center"><![CDATA[ | |||
0 1 2 3 | 0 1 2 3 | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Type | Length | Prefix Length |L|A|R|P| Rsvd1 | | | Type | Length | Prefix Length |L|A|R|P| Rsvd1 | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Valid Lifetime | | | Valid Lifetime | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Preferred Lifetime | | | Preferred Lifetime | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Reserved2 | | | Reserved2 | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | |||
+ + | + + | |||
| | | | | | |||
+ Prefix + | + Prefix + | |||
| | | | | | |||
+ + | + + | |||
| | | | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
]]></artwork> | ]]></artwork> | |||
</figure> | -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
</figure> | ||||
<t> | <t> | |||
The P flag is independent of the value of the M and O flags in the Router Advert isement. | The P flag is independent of the value of the M and O flags in the Router Advert isement. | |||
If the network desires to delegate prefixes to devices that support DHCPv6 Prefi x Delegation but do not support the P flag, it SHOULD also set the M or O bits i n the RA to 1, because some devices, such as <xref target="RFC7084"/> Customer E dge (CE) routers, might not initiate DHCPv6 Prefix Delegation if both the M and O bits are set to zero. | If the network desires to delegate prefixes to devices that support DHCPv6 Prefi x Delegation but do not support the P flag, it <bcp14>SHOULD</bcp14> also set th e M or O bits in the RA to 1, because some devices, such as Customer Edge (CE) r outers <xref target="RFC7084"/>, might not initiate DHCPv6 Prefix Delegation if both the M and O bits are set to zero. | |||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="Router"> | <section anchor="Router"> | |||
<name>Router Behaviour</name> | <name>Router Behavior</name> | |||
<t> | <t> | |||
Routers SHOULD set the P flag to zero by default, unless explicitly configured b | Routers <bcp14>SHOULD</bcp14> set the P flag to zero by default, unless explicit | |||
y the administrator, and SHOULD allow the operator to set the P flag value for a | ly configured by the administrator, and <bcp14>SHOULD</bcp14> allow the operator | |||
ny given prefix advertised in a PIO. | to set the P flag value for any given prefix advertised in a PIO. | |||
Routers MUST allow the P flag to be configured separately from the A flag. In p | Routers <bcp14>MUST</bcp14> allow the P flag to be configured separately from th | |||
articular, enabling or disabling the P flag MUST not trigger automatic changes i | e A flag. | |||
n the A flag value set by the router. | ||||
<!--[rfced] Should "MUST not" be updated to "MUST NOT" here? Note that "MUST | ||||
NOT" is listed in the Requirements Language section. | ||||
Original: | ||||
In particular, enabling or disabling the P flag MUST not trigger | ||||
automatic changes in the A flag value set by the router. | ||||
--> | ||||
In particular, enabling or disabling the P flag <bcp14>MUST</bcp14> not trigger | ||||
automatic changes in the A flag value set by the router. | ||||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="client"> | <section anchor="client"> | |||
<name>Client Behaviour</name> | <name>Client Behavior</name> | |||
<section> | <section> | |||
<name>Processing the P Flag</name> | <name>Processing the P Flag</name> | |||
<t> | <t> | |||
This specification only applies to clients which support DHCPv6 Prefix Delegatio | This specification only applies to clients that support DHCPv6 Prefix Delegation | |||
n. | . | |||
Clients which do not support DHCPv6 prefix delegation MUST ignore the P flag. | Clients that do not support DHCPv6 prefix delegation <bcp14>MUST</bcp14> ignore | |||
The P flag is meaningless for link-local prefixes and any Prefix Information Opt | the P flag. | |||
ion containing | The P flag is meaningless for link-local prefixes, and any Prefix Information Op | |||
the link-local prefix MUST be ignored as specified in <xref target="RFC4862" sec | tion containing | |||
tion="5.5.3"/>. | the link-local prefix <bcp14>MUST</bcp14> be ignored as specified in <xref targe | |||
t="RFC4862" section="5.5.3"/>. | ||||
In the following text, all prefixes are assumed not to be link-local. | In the following text, all prefixes are assumed not to be link-local. | |||
</t> | </t> | |||
<t> | <t> | |||
For each interface, the client MUST keep a list of every prefix that was receive d | For each interface, the client <bcp14>MUST</bcp14> keep a list of every prefix t hat was received | |||
from a PIO with the P flag set and currently has a non-zero Preferred Lifetime. | from a PIO with the P flag set and currently has a non-zero Preferred Lifetime. | |||
The list affects the behaviour of the DHCPv6 client as follows: | The list affects the behavior of the DHCPv6 client as follows: | |||
</t> | </t> | |||
<ul> | <ul> | |||
<li>When a prefix's Preferred Lifetime becomes zero, either because the Preferre d | <li>When a prefix's Preferred Lifetime becomes zero, either because the Preferre d | |||
Lifetime expires or because the client receives a PIO for the prefix with a zero | Lifetime expires or because the client receives a PIO for the prefix with a zero | |||
Preferred Lifetime, the prefix MUST be removed from the list. | Preferred Lifetime, the prefix <bcp14>MUST</bcp14> be removed from the list. | |||
</li> | </li> | |||
<li>When the length of the list increases to one, the client SHOULD start reques ting | <li>When the length of the list increases to one, the client <bcp14>SHOULD</bcp1 4> start requesting | |||
prefixes via DHCPv6 prefix delegation unless it is already doing so.</li> | prefixes via DHCPv6 prefix delegation unless it is already doing so.</li> | |||
<li>When the length of the list decreases to zero, the client SHOULD stop reques ting | <li>When the length of the list decreases to zero, the client <bcp14>SHOULD</bcp 14> stop requesting | |||
or renewing prefixes via DHCPv6 prefix delegation if it has no other reason to d o so. | or renewing prefixes via DHCPv6 prefix delegation if it has no other reason to d o so. | |||
The lifetimes of any prefixes already obtained via DHCPv6 are unaffected.</li> | The lifetimes of any prefixes already obtained via DHCPv6 are unaffected.</li> | |||
<li> | <li> | |||
If the client has already received delegated prefix(es) from one or more | If the client has already received delegated prefix(es) from one or more | |||
servers, then any time a prefix is added to or removed from the list, the client MUST | servers, then any time a prefix is added to or removed from the list, the client <bcp14>MUST</bcp14> | |||
consider this to be a change in configuration information as | consider this to be a change in configuration information as | |||
described in <xref target="RFC8415" section="18.2.12"/>. In that case the client MUST perform | described in <xref target="RFC8415" section="18.2.12"/>. In that case, the clien t <bcp14>MUST</bcp14> perform | |||
a REBIND, unless the list is now empty. | a REBIND, unless the list is now empty. | |||
This is in addition to performing a REBIND in the other cases required by that | 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, | section. Issuing a REBIND allows the client to obtain new prefixes if necessary, | |||
for example | for example, | |||
when the network is being renumbered. It also refreshes state related to the | when the network is being renumbered. It also refreshes the state related to the | |||
delegated prefix(es). | delegated prefix(es). | |||
</li> | </li> | |||
</ul> | </ul> | |||
<t> | <t> | |||
When a client requests a prefix via DHCPv6-PD, it MUST use the prefix length hin t (<xref target="RFC8415" section="18.2.4"/>) to request a prefix that is short enough to form addresses via SLAAC.</t> | When a client requests a prefix via DHCPv6-PD, it <bcp14>MUST</bcp14> use the pr efix length hint (<xref target="RFC8415" section="18.2.4"/>) to request a prefix that is short enough to form addresses via SLAAC.</t> | |||
<t>In order to achieve the scalability benefits of using DHCPv6-PD, the client S | <t>In order to achieve the scalability benefits of using DHCPv6-PD, the client | |||
HOULD prefer | <bcp14>SHOULD</bcp14> prefer to form addresses from the delegated prefix | |||
to form addresses from the delegated prefix instead of using individual addresse | instead of using individual addresses in the on-link prefix(es). Therefore, | |||
s in the | when the client requests a prefix using DHCPv6-PD, the client <bcp14>SHOULD | |||
on-link prefix(es). Therefore, when the client requests a prefix using DHCPv6-PD | NOT</bcp14> use SLAAC to obtain IPv6 addresses from PIOs with the P and A bits | |||
, the client | set. Similarly, if all PIOs processed by the client have the P bit set, the | |||
SHOULD NOT use SLAAC to obtain IPv6 addresses from PIOs with the P and A bits se | client <bcp14>SHOULD NOT</bcp14> request individual IPv6 addresses from | |||
t. | DHCPv6, i.e., it <bcp14>SHOULD NOT</bcp14> include any IA_NA options in | |||
Similarly, if all PIOs processed by the client have the P bit set, the client SH | SOLICIT messages <xref target="RFC8415"/>. The client <bcp14>MAY</bcp14> | |||
OULD NOT request individual IPv6 addresses from DHCPv6, i.e., it SHOULD NOT incl | continue to use addresses that are already configured. | |||
ude any IA_NA options in SOLICIT (<xref target="RFC8415"/>) messages. | ||||
The client MAY continue to use addresses that are already configured. | ||||
</t> | </t> | |||
<t>If the client does not obtain any suitable prefixes via DHCPv6-PD that are su itable for SLAAC, it MAY choose to disable further processing of the P flag on t hat interface, allowing the client to fall back to other address assignment mech anisms, such as forming addresses via SLAAC (if the PIO has the A flag set to 1) and/or requesting individual addresses via DHCPv6.</t> | <t>If the client does not obtain any suitable prefixes via DHCPv6-PD that are su itable 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> | |||
<section anchor="received"> | <section anchor="received"> | |||
<name> | <name> | |||
Using Delegated Prefix(es) | Using Delegated Prefix(es) | |||
</name> | </name> | |||
<t> | <t> | |||
If the delegated prefix is too long to be used for SLAAC, the cli | If the delegated prefix is too long to be used for SLAAC, the cli | |||
ent MUST ignore it, as Section 7 of <xref target="RFC9663"/> requires the networ | ent <bcp14>MUST</bcp14> ignore it, as <xref section="7" sectionFormat="of" targe | |||
k to provide a SLAAC-suitable prefix to clients. | t="RFC9663"/> requires the network to provide a SLAAC-suitable prefix to clients | |||
If the prefix is shorter than required for SLAAC, the client SHOULD accep | . | |||
t it, allocate one or more longer prefix suitable for SLAAC and use the prefixes | If the prefix is shorter than required for SLAAC, the client <bcp14>SHOUL | |||
as described below. | D</bcp14> accept it, allocate one or more longer prefixes suitable for SLAAC, an | |||
d use the prefixes as described below. | ||||
</t> | </t> | |||
<t> | <t> | |||
For every accepted prefix: | For every accepted prefix: | |||
</t> | </t> | |||
<ul> | <ul> | |||
<li> | <li> | |||
The client MAY form as many IPv6 addresses from the prefix as it chooses. | The client <bcp14>MAY</bcp14> form as many IPv6 addresses from the prefix as it chooses. | |||
</li> | </li> | |||
<li> | <li> | |||
The client MAY use the prefix to provide IPv6 addresses to internal components s uch as virtual machines or containers. | The client <bcp14>MAY</bcp14> use the prefix to provide IPv6 addresses to intern al components such as VMs or containers. | |||
</li> | </li> | |||
<li> | <li> | |||
The client MAY use the prefix to allow devices directly connected to it to obtai n IPv6 addresses. For example, the client MAY route traffic for that prefix to t he interface and send a Router Advertisement containing a PIO for the prefix on the interface. That interface MUST NOT be the interface the prefix is obtained f rom. If the client advertises the prefix on an interface, and it has formed addr esses from the prefix, then it MUST act as though the addresses were assigned to that interface for the purposes of Neighbour Discovery and Duplicate Address De tection. | 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> rout e traffic for that prefix to the interface and send a Router Advertisement conta ining a PIO for the prefix on the interface. That interface <bcp14>MUST NOT</bcp 14> be the interface the prefix is obtained from. If the client advertises the p refix on an interface and it has formed addresses from the prefix, then it <bcp1 4>MUST</bcp14> act as though the addresses were assigned to that interface for t he purposes of Neighbor Discovery and Duplicate Address Detection. | |||
</li> | </li> | |||
</ul> | </ul> | |||
<t>The client MUST NOT 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 th e prefix to another interface. Another way the client can prevent this problem i s to add to its routing table a high-metric discard route for the delegated pref ix. | <t>The client <bcp14>MUST NOT</bcp14> send or forward packets with destination a ddresses 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> | </t> | |||
</section> | </section> | |||
<section anchor="p0"> | <section anchor="p0"> | |||
<name>Absence of PIOs with P bit set</name> | <name>Absence of PIOs with the P Bit Set</name> | |||
<t> | <t> | |||
The P bit is purely a positive indicator, telling nodes that DHCPv6 | The P bit is purely a positive indicator, telling nodes that DHCPv6 | |||
Prefix Delegation is available and the network prefers that nodes use it, | 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. | 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 absence of any PIOs with the P bit does not carry any kind of signal to | |||
the opposite, and MUST NOT be processed to mean that DHCPv6-PD is absent. In | 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 | particular, nodes that run DHCPv6-PD due to explicit configuration or by default | |||
(e.g., to extend the network) MUST NOT disable DHCPv6-PD on the absence of PIOs | (e.g., to extend the network) <bcp14>MUST NOT</bcp14> disable DHCPv6-PD on the a | |||
with the P bit set. A very common example of this are CE routers as described | bsence of PIOs | |||
with the P bit set. | ||||
A very common example of this are CE routers as described | ||||
by <xref target="RFC7084"/>. | by <xref target="RFC7084"/>. | |||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="onlink"> | <section anchor="onlink"> | |||
<name>On-link Communication</name> | <name>On-Link Communication</name> | |||
<t> | <t> | |||
When the network delegates unique prefixes to clients, each client will consider | When the network delegates unique prefixes to clients, each client will consider | |||
other client's destination addresses to be off-link, because those addresses ar | other client's destination addresses to be off-link, because those addresses ar | |||
e from the delegated prefixes and are not within any on-link prefix. When a clie | e from the delegated prefixes and are not within any on-link prefix. When a clie | |||
nt sends traffic to another client, packets will initially be sent to the defaul | nt sends traffic to another client, packets will initially be sent to the defaul | |||
t router. The router may respond with an ICMPv6 redirect message (Section 4.5 of | t router. The router may respond with an ICMPv6 redirect message (<xref section= | |||
[RFC4861]). If the client receives and accepts the redirect, then traffic can f | "4.5" sectionFormat="of" target="RFC4861"/>). If the client receives and accepts | |||
low directly from device to device. Therefore, hosts supporting the P flag SHOUL | the redirect, then traffic can flow directly from device to device. Therefore, | |||
D process redirects unless configured otherwise. | hosts supporting the P flag <bcp14>SHOULD</bcp14> process redirects unless confi | |||
Hosts which do not process ICMPv6 redirects, and routers, which do not act on IC | gured otherwise. | |||
MPv6 redirects, may experience higher latency while communicating to prefixes de | Hosts that do not process ICMPv6 redirects, and routers that do not act on ICMPv | |||
legated to other clients on the same link. | 6 redirects, may experience higher latency while communicating to prefixes deleg | |||
ated to other clients on the same link. | ||||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="addrselect"> | <section anchor="addrselect"> | |||
<name>Source Address Selection</name> | <name>Source Address Selection</name> | |||
<t> | <t> | |||
For the purpose of source address selection <xref target="RFC6724"/>, if the hos | For the purpose of source address selection <xref target="RFC6724"/>, if the h | |||
t creates any addresses from a delegated prefix, it SHOULD treat those addresses | ost creates any addresses from a delegated prefix, it <bcp14>SHOULD</bcp14> trea | |||
as if they were assigned to the interface on which the prefix was received. Thi | t those addresses as if they were assigned to the interface on which the prefix | |||
s includes placing them in the candidate set, and associating them with the outg | was received. | |||
oing interface when implementing Rule 5 of the source address selection algorith | ||||
m. | <!--[rfced] FYI - We have added a citation to RFC 6724 for Rule 5. Please | |||
let us know of any objections. | ||||
Original: | ||||
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. | ||||
Current: | ||||
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 [RFC6724]. | ||||
--> | ||||
This includes placing them in the candidate set and associating them with the | ||||
outgoing interface when implementing Rule 5 of the source address selection algo | ||||
rithm <xref target="RFC6724"/>. | ||||
</t> | </t> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="mhoming"> | <section anchor="mhoming"> | |||
<name> | <name> | |||
Multihoming | Multihoming | |||
</name> | </name> | |||
<t> | <t> | |||
In multi-prefix multihoming, the host generally needs to associate the prefix wi th the router that advertised it (see for example, <xref target="RFC6724"/> Rule 5.5). If the host supports Rule 5.5, then it SHOULD associate each prefix with the link-local address of the DHCPv6 server or relay from which it received the REPLY packet. | In multi-prefix multihoming, the host generally needs to associate the prefix wi th the router that advertised it (for example, see Rule 5.5 in <xref target="RFC 6724"/>). 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 whic h it received the REPLY packet. | |||
When receiving multiple REPLYs carrying the same prefix from distinct | When receiving multiple REPLYs carrying the same prefix from distinct | |||
link-local addresses, the host SHOULD associate that prefix with all of these | 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 | addresses. This can commonly happen in networks with redundant routers and | |||
DHCPv6 servers or relays. | DHCPv6 servers or relays. | |||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="rfcchanges"> | <section anchor="rfcchanges"> | |||
<name> | <name> | |||
Modifications to RFC-Mandated Behaviour | Modifications to RFC-Mandated Behavior | |||
</name> | ||||
<section> | ||||
<name> | ||||
Changes to RFC4861 | ||||
</name> | ||||
<t> | ||||
This document makes the following changes to Section 4.2 of <xref target="RFC486 | ||||
1"/>: | ||||
</t> | ||||
<t> | ||||
OLD TEXT: | ||||
</t> | ||||
<t> | ||||
==== | ||||
</t> | ||||
<t> | ||||
Note: If neither M nor O flags are set, this indicates that no information is av | ||||
ailable via DHCPv6. | ||||
</t> | ||||
<t> | ||||
==== | ||||
</t> | ||||
<t> | ||||
NEW TEXT: | ||||
</t> | ||||
<t> | ||||
==== | ||||
</t> | ||||
<t> | ||||
Note: If none of M, O, or P (draft-ietf-6man-pio-pflag) flags are set, this indi | ||||
cates that no information is available via DHCPv6. | ||||
</t> | ||||
<t> | ||||
==== | ||||
</t> | ||||
</section> | ||||
<section> | ||||
<name> | ||||
Changes to RFC4862 | ||||
</name> | </name> | |||
<t> | ||||
This document makes the following changes to Section 5.5.3 of <xref target="RFC4 | ||||
862"/>: | ||||
</t> | ||||
<t> | ||||
OLD TEXT: | ||||
</t> | ||||
<t> | ||||
=== | ||||
</t> | ||||
<t> | ||||
For each Prefix-Information option in the Router Advertisement: | ||||
</t> | ||||
<t> | <section> | |||
<name>Changes to RFC 4861</name> | ||||
a) If the Autonomous flag is not set, silently ignore the Prefix | <t>This document makes the following changes to <xref section="4.2" secti | |||
Information option. | onFormat="of" target="RFC4861"/>:</t> | |||
</t> | ||||
<t> | ||||
b) If the prefix is the link-local prefix, silently ignore the Prefix Informat | ||||
ion option. | ||||
</t> | ||||
<t> | ||||
c) If the preferred lifetime is greater than the valid lifetime, silently ignor | ||||
e the Prefix Information option. A node MAY wish to log a system management err | ||||
or in this case. | ||||
</t> | ||||
<t> | ||||
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: | ||||
</t> | ||||
<t> | <!-- [rfced] *AD and authors - There is an open erratum report against RFC | |||
=== | 4861 regarding the text that is being updated in Section 9.1 of this | |||
</t> | document. Are any updates needed? | |||
<t> | ||||
NEW TEXT: | ||||
</t> | ||||
<t> | ||||
=== | ||||
</t> | ||||
<t> | ||||
For each Prefix-Information option in the Router Advertisement: | ||||
</t> | ||||
<t> | See https://www.rfc-editor.org/errata/eid8055. | |||
a) If the P flag is set, and the node implements draft-ietf-6man-pio-pflag, it S | --> | |||
HOULD treat the Autonomous flag as if it was unset, and use prefix delegation to | ||||
obtain addresses as described in draft-ietf-6man-pio-pflag. | ||||
</t> | ||||
<t> | <t>OLD TEXT:</t> | |||
<blockquote>Note: If neither M nor O flags are set, this indicates that | ||||
no information is available via DHCPv6.</blockquote> | ||||
b) If the Autonomous flag is not set, silently ignore the Prefix | <t>NEW TEXT:</t> | |||
Information option. | <blockquote>Note: If the M, O, or P (RFC 9762) | |||
</t> | flags are not set, this indicates that no information is available via | |||
<t> | DHCPv6.</blockquote> | |||
c) If the prefix is the link-local prefix, silently ignore the Prefix Informat | ||||
ion option. | ||||
</t> | ||||
<t> | ||||
d) If the preferred lifetime is greater than the valid lifetime, silently ignor | ||||
e the Prefix Information option. A node MAY wish to log a system management err | ||||
or in this case. | ||||
</t> | ||||
<t> | ||||
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: | ||||
</t> | ||||
<t> | </section> | |||
=== | <section> | |||
</t> | <name>Changes to RFC 4862</name> | |||
<t>This document makes the following changes to <xref section="5.5.3" sec | ||||
tionFormat="of" target="RFC4862"/>:</t> | ||||
</section> | <t>OLD TEXT:</t> | |||
<blockquote><t>For each Prefix-Information option in the Router Advertise | ||||
ment:</t> | ||||
<ol type="%c)"> | ||||
<li>If the Autonomous flag is not set, silently ignore the Prefix | ||||
Information option.</li> | ||||
<li>If the prefix is the link-local prefix, silently ignore the Prefix I | ||||
nformation option.</li> | ||||
<li>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>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>NEW TEXT:</t> | ||||
<blockquote><t>For each Prefix Information Option in the Router Advertise | ||||
ment:</t> | ||||
<ol type="%c)"> | ||||
<li>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>If the Autonomous flag is not set, silently ignore the Prefix | ||||
Information Option.</li> | ||||
<li>If the prefix is the link-local prefix, silently ignore the | ||||
Prefix Information Option.</li> | ||||
<li>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>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> | |||
<section anchor="Security"> | <section anchor="Security"> | |||
<!-- All drafts are required to have a security considerations section. Se e RFC 3552 for a guide. --> | ||||
<name>Security Considerations</name> | <name>Security Considerations</name> | |||
<t> | <t> The mechanism described in this document relies on the information | |||
The mechanism described in this document relies on the information provid | provided in the Router Advertisement and therefore shares the same | |||
ed in the Router Advertisement and therefore shares the same security model as S | security model as SLAAC. If the network does not implement RA-Guard | |||
LAAC. | <xref target="RFC6105"/>, an attacker might send RAs containing the PIO | |||
If the network does not implement RA Guard <xref target="RFC6105"/>, an a | used by the network, set the P flag to 1, and force hosts to ignore the A | |||
ttacker might send RAs containing the PIO used by the network, set the P flag to | flag. In the absence of DHCPv6-PD infrastructure, hosts would either | |||
1 and force hosts to ignore the A flag. | obtain no IPv6 addresses or, if they fall back to other IPv6 address | |||
In the absence of DHCPv6-PD infrastructure, hosts would either obtain no | assignment mechanisms such as SLAAC and IA_NA, would experience delays | |||
IPv6 addresses or, if they fall back to other IPv6 address assignment mechanisms | in obtaining IPv6 addresses. If the network does not support | |||
such as SLAAC and IA_NA, would experience delays in obtaining IPv6 addresses. I | DHCPv6-Shield <xref target="RFC7610"/>, the attacker could also run a | |||
f the network does not support DHCPv6-Shield <xref target="RFC7610"/>, the attac | rogue DHCPv6 server, providing the host with invalid prefixes or other | |||
ker could also run a rogue DHCPv6 server, providing the host with invalid prefix | invalid configuration information.</t> | |||
es or other invalid configuration information. | <t>The attacker might force hosts to oscillate between DHCPv6-PD and | |||
</t> | PIO-based SLAAC by sending the same set of PIOs with and then without the | |||
<t> | P flag | |||
The attacker might force hosts to oscillate between DHCPv6-PD | set. That would cause the clients to issue REBIND requests, increasing | |||
and PIO-based SLAAC by sending the same set of PIOs with and then w/o P flag se | the load on the DHCP infrastructure. However, <xref section="14.1" sectio | |||
t. | nFormat="of" | |||
That would cause the clients to issue REBIND requests, increa | target="RFC8415"/> requires that DHCPv6-PD clients rate-limit | |||
sing the load on the DHCP infrastructure. | transmitted DHCPv6 messages.</t> | |||
However, Section 14.1 of <xref target="RFC8415"/> requires th | <t>It should be noted that if the network allows rogue RAs to be sent, | |||
at DHCPv6-PD clients rate limit transmitted DHCPv6 messages. | the attacker would be able to disrupt hosts connectivity anyway, so this | |||
</t> | document doesn't introduce any fundamentally new security | |||
considerations.</t> | ||||
<t> | <t>Security considerations inherent to the PD-per-device model are | |||
It should be noted that if the network allows rogue RAs to be | documented in <xref section="15" sectionFormat="of" target="RFC9663"/>.</t | |||
sent, the attacker would be able to disrupt hosts connectivity anyway, so this | > | |||
document doesn't introduce any fundamentally new security considerations. | ||||
</t> | ||||
<t> | ||||
Security considerations inherent to the PD-per-device model are docu | ||||
mented in Section 15 of <xref target="RFC9663"/>. | ||||
</t> | ||||
</section> | </section> | |||
<section anchor="privacy"> | <section anchor="privacy"> | |||
<name>Privacy Considerations</name> | <name>Privacy Considerations</name> | |||
<t> | <t> | |||
The privacy implications of implementing the P flag and using DHCPv6-PD to assig | The privacy implications of implementing the P flag and using DHCPv6-PD to assig | |||
n prefixes to hosts are similar to privacy implications of using DHCPv6 for assi | n prefixes to hosts are similar to the privacy implications of using DHCPv6 for | |||
gning individual addresses. | assigning individual addresses. | |||
If the DHCPv6 infrastructure assigns the same prefix to the same client, then an | 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 | observer might be able to identify clients based on the highest 64 bits of the | |||
client's address. Those implications and recommended countermeasures are discuss | client's address. Those implications and recommended countermeasures are discuss | |||
ed in Section 13 of <xref target="RFC9663"/>.</t> | ed in <xref section="13" sectionFormat="of" target="RFC9663"/>.</t> | |||
<t> | <t> | |||
Implementing the P flag support on a host / receiving side enables DHCPv 6 on that host. | Implementing the P flag support on a host and receiving side enables DHC Pv6 on that host. | |||
Sending DHCPv6 packets may reveal some minor additional information about the h ost, | Sending DHCPv6 packets may reveal some minor additional information about the h ost, | |||
most prominently the hostname. This is not a new concern and would apply for any network which uses DHCPv6 and sets 'M' flag in Router Advertisements. | 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 Router Advertisement s. | |||
</t> | </t> | |||
<t> | <t> | |||
No privacy considerations result from supporting the P flag on the sende r side. | No privacy considerations result from supporting the P flag on the sende r side. | |||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="IANA"> | <section anchor="IANA"> | |||
<!-- All drafts are required to have an IANA considerations section. See RFC 8126 for a guide.--> | ||||
<name>IANA Considerations</name> | <name>IANA Considerations</name> | |||
<t>This memo requests that IANA allocate bit 3 from the "IPv6 Neighbor | <t>IANA has made the following allocation in the "IPv6 Neighbor Discovery | |||
Discovery Prefix Information Option Flags" registry created by | Prefix Information Option Flags" registry <xref target="RFC8425"/>: | |||
<xref target="RFC8425"/> for use as the P flag as described in this | </t> | |||
document. The following entry should be appended:</t> | ||||
<table> | <!-- [rfced] Would you like to update the capitalization of "DHCPv6-PD | |||
preferred flag" as follows to correspond with the other entries in the | ||||
"IPv6 Neighbor Discovery Prefix Information Option Flags" registry? | ||||
Link to registry: https://www.iana.org/assignments/icmpv6-parameters/icmpv6-para | ||||
meters.xhtml#ipv6-neighbor-discovery-prefix-information-options | ||||
Original: | ||||
DHCPv6-PD preferred flag | ||||
Perhaps: | ||||
DHCPv6-PD Preferred Flag | ||||
--> | ||||
<table> | ||||
<thead> | <thead> | |||
<tr><th>PIO Option Bit</th><th>Description</th><th>Reference</th></tr> | <tr><th>PIO Option Bit</th><th>Description</th><th>Reference</th></tr> | |||
</thead> | </thead> | |||
<tbody> | <tbody> | |||
<tr><td>3</td><td>P - DHCPv6-PD preferred flag</td><td>[THIS DOCUMENT] </td></tr> | <tr><td>3</td><td>P - DHCPv6-PD preferred flag</td><td>RFC 9762</td></ tr> | |||
</tbody> | </tbody> | |||
</table> | </table> | |||
</section> | </section> | |||
<!-- NOTE: The Acknowledgements and Contributors sections are at the end of this template --> | ||||
</middle> | </middle> | |||
<back> | <back> | |||
<references> | <references> | |||
<name>References</name> | <name>References</name> | |||
<references> | <references> | |||
<name>Normative References</name> | <name>Normative References</name> | |||
<xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.2 119.xml"/> | <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.2 119.xml"/> | |||
<xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.4 861.xml"/> | <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.4 861.xml"/> | |||
<xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.4 862.xml"/> | <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.4 862.xml"/> | |||
<xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.6 724.xml"/> | <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.6 724.xml"/> | |||
<xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.8 174.xml"/> | <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.8 174.xml"/> | |||
<xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.8 415.xml"/> | <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.8 415.xml"/> | |||
<xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.8 425.xml"/> | <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.8 425.xml"/> | |||
<!-- The recommended and simplest way to include a well known reference | ||||
--> | ||||
</references> | </references> | |||
<references> | <references> | |||
<name>Informative References</name> | <name>Informative References</name> | |||
<xi:include href="https://www.rfc-editor.org/refs/bibxml/reference. RFC.4193.xml"/> | <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference. RFC.4193.xml"/> | |||
<xi:include href="https://www.rfc-editor.org/refs/bibxml/reference. RFC.6105.xml"/> | <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference. RFC.6105.xml"/> | |||
<xi:include href="https://www.rfc-editor.org/refs/bibxml/reference. RFC.6275.xml"/> | <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference. RFC.6275.xml"/> | |||
<xi:include href="https://www.rfc-editor.org/refs/bibxml/reference. RFC.7084.xml"/> | ||||
<xi:include href="https://www.rfc-editor.org/refs/bibxml/reference. RFC.7039.xml"/> | <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference. RFC.7039.xml"/> | |||
<xi:include href="https://www.rfc-editor.org/refs/bibxml/reference. RFC.7084.xml"/> | ||||
<xi:include href="https://www.rfc-editor.org/refs/bibxml/reference. RFC.7348.xml"/> | <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference. RFC.7348.xml"/> | |||
<xi:include href="https://www.rfc-editor.org/refs/bibxml/reference. RFC.7610.xml"/> | <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference. RFC.7610.xml"/> | |||
<xi:include href="https://www.rfc-editor.org/refs/bibxml/reference .RFC.8200.xml"/> | <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference .RFC.8200.xml"/> | |||
<xi:include href="https://www.rfc-editor.org/refs/bibxml/reference .RFC.9663.xml"/> | <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference .RFC.9663.xml"/> | |||
</references> | </references> | |||
</references> | </references> | |||
<!-- [rfced] FYI - We alphabetized the names listed in the Acknowledgements | ||||
section. We believe that was the intent as only two were out of order. Let us | ||||
know if you prefer the original order. | ||||
--> | ||||
<section anchor="Acknowledgements" numbered="false"> | <section anchor="Acknowledgements" numbered="false"> | |||
<name>Acknowledgements</name> | <name>Acknowledgements</name> | |||
<t> | <t>Thanks to <contact fullname="Nick Buraglio"/>, <contact | |||
Thanks to Nick Buraglio, Brian Carpenter, Tim Chown, David Farmer, Fernando Gont | fullname="Brian Carpenter"/>, <contact fullname="Tim Chown"/>, <contact | |||
, Susan Hares, Dirk Von Hugo, Mahesh Jethanandani, Suresh Krishnan, Ted Lemon, A | fullname="David Farmer"/>, <contact fullname="Fernando Gont"/>, <contact | |||
ndrew McGregor, Erik Nordmark, Tomek Mrugalski, Michael Richardson, John Scudder | fullname="Susan Hares"/>, <contact fullname="Mahesh Jethanandani"/>, | |||
, Ole Trøan, Eric Vyncke and Timothy Winters for the discussions, reviews, the i | <contact fullname="Suresh Krishnan"/>, <contact fullname="Ted Lemon"/>, | |||
nput and all contributions. | <contact fullname="Andrew McGregor"/>, <contact fullname="Tomek | |||
</t> | Mrugalski"/>, <contact fullname="Erik Nordmark"/>, <contact | |||
fullname="Michael Richardson"/>, <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> | |||
<!--[rfced] Abbreviations | ||||
a) We updated "Unique Local Unicast (ULA, [RFC4193]) addresses" as | ||||
follows. Note that we removed the acronym "ULA" as it is not used elsewhere in | ||||
this document or in RFC 4193. | ||||
Original: | ||||
For example, a network administrator might want | ||||
clients to assign global addresses from delegated prefixes, but | ||||
use the PIO prefix to form Unique Local Unicast (ULA, [RFC4193]) | ||||
addresses. | ||||
Current: | ||||
For example, a network administrator might want | ||||
clients to assign global addresses from delegated prefixes but use | ||||
the PIO prefix to form Unique Local IPv6 Unicast Addresses | ||||
[RFC4193]. | ||||
b) Both the expansion and the acronym for the following terms are used | ||||
throughout the document. Would you like to update to using the expansion upon | ||||
first usage and the acronym for the rest of the document? | ||||
Prefix Information Option (PIO) | ||||
Router Advertisement (RA) | ||||
--> | ||||
<!--[rfced] Terminology | ||||
a) How should the names of flags appear (without quotes, with single | ||||
quotes, or with double quotes)? | ||||
Examples: | ||||
P flag | ||||
'P' flag | ||||
"P" flag | ||||
R flag | ||||
M and O flag | ||||
'M' flag | ||||
A flag | ||||
b) Throughout the text, the following terminology appears to be used | ||||
inconsistently. Please review these occurrences and let us know if/how they | ||||
may be made consistent. | ||||
Preferred Lifetime vs. preferred lifetime | ||||
Prefix Delegation vs. prefix delegation | ||||
c) Should "SOLICIT" here be updated to "Solicit"? Although RFC 8415 contains | ||||
two instances of "SOLICIT", it contains many instances of "Solicit message". | ||||
Original: | ||||
...i.e., it SHOULD NOT include any IA_NA options | ||||
in SOLICIT ([RFC8415]) messages. | ||||
Perhaps: | ||||
...i.e., it SHOULD NOT include any IA_NA options | ||||
in Solicit messages [RFC8415]. | ||||
--> | ||||
<!-- [rfced] Please review the "Inclusive Language" portion of the online | ||||
Style Guide <https://www.rfc-editor.org/styleguide/part2/#inclusive_language> | ||||
and let us know if any changes are needed. Updates of this nature typically | ||||
result in more precise language, which is helpful for readers. | ||||
Note that our script did not flag any words in particular, but this should | ||||
still be reviewed as a best practice. | ||||
--> | ||||
</back> | </back> | |||
</rfc> | </rfc> | |||
End of changes. 80 change blocks. | ||||
407 lines changed or deleted | 518 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |