It might or might not be safe to use the ACK Delay in an Initial packet,
but I don't think you can even consistently know what the delay is until
the transport parameters have been received.

I believe a server always knows its peer's max_ack_delay by the time it has
Handshake keys, but a client could receive Handshake ACKs before receiving
transport parameters.

On Tue, Jun 13, 2023 at 3:21 PM Marten Seemann <martenseem...@gmail.com>
wrote:

> It might not be safe to use the ACK Delay received in an Initial packet.
> An attacker could rewrite the value such that the client's RTT estimate
> becomes very close to zero, which would lead to very short retransmission
> timers.
>
> quic-go therefore neither sends nor acts upon ACK delays reported in
> Initial packets. I thought we had text about that in the RFC, but I can't
> find it. The closest I can find is RFC 9002 Section 5.3, which states that
> Initial ACK Delays MAY be ignored, because Initial packets are supposed to
> be acknowledged immediately.
>
> On Wed, 14 Jun 2023 at 00:40, Damien Neil <dneil=
> 40google....@dmarc.ietf.org> wrote:
>
>> An endpoint's ack_delay_exponent is conveyed in its transport parameters.
>>
>> An endpoint can receive an ACK before it receives transport parameters
>> from the peer. For example, a client may read an ACK in an Initial packet
>> before it receives transport parameters in a Handshake packet.
>>
>> RFC 9000 isn't clear (IMO) on how to interpret an ACK Delay fields prior
>> to receiving transport parameters. Valid options might be to treat all ACK
>> Delay fields as 0 until an ack_delay_exponent is known, or to use the
>> default value of 3 for Initial and Handshake packets and only apply the
>> transport parameter for 1-RTT packets. Am I missing text somewhere which
>> explains the expected behavior?
>>
>

Reply via email to