<?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.19 (Ruby 3.0.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-tojens-dhcp-option-concat-considerations-00" category="info" submissionType="IETF" updates="3396" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.23.2 -->
  <front>
    <title>DHCP Option Concatenation Considerations</title>
    <seriesInfo name="Internet-Draft" value="draft-tojens-dhcp-option-concat-considerations-00"/>
    <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="2024" month="October" day="21"/>
    <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 <xref target="RFC3396"/>. 
However, this mechanism is required to be supported for all options. This leads
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. New or existing
implementors of DHCP will find real-world behavior will differ from the
documented standard. 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.</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-concatenaton-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 octent 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 207?>

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

-->

</rfc>
