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

Clarify client anti-amplification response #3445

Merged
merged 14 commits into from Feb 27, 2020
20 changes: 10 additions & 10 deletions draft-ietf-quic-transport.md
Expand Up @@ -1627,16 +1627,16 @@ necessary. Sending padded datagrams ensures that the server is not overly
constrained by the amplification restriction.

Loss of an Initial or Handshake packet from the server can cause a deadlock if
the client does not send additional Initial or Handshake packets. The server can
reach its anti-amplification limit, but the clients Initial data has been
acknowledged without receiving all the server's Handshake data. In this case,
where the client would otherwise not send any additional packets, the server
will be unable to send because it has not received enough from the client or
validated the clients address. To prevent this deadlock, clients MUST send a
packet on a probe timeout, or PTO; see Section 5.3 of {{QUIC-RECOVERY}}.
In this case, the client MUST send an Initial packet in a UDP datagram of at
least 1200 bytes if it does not have Handshake keys, and otherwise send a
Handshake packet.
the client does not send additional Initial or Handshake packets. The server
ianswett marked this conversation as resolved.
Show resolved Hide resolved
can reach its anti-amplification limit, but if the client has received
ianswett marked this conversation as resolved.
Show resolved Hide resolved
acknowledgements for all the data is has sent, it has no reason to send more
ianswett marked this conversation as resolved.
Show resolved Hide resolved
packets. In this case, where the client would otherwise not send any
additional packets, the server will be unable to send because it has not
ianswett marked this conversation as resolved.
Show resolved Hide resolved
received enough from the client or validated the clients address. To prevent
ianswett marked this conversation as resolved.
Show resolved Hide resolved
this deadlock, clients MUST send a packet on a probe timeout, or PTO;
ianswett marked this conversation as resolved.
Show resolved Hide resolved
see Section 5.3 of {{QUIC-RECOVERY}}. In this case, the client MUST send an
ianswett marked this conversation as resolved.
Show resolved Hide resolved
Initial packet in a UDP datagram of at least 1200 bytes if it does not have
Handshake keys, and otherwise send a Handshake packet.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes. The next question is, what content shall the client place in the Initial or Handshake packet? Just PAD? Ping and PAD?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It seems to me that this doesn't matter. Probing generally goes for ack-eliciting, and some might favour sending data over just a PING, but if the server only needs more bytes, it shouldn't matter if this is PADDING, PING, or CRYPTO.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would favor pure pad, personally, so as to not require its own ack, retransmit, etc. Also, sending it with the proper DCID will get the server out of the DOD amplification control mode.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A proper, updated DCID isn't guaranteed to unblock the server. That is why we haven't expressly allowed for that to be used.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am not asking for a change in the current text. This PR is fine.

A server might wish to validate the client address before starting the
cryptographic handshake. QUIC uses a token in the Initial packet to provide
Expand Down