Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

DPLPMTUD fixes #3606

Merged
merged 3 commits into from May 1, 2020
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
43 changes: 19 additions & 24 deletions draft-ietf-quic-transport.md
Expand Up @@ -3707,20 +3707,12 @@ associate the message with a corresponding transport connection {{!DPLPMTUD}}.
ICMP message validation MUST include matching IP addresses and UDP ports
{{!RFC8085}} and, when possible, connection IDs to an active QUIC session.

Further validation can also be provided:

* An IPv4 endpoint could set the Don't Fragment (DF) bit on a small proportion
of packets, so that most invalid ICMP messages arrive when there are no DF
packets outstanding, and can therefore be identified as spurious.

* An endpoint could store additional information from the IP or UDP headers to
use for validation (for example, the IP ID or UDP checksum).

The endpoint SHOULD ignore all ICMP messages that fail validation.

An endpoint MUST NOT increase PMTU based on ICMP messages. Any reduction in the
QUIC maximum packet size MAY be provisional until QUIC's loss detection
algorithm determines that the quoted packet has actually been lost.
An endpoint MUST NOT increase PMTU based on ICMP messages; see Section 3, clause
6 of {{!DPLPMTUD}}. Any reduction in the QUIC maximum packet size in response
to ICMP messages MAY be provisional until QUIC's loss detection algorithm
determines that the quoted packet has actually been lost.


## Datagram Packetization Layer PMTU Discovery
Expand All @@ -3746,18 +3738,21 @@ apply if these messages are used by DPLPMTUD.

### PMTU Probes Containing Source Connection ID {#pmtu-probes-src-cid}

Endpoints that rely on the destination connection ID for routing QUIC packets
are likely to require that the connection ID be included in PMTU probe packets
to route any resulting ICMP messages ({{icmp-pmtud}}) back to the correct
endpoint. However, only long header packets ({{long-header}}) contain source
connection IDs, and long header packets are not decrypted or acknowledged by
the peer once the handshake is complete. One way to construct a PMTU probe is
to coalesce (see {{packet-coalesce}}) a Handshake packet ({{packet-handshake}})
with a short header packet in a single UDP datagram. If the UDP datagram
reaches the endpoint, the Handshake packet will be ignored, but the short header
packet will be acknowledged. If the UDP datagram elicits an ICMP message, that
message will likely contain the source connection ID within the quoted portion
of the UDP datagram.
Endpoints that rely on the destination connection ID for routing incoming QUIC
packets are likely to require that the connection ID be included in PMTU probe
packets to route any resulting ICMP messages ({{icmp-pmtud}}) back to the
correct endpoint. However, only long header packets ({{long-header}}) contain
source connection IDs, and long header packets are not decrypted or acknowledged
by the peer once the handshake is complete.

One way to construct a probe for the path MTU is to coalesce (see
{{packet-coalesce}}) a Handshake packet ({{packet-handshake}}) with a short
header packet in a single UDP datagram. If the UDP datagram reaches the
endpoint, the Handshake packet will be ignored, but the short header packet will
be acknowledged. If the UDP datagram causes an ICMP message to be sent, the
first part of the datagram will be quoted in that message. If the the source
connection ID is within the quoted portion of the UDP datagram, that could be
used for routing.


# Versions {#versions}
Expand Down