Re: [quicwg/base-drafts] Cleaning up Loss Detection overview (#536)

ianswett <notifications@github.com> Wed, 17 May 2017 21:39 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 1ADFF127011 for <quic-issues@ietfa.amsl.com>; Wed, 17 May 2017 14:39:51 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -9.3
X-Spam-Level:
X-Spam-Status: No, score=-9.3 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_HI=-5, RCVD_IN_MSPIKE_H2=-2.8, RCVD_IN_SORBS_SPAM=0.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 ikJolvrn_qRQ for <quic-issues@ietfa.amsl.com>; Wed, 17 May 2017 14:39:49 -0700 (PDT)
Received: from github-smtp2b-ext-cp1-prd.iad.github.net (github-smtp2-ext2.iad.github.net [192.30.252.193]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id E10351201FA for <quic-issues@ietf.org>; Wed, 17 May 2017 14:39:48 -0700 (PDT)
Date: Wed, 17 May 2017 14:39:48 -0700
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=github.com; s=pf2014; t=1495057188; bh=zJuVWR62+JcXvIovrV5s4a4uLz//KwCllFiLJnHhjyQ=; h=From:Reply-To:To:Cc:In-Reply-To:References:Subject:List-ID: List-Archive:List-Post:List-Unsubscribe:From; b=Im19kSyWwa1H/CjTkQIK2qPNy8Wmo/6xtD1wawPXm2oGfUNZ+u1piuCjDmePi9ngN xCAIB72LPQtPz72GB1fJRNaGVmXkiTBQxxLvrnsjI7D0CLichtn19iwogVJDG8dgdC 5c4Xs4yIiORyrJmOD67m8SrW3F9DJkPKqDrl15dM=
From: ianswett <notifications@github.com>
Reply-To: quicwg/base-drafts <reply+0166e4ab6a7ddfc91e767577b648bc12a4c899bd3f8d63f492cf000000011534852492a169ce0dada711@reply.github.com>
To: quicwg/base-drafts <base-drafts@noreply.github.com>
Cc: Subscribed <subscribed@noreply.github.com>
Message-ID: <quicwg/base-drafts/pull/536/review/38789909@github.com>
In-Reply-To: <quicwg/base-drafts/pull/536@github.com>
References: <quicwg/base-drafts/pull/536@github.com>
Subject: Re: [quicwg/base-drafts] Cleaning up Loss Detection overview (#536)
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="--==_mimepart_591cc32415407_6db43f9c183dfc2c3487a"; 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/o6xgyw20m7oQq4IDln-t4oBsw-Y>
X-BeenThere: quic-issues@ietf.org
X-Mailman-Version: 2.1.22
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, 17 May 2017 21:39:51 -0000

ianswett commented on this pull request.

A few suggestions.

> -
-  * If a packet is near the tail, where fewer than kReorderingThreshold packets
-    are sent after it, the sender cannot expect to detect loss based on the
-    previous mechanism. In this case, a sender uses both ack information and an
-    alarm to detect loss. Specifically, when the last sent packet is
-    acknowledged, the sender waits a short period of time to allow for
-    reordering and then marks any unacknowledged packets as lost. This mechanism
+  * When at least one packet that was sent a threshold number of packets
+    (kReorderingThreshold) after an unacknowledged packet is acknowledged. This
+    indicates that the unacknowledged packet is either lost or reordered beyond
+    the specified threshold. This mechanism combines both TCP's FastRetransmit
+    and FACK mechanisms.
+
+  * When a short period of time has elapsed after the last sent packet is
+    acknowledged, with unacknowledged packets near the tail (fewer than
+    kReorderingThreshold packets sent after them). The sender cannot expect to

I was hoping we could combine early retransmit and time based here, just like the implementation does.  

I realize this is a bit harder to write, but maybe something like:
When a larger packet than the unacknowledged packet has been acked and the reordering threshold in time has elapsed since a larger packet was acknowledged.  In order to implement a mechanism equivalent to TCP Early Retransmit, this only applies when the acked packet is the largest sent.

>      is based on the Linux implementation of TCP Early Retransmit.
 
-  * If a packet is sent at the tail, there are no packets sent after it, and the
-    sender cannot use ack information to detect its loss. The sender therefore
-    relies on an alarm to detect such tail losses. This mechanism is based on
-    TCP's Tail Loss Probe.
+  * When a Retransmission Timeout (RTO) alarm fires. An RTO alarm is set after
+    Tail Loss Probe attempts at evoking acknowledgements (see below). When this
+    alarm fires, all unacknowledged packets are marked as lost.

Actually, they're only marked as lost when a larger packet has been acknowledged.

>  
-  * Handshake packets, which contain STREAM frames for stream 0, are
-    critical to QUIC transport and crypto negotiation, so a separate alarm
-    period is used for them.
+Handshake packets, which contain STREAM frames for stream 0, are critical to
+QUIC transport and crypto negotiation, so a separate (more aggressive) alarm

nit: I would just say "more aggressive" and drop the separate and ()

> -
-  * If a packet is near the tail, where fewer than kReorderingThreshold packets
-    are sent after it, the sender cannot expect to detect loss based on the
-    previous mechanism. In this case, a sender uses both ack information and an
-    alarm to detect loss. Specifically, when the last sent packet is
-    acknowledged, the sender waits a short period of time to allow for
-    reordering and then marks any unacknowledged packets as lost. This mechanism
+  * When at least one packet that was sent a threshold number of packets
+    (kReorderingThreshold) after an unacknowledged packet is acknowledged. This
+    indicates that the unacknowledged packet is either lost or reordered beyond
+    the specified threshold. This mechanism combines both TCP's FastRetransmit
+    and FACK mechanisms.
+
+  * When a short period of time has elapsed after the last sent packet is
+    acknowledged, with unacknowledged packets near the tail (fewer than
+    kReorderingThreshold packets sent after them). The sender cannot expect to

Reading below, i see what you're trying to do by describing standard FACK style loss detection first, and it likely makes sense.

In which case, how about "for unacknowledged packets within kReorderingThreshold from the tail." instead of "with unacknowledged..."

-- 
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/536#pullrequestreview-38789909