rfc9869xml2.original.xml   rfc9869.xml 
<?xml version="1.0" encoding="US-ASCII"?> <?xml version='1.0' encoding='UTF-8'?>
<!-- This template is for creating an Internet Draft using xml2rfc,
which is available here: http://xml.resource.org. -->
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!-- One method to get references from the online citation libraries.
There has to be one entity for each item to be referenced.
An alternate method (rfc include) is described in the references. -->
<!ENTITY RFC768 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referenc
e.RFC.0768.xml">
<!ENTITY RFC1191 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen
ce.RFC.1191.xml">
<!ENTITY RFC2119 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen
ce.RFC.2119.xml">
<!ENTITY RFC4821 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen
ce.RFC.4821.xml">
<!ENTITY RFC8085 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen
ce.RFC.8085.xml">
<!ENTITY RFC8174 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen
ce.RFC.8174.xml">
<!ENTITY RFC8201 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen
ce.RFC.8201.xml">
<!ENTITY RFC8304 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen
ce.RFC.8304.xml">
<!ENTITY RFC8899 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen
ce.RFC.8899.xml">
<!ENTITY I-D.ietf-tsvwg-udp-options SYSTEM "http://xml2rfc.tools.ietf.org/public
/rfc/bibxml3/reference.I-D.draft-ietf-tsvwg-udp-options-39.xml">
]>
<!-- ?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?-->
<!-- For a complete list and description of processing instructions (PIs),
please see http://xml.resource.org/authoring/README.html. -->
<!-- Below are generally applicable Processing Instructions (PIs) that most I-Ds
might want to use.
(Here they are set differently than their defaults in xml2rfc v1.32) -->
<?rfc strict="yes" ?>
<!-- give errors regarding ID-nits and DTD validation -->
<!-- control the table of contents (ToC) -->
<?rfc toc="yes"?>
<!-- generate a ToC -->
<?rfc tocdepth="4"?>
<!-- the number of levels of subsections in ToC. default: 3 -->
<!-- control references -->
<?rfc symrefs="yes"?>
<!-- use symbolic references tags, i.e, [RFC2119] instead of [1] -->
<?rfc sortrefs="yes" ?>
<!-- sort the reference entries alphabetically -->
<!-- control vertical white space
(using these PIs as follows is recommended by the RFC Editor) -->
<?rfc compact="yes" ?>
<!-- do not start each main section on a new page -->
<?rfc subcompact="no" ?>
<!-- keep one blank line between list items -->
<!-- end of list of popular I-D processing instructions -->
<rfc category="std" docName="draft-ietf-tsvwg-udp-options-dplpmtud-15"
ipr="trust200902">
<!-- category values: std, bcp, info, exp, and historic
ipr values: trust200902, noModificationTrust200902, noDerivativesTrust20090
2,
or pre5378Trust200902
you can add the attributes updates="NNNN" and obsoletes="NNNN"
they will automatically be output with "(if approved)" -->
<!-- ***** FRONT MATTER ***** -->
<front>
<!-- The abbreviated title is used in the page header - it is only neces
sary if the
full title is longer than 39 characters -->
<title abbrev="UDPO DPLPMTUD">Datagram PLPMTUD for UDP Options</title>
<!-- add 'role="editor"' below for the editors if appropriate --> <!DOCTYPE rfc [
<!ENTITY nbsp "&#160;">
<!ENTITY zwsp "&#8203;">
<!ENTITY nbhy "&#8209;">
<!ENTITY wj "&#8288;">
]>
<!-- Another author who claims to be an editor --> <rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="std" docName="draft-ie tf-tsvwg-udp-options-dplpmtud-15" number="9869" consensus="true" ipr="trust20090 2" obsoletes="" updates="" submissionType="IETF" xml:lang="en" tocInclude="true" tocDepth="4" symRefs="true" sortRefs="true" version="3">
<front>
<title abbrev="UDP Options with DPLPMTUD">Datagram Packetization Layer P
ath MTU Discovery (DPLPMTUD) for UDP Options</title>
<seriesInfo name="RFC" value="9869"/>
<author fullname="Godred Fairhurst" initials="G" surname="Fairhurst"> <author fullname="Godred Fairhurst" initials="G" surname="Fairhurst">
<organization>University of Aberdeen</organization> <organization>University of Aberdeen</organization>
<address>
<address> <postal>
<postal> <street>School of Engineering</street>
<street>School of Engineering</street> <street>Fraser Noble Building</street>
<street>Fraser Noble Building</street> <city>Aberdeen</city>
<city>Aberdeen</city> <code>AB24 3UE</code>
<region></region> <country>United Kingdom</country>
<code>AB24 3UE</code> </postal>
<country>UK</country> <email>gorry@erg.abdn.ac.uk</email>
</postal> </address>
</author>
<email>gorry@erg.abdn.ac.uk</email> <author fullname="Tom Jones" initials="T" surname="Jones">
</address> <organization>University of Aberdeen</organization>
</author> <address>
<postal>
<author fullname="Tom Jones" initials="T" surname="Jones"> <street>School of Engineering</street>
<organization>University of Aberdeen</organization> <street>Fraser Noble Building</street>
<city>Aberdeen</city>
<address> <code>AB24 3UE</code>
<postal> <country>United Kingdom</country>
<street>School of Engineering</street> </postal>
<street>Fraser Noble Building</street> <email>tom@erg.abdn.ac.uk</email>
<city>Aberdeen</city> </address>
<region></region> </author>
<code>AB24 3UE</code> <date month="September" year="2025"/>
<country>UK</country>
<country>UK</country>
</postal>
<email>tom@erg.abdn.ac.uk</email>
</address>
</author>
<date day="20" month="February" year="2025" />
<!-- Meta-data Declarations -->
<area>Transport</area>
<workgroup>Internet Engineering Task Force</workgroup>
<!-- WG name at the upperleft corner of the doc,
IETF is fine for individual submissions. If this element is not
present, the default is "Network Working Group", which is used by the
RFC Editor as a nod to the history of the IETF. -->
<keyword>UDP UDP-Options PMTUD PLPMTUD DPLPMTUD Datagram</keyword> <area>WIT</area>
<workgroup>tsvwg</workgroup>
<abstract> <keyword>UDP</keyword>
<t>This document specifies how a UDP Options sender implements Datag <keyword>UDP-Options</keyword>
ram <keyword>PMTUD</keyword>
Packetization Layer Path Maximum Transmission Unit Discovery (DP <keyword>PLPMTUD</keyword>
LPMTUD) <keyword>DPLPMTUD</keyword>
as a robust method for Path Maximum Transmission Unit discovery. <keyword>Datagram</keyword>
This
method uses the UDP Options
packetization layer. It allows an application to discover the
largest size of datagram that can be sent
across a network path. It also provides a way to allow
the application to periodically verify the current maximum
packet size supported by a path and to update this when required
.</t>
</abstract>
</front>
<middle> <abstract>
<section title="Introduction"> <t>This document specifies how a UDP Options sender implements Datagram
<t>The User Datagram Protocol <xref target="RFC0768"></xref> offers Packetization Layer Path MTU Discovery (DPLPMTUD)
a as a robust method for Path MTU Discovery (PMTUD). This
method uses the UDP Options packetization layer. It allows an
application to discover the largest size of datagram that can be sent
across a network path. It also provides a way to allow the application
to periodically verify the current Maximum Packet Size (MPS) supported by
a
path and to update this when required.</t>
</abstract>
</front>
<middle>
<section numbered="true" toc="default">
<name>Introduction</name>
<t>The User Datagram Protocol (UDP) <xref target="RFC0768" format="default
"/> offers a
minimal transport service on top of IP and is frequently used as a minimal transport service on top of IP and is frequently used as a
substrate for other protocols. Section 3.2 of UDP Guidelines <xref substrate for other protocols. Section <xref target="RFC8085" sectio
target="RFC8085"></xref> recommends that applications implement some nFormat="bare" section="3.2"/> of UDP Guidelines <xref target="RFC8085" format="
form of Path MTU discovery to avoid the generation of IP fragments:< default"/> recommends that applications implement some
/t> form of Path MTU Discovery (PMTUD) to avoid the generation of IP fra
gments:</t>
<t>"Consequently, an application SHOULD either use the path MTU <blockquote>Consequently, an application <bcp14>SHOULD</bcp14> either use
the path MTU
information provided by the IP layer or implement Path MTU Discovery information provided by the IP layer or implement Path MTU Discovery
(PMTUD)".</t> (PMTUD) itself [RFC1191] [RFC1981] [RFC4821] to determine whether th
e
<t>The UDP API <xref target="RFC8304"></xref> offers calls for path to a destination will support its desired message size without
fragmentation.</blockquote>
<t>The UDP API <xref target="RFC8304" format="default"/> offers calls for
applications to receive ICMP Packet Too Big (PTB) messages and to applications to receive ICMP Packet Too Big (PTB) messages and to
control the maximum size of datagrams that are sent, but it does not offer control the maximum size of datagrams that are sent, but it does not offer
any automated mechanisms for an application to discover the maximum any automated mechanisms for an application to discover the MPS
packet size supported by a path. Upper Layer protocols, which supported by a path. Upper Layer protocols, which
includes applications, can include applications, can
implement mechanisms for Path MTU discovery above the UDP API.</t> implement mechanisms for PMTUD above the UDP API.</t>
<t>Packetization Layer Path MTU Discovery (PLPMTUD) <xref target="RFC4821"
<t>Packetization Layer Path MTU Discovery (PLPMTUD) <xref target="RF format="default"/>
C4821"></xref> describes a method for a bidirectional Packetization Layer (PL)
describes a method for a bi-directional Packetization Layer (PL)
to search for the largest Packetization Layer PMTU (PLPMTU) supporte d on to search for the largest Packetization Layer PMTU (PLPMTU) supporte d on
a path. Datagram PLPMTUD (DPLPMTUD) <xref target="RFC8899"></xref> a path. DPLPMTUD <xref target="RFC8899" format="default"/>
specifies this support for datagram transports. PLPMTUD and DPLPMTUD specifies this support for datagram transports. PLPMTUD and DPLPMTUD
gain robustness by using a probing mechanism that does not solely re ly on gain robustness by using a probing mechanism that does not solely re ly on
ICMP PTB messages and works on paths that drop ICMP PTB messages.</t > ICMP PTB messages and works on paths that drop ICMP PTB messages.</t >
<t>UDP Options <xref target="RFC9868" format="default"/> supplies
<t>UDP Options <xref target="I-D.ietf-tsvwg-udp-options"></xref> sup
plies
functionality that can be used to implement DPLPMTUD within the functionality that can be used to implement DPLPMTUD within the
transport service or in an Upper Layer protocol (including an applic ation) transport service or in an Upper Layer protocol (including an applic ation)
that uses UDP Options. that uses UDP Options.
This document specifies how DPLPMTUD using UDP Options This document specifies how DPLPMTUD using UDP Options
is implemented (Section 6.1 of <xref target="RFC8899"></xref>), is implemented (<xref target="RFC8899" sectionFormat="of" section="6 .1"/>)
and requires support to be enabled at both the sender and receiver. and requires support to be enabled at both the sender and receiver.
</t> </t>
<t>Implementing DPLPMTUD within the
<t>Implementing DPLPMTUD within the
transport service above UDP Options avoids the need for transport service above UDP Options avoids the need for
each Upper Layer protocol to implement the DPLPMTUD each Upper Layer protocol to implement the DPLPMTUD
method. It provides a standard method for applications to discover t he method. It provides a standard method for applications to discover t he
current maximum packet size for a path and to detect when this current MPS for a path and to detect when this
changes. It can be used with Equal-Cost Multipath (ECMP) routing changes. It can be used with Equal-Cost Multipath (ECMP) routing
and/or multihoming. If multipath or multihoming is supported, and/or multihoming. If multipath or multihoming is supported,
a state machine is needed for each path.</t> a state machine is needed for each path.</t>
<t>DPLPMTUD is not specified for multicast. The method requires
explicit acknowledgement of probe packets provided by UDP Options,
which is primarily intended for unicast use (see
<xref target="RFC9868" sectionFormat="of" section="23"/>).</t>
</section>
<section numbered="true" toc="default">
<name>Terminology</name>
<t>
The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQU
IRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>
RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to
be interpreted as
described in BCP&nbsp;14 <xref target="RFC2119"/> <xref target="RFC8174"/>
when, and only when, they appear in all capitals, as shown here.
</t>
<t>DPLPMTUD is not specified for multicast. The method requires <t>This document uses the terms defined for DPLPMTUD (Sections <xref
explicit acknowledgment of probe packets provided by UDP Options, target="RFC8899" sectionFormat="bare" section="2"/> and <xref
which is primarily intended for unicast use (see Section 23 of target="RFC8899" sectionFormat="bare" section="5"/> of <xref
<xref target="I-D.ietf-tsvwg-udp-options"></xref>).</t> target="RFC8899" format="default"/>).
</t>
</section><!-- End of Intro --> </section>
<section numbered="true" toc="default">
<section title="Terminology"> <name>DPLPMTUD for UDP Options</name>
<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT <t>A UDP Options sender implementing DPLPMTUD uses the method specified
", in <xref target="RFC8899" format="default"/>. In this specification,
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and DPLPMTUD is
"OPTIONAL" in this document are to be interpreted as described in realized using a pair of
BCP 14
<xref target="RFC2119"></xref>
<xref target="RFC8174"></xref>
when, and only when, they appear in all
capitals, as shown here.</t>
<t>
This document uses the terms defined for DPLPMTUD
(Sections 2 and 5 of <xref target="RFC8899"></xref>).
</t>
</section> <!-- End of terms -->
<section title="DPLPMTUD for UDP Options">
<t>A UDP Options sender implementing DPLPMTUD uses the method specif
ied
in <xref target="RFC8899"></xref>. In this specification, DPLPMTUD i
s
realised using a pair of
UDP Options: UDP Options:
the Request (REQ) Option and the Response (RES) Option the Request (REQ) Option and the Response (RES) Option
(Section 11.7 of <xref target="I-D.ietf-tsvwg-udp-options"></xref>). (<xref target="RFC9868" sectionFormat="of" section="11.7"/>).
The method also uses the End of Options List (EOL) Option The method also uses the End of Options List (EOL) Option
(Section 11.1 of <xref target="I-D.ietf-tsvwg-udp-options"></xref>) to (<xref target="RFC9868" sectionFormat="of" section="11.1"/>) to
introduce padding to set the size of a probe packet.</t> introduce padding to set the size of a probe packet.</t>
<t>Use of DPLPMTUD <bcp14>MUST</bcp14> be explicitly enabled by the applic
<t>Use of DPLPMTUD MUST be explicitly enabled by the application, fo ation, for instance,
r instance
once an application has established connectivity and is ready once an application has established connectivity and is ready
to exchange data with the remote Upper Layer protocol. to exchange data with the remote Upper Layer protocol.
Similarly, a DPLPMTUD receiver MUST NOT respond to a UDP REQ Similarly, a DPLPMTUD receiver <bcp14>MUST NOT</bcp14> respond to a UDP REQ
Option until DPLPMTUD has been enabled. This is to help Option until DPLPMTUD has been enabled. This is to help
protect from mis-use of the mechanism for other forms of probing.</t protect from misuse of the mechanism for other forms of probing.</t>
> <t>Probe packets consume network capacity and incur endpoint
processing (<xref target="RFC8899" sectionFormat="of" section="4.1"/
<t>Probe packets consume network capacity and incur endpoint >).
processing (Section 4.1 of <xref target="RFC8899"></xref>).
Implementations ought to send a probe packet with a UDP REQ Implementations ought to send a probe packet with a UDP REQ
Option only when required by their local DPLPMTUD state machine, Option only when required by their local DPLPMTUD state machine,
i.e., when confirming the base PMTU for the path, i.e., when confirming the base PMTU for the path,
probing to increase the PLPMTU, or to confirm the current probing to increase the PLPMTU, or confirming the current
PLPMTU.</t> PLPMTU.</t>
<t>DPLPMTUD can be implemented
<t>DPLPMTUD can be implemented
over UDP Options in two ways:</t> over UDP Options in two ways:</t>
<list style="symbols"> <ul spacing="normal">
<t>Implementation within the UDP transport service;</t> <li>
<t>Implementation in an Upper Layer protocol (or application) t <t>Implementation within the UDP transport service.</t>
hat uses UDP Options.</t> </li>
</list> <li>
<t>Implementation in an Upper Layer protocol (or application) that use
<t>When DPLPMTUD is implemented within the UDP s UDP Options.</t>
</li>
</ul>
<t>When DPLPMTUD is implemented within the UDP
transport service, the DPLPMTUD state machine transport service, the DPLPMTUD state machine
is responsible for sending probe packets to determine a PLPMTU, as d escribed is responsible for sending probe packets to determine a PLPMTU, as d escribed
in this document (and hence the Maximum Packet Size (MPS), in this document. This determines an MPS,
the largest size of application data block that can be sent across a network path the largest size of application data block that can be sent across a network path
using a single datagram). The Upper Layer protocol is responsible fo r deciding using a single datagram. The Upper Layer protocol is responsible for deciding
when a session enables DPLPMTUD.</t> when a session enables DPLPMTUD.</t>
<t>The discovered PLPMTU can be used to either:</t>
<t>The discovered PLPMTU can be used to either:</t> <ul spacing="normal">
<li>
<list style="symbols"> <t> set the maximum datagram size for the current path or</t>
</li>
<t> set the maximum datagram size for the current path;</t> <li>
<t> set the maximum fragment size when a sender uses the <t> set the maximum fragment size when a sender uses the
UDP Fragmentation Option to divide a datagram into UDP Fragmentation Option to divide a datagram into
multiple UDP fragments for transmission. The size of each UD P fragment multiple UDP fragments for transmission. The size of each UD P fragment
is then less than or equal to the size of the discovered lar gest IP packet that can is then less than or equal to the size of the discovered lar gest IP packet that can
be received across the current path. be received across the current path.
</t> </t>
</list> </li>
</ul>
<t>The figure below shows an implementation of DPLPMTUD within the U <t>The figure below shows an implementation of DPLPMTUD within the UDP
DP
transport service. transport service.
It illustrates key interactions between the layers. It illustrates key interactions between the layers.
This design requires an API primitive to allow the application to This design requires an API primitive to allow the application to
control whether the DPLPMTUD state machine is enabled for a specific control whether the DPLPMTUD state machine is enabled for a specific
UDP port. By default, this API MUST disable DPLPMTUD processing.</t> UDP port. By default, this API <bcp14>MUST</bcp14> disable DPLPMTUD proces sing.</t>
<figure> <artset>
<artwork align="left"> <artwork type="svg">
<![CDATA[ <svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="352" widt
h="560" viewBox="0 0 560 352" class="diagram" text-anchor="middle" font-family="
monospace" font-size="13px" stroke-linecap="round">
<path d="M 8,16 L 8,64" fill="none" stroke="black"/>
<path d="M 8,112 L 8,192" fill="none" stroke="black"/>
<path d="M 8,256 L 8,288" fill="none" stroke="black"/>
<path d="M 40,72 L 40,112" fill="none" stroke="black"/>
<path d="M 40,200 L 40,256" fill="none" stroke="black"/>
<path d="M 40,296 L 40,336" fill="none" stroke="black"/>
<path d="M 232,64 L 232,104" fill="none" stroke="black"/>
<path d="M 232,192 L 232,248" fill="none" stroke="black"/>
<path d="M 232,288 L 232,336" fill="none" stroke="black"/>
<path d="M 272,16 L 272,64" fill="none" stroke="black"/>
<path d="M 272,112 L 272,192" fill="none" stroke="black"/>
<path d="M 272,256 L 272,288" fill="none" stroke="black"/>
<path d="M 8,16 L 272,16" fill="none" stroke="black"/>
<path d="M 8,64 L 272,64" fill="none" stroke="black"/>
<path d="M 8,112 L 272,112" fill="none" stroke="black"/>
<path d="M 8,192 L 272,192" fill="none" stroke="black"/>
<path d="M 8,256 L 272,256" fill="none" stroke="black"/>
<path d="M 8,288 L 272,288" fill="none" stroke="black"/>
<polygon class="arrowhead" points="240,336 228,330.4 228,341.6" fill="black" tra
nsform="rotate(90,232,336)"/>
<polygon class="arrowhead" points="240,248 228,242.4 228,253.6" fill="black" tra
nsform="rotate(90,232,248)"/>
<polygon class="arrowhead" points="240,104 228,98.4 228,109.6" fill="black" tran
sform="rotate(90,232,104)"/>
<polygon class="arrowhead" points="48,296 36,290.4 36,301.6" fill="black" transf
orm="rotate(270,40,296)"/>
<polygon class="arrowhead" points="48,200 36,194.4 36,205.6" fill="black" transf
orm="rotate(270,40,200)"/>
<polygon class="arrowhead" points="48,72 36,66.4 36,77.6" fill="black" transform
="rotate(270,40,72)"/>
<g class="text">
<text x="140" y="36">Upper Layer Protocol</text>
<text x="140" y="52">or Application</text>
<text x="352" y="84">Messages (with UDP Options)</text>
<text x="80" y="100">receive</text>
<text x="196" y="100">send</text>
<text x="376" y="100">Primitives for MPS, Min_PMTU, etc.</text>
<text x="108" y="132">DPLPMTUD State Machine</text>
<text x="136" y="148">Maximum Packet Size (MPS)</text>
<text x="148" y="164">PLPMTU, Probed-Size, Min_PMTU</text>
<text x="144" y="180">Token Values &amp; Probes, etc.</text>
<text x="352" y="212">Messages (with UDP Options)</text>
<text x="392" y="228">Send/Receive: Probes with Options</text>
<text x="80" y="244">receive</text>
<text x="196" y="244">send</text>
<text x="392" y="244">Events: ICMP, Interface MTU, etc.</text>
<text x="104" y="276">UDP Options Transport</text>
<text x="356" y="308">Datagrams (with UDP Options)</text>
<text x="408" y="324">Fragmented Datagrams with UDP Options</text>
<text x="80" y="340">receive</text>
<text x="196" y="340">send</text>
<text x="392" y="340">Events: ICMP, Interface MTU, etc.</text>
</g>
</svg>
</artwork>
<artwork align="left" name="" type="ascii-art" alt=""><![CDATA[
+--------------------------------+ +--------------------------------+
| Upper Layer Protocol | | Upper Layer Protocol |
| or Application | | or Application |
+---------------------------+----+ +---------------------------+----+
^ | Messages (with UDP Options) ^ | Messages (with UDP Options)
| receive send v Primitives for MPS, Min_PMTU etc. | receive send v Primitives for MPS, Min_PMTU, etc.
+---+----------------------------+ +---+----------------------------+
| DPLPMTUD State Machine | | DPLPMTUD State Machine |
| Maximum Packet Size (MPS) | | Maximum Packet Size (MPS) |
| PLPMTU, Probed-Size,Min_PMTU | | PLPMTU, Probed-Size, Min_PMTU|
| Token Values & Probes, etc. | | Token Values & Probes, etc. |
+---------------------------+----+ +---------------------------+----+
^ | Messages (with UDP Options) ^ | Messages (with UDP Options)
| | Send/Receive: Probes with Options | | Send/Receive: Probes with Options
| receive send v Events: ICMP, Interface MTU, etc. | receive send v Events: ICMP, Interface MTU, etc.
+---+----------------------------+ +---+----------------------------+
| UDP Options Transport | | UDP Options Transport |
+---------------------------+----+ +---------------------------+----+
^ | Datagrams (with UDP Options) ^ | Datagrams (with UDP Options)
| | Fragmented Datagrams with UDP Options | | Fragmented Datagrams with UDP Options
| receive send v Events: ICMP, Interface MTU, etc. | receive send v Events: ICMP, Interface MTU, etc.
]]></artwork>
]]></artwork> </artset>
</figure> <t>Note: UDP allows an Upper Layer protocol
<t>Note: UDP allows an Upper Layer Protocol
to send datagrams with or without payload data (with or without to send datagrams with or without payload data (with or without
UDP Options). These UDP Options). These
are delivered across the network to the remote Upper Layer. are delivered across the network to the remote Upper Layer.
When DPLPMTUD is implemented within the UDP When DPLPMTUD is implemented within the UDP
transport service, probe packets that include a REQ or RES UDP Optio n transport service, probe packets that include a REQ or RES UDP Optio n
can be sent with no UDP payload. can be sent with no UDP payload.
In this case, these probe packets were not generated by a sending In this case, these probe packets were not generated by a sending
application and therefore the corresponding received datagrams are application; therefore, the corresponding received datagrams are
not delivered to the remote application.</t> not delivered to the remote application.</t>
<t>When DPLPMTUD is instead implemented by an Upper Layer protocol,
<t>When DPLPMTUD is instead implemented by an Upper Layer protocol,
the format and content the format and content
of probe packets are determined by the Upper Layer protocol. of probe packets are determined by the Upper Layer protocol.
This design is also permitted to use the REQ and RES Options This design is also permitted to use the REQ and RES Options
provided by UDP Options.</t> provided by UDP Options.</t>
<t>If DPLPMTUD is active at more than one layer,
<t>If DPLPMTUD is active at more than one layer,
then the values of the tokens used in REQ Options need to be coordin ated then the values of the tokens used in REQ Options need to be coordin ated
with any values used for other DPLPMTUD probe packets to ensure with any values used for other DPLPMTUD probe packets to ensure
that each probe packet can be identified by a unique token. that each probe packet can be identified by a unique token.
When configurable, a configuration ought to avoid When configurable, a configuration ought to avoid
performing such discovery both within UDP Options performing such discovery both within UDP Options
and also by an upper protocol layer and also by an Upper Layer protocol
that sends and receives probe packets via UDP Options. that sends and receives probe packets via UDP Options.
Section 6.1 of <xref target="RFC8899"></xref> recommends that: <xref target="RFC8899" sectionFormat="of" section="6.1"/> recommends
"An application SHOULD avoid using DPLPMTUD when the underlying that:
"An application <bcp14>SHOULD</bcp14> avoid using DPLPMTUD when the
underlying
transport system provides this capability."</t> transport system provides this capability."</t>
<section anchor="formats" numbered="true" toc="default">
<section anchor="formats" title="Packet Formats"> <name>Packet Formats</name>
<t>The UDP Options used in this document are described in
<t>The UDP Options used in this document are described in <xref target="RFC9868" format="default"/> and are used
<xref target="I-D.ietf-tsvwg-udp-options"></xref> and are used in the following ways:</t>
in the following way:</t> <ul spacing="normal">
<li>
<list style="symbols"> <t>The REQ Option is set by a sending PL to solicit a response from
<t>The REQ Option is set by a sending PL to solicit a respon a
se from a remote receiver. A four-byte (four-octet) token identifies e
remote receiver. A four-byte (four octet) token identifies e ach request.</t>
ach request.</t> </li>
<li>
<t>A sending PL can use the EOL option together with a minim <t>A sending PL can use the EOL Option together with a minimum
um
datagram length to pad probe packets.</t> datagram length to pad probe packets.</t>
</li>
<t>The RES Option is sent by a UDP Options receiver in respo <li>
nse to a <t>The RES Option is sent by a UDP Options receiver in response to a
previously received REQ Option. Each RES Option echoes the l ast received previously received REQ Option. Each RES Option echoes the l ast received
four-byte token.</t> four-byte token.</t>
</li>
<t> If a UDP Options endpoint creates and sends a datagram <li>
with a RES option solely as response to a received REQ Optio <t> If a UDP Options endpoint creates and sends a datagram
n, with a RES Option solely as response to a received REQ Optio
the responder MUST limit the rate of these responses n,
the responder <bcp14>MUST</bcp14> limit the rate of these re
sponses
(e.g., limiting each pair of ports to send 1 per measured RT T or (e.g., limiting each pair of ports to send 1 per measured RT T or
1 per second). This rate limit is to mitigate the DoS vector , 1 per second). This rate limit is to mitigate the DoS vector
without significantly impacting the operation of DPLPMTUD. without significantly impacting the operation of DPLPMTUD.
An example in Section <xref target="examples"></xref> An example in <xref target="examples" format="default"/>
describes a case where this might be used.</t> describes a case where this might be used.</t>
<t> </li>
<li>
<t>
Reception of a RES Option by the REQ sender confirms that a specific Reception of a RES Option by the REQ sender confirms that a specific
probe packet has been received by the remote UDP Options rec eiver.</t> probe packet has been received by the remote UDP Options rec eiver.</t>
</list> </li>
</ul>
<t>The token allows a UDP Options sender to distinguish <t>The token allows a UDP Options sender to distinguish
between acknowledgements for initial probe packets and between acknowledgements for initial probe packets and
acknowledgements confirming receipt of subsequent probe packets acknowledgements confirming receipt of subsequent probe packets
(e.g., travelling along alternate paths with a larger round-trip (e.g., travelling along alternate paths with a larger RTT).
time). Each probe packet MUST be uniquely Each probe packet <bcp14>MUST</bcp14> be uniquely
identifiable by the UDP Options sender within the Maximum Segment identifiable by the UDP Options sender within the Maximum Segment
Lifetime (MSL) <xref target="RFC8085"></xref>. Lifetime (MSL) <xref target="RFC8085" format="default"/>.
The UDP Options sender MUST NOT reuse The UDP Options sender <bcp14>MUST NOT</bcp14> reuse
a token value within the MSL. A a token value within the MSL. A
four byte value for the token field provides sufficient space for four-byte value for the token field provides sufficient space for
multiple unique probe packets to be made within the MSL. Since UDP O ptions multiple unique probe packets to be made within the MSL. Since UDP O ptions
operates over UDP, the token values only need to be unique for operates over UDP, the token values only need to be unique for
the specific 5-tuple over which it is operating. the specific 5-tuple over which it is operating.
</t> </t>
<t>The value of the four-byte token field <bcp14>SHOULD</bcp14> be initi
<t>The value of the four-byte token field SHOULD be initialised alized
to a randomised value to enhance protection from off-path attacks, to a randomized value to enhance protection from off-path attacks,
as described in Section 5.1 of <xref target="RFC8085"></xref>.</t> as described in <xref target="RFC8085" sectionFormat="of" section="5
.1"/>.</t>
</section> <!-- End of DPLPMTUD for UDP Options:Formats --> </section>
<section title="Sending Probe Packets with the Request Option">
<t>DPLPMTUD relies upon sending a probe packet <section numbered="true" toc="default">
<name>Sending Probe Packets with the Request Option</name>
<t>DPLPMTUD relies upon sending a probe packet
with a specific size. with a specific size.
Each probe packet includes the UDP Options area containing Each probe packet includes the UDP Options area containing
a REQ Option a REQ Option
and any other required options concluded with an EOL Option and any other required options concluded with an EOL Option
(Section 11.1 of <xref target="I-D.ietf-tsvwg-udp-options"></xref>) (<xref target="RFC9868" sectionFormat="of" section="11.1"/>),
followed by any padding needed to inflate to the required probe size .</t> followed by any padding needed to inflate to the required probe size .</t>
<t>A probe packet can therefore be up to the maximum size
<t>A probe packet can therefore be of size up to the maximum size
supported by the local interface (i.e., the Interface MTU). supported by the local interface (i.e., the Interface MTU).
<xref target="RFC8899"></xref> (Section 3, item 2) requires the netw ork interface Item 2 in <xref section="3" target="RFC8899" format="default"/> requ ires the network interface
below DPLPMTUD to provide a way to transmit a probe packet below DPLPMTUD to provide a way to transmit a probe packet
that is larger than the current PLPMTU. that is larger than the current PLPMTU.
The size of this probe packet MUST NOT be constrained by the maximum PMTU The size of this probe packet <bcp14>MUST NOT</bcp14> be constrained by the maximum PMTU
set by network layer mechanisms (such as discovered by PMTUD set by network layer mechanisms (such as discovered by PMTUD
<xref target="RFC1191"></xref><xref target="RFC8201"></xref> or the PMTU size <xref target="RFC1191" format="default"/><xref target="RFC8201" form at="default"/> or the PMTU size
held in the IP-layer cache), held in the IP-layer cache),
as noted in bullet 2 of Section 3 in <xref target="RFC8899"></xref>) as noted in item 2 in <xref target="RFC8899" sectionFormat="of" sect
.</t> ion="3"/>).</t>
<t>UDP datagrams used as DPLPMTUD probe packets, as described in this
<t>UDP datagrams used as DPLPMTUD probe packets, as described in thi document, <bcp14>MUST NOT</bcp14> be fragmented at the UDP or IP lay
s er.
document, MUST NOT be fragmented at the UDP or IP layer. Therefore, <xref target="RFC8899" sectionFormat="of" section="3"/>
Section 3 of <xref target="RFC8899"></xref> requires: "In IPv4, a probe packet <bcp14>MUST</bcp14> be sent with
therefore requires: "In IPv4, a probe packet MUST be sent with the the
Don't Fragment (DF) bit set in the IP header and without network lay er Don't Fragment (DF) bit set in the IP header and without network lay er
endpoint fragmentation."</t> endpoint fragmentation."</t>
</section>
</section> <!-- End of DPLPMTUD for UDP Options:sending --> <section numbered="true" toc="default">
<name>Receiving UDP Options Probe Packets and Sending the RES Option</na
<section title="Receiving UDP-Options Probe Packets and sending the RES me>
Option"> <t>When DPLPMTUD is enabled, a UDP Options receiver responds
<t>When DPLPMTUD is enabled, a UDP Options receiver responds
by sending a UDP datagram with the RES Option when by sending a UDP datagram with the RES Option when
it receives a UDP Options datagram with it receives a UDP Options datagram with
the REQ Option.</t> the REQ Option.</t>
<t>The operation of DPLPMTUD can depend on the support at
<t>The operation of DPLPMTUD can depend on the support at
the remote UDP Options endpoint, the way in which DPLPMTUD the remote UDP Options endpoint, the way in which DPLPMTUD
is implemented and in some cases the application data that is is implemented, and in some cases, the application data that is
exchanged over the UDP transport service. exchanged over the UDP transport service.
When UDP Options is not supported by the remote receiver, When UDP Options is not supported by the remote receiver,
DPLPMTUD will be unable to confirm the path or to discover the PLPMT U. DPLPMTUD will be unable to confirm the path or to discover the PLPMT U.
This will result in the minimum configured PLPMTU (MIN_PLPMTU). This will result in the minimum configured PLPMTU (MIN_PLPMTU).
More explanation of usage is provided in <xref target="examples"></x More explanation of usage is provided in <xref target="examples" for
ref>. mat="default"/>.
</t> </t>
<t>Note: A receiver that only responds when there is a datagram
<t>Note: A receiver that only responds when there is a datagram
queued for transmission by the Upper Layer could potentially queued for transmission by the Upper Layer could potentially
receive multiple datagrams with a REQ Option before it can receive multiple datagrams with a REQ Option before it can
respond. When sent, the RES Option will only acknowledge the respond. When sent, the RES Option will only acknowledge the
latest received token value. A sender would then conclude latest received token value. A sender would then conclude
that any earlier REQ Options were not successfully received. that any earlier REQ Options were not successfully received.
However, DPLPMTUD does not usually result in sending more than one However, DPLPMTUD does not usually result in sending more than one
probe packet per timeout interval, and a delay in responding probe packet per timeout interval, and a delay in responding
will already have been treated as a failed probe attempt. will already have been treated as a failed probe attempt.
Therefore, this does not significantly impact performance, Therefore, this does not significantly impact performance,
although a more prompt response would have resulted in although a more prompt response would have resulted in
DPLPMTUD recording reception of all probe packets.</t> DPLPMTUD recording reception of all probe packets.</t>
</section>
</section>
</section> <!-- End of DPLPMTUD for UDP Options:Receiving --> <section anchor="UDPOPT-PLPMTUD" numbered="true" toc="default">
</section> <!-- End of DPLPMTUD for UDP Options --> <name>DPLPMTUD Sender Procedures for UDP Options</name>
<t> DPLPMTUD utilizes three types of probe. These are described in the fol
<section anchor="UDPOPT-PLPMTUD" title="DPLPMTUD Sender Procedures for UDP O lowing sections:</t>
ptions"> <ul spacing="normal">
<t> DPLPMTUD utilises three types of probe. These are described in t <li>
he following sections:</t> <t>Probes to confirm the path can support the BASE_PLPMTU (<xref targe
<list style="symbols"> t="RFC8899" sectionFormat="of" section="5.1.4"/>).</t>
<t>Probes to confirm the path can support the BASE_PLPMTU (Secti </li>
on 5.1.4 of <xref <li>
target="RFC8899"></xref>).</t> <t>Probes to detect whether the path can support a larger PLPMTU.</t>
<t>Probes to detect whether the path can support a larger PLPMTU </li>
.</t> <li>
<t>Probes to validate the path supports the current PLPMTU.</t> <t>Probes to validate that the path supports the current PLPMTU.</t>
</list> </li>
</ul>
<section title="Confirmation of Connectivity across a Path"> <section numbered="true" toc="default">
<t>The DPLPMTUD method requires a PL to confirm <name>Confirmation of Connectivity Across a Path</name>
connectivity over the path (Section 5.1.4 of <xref <t>The DPLPMTUD method requires a PL to confirm connectivity over the
target="RFC8899"></xref>), but UDP itself does not offer path (<xref target="RFC8899" sectionFormat="of" section="5.1.4"/>),
a mechanism for but UDP itself does not offer a mechanism for this.</t>
this.</t> <t>UDP Options can provide this required functionality. A UDP Options
sender implementing this specification <bcp14>MUST</bcp14> e
<t>UDP Options can provide this required functionality. A UDP Op licit a positive
tions confirmation of connectivity for the path by sending a probe
sender implementing this specification MUST elicit a positiv packet
e padded to size BASE_PLPMTU. This confirmation probe <bcp14>M
confirmation of connectivity for the path, by sending a prob UST</bcp14>
e packet,
padded to size BASE_PLPMTU. This confirmation probe MUST
include the REQ UDP Option to elicit a response from the rem ote DPLPMTUD. include the REQ UDP Option to elicit a response from the rem ote DPLPMTUD.
Reception of a datagram with the corresponding RES Option co nfirms Reception of a datagram with the corresponding RES Option co nfirms
the reception of a packet of the probed size that has succes sfully the reception of a packet of the probed size that has succes sfully
traversed the path to the receiver. traversed the path to the receiver.
This also confirms that the This also confirms that the
remote endpoint supports the RES Option.</t> remote endpoint supports the RES Option.</t>
</section> <!-- End of Procedures for UDP Options:End of confirm --> </section>
<section title="Sending Probe Packets to Increase the PLPMTU">
<t>From time to time, DPLPMTUD enters the SEARCHING state, descr
ibed in
Section 5.2 of <xref target="RFC8899"></xref>,
(e.g., after expiry of the PMTU_RAISE_TIMER)
to detect whether the current
path can support a larger PLPMTU.
When the remote endpoint advertises a UDP Maximum Datagram Size
(MDS) option (see Section 11.5 of <xref target="I-D.ietf-tsvwg-u
dp-options"></xref>),
this value MAY be used as a hint to
initialise this search to increase the PLPMTU.</t>
<t> Probe packets seeking to increase the PLPMTU SHOULD NOT carr
y application data
("Probing using padding data" in Section 4.1 of <xref target="RF
C8899"></xref>),
since they will be lost whenever their size exceeds the actual P
MTU.
<xref target="RFC8899"></xref> requires a probe packet
to elicit a positive acknowledgement that the path has
delivered a datagram of the specific probed size and, therefore,
when using <xref target="I-D.ietf-tsvwg-udp-options"></xref> a p
robe packet
MUST include the REQ Option.</t>
<t>At the receiver, a received probe packet that does not carry <section numbered="true" toc="default">
application data <name>Sending Probe Packets to Increase the PLPMTU</name>
does not form a part of the end-to-end <t>From time to time, DPLPMTUD enters the SEARCHING state, described
transport data and is not delivered to the Upper Layer protocol in <xref target="RFC8899" sectionFormat="of" section="5.2"/>, (e.g.,
(i.e., application or protocol layered above UDP). A zero-length after expiry of the PMTU_RAISE_TIMER) to detect whether the current
payload path can support a larger PLPMTU. When the remote endpoint advertises
notification could still be delivered to the application, a UDP Maximum Datagram Size (MDS) option (see <xref
see Section 5 of <xref target="RFC8085"></xref>, although target="RFC9868" sectionFormat="of"
Section 18 of <xref target="I-D.ietf-tsvwg-udp-options"></xref> section="11.5"/>), this value <bcp14>MAY</bcp14> be used as a hint to
initialize this search to increase the PLPMTU.</t>
<t> Probe packets seeking to increase the PLPMTU <bcp14>SHOULD
NOT</bcp14> carry application data (see "Probing using padding data" in
<xref target="RFC8899" sectionFormat="of" section="4.1"/>), since they
will be lost whenever their size exceeds the actual PMTU. <xref
target="RFC8899" format="default"/> requires a probe packet to elicit
a positive acknowledgement that the path has delivered a datagram of
the specific probed size; therefore, a probe packet
<bcp14>MUST</bcp14> include the REQ Option when using transport
options for UDP <xref target="RFC9868" format="default"/>.</t>
<t>At the receiver, a received probe packet that does not carry
application data does not form a part of the end-to-end transport data
and is not delivered to the Upper Layer protocol (i.e., application or
protocol layered above UDP). A zero-length payload notification could
still be delivered to the application (see <xref target="RFC8085"
sectionFormat="of" section="5"/>), although
<xref target="RFC9868" sectionFormat="of" section="18"/>
discusses the implications when using UDP Options.</t> discusses the implications when using UDP Options.</t>
</section> <!-- End of Procedures for UDP Options: Increase --> </section>
<section title="Validating the Path with UDP Options">
<t>A PL using DPLPMTUD MUST validate that a path continues to su
pport the
PLPMTU discovered in a previous search for a suitable PLPMTU
value,
as defined in Section 6.1.4 of <xref target="RFC8899"></xref
>.
This validation sends probe packets in the
DPLPMTUD SEARCH_COMPLETE state to detect black-holing of dat
a
(Section 5.2 of <xref target="RFC8899"></xref>, Section 4.3
of <xref target="RFC8899"></xref>
defines a DPLPMTUD black-hole).</t>
<t>Path validation can be implemented within UDP Options by gene <section numbered="true" toc="default">
rating <name>Validating the Path with UDP Options</name>
a probe packet of size PLPMTU, which MUST include a REQ Opti <t>A PL using DPLPMTUD <bcp14>MUST</bcp14> validate that a path
on to elicit a continues to support the PLPMTU discovered in a previous search for a
positive confirmation that the path has delivered this probe suitable PLPMTU value, as defined in <xref target="RFC8899"
packet. sectionFormat="of" section="6.1.4"/>. This validation sends probe
A probe packet used to validate the path MAY use either "Pro packets in the DPLPMTUD SEARCH_COMPLETE state (<xref target="RFC8899" se
bing using padding data" ctionFormat="of" section="5.2"/>) to detect black-holing
to construct a probe packet that does not carry any of data
application data (Section 4.1 of <xref target="RFC8899"></xr (<xref target="RFC8899" sectionFormat="of" section="4.3"/> defines a
ef>) or "Probing using DPLPMTUD black hole).</t>
application data and padding data", see Section 4.1 of <xref <t>Path validation can be implemented within UDP Options by generating
target="RFC8899"></xref>. a probe packet of size PLPMTU, which <bcp14>MUST</bcp14> include a REQ
When using "Probing using padding data", the UDP Options API Option to elicit a positive confirmation that the path has delivered
does not indicate receipt of the this probe packet. A probe packet used to validate the path
zero-length probe packet, see Section 6 of <xref target="I-D <bcp14>MAY</bcp14> use either "Probing using padding data" to
.ietf-tsvwg-udp-options"></xref>. construct a probe packet that does not carry any application data or
</t> "Probing using application data and padding data"; see <xref
</section> <!-- End of Procedures for UDP Options: Validate --> target="RFC8899" sectionFormat="of" section="4.1"/>. When using
"Probing using padding data", the UDP Options API does not indicate
receipt of the zero-length probe packet (see <xref
target="RFC9868" sectionFormat="of" section="6"/>).
</t>
</section>
<section anchor="no-app-data" title="Probe Packets that do not inclu <section anchor="no-app-data" numbered="true" toc="default">
de Application Data"> <name>Probe Packets That Do Not Include Application Data</name>
<t> <t> A simple implementation of the method might be designed to only
A simple implementation of the method might be designed use probe packets in a UDP datagram that includes no application
to only use probe packets in a UDP datagram that includes no data. The size of each probe packet is padded to the required probe
application data. The size of each probe packet is padded to the size including the REQ Option. This implements "Probing using padding
required data" (<xref target="RFC8899" sectionFormat="of" section="4.1"/>) and
probe size including the REQ Option. This implements avoids having to retransmit application data when a probe fails. This
"Probing using padding data" (Section 4.1 of <xref target="RFC88 could be achieved by setting a minimum datagram length, such that the
99"></xref>) options list ends in EOL (<xref target="RFC9868"
and avoids having to retransmit sectionFormat="of" section="11.1"/>) with any additional space
application data when a probe fails. zero-filled as needed (see <xref target="RFC9868"
This could be achieved by setting sectionFormat="of" section="15"/>). In this use, the probe packets do
a minimum datagram length, such that the options list not form a part of the end-to-end transport data and a receiver does
ends in EOL (Section 11.1 of <xref target="I-D.ietf-tsvwg-udp-op not deliver them to the Upper Layer protocol.
tions"></xref>) </t>
with any additional space is zero-filled as needed </section>
(see Section 15 of <xref target="I-D.ietf-tsvwg-udp-options"></x
ref>).
In this use, the probe packets do not form a part of the end-to-
end
transport data and a receiver does not deliver them to the Upper
Layer protocol.
</t>
</section> <!-- End of Procedures for UDP Options: Probe Without Dat
a -=-->
<section title="Probe Packets that include Application Data"> <section numbered="true" toc="default">
<t> <name>Probe Packets That Include Application Data</name>
An implementation always uses the format in <xref target="no-app <t>
-data"></xref> An implementation always uses the format in <xref target="no-app
-data" format="default"/>
when DPLPMTUD searches to increase the PLPMTU.</t> when DPLPMTUD searches to increase the PLPMTU.</t>
<t>
<t>
An alternative format is permitted for a probe packet that is us ed to confirm An alternative format is permitted for a probe packet that is us ed to confirm
the connectivity or to validate the path. the connectivity or to validate the path.
These probe packets MAY carry application data. These probe packets <bcp14>MAY</bcp14> carry application data.
(A UDP payload data is permitted because these probe packets per (UDP payload data is permitted because these probe packets perfo
form rm
black-hole detection black-hole detection
and will, therefore, usually have a higher probability of succes sful and will therefore usually have a higher probability of successf ul
transmission, similar to other packets sent by the Upper Layer p rotocol.) transmission, similar to other packets sent by the Upper Layer p rotocol.)
Section 4.1 of <xref target="RFC8899"></xref> provides a discuss ion of <xref target="RFC8899" sectionFormat="of" section="4.1"/> provid es a discussion of
the merits and demerits of including application data. For examp le, this the merits and demerits of including application data. For examp le, this
reduces the need to send additional datagrams. reduces the need to send additional datagrams.
</t> </t>
<t>This type of probe packet MAY use <t>This type of probe packet <bcp14>MAY</bcp14> use
a control message format defined by the Upper Layer protocol, a control message format defined by the Upper Layer protocol,
provided that the message does not need to provided that the message does not need to
be delivered reliably. The REQ Option MUST be be delivered reliably. The REQ Option <bcp14>MUST</bcp14> be
included when the sending Upper Layer protocol performs DPLPMTUD . included when the sending Upper Layer protocol performs DPLPMTUD .
The DPLPMTUD method tracks the transmission The DPLPMTUD method tracks the transmission
of probe packets (using the REQ Option token).</t> of probe packets (using the REQ Option token).</t>
<t>A receiver that responds to DPLPMTUD <bcp14>MUST</bcp14> process the
<t>A receiver that responds to DPLPMTUD MUST process the REQ Opt REQ Option and
ion and
include the corresponding RES Option with an Upper Layer protoco l message include the corresponding RES Option with an Upper Layer protoco l message
that it returns to the requester (examples of receiver processin g are that it returns to the requester (examples of receiver processin g are
provided in Section <xref target="examples"></xref>).</t> provided in <xref target="examples" format="default"/>).</t>
<t>Probe packets that use this format form a part of the end-to-end
<t>Probe packets that use this format form a part of the end-to-
end
transport data and can be used to manage the PLPMTU in just transport data and can be used to manage the PLPMTU in just
one direction or can be used for both directions.</t> one direction or can be used for both directions.</t>
</section>
</section>
</section> <!-- End of Procedures for UDP Options: With App Data --> <section numbered="true" toc="default">
</section> <!-- End of Procedures for UDP Options --> <name>Receiving Events from the Network</name>
<t>This specification does not rely upon reception of events from the netw
<section title="Receiving Events from the Network"> ork,
but an implementation can utilize these events when they are provided.</
<t>This specification does not rely upon reception of events from the ne t>
twork, <section numbered="true" toc="default">
but an implementation can utilise these events when they are provided.</ <name>Changes in the Path</name>
t> <t>A change in the path or the loss of a probe packet can result in
DPLPMTUD updating the PLPMTU. DPLPMTUD <xref target="RFC8899"
<section title="Changes in the Path"> format="default"/> recommends that methods are robust to path changes
<t>A change in the path or the loss of a probe packet can result in that could have occurred since the path characteristics were last
DPLPMTUD updating confirmed and to the possibility of inconsistent path information
the PLPMTU. DPLPMTUD being received. For example, a notification that a path has changed
<xref target="RFC8899"></xref> recommends that methods are robust to could trigger path validation to provide black-hole protection (<xref
path changes target="RFC8899" sectionFormat="of" section="4.3"/>).</t>
that could have occurred since the path characteristics were last <t>An Upper Layer protocol could trigger DPLPMTUD to validate the path
confirmed and to the possibility of inconsistent path information be when it observes a high packet loss rate (or a repeated protocol
ing timeout) <xref target="RFC8899" format="default"/>.</t>
received. For example, a notification that a path has changed could <t><xref target="RFC8899" sectionFormat="of" section="3"/> requires
trigger path validation to provide black-hole protection any methods designed to share the PLPMTU between PLs (such as updating
(Section 4.3 of <xref target="RFC8899"></xref>).</t> the IP cache PMTU for an interface/destination) to be robust to the
wide variety of underlying network forwarding behaviors. For example,
<t>An Upper Layer protocol could trigger DPLPMTUD to validate the pa an implementation could avoid sharing PMTU information that could
th potentially relate to packets sent with the same address over a
when it observes a different interface.</t>
high packet loss rate (or a repeated protocol timeout) <xref target= </section>
"RFC8899"></xref>.</t>
<t>Section 3 of <xref target="RFC8899"></xref> requires any methods
designed to share the PLPMTU
between PLs (such as updating the IP cache PMTU for an
interface/destination) to be robust to the wide variety of underlyin
g
network forwarding behaviors. For example, an implementation could a
void
sharing PMTU information that could potentially relate to packets se
nt
with the same address over a different interface.</t>
</section> <!-- End of Path Changes -->
<section title="Validation of PTB Messages"> <section numbered="true" toc="default">
<t> Support for receiving ICMP PTB messages is <name>Validation of PTB Messages</name>
OPTIONAL for DPLPMTUD. A UDP Options sender <t> Support for receiving ICMP PTB messages is
<bcp14>OPTIONAL</bcp14> for DPLPMTUD. A UDP Options sender
can therefore ignore received ICMP PTB messages.</t> can therefore ignore received ICMP PTB messages.</t>
<t>Before processing an ICMP PTB message, the
<t>Before processing an ICMP PTB message the DPLPMTUD method needs to perform two checks to ensure
DPLPMTUD method needs to perform two checks that the message was received
that the messgage was received
in response to a sent probe packet:</t> in response to a sent probe packet:</t>
<list style="symbols"> <ul spacing="normal">
<t>DPLPMTUD first utilises the quoted information in each PTB mess <li>
age. <t>DPLPMTUD first utilizes the quoted information in each PTB
The receiver MUST validate the protocol information in the quoted message. The receiver <bcp14>MUST</bcp14> validate the protocol
packet information in the quoted packet carried in an ICMP PTB message
carried in an ICMP PTB message payload to validate the message payload to validate the message originated from the sending node
originated from the sending node (see Section 4.6.1 of (see <xref target="RFC8899" sectionFormat="of"
<xref target="RFC8899"></xref>).</t> section="4.6.1"/>).</t>
<t>The receiver SHOULD utilize information that is not simple for </li>
an <li>
off-path attacker to determine (see Section 4.6.1 of <t>The receiver <bcp14>SHOULD</bcp14> utilize information that is
<xref target="RFC8899"></xref>). not simple for an off-path attacker to determine (see
Specifically, a UDP Options receiver SHOULD confirm that <xref target="RFC8899" sectionFormat="of" section="4.6.1"/>).
the token contained in the UDP REQ Option of the quoted packet Specifically, a UDP Options receiver <bcp14>SHOULD</bcp14> confirm
has a value that corresponds to a probe packet that was recently that the token contained in the UDP REQ Option of the quoted
sent by the current endpoint.</t> packet has a value that corresponds to a probe packet that was
</list> recently sent by the current endpoint.</t>
<t>An </li>
implementation unable to support this validation MUST ignore </ul>
<t>An
implementation unable to support this validation <bcp14>MUST</bcp14>
ignore
received ICMP PTB messages.</t> received ICMP PTB messages.</t>
</section> <!-- End of PTB --> </section>
</section> <!-- End of Network Events -->
<section anchor="examples" title="Examples with Different Receiver Behaviors "> </section>
<t> When enabled, a DPLPMTUD endpoint that implements UDP Options <section anchor="examples" numbered="true" toc="default">
<name>Examples with Different Receiver Behaviors</name>
<t> When enabled, a DPLPMTUD endpoint that implements UDP Options
normally responds with a normally responds with a
UDP datagram with a RES Option when requested by a sender.</t> UDP datagram with a RES Option when requested by a sender.</t>
<t>The following examples describe various possible receiver behaviors:</t
<t>The following examples describe various possible receiver behaviors:< >
/t> <ul spacing="normal">
<list style="symbols"> <li>
<t>(No DPLPMTUD receiver support) <t>No DPLPMTUD receiver support:
One case is when a sender supports this specification, One case is when a sender supports this specification,
but no RES Option is received from the remote endpoint. but no RES Option is received from the remote endpoint.
In this example, the method In this example, the method
is unable to discover the PLPMTU. This will result in using the is unable to discover the PLPMTU. This will result in using the
minimum configured PLPMTU (MIN_PLPMTU). MIN_PLPMTU.
Such a remote endpoint might be not configured to process UDP Option Such a remote endpoint might be not configured to process UDP Option
s, or s or
might not return a datagram with a RES Option for some other reason might not return a datagram with a RES Option for some other reason
(packet loss, insufficient space (e.g., packet loss, insufficient space
to include the option, filtering on the path, etc).</t> to include the option, filtering on the path, etc.).</t>
</li>
<t>(DPLPMTUD receiver uses application datagrams) <li>
<t>DPLPMTUD receiver uses application datagrams:
In a second case, both the sender and receiver In a second case, both the sender and receiver
support DPLPMTUD using the specification, support DPLPMTUD using the specification,
and the receiver only returns a RES Option with the next UDP datagra m and the receiver only returns a RES Option with the next UDP datagra m
that is sent to the requester. that is sent to the requester.
Therefore, reception of a REQ Option does not systematically trigger a response. Therefore, reception of a REQ Option does not systematically trigger a response.
This allows DPLPMTUD to operate when there is a flow of datagrams in both directions, This allows DPLPMTUD to operate when there is a flow of datagrams in both directions,
providing there is periodic feedback (e.g., one acknowledgement pack et per RTT). provided there is periodic feedback (e.g., one acknowledgement packe t per RTT).
It requires the PLPMTU at the receiver It requires the PLPMTU at the receiver
to be sufficiently large that the RES option can be included in the feedback packets to be sufficiently large enough that the RES Option can be included in the feedback packets
that are sent in the return direction. that are sent in the return direction.
This method avoids opportunities to misuse the method as a DoS attac k. This method avoids opportunities to misuse the method as a DoS attac k.
However, when there is a low However, when there is a low
rate of transmission (or no datagrams are sent) in the return direct ion, rate of transmission (or no datagrams are sent) in the return direct ion,
this will prevent prompt delivery of the RES Option. this will prevent prompt delivery of the RES Option.
At the DPLPMTUD sender, this results in probe packets failing to be At the DPLPMTUD sender, this results in probe packets failing to be
acknowledged in time, acknowledged in time
and could result in a smaller PLPMTU than is actually supported by and could result in a smaller PLPMTU than is actually supported by
the path or in using the minimum configured PLPMTU (MIN_PLPMTU).</t> the path or in using the MIN_PLPMTU.</t>
</li>
<t>(Uni-directional transfer) Another case is where an application o <li>
nly transfers data <t>Unidirectional transfer: Another case is where an application only
transfers data
in one direction (or predominantly in one direction). in one direction (or predominantly in one direction).
In this case the wait at the receiver for a datagram to be queued be fore In this case, the wait at the receiver for a datagram to be queued b efore
returning a RES Option could easily result in a probe timeout returning a RES Option could easily result in a probe timeout
at the DPLPMTUD sender. at the DPLPMTUD sender.
In this case, DPLPMTUD could allow exchanging datagrams without In this case, DPLPMTUD could allow exchanging datagrams without
a payload (as discussed in earlier sections) to return the RES Optio n.</t> a payload (as discussed in earlier sections) to return the RES Optio n.</t>
</li>
<t>(DPLPMTUD Receiver permitted to send responses in UDP datagrams w <li>
ith no payload) <t>DPLPMTUD receiver permitted to send responses in UDP datagrams with
no payload:
A DPLPMTUD receiver can generate a datagram (e.g., with zero payload data) A DPLPMTUD receiver can generate a datagram (e.g., with zero payload data)
solely to return a RES Option solely to return a RES Option
(e.g., sent when no other datagrams are queued for transmission). (e.g., sent when no other datagrams are queued for transmission).
This would allow an endpoint to probe the set of UDP ports that have This would allow an endpoint to probe the set of UDP ports that have
been configured with support for this specification been configured with support for this specification
using a DPLPMTUD probe packet. using a DPLPMTUD probe packet.
Although this results in some additional traffic overhead, Although this results in some additional traffic overhead,
it has the advantage that it it has the advantage that it
can ensure timely progress of DPLPMTUD. can ensure timely progress of DPLPMTUD.
Section <xref target="formats"></xref> specifies: "If a UDP Options <xref target="formats" format="default"/> specifies: "If a UDP Optio
endpoint creates and ns endpoint creates and
sends a datagram with a RES option solely as response to a received sends a datagram with a RES Option solely as response to a received
REQ Option, REQ Option,
the responder MUST limit the rate of these responses the responder <bcp14>MUST</bcp14> limit the rate of these responses
(e.g., limiting each pair of ports to send 1 per RTT or 1 per second (e.g., limiting each pair of ports to send 1 per measured RTT or 1 p
)". er second)".
This rate limit is to mitigate the DoS vector, without significantly impacting This rate limit is to mitigate the DoS vector, without significantly impacting
the operation of DPLPMTUD.</t> the operation of DPLPMTUD.</t>
</list> </li>
</section> <!-- End of examples --> </ul>
</section>
<section anchor="Acknowledgements" title="Acknowledgements">
<t>Gorry Fairhurst and Tom Jones are supported by funding provided b
y
the University of Aberdeen. The editors would like to thank Magnus W
esterlund
and Mohamed Boucadair for their detailed comments and also other peo
ple
who contributed to completing this document.</t>
</section> <!-- End of acknowledgements -->
<section anchor="IANA" title="IANA Considerations"> <section anchor="IANA" numbered="true" toc="default">
<t>This memo includes no requests to IANA.</t> <name>IANA Considerations</name>
</section> <!-- End of IANA --> <t>This document has no IANA actions.</t>
</section>
<section anchor="Security" title="Security Considerations"> <section anchor="Security" numbered="true" toc="default">
<t>The security considerations for using UDP Options are described i <name>Security Considerations</name>
n <t>The security considerations for using UDP Options are described in
<xref target="I-D.ietf-tsvwg-udp-options"></xref>. The <xref target="RFC9868" format="default"/>. The
method does not change the integrity protection offered by the UDP method does not change the integrity protection offered by the UDP
options method.</t> Options method.</t>
<t>The security considerations for using DPLPMTUD are described in <xref t
<t>The security considerations for using DPLPMTUD are described in < arget="RFC8899" format="default"/>. On-path attackers could maliciously drop
xref or modify probe packets to seek to decrease the PMTU or
target="RFC8899"></xref>. On path attackers could maliciously dr
op
or modify probe packets to seek to decrease the PMTU, or
to maliciously modify probe packets in an attempt to black-hole traf fic.</t> to maliciously modify probe packets in an attempt to black-hole traf fic.</t>
<t>The specification recommends that the token value in the REQ Option is
<t>The specification recommends that the token value in the REQ Opti initialized to a randomized value. This is to enhance protection fro
on is m off-path
initialised to a randomised value. This is to enhance protection fro
m off-path
attacks. attacks.
If a subsequent probe packet uses a token value that is easily deriv ed If a subsequent probe packet uses a token value that is easily deriv ed
from the initial value, from the initial value
(e.g., incrementing the value) a misbehaving on-path observer could (e.g., incrementing the value), a misbehaving on-path observer could
then then
determine the token values used for subsequent probe packets from determine the token values used for subsequent probe packets from
that sender, even if these probe packets are not transiting via the observer. that sender, even if these probe packets are not transiting via the observer.
This would allow probe packets to be forged, with an impact similar to other on-path This would allow probe packets to be forged, with an impact similar to other on-path
attacks against probe packets. attacks against probe packets.
This attack could be mitigated by using an unpredictable This attack could be mitigated by using an unpredictable
token value for each probe packet.</t> token value for each probe packet.</t>
<t>The method does not change the
<t>The method does not change the
ICMP PTB message validation method described by DPLPMTUD: A UDP Opti ons ICMP PTB message validation method described by DPLPMTUD: A UDP Opti ons
sender that utilises ICMP PTB messages received to a probe packet MU ST sender that utilizes ICMP PTB messages received to a probe packet <b cp14>MUST</bcp14>
use the quoted packet to validate the UDP port information in use the quoted packet to validate the UDP port information in
combination with the token contained in the UDP combination with the token contained in the UDP
Option, before processing the packet using the DPLPMTUD method.</t> Option before processing the packet using the DPLPMTUD method.</t>
<t>Upper Layer protocols or applications that employ encryption
<t>Upper Layer protocols or applications that employ encryption
ought to perform DPLPMTUD ought to perform DPLPMTUD
at a layer above UDP Options, and not enable UDP Options support for DPLPMTUD. at a layer above UDP Options and not enable UDP Options support for DPLPMTUD.
This allows the application to control when DPLPMTUD is used to cont rol the additional This allows the application to control when DPLPMTUD is used to cont rol the additional
traffic that this generates. traffic that this generates.
This also ensures that DPLPMTUD probe packets are encrypted.</t> This also ensures that DPLPMTUD probe packets are encrypted.</t>
</section> <!-- End of Sec Considerations --> </section>
</middle> </middle>
<back> <back>
<!-- References split into informative and normative -->
<references title="Normative References">
<!--?rfc include="http://xml.resource.org/public/rfc/bibxml/referenc
e.RFC.2119.xml"?-->
&RFC768;
&RFC2119;
&RFC8174;
&RFC8899;
&I-D.ietf-tsvwg-udp-options;
</references>
<references title="Informative References">
&RFC1191;
&RFC4821;
&RFC8085;
&RFC8201; <references>
<name>References</name>
&RFC8304; <references>
<name>Normative References</name>
</references> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.0
768.xml"/>
<section title="Revision Notes"> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2
<t>XXX Note to RFC-Editor: please remove this entire section prior t 119.xml"/>
o <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8
publication. XXX</t> 174.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8
<t>Individual draft-00.</t> 899.xml"/>
<t><list style="symbols">
<t>This version contains a description for consideration and com
ment
by the TSVWG.</t>
</list></t>
<t>Individual draft-01.</t>
<list style="symbols">
<t>Address Nits</t>
<t>Change Probe Request and Probe Reponse options to Echo to ali
gn
names with draft-ietf-tsvwg-udp-options</t>
<t>Remove Appendix B, Informative Description of new UDP Options
</t>
<t>Add additional sections around Probe Packet generation</t>
</list>
<t>Individual draft-02.</t>
<t><list style="symbols"> <!-- RFC 9868
<t>Address Nits</t> draft-ietf-tsvwg-udp-options-45
</list>Individual draft-03.</t> -->
<reference anchor="RFC9868" target="https://www.rfc-editor.org/info/rfc9868">
<front>
<title>Transport Options for UDP</title>
<author initials="J." surname="Touch" fullname="Dr. Joseph D. Touch">
<organization>Independent Consultant</organization>
</author>
<author initials="C." surname="Heard" fullname="C. M. Heard" role="editor"
>
<organization>Unaffiliated</organization>
</author>
<date month="September" year="2025"/>
</front>
<seriesInfo name="RFC" value="9868"/>
<seriesInfo name="DOI" value="10.17487/RFC9868"/>
</reference>
<t><list style="symbols"> </references>
<t>Referenced DPLPMTUD RFC.</t> <references>
<name>Informative References</name>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.1
191.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4
821.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.80
85.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8
201.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8
304.xml"/>
</references>
</references>
<t>Tidied language to clarify the method.</t> <section anchor="Acknowledgements" numbered="false" toc="default">
</list>Individual draft-04</t> <name>Acknowledgements</name>
<t><list style="symbols"> <t><contact fullname="Gorry Fairhurst"/> and <contact fullname="Tom
<t>Reworded text on probing with data a little</t> Jones"/> are supported by funding provided by the University of
<t>Removed paragraph on suspending ICMP PTB suspension.</t> Aberdeen. The authors would like to thank <contact fullname="Magnus
</list>Working group draft-00</t> Westerlund"/> and <contact fullname="Mohamed Boucadair"/> for their
<t><list style="symbols"> detailed comments and also other people who contributed to completing
this document.</t>
</section>
<t>-00 First Working Group Version</t> </back>
<t>RFC8899 call search_done SEARCH_COMPLETE, fixed.</t> <!-- [rfced] Please review whether any of the notes in this document
</list></t> should be in the <aside> element. It is defined as "a container for
<t>Working group draft -01</t> content that is semantically less important or tangential to the
<t><list style="symbols"> content that surrounds it" (https://authors.ietf.org/en/rfcxml-vocabulary#aside)
.
-->
<t>Update to reflect new fragmentation design in UDP Options.</t <!-- [rfced] We note that this document uses "UDP Options", while RFC-to-be 9868
> <draft-ietf-tsvwg-udp-options> uses "UDP options" (lowercase). Please review a
<t>Add a description of uses of DPLPMTUD with UDP Options.</t> nd let us know if these should be made consistent. Perhaps lowercase for "UDP o
<t>Add a description on how to form probe packets with padding.< ptions" in general, but "Option" when referring to a specific option (e.g., Resp
/t> onse (RES) Option).
<t>Say that MSS options can be used to initialise the search alg
orithm.</t>
<t>Say that the recommended approach is to not use user data for
probes.</t>
<t>Attempts to clarify and improve wording throughout.</t>
<t>Remove text saying you can respond to multiple probes in a si
ngle packet.</t>
<t>Simplified text by removing options that don't yield benefit.
</t>
</list></t> See <https://www.rfc-editor.org/authors/rfc9868.html>.
<t>Working group draft -02</t> -->
<t><list style="symbols">
<t>Update to reflect comments from MED.</t>
<t>More consistent description of DPLPMTUD with UDP Options.</t>
<t>Clarify the nonce value (token) is intended per 5-tuple, not
interface.</t>
<t>BASE_PLPMTU related to RFC8899.</t>
<t>Probes with user data can carry application control data.</t>
<t>Added that application data uses RES and REQ nonce (token) va
lues from the app.</t>
<t>QUIC was intended as an informational reference to an example
of RFC8899.</t>
</list></t>
<t>Working group draft -03</t>
<t><list style="symbols">
<t>Update to reflect more comments from MED.</t>
<t>Again more consistent description of DPLPMTUD with UDP Option
s.</t>
<t>Clarify token/nonce to use token. </t>
<t>Clarify any use of application data for black-hole detection.
</t>
<t>Minor changes to reflect update to UDP Options base spec.</t>
</list></t>
<t>Working group draft-04.</t>
<t><list>
<t>Update for WG Last Call</t>
</list></t>
<t>Working group draft-05.</t>
<t><list>
<t>Update following WG Last Call</t>
</list></t>
<t>Working group draft-06.</t>
<t><list>
<t>Tidy text after WG Last Call, based on review by Med.</t>
<t>Added text after WG Last Call, based on review by Magnus.</t>
<t>Added text after WG Last Call, based on comments by Joe and M
ike.</t>
<t>Restructured to integrate the WGLC new text.</t>
</list></t>
<t>Working group draft-07.</t>
<t><list>
<t>Mention of UDP-Options in Intro, from a review by Med.</t>
<t>Resolve typo, from review by Magnus.</t>
</list></t>
<t>Working group draft-08.</t>
<t><list>
<t>Corrections following a review by Mike Heard.</t>
</list></t>
<t>Working group draft-09.</t>
<t><list>
<t>Corrections following a review by Erik Auerswald and others.<
/t>
</list></t>
<t>Working group draft-10.</t>
<t><list>
<t>Corrections following a review by Erik Auerswald.</t>
</list></t>
<t>Working group draft-11.</t>
<t><list>
<t>Revised data - waiting for UDP Options to complete.</t>
</list></t>
<t>Working group draft-11.</t>
<t>Editorial corrections to align section numbers in referenced RFCs
/I-Ds and minor editorial improvements.</t>
<t>Working group draft -12, -13.</t>
<t><list>
<t>Editorial corrections preparing for WGLC.</t>
</list></t>
<t>Working group draft -14.</t>
<t><list>
<t>Updated after INT and SEC reviews.</t>
</list></t>
<t>Working group draft -15.</t>
<t><list>
<t>Updated after IESG comments.</t>
</list></t>
</section>
</back>
</rfc> </rfc>
 End of changes. 119 change blocks. 
781 lines changed or deleted 605 lines changed or added

This html diff was produced by rfcdiff 1.48.