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

Specify MaxAckDelay for TLP and RTO #991

Merged
merged 13 commits into from
Dec 5, 2017
20 changes: 15 additions & 5 deletions draft-ietf-quic-recovery.md
Original file line number Diff line number Diff line change
Expand Up @@ -310,10 +310,13 @@ conditions:
PTO SHOULD be scheduled for min(RTO, PTO).

MaxAckDelay is the maximum ack delay supplied in an incoming ack frame.
Ack delays that are aren't used for an RTT sample or reference ack-only packets
are excluded. When there is exactly one unacknowledged packet, the alarm
duration includes time for a delayed acknowledgment to be received by including
MaxAckDelay.
MaxAckDelay excludes Ack delays that aren't included in an RTT sample because
they're too large and those which reference an ack-only packet. When there is
exactly one unacknowledged packet, the alarm duration includes time for a
delayed acknowledgment to be received by including MaxAckDelay.

QUIC diverges from TCP by calculating MaxAckDelay dynamically, instead of
assuming a constant value for all connections.

A PTO value of at least 2*SRTT ensures that the ACK is overdue. Using a PTO of
exactly 1*SRTT may generate spurious probes, and 2*SRTT is simply the next
Expand Down Expand Up @@ -370,10 +373,17 @@ one significantly increases resilience to packet drop in both directions, thus
reducing the probability of consecutive RTO events.

QUIC's RTO algorithm differs from TCP in that the firing of an RTO alarm is not
considered a strong enough signal of packet loss. An RTO alarm fires only when
considered a strong enough signal of packet loss, so does not result in an
immediate change to CWND or recovery state. An RTO alarm fires only when
Copy link
Contributor

Choose a reason for hiding this comment

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

is CWND defined by here? or should it be "congestion window"? I'd prefer spelling it out in any case.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Done

there's a prolonged period of network silence, which could be caused by a change
in the underlying network RTT.

QUIC also diverges from TCP by including MaxAckDelay in the RTO period. QUIC is
able to explicitly model the ack delay via the ack delay field in the ack frame.
Copy link
Contributor

Choose a reason for hiding this comment

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

s/model the ack delay/model delay at the receiver/
s/ack frame/ACK frame/

Because QUIC is subtracting this delay from both SRTT and it is expected to
Copy link
Contributor

Choose a reason for hiding this comment

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

s/is subtracting/subtracts/
It doesn't subtract this delay from SRTT... also this sentence is a bit of a run-on. Suggestion: "Since QUIC ignores this delay in its SRTT and RTTVAR computations, it is necessary to add this delay explicitly in the RTO computation.".

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Agreed, fixed.

reduce RTTVar, it is necessary to add it back, in order to compensate for
the smaller SRTT and RTTVar.

When an acknowledgment is received for a packet sent on an RTO event, any
unacknowledged packets with lower packet numbers than those acknowledged MUST be
marked as lost.
Expand Down