Internet DRAFT - draft-collink-6man-pio-pflag

draft-collink-6man-pio-pflag







IPv6 Maintenance                                              L. Colitti
Internet-Draft                                                J. Linkova
Updates: 4861, 4862 (if approved)                             X. Ma, Ed.
Intended status: Standards Track                                  Google
Expires: 9 May 2024                                         D. Lamparter
                                                            NetDEF, Inc.
                                                         6 November 2023


       Signalling DHCPv6 Prefix Delegation Availability to Hosts
                    draft-collink-6man-pio-pflag-03

Abstract

   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 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 9 May 2024.

Copyright Notice

   Copyright (c) 2023 IETF Trust and the persons identified as the
   document authors.  All rights reserved.










Colitti, et al.            Expires 9 May 2024                   [Page 1]

Internet-Draft                 pio-p-flag                  November 2023


   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.

Table of Contents

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   2
   2.  Requirements Language . . . . . . . . . . . . . . . . . . . .   3
   3.  Rationale . . . . . . . . . . . . . . . . . . . . . . . . . .   4
   4.  Router Behaviour  . . . . . . . . . . . . . . . . . . . . . .   4
   5.  Host Behaviour  . . . . . . . . . . . . . . . . . . . . . . .   4
     5.1.  Tracking and requesting prefixes  . . . . . . . . . . . .   4
     5.2.  Using received prefix(es) . . . . . . . . . . . . . . . .   5
     5.3.  Absence of PIOs with P bit set  . . . . . . . . . . . . .   6
     5.4.  Source Address Selection  . . . . . . . . . . . . . . . .   6
   6.  Multihoming . . . . . . . . . . . . . . . . . . . . . . . . .   6
   7.  Modifications to RFC-Mandated Behavior  . . . . . . . . . . .   6
     7.1.  Changes to RFC4861  . . . . . . . . . . . . . . . . . . .   6
     7.2.  Changes to RFC4862  . . . . . . . . . . . . . . . . . . .   8
   8.  Security Considerations . . . . . . . . . . . . . . . . . . .   8
   9.  Privacy Considerations  . . . . . . . . . . . . . . . . . . .   9
   10. IANA Considerations . . . . . . . . . . . . . . . . . . . . .   9
   11. References  . . . . . . . . . . . . . . . . . . . . . . . . .   9
     11.1.  Normative References . . . . . . . . . . . . . . . . . .   9
     11.2.  Informative References . . . . . . . . . . . . . . . . .  10
   Acknowledgements  . . . . . . . . . . . . . . . . . . . . . . . .  11
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  11

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.









Colitti, et al.            Expires 9 May 2024                   [Page 2]

Internet-Draft                 pio-p-flag                  November 2023


   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
   does not depend on how many addresses are in use.

   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.











Colitti, et al.            Expires 9 May 2024                   [Page 3]

Internet-Draft                 pio-p-flag                  November 2023


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 forming SLAAC addresses from the prefix provided in
   the PIO.  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:

   *  The information should be contained in the Router Advertisement
      because it must be available to the host before it decides to form
      IPv6 addresses from the PIO prefix using SLAAC.  Otherwise, the
      host might form IPv6 addresses from the PIO provided and start
      using them, even if a unique per-host prefix is available via
      DHCPv6 PD.  This is suboptimal because if the host 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.

   *  This information is specific to the particular prefix being
      announced.  For example, a network administrator might want hosts
      to assign global addresses from delegated prefixes, but use the
      PIO prefix to form ULA addresses.  Also, in a multihoming
      situation, one upstream network might choose to assign prefixes
      via prefix delegation, and another via PIOs.

   Note that the prefix(es) that the client obtains via DHCPv6 PD are
   not related in any way to the prefix(es) in the Router Advertisement
   which have the P bit set.

4.  Router Behaviour

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

5.  Host Behaviour

5.1.  Tracking and requesting prefixes

   The host SHOULD NOT use SLAAC to obtain IPv6 addresses from
   prefix(es) with the P bit set.







Colitti, et al.            Expires 9 May 2024                   [Page 4]

Internet-Draft                 pio-p-flag                  November 2023


   Otherwise, for each interface, 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:

   *  If the client has not previously received any delegated prefixes
      from the network, it SHOULD start DHCPv6 Prefix Delegation.

   *  If the client has already received delegated prefix(es) from one
      or more servers, it MUST consider this change in PIOs a change in
      configuration information as described in Section 18.2.12 of
      [RFC8415], i.e. it MUST perform a REBIND.  This 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).

   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
   already obtained via DHCPv6 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].

5.2.  Using received prefix(es)

   If the received 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.






Colitti, et al.            Expires 9 May 2024                   [Page 5]

Internet-Draft                 pio-p-flag                  November 2023


   *  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
      sending a Router Advertisement containing the prefix to a
      connected interface.

   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.

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

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

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

7.  Modifications to RFC-Mandated Behavior

7.1.  Changes to RFC4861

   This document makes the following changes to Section 4.6.2 of
   [RFC4861], (last updated by [RFC6275]):



Colitti, et al.            Expires 9 May 2024                   [Page 6]

Internet-Draft                 pio-p-flag                  November 2023


   OLD TEXT:

   ==

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

                                Figure 1

   ===

   NEW TEXT

   ===

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

                                Figure 2

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





Colitti, et al.            Expires 9 May 2024                   [Page 7]

Internet-Draft                 pio-p-flag                  November 2023


   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.

   ===

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

   ===

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



Colitti, et al.            Expires 9 May 2024                   [Page 8]

Internet-Draft                 pio-p-flag                  November 2023


   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.

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

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

    +================+==============================+=================+
    | PIO Option Bit | Description                  | Reference       |
    +================+==============================+=================+
    | 3              | P - DHCPv6-PD preferred flag | [THIS DOCUMENT] |
    +----------------+------------------------------+-----------------+

                                  Table 1

11.  References

11.1.  Normative References







Colitti, et al.            Expires 9 May 2024                   [Page 9]

Internet-Draft                 pio-p-flag                  November 2023


   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119,
              DOI 10.17487/RFC2119, March 1997,
              <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, September 2007,
              <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, September 2007,
              <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, September 2012,
              <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,
              May 2017, <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, November 2018,
              <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, July 2018,
              <https://www.rfc-editor.org/info/rfc8425>.

11.2.  Informative References

   [RFC4389]  Thaler, D., Talwar, M., and C. Patel, "Neighbor Discovery
              Proxies (ND Proxy)", RFC 4389, DOI 10.17487/RFC4389, April
              2006, <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, February 2011,
              <https://www.rfc-editor.org/info/rfc6105>.






Colitti, et al.            Expires 9 May 2024                  [Page 10]

Internet-Draft                 pio-p-flag                  November 2023


   [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-05, 5 November 2023,
              <https://datatracker.ietf.org/doc/html/draft-ietf-v6ops-
              dhcp-pd-per-device-05>.

   [RFC6275]  Perkins, C., Ed., Johnson, D., and J. Arkko, "Mobility
              Support in IPv6", RFC 6275, DOI 10.17487/RFC6275, July
              2011, <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, April 2013,
              <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, November 2013,
              <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, October 2013,
              <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, February 2017,
              <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, February 2021,
              <https://www.rfc-editor.org/info/rfc8981>.

Acknowledgements

   Thanks to Fernando Gont, Suresh Krishnan, Andrew McGregor, Tomek
   Mrugalski, Timothy Winters for the discussions, the input and all
   contribution.

Authors' Addresses






Colitti, et al.            Expires 9 May 2024                  [Page 11]

Internet-Draft                 pio-p-flag                  November 2023


   Lorenzo Colitti
   Google
   Shibuya 3-21-3,
   Japan
   Email: lorenzo@google.com


   Jen Linkova
   Google
   1 Darling Island Rd
   Pyrmont NSW 2009
   Australia
   Email: furry13@gmail.com, furry@google.com


   Xiao Ma (editor)
   Google
   Shibuya 3-21-3,
   Japan
   Email: xiaom@google.com


   David 'equinox' Lamparter
   NetDEF, Inc.
   San Jose,
   United States of America
   Email: equinox@diac24.net, equinox@opensourcerouting.org
























Colitti, et al.            Expires 9 May 2024                  [Page 12]