From c98ce90760579926bf0983cb2a85b86232e56058 Mon Sep 17 00:00:00 2001 From: ianswett Date: Sun, 21 Jul 2019 09:46:00 -0400 Subject: [PATCH 1/5] Up to two full-sized datagrams, not packets Now that the PTO retransmits Initial and Handshake data, it's possible and likely desirable to bundle multiple QUIC packets in a single datagram. This change makes it clear that is allowed. --- draft-ietf-quic-recovery.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/draft-ietf-quic-recovery.md b/draft-ietf-quic-recovery.md index fc55bb4f33..988893a9b7 100644 --- a/draft-ietf-quic-recovery.md +++ b/draft-ietf-quic-recovery.md @@ -514,7 +514,7 @@ and larger thresholds increase loss detection delay. ## Probe Timeout {#pto} -A Probe Timeout (PTO) triggers sending one or two probe packets when +A Probe Timeout (PTO) triggers sending one or two probe datagrams when ack-eliciting packets are not acknowledged within the expected period of time or the handshake has not been completed. A PTO enables a connection to recover from loss of tail packets or acks. The PTO algorithm used in QUIC @@ -598,8 +598,8 @@ discarded. When a PTO timer expires, a sender MUST send at least one ack-eliciting packet as a probe, unless there is no data available to send. An endpoint MAY send up -to two ack-eliciting packets, to avoid an expensive consecutive PTO expiration -due to a single packet loss. +to two full sized datagrams containing ack-eliciting packets, to avoid an +expensive consecutive PTO expiration due to a single lost datagram. It is possible that the sender has no new or previously-sent data to send. As an example, consider the following sequence of events: new application data is From e4222702990931ae6002bff60fdf5f2c4d835cf8 Mon Sep 17 00:00:00 2001 From: ianswett Date: Sun, 21 Jul 2019 10:15:43 -0400 Subject: [PATCH 2/5] Update draft-ietf-quic-recovery.md Co-Authored-By: MikkelFJ --- draft-ietf-quic-recovery.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/draft-ietf-quic-recovery.md b/draft-ietf-quic-recovery.md index 988893a9b7..e0c07d9fae 100644 --- a/draft-ietf-quic-recovery.md +++ b/draft-ietf-quic-recovery.md @@ -517,7 +517,7 @@ and larger thresholds increase loss detection delay. A Probe Timeout (PTO) triggers sending one or two probe datagrams when ack-eliciting packets are not acknowledged within the expected period of time or the handshake has not been completed. A PTO enables a connection to -recover from loss of tail packets or acks. The PTO algorithm used in QUIC +recover from loss of tail packets or ACKs. The PTO algorithm used in QUIC implements the reliability functions of Tail Loss Probe {{?TLP=I-D.dukkipati-tcpm-tcp-loss-probe}} {{?RACK}}, RTO {{?RFC5681}} and F-RTO algorithms for TCP {{?RFC5682}}, and the timeout computation is based on From 86bd396336f01afeae18bc302614d25961d29ed0 Mon Sep 17 00:00:00 2001 From: ianswett Date: Sun, 21 Jul 2019 15:26:46 -0400 Subject: [PATCH 3/5] Update draft-ietf-quic-recovery.md Co-Authored-By: Jana Iyengar --- draft-ietf-quic-recovery.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/draft-ietf-quic-recovery.md b/draft-ietf-quic-recovery.md index e0c07d9fae..690eaaf44f 100644 --- a/draft-ietf-quic-recovery.md +++ b/draft-ietf-quic-recovery.md @@ -517,7 +517,7 @@ and larger thresholds increase loss detection delay. A Probe Timeout (PTO) triggers sending one or two probe datagrams when ack-eliciting packets are not acknowledged within the expected period of time or the handshake has not been completed. A PTO enables a connection to -recover from loss of tail packets or ACKs. The PTO algorithm used in QUIC +recover from loss of tail packets or acknowledgements. The PTO algorithm used in QUIC implements the reliability functions of Tail Loss Probe {{?TLP=I-D.dukkipati-tcpm-tcp-loss-probe}} {{?RACK}}, RTO {{?RFC5681}} and F-RTO algorithms for TCP {{?RFC5682}}, and the timeout computation is based on From cd39516a3929f7b5aaedb98787e579b605b70669 Mon Sep 17 00:00:00 2001 From: ianswett Date: Sun, 21 Jul 2019 15:26:54 -0400 Subject: [PATCH 4/5] Update draft-ietf-quic-recovery.md Co-Authored-By: Jana Iyengar --- draft-ietf-quic-recovery.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/draft-ietf-quic-recovery.md b/draft-ietf-quic-recovery.md index 690eaaf44f..60935245b5 100644 --- a/draft-ietf-quic-recovery.md +++ b/draft-ietf-quic-recovery.md @@ -598,7 +598,7 @@ discarded. When a PTO timer expires, a sender MUST send at least one ack-eliciting packet as a probe, unless there is no data available to send. An endpoint MAY send up -to two full sized datagrams containing ack-eliciting packets, to avoid an +to two full-sized datagrams containing ack-eliciting packets, to avoid an expensive consecutive PTO expiration due to a single lost datagram. It is possible that the sender has no new or previously-sent data to send. As From a1b9bed8a9154f4f251a78d61dddfde676893fa3 Mon Sep 17 00:00:00 2001 From: ianswett Date: Sun, 21 Jul 2019 15:28:46 -0400 Subject: [PATCH 5/5] Fix a long line --- draft-ietf-quic-recovery.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/draft-ietf-quic-recovery.md b/draft-ietf-quic-recovery.md index 60935245b5..d0f19833bf 100644 --- a/draft-ietf-quic-recovery.md +++ b/draft-ietf-quic-recovery.md @@ -517,8 +517,8 @@ and larger thresholds increase loss detection delay. A Probe Timeout (PTO) triggers sending one or two probe datagrams when ack-eliciting packets are not acknowledged within the expected period of time or the handshake has not been completed. A PTO enables a connection to -recover from loss of tail packets or acknowledgements. The PTO algorithm used in QUIC -implements the reliability functions of Tail Loss Probe +recover from loss of tail packets or acknowledgements. The PTO algorithm used +in QUIC implements the reliability functions of Tail Loss Probe {{?TLP=I-D.dukkipati-tcpm-tcp-loss-probe}} {{?RACK}}, RTO {{?RFC5681}} and F-RTO algorithms for TCP {{?RFC5682}}, and the timeout computation is based on TCP's retransmission timeout period {{?RFC6298}}.