<?xml version='1.0' encoding='utf-8'?>

<!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent">

<rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="info"
     docName="draft-ietf-anima-prefix-management-07" number="8992" ipr="trust200902"
     obsoletes="" updates="" submissionType="IETF" xml:lang="en"
     tocInclude="true" symRefs="true" sortRefs="true" version="3" consensus="true">

<!-- xml2rfc v2v3 conversion 2.47.0 -->

  <front>
    <title abbrev="Auto IPv6 Prefix Management">Autonomic IPv6 Edge Prefix
    Management in Large-Scale Networks</title>
    <seriesInfo name="RFC" value="8992"/>
    <author fullname="Sheng Jiang" initials="S." role="editor" surname="Jiang">
      <organization>Huawei Technologies Co., Ltd</organization>
      <address>
        <postal>
          <street>No. 156 Beiqing Road</street>
          <extaddr>Q14, Huawei Campus</extaddr>
          <city>Hai-Dian District, Beijing</city>
          <code>100095</code>
          <country>China</country>
        </postal>
        <email>jiangsheng@huawei.com</email>
      </address>
    </author>

    <author fullname="Zongpeng Du" initials="Z." surname="Du">
      <organization>China Mobile</organization>
      <address>
        <postal>
          <street>32 Xuanwumen West St</street>
          <city>Xicheng District, Beijing</city>
          <code>100053</code>
          <country>China</country>
        </postal>
        <email>duzongpeng@chinamobile.com</email>
      </address>
    </author>

    <author fullname="Brian Carpenter" initials="B." surname="Carpenter">
      <organization abbrev="Univ. of Auckland">University of Auckland</organization>
      <address>
        <postal>
          <extaddr>School of Computer Science</extaddr>
          <street>PB 92019</street>
          <city>Auckland</city>
          <region/>
          <code>1142</code>
          <country>New Zealand</country>
        </postal>
        <email>brian.e.carpenter@gmail.com</email>
      </address>
    </author>

    <author fullname="Qiong Sun" initials="Q." surname="Sun">
      <organization>China Telecom</organization>
      <address>
        <postal>
          <street>118 Xizhimennei St</street>
          <city>Beijing</city>
          <code>100035</code>
          <country>China</country>
        </postal>
        <email>sunqiong@chinatelecom.cn</email>
      </address>
    </author>
    <date month="May" year="2021"/>
    <area>Operations and Management</area>
    <workgroup>ANIMA</workgroup>

    <keyword>Autonomic Networking</keyword>
    <keyword>Prefix Management</keyword>

    <abstract>
      <t>This document defines two autonomic technical objectives for IPv6 prefix
      management at the edge of large-scale ISP networks,
      with an extension to support IPv4 prefixes. An important purpose
      of this document is to use it for validation of the design of various
      components of the Autonomic Networking Infrastructure.</t>
    </abstract>
  </front>
  <middle>
    <section anchor="intro" numbered="true" toc="default">
      <name>Introduction</name>

      <t>The original purpose of this document was to validate the design of the
      Autonomic Networking Infrastructure (ANI) for a realistic use case. It shows
      how the ANI can be applied to IP prefix delegation,
      and it outlines approaches to build a system to do this. A fully
      standardized solution would require more details, so this document
      is informational in nature.</t>
      <t>This document defines two autonomic technical objectives for IPv6 prefix
      management in large-scale networks, with an extension to support IPv4 prefixes.
      The background to Autonomic Networking is described in <xref target="RFC7575" format="default"/>
      and <xref target="RFC7576" format="default"/>. The GeneRic Autonomic Signaling Protocol (GRASP) is
      specified by <xref target="RFC8990"/> and can make use of
      the technical objectives to provide a solution for autonomic
      prefix management. An important purpose
      of the present document is to use it for validation of the design of
      GRASP and other components of the ANI as 
      described in <xref target="RFC8993"/>.</t>
      <t>This document is not a complete functional specification of an
      autonomic prefix management system, and it does not describe all
      detailed aspects of the GRASP objective parameters and Autonomic Service
      Agent (ASA) procedures necessary to build a complete system. Instead, it
      describes the architectural framework utilizing the components of the
      ANI, outlines the different
      deployment options and aspects, and defines GRASP objectives for use in
      building the system. It also provides some basic parameter examples.</t>
      <t>This document is not intended to solve all cases of IPv6 prefix
      management. In fact, it assumes that the network's main infrastructure
      elements already have addresses and prefixes. This document is dedicated
      to how to make IPv6 prefix management at the edges of large-scale
      networks as autonomic as possible. It is specifically written for
      Internet Service Provider (ISP) networks. Although there are similarities between
      ISPs and large enterprise networks, the requirements for the two use
      cases differ. In any case, the scope of the solution is expected
      to be limited, like any Autonomic Network, to a single management
      domain.</t>
      <t>However, the solution is designed in a general way. Its use for a
      broader scope than edge prefixes, including some or all infrastructure
      prefixes, is left for future discussion.</t>
      <t>A complete solution has many aspects that are not discussed here.
      Once prefixes have been assigned to routers, they need to be
      communicated to the routing system as they are brought into use. Similarly,
      when prefixes are released, they need to be removed from the routing system.
      Different operators may have different policies regarding prefix lifetimes,
      and they may prefer to have centralized or distributed pools of spare
      prefixes. In an Autonomic Network, these are properties decided upon by the
      design of the relevant ASAs. The GRASP objectives are simply building
      blocks.
      </t>
      <t>A particular risk of distributed prefix allocation in large networks
      is that over time, it might lead to fragmentation of the address space
      and an undesirable increase in the size of the interior routing protocol tables.
 The extent of this risk depends on the algorithms and policies used by the ASAs.
      Mitigating this risk might even become an autonomic function in itself.</t>
    </section>

    <section anchor="terms" numbered="true" toc="default">
      <name>Terminology</name>
       <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>",
       "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>",
       "<bcp14>SHALL NOT</bcp14>", "<bcp14>SHOULD</bcp14>",
       "<bcp14>SHOULD NOT</bcp14>",
       "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
       "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document
       are to be interpreted as described in BCP&nbsp;14
       <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only
       when, they appear in all capitals, as shown here.</t>
  
<t>This document uses terminology defined in <xref target="RFC7575"/>.</t>
    </section>

    <section anchor="problem" numbered="true" toc="default">
      <name>Problem Statement</name>
      <t>The Autonomic Networking use case considered here is autonomic IPv6
      prefix management at the edge of large-scale ISP networks.</t>
      <t>Although DHCPv6-PD (DHCPv6 Prefix Delegation) <xref target="RFC8415" format="default"/> supports
      automated delegation of IPv6 prefixes from one router to another, prefix
      management still largely depends on human planning. In other words,
      there is no basic information or policy to support autonomic decisions
      on the prefix length that each router should request or be delegated,
      according to its role in the network. Roles could be defined separately
      for individual devices or
      could be generic (edge router, interior router, etc.). Furthermore, IPv6
      prefix management by humans tends to be rigid and static after initial
      planning.</t>
      <t>The problem to be solved by Autonomic Networking is how to
      dynamically manage IPv6 address space in large-scale networks, so that
      IPv6 addresses can be used efficiently. Here, we limit the problem to
      assignment of prefixes at the edge of the network, close to access
      routers that support individual fixed-line subscribers, mobile
      customers, and corporate customers. We assume that the core
      infrastructure of the network has already been established with
      appropriately assigned prefixes. The Autonomic Networking approach discussed in this
      document is based on the assumption that there is a generic discovery
      and negotiation protocol that enables direct negotiation between
      intelligent IP routers. GRASP <xref target="RFC8990"/> is
      intended to be such a protocol.</t>
      <section anchor="experience" numbered="true" toc="default">
        <name>Intended User and Administrator Experience</name>
        <t>The intended experience is, for the administrators of a
        large-scale network, that the management of IPv6 address space at the
        edge of the network can be run with minimum effort, as devices at the
        edge are added and removed and as customers of all kinds join and
        leave the network. In the ideal scenario, the administrators only
        have to specify a single IPv6 prefix for the whole network and the
        initial prefix length for each device role. As far as users are
        concerned, IPv6 prefix assignment would occur exactly as it does in
        any other network.</t>
        <t>The actual prefix usage needs to be logged for potential offline
        management operations, including audit and security incident
        tracing.</t>
      </section>
      <section anchor="params" numbered="true" toc="default">
        <name>Analysis of Parameters and Information Involved</name>
        <t>For specific purposes of address management, each edge device will implement
        several parameters. (Some of them can be preconfigured
        before they are connected.) They include the following:</t>
        <ul spacing="normal">
          <li>Identity, authentication, and authorization of this device. This
            is expected to use the Autonomic Networking secure bootstrap
            process <xref target="RFC8995"/>,
            following which the device could safely take part in autonomic
            operations.</li>
          <li>Role of this device. Some example roles are discussed in <xref target="exparam" format="default"/>.</li>
          <li>An IPv6 prefix length for this device.</li>
          <li>An IPv6 prefix that is assigned to this device and its
            downstream devices.</li>
        </ul>
        <t>The network as a whole will implement the following parameters:</t>
        <ul spacing="normal">
          <li>Identity of a trust anchor, which is a certification authority
            (CA) maintained by the network administrators, used during the
            secure bootstrap process.</li>
          <li>Total IPv6 address space available for edge devices. It is a pool
            of one or several IPv6 prefixes.</li>
          <li>The initial prefix length for each device role.</li>
        </ul>
        <section anchor="device" numbered="true" toc="default">
          <name>Parameters Each Device Can Define for Itself</name>
          <t>This section identifies those of the above parameters that do not
          need external information in order for the devices concerned to set
          them to a reasonable default value after bootstrap or after a network
          disruption. They are as follows:</t>
          <ul spacing="normal">
            <li>Default role of this device.</li>
            <li>Default IPv6 prefix length for this device.</li>
            <li>Cryptographic identity of this device, as needed for secure bootstrapping
              <xref target="RFC8995"/>.</li>
          </ul>
          <t>The device may be shipped from the manufacturer with a 
          preconfigured role and default prefix length, which could be
          modified by an autonomic mechanism. Its cryptographic identity will be installed
          by its manufacturer.</t>
        </section>

        <section anchor="opparams" numbered="true" toc="default">
          <name>Information Needed from Network Operations</name>
          <t>This section identifies those parameters that might need
          operational input in order for the devices concerned to set them to
          a non-default value.</t>
          <ul spacing="normal">
            <li>Non-default value for the IPv6 prefix length for this device.
              This needs to be decided based on the role of this device.</li>
            <li>The initial prefix length for each device role.</li>
            <li>Whether to allow the device to request more address
              space.</li>
            <li>The policy regarding when to request more address space -- for example,
              if the address usage reaches a certain limit or percentage.</li>
          </ul>
        </section>
        <section anchor="compare" numbered="true" toc="default">
          <name>Comparison with Current Solutions</name>
          <t>This section briefly compares the above use case with current
          solutions. Currently, the address management is still largely
          dependent on human planning. It is rigid and static after initial
          planning. Address requests will fail if the configured address space
          is used up.</t>
          <t>Some autonomic and dynamic address management functions may be
          achievable by extending the existing protocols -- for example,
          extending DHCPv6-PD <xref target="RFC8415" format="default"/>
          to request IPv6 prefixes according to the device
          role. However, defining uniform device roles may not be a practical 
          task, as some functions cannot be configured on the basis of role using 
          existing prefix delegation protocols.</t>
          <t>Using a generic autonomic discovery and negotiation protocol
          instead of specific solutions has the advantage that additional
          parameters can be included in the autonomic solution without
          creating new mechanisms. This is the principal argument for a
          generic approach.</t>
        </section>
      </section>
      <section anchor="interact" numbered="true" toc="default">
        <name>Interaction with Other Devices</name>
        <section anchor="peers" numbered="true" toc="default">
          <name>Information Needed from Other Devices</name>
          <t>This section identifies those of the above parameters that need
          external information from neighbor devices (including the upstream
          devices). In many cases, two-way dialogue with neighbor devices is
          needed to set or optimize them.</t>
          <ul spacing="normal">
            <li>Information regarding the identity of a trust anchor is needed.</li>
            <li>The device will need to discover another device from which it can
              acquire IPv6 address space.</li>
            <li>Information regarding the initial prefix length for the role of each device is needed, particularly
              for its own downstream devices.</li>
            <li>The default value of the IPv6 prefix length may be overridden
              by a non-default value.</li>
            <li>The device will need to request and acquire one or more IPv6 prefixes that
              can be assigned to this device and its downstream devices.</li>
            <li>The device may respond to prefix delegation requests from its
              downstream devices.</li>
            <li>The device may require the assignment of more IPv6 address
              space if it used up its assigned IPv6 address space.</li>
          </ul>
        </section>

        <section anchor="monitor" numbered="true" toc="default">
          <name>Monitoring, Diagnostics, and Reporting</name>
          <t>This section discusses what role devices should play in
          monitoring, fault diagnosis, and reporting.</t>
          <ul spacing="normal">
            <li>The actual address assignments need to be logged for
              potential offline management operations.</li>
            <li>In general, the usage situation regarding address space should be
              reported to the network administrators in an abstract way -- for
              example, statistics or a visualized report.</li>
            <li>A forecast of address exhaustion should be reported.</li>
          </ul>
        </section>

      </section>
    </section>
    <section numbered="true" toc="default">
      <name>Autonomic Edge Prefix Management Solution</name>
      <t>This section introduces the building blocks for
      an autonomic edge prefix management solution.
      As noted in <xref target="intro" format="default"/>, this is not a complete description of
      a solution, which will depend on the detailed design of the relevant
      Autonomic Service Agents (ASAs).
      It uses the generic discovery and negotiation protocol defined
      by <xref target="RFC8990"/>. The relevant GRASP objectives
      are defined in <xref target="prefixNegoOptions" format="default"/>.</t>
      <t>The procedures described below are carried out by an ASA in each device that participates in the solution. We
      will refer to this as the PrefixManager ASA.</t>
      <section anchor="reqbehave" numbered="true" toc="default">
        <name>Behavior of a Device Requesting a Prefix</name>
        <t>If the device containing a PrefixManager ASA has used up its
        address pool, it can request more space according to its requirements.
        It should decide the length of the requested prefix and request it via 
        the mechanism described in <xref target="prefixManageParams" format="default"/>. Note that
        although the device's role may define certain default allocation lengths,
        those defaults might be changed dynamically, and
        the device might request more, or less, address space due to
        some local operational heuristic.</t>
        <t>A PrefixManager ASA that needs additional address space should
        firstly discover peers that may be able to provide extra address
        space. The ASA should send out a GRASP Discovery message that contains
        a PrefixManager Objective option (see <xref target="RFC8650" section="2" relative="figure-1"/> and <xref target="prefixObjOption" format="default"/>) in
        order to discover peers also supporting that option. Then, it should
        choose one such peer, most likely the first to respond.</t>
        <t>If the GRASP Discovery Response message carries a Divert option
        pointing to an off-link PrefixManager ASA, the requesting ASA may
        initiate negotiation with that ASA-diverted device to find out whether
        it can provide the requested length of the prefix.</t>
        <t>In any case, the requesting ASA will act as a GRASP negotiation
        initiator by sending a GRASP Request message with a PrefixManager
        Objective option. The ASA indicates in this option the length of
        the requested prefix.
        This starts a GRASP negotiation process.</t>
        <t>During the subsequent negotiation, the ASA will decide at each step
        whether to accept the offered prefix. That decision, and the decision
        to end the negotiation, are implementation choices.</t>
        <t>The ASA could alternatively initiate GRASP discovery in rapid mode 
        with an embedded negotiation request, if it is implemented.</t>
      </section>
      <section numbered="true" toc="default">
        <name>Behavior of a Device Providing a Prefix</name>
        <t>At least one device on the network must be configured with
        the initial pool of available prefixes mentioned in <xref target="params" format="default"/>. 
        Apart from that requirement, any device may act as a provider of prefixes.</t>
        <t>A device that receives a Discovery message with a PrefixManager
        Objective option should respond with a GRASP Response message if it
        contains a PrefixManager ASA. Further details of the discovery
        process are described in <xref target="RFC8990"/>. When
        this ASA receives a subsequent Request message, it should conduct a
        GRASP negotiation sequence, using Negotiate, Confirm Waiting, and
        Negotiation End messages as appropriate. The Negotiate messages
        carry a PrefixManager Objective option, 
        which will indicate the prefix and its length offered to the requesting ASA. As
        described in <xref target="RFC8990"/>, negotiation will
        continue until either end stops it with a Negotiation End message.
        If the negotiation succeeds, the ASA that provides the prefix will remove the
        negotiated prefix from its pool, and the requesting ASA will add it.
        If the negotiation fails, the party sending the Negotiation End
        message may include an error code string.</t>
        <t>During the negotiation, the ASA will decide at each step how large
        a prefix to offer. That decision, and the decision to end the negotiation,
        are implementation choices.</t>
        <t>The ASA could alternatively negotiate in response to GRASP discovery in  rapid mode, if it is implemented.</t>
        <t>This specification is independent of whether the PrefixManager ASAs
        are all embedded in routers, but that would be a rather natural
        scenario. In a hierarchical network topology, a given router typically
        provides prefixes for routers below it in the hierarchy, and it is
        also likely to contain the first PrefixManager ASA discovered by those downstream
        routers. However, the GRASP discovery model, including its redirection
        feature, means that this is not an exclusive scenario, and a
        downstream PrefixManager ASA could negotiate a new prefix with a
        device other than its upstream router.</t>
        <t>A resource shortage may cause the gateway router to request more
        resources in turn from its own upstream device. This would be another
        independent GRASP discovery and negotiation process. During the
        processing time, the gateway router should send a Confirm Waiting
        message to the initial requesting router, to extend its timeout. When
        the new resource becomes available, the gateway router responds with a
        GRASP Negotiate message with a prefix length matching the request.</t>
        <t>The algorithm used to choose which prefixes to assign on the devices that
        provide prefixes is an implementation choice.</t>
      </section>
      <section numbered="true" toc="default">
        <name>Behavior after Successful Negotiation</name>
        <t>Upon receiving a GRASP Negotiation End message that indicates
        that an acceptable prefix length is available, the requesting device
        may use the negotiated prefix without further messages.</t>
        <t>There are use cases where the ANI/GRASP-based prefix
        management approach can work together with DHCPv6-PD <xref target="RFC8415" format="default"/>
        as a complement. For example, the ANI/GRASP-based
        method can be used intra-domain, while the DHCPv6-PD method works inter-domain
        (i.e., across an administrative boundary). Also, ANI/GRASP can be used
        inside the domain, and DHCP/DHCPv6-PD can be used on the edge of the
        domain to clients (non-ANI devices). Another similar use case would be
        ANI/GRASP inside the domain, with
        RADIUS <xref target="RFC2865" format="default"/> providing prefixes to client devices.</t>
      </section>
      <section numbered="true" toc="default">
        <name>Prefix Logging</name>
        <t>Within the autonomic prefix management system, all prefix assignments are
        done by devices without human intervention. It may be required
        that all prefix assignment history be recorded -- for example, to detect
        or trace lost prefixes after outages or to meet legal requirements.
        However, the logging and reporting process is out of scope for this
        document.</t>
      </section>
    </section>
    <section anchor="prefixNegoOptions" numbered="true" toc="default">
      <name>Autonomic Prefix Management Objectives</name>
      <t>This section defines the GRASP technical objective options that are used to support
      autonomic prefix management.</t>
      <section anchor="prefixObjOption" numbered="true" toc="default">
        <name>Edge Prefix Objective Option</name>
        <t>The PrefixManager Objective option is a GRASP Objective option
        conforming to the GRASP specification <xref target="RFC8990"/>. Its name is
        "PrefixManager" (see <xref target="iana" format="default"/>), and it carries the following
        data items as its value: the prefix length and
        the actual prefix bits. Since GRASP is based on CBOR (Concise Binary Object Representation)
        <xref target="RFC8949" format="default"/>, the format of the PrefixManager Objective
        option is described in the Concise Data Definition Language (CDDL)
        <xref target="RFC8610" format="default"/> as follows:</t>

<sourcecode type="cddl"><![CDATA[
  objective = ["PrefixManager", objective-flags, loop-count,
               [length, ?prefix]]
           
  loop-count = 0..255         ; as in the GRASP specification
  objective-flags /=          ; as in the GRASP specification
  length = 0..128             ; requested or offered prefix length
  prefix = bytes .size 16     ; offered prefix in binary format
]]></sourcecode>

        <t>The use of the "dry run" mode of GRASP is <bcp14>NOT RECOMMENDED</bcp14> for this objective, because it
        would require both ASAs to store state information about the corresponding negotiation, to no real
        benefit -- the requesting ASA cannot base any decisions on the result of a successful
        dry-run negotiation.</t>
      </section>
      <section anchor="ipv4" numbered="true" toc="default">
        <name>IPv4 Extension</name>
        <t>This section presents an extended version of the
      PrefixManager objective that supports IPv4 by adding an extra flag:
        </t>
<sourcecode type="cddl"><![CDATA[
  objective = ["PrefixManager", objective-flags, loop-count, prefval]
            
  loop-count = 0..255         ; as in the GRASP specification
  objective-flags /=          ; as in the GRASP specification
  
  prefval /= pref6val
  pref6val = [version6, length, ?prefix]
  version6 = 6
  length = 0..128             ; requested or offered prefix length
  prefix = bytes .size 16     ; offered prefix in binary format
  
  prefval /= pref4val
  pref4val = [version4, length4, ?prefix4]
  version4 = 4
  length4 = 0..32             ; requested or offered prefix length
  prefix4 = bytes .size 4     ; offered prefix in binary format
]]></sourcecode>

        <t>Prefix and address management for IPv4 is considerably more difficult
        than for IPv6, due to the prevalence of NAT, ambiguous addresses <xref target="RFC1918" format="default"/>,
        and address sharing <xref target="RFC6346" format="default"/>. These complexities might require further extending
        the objective with additional fields that are not defined by this document.</t>
      </section>
    </section>
    <section anchor="prefixManageParams" numbered="true" toc="default">
      <name>Prefix Management Parameters</name>
      <t>An implementation of a prefix manager <bcp14>MUST</bcp14> include default settings
      of all necessary parameters. However, within a single administrative
      domain, the network operator <bcp14>MAY</bcp14> change default parameters for all
      devices with a certain role. Thus, it would be possible to apply an
      intended policy for every device in a simple way, without traditional
      configuration files. As noted in <xref target="reqbehave" format="default"/>, individual
      autonomic devices may also change their own behavior dynamically.</t>
      <t>For example, the network operator could change the default prefix
      length for each type of role. A prefix management parameters objective,
      which contains mapping information of device roles and their default
      prefix lengths, <bcp14>MAY</bcp14> be flooded in the network, through the Autonomic
      Control Plane (ACP) <xref target="RFC8994"/>.
      The objective is defined in CDDL as follows:</t>
<sourcecode type="cddl"><![CDATA[
  objective = ["PrefixManager.Params", objective-flags, any]
           
  loop-count = 0..255         ; as in the GRASP specification
  objective-flags /=          ; as in the GRASP specification
]]></sourcecode>

      <t>The "any" object would be the relevant parameter definitions (such as
      the example below) transmitted as a CBOR object in an appropriate
      format.</t>
      <t>This could be flooded to all nodes, and any PrefixManager ASA that
      did not receive it for some reason could obtain a copy using GRASP
      unicast synchronization. Upon receiving the prefix management
      parameters, every device can decide its default prefix length by
      matching its own role.</t>
      <section anchor="exparam" numbered="true" toc="default">
        <name>Example of Prefix Management Parameters</name>
        <t>The parameters comprise mapping information of device roles and
        their default prefix lengths in an autonomic domain. For example,
        suppose an IPRAN (IP Radio Access Network) operator wants to configure
        the prefix length of a Radio Network Controller Site Gateway (RSG) as 34, the prefix length
        of an Aggregation Site Gateway (ASG) as 44, and the prefix length of a Cell
        Site Gateway (CSG) as 56. This could be described in the value of the
        PrefixManager.Params objective as:</t>
<sourcecode type="json"><![CDATA[
[
   [["role", "RSG"],["prefix_length", 34]],
   [["role", "ASG"],["prefix_length", 44]],
   [["role", "CSG"],["prefix_length", 56]]
]
]]></sourcecode>

        <t>This example is expressed in JSON <xref target="RFC8259"  format="default"/>, which is easy to represent in CBOR.</t>
        <t>An alternative would be to express the parameters in YANG <xref target="RFC7950" format="default"/> using the YANG-to-CBOR mapping <xref target="CORE-YANG-CBOR"/>.</t>
        <t>For clarity, the background of the example is introduced below
        and can also be regarded as a use case for the mechanism defined in
        this document.</t>
        <t>An IPRAN is used for mobile backhaul, including radio
        stations, RNCs (Radio Network Controllers) (in 3G) or the packet core (in LTE), and the IP network
        between them, as shown in <xref target="IPRAN-topology"/>. The eNB (Evolved Node B) entities, the RNC, the SGW (Serving Gateway), and the MME (Mobility
        Management Entity) are mobile network entities defined in 3GPP. The
        CSGs, ASGs, and RSGs are entities defined in the IPRAN solution.</t>
        <t>The IPRAN topology shown in <xref target="IPRAN-topology"/>
        includes Ring1, which is the
        circle following ASG1-&gt;RSG1-&gt;RSG2-&gt;ASG2-&gt;ASG1; Ring2,
        following CSG1-&gt;ASG1-&gt;ASG2-&gt;CSG2-&gt;CSG1; and Ring3,
        following CSG3-&gt;ASG1-&gt;ASG2-&gt;CSG3. In a real deployment of an
        IPRAN, there may be more stations, rings, and routers in the topology,
        and normally the network is highly dependent on human design and
        configuration, which is neither flexible nor cost-effective.</t>
        <figure anchor="IPRAN-topology"><name>IPRAN Topology Example</name>
        <artwork name="" type="" align="left" alt=""><![CDATA[
+------+   +------+          
| eNB1 |---| CSG1 |\
+------+   +------+  \   +-------+       +------+           +-------+
               |       \ |  ASG1 |-------| RSG1 |-----------|SGW/MME|
               |  Ring2  +-------+       +------+ \        /+-------+
+------+   +------+     /     |              |      \    /         
| eNB2 |---| CSG2 | \  /      |      Ring1   |        \/
+------+   +------+   \  Ring3|              |        /\      
                     / \      |              |      /   \  
+------+   +------+ /    \ +-------+      +------+/       \+-------+
| eNB3 |---| CSG3 |--------|  ASG2 |------| RSG2 |---------|  RNC  |
+------+   +------+        +-------+      +------+         +-------+
]]></artwork>
        </figure>
        <t>If ANI/GRASP is supported in the IPRAN, the network nodes
        should be able to negotiate with each other and make some autonomic
        decisions according to their own status and the information
        collected from the network. The prefix management parameters should be
        part of the information they communicate.</t>
        <t>The routers should know the role of their neighbors, the default
        prefix length for each type of role, etc. An ASG should be able to
        request prefixes from an RSG, and a CSG should be able to request prefixes from
        an ASG. In each request, the ASG/CSG should indicate the required prefix length, or its role,
        which implies what length it needs by default.</t>
      </section>
    </section>
    <section anchor="security" numbered="true" toc="default">
      <name>Security Considerations</name>
      <t>Relevant security issues are discussed in <xref target="RFC8990"/>. The preferred security model is that
      devices are trusted following the secure bootstrap procedure <xref target="RFC8995"/> and that a secure
      Autonomic Control Plane (ACP) <xref target="RFC8994"/> is in place.</t>
      <t>It is <bcp14>RECOMMENDED</bcp14> that DHCPv6-PD, if used, should be implemented using
      DHCPv6 authentication or Secure DHCPv6.</t>
    </section>

    <section anchor="iana" numbered="true" toc="default">
      <name>IANA Considerations</name>
      <t>This document defines two new GRASP Objective option names:
      "PrefixManager" and "PrefixManager.Params". The IANA has added
      these to the "GRASP Objective Names" registry defined by <xref target="RFC8990"/>.</t>
    </section>
  </middle>
  <back>

    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>

<!-- draft-ietf-anima-grasp (RFC 8990) -->
<reference anchor='RFC8990' target="https://www.rfc-editor.org/info/rfc8990">
<front>
<title>GeneRic Autonomic Signaling Protocol (GRASP)</title>
<author initials='C' surname='Bormann' fullname='Carsten Bormann'>
    <organization />
</author>
<author initials='B' surname='Carpenter' fullname='Brian Carpenter' role="editor">
    <organization />
</author>
<author initials='B' surname='Liu' fullname='Bing Liu' role="editor">
    <organization />
</author>
<date month='May' year='2021'/>
</front>
<seriesInfo name="RFC" value="8990"/>
<seriesInfo name="DOI" value="10.17487/RFC8990"/>
</reference>

<!-- draft-ietf-cbor-cddl (Published; RFC 8610) -->
        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8610.xml"/>

<!-- draft-ietf-anima-bootstrapping-keyinfra (RFC 8995) -->
<reference anchor='RFC8995' target="https://www.rfc-editor.org/info/rfc8995">
<front>
<title>Bootstrapping Remote Secure Key Infrastructure (BRSKI)</title>
<author initials='M' surname='Pritikin' fullname='Max Pritikin'>
    <organization />
</author>
<author initials='M' surname='Richardson' fullname='Michael Richardson'>
    <organization />
</author>
<author initials='T.' surname='Eckert' fullname='Toerless Eckert'>
    <organization />
</author>
<author initials='M.' surname='Behringer' fullname='Michael Behringer'>
    <organization />
</author>
<author initials='K.' surname='Watsen' fullname='Kent Watsen'>
    <organization />
</author>
<date month='May' year='2021'/>
</front>
<seriesInfo name="RFC" value="8995"/>
<seriesInfo name="DOI" value="10.17487/RFC8995"/>
</reference>

<!-- draft-ietf-anima-autonomic-control-plane (RFC 8994) -->
<reference anchor='RFC8994' target="https://www.rfc-editor.org/info/rfc8994">
<front>
<title>An Autonomic Control Plane (ACP)</title>
<author initials='T' surname='Eckert' fullname='Toerless Eckert' role="editor">
    <organization />
</author>
<author initials='M' surname='Behringer' fullname='Michael Behringer' role="editor">
    <organization />
</author>
<author initials='S' surname='Bjarnason' fullname='Steinthor Bjarnason'>
    <organization />
</author>
<date month='May' year='2021'/>
</front>
<seriesInfo name="RFC" value="8994"/>
<seriesInfo name="DOI" value="10.17487/RFC8994"/>
</reference>

        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"/>
        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml"/>
        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8259.xml"/>
        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7950.xml"/>
        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8415.xml"/>
      </references>

      <references>
        <name>Informative References</name>
        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8650.xml"/>
        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.1918.xml"/>
        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6346.xml"/>
        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2865.xml"/>

<!-- draft-ietf-core-yang-cbor (I-D Exists) -->
<!-- Have to do long way; two editors -->
<reference anchor='CORE-YANG-CBOR'>
<front>
<title>CBOR Encoding of Data Modeled with YANG</title>
<author initials='M' surname='Veillette' fullname='Michel Veillette' role="editor">
    <organization />
</author>
<author initials='I' surname='Petrov' fullname='Ivaylo Petrov' role="editor">
    <organization />
</author>
<author initials='A' surname='Pelov' fullname='Alexander Pelov'>
    <organization />
</author>
<date month='January' day='24' year='2021' />
</front>
<seriesInfo name='Internet-Draft' value='draft-ietf-core-yang-cbor-15'/>
</reference>

        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7575.xml"/>
        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7576.xml"/>
        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.3046.xml"/>
        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6221.xml"/>
        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8949.xml"/>

<!-- draft-ietf-anima-reference-model (RFC 8993) -->
<reference anchor='RFC8993' target="https://www.rfc-editor.org/info/rfc8993">
<front>
<title>A Reference Model for Autonomic Networking</title>
<author initials='M' surname='Behringer' fullname='Michael Behringer' role="editor">
    <organization />
</author>
<author initials='B' surname='Carpenter' fullname='Brian Carpenter'>
    <organization />
</author>
<author initials='T' surname='Eckert' fullname='Toerless Eckert'>
    <organization />
</author>
<author initials='L' surname='Ciavaglia' fullname='Laurent Ciavaglia'>
    <organization />
</author>
<author initials='J' surname='Nobre' fullname='Jeferson Nobre'>
    <organization />
</author>
<date month='May' year='2021'/>
</front>
<seriesInfo name="RFC" value="8993"/>
<seriesInfo name="DOI" value="10.17487/RFC8993"/>
</reference>

<!-- draft-liu-dhc-dhcp-yang-model (Expired) -->
<!-- Had to do long way; one editor -->
<reference anchor="DHCP-YANG-MODEL">
<front>
<title>Yang Data Model for DHCP Protocol</title>
<author initials='B' surname='Liu' fullname='Bing Liu' role="editor">
    <organization />
</author>
<author initials='K' surname='Lou' fullname='Kunkun Lou'>
    <organization />
</author>
<author initials='C' surname='Chen' fullname='Chin Chen'>
    <organization />
</author>
<date month='October' day='12' year='2018' />
</front>
<seriesInfo name='Internet-Draft' value='draft-liu-dhc-dhcp-yang-model-07'/>
</reference>

      </references>
    </references>
    <section numbered="true" toc="default">
      <name>Deployment Overview</name>
      <t>This appendix includes logical deployment models and explanations of
      the target deployment models. Its purpose is to help in understanding
      the mechanism described in this document.</t>
      <t>This appendix includes two subsections: 
      <xref target="app-a1"/> for the two most common
      DHCP deployment models and <xref target="app-a2"/> for the PD deployment model described in this document. It
      should be noted that these are just examples, and there are many more
      deployment models.</t>
      <section anchor="app-a1" numbered="true" toc="default">
        <name>Address and Prefix Management with DHCP</name>
        <t>Edge DHCP server deployment requires every edge router connecting
        to a Customer Premises Equipment (CPE) device to be a DHCP server assigning IPv4/IPv6 addresses to CPEs -- and,
        optionally, IPv6 prefixes via DHCPv6-PD for IPv6-capable CPEs that are
        routers and have LANs behind them.</t>
        <figure anchor="fig2"><name>DHCP Deployment Model without a Central DHCP Server</name>
        <artwork name="" type="" align="left" alt=""><![CDATA[
                                             edge
        dynamic, "NETCONF/YANG"            interfaces
         <---------------> +-------------+
+------+    <- telemetry   | edge router/|-+  -----  +-----+
|config|  .... domain ...  | DHCP server | |  ...    | CPE |+  LANs
|server|                   +-------------+ |  -----  +-----+| (---| )
+------+                    +--------------+  DHCP/   +-----+
                                             DHCPv6-PD
]]></artwork>
        </figure>

        <t>This requires various coordination functions via some backend
        system (depicted as the "config server" in <xref target="fig2"/>): the address prefixes on the edge
        interfaces should be slightly larger than required for the number of
        CPEs connected so that the overall address space is best used.</t>
        <t>The config server needs to provision edge interface address
        prefixes and DHCP parameters for every edge router. If prefixes that are too fine-grained are used, this will result in large routing tables
        across the domain shown in the figure. If prefixes that are too coarse-grained are used, address
        space is wasted. (This is less of a concern for IPv6, but if the
        model includes IPv4, it is a very serious concern.)</t>
        <t>There is no standard that describes algorithms for how configuration servers
        would best perform this ongoing dynamic provisioning to optimize
        routing table size and address space utilization.</t>
        <t>There are currently no complete YANG data models that a config server
        could use to perform these actions (including telemetry of assigned
        addresses from such distributed DHCP servers). For example, a YANG data model for controlling DHCP server operations is
        still being developed <xref target="DHCP-YANG-MODEL"/>.</t>
        <t>Due to these and other problems related to the above model, the more common
        DHCP deployment model is as follows:</t>
        <figure><name>DHCP Deployment Model with a Central DHCP Server</name>
        <artwork name="" type="" align="left" alt=""><![CDATA[
+------+                                      edge
|config|    initial, "CLI"                   interfaces
|server| ----------------> +-------------+
+------+                   | edge router/|-+  -----  +-----+
   |     .... domain ...   | DHCP relay  | |  ...    | CPE |+  LANs
+------+                   +-------------+ |  -----  +-----+| (---| )
|DHCP  |                    +--------------+  DHCP/   +-----+
|server|                                     DHCPv6-PD
+------+
]]></artwork>
        </figure>
        <t>Dynamic provisioning changes to edge routers are avoided by using a
        central DHCP server and reducing the edge router from DHCP server to
        DHCP relay. The "configuration" on the edge routers is static. The
        DHCP relay function inserts an "edge interface" and/or
        subscriber-identifying options into DHCP requests from CPEs (e.g., <xref target="RFC3046" format="default"/> <xref target="RFC6221" format="default"/>), and the DHCP server has
        complete policies for address assignments and prefixes usable on
        every edge router / interface / subscriber group. When the DHCP relay sees
        the DHCP reply, it inserts static routes for the assigned
        address / address prefix into the routing table of the edge router; these routes
        are then to be distributed by the IGP (or BGP) inside the domain to
        make the CPE and LANs reachable across the domain shown in the figure.</t>
        <t>There is no comprehensive standardization of these solutions. For example, <xref target="RFC8415" sectionFormat="comma" section="19.1.3"/> simply
        refers to "a [non-defined] protocol or other out-of-band communication to
        configure routing information for delegated prefixes on any router
        through which the client may forward traffic."</t>
      </section>
      <section anchor="app-a2" numbered="true" toc="default">
        <name>Prefix Management with ANI/GRASP</name>
        <t>Using the ANI and prefix management ASAs (PM-ASAs) using GRASP, the deployment
model is intended to look as follows:</t>
        <figure anchor="fig4"><name>Deployment Model Using ANI/GRASP</name>
        <artwork name="" type="" align="left" alt=""><![CDATA[
|<............ ANI domain / ACP............>| (...) ........-> 

                                   Roles
                                     |
                                     v   "Edge routers"
GRASP parameter               +----------+
 Network-wide                 |  PM-ASA  | downstream
parameters/policies           |  (DHCP   | interfaces
     |                        |functions)| ------
     v  "central device"      +----------+
+------+                            ^             +--------+
|PM-ASA|      <............GRASP ....      ....   |  CPE   |-+ (LANs)
+------+             .              v             |(PM-ASA)| |  ---|  
     .           +........+   +----------+        +--------+ | 
+...........+    . PM-ASA .   |  PM-ASA  | ------  +---------+
.DHCP server.    +........+   |  (DHCP   | SLAAC/
+...........+  "intermediate  |functions)| DHCP/DHCP-PD       
                  router"     +----------+
]]></artwork>
        </figure>
        <t>The network runs an ANI domain with an ACP <xref target="RFC8994"/> between some central
        device (e.g., a router or an ANI-enabled management device) and the edge
        routers. ANI/ACP provides a secure, zero-touch communication channel
        between the devices and enables the use of GRASP <xref target="RFC8990"> </xref> not only for peer-to-peer communication 
        but also for distribution/flooding.</t>
        <t>The central devices and edge routers run software 
        in the form of ASAs to support this document's autonomic IPv6 edge prefix management. PM-ASAs as discussed below
        together comprise the Autonomic Prefix Management Function.</t>
        <t>Edge routers can have different roles based on the type and number
        of CPEs attaching to them. Each edge router could be an RSG, ASG, or CSG
        in mobile aggregation networks (see <xref target="exparam"/>). Mechanisms outside
        the scope of this document make routers aware of their roles.</t>
        <t>Some considerations related to the deployment model are 
        as follows.</t>
        <ol spacing="normal" type="1">
        <li><t>In a minimum prefix management solution, the central device uses
        the PrefixManager.Params GRASP objective introduced in this document
        to disseminate network-wide, per-role parameters to edge routers. The
        PM-ASA uses the parameters that apply to its own role to locally
        configure preexisting addressing functions. Because the PM-ASA does
        not manage the dynamic assignment of actual IPv6 address prefixes in
        this case, the following options can be considered:</t>
        <ol spacing="normal" type="1.%c">
        <li>The edge router connects via downstream interfaces to each (host)
        CPE that requires an address. The PM-ASA sets up for each such
        interface a DHCP requesting router (according to <xref target="RFC8415" format="default"/>)
        to request an IPv6 prefix for the interface. The
        router's address on the downstream interface can be another parameter
        from the GRASP objective. The CPEs assign addresses in the prefix via
        Router Advertisements (RAs), or the PM&nbhy;ASA manages a local DHCPv6 server to
        assign addresses to the CPEs. A central DHCP server acting as the DHCP
        delegating router (according to <xref target="RFC8415" format="default"/>) is required.
        Its address can be another parameter from the GRASP objective.</li>
        <li>The edge router also connects via downstream interfaces to
        (customer managed) CPEs that are routers and act as DHCPv6 requesting
        routers. The need to support this could be derived from role or
        GRASP parameters, and the PM&nbhy;ASA sets up a DHCP relay function to pass
        on requests to the central DHCP server as in point 1.a.</li>
        </ol>
</li>
        <li><t>In a solution without a central DHCP server, the PM-ASA on the
        edge routers not only learns parameters from PrefixManager.Params
        but also utilizes GRASP to request/negotiate actual IPv6 prefix
        delegation via the GRASP PrefixManager objective, as described in more
        detail below. In the simplest case, these prefixes are delegated
        via this GRASP objective from the PM-ASA in the central device.
        This device must be provisioned initially with a large pool of
        prefixes. The delegated
        prefixes are then used by the PM-ASA on the edge routers to configure prefixes on their downstream interfaces to assign
        addresses via RA/SLAAC to host CPEs. The PM-ASA may also start local
        DHCP servers (as in point 1.a) to assign addresses via DHCP to the CPEs from the
        prefixes it received. This includes both host CPEs requesting IPv6
        addresses and router CPEs that request IPv6 prefixes. The
        PM-ASA needs to manage the address pool(s) it has requested via GRASP
        and allocate sub-address pools to interfaces and the local DHCP
        servers it starts. It needs to monitor the address utilization and
        accordingly request more address prefixes if its existing prefixes are
        exhausted, or return address prefixes when they are unneeded.</t>
        <t>This solution is quite similar to the previous IPv6 DHCP
        deployment model without a central DHCP server, and ANI/ACP/GRASP and
        the PM-ASA do provide the automation to make this approach work more
        easily than is possible today.</t></li>
        <li>The address pools from which prefixes are allocated do not all
        need to be taken from one central location. An edge-router PM&nbhy;ASA
        that received a big (short) prefix from a central PM-ASA could offer
        smaller sub-prefixes to a neighboring edge-router PM&nbhy;ASA. GRASP could be
        used in such a way that the PM-ASA would find and select the objective
        from the closest neighboring PM&nbhy;ASA, therefore allowing aggregation to be maximized: a PM&nbhy;ASA would only request further smaller 
        prefixes when it exhausts its own pool (from the central location) and
        cannot get further large prefixes from that central location anymore.
        Because the overflow prefixes taken from a topologically nearby PM&nbhy;ASA,
        the number of longer prefixes that have to be injected into the
        routing tables is limited and the topological proximity increases the
        chances that aggregation of prefixes in the IGP can most likely limit
        the geography in which the longer prefixes need to be routed.</li>
        <li>Instead of peer-to-peer optimization of prefix delegation, a
        hierarchy of PM-ASAs can be built (indicated in <xref target="fig4"/> via a
        dotted intermediate router). This would require additional parameters
        in the PrefixManager objective to allow the creation of a hierarchy of
        PM-ASAs across which the prefixes can be delegated.</li>
        <li>In cases where CPEs are also part of the ANI domain (e.g.,
        "managed CPEs"), then GRASP will extend into the actual customer sites
        and can also run a PM-ASA. All the options described in points 1 to
        4 above would then apply to the CPE as the edge router, with the major
        changes being that (a) a CPE router will most likely not need to run
        DHCPv6-PD itself, but only DHCP address assignment and (b) the edge
        routers to which the CPE connects would most likely become ideal places
        on which to run a hierarchical instance of PD-ASAs, as outlined in
        point 1.</li>
        </ol>
      </section>
    </section>
    <section anchor="ack" numbered="false" toc="default">
      <name>Acknowledgements</name>
      <t>Valuable comments were received from
      <contact fullname="William Atwood"/>,
      <contact fullname="Fred Baker"/>,
      <contact fullname="Michael Behringer"/>,
      <contact fullname="Ben Campbell"/>,
      <contact fullname="Laurent Ciavaglia"/>,
      <contact fullname="Toerless Eckert"/>,
      <contact fullname="Joel Halpern"/>,
      <contact fullname="Russ Housley"/>,
      <contact fullname="Geoff Huston"/>,
      <contact fullname="Warren Kumari"/>,
      <contact fullname="Dan Romascanu"/>,
      and <contact fullname="Chongfeng Xie"/>.</t>
    </section>
  </back>
</rfc>
