Re: [quicwg/base-drafts] Simplify TLP and RTO into Probe Timeout (#2114)

ianswett <notifications@github.com> Wed, 12 December 2018 03:07 UTC

Return-Path: <noreply@github.com>
X-Original-To: quic-issues@ietfa.amsl.com
Delivered-To: quic-issues@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 611E3128DFD for <quic-issues@ietfa.amsl.com>; Tue, 11 Dec 2018 19:07:43 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -9.46
X-Spam-Level:
X-Spam-Status: No, score=-9.46 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.46, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, MAILING_LIST_MULTI=-1, RCVD_IN_DNSWL_HI=-5, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=github.com
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id ogmbUQ9iWyNO for <quic-issues@ietfa.amsl.com>; Tue, 11 Dec 2018 19:07:41 -0800 (PST)
Received: from out-4.smtp.github.com (out-4.smtp.github.com [192.30.252.195]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 5E8591277D2 for <quic-issues@ietf.org>; Tue, 11 Dec 2018 19:07:41 -0800 (PST)
Date: Tue, 11 Dec 2018 19:07:39 -0800
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=github.com; s=pf2014; t=1544584059; bh=eq+rZr9G4iDbG4AGj00wMB/lz6+5Mz1ypibpxW3Km0Y=; h=Date:From:Reply-To:To:Cc:In-Reply-To:References:Subject:List-ID: List-Archive:List-Post:List-Unsubscribe:From; b=agqDfvFtbGCMgDK0wuoXob/FL5RJBxHnswW28WHZeJVuSXPTDreuJpOozk7w5ElHy 2jhRAcpth9nAvp6wH/LY7PIP4OU74BoGVdI2ffR7Tq3vMr0H8uhc/ZXj7Bv2MdeCV2 a4kU2NGFy2SnUcyY72LftxcoZVaFS1iS/6xAKLQ0=
From: ianswett <notifications@github.com>
Reply-To: quicwg/base-drafts <reply+0166e4ab885e31e353351683aa76c026e83fe279d380ec9792cf0000000118283d7b92a169ce173c5dcf@reply.github.com>
To: quicwg/base-drafts <base-drafts@noreply.github.com>
Cc: Subscribed <subscribed@noreply.github.com>
Message-ID: <quicwg/base-drafts/pull/2114/review/183994915@github.com>
In-Reply-To: <quicwg/base-drafts/pull/2114@github.com>
References: <quicwg/base-drafts/pull/2114@github.com>
Subject: Re: [quicwg/base-drafts] Simplify TLP and RTO into Probe Timeout (#2114)
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="--==_mimepart_5c107b7b4261f_31013ffcb80d45b8506978"; charset="UTF-8"
Content-Transfer-Encoding: 7bit
Precedence: list
X-GitHub-Sender: ianswett
X-GitHub-Recipient: quic-issues
X-GitHub-Reason: subscribed
X-Auto-Response-Suppress: All
X-GitHub-Recipient-Address: quic-issues@ietf.org
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic-issues/1sNiDPW2HXHvUJL07p-10nLukLc>
X-BeenThere: quic-issues@ietf.org
X-Mailman-Version: 2.1.29
List-Id: Notification list for GitHub issues related to the QUIC WG <quic-issues.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/quic-issues>, <mailto:quic-issues-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/quic-issues/>
List-Post: <mailto:quic-issues@ietf.org>
List-Help: <mailto:quic-issues-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/quic-issues>, <mailto:quic-issues-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 12 Dec 2018 03:07:43 -0000

ianswett commented on this pull request.

Looking much better.

>  
-A packet sent at the tail is particularly vulnerable to slow loss detection,
-since acks of subsequent packets are needed to trigger ack-based detection. To
-ameliorate this weakness of tail packets, the sender schedules a timer when the
-last ack-eliciting packet before quiescence is transmitted. Upon timeout,
-a Tail Loss Probe (TLP) packet is sent to evoke an acknowledgement from the
-receiver.
+A Probe Timeout (PTO) triggers a probe packet when ack-eliciting data is in
+flight but an acknowledgement is not received within the expected period of
+time.  A PTO enables a connection to recover from loss of tail packets or acks,
+where acks of subsequent packets are not available to trigger ack-based loss

This sentence is long and the second half is awkward.  I'd either split it into two sentences or just drop the second half.

>  
-To reduce latency, it is RECOMMENDED that the sender set and allow the TLP timer
-to fire twice before setting an RTO timer. In other words, when the TLP timer
-expires the first time, a TLP packet is sent, and it is RECOMMENDED that the TLP
-timer be scheduled for a second time. When the TLP timer expires the second
-time, a second TLP packet is sent, and an RTO timer SHOULD be scheduled {{rto}}.
+There is no requirement on the clock granularity. The PTO value MUST be set to

I find it weird you talk about not having a requirement on clock granularity, but don't discuss what it is more than the name.

Also, is this clock granularity or alarm granularity?  I think you want alarm granularity?

>  
-* When the final TLP packet is sent, the RTO period is set to max(SRTT +
-  4*RTTVAR + MaxAckDelay, kMinRTOTimeout)
+Consecutive PTO periods increase exponentially, and as a result, connection
+recovery latency increases exponentially as packets continue to be dropped in
+the network.  Sending two packets on PTO expiration increases resilience to
+packet drop in both directions, thus reducing the probability of consecutive PTO

How does it help in both directions?  If the two packets are sent at about the same time, wouldn't they be acknowledged in a single ACK?  I guess that depends upon the details of what "immediately" means for ACKs with newly missing packets?

>  
-* When an RTO timer expires, the RTO period is doubled.
+Probe packets sent on a PTO MUST be ack-eliciting.  A probe packet SHOULD carry
+new data when possible.  A probe packet MAY carry retransmitted unacknowledged
+data when new data is unavailable, when flow control does not permit new data to
+be sent, or to opportunistically reduce loss recovery delay.  Implementers MAY
+use alternate strategies for determining the content of probe packets, including
+sending new or retransmitted data based on the application's priorities.

Thanks, this is much better!

>  
-QUIC also diverges from TCP by including MaxAckDelay in the RTO period. Since
-QUIC corrects for this delay in its SRTT and RTTVAR computations, it is
-necessary to add this delay explicitly in the TLP and RTO computation.
+Delivery or loss of packets in flight is established when an acknowledgement is

Should this be "an ACK"?  We typically talk about an acknowledgement as referencing a single packet.

>  
-QUIC also diverges from TCP by including MaxAckDelay in the RTO period. Since
-QUIC corrects for this delay in its SRTT and RTTVAR computations, it is
-necessary to add this delay explicitly in the TLP and RTO computation.
+Delivery or loss of packets in flight is established when an acknowledgement is
+received that newly acknowledges one or more packets.  An endpoint might receive
+an acknowledgement after multiple consecutive PTO periods.

I feel like you're trying to say something more with this last sentence, but I'm not sure what?

> @@ -802,7 +772,7 @@ Pseudocode for SetLossDetectionTimer follows:
         timeout = 2 * kInitialRtt
       else:
         timeout = 2 * smoothed_rtt
-      timeout = max(timeout, kMinTLPTimeout)
+      timeout = max(timeout, granularity)

```suggestion
      timeout = max(timeout, kGranularity)
```

>      timeout =
       smoothed_rtt + 4 * rttvar + max_ack_delay
-    timeout = max(timeout, kMinRTOTimeout)
-    timeout = timeout * (2 ^ rto_count)
-    if (tlp_count < kMaxTLPs):
-      // Tail Loss Probe
-      tlp_timeout = max(1.5 * smoothed_rtt
-                        + max_ack_delay, kMinTLPTimeout)
-      timeout = min(tlp_timeout, timeout)
+    timeout = max(timeout, granularity)

```suggestion
    timeout = max(timeout, kGranularity)
```

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/pull/2114#pullrequestreview-183994915