Internet-Draft pio-p-flag May 2024
Colitti, et al. Expires 30 November 2024 [Page]
Workgroup:
IPv6 Maintenance
Internet-Draft:
draft-ietf-6man-pio-pflag-04
Updates:
4862 (if approved)
Published:
Intended Status:
Standards Track
Expires:
Authors:
L. Colitti
Google
J. Linkova
Google
X. Ma, Ed.
Google
D. Lamparter
NetDEF, Inc.

Signalling DHCPv6 Prefix Delegation Availability to Hosts

Abstract

This document defines a "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 do not use the prefix provided in the PIO for SLAAC but request a prefix via DHCPv6 PD instead, and use that delegated prefix to form addresses.

Status of This Memo

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 30 November 2024.

Table of Contents

1. Introduction

IPv6-capable devices, especially mobile devices, usually have multiple global IPv6 addresses, such as stable addresses ([RFC8064]), temporary addresses ([RFC8981]), 464XLAT addresses ([RFC6877]), and dedicated addresses for virtual systems such as VMs or containers. Additionally, these devices often extend the network, either externally to other devices (e.g., when tethering) or internally, to virtual systems.

Extending the network to other devices or virtual systems requires that the device provide a way for those systems to obtain IP addresses. These addresses may be part of a prefix that is delegated to the device. Or they may be obtained by the device via other means such as by running SLAAC or DHCPv6 address assignment on the shared on-link prefix, and shared with other devices via ND proxying [RFC8981].

On large networks, the latter mode creates scalability issues, as the network infrastructure devices need to maintain state per address: IPv6 neighbor cache, SAVI mappings ([RFC7039]), VXLAN routes, etc. [I-D.ietf-v6ops-dhcp-pd-per-device] provides a a solution that uses DHCPv6 PD [RFC8415] to provide a client with a dedicated prefix, which can be used to form addresses. This solves the scaling issues because the amount of state that has to be maintained by the network depends on the number of devices and does not depend anymore on how many addresses those devices are using.

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. In such networks delegating an unique prefix per client would not provide any notable scalability benefits and would introduce a risk of address exhaustion.

When a host connects to a network which provides a shared prefix in PIO to be used for SLAAC and also supports delegating per-host prefix via DHCPv6 PD, the host cannot know in advance which address assignment method is most appropriate for the network. It's desirable to have a mechanism for the network to communicate the preference to the host.

2. Requirements Language

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.

3. Rationale

The network administrator might want to indicate to hosts that requesting a prefix via DHCPv6 PD and using that prefix for address assignment (see [I-D.ietf-v6ops-dhcp-pd-per-device]) should be preferred over using individual addresses from the on-link prefix. The information is passed to the host via a P flag in the Prefix Information Option (PIO). The reason for it being a PIO flag is as follows:

Note that setting the 'P' flag in a PIO option expresses the operator's preference as to whether hosts should attempt using DHCPv6 PD instead of performing individual address configuration on the prefix. For hosts that honor this preference by requesting prefix delegation, the actual delegated prefix will necessarily be a prefix different from the one from the PIO.

4. P Flag Overview

The P flag (also called DHCPv6-PD preferred flag) is a 1-bit PIO flag, located after the R flag ([RFC6275]). 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.

Adding the P flag reduces the PIO Reserved1 field ([RFC4861], [RFC8425]) from 5 bits to 4 bits. The resulting format of the Prefix Information Option is as follows:

       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                             +
      |                                                               |
      +                                                               +
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Figure 1

5. Router Behaviour

Routers SHOULD set the P flag to zero by default, unless explicitly configured by the administrator, and SHOULD allow the operator to set the P flag value for any given prefix.

6. Host Behaviour

6.1. Processing the P Flag

This specification only applies to hosts which support DHCPv6 prefix delegation. Hosts which do not support DHCPv6 prefix delegation MUST ignore the P flag. 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]. In the following text, all prefixes are assumed not to be link-local.

For each interface, the host MUST 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 behaviour of the DHCPv6 client as follows:

  • When a prefix's Preferred Lifetime becomes zero, either due to expiration or due to the receipt of a PIO with a Preferred Lifetime of zero, the prefix MUST be removed from the list.
  • When the length of the list increases to one, the host SHOULD start requesting prefixes via DHCPv6 prefix delegation unless it is already doing so.
  • When the length of the list decreases to zero, the host SHOULD 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.
  • If the host 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 host MUST consider this to be a change in configuration information as described in Section 18.2.12 of [RFC8415], and it MUST perform a REBIND, unless it is going to stop the DHCPv6 client because the list became empty. This is in addition to performing a REBIND in the other cases required by that section. Issuing a REBIND allows the host to obtain new prefixes if necessary, e.g., when the network is being renumbered. It also refreshes state related to the delegated prefix(es).

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.

In order to achieve the scalability benefits of using DHCPv6 PD, the host SHOULD prefer to form addresses from the delegated prefix instead of using individual addresses in the on-link prefix(es). Therefore, when the host requests a prefix using DHCPv6 PD, the host SHOULD NOT use SLAAC to obtain IPv6 addresses from PIOs with the P and A bits set. Similarly, unless the host processes at least one PIO with the P bit not set, the host SHOULD NOT request individual IPv6 addresses from DHCPv6, i.e., it SHOULD NOT include any IA_NA or IA_TA options in Solicit, Renew or Rebind messages.

If the host does not obtain any suitable prefixes via DHCPv6 PD that are suitable for SLAAC, it MAY choose to disable further processing of the P flag on that interface, allowing the host 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.

6.2. Using Delegated Prefix(es)

If the delegated prefix is too long to be used for SLAAC, the host MUST ignore it. 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:

  • The host MAY form as many IPv6 addresses from the prefix as it chooses.
  • The host MAY use the prefix to provide IPv6 addresses to internal components such as virtual machines or containers.
  • If the host is capable of acting as a router, and doing so is allowed by local policy, it MAY use the prefix to allow devices directly connected to it to obtain IPv6 addresses, e.g., by routing traffic for that prefix to the interface and sending a Router Advertisement containing the prefix on the interface. If the host does so, and it has has formed addresses 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 Detection.

The host MUST NOT forward packets with destination addresses within a delegated prefix to the interface that it obtained the prefix on, as this will cause a routing loop. This problem will not occur if the host has assigned the prefix to a downstream interface. If the host has not assigned the prefix to a downstream interface, then one way to prevent this problem this is to add to its routing table a high-metric discard route for the delegated prefix. Similarly, the host MUST NOT send packets with destination addresses in the delegated prefix to the interface that it obtained the prefix on.

6.3. Absence of PIOs with P bit set

The P bit is purely a positive indicator, telling nodes that DHCPv6 Prefix Delegation is available and the network prefers the node use it. 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 particular, nodes that are already running DHCPv6 PD either by explicit configuration or by default MUST NOT 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 [RFC7084].

6.4. Source Address Selection

For the purpose of source address selection [RFC6724], if the host forms addresses from a delegated prefix, it SHOULD 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.

7. Multihoming

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.

8. Modifications to RFC-Mandated Behavior

8.1. Changes to RFC4862

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, the node SHOULD treat the Autonomous flag as if it was unset, and use prefix delegation to obtain addresses as described in draft-ietf-6man-pio-pflag.

===

9. Security Considerations

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 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.

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.

10. Privacy Considerations

The privacy implications of implementing the P flag and using DHCPv6 PD to assign prefixes to hosts are similar to privacy implications of using DHCPv6 for assigning 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 Section 13 of [I-D.ietf-v6ops-dhcp-pd-per-device].

Implementing the P flag support on a host / receiving side enables DHCPv6 on that host. 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 which uses DHCPv6 and sets 'M' flag in Router Advertoisements.

No privacy considerations result from supporting the P flag on the sender side.

11. IANA Considerations

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:

Table 1
PIO Option Bit Description Reference
3 P - DHCPv6-PD preferred flag [THIS DOCUMENT]

12. References

12.1. Normative References

[RFC2119]
Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, , <https://www.rfc-editor.org/info/rfc2119>.
[RFC4861]
Narten, T., Nordmark, E., Simpson, W., and H. Soliman, "Neighbor Discovery for IP version 6 (IPv6)", RFC 4861, DOI 10.17487/RFC4861, , <https://www.rfc-editor.org/info/rfc4861>.
[RFC4862]
Thomson, S., Narten, T., and T. Jinmei, "IPv6 Stateless Address Autoconfiguration", RFC 4862, DOI 10.17487/RFC4862, , <https://www.rfc-editor.org/info/rfc4862>.
[RFC6724]
Thaler, D., Ed., Draves, R., Matsumoto, A., and T. Chown, "Default Address Selection for Internet Protocol Version 6 (IPv6)", RFC 6724, DOI 10.17487/RFC6724, , <https://www.rfc-editor.org/info/rfc6724>.
[RFC8174]
Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, , <https://www.rfc-editor.org/info/rfc8174>.
[RFC8415]
Mrugalski, T., Siodelski, M., Volz, B., Yourtchenko, A., Richardson, M., Jiang, S., Lemon, T., and T. Winters, "Dynamic Host Configuration Protocol for IPv6 (DHCPv6)", RFC 8415, DOI 10.17487/RFC8415, , <https://www.rfc-editor.org/info/rfc8415>.
[RFC8425]
Troan, O., "IANA Considerations for IPv6 Neighbor Discovery Prefix Information Option Flags", RFC 8425, DOI 10.17487/RFC8425, , <https://www.rfc-editor.org/info/rfc8425>.

12.2. Informative References

[RFC4389]
Thaler, D., Talwar, M., and C. Patel, "Neighbor Discovery Proxies (ND Proxy)", RFC 4389, DOI 10.17487/RFC4389, , <https://www.rfc-editor.org/info/rfc4389>.
[RFC6105]
Levy-Abegnoli, E., Van de Velde, G., Popoviciu, C., and J. Mohacsi, "IPv6 Router Advertisement Guard", RFC 6105, DOI 10.17487/RFC6105, , <https://www.rfc-editor.org/info/rfc6105>.
[I-D.ietf-v6ops-dhcp-pd-per-device]
Colitti, L., Linkova, J., and X. Ma, "Using DHCPv6-PD to Allocate Unique IPv6 Prefix per Client in Large Broadcast Networks", Work in Progress, Internet-Draft, draft-ietf-v6ops-dhcp-pd-per-device-08, , <https://datatracker.ietf.org/doc/html/draft-ietf-v6ops-dhcp-pd-per-device-08>.
[RFC6275]
Perkins, C., Ed., Johnson, D., and J. Arkko, "Mobility Support in IPv6", RFC 6275, DOI 10.17487/RFC6275, , <https://www.rfc-editor.org/info/rfc6275>.
[RFC6877]
Mawatari, M., Kawashima, M., and C. Byrne, "464XLAT: Combination of Stateful and Stateless Translation", RFC 6877, DOI 10.17487/RFC6877, , <https://www.rfc-editor.org/info/rfc6877>.
[RFC7084]
Singh, H., Beebee, W., Donley, C., and B. Stark, "Basic Requirements for IPv6 Customer Edge Routers", RFC 7084, DOI 10.17487/RFC7084, , <https://www.rfc-editor.org/info/rfc7084>.
[RFC7039]
Wu, J., Bi, J., Bagnulo, M., Baker, F., and C. Vogt, Ed., "Source Address Validation Improvement (SAVI) Framework", RFC 7039, DOI 10.17487/RFC7039, , <https://www.rfc-editor.org/info/rfc7039>.
[RFC8064]
Gont, F., Cooper, A., Thaler, D., and W. Liu, "Recommendation on Stable IPv6 Interface Identifiers", RFC 8064, DOI 10.17487/RFC8064, , <https://www.rfc-editor.org/info/rfc8064>.
[RFC8981]
Gont, F., Krishnan, S., Narten, T., and R. Draves, "Temporary Address Extensions for Stateless Address Autoconfiguration in IPv6", RFC 8981, DOI 10.17487/RFC8981, , <https://www.rfc-editor.org/info/rfc8981>.

Acknowledgements

Thanks to Nick Buraglio, Brian Carpenter, Tim Chown, Fernando Gont, Suresh Krishnan, Andrew McGregor, Tomek Mrugalski, Ted Lemon, Timothy Winters for the discussions, the input and all contribution.

Authors' Addresses

Lorenzo Colitti
Google
Shibuya 3-21-3,
Japan
Jen Linkova
Google
1 Darling Island Rd
Pyrmont NSW 2009
Australia
Xiao Ma (editor)
Google
Shibuya 3-21-3,
Japan
David 'equinox' Lamparter
NetDEF, Inc.
San Jose,
United States of America