<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.39 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-giese-dhcp-rate-signaling-01" category="info" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.0 -->
  <front>
    <title>DHCP Explicit Rate Signaling</title>
    <seriesInfo name="Internet-Draft" value="draft-giese-dhcp-rate-signaling-01"/>
    <author fullname="Christian Giese">
      <organization>RtBrick</organization>
      <address>
        <email>christian@rtbrick.com</email>
      </address>
    </author>
    <author fullname="Richard Patterson">
      <organization>Sky UK</organization>
      <address>
        <email>Richard.Patterson@sky.uk</email>
      </address>
    </author>
    <date year="2026" month="July" day="01"/>
    <abstract>
      <?line 44?>

<t>This document defines new Dynamic Host Configuration Protocol (DHCP)
options for both DHCPv4 and DHCPv6 to explicitly
signal available upstream and downstream data rates. In many broadband
access networks, Customer Premises Equipment (CPE) and intermediate
nodes lack visibility into the subscriber's provisioned service tier.
By communicating these capacities natively via DHCP, clients, relay agents,
and snooping switches can dynamically configure localized traffic shaping
and queuing. This explicit signaling improves overall network performance
by reducing the reliance on indiscriminate packet dropping and policing at the
service edge. Additionally, it provides the necessary capacity awareness
to enable effective Active Queue Management (AQM) and the Low Latency,
Low Loss, and Scalable Throughput (L4S) architecture.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-giese-dhcp-rate-signaling/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/GIC-de/draft-dhcp-rate-signaling"/>.</t>
    </note>
  </front>
  <middle>
    <?line 59?>

<section anchor="introduction">
      <name>Introduction</name>
      <section anchor="problem-statement">
        <name>Problem Statement</name>
        <t>In typical broadband access networks, the Customer Premises Equipment (CPE)
is often unaware of the actual available data rates. This lack of visibility
may occur when an external modem or Optical Network Terminal (ONT) <xref target="G.984.1"/>
connects to the CPE at a physical link speed that significantly exceeds the
subscriber's provisioned service rate. Furthermore, operators commonly deploy
unified access profiles where the available rate is artificially limited at
the service edge, such as the Broadband Network Gateway (BNG) <xref target="TR101"/>,
to match the subscriber's purchased service tier.</t>
        <t>When the network bottleneck resides between the BNG and the CPE, intermediate
devices are typically not well equipped to provide deep buffering, priority
scheduling, or Active Queue Management (AQM) <xref target="RFC7567"/>. Relying on indiscriminate
packet dropping or policing at the service edge severely degrades the user experience.
Conversely, network performance improves significantly by performing intelligent shaping
and prioritization. When combined with AQM and the Low Latency, Low Loss, and
Scalable Throughput (L4S) architecture <xref target="RFC9330"/>,
these localized traffic management benefits are further amplified.</t>
      </section>
      <section anchor="architectural-context">
        <name>Architectural Context</name>
        <t>In many IP over Ethernet (IPoE) <xref target="TR101"/> architectures, the
Broadband Network Gateway (BNG) operates strictly as a DHCP relay agent.
While per-subscriber traffic management policies, such as queues, shapers,
and policers, are typically provisioned out-of-band via
Authentication, Authorization, and Accounting (AAA) protocols like RADIUS <xref target="RFC2865"/>,
deployments lacking direct AAA integration at the service edge require an in-band
signaling alternative.</t>
        <t>Transporting available data rates natively within DHCP options addresses this
architectural constraint. This mechanism allows the BNG to dynamically instantiate
downstream shapers and upstream policers based on the DHCP payload, while concurrently
equipping the Customer Premises Equipment (CPE) with the parameters required to manage
upstream traffic locally.</t>
        <t>Furthermore, intermediate Layer 2 access nodes performing DHCP snooping can passively
extract these explicitly signaled rate parameters to optimize their local queues and
shapers. By distributing capacity awareness across the entire forwarding path, this
in-band signaling mitigates buffer congestion within the access segment and significantly
improves end-to-end transport performance.</t>
      </section>
      <section anchor="applicability-and-benefits">
        <name>Applicability and Benefits</name>
        <t>While auto-configuration protocols such as TR-069 <xref target="TR069"/> can provision rate information, they are
not universally deployed by all service providers. Furthermore, the increasing prevalence of
customer-owned, unmanaged CPE devices, including devices running open-source firmware or custom projects,
limits the effectiveness of operator-managed configuration servers. A standardized DHCP option
addresses this gap by providing a universal mechanism to explicitly signal available data rates
directly from the DHCP server, across BNGs and access nodes, down to the CPE.
This localized approach is particularly advantageous because it serves the entire path,
whereas auto-configuration servers exclusively target the end device. This method also
integrates seamlessly with architectures where RADIUS servers inject DHCP options.</t>
        <t>Although primarily designed for IPoE deployments, this mechanism is equally applicable
to Point-to-Point Protocol over Ethernet (PPPoE) <xref target="RFC2516"/> environments. Since DHCP
is frequently utilized over PPPoE, most notably for IPv6 Prefix Delegation, this option
provides a standardized method for rate signaling. Consequently, this approach can supersede
the fragmented, proprietary methods currently in use, such as embedding rate limits within
PPP <xref target="RFC1661"/> authentication reply messages.</t>
        <t>Conveying rates via DHCP natively supports dynamic updates through regular lease renewals
or triggered reconfiguration requests. As an auxiliary benefit, this explicit rate
information can be exposed in the CPE user interface to satisfy customer expectations
regarding bandwidth visibility. Ultimately, introducing a DHCP option to signal available
data rates represents a simple, standardized enhancement that yields widespread improvements
in internet service delivery.</t>
        <t>Operational requirements necessitate the definition of this option for both DHCPv4 and DHCPv6.
This ensures coverage for networks lacking IPv6 support and prevents configuration gaps in
dual-stack scenarios where DHCPv4 is established prior to DHCPv6.</t>
      </section>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</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 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

<t>This document makes use of the terms defined in <xref target="RFC2131"/> and <xref target="RFC8415"/>.
The following additional terms are used:</t>
      <dl>
        <dt>DHCP</dt>
        <dd>
          <t>The abbreviation DHCP is used throughout this document to refer to both DHCPv4 and DHCPv6 protocols.</t>
        </dd>
        <dt>DHCPv4</dt>
        <dd>
          <t>Dynamic Host Configuration Protocol <xref target="RFC2131"/></t>
        </dd>
        <dt>DHCPv6</dt>
        <dd>
          <t>Dynamic Host Configuration Protocol for IPv6 <xref target="RFC8415"/></t>
        </dd>
        <dt>Subscriber</dt>
        <dd>
          <ul empty="true">
            <li>
              <t>The individual, organization, or entity that maintains a contractual relationship with a
 Broadband Service Provider for network access services. Within the network infrastructure,
 a subscriber is typically represented by an authenticated logical session (e.g., IPoE or PPPoE)
 and an associated policy profile that dictates service attributes, including provisioned
 upstream and downstream data rates.</t>
            </li>
          </ul>
        </dd>
      </dl>
    </section>
    <section anchor="dhcp-rate-option">
      <name>DHCP Rate Option</name>
      <t>The DHCP Rate Option specified in this document is a container option with a sub-option structure for
both DHCPv4 and DHCPv6. The top-level option encapsulation strictly conforms to the
requirements of each base protocol. Specifically, DHCPv4 utilizes an 8-bit option
code set to TBD1 alongside an 8-bit length field, whereas DHCPv6 utilizes a 16-bit
option code set to TBD2 alongside a 16-bit length field.</t>
      <t>While the underlying semantics of the rate information remain identical across both IP versions,
the internal payload sizing differs to align with the conventions of each respective protocol.
For DHCPv4, the encapsulated sub-options utilize an 8-bit sub-option code and an 8-bit sub-option
length field, mirroring the format of DHCPv4 Option 82 (Relay Agent Information Option) <xref target="RFC3046"/>.
Conversely, for DHCPv6, the encapsulated sub-options utilize a 16-bit sub-option code and a
16-bit sub-option length field.</t>
      <section anchor="sub-options-format">
        <name>Sub-Options Format</name>
        <t>The rate information field consists of a sequence of sub-option (SubOpt) Code/Length/Value tuples.
Because the field sizing differs between the two protocols to align with their
respective base specifications, the sub-options are encoded as follows:</t>
        <t>DHCPv4 Sub-Option Format:</t>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="112" width="528" viewBox="0 0 528 112" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 8,64 L 8,96" fill="none" stroke="black"/>
              <path d="M 136,64 L 136,96" fill="none" stroke="black"/>
              <path d="M 264,64 L 264,96" fill="none" stroke="black"/>
              <path d="M 520,64 L 520,96" fill="none" stroke="black"/>
              <path d="M 8,64 L 520,64" fill="none" stroke="black"/>
              <path d="M 8,96 L 520,96" fill="none" stroke="black"/>
              <g class="text">
                <text x="16" y="36">0</text>
                <text x="176" y="36">1</text>
                <text x="336" y="36">2</text>
                <text x="496" y="36">3</text>
                <text x="16" y="52">0</text>
                <text x="32" y="52">1</text>
                <text x="48" y="52">2</text>
                <text x="64" y="52">3</text>
                <text x="80" y="52">4</text>
                <text x="96" y="52">5</text>
                <text x="112" y="52">6</text>
                <text x="128" y="52">7</text>
                <text x="144" y="52">8</text>
                <text x="160" y="52">9</text>
                <text x="176" y="52">0</text>
                <text x="192" y="52">1</text>
                <text x="208" y="52">2</text>
                <text x="224" y="52">3</text>
                <text x="240" y="52">4</text>
                <text x="256" y="52">5</text>
                <text x="272" y="52">6</text>
                <text x="288" y="52">7</text>
                <text x="304" y="52">8</text>
                <text x="320" y="52">9</text>
                <text x="336" y="52">0</text>
                <text x="352" y="52">1</text>
                <text x="368" y="52">2</text>
                <text x="384" y="52">3</text>
                <text x="400" y="52">4</text>
                <text x="416" y="52">5</text>
                <text x="432" y="52">6</text>
                <text x="448" y="52">7</text>
                <text x="464" y="52">8</text>
                <text x="480" y="52">9</text>
                <text x="496" y="52">0</text>
                <text x="512" y="52">1</text>
                <text x="52" y="84">SubOpt</text>
                <text x="100" y="84">Code</text>
                <text x="172" y="84">SubOpt</text>
                <text x="228" y="84">Length</text>
                <text x="300" y="84">SubOpt</text>
                <text x="352" y="84">Value</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  SubOpt Code  | SubOpt Length | SubOpt Value                  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </artset>
        <t>DHCPv6 Sub-Option Format:</t>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="144" width="528" viewBox="0 0 528 144" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 8,64 L 8,128" fill="none" stroke="black"/>
              <path d="M 264,64 L 264,96" fill="none" stroke="black"/>
              <path d="M 520,64 L 520,128" fill="none" stroke="black"/>
              <path d="M 8,64 L 520,64" fill="none" stroke="black"/>
              <path d="M 8,96 L 520,96" fill="none" stroke="black"/>
              <path d="M 8,128 L 520,128" fill="none" stroke="black"/>
              <g class="text">
                <text x="16" y="36">0</text>
                <text x="176" y="36">1</text>
                <text x="336" y="36">2</text>
                <text x="496" y="36">3</text>
                <text x="16" y="52">0</text>
                <text x="32" y="52">1</text>
                <text x="48" y="52">2</text>
                <text x="64" y="52">3</text>
                <text x="80" y="52">4</text>
                <text x="96" y="52">5</text>
                <text x="112" y="52">6</text>
                <text x="128" y="52">7</text>
                <text x="144" y="52">8</text>
                <text x="160" y="52">9</text>
                <text x="176" y="52">0</text>
                <text x="192" y="52">1</text>
                <text x="208" y="52">2</text>
                <text x="224" y="52">3</text>
                <text x="240" y="52">4</text>
                <text x="256" y="52">5</text>
                <text x="272" y="52">6</text>
                <text x="288" y="52">7</text>
                <text x="304" y="52">8</text>
                <text x="320" y="52">9</text>
                <text x="336" y="52">0</text>
                <text x="352" y="52">1</text>
                <text x="368" y="52">2</text>
                <text x="384" y="52">3</text>
                <text x="400" y="52">4</text>
                <text x="416" y="52">5</text>
                <text x="432" y="52">6</text>
                <text x="448" y="52">7</text>
                <text x="464" y="52">8</text>
                <text x="480" y="52">9</text>
                <text x="496" y="52">0</text>
                <text x="512" y="52">1</text>
                <text x="116" y="84">SubOpt</text>
                <text x="164" y="84">Code</text>
                <text x="364" y="84">SubOpt</text>
                <text x="420" y="84">Length</text>
                <text x="236" y="116">SubOpt</text>
                <text x="288" y="116">Value</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          SubOpt Code          |         SubOpt Length         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                         SubOpt Value                          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </artset>
        <t>No "pad" sub-option is defined, and the rate information field <bcp14>SHALL NOT</bcp14>
be terminated with a 255 sub-option. The length of OPTION_RATE <bcp14>MUST</bcp14> include
all bytes of the sub-option code/length/value tuples. The sub-option length
<bcp14>MUST</bcp14> equal the number of octets in the sub-option's value field. A sub-option
length <bcp14>MAY</bcp14> be zero. The sub-options need not appear in sub-option code order.</t>
        <t>The initial assignment of DHCP Rate Sub-options is as follows:</t>
        <table>
          <thead>
            <tr>
              <th align="right">Code</th>
              <th align="right">Length</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="right">0</td>
              <td align="right">-</td>
              <td align="left">Reserved</td>
            </tr>
            <tr>
              <td align="right">1</td>
              <td align="right">8</td>
              <td align="left">Available Rate Upstream in bits per second (bps)</td>
            </tr>
            <tr>
              <td align="right">2</td>
              <td align="right">8</td>
              <td align="left">Available Rate Downstream in bits per second (bps)</td>
            </tr>
            <tr>
              <td align="right">3</td>
              <td align="right">1</td>
              <td align="left">Rate Type (L2 or L3)</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="sub-options">
        <name>Sub-Options</name>
        <section anchor="available-rate-upstream">
          <name>Available Rate Upstream</name>
          <t>The sub-option Available Rate Upstream defines the rate in bits per second (bps) available from the
DHCP client towards the DHCP server direction. The rate format is a 64-bit unsigned integer in
network byte order.</t>
          <t>DHCPv4 Sub-Option Format:</t>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="176" width="528" viewBox="0 0 528 176" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,64 L 8,160" fill="none" stroke="black"/>
                <path d="M 136,64 L 136,96" fill="none" stroke="black"/>
                <path d="M 264,64 L 264,96" fill="none" stroke="black"/>
                <path d="M 264,128 L 264,160" fill="none" stroke="black"/>
                <path d="M 520,64 L 520,128" fill="none" stroke="black"/>
                <path d="M 8,64 L 520,64" fill="none" stroke="black"/>
                <path d="M 8,96 L 264,96" fill="none" stroke="black"/>
                <path d="M 264,128 L 520,128" fill="none" stroke="black"/>
                <path d="M 8,160 L 264,160" fill="none" stroke="black"/>
                <g class="text">
                  <text x="16" y="36">0</text>
                  <text x="176" y="36">1</text>
                  <text x="336" y="36">2</text>
                  <text x="496" y="36">3</text>
                  <text x="16" y="52">0</text>
                  <text x="32" y="52">1</text>
                  <text x="48" y="52">2</text>
                  <text x="64" y="52">3</text>
                  <text x="80" y="52">4</text>
                  <text x="96" y="52">5</text>
                  <text x="112" y="52">6</text>
                  <text x="128" y="52">7</text>
                  <text x="144" y="52">8</text>
                  <text x="160" y="52">9</text>
                  <text x="176" y="52">0</text>
                  <text x="192" y="52">1</text>
                  <text x="208" y="52">2</text>
                  <text x="224" y="52">3</text>
                  <text x="240" y="52">4</text>
                  <text x="256" y="52">5</text>
                  <text x="272" y="52">6</text>
                  <text x="288" y="52">7</text>
                  <text x="304" y="52">8</text>
                  <text x="320" y="52">9</text>
                  <text x="336" y="52">0</text>
                  <text x="352" y="52">1</text>
                  <text x="368" y="52">2</text>
                  <text x="384" y="52">3</text>
                  <text x="400" y="52">4</text>
                  <text x="416" y="52">5</text>
                  <text x="432" y="52">6</text>
                  <text x="448" y="52">7</text>
                  <text x="464" y="52">8</text>
                  <text x="480" y="52">9</text>
                  <text x="496" y="52">0</text>
                  <text x="512" y="52">1</text>
                  <text x="44" y="84">SubOpt</text>
                  <text x="100" y="84">Code=1</text>
                  <text x="172" y="84">SubOpt</text>
                  <text x="224" y="84">Len=8</text>
                  <text x="56" y="116">Available</text>
                  <text x="116" y="116">Rate</text>
                  <text x="172" y="116">Upstream</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| SubOpt Code=1 | SubOpt Len=8  |                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               +
| Available Rate Upstream                                       |
+                               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
          </artset>
          <t>DHCPv6 Sub-Option Format:</t>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="176" width="528" viewBox="0 0 528 176" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,64 L 8,160" fill="none" stroke="black"/>
                <path d="M 264,64 L 264,96" fill="none" stroke="black"/>
                <path d="M 520,64 L 520,160" fill="none" stroke="black"/>
                <path d="M 8,64 L 520,64" fill="none" stroke="black"/>
                <path d="M 8,96 L 520,96" fill="none" stroke="black"/>
                <path d="M 8,160 L 520,160" fill="none" stroke="black"/>
                <g class="text">
                  <text x="16" y="36">0</text>
                  <text x="176" y="36">1</text>
                  <text x="336" y="36">2</text>
                  <text x="496" y="36">3</text>
                  <text x="16" y="52">0</text>
                  <text x="32" y="52">1</text>
                  <text x="48" y="52">2</text>
                  <text x="64" y="52">3</text>
                  <text x="80" y="52">4</text>
                  <text x="96" y="52">5</text>
                  <text x="112" y="52">6</text>
                  <text x="128" y="52">7</text>
                  <text x="144" y="52">8</text>
                  <text x="160" y="52">9</text>
                  <text x="176" y="52">0</text>
                  <text x="192" y="52">1</text>
                  <text x="208" y="52">2</text>
                  <text x="224" y="52">3</text>
                  <text x="240" y="52">4</text>
                  <text x="256" y="52">5</text>
                  <text x="272" y="52">6</text>
                  <text x="288" y="52">7</text>
                  <text x="304" y="52">8</text>
                  <text x="320" y="52">9</text>
                  <text x="336" y="52">0</text>
                  <text x="352" y="52">1</text>
                  <text x="368" y="52">2</text>
                  <text x="384" y="52">3</text>
                  <text x="400" y="52">4</text>
                  <text x="416" y="52">5</text>
                  <text x="432" y="52">6</text>
                  <text x="448" y="52">7</text>
                  <text x="464" y="52">8</text>
                  <text x="480" y="52">9</text>
                  <text x="496" y="52">0</text>
                  <text x="512" y="52">1</text>
                  <text x="44" y="84">SubOpt</text>
                  <text x="100" y="84">Code=1</text>
                  <text x="300" y="84">SubOpt</text>
                  <text x="352" y="84">Len=8</text>
                  <text x="56" y="116">Available</text>
                  <text x="116" y="116">Rate</text>
                  <text x="172" y="116">Upstream</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| SubOpt Code=1                 | SubOpt Len=8                  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Available Rate Upstream                                       |
+                                                               +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
          </artset>
          <t>A value of 0 in this context signifies an unrestricted rate. It can be interpreted as a request to
remove a previously set rate, thereby resetting to the device default configuration.</t>
        </section>
        <section anchor="available-rate-downstream">
          <name>Available Rate Downstream</name>
          <t>The available rate downstream defines the rate in bits per second (bps) available from the DHCP
server towards the DHCP client direction. The rate format is a 64-bit unsigned integer in network byte order.</t>
          <t>DHCPv4 Sub-Option Format:</t>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="176" width="528" viewBox="0 0 528 176" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,64 L 8,160" fill="none" stroke="black"/>
                <path d="M 136,64 L 136,96" fill="none" stroke="black"/>
                <path d="M 264,64 L 264,96" fill="none" stroke="black"/>
                <path d="M 264,128 L 264,160" fill="none" stroke="black"/>
                <path d="M 520,64 L 520,128" fill="none" stroke="black"/>
                <path d="M 8,64 L 520,64" fill="none" stroke="black"/>
                <path d="M 8,96 L 264,96" fill="none" stroke="black"/>
                <path d="M 264,128 L 520,128" fill="none" stroke="black"/>
                <path d="M 8,160 L 264,160" fill="none" stroke="black"/>
                <g class="text">
                  <text x="16" y="36">0</text>
                  <text x="176" y="36">1</text>
                  <text x="336" y="36">2</text>
                  <text x="496" y="36">3</text>
                  <text x="16" y="52">0</text>
                  <text x="32" y="52">1</text>
                  <text x="48" y="52">2</text>
                  <text x="64" y="52">3</text>
                  <text x="80" y="52">4</text>
                  <text x="96" y="52">5</text>
                  <text x="112" y="52">6</text>
                  <text x="128" y="52">7</text>
                  <text x="144" y="52">8</text>
                  <text x="160" y="52">9</text>
                  <text x="176" y="52">0</text>
                  <text x="192" y="52">1</text>
                  <text x="208" y="52">2</text>
                  <text x="224" y="52">3</text>
                  <text x="240" y="52">4</text>
                  <text x="256" y="52">5</text>
                  <text x="272" y="52">6</text>
                  <text x="288" y="52">7</text>
                  <text x="304" y="52">8</text>
                  <text x="320" y="52">9</text>
                  <text x="336" y="52">0</text>
                  <text x="352" y="52">1</text>
                  <text x="368" y="52">2</text>
                  <text x="384" y="52">3</text>
                  <text x="400" y="52">4</text>
                  <text x="416" y="52">5</text>
                  <text x="432" y="52">6</text>
                  <text x="448" y="52">7</text>
                  <text x="464" y="52">8</text>
                  <text x="480" y="52">9</text>
                  <text x="496" y="52">0</text>
                  <text x="512" y="52">1</text>
                  <text x="44" y="84">SubOpt</text>
                  <text x="100" y="84">Code=2</text>
                  <text x="172" y="84">SubOpt</text>
                  <text x="224" y="84">Len=8</text>
                  <text x="56" y="116">Available</text>
                  <text x="116" y="116">Rate</text>
                  <text x="180" y="116">Downstream</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| SubOpt Code=2 | SubOpt Len=8  |                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               +
| Available Rate Downstream                                     |
+                               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
          </artset>
          <t>DHCPv6 Sub-Option Format:</t>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="176" width="528" viewBox="0 0 528 176" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,64 L 8,160" fill="none" stroke="black"/>
                <path d="M 264,64 L 264,96" fill="none" stroke="black"/>
                <path d="M 520,64 L 520,160" fill="none" stroke="black"/>
                <path d="M 8,64 L 520,64" fill="none" stroke="black"/>
                <path d="M 8,96 L 520,96" fill="none" stroke="black"/>
                <path d="M 8,160 L 520,160" fill="none" stroke="black"/>
                <g class="text">
                  <text x="16" y="36">0</text>
                  <text x="176" y="36">1</text>
                  <text x="336" y="36">2</text>
                  <text x="496" y="36">3</text>
                  <text x="16" y="52">0</text>
                  <text x="32" y="52">1</text>
                  <text x="48" y="52">2</text>
                  <text x="64" y="52">3</text>
                  <text x="80" y="52">4</text>
                  <text x="96" y="52">5</text>
                  <text x="112" y="52">6</text>
                  <text x="128" y="52">7</text>
                  <text x="144" y="52">8</text>
                  <text x="160" y="52">9</text>
                  <text x="176" y="52">0</text>
                  <text x="192" y="52">1</text>
                  <text x="208" y="52">2</text>
                  <text x="224" y="52">3</text>
                  <text x="240" y="52">4</text>
                  <text x="256" y="52">5</text>
                  <text x="272" y="52">6</text>
                  <text x="288" y="52">7</text>
                  <text x="304" y="52">8</text>
                  <text x="320" y="52">9</text>
                  <text x="336" y="52">0</text>
                  <text x="352" y="52">1</text>
                  <text x="368" y="52">2</text>
                  <text x="384" y="52">3</text>
                  <text x="400" y="52">4</text>
                  <text x="416" y="52">5</text>
                  <text x="432" y="52">6</text>
                  <text x="448" y="52">7</text>
                  <text x="464" y="52">8</text>
                  <text x="480" y="52">9</text>
                  <text x="496" y="52">0</text>
                  <text x="512" y="52">1</text>
                  <text x="44" y="84">SubOpt</text>
                  <text x="100" y="84">Code=2</text>
                  <text x="300" y="84">SubOpt</text>
                  <text x="352" y="84">Len=8</text>
                  <text x="56" y="116">Available</text>
                  <text x="116" y="116">Rate</text>
                  <text x="180" y="116">Downstream</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| SubOpt Code=2                 | SubOpt Len=8                  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Available Rate Downstream                                     |
+                                                               +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
          </artset>
          <t>A value of 0 in this context signifies an unrestricted rate. It can be interpreted as a request to
remove a previously set rate, thereby resetting to the device default configuration.</t>
        </section>
        <section anchor="rate-type">
          <name>Rate Type</name>
          <t>The rate type defines the networking layer to which the stated rates apply. The default value of 2
is defined as the Layer 2 rate, which signifies that the rate encompasses the entire Ethernet frame.
Implementations <bcp14>SHOULD</bcp14> calculate this rate using the Ethernet header and all payload, excluding the
Ethernet Frame Check Sequence (FCS) and Inter-Packet Gap (IPG).</t>
          <t>DHCPv4 Sub-Option Format:</t>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="112" width="400" viewBox="0 0 400 112" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,64 L 8,96" fill="none" stroke="black"/>
                <path d="M 136,64 L 136,96" fill="none" stroke="black"/>
                <path d="M 264,64 L 264,96" fill="none" stroke="black"/>
                <path d="M 392,64 L 392,96" fill="none" stroke="black"/>
                <path d="M 8,64 L 392,64" fill="none" stroke="black"/>
                <path d="M 8,96 L 392,96" fill="none" stroke="black"/>
                <g class="text">
                  <text x="16" y="36">0</text>
                  <text x="176" y="36">1</text>
                  <text x="336" y="36">2</text>
                  <text x="16" y="52">0</text>
                  <text x="32" y="52">1</text>
                  <text x="48" y="52">2</text>
                  <text x="64" y="52">3</text>
                  <text x="80" y="52">4</text>
                  <text x="96" y="52">5</text>
                  <text x="112" y="52">6</text>
                  <text x="128" y="52">7</text>
                  <text x="144" y="52">8</text>
                  <text x="160" y="52">9</text>
                  <text x="176" y="52">0</text>
                  <text x="192" y="52">1</text>
                  <text x="208" y="52">2</text>
                  <text x="224" y="52">3</text>
                  <text x="240" y="52">4</text>
                  <text x="256" y="52">5</text>
                  <text x="272" y="52">6</text>
                  <text x="288" y="52">7</text>
                  <text x="304" y="52">8</text>
                  <text x="320" y="52">9</text>
                  <text x="336" y="52">0</text>
                  <text x="352" y="52">1</text>
                  <text x="368" y="52">2</text>
                  <text x="384" y="52">3</text>
                  <text x="44" y="84">SubOpt</text>
                  <text x="100" y="84">Code=3</text>
                  <text x="172" y="84">SubOpt</text>
                  <text x="224" y="84">Len=1</text>
                  <text x="292" y="84">Rate</text>
                  <text x="332" y="84">Type</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
 0                   1                   2
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| SubOpt Code=3 | SubOpt Len=1  | Rate Type     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
          </artset>
          <t>DHCPv6 Sub-Option Format:</t>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="144" width="528" viewBox="0 0 528 144" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,64 L 8,128" fill="none" stroke="black"/>
                <path d="M 136,96 L 136,128" fill="none" stroke="black"/>
                <path d="M 264,64 L 264,96" fill="none" stroke="black"/>
                <path d="M 520,64 L 520,96" fill="none" stroke="black"/>
                <path d="M 8,64 L 520,64" fill="none" stroke="black"/>
                <path d="M 8,96 L 520,96" fill="none" stroke="black"/>
                <path d="M 8,128 L 136,128" fill="none" stroke="black"/>
                <g class="text">
                  <text x="16" y="36">0</text>
                  <text x="176" y="36">1</text>
                  <text x="336" y="36">2</text>
                  <text x="496" y="36">3</text>
                  <text x="16" y="52">0</text>
                  <text x="32" y="52">1</text>
                  <text x="48" y="52">2</text>
                  <text x="64" y="52">3</text>
                  <text x="80" y="52">4</text>
                  <text x="96" y="52">5</text>
                  <text x="112" y="52">6</text>
                  <text x="128" y="52">7</text>
                  <text x="144" y="52">8</text>
                  <text x="160" y="52">9</text>
                  <text x="176" y="52">0</text>
                  <text x="192" y="52">1</text>
                  <text x="208" y="52">2</text>
                  <text x="224" y="52">3</text>
                  <text x="240" y="52">4</text>
                  <text x="256" y="52">5</text>
                  <text x="272" y="52">6</text>
                  <text x="288" y="52">7</text>
                  <text x="304" y="52">8</text>
                  <text x="320" y="52">9</text>
                  <text x="336" y="52">0</text>
                  <text x="352" y="52">1</text>
                  <text x="368" y="52">2</text>
                  <text x="384" y="52">3</text>
                  <text x="400" y="52">4</text>
                  <text x="416" y="52">5</text>
                  <text x="432" y="52">6</text>
                  <text x="448" y="52">7</text>
                  <text x="464" y="52">8</text>
                  <text x="480" y="52">9</text>
                  <text x="496" y="52">0</text>
                  <text x="512" y="52">1</text>
                  <text x="44" y="84">SubOpt</text>
                  <text x="100" y="84">Code=3</text>
                  <text x="300" y="84">SubOpt</text>
                  <text x="352" y="84">Len=1</text>
                  <text x="36" y="116">Rate</text>
                  <text x="76" y="116">Type</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| SubOpt Code=3                 | SubOpt Len=1                  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Rate Type     |
+-+-+-+-+-+-+-+-+
]]></artwork>
          </artset>
          <t>If the rate type is set to 0, the explicitly signaled rates are informational only. Devices receiving this
rate type <bcp14>MUST NOT</bcp14> apply the specified rate limits to their physical interfaces, traffic shapers, policers,
or Active Queue Management (AQM) parameters. This value accommodates deployments where the network exposes
the provisioned service tier to the Customer Premises Equipment (CPE) solely to populate user interfaces
or for telemetry purposes, without altering the device's localized forwarding behavior.</t>
          <t>If the rate type is set to 3, the rate applies to Layer 3, encompassing only the IP header and its
payload. This rate calculation is frequently utilized by end-user speed test applications and is
often regarded as the marketable "product bandwidth". Its primary advantage is its independence from
the variable overhead introduced by differing numbers of VLAN tags or tunnel encapsulations.</t>
          <t>In the absence of the Rate Type sub-option, the client <bcp14>MUST</bcp14> assume that the signaled values are
defined as the Layer 2 rate.</t>
          <t>The values 1 and 4-255 are currently unassigned and reserved for future use. If a client, server,
or relay agent receives a Rate Type sub-option containing an unrecognized or reserved value,
it <bcp14>MUST</bcp14> ignore the entire OPTION_RATE. Applying explicitly signaled rate limits without understanding
the intended networking layer could result in incorrect localized traffic management. Therefore,
to fail safely, the receiving device <bcp14>MUST</bcp14> discard the option entirely and rely on its default
rate configuration.</t>
          <t>The initial assignment of rate types is as follows:</t>
          <table>
            <thead>
              <tr>
                <th align="right">Type</th>
                <th align="left">Description</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="right">0</td>
                <td align="left">Informational</td>
              </tr>
              <tr>
                <td align="right">1</td>
                <td align="left">Reserved</td>
              </tr>
              <tr>
                <td align="right">2</td>
                <td align="left">Layer 2 rate</td>
              </tr>
              <tr>
                <td align="right">3</td>
                <td align="left">Layer 3 rate</td>
              </tr>
              <tr>
                <td align="right">4-255</td>
                <td align="left">Unassigned</td>
              </tr>
            </tbody>
          </table>
          <t>A client <bcp14>MAY</bcp14> include the Rate Type sub-option within its initial requests to serve as a hint to the
server regarding its preferred calculation method (e.g., requesting a Layer 3 rate instead of a
Layer 2 rate). Sending this hint is <bcp14>OPTIONAL</bcp14> for the client, and honoring the hint is <bcp14>OPTIONAL</bcp14>
for the server.</t>
        </section>
      </section>
    </section>
    <section anchor="dhcpv4">
      <name>DHCPv4</name>
      <section anchor="dhcpv4-rate-option">
        <name>DHCPv4 Rate Option</name>
        <t>The DHCPv4 OPTION_RATE code is TBD1.</t>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="304" width="528" viewBox="0 0 528 304" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 8,64 L 8,272" fill="none" stroke="black"/>
              <path d="M 136,64 L 136,96" fill="none" stroke="black"/>
              <path d="M 136,144 L 136,176" fill="none" stroke="black"/>
              <path d="M 264,64 L 264,96" fill="none" stroke="black"/>
              <path d="M 264,144 L 264,176" fill="none" stroke="black"/>
              <path d="M 264,208 L 264,240" fill="none" stroke="black"/>
              <path d="M 392,64 L 392,96" fill="none" stroke="black"/>
              <path d="M 392,208 L 392,240" fill="none" stroke="black"/>
              <path d="M 520,64 L 520,240" fill="none" stroke="black"/>
              <path d="M 8,64 L 520,64" fill="none" stroke="black"/>
              <path d="M 8,96 L 520,96" fill="none" stroke="black"/>
              <path d="M 8,144 L 520,144" fill="none" stroke="black"/>
              <path d="M 8,176 L 264,176" fill="none" stroke="black"/>
              <path d="M 264,208 L 520,208" fill="none" stroke="black"/>
              <path d="M 8,240 L 520,240" fill="none" stroke="black"/>
              <path d="M 8,272 L 120,272" fill="none" stroke="black"/>
              <g class="text">
                <text x="16" y="36">0</text>
                <text x="176" y="36">1</text>
                <text x="336" y="36">2</text>
                <text x="496" y="36">3</text>
                <text x="16" y="52">0</text>
                <text x="32" y="52">1</text>
                <text x="48" y="52">2</text>
                <text x="64" y="52">3</text>
                <text x="80" y="52">4</text>
                <text x="96" y="52">5</text>
                <text x="112" y="52">6</text>
                <text x="128" y="52">7</text>
                <text x="144" y="52">8</text>
                <text x="160" y="52">9</text>
                <text x="176" y="52">0</text>
                <text x="192" y="52">1</text>
                <text x="208" y="52">2</text>
                <text x="224" y="52">3</text>
                <text x="240" y="52">4</text>
                <text x="256" y="52">5</text>
                <text x="272" y="52">6</text>
                <text x="288" y="52">7</text>
                <text x="304" y="52">8</text>
                <text x="320" y="52">9</text>
                <text x="336" y="52">0</text>
                <text x="352" y="52">1</text>
                <text x="368" y="52">2</text>
                <text x="384" y="52">3</text>
                <text x="400" y="52">4</text>
                <text x="416" y="52">5</text>
                <text x="432" y="52">6</text>
                <text x="448" y="52">7</text>
                <text x="464" y="52">8</text>
                <text x="480" y="52">9</text>
                <text x="496" y="52">0</text>
                <text x="512" y="52">1</text>
                <text x="36" y="84">Code</text>
                <text x="76" y="84">TBD1</text>
                <text x="172" y="84">Length</text>
                <text x="208" y="84">N</text>
                <text x="300" y="84">SubOpt</text>
                <text x="348" y="84">Code</text>
                <text x="428" y="84">SubOpt</text>
                <text x="484" y="84">Length</text>
                <text x="44" y="116">SubOpt</text>
                <text x="96" y="116">Value</text>
                <text x="44" y="164">SubOpt</text>
                <text x="92" y="164">Code</text>
                <text x="172" y="164">SubOpt</text>
                <text x="228" y="164">Length</text>
                <text x="300" y="164">SubOpt</text>
                <text x="352" y="164">Value</text>
                <text x="300" y="228">SubOpt</text>
                <text x="348" y="228">Code</text>
                <text x="428" y="228">SubOpt</text>
                <text x="484" y="228">Length</text>
                <text x="44" y="260">SubOpt</text>
                <text x="96" y="260">Value</text>
                <text x="132" y="276">..</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
  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
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 | Code TBD1     | Length N      | SubOpt Code   | SubOpt Length |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 | SubOpt Value                                                  |
 |                                                               |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 | SubOpt Code   | SubOpt Length | SubOpt Value                  |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               |
 |                                                               |
 |                               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                               | SubOpt Code   | SubOpt Length |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 | SubOpt Value
 +-+-+-+-+-+-+-...
]]></artwork>
        </artset>
        <t>The option length (N) gives the total number of octets of all sub-options,
with a minimum value of 2 bytes, which is the sub-options header length.</t>
      </section>
      <section anchor="dhcpv4-client-behavior">
        <name>DHCPv4 Client Behavior</name>
        <t>DHCPv4 clients that support the DHCP Rate Option <bcp14>SHOULD</bcp14> include the corresponding OPTION_RATE code in
the Parameter Request List (PRL). This inclusion explicitly signals client support, enabling the DHCP
server to determine whether to include the rate parameters in its response. Furthermore, this
signaling provides network operators with visibility into client capabilities, which aids in
troubleshooting and resolving customer service quality complaints.</t>
        <t>A client <bcp14>MAY</bcp14> include the DHCP Rate Option directly within its DHCPREQUEST messages to serve as a hint
to the server proposing their maximum data rates or preferred rate type (L2 or L3 rates). For
example, when a CPE device is connected via a 1 Gbps WAN interface to an external Optical Network
Terminal (ONT) or modem capable of exceeding 1 Gbps on the WAN side, the CPE can explicitly signal
this physical limitation to the service provider. This enables the network to align its shaping
parameters directly with the device's actual capacity, ensuring traffic does not exceed the physical
limit.</t>
        <t>However, providing this hint is <bcp14>OPTIONAL</bcp14>. The manner in which a DHCP server processes or utilizes
these client-provided hints is implementation-specific and outside the scope of this document.
Because the server remains authoritative, the client <bcp14>MUST</bcp14> accept and apply the rate type ultimately
provided by the server in the DHCPACK message, regardless of the hint it originally sent.</t>
        <t>Clients <bcp14>MUST</bcp14> ignore the OPTION_RATE when received within a message other than DHCPACK. If the
OPTION_RATE is present in a DHCPOFFER message, the client <bcp14>MUST NOT</bcp14> apply the specified rate limits to
its interfaces. However, a client <bcp14>MAY</bcp14> evaluate the rate information provided in a DHCPOFFER as a
selection criterion to prefer one server's offer over another.</t>
      </section>
      <section anchor="dhcpv4-server-behavior">
        <name>DHCPv4 Server Behavior</name>
        <t>When a DHCPv4 server is configured to support the DHCP Rate Option and receives a client request
(e.g., DHCPDISCOVER or DHCPREQUEST) that includes the OPTION_RATE within the Parameter Request List
(PRL), the server <bcp14>MUST</bcp14> include the OPTION_RATE in the resulting DHCPOFFER and DHCPACK messages.</t>
        <t>The server <bcp14>MAY</bcp14> derive the specific upstream and downstream rates and rate type from local
configuration profiles, centralized Authentication, Authorization, and Accounting (AAA) systems such
as RADIUS, or external policy servers. If no non-zero values are configured or signaled to be used,
the server <bcp14>MAY</bcp14> return rate values of 0.</t>
        <t>A server <bcp14>MAY</bcp14> include the OPTION_RATE in its responses even if the client did not explicitly request
it via the Parameter Request List (PRL), provided the operator has explicitly configured the server
to forcefully inject the option to provision intermediate nodes, such as DHCP relay agents or Layer 2
snooping switches, which <bcp14>MAY</bcp14> drop these options before forwarding the message to the client.</t>
      </section>
      <section anchor="dhcpv4-relay-agent-behavior">
        <name>DHCPv4 Relay Agent Behavior</name>
        <t>DHCPv4 Relay Agents, including L2 DHCPv4 Relay Agents <xref target="TR101"/>, <bcp14>MAY</bcp14> extract the OPTION_RATE from
DHCPACK messages traversing the network. Relay agents that perform localized traffic management <bcp14>MAY</bcp14>
utilize these extracted values to dynamically instantiate shapers and policers on their
subscriber-facing interfaces.</t>
        <t>Furthermore, a relay agent <bcp14>MAY</bcp14> add, modify, or remove the OPTION_RATE before forwarding the DHCP
message to the client. This accommodates deployments where the relay agent (e.g., a BNG) is
responsible for policy enforcement and populates or overrides the OPTION_RATE based on subscriber
attributes retrieved directly from an external Authentication, Authorization, and Accounting (AAA)
server, such as RADIUS.</t>
      </section>
    </section>
    <section anchor="dhcpv6">
      <name>DHCPv6</name>
      <section anchor="dhcpv6-rate-option">
        <name>DHCPv6 Rate Option</name>
        <t>The DHCPv6 OPTION_RATE code is TBD2.</t>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="272" width="528" viewBox="0 0 528 272" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 8,64 L 8,240" fill="none" stroke="black"/>
              <path d="M 264,64 L 264,128" fill="none" stroke="black"/>
              <path d="M 264,176 L 264,208" fill="none" stroke="black"/>
              <path d="M 520,64 L 520,208" fill="none" stroke="black"/>
              <path d="M 8,64 L 520,64" fill="none" stroke="black"/>
              <path d="M 8,96 L 520,96" fill="none" stroke="black"/>
              <path d="M 8,128 L 520,128" fill="none" stroke="black"/>
              <path d="M 8,176 L 520,176" fill="none" stroke="black"/>
              <path d="M 8,208 L 520,208" fill="none" stroke="black"/>
              <path d="M 8,240 L 120,240" fill="none" stroke="black"/>
              <g class="text">
                <text x="16" y="36">0</text>
                <text x="176" y="36">1</text>
                <text x="336" y="36">2</text>
                <text x="496" y="36">3</text>
                <text x="16" y="52">0</text>
                <text x="32" y="52">1</text>
                <text x="48" y="52">2</text>
                <text x="64" y="52">3</text>
                <text x="80" y="52">4</text>
                <text x="96" y="52">5</text>
                <text x="112" y="52">6</text>
                <text x="128" y="52">7</text>
                <text x="144" y="52">8</text>
                <text x="160" y="52">9</text>
                <text x="176" y="52">0</text>
                <text x="192" y="52">1</text>
                <text x="208" y="52">2</text>
                <text x="224" y="52">3</text>
                <text x="240" y="52">4</text>
                <text x="256" y="52">5</text>
                <text x="272" y="52">6</text>
                <text x="288" y="52">7</text>
                <text x="304" y="52">8</text>
                <text x="320" y="52">9</text>
                <text x="336" y="52">0</text>
                <text x="352" y="52">1</text>
                <text x="368" y="52">2</text>
                <text x="384" y="52">3</text>
                <text x="400" y="52">4</text>
                <text x="416" y="52">5</text>
                <text x="432" y="52">6</text>
                <text x="448" y="52">7</text>
                <text x="464" y="52">8</text>
                <text x="480" y="52">9</text>
                <text x="496" y="52">0</text>
                <text x="512" y="52">1</text>
                <text x="36" y="84">Code</text>
                <text x="76" y="84">TBD2</text>
                <text x="300" y="84">Length</text>
                <text x="336" y="84">N</text>
                <text x="44" y="116">SubOpt</text>
                <text x="92" y="116">Code</text>
                <text x="300" y="116">SubOpt</text>
                <text x="356" y="116">Length</text>
                <text x="44" y="148">SubOpt</text>
                <text x="96" y="148">Value</text>
                <text x="44" y="196">SubOpt</text>
                <text x="92" y="196">Code</text>
                <text x="300" y="196">SubOpt</text>
                <text x="356" y="196">Length</text>
                <text x="44" y="228">SubOpt</text>
                <text x="96" y="228">Value</text>
                <text x="132" y="244">..</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
  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
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 | Code TBD2                     | Length N                      |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 | SubOpt Code                   | SubOpt Length                 |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 | SubOpt Value                                                  |
 |                                                               |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 | SubOpt Code                   | SubOpt Length                 |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 | SubOpt Value
 +-+-+-+-+-+-+-...
]]></artwork>
        </artset>
        <t>The option length (N) gives the total number of octets of all sub-options,
with a minimum value of 4 bytes, which is the sub-options header length.</t>
      </section>
      <section anchor="dhcpv6-client-behavior">
        <name>DHCPv6 Client Behavior</name>
        <t>DHCPv6 clients that support the DHCP Rate Option <bcp14>SHOULD</bcp14> include the corresponding OPTION_RATE code in
the Option Request Option (ORO) <xref target="RFC8415"/>. This inclusion explicitly signals client support,
enabling the DHCPv6 server to determine whether to include the rate parameters in its response.
Furthermore, this signaling provides network operators with visibility into client capabilities,
which aids in troubleshooting and resolving customer service quality complaints.</t>
        <t>A client <bcp14>MAY</bcp14> include the OPTION_RATE with any or all sub-options within its DHCPv6 Request messages
to serve as a hint to the server proposing their maximum data rates or preferred rate type
(L2 or L3 rates).</t>
        <t>Providing this hint is <bcp14>OPTIONAL</bcp14>. The manner in which a DHCPv6 server processes these client-provided
hints is implementation-specific. Because the server remains authoritative, the client <bcp14>MUST</bcp14> accept
and apply the rate type ultimately provided by the server in the REPLY message, regardless of the
hint it originally sent.</t>
        <t>Clients <bcp14>MUST</bcp14> ignore the OPTION_RATE when received within a message other than REPLY. If the
OPTION_RATE is present in an ADVERTISE message, the client <bcp14>MUST NOT</bcp14> apply the specified rate limits
to its interfaces. However, the client <bcp14>MAY</bcp14> evaluate this early rate visibility as a selection
criterion to prefer one server's advertisement over another.</t>
      </section>
      <section anchor="dhcpv6-server-behavior">
        <name>DHCPv6 Server Behavior</name>
        <t>A DHCPv6 server <bcp14>MAY</bcp14> embed the OPTION_RATE directly within a REPLY message encapsulated inside
RELAY-REPL messages to explicitly provision the end client. The server <bcp14>MAY</bcp14> include the option within
the RELAY-REPL message to target the corresponding relay agent, instructing it to apply rate limits
locally. The nested relay header architecture of DHCPv6 empowers the server to explicitly address
each relay agent in the path, in addition to the end client, ensuring precise targeting of signaling
parameters.</t>
        <t>If network policy dictates localized traffic management at both the Customer Premises Equipment (CPE)
and the relay node, the server <bcp14>MAY</bcp14> include the OPTION_RATE at all encapsulation levels
simultaneously. When provisioning multiple levels, the server <bcp14>MAY</bcp14> supply different rate values to
each respective node. For example, an operator might configure a relay agent's upstream policer with
a slightly higher rate limit than the CPE's upstream shaper. This operational delta accommodates
minor traffic burstiness from the CPE and prevents premature packet drops at the intermediate access
node. This capability to independently target different nodes along the forwarding path is unique to
the nested relay header architecture of DHCPv6, as DHCPv4 lacks a comparable mechanism for addressing
multiple relay agents distinctly.</t>
        <t>Furthermore, to dynamically update a client's rate limits mid-lease, the server <bcp14>MAY</bcp14> utilize
RECONFIGURE messages to apply updates before the T1 timer expires. By triggering the client to
initiate a Renew or Information-request transaction, this mechanism allows the server to push newly
modified rate parameters without waiting for timer expiration.</t>
      </section>
      <section anchor="dhcpv6-relay-agent-behavior">
        <name>DHCPv6 Relay Agent Behavior</name>
        <t>DHCPv6 Relay Agents, including Lightweight DHCPv6 Relay Agents (LDRA) <xref target="RFC6221"/>, <bcp14>MUST</bcp14> extract and
consume the OPTION_RATE from their corresponding Relay-Reply header. Because the DHCPv6 architecture
provides a dedicated signaling channel for intermediate nodes, relay agents <bcp14>MUST NOT</bcp14> passively
inspect the encapsulated client-facing REPLY payload to extract rate information. Relay agents that
perform localized traffic management <bcp14>MAY</bcp14> utilize these explicitly targeted values to dynamically
instantiate shapers, policers, or Active Queue Management (AQM) disciplines on their
subscriber-facing interfaces.</t>
        <t>In many architectures, the Broadband Network Gateway (BNG) or similar intermediary device serves as
the authoritative policy enforcement point rather than a transparent relay. In such deployments, the
intermediary device <bcp14>MAY</bcp14> populate, modify, or remove the OPTION_RATE destined for the client. This
allows the network edge to inject dynamic rate parameters based on subscriber attributes retrieved
directly from an external Authentication, Authorization, and Accounting (AAA) server, such as RADIUS,
before the message reaches the downstream client.</t>
      </section>
    </section>
    <section anchor="dhcp-snooping">
      <name>DHCP Snooping</name>
      <t>DHCP snooping switches are typically deployed as intermediate Layer 2 devices that passively monitor
DHCP message exchanges to enforce security policies and build binding databases, all without
modifying the DHCP payloads. These devices <bcp14>MAY</bcp14> passively inspect the DHCP Rate Option within messages
destined for clients. By extracting these explicit rate parameters, snooping devices can dynamically
provision appropriate traffic shapers, policers, or hardware queues on the corresponding downstream,
client-facing ports.</t>
    </section>
    <section anchor="pppoe">
      <name>PPPoE</name>
      <t>In Point-to-Point Protocol over Ethernet (PPPoE) <xref target="RFC2516"/> architectures, the Customer Premises
Equipment (CPE) typically employs DHCPv6 over the PPP <xref target="RFC1661"/> link to request an IPv6
Delegated Prefix (IA_PD) <xref target="RFC8415"/>. This encapsulated DHCPv6 exchange provides a standardized
transport mechanism for the explicit DHCP Rate Option. While less prevalent in modern deployments,
DHCPv4 transactions operating within a PPPoE session <bcp14>MAY</bcp14> similarly convey these rate options.</t>
      <t>The foundational processing rules and client behavior for rate options received over PPPoE are
identical to those defined for IP over Ethernet (IPoE) environments.</t>
      <t>If a client receives rate limits embedded within the PPP authentication reply message and concurrently
receives the DHCP OPTION_RATE, the explicitly signaled DHCP OPTION_RATE <bcp14>MUST</bcp14> take priority. This
precedence ensures that the standardized, dynamic DHCP signaling supersedes fragmented or proprietary
rate limits previously negotiated during the PPP authentication phase.</t>
      <t>Because the PPP session dictates the primary logical link state, the applied rate <bcp14>MUST</bcp14> revert to
the device's default configuration under two specific conditions. First, the client <bcp14>MUST</bcp14> reset the
applied limits if it receives a valid DHCP message explicitly signaling rate removal with a
sub-option containing a rate value of zero. Second, the rate <bcp14>MUST</bcp14> be implicitly revoked if the
underlying PPPoE session itself is terminated.</t>
    </section>
    <section anchor="interaction-with-aqm-and-l4s">
      <name>Interaction with AQM and L4S</name>
      <t>Active Queue Management (AQM) mechanisms, as recommended in <xref target="RFC7567"/>, are most effective when
they operate at or near the true bottleneck rate for a given service. In many broadband deployments
today, Customer Premises Equipment (CPE) and intermediate access nodes configure shaping and AQM
parameters against the physical port speed rather than the subscriber's provisioned rate, which can
lead either to persistent queues and excess latency when configured too high, or to underutilization
when configured too low.</t>
      <t>By explicitly signaling per-subscriber upstream and downstream rates via the DHCP Rate Option, this
document enables CPE devices, relay agents, and snooping switches to instantiate shapers and AQM instances
that closely track the actual bottleneck capacity for each subscriber. Placing the bottleneck queue
under control of an AQM that follows the recommendations in <xref target="RFC7567"/> allows operators to limit
queue growth and reduce queuing delay while still efficiently utilizing the contracted bandwidth.
The Low Latency, Low Loss, and Scalable Throughput (L4S) architecture <xref target="RFC9330"/> relies on shallow
queues under an L4S-compatible AQM and on congestion controllers that react promptly to Explicit
Congestion Notification (ECN) signals. Providing accurate rate information to devices at or near the
bottleneck link allows those devices to configure L4S-capable AQMs at the appropriate shaping rate,
so that L4S flows can achieve consistently low queuing delay while still fully utilizing the
subscriber's provisioned service tier. The DHCP Rate Option defined in this document is therefore an
enabler for deploying L4S and other modern AQM schemes in access networks, even though the detailed
design of AQM and congestion control algorithms remains outside the scope of this specification.</t>
    </section>
    <section anchor="errors">
      <name>Errors and Conflicts</name>
      <t>Clients receiving conflicting rate information across DHCPv4 and DHCPv6 <bcp14>SHOULD</bcp14> prefer a rate learned
via DHCPv6 over a rate learned via DHCPv4. Implementations <bcp14>MUST</bcp14> retain the applied rate together with
its source protocol. If the applied rate was learned via DHCPv6 and the corresponding DHCPv6 lease
expires while a valid DHCPv4 lease remains active, the client <bcp14>MUST</bcp14> treat the retained rate as
DHCPv4-derived for the purpose of subsequent updates and continue using that rate until superseded
by a later valid update. If no valid DHCPv4 lease remains active when the DHCPv6 lease expires,
the client <bcp14>MUST</bcp14> reset the applied rate to the device’s default configuration.</t>
      <t>To ensure forward compatibility, clients, servers, and relay agents <bcp14>MUST</bcp14> ignore unrecognized sub-option
codes and continue processing the remainder of the Rate Option.</t>
      <t>Conversely, if a device receives a recognized sub-option containing an unrecognized or reserved value
that dictates the fundamental interpretation of the rate parameters (such as an unassigned Rate Type),
it <bcp14>MUST</bcp14> discard the entire OPTION_RATE. Applying explicitly signaled rates without understanding the
intended networking layer could result in incorrect localized traffic management. In such cases,
the device <bcp14>MUST</bcp14> rely on its default rate configuration.</t>
      <t>If multiple instances of the same sub-option code are present, the last instance <bcp14>MUST</bcp14> be processed.</t>
      <t>A client may receive an OPTION_RATE indicating an Available Rate that exceeds the maximum physical
link speed of its upstream or downstream interfaces (e.g., signaling 2 Gbps to a CPE with a 1 Gbps
WAN port). In such scenarios, the client <bcp14>SHOULD</bcp14> cap the applied traffic shaping, policing, or Active
Queue Management (AQM) parameters to the maximum capacity of the physical link.</t>
    </section>
    <section anchor="operations">
      <name>Operational or Manageability Considerations</name>
      <t>Deploying explicit rate signaling via DHCP introduces several operational benefits and deployment
considerations for network management. When combined with appropriately configured AQM and, where
deployed, L4S-compatible queue management, these per-subscriber rate parameters help to concentrate
congestion control at a well-defined bottleneck and minimize queuing delay in the access segment.</t>
      <t>Implementations <bcp14>SHOULD</bcp14> expose the explicitly signaled, DHCP-learned rate parameters within
Customer Premises Equipment (CPE) management interfaces, such as the local Web User Interface (UI)
or remote management protocols. Providing end-users and operators with immediate visibility into the
locally provisioned service tier significantly reduces support inquiries related to perceived
bandwidth issues and improves overall user satisfaction.</t>
      <t>As noted in <xref format="title" target="errors"/>, a client may receive an OPTION_RATE indicating an available rate that
exceeds the maximum physical link speed of its interfaces. In such scenarios, management interfaces
<bcp14>SHOULD</bcp14> expose both the originally signaled rate value and the effective, capped rate value applied by
the device. Additionally, implementations <bcp14>SHOULD</bcp14> log this discrepancy if logging facilities are
enabled. Capturing and exposing these specific events provides critical telemetry for network
operators, as they frequently indicate a mismatch between the subscriber's provisioned service tier
and their installed physical equipment.</t>
    </section>
    <section anchor="cpe">
      <name>Customer-Owned and Open Source CPE</name>
      <t>A key motivation for this option is to support customer-owned or subscriber-managed CPE, including
retail routers and devices running open-source firmware (for example, OpenWrt) that are not
integrated with operator auto-configuration systems such as TR-069. In these environments, the access
network can expose the provisioned upstream and downstream rates via DHCP, and CPE implementations
that understand this option <bcp14>MAY</bcp14> use the learned values to configure local shaping, policing, queue
management, or simple rate indicators in their user interfaces.</t>
      <t>Because the option format is intentionally simple and identical for DHCPv4 and DHCPv6, it is
straightforward for open-source projects and custom CPE implementations to add support without
requiring coupling to any specific vendor management system. Even if no advanced AQM features are
present, aligning any local rate limits with the signaled values helps avoid misconfiguration and
reduces the likelihood of bufferbloat in the customer-owned equipment.</t>
    </section>
    <section anchor="security">
      <name>Security Considerations</name>
      <t>DHCP messages are typically transmitted as plaintext and are unauthenticated. Consequently, the DHCP
Rate Options defined in this document are vulnerable to interception, modification, or spoofing by
on-path attackers. A malicious actor or a successfully deployed rogue DHCP server could inject
artificially low rate limits to severely throttle a client's connection, resulting in a localized
Denial of Service (DoS).</t>
      <t>The severity of this specific risk is generally no greater than standard DHCP threat vectors, such as
rogue default gateway assignment, DNS hijacking, or IP pool exhaustion, which typically yield a much
more critical and immediate loss of service.</t>
      <t>To mitigate the impact of malicious or malformed options, clients <bcp14>MAY</bcp14> implement basic sanity checks
and threshold validations before applying rate parameters. For example, clients <bcp14>MAY</bcp14> ignore downstream
or upstream rates that fall below a basic operational minimum (e.g., 1000 bps) to prevent complete
session starvation. Furthermore, as mandated in the client behavior specification, if a maliciously
injected rate is impractically high, the client implicitly mitigates this by capping the applied rate
to the physical link capacity.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document requests that IANA assign the same numeric value in both registries
for DHCPv4 and DHCPv6, if feasible.</t>
      <section anchor="dhcpv4-option">
        <name>DHCPv4 Option</name>
        <t>IANA is requested to assign a new DHCP Option Code (TBD1) in the "BOOTP Vendor Extensions and
DHCP Options" registry for OPTION_RATE.</t>
      </section>
      <section anchor="dhcpv6-option">
        <name>DHCPv6 Option</name>
        <t>IANA is requested to assign a new DHCPv6 Option Code (TBD2) in the "Option Codes"
registry for OPTION_RATE.</t>
      </section>
      <section anchor="dhcp-rate-sub-options-registry">
        <name>DHCP Rate Sub-Options Registry</name>
        <t>IANA is requested to create a new registry titled "DHCP Rate Sub-Options" within the
"Dynamic Host Configuration Protocol (DHCP) and Bootstrap Protocol (BOOTP) Parameters"
registry group. This single registry applies to the sub-options encapsulated within both
the DHCPv4 OPTION_RATE (TBD1) and the DHCPv6 OPTION_RATE (TBD2).</t>
        <table>
          <thead>
            <tr>
              <th align="right">Value</th>
              <th align="left">Description</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="right">0</td>
              <td align="left">Reserved</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="right">1</td>
              <td align="left">Available Rate Upstream in bits per second (bps)</td>
              <td align="left">RFC-TBD</td>
            </tr>
            <tr>
              <td align="right">2</td>
              <td align="left">Available Rate Downstream in bits per second (bps)</td>
              <td align="left">RFC-TBD</td>
            </tr>
            <tr>
              <td align="right">3</td>
              <td align="left">Rate Type</td>
              <td align="left">RFC-TBD</td>
            </tr>
            <tr>
              <td align="right">4-255</td>
              <td align="left">Unassigned</td>
              <td align="left"> </td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="dhcp-rate-types-registry">
        <name>DHCP Rate Types Registry</name>
        <t>IANA is requested to create a new registry titled "DHCP Rate Types" within the
"Dynamic Host Configuration Protocol (DHCP) and Bootstrap Protocol (BOOTP) Parameters"
registry group. This registry defines the values for the Rate Type sub-option (Code 3)
used in both the DHCPv4 and DHCPv6 OPTION_RATE.</t>
        <table>
          <thead>
            <tr>
              <th align="right">Value</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="right">0</td>
              <td align="left">Informational</td>
            </tr>
            <tr>
              <td align="right">1</td>
              <td align="left">Reserved</td>
            </tr>
            <tr>
              <td align="right">2</td>
              <td align="left">Layer 2 rate</td>
            </tr>
            <tr>
              <td align="right">3</td>
              <td align="left">Layer 3 rate</td>
            </tr>
            <tr>
              <td align="right">4-255</td>
              <td align="left">Unassigned</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC2131">
          <front>
            <title>Dynamic Host Configuration Protocol</title>
            <author fullname="R. Droms" initials="R." surname="Droms"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>The Dynamic Host Configuration Protocol (DHCP) provides a framework for passing configuration information to hosts on a TCPIP network. DHCP is based on the Bootstrap Protocol (BOOTP), adding the capability of automatic allocation of reusable network addresses and additional configuration options. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2131"/>
          <seriesInfo name="DOI" value="10.17487/RFC2131"/>
        </reference>
        <reference anchor="RFC8415">
          <front>
            <title>Dynamic Host Configuration Protocol for IPv6 (DHCPv6)</title>
            <author fullname="T. Mrugalski" initials="T." surname="Mrugalski"/>
            <author fullname="M. Siodelski" initials="M." surname="Siodelski"/>
            <author fullname="B. Volz" initials="B." surname="Volz"/>
            <author fullname="A. Yourtchenko" initials="A." surname="Yourtchenko"/>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <author fullname="S. Jiang" initials="S." surname="Jiang"/>
            <author fullname="T. Lemon" initials="T." surname="Lemon"/>
            <author fullname="T. Winters" initials="T." surname="Winters"/>
            <date month="November" year="2018"/>
            <abstract>
              <t>This document describes the Dynamic Host Configuration Protocol for IPv6 (DHCPv6): an extensible mechanism for configuring nodes with network configuration parameters, IP addresses, and prefixes. Parameters can be provided statelessly, or in combination with stateful assignment of one or more IPv6 addresses and/or IPv6 prefixes. DHCPv6 can operate either in place of or in addition to stateless address autoconfiguration (SLAAC).</t>
              <t>This document updates the text from RFC 3315 (the original DHCPv6 specification) and incorporates prefix delegation (RFC 3633), stateless DHCPv6 (RFC 3736), an option to specify an upper bound for how long a client should wait before refreshing information (RFC 4242), a mechanism for throttling DHCPv6 clients when DHCPv6 service is not available (RFC 7083), and relay agent handling of unknown messages (RFC 7283). In addition, this document clarifies the interactions between models of operation (RFC 7550). As such, this document obsoletes RFC 3315, RFC 3633, RFC 3736, RFC 4242, RFC 7083, RFC 7283, and RFC 7550.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8415"/>
          <seriesInfo name="DOI" value="10.17487/RFC8415"/>
        </reference>
        <reference anchor="RFC3046">
          <front>
            <title>DHCP Relay Agent Information Option</title>
            <author fullname="M. Patrick" initials="M." surname="Patrick"/>
            <date month="January" year="2001"/>
            <abstract>
              <t>Newer high-speed public Internet access technologies call for a high- speed modem to have a local area network (LAN) attachment to one or more customer premise hosts. It is advantageous to use the Dynamic Host Configuration Protocol (DHCP) as defined in RFC 2131 to assign customer premise host IP addresses in this environment. However, a number of security and scaling problems arise with such "public" DHCP use. This document describes a new DHCP option to address these issues. This option extends the set of DHCP options as defined in RFC 2132. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3046"/>
          <seriesInfo name="DOI" value="10.17487/RFC3046"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="TR101">
          <front>
            <title>Migration to Ethernet-Based Broadband Aggregation</title>
            <author>
              <organization>Broadband Forum</organization>
            </author>
            <date year="2011" month="July"/>
          </front>
          <seriesInfo name="TR" value="101 Issue 2"/>
        </reference>
        <reference anchor="TR069">
          <front>
            <title>CPE WAN Management Protocol</title>
            <author>
              <organization>Broadband Forum</organization>
            </author>
            <date year="2020" month="June"/>
          </front>
          <seriesInfo name="TR" value="069 Issue 6"/>
        </reference>
        <reference anchor="G.984.1">
          <front>
            <title>Gigabit-capable passive optical networks (GPON): General characteristics</title>
            <author>
              <organization>ITU-T</organization>
            </author>
            <date year="2008" month="March"/>
          </front>
          <seriesInfo name="ITU-T Recommendation" value="G.984.1"/>
        </reference>
        <reference anchor="RFC7567">
          <front>
            <title>IETF Recommendations Regarding Active Queue Management</title>
            <author fullname="F. Baker" initials="F." role="editor" surname="Baker"/>
            <author fullname="G. Fairhurst" initials="G." role="editor" surname="Fairhurst"/>
            <date month="July" year="2015"/>
            <abstract>
              <t>This memo presents recommendations to the Internet community concerning measures to improve and preserve Internet performance. It presents a strong recommendation for testing, standardization, and widespread deployment of active queue management (AQM) in network devices to improve the performance of today's Internet. It also urges a concerted effort of research, measurement, and ultimate deployment of AQM mechanisms to protect the Internet from flows that are not sufficiently responsive to congestion notification.</t>
              <t>Based on 15 years of experience and new research, this document replaces the recommendations of RFC 2309.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="197"/>
          <seriesInfo name="RFC" value="7567"/>
          <seriesInfo name="DOI" value="10.17487/RFC7567"/>
        </reference>
        <reference anchor="RFC9330">
          <front>
            <title>Low Latency, Low Loss, and Scalable Throughput (L4S) Internet Service: Architecture</title>
            <author fullname="B. Briscoe" initials="B." role="editor" surname="Briscoe"/>
            <author fullname="K. De Schepper" initials="K." surname="De Schepper"/>
            <author fullname="M. Bagnulo" initials="M." surname="Bagnulo"/>
            <author fullname="G. White" initials="G." surname="White"/>
            <date month="January" year="2023"/>
            <abstract>
              <t>This document describes the L4S architecture, which enables Internet applications to achieve low queuing latency, low congestion loss, and scalable throughput control. L4S is based on the insight that the root cause of queuing delay is in the capacity-seeking congestion controllers of senders, not in the queue itself. With the L4S architecture, all Internet applications could (but do not have to) transition away from congestion control algorithms that cause substantial queuing delay and instead adopt a new class of congestion controls that can seek capacity with very little queuing. These are aided by a modified form of Explicit Congestion Notification (ECN) from the network. With this new architecture, applications can have both low latency and high throughput.</t>
              <t>The architecture primarily concerns incremental deployment. It defines mechanisms that allow the new class of L4S congestion controls to coexist with 'Classic' congestion controls in a shared network. The aim is for L4S latency and throughput to be usually much better (and rarely worse) while typically not impacting Classic performance.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9330"/>
          <seriesInfo name="DOI" value="10.17487/RFC9330"/>
        </reference>
        <reference anchor="RFC2865">
          <front>
            <title>Remote Authentication Dial In User Service (RADIUS)</title>
            <author fullname="C. Rigney" initials="C." surname="Rigney"/>
            <author fullname="S. Willens" initials="S." surname="Willens"/>
            <author fullname="A. Rubens" initials="A." surname="Rubens"/>
            <author fullname="W. Simpson" initials="W." surname="Simpson"/>
            <date month="June" year="2000"/>
            <abstract>
              <t>This document describes a protocol for carrying authentication, authorization, and configuration information between a Network Access Server which desires to authenticate its links and a shared Authentication Server. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2865"/>
          <seriesInfo name="DOI" value="10.17487/RFC2865"/>
        </reference>
        <reference anchor="RFC2516">
          <front>
            <title>A Method for Transmitting PPP Over Ethernet (PPPoE)</title>
            <author fullname="L. Mamakos" initials="L." surname="Mamakos"/>
            <author fullname="K. Lidl" initials="K." surname="Lidl"/>
            <author fullname="J. Evarts" initials="J." surname="Evarts"/>
            <author fullname="D. Carrel" initials="D." surname="Carrel"/>
            <author fullname="D. Simone" initials="D." surname="Simone"/>
            <author fullname="R. Wheeler" initials="R." surname="Wheeler"/>
            <date month="February" year="1999"/>
            <abstract>
              <t>This document describes how to build PPP sessions and encapsulate PPP packets over Ethernet. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2516"/>
          <seriesInfo name="DOI" value="10.17487/RFC2516"/>
        </reference>
        <reference anchor="RFC1661">
          <front>
            <title>The Point-to-Point Protocol (PPP)</title>
            <author fullname="W. Simpson" initials="W." role="editor" surname="Simpson"/>
            <date month="July" year="1994"/>
            <abstract>
              <t>This document defines the PPP organization and methodology, and the PPP encapsulation, together with an extensible option negotiation mechanism which is able to negotiate a rich assortment of configuration parameters and provides additional management functions. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="51"/>
          <seriesInfo name="RFC" value="1661"/>
          <seriesInfo name="DOI" value="10.17487/RFC1661"/>
        </reference>
        <reference anchor="RFC6221">
          <front>
            <title>Lightweight DHCPv6 Relay Agent</title>
            <author fullname="D. Miles" initials="D." role="editor" surname="Miles"/>
            <author fullname="S. Ooghe" initials="S." surname="Ooghe"/>
            <author fullname="W. Dec" initials="W." surname="Dec"/>
            <author fullname="S. Krishnan" initials="S." surname="Krishnan"/>
            <author fullname="A. Kavanagh" initials="A." surname="Kavanagh"/>
            <date month="May" year="2011"/>
            <abstract>
              <t>This document proposes a Lightweight DHCPv6 Relay Agent (LDRA) that is used to insert relay agent options in DHCPv6 message exchanges identifying client-facing interfaces. The LDRA can be implemented in existing access nodes (such as Digital Subscriber Link Access Multiplexers (DSLAMs) and Ethernet switches) that do not support IPv6 control or routing functions. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6221"/>
          <seriesInfo name="DOI" value="10.17487/RFC6221"/>
        </reference>
      </references>
    </references>
    <?line 728?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The authors would like to thank Glenn Deen and Jason Livingood for their valuable
review comments and discussion, which helped to significantly improve the clarity,
applicability, and operational guidance of this document.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
9dz6v1rzEsMhmAAA

-->

</rfc>
