<?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.24 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-tojens-dhcp-option-concat-considerations-01" category="info" submissionType="IETF" updates="3396" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.28.0 -->
  <front>
    <title>DHCP Option Concatenation Considerations</title>
    <seriesInfo name="Internet-Draft" value="draft-tojens-dhcp-option-concat-considerations-01"/>
    <author initials="T." surname="Jensen" fullname="Tommy Jensen">
      <organization>Microsoft</organization>
      <address>
        <email>tojens.ietf@gmail.com</email>
      </address>
    </author>
    <author initials="M." surname="Justel" fullname="Milan Justel">
      <organization>Microsoft</organization>
      <address>
        <email>milanjustel@microsoft.com</email>
      </address>
    </author>
    <date year="2025" month="March" day="03"/>
    <area>INT</area>
    <workgroup>dhc</workgroup>
    <keyword>concatenation</keyword>
    <keyword>DHCP</keyword>
    <abstract>
      <?line 34?>

<t>DHCP has a length limit of 255 on individual options because of its one-byte
length field for options. To accommodate longer options, splitting option data
across multiple instances of the same Option Type is defined by RFC 3396. 
However, this mechanism was defined to require support for all option types. This has led
to real-world implementations in the years since the RFC was published to
deviate from these requirements to avoid breaking basic functionality. This
document updates RFC 3396 to be more flexible regarding when DHCP agents are
required to concatenate options to reflect deployement experiences.</t>
    </abstract>
  </front>
  <middle>
    <?line 46?>

<section anchor="introduction">
      <name>Introduction</name>
      <t><xref target="RFC3396"/> defines how DHCP agents are to split and concatenate option data
within an DHCP message. This has proven to be valuable as more DHCP options are
defined that require support for concatenation as their data can exceed the 255
octet limit for options. Examples include <xref target="RFC4702"/>, <xref target="RFC6731"/> (as a <bcp14>MAY</bcp14>),
<xref target="RFC7291"/>, <xref target="RFC8572"/>, <xref target="RFC8973"/>, and <xref target="RFC9463"/>.</t>
      <t>However, the way that <xref target="RFC3396"/> defined concatenation is not the way it is
supported by major DHCP agent implementations today. Additionally, <xref target="RFC3396"/>
allows for non-sensical deployments, such as handling multiple Lease Times, because
it requires concatenations whenever any option is duplicated. As a result, new or existing
implementors of DHCP will find real-world behavior differs from the
documented standard.</t>
      <t>This document updates <xref target="RFC3396"/> to clarify how option
concatenation works in practice along with why it needs to differ from the
previous standard. It is not intended to invent new DHCP mechanisms; rather, it
clarifies with the benefit of hindsight how DHCP behaves in practice and what
implementors need to account for.</t>
    </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?>

</section>
    <section anchor="previous-definition-of-concatenation">
      <name>Previous Definition of Concatenation</name>
      <t><xref target="RFC3396"/> defines the terms "concatenation-requiring" and
"non-concatenation-requiring" to describe DHCP Options. While at multiple points
in the document it requires implementors to handle concatenation of Options
defined as concatenation-requiring, it also contains the following text which
effectively requires implementors to handle concatenation of either Option type:</t>
      <t>"However, an implementation which
  supports any concatenation-requiring option <bcp14>MUST</bcp14> be capable of
  concatenating received options for both concatenation-requiring and
  non-concatenation-requiring options."</t>
    </section>
    <section anchor="challenges">
      <name>Implementation Challenges</name>
      <t>In combination with the only permitted use of duplicate instances of an option
type in the same DHCP message being option data splitting that then requires
concatenation, this means that there is no way to recover from real-world
DHCP deployment mistakes that can otherwise be handled under Jon Postel's
Robustness Principle <xref target="RFC791"/>.</t>
      <t>For example, if a DHCP server sends two instances of an option type with fixed
length, such as Option 51 (IP Address Lease Time) <xref target="RFC2132"/>, concatenating
these into an eight-octet payload will result in a protocol violation: Option 51
has to be four octets long exactly. In common deployments of DHCP agents today,
we observe that this situation is handled by choosing one of the option
instances that has the correct length to accept as the Option 51 value and
ignoring the other instances. If implementations decided instead to strictly
adhere to always concatenating multiple instances of the same option type, this
would entirely block IPv4 network connectivity for the network stack.</t>
    </section>
    <section anchor="what-concatenation-intends-to-achieve">
      <name>What Concatenation Intends to Achieve</name>
      <t>DHCP option concatenation is intended to allow option data to exceed the 255
octet limit imposed by its single-octet length field. This can also be used for
splitting options across DHCP message section boundaries when the Overload
Option indicates that the sname field, file field, or both also contain option
data.</t>
    </section>
    <section anchor="changes-to-how-options-are-split">
      <name>Changes to How Options are Split</name>
      <t>To support the intention of option concatenation without causing the challenges
described in (<xref target="challenges"/>), this document updates <xref target="RFC3396"/> to limit
concatenation to concatenation-requiring options. DHCP agents <bcp14>SHOULD NOT</bcp14> provide
multiple instances of an option type unless that option type is defined as
concatenation-requiring. To split non-concatenation-requiring options is
out-of-spec behavior that leads to implementation-specific message processing.</t>
    </section>
    <section anchor="changes-to-how-options-are-concatenated">
      <name>Changes to How Options are Concatenated</name>
      <t>When DHCP agents receive messages with split options that are concatenation-
required options, they <bcp14>MUST</bcp14> concatenate the duplicate concatenation-required
options as described in <xref target="RFC3396"/>.</t>
      <t>If DHCP agents sending messages never split non-concatenation-requiring options,
no further guidance would be needed. However, real-world deployments have seen
out-of-spec behavior that clients may wish to be defensive against and liberal
in parsing. Therefore, when DHCP agents receive messages with split options that
are not concatenation-requiring options, they <bcp14>MAY</bcp14> make best-effort attempts to
interpret the message or fail processing entirely as a protocol error. This is
implementation-specific, though some reasonable suggestions are broken down in
this section based on four types of situations involving non-concatenation-
requiring options still being split (even though they should not be).</t>
      <section anchor="duplicates-of-options-with-defined-concatenation-behavior">
        <name>Duplicates of Options with Defined Concatenation Behavior</name>
        <t>Some non-concatenation-requiring options may still define how they are to be
processed when DHCP agents receive multiple instances of the option type. In
this case, DHCP agents <bcp14>SHOULD</bcp14> follow the guidance defined by the option's
standard.</t>
      </section>
      <section anchor="duplicates-of-fixed-length-options">
        <name>Duplicates of Fixed-length Options</name>
        <t>Fixed-length options are options that only allow a single length value, such as
Option 51 Lease Time which can only be four octets long. DHCP agents receiving
messages with more than one instance of fixed-length non-concatenation-requiring
options <bcp14>MAY</bcp14> choose to attempt processing one of the instances if it has the
correct length.</t>
      </section>
      <section anchor="duplicates-of-multiple-of-fixed-length-options">
        <name>Duplicates of Multiple-of-fixed-length Options</name>
        <t>Multiple-of-fixed-length options are options that are lists of fixed-length
elements, such as Option 6 DNS Name servers which <bcp14>MUST</bcp14> be a multiple of four
octets long. DHCP agents receiving messages with more than one instance of
multiple-of-fixed-length options <bcp14>MAY</bcp14> choose to attempt processing one of the
instances if it has a correct length.</t>
        <t>It <bcp14>MAY</bcp14> also choose to concatenate the options if the length of the concatenated
option data is a correct length (which may indicate a need to split a long list
because the total length is longer than 255 octets). DHCP agents <bcp14>MAY</bcp14> choose to
only do this if the length of the concatenated option data is greater than 255
octets if it wants to reduce how permissive it is.</t>
      </section>
      <section anchor="duplicates-of-arbitrary-length-options">
        <name>Duplicates of Arbitrary-length Options</name>
        <t>Arbitrary-length options are options that may have any non-zero octet length,
such as Option 114 Captive-Portal <xref target="RFC8910"/>. DHCP agents receiving messages
with more than one instance of arbitrary-length options <bcp14>MAY</bcp14> concatenate or
choose one instance to process. It <bcp14>MAY</bcp14> choose to do some validation of the
content that would result from each approach, meaning if the data only makes
sense in the context of the option's definition, it could use that to decide
which approach to take.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>This document changes the conditions under which a DHCP agent accepts or rejects
option data. The only way this might reduce a DHCP agent's security posture
would be if it would have previously refused to process data from the network
that it will now process. However, this was always possible for an attacker
crafting DHCP messages. Any attacker capable of creating a malformed message
could instead craft a well-formed message (which would be processed in the
same way before and after this document). Therefore, this document does not
introduce any additional security considerations beyond the previous
definitions of DHCP and option concatenation.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC3396">
          <front>
            <title>Encoding Long Options in the Dynamic Host Configuration Protocol (DHCPv4)</title>
            <author fullname="T. Lemon" initials="T." surname="Lemon"/>
            <author fullname="S. Cheshire" initials="S." surname="Cheshire"/>
            <date month="November" year="2002"/>
          </front>
          <seriesInfo name="RFC" value="3396"/>
          <seriesInfo name="DOI" value="10.17487/RFC3396"/>
        </reference>
        <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>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC4702">
          <front>
            <title>The Dynamic Host Configuration Protocol (DHCP) Client Fully Qualified Domain Name (FQDN) Option</title>
            <author fullname="M. Stapp" initials="M." surname="Stapp"/>
            <author fullname="B. Volz" initials="B." surname="Volz"/>
            <author fullname="Y. Rekhter" initials="Y." surname="Rekhter"/>
            <date month="October" year="2006"/>
            <abstract>
              <t>This document describes a Dynamic Host Configuration Protocol for IPv4 (DHCPv4) option that can be used to exchange information about a DHCPv4 client's fully qualified domain name and about responsibility for updating the DNS RR related to the client's address assignment. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4702"/>
          <seriesInfo name="DOI" value="10.17487/RFC4702"/>
        </reference>
        <reference anchor="RFC6731">
          <front>
            <title>Improved Recursive DNS Server Selection for Multi-Interfaced Nodes</title>
            <author fullname="T. Savolainen" initials="T." surname="Savolainen"/>
            <author fullname="J. Kato" initials="J." surname="Kato"/>
            <author fullname="T. Lemon" initials="T." surname="Lemon"/>
            <date month="December" year="2012"/>
            <abstract>
              <t>A multi-interfaced node is connected to multiple networks, some of which might be utilizing private DNS namespaces. A node commonly receives recursive DNS server configuration information from all connected networks. Some of the recursive DNS servers might have information about namespaces other servers do not have. When a multi-interfaced node needs to utilize DNS, the node has to choose which of the recursive DNS servers to use. This document describes DHCPv4 and DHCPv6 options that can be used to configure nodes with information required to perform informed recursive DNS server selection decisions. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6731"/>
          <seriesInfo name="DOI" value="10.17487/RFC6731"/>
        </reference>
        <reference anchor="RFC7291">
          <front>
            <title>DHCP Options for the Port Control Protocol (PCP)</title>
            <author fullname="M. Boucadair" initials="M." surname="Boucadair"/>
            <author fullname="R. Penno" initials="R." surname="Penno"/>
            <author fullname="D. Wing" initials="D." surname="Wing"/>
            <date month="July" year="2014"/>
            <abstract>
              <t>This document specifies DHCP (IPv4 and IPv6) options to configure hosts with Port Control Protocol (PCP) server IP addresses. The use of DHCPv4 or DHCPv6 depends on the PCP deployment scenarios. The set of deployment scenarios to which DHCPv4 or DHCPv6 can be applied is outside the scope of this document.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7291"/>
          <seriesInfo name="DOI" value="10.17487/RFC7291"/>
        </reference>
        <reference anchor="RFC8572">
          <front>
            <title>Secure Zero Touch Provisioning (SZTP)</title>
            <author fullname="K. Watsen" initials="K." surname="Watsen"/>
            <author fullname="I. Farrer" initials="I." surname="Farrer"/>
            <author fullname="M. Abrahamsson" initials="M." surname="Abrahamsson"/>
            <date month="April" year="2019"/>
            <abstract>
              <t>This document presents a technique to securely provision a networking device when it is booting in a factory-default state. Variations in the solution enable it to be used on both public and private networks. The provisioning steps are able to update the boot image, commit an initial configuration, and execute arbitrary scripts to address auxiliary needs. The updated device is subsequently able to establish secure connections with other systems. For instance, a device may establish NETCONF (RFC 6241) and/or RESTCONF (RFC 8040) connections with deployment-specific network management systems.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8572"/>
          <seriesInfo name="DOI" value="10.17487/RFC8572"/>
        </reference>
        <reference anchor="RFC8973">
          <front>
            <title>DDoS Open Threat Signaling (DOTS) Agent Discovery</title>
            <author fullname="M. Boucadair" initials="M." surname="Boucadair"/>
            <author fullname="T. Reddy.K" initials="T." surname="Reddy.K"/>
            <date month="January" year="2021"/>
            <abstract>
              <t>This document specifies mechanisms to configure DDoS Open Threat Signaling (DOTS) clients with their DOTS servers. The discovery procedure also covers the DOTS signal channel Call Home. It can be useful to know the appropriate DOTS server for a given location in order to engage mitigation actions. This is true even in cases where the DOTS client cannot localize the attack: cases where it only knows that some resources are under attack and that help is needed.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8973"/>
          <seriesInfo name="DOI" value="10.17487/RFC8973"/>
        </reference>
        <reference anchor="RFC9463">
          <front>
            <title>DHCP and Router Advertisement Options for the Discovery of Network-designated Resolvers (DNR)</title>
            <author fullname="M. Boucadair" initials="M." role="editor" surname="Boucadair"/>
            <author fullname="T. Reddy.K" initials="T." role="editor" surname="Reddy.K"/>
            <author fullname="D. Wing" initials="D." surname="Wing"/>
            <author fullname="N. Cook" initials="N." surname="Cook"/>
            <author fullname="T. Jensen" initials="T." surname="Jensen"/>
            <date month="November" year="2023"/>
            <abstract>
              <t>This document specifies new DHCP and IPv6 Router Advertisement options to discover encrypted DNS resolvers (e.g., DNS over HTTPS, DNS over TLS, and DNS over QUIC). Particularly, it allows a host to learn an Authentication Domain Name together with a list of IP addresses and a set of service parameters to reach such encrypted DNS resolvers.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9463"/>
          <seriesInfo name="DOI" value="10.17487/RFC9463"/>
        </reference>
        <reference anchor="RFC791">
          <front>
            <title>Internet Protocol</title>
            <author fullname="J. Postel" initials="J." surname="Postel"/>
            <date month="September" year="1981"/>
          </front>
          <seriesInfo name="STD" value="5"/>
          <seriesInfo name="RFC" value="791"/>
          <seriesInfo name="DOI" value="10.17487/RFC0791"/>
        </reference>
        <reference anchor="RFC2132">
          <front>
            <title>DHCP Options and BOOTP Vendor Extensions</title>
            <author fullname="S. Alexander" initials="S." surname="Alexander"/>
            <author fullname="R. Droms" initials="R." surname="Droms"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>This document specifies the current set of DHCP options. Future options will be specified in separate RFCs. The current list of valid options is also available in ftp://ftp.isi.edu/in-notes/iana/assignments. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2132"/>
          <seriesInfo name="DOI" value="10.17487/RFC2132"/>
        </reference>
        <reference anchor="RFC8910">
          <front>
            <title>Captive-Portal Identification in DHCP and Router Advertisements (RAs)</title>
            <author fullname="W. Kumari" initials="W." surname="Kumari"/>
            <author fullname="E. Kline" initials="E." surname="Kline"/>
            <date month="September" year="2020"/>
            <abstract>
              <t>In many environments offering short-term or temporary Internet access (such as coffee shops), it is common to start new connections in a captive portal mode. This highly restricts what the user can do until the user has satisfied the captive portal conditions.</t>
              <t>This document describes a DHCPv4 and DHCPv6 option and a Router Advertisement (RA) option to inform clients that they are behind some sort of captive portal enforcement device, and that they will need to satisfy the Captive Portal conditions to get Internet access. It is not a full solution to address all of the issues that clients may have with captive portals; it is designed to be one component of a standardized approach for hosts to interact with such portals. While this document defines how the network operator may convey the captive portal API endpoint to hosts, the specific methods of satisfying and interacting with the captive portal are out of scope of this document.</t>
              <t>This document replaces RFC 7710, which used DHCP code point 160. Due to a conflict, this document specifies 114. Consequently, this document also updates RFC 3679.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8910"/>
          <seriesInfo name="DOI" value="10.17487/RFC8910"/>
        </reference>
      </references>
    </references>
    <?line 213?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Thank you to Dieter Siegmund, Stuart Cheshire, and Ted Lemon for their comments and suggestions.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
JAAA

-->

</rfc>
