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

Recovery uses both time and packet thresholds #1974

Merged
merged 27 commits into from Dec 4, 2018
Merged
Changes from 1 commit
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
8ad3cab
Recovery uses both time and packet thresholds
ianswett Nov 6, 2018
4367f31
Merge branch 'master' into ianswett-both-thresholds
ianswett Nov 6, 2018
aea6a42
Update draft-ietf-quic-recovery.md
ianswett Nov 6, 2018
51ebc20
Update draft-ietf-quic-recovery.md
ianswett Nov 6, 2018
c23f901
Update draft-ietf-quic-recovery.md
ianswett Nov 6, 2018
c98a79c
Update draft-ietf-quic-recovery.md
ianswett Nov 7, 2018
cd05b45
Update draft-ietf-quic-recovery.md
ianswett Nov 7, 2018
1c2596e
Update draft-ietf-quic-recovery.md
ianswett Nov 7, 2018
52aa21a
Update draft-ietf-quic-recovery.md
ianswett Nov 7, 2018
21635b4
Update draft-ietf-quic-recovery.md
ianswett Nov 20, 2018
5afcc2a
Update draft-ietf-quic-recovery.md
ianswett Nov 30, 2018
d606f71
Update draft-ietf-quic-recovery.md
ianswett Nov 30, 2018
fd835fa
Update draft-ietf-quic-recovery.md
ianswett Nov 30, 2018
561e227
Update draft-ietf-quic-recovery.md
ianswett Nov 30, 2018
7560bb4
Update draft-ietf-quic-recovery.md
ianswett Nov 30, 2018
c3bc7bb
Merge branch 'master' into ianswett-both-thresholds
ianswett Nov 30, 2018
ddfe711
Update draft-ietf-quic-recovery.md
ianswett Nov 30, 2018
86cb551
Editorial rework
janaiyengar Dec 1, 2018
e8ae5ad
lint
janaiyengar Dec 1, 2018
6ad1106
clean up RACK reference
janaiyengar Dec 1, 2018
1088bb6
more changes
janaiyengar Dec 1, 2018
8a695c9
Update draft-ietf-quic-recovery.md
ianswett Dec 4, 2018
006843e
Ian comments
janaiyengar Dec 4, 2018
d095952
edit
janaiyengar Dec 4, 2018
000f612
lint
janaiyengar Dec 4, 2018
8b42d95
Merge pull request #2080 from quicwg/editorial-changes
janaiyengar Dec 4, 2018
a06d679
small fix
janaiyengar Dec 4, 2018
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
24 changes: 12 additions & 12 deletions draft-ietf-quic-recovery.md
Expand Up @@ -248,8 +248,8 @@ they do not use a timer to send probes, but rather to declare packets lost.
### Fast Retransmit

An unacknowledged packet is marked as lost when an acknowledgment is received
for a packet that was sent kReorderingThreshold number of packets or
kTimeReorderingFraction amount of time after the unacknowledged packet.
for a packet that was sent kPacketThreshold number of packets or
kTimeThreshold amount of time after the unacknowledged packet.
Receipt of the acknowledgement indicates that a later packet was received,
while the reordering threshold provides some tolerance for reordering of
packets in the network.
Expand All @@ -263,7 +263,7 @@ recovery latency.

#### Packet Threshold

The RECOMMENDED initial value for kReorderingThreshold is 3, based on
The RECOMMENDED initial value for kPacketThreshold is 3, based on
TCP loss recovery {{?RFC5681}} {{?RFC6675}}. Some networks may exhibit higher
degrees of reordering, causing a sender to detect spurious losses.
Implementers MAY use algorithms developed for TCP, such as
Expand All @@ -275,10 +275,10 @@ Time threshold loss detection uses a time threshold to determine how much
reordering to tolerate. In this document, the threshold is expressed as a
fraction of an RTT, but implemenantations MAY experiment with absolute
thresholds. The RECOMMENDED time threshold, expressed as a fraction
of the round-trip time (kTimeReorderingFraction), is 1/8.
of the round-trip time (kTimeThreshold), is 1/8.

An endpoint SHOULD declare packets lost no earlier than
ianswett marked this conversation as resolved.
Show resolved Hide resolved
(1 + kTimeReorderingFraction) * max(SRTT, latest_RTT) after when they were
(1 + kTimeThreshold) * max(SRTT, latest_RTT) after when they were
sent. If packets sent prior to the largest acknowledged packet cannot yet
be declared lost, then a timer SHOULD be set for the remaining time.

Expand Down Expand Up @@ -562,11 +562,11 @@ kMaxTLPs:
: Maximum number of tail loss probes before an RTO expires.
The RECOMMENDED value is 2.

kReorderingThreshold:
kPacketThreshold:
: Maximum reordering in packet number space before FACK style loss detection
considers a packet lost. The RECOMMENDED value is 3.

kTimeReorderingFraction:
kTimeThreshold:
: Maximum reordering in time space before time threshold loss detection
considers a packet lost. In fraction of an RTT. The RECOMMENDED value
is 1/8.
Expand Down Expand Up @@ -640,12 +640,12 @@ max_ack_delay:
received ACK frame may be larger due to late timers, reordering,
or lost ACKs.

reordering_threshold:
packet_threshold:
: The largest packet number gap between the largest acknowledged
retransmittable packet and an unacknowledged
retransmittable packet before it is declared lost.

time_reordering_fraction:
time_reordering_threshold:
: The reordering window as a fraction of max(smoothed_rtt, latest_rtt).

loss_time:
Expand All @@ -666,8 +666,8 @@ follows:
crypto_count = 0
tlp_count = 0
rto_count = 0
time_reordering_fraction = kTimeReorderingFraction
reordering_threshold = kReorderingThreshold
time_reordering_fraction = kTimeThreshold
packet_threshold = kPacketThreshold
loss_time = 0
smoothed_rtt = 0
rttvar = 0
Expand Down Expand Up @@ -878,7 +878,7 @@ DetectLostPackets(largest_acked):
time_since_sent = now() - unacked.time_sent
delta = largest_acked.packet_number - unacked.packet_number
if (time_since_sent > delay_until_lost ||
delta > reordering_threshold):
delta > packet_threshold):
sent_packets.remove(unacked.packet_number)
if (unacked.retransmittable):
lost_packets.insert(unacked)
Expand Down