Internet-Draft | pio-p-flag | July 2023 |
Colitti, et al. | Expires 7 January 2024 | [Page] |
This document defines a ‘P’ flag in the Prefix Information Option of IPv6 Router Advertisements (RAs). The flag is used to indicate that the network prefers that hosts acquire global addresses using DHCPv6 PD instead of using SLAAC for this prefix.¶
This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.¶
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.¶
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."¶
This Internet-Draft will expire on 7 January 2024.¶
Copyright (c) 2023 IETF Trust and the persons identified as the document authors. All rights reserved.¶
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) 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.¶
IPv6 hosts, especially mobile hosts, usually have multiple global IPv6 addresses (e.g. stable addresses, privacy addresses, 464XLAT addresses, addresses for virtual systems etc).¶
On large networks, individually tracking these addresses can create scalability issues for the infrastructure, because routers must maintain multiple entries (neighbor cache, SAVI mappings, VXLAN routes, etc.) for each host. [I-D.ietf-v6ops-dhcp-pd-per-device] discusses these challenges and proposes a solution that uses DHCPv6 PD [RFC8415].¶
On small networks, scaling to support multiple individual IPv6 addresses is less of a concern, because many home routers support hundreds of neighbor cache entries. On the other hand, address space is more limited compared to the number of hosts connected - the smallest home network might only have /60 prefixes, or even just a single /64.¶
A host cannot know in advance which address assignment method is most appropriate for the network, so there must be a mechanism for the network to communicate with this to the host.¶
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.¶
As described above, if the network supports both SLAAC and DHCPv6-PD, the network administrator might want to indicate to hosts that DHCPv6-PD address assignemnt (see [I-D.ietf-v6ops-dhcp-pd-per-device]) should be preferred over SLAAC. The information is passed to the host via a P flag in the Prefix Information Option (PIO). The reason is as follows:¶
The router SHOULD set P flag to zero by default, unless explicitly configured by the administrator. The router SHOULD have a configuration knob to set the P flag value for the given prefix.¶
The host SHOULD NOT use SLAAC to obtain IPv6 addresses from prefix(es) with the P bit set.¶
For each network it is currently connected to, the host MUST keep a list of every PIO it has received with the P flag. Each time the client receives a Router Advertisement containing a PIO with the P bit set that is not in the list, and every time a previously-received PIO with the P bit set becomes deprecated:¶
Whenever a Prefix Information Option’s Valid lifetime reaches zero, or its P flag changes to 0, the prefix is removed from the list. When there are no such prefixes, the host SHOULD stop the DHCPv6 client if it has no other reason to run it. The lifetimes of any DHCPv6 prefixes already obtained are unaffected.¶
When a host requests a prefix via DHCPv6 PD, it MUST use the prefix length hint Section 18.2.4 of [RFC8415] to request a prefix that is short enough to form addresses via SLAAC.¶
The P flag is meaningless for link-local prefixes and any Prefix Information Option containing the link-local prefix MUST be ignored as specified in Section 5.5.3 of [RFC4862].¶
If the received prefix is long to be used for SLAAC, the host MUST ignore it and issue a DECLINE. If the prefix is shorter than required for SLAAC, the host SHOULD accept it, allocate one or more longer prefix suitable for SLAAC and use the prefixes as described below.¶
For every accepted prefix:¶
If the host doesn't obtain any suitable prefixes via DHCPv6 PD it MAY choose, as a fallback mechanism, to form addresses via SLAAC using PIOs with A flag set to 1.¶
In multi-prefix multihoming, the host generally needs to associate the prefix with the router that advertised it (see for example, [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 relay from which it received the REPLY packet. When receiving multiple REPLYs carrying the same prefix from distinct link-local addresses, the host SHOULD associate that prefix with all of these addresses. This can commonly happen in networks with redundant routers and DHCPv6 relays.¶
This document makes the following changes to Section 4.6.2 of [RFC4861], (last updated by [RFC6275]):¶
OLD TEXT:¶
==¶
===¶
NEW TEXT¶
===¶
OLD TEXT¶
===¶
A 1-bit autonomous address-configuration flag. When set indicates that this prefix can be used for stateless address configuration as specified in [ADDRCONF].¶
Reserved1 6-bit unused field. It MUST be initialized to zero by the sender and MUST be ignored by the receiver.¶
===¶
NEW TEXT¶
===¶
A 1-bit autonomous address-configuration flag. When set indicates that this prefix can be used for stateless address configuration as specified in [ADDRCONF].¶
P 1-bit DHCPv6-PD flag. When set, indicates that this prefix SHOULD NOT be used for stateless address configuration. Instead the host SHOULD request a dedicated prefix via DHCPv6-PD and use that prefix for stateless address configuration.¶
Rsvd1 4-bit unused field. It MUST be initialized to zero by the sender and MUST be ignored by the receiver.¶
===¶
This document makes the following changes to Section 5.5.3 of [RFC4862]:¶
OLD TEXT¶
===¶
For each Prefix-Information option in the Router Advertisement:¶
a) If the Autonomous flag is not set, silently ignore the Prefix Information option.¶
===¶
NEW TEXT: Insert the following text after "For each Prefix-Information option in the Router Advertisement:" but before "If the Autonomous flag is not set, silently ignore the Prefix Information option.":¶
===¶
a) If the P flag is set, start the DHCPv6 PD process and use the delegated prefix to assign addresses to the interfaces as described in draft-collink-6man-pio-pflag. The Prefix Information option SHOULD be processed as if A flag is set to zero.¶
===¶
The mechanism described in this document relies on the information provided in the Router Advertisement and therefore shares the same security model as SLAAC. If the network doesn't implement RA Guard [RFC6105], an attacker might sent RAs containing the PIO used by the network, set P flag to 1 and force hosts to ignore A flag. In the absense of DHCPv6 PD infrastructure, hosts would experience delays in obtaining IPv6 addresses (as no delegated prefixes are available, hosts MAY choose to fallback to SLAAC).¶
The attacker might force hosts to oscillate between DHCPv6 PD and PIO-based SLAAC by sending the same set of PIOs with and then w/o P flag set. That would cause the clients to issue REBIND requests, increasing the load on the DHCP infrastructure. However Section 14.1 of [RFC8415] requires that DHCPv6 PD clients rate limit transmitted DHCPv6 messages.¶
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.¶
Implementing the P flag on a host / receiving side enables other systems on the network to trigger running DHCPv6 on that network. Doing so may reveal some minor additional information about the host, most prominently the hostname. This is the same consideration as for the M flag.¶
No privacy considerations result from supporting the P flag on the sender side.¶
This memo requests that IANA allocate bit 3 from the "IPv6 Neighbor Discovery Prefix Information Option Flags" registry created by [RFC8425] for use as the P flag as described in this document. The following entry should be appended:¶
PIO Option Bit | Description | Reference |
---|---|---|
3 | P - DHCPv6-PD preferred flag | [THIS DOCUMENT] |
Thanks to Fernando Gont, Suresh Krishnan, Andrew McGregor, Tomek Mrugalski, Timothy Winters for the discussions, the input and all contribution.¶