Internet Engineering Task Force | G. Fairhurst |
Internet-Draft | T. Jones |
Intended status: Standards Track | University of Aberdeen |
Expires: January 4, 2018 | M. Tuexen |
I. Ruengeler | |
Muenster University of Applied Sciences | |
July 03, 2017 |
Packetization Layer Path MTU Discovery for Datagram Transports
draft-fairhurst-tsvwg-datagram-plpmtud-00.txt
This document describes a robust method for Path MTU Discovery (PMTUD) for datagram packetization layers. It allows these layers to probe an Internet path with progressively larger packets to determine a maximum packet size This method is described as an extension to RFC 1191 and RFC 1981, which specify ICMP-based Path MTU Discovery for IP versions 4 and 6. The document provides functionally for datagram transports that is equivalent to the packetization layer PMTUD specification for TCP, specified in RFC4821.
This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."
This Internet-Draft will expire on January 4, 2018.
Copyright (c) 2017 IETF Trust and the persons identified as the document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License.
The IETF has specified datagram transport using UDP, SCTP, SCTP/UDP, DCCP, and DCCP/UDP as well as upper layer protocols layered on top of these transports.
Classical Path MTU Discovery (PMTUD) can be used with any transport that is able to process ICMP Packet Too Big (PTB) messages (e.g., [RFC1191][I-D.ietf-6man-rfc1981bis]). It adjusts the Effective Path MTU (PMTU), based on reception of ICMP PTB messages to decrease the PMTU when this is larger than the value supported along a path, and a method that increases the packet size in attempt to discover an increase in the supported PMTU. However, ICMP messages are being increasingly filtered by middleboxes (including Firewalls) [RFC4890]. Classical PMTUD is therefore subject to protocol failures (e.g., traffic using a packet size larger than the actual supported PMTU is blackholed when ICMP PTB messages are not delivered for some reason [RFC2923]).
Packetization Layer Path MTU Discovery (PLPMTUD) [RFC4821] does not rely upon network or transport support for ICMP messages and is therefore considered more robust than Classical PMTUD. This has become the preferred approach for TCP traffic. The general strategy is for the Packetization Layer to find an appropriate PMTU by sending probe packets along the path with a progressively larger packet size. If a probe packet is successfully delivered (as determined by the PL), then the effective Path MTU is raised to the probe size. PLPMTUD introduces flexibility in the implementation of classical PMTUD. It can be configured to only perform ICMP black hole recovery to increase the robustness of classical PMTUD, or at the other extreme, all ICMP processing can be disabled and PLPMTUD can completely replace classical Path MTU Discovery. Using PLPMTUD, classical Path MTU Discovery can also be modified to include additional consistency checks without increasing the risk of connection hangs due to spurious failures of the additional checks.
The UDP-Guidelines [RFC8085] state "an application SHOULD either use the path MTU information provided by the IP layer or implement Path MTU Discovery (PMTUD)", but does not provide a mechanism for discovering the largest size of unfragmented datagram than can be used on a path. This specification describes how these datagram transports perform PLPMTUD. This mechanism has not currently been specified for UDP, while Section 10.2 of [RFC4821] specifies a recommended PLPMTUD probing method for SCTP.
Section Section 4 of this document presents a set of algorithms for datagram protocols to discover the maximum transmission unit possible on a path at the packetization layer. The methods described rely on features of transport protocols and apply to transport protocols over IPv4 and IPv6. They do not require cooperation from the lower layers (except that they are consistent about which packet sizes are acceptable) or from peers.
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119].
Other terminology is directly copied from [RFC4821], the EMTU definitions are from [RFC1122].
All of the requirements in [RFC4821] apply. There are also a number of design constraints imposed by datagram transports. TCP PLPMTUD has been defined using standard TCP protocol mechanism. Unlike TCP, some datagram transports require additional or optional mechanisms to implement PLPMTUD. This can place constraints on deployment when only one end supports the new method.
There are eight functions that any Datagram PLPMTUD mechanisms needs to perform:
Many datagram protocols provide mechanisms to distinguish in-band data from padding. In contrast, TCP to generate probes by appropriately segmenting data. There are three ways of creating probes, using application data, using application data and padding and padding only:
Three approaches are possible for providing datagram reliability:
<< Fill in a generic algorithm based on sending probe packets, receiving success indications and possibly handling PTB messages. These three operations are protocol specific and are described in Section 5 for various protocols. >>
<< In future revisions of this document, this section may be divided into PMTUD and PLPMTUD methods >>
UDP and UDP-LIte [RFC3828] do not provide a method that allows padding to be added to a datagram.
<< This section will be completed in a future revision of this ID >>
UDP places additional design requirements on an application that wishes to use PLPMTUD. UDP Options permits padding to be added to UDP datagrams [I-D.ietf-tsvwg-udp-options], and can be used to provide reception feedback. Therefore, UDP-Options can be used to assist UDP applications by supplying the additional functionality and using this to provide a Datagram PMTUD service similar to that offered by other transports.
<< This section will be completed in a future revision of this ID >>
Section 10.2 of [RFC4821] specifies a recommended PLPMTUD probing method for SCTP. It recommends use of the PAD chunk, defined in [RFC4820] to be attached to a minimum length HEARTBEAT chunk to build a probe packet. This allows to perform probing without affecting the transfer of user messages and without interfering with congestion control. Therefore it is preferred to the use of DATA chunks (with padding as required) to serve as path probes.
<< We might define a parameter contained in the INIT and INIT ACK chunk to indicated the MTU to the peer. However, multihoming makes this a bit complex, so it might not be worth doing. >>
The base protocol is specified in [RFC4960].
Probe packets consist of an SCTP common header followed by a HEARTBEAT chunk and a PAD chunk. The PAD chunk is used to control the length of the probe packet. The HEARTBEAT chunk is used to trigger the sending of a HEARTBEAT ACK chunk. The reception of the HEARTBEAT ACK chunk signals the successful probing.
Normal ICMP verification MUST be performed as specified in Appendix C of [RFC4960]. This requires that the first 8 bytes of the SCTP common header are contained in the ICMP packet, which is normally fulfilled by ICMPv4 and ICMPv6.
The UDP encapsulation of SCTP is specified in [RFC6951].
The probing can be performed as specified in Section 5.2.1.1.
Normal ICMP verification has to be performed as specified in [RFC4960]. However, this might not be possible for ICMPv4, since it is not guaranteed that the ICMP packet contains the first 8 bytes of the SCTP common header. ICMPv6 packets should contain enough information to perform the required verification.
The DTLS encapsulation of SCTP is specified in [I-D.ietf-tsvwg-sctp-dtls-encaps]. It is used for data channels in WebRTC implementations.
The probing can be done as specified in Section 5.2.1.1.
Normal ICMP verification can not be performed as specified in [RFC4960], since even if the ICMP contains enough information, the reflected SCTP common header would be encrypted. Therefore it is not possible to process ICMP PTB messages.
DCCP [RFC4340] implementations are required to support classical PMTUD and states that a DCCP sender "MUST maintain the maximum packet size (MPS) allowed for each active DCCP session" and also defines "current congestion control mechanism (CCMPS), the maximum packet size supported by the path's links". It recommends use of PMTUD, and suggests use of DCCP-Sync packets as path probes, because they do not risk application data loss. It does not currently specify the use of PLPMTUD methods that could work independently of the ability to utilise ICMP PTB messages.
<< This section will be completed in a future revision of this ID >>
DCCP/UDP is a UDP-based transport that permits padding to be added to datagrams, and can provide reception feedback.
<< This section will be completed in a future revision of this ID >>
QUIC is a UDP-based transport that provides reception feedback [draft-ietf-quic-transport].
<< This section will be completed in a future revision of this ID >>
This work was partially funded by the European Union's Horizon 2020 research and innovation programme under grant agreement No. 644334 (NEAT). The views expressed are solely those of the author(s).
This memo includes no request to IANA.
If there are no requirements for IANA, the section will be removed during conversion into an RFC by the RFC Editor.
The security considerations for the use of UDP and SCTP are provided in the references RFCs. Security guidance for applications using UDP is provided in the UDP-Guidelines [RFC8085].
ICMP PTB messages could potentially be used to cause a node to inappropriately reduce the PMTU. A node supporting PLPMTUD SHOULD appropriately validate the payload of ICMP PTB messages to ensure these are received in response to transmitted traffic (i.e., a reported error condition that corresponds to a datagram actually sent by the path layer.
[I-D.ietf-6man-rfc1981bis] | <>, J., <>, S., <>, J. and R. Hinden, "Path MTU Discovery for IP version 6", Internet-Draft draft-ietf-6man-rfc1981bis-08, May 2017. |
[I-D.ietf-tsvwg-sctp-dtls-encaps] | Tuexen, M., Stewart, R., Jesup, R. and S. Loreto, "DTLS Encapsulation of SCTP Packets", Internet-Draft draft-ietf-tsvwg-sctp-dtls-encaps-09, January 2015. |
[I-D.ietf-tsvwg-udp-options] | Touch, J., "Transport Options for UDP", Internet-Draft draft-ietf-tsvwg-udp-options-01, June 2017. |
[RFC1122] | Braden, R., "Requirements for Internet Hosts - Communication Layers", STD 3, RFC 1122, DOI 10.17487/RFC1122, October 1989. |
[RFC2119] | Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997. |
[RFC3828] | Larzon, L-A., Degermark, M., Pink, S., Jonsson, L-E. and G. Fairhurst, "The Lightweight User Datagram Protocol (UDP-Lite)", RFC 3828, DOI 10.17487/RFC3828, July 2004. |
[RFC4820] | Tuexen, M., Stewart, R. and P. Lei, "Padding Chunk and Parameter for the Stream Control Transmission Protocol (SCTP)", RFC 4820, DOI 10.17487/RFC4820, March 2007. |
[RFC4960] | Stewart, R., "Stream Control Transmission Protocol", RFC 4960, DOI 10.17487/RFC4960, September 2007. |
[RFC6951] | Tuexen, M. and R. Stewart, "UDP Encapsulation of Stream Control Transmission Protocol (SCTP) Packets for End-Host to End-Host Communication", RFC 6951, DOI 10.17487/RFC6951, May 2013. |
[RFC8085] | Eggert, L., Fairhurst, G. and G. Shepherd, "UDP Usage Guidelines", BCP 145, RFC 8085, DOI 10.17487/RFC8085, March 2017. |
[RFC1191] | Mogul, J. and S. Deering, "Path MTU discovery", RFC 1191, DOI 10.17487/RFC1191, November 1990. |
[RFC2923] | Lahey, K., "TCP Problems with Path MTU Discovery", RFC 2923, DOI 10.17487/RFC2923, September 2000. |
[RFC4340] | Kohler, E., Handley, M. and S. Floyd, "Datagram Congestion Control Protocol (DCCP)", RFC 4340, DOI 10.17487/RFC4340, March 2006. |
[RFC4821] | Mathis, M. and J. Heffner, "Packetization Layer Path MTU Discovery", RFC 4821, DOI 10.17487/RFC4821, March 2007. |
[RFC4890] | Davies, E. and J. Mohacsi, "Recommendations for Filtering ICMPv6 Messages in Firewalls", RFC 4890, DOI 10.17487/RFC4890, May 2007. |
Note to RFC-Editor: please remove this entire section prior to publication.
Individual draft -00: