Re: [quicwg/base-drafts] Cleaning up Loss Detection overview (#536)
Martin Thomson <notifications@github.com> Thu, 18 May 2017 14:30 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 42F6F129AA8 for <quic-issues@ietfa.amsl.com>; Thu, 18 May 2017 07:30:45 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -9.799
X-Spam-Level:
X-Spam-Status: No, score=-9.799 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, SPF_PASS=-0.001, URIBL_BLOCKED=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 VbMzyJS93VVV for <quic-issues@ietfa.amsl.com>; Thu, 18 May 2017 07:30:43 -0700 (PDT)
Received: from github-smtp2b-ext-cp1-prd.iad.github.net (github-smtp2-ext6.iad.github.net [192.30.252.197]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 6C6E2129ABE for <quic-issues@ietf.org>; Thu, 18 May 2017 07:25:20 -0700 (PDT)
Date: Thu, 18 May 2017 07:25:19 -0700
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=github.com; s=pf2014; t=1495117519; bh=Suwd3eu39eD/Zh+rjrdmpB9F20mFRQw4AlACaPbnopI=; h=From:Reply-To:To:Cc:In-Reply-To:References:Subject:List-ID: List-Archive:List-Post:List-Unsubscribe:From; b=nmWKcf9is83t1MPrXH54kLvq33oq+HC0wN3RKaqIClONaCVTcNB8hKYIku6ueTI2P J59DUDIaKJAyMiAONlJN4VNCe9WmpzY7Npy8p5jAJP8q6QkRRR6ixCnKtIAQC/EBhM HBusHd/lWeJ7Sh1CKXl/KKJIIc1fYdkp3rEWs+fI=
From: Martin Thomson <notifications@github.com>
Reply-To: quicwg/base-drafts <reply+0166e4aba26cfd365160bac25125666491ee7ab2fccebe6792cf00000001153570cf92a169ce0dada711@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/38947686@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_591daecf9173f_57c63ff470d6dc3460447"; charset="UTF-8"
Content-Transfer-Encoding: 7bit
Precedence: list
X-GitHub-Sender: martinthomson
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/4O02hsWVXfhv9vJwv2pliaL_voo>
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: Thu, 18 May 2017 14:30:45 -0000
martinthomson commented on this pull request. > QUIC uses a combination of ack information and alarms to detect lost packets. An unacknowledged QUIC packet is marked as lost in one of the following ways: - * A packet is marked as lost if at least one packet that was sent a threshold - number of packets (kReorderingThreshold) after it has been - 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. - - * 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 I'm finding "a threshold number of packets" really hard to parse. I think that you want to say that a packet is declared lost when a packet with a significantly higher packet number is acknowledged. (This is an area where packet number skipping really hurts us.) > - number of packets (kReorderingThreshold) after it has been - 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. - - * 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. `[citation needed]` > - - * 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 know that I'm tired, but I simply cannot parse this sentence at all. I can't offer advice on how to make this comprehensible, but I do think that you need to explain that this isn't loss according to the definitions of the reordering threshold and RTO. This is a way of using the dead air after transmission ceases to more proactively repair gaps near the end of the transmission. Structurally, I think that you want to come at this differently. There are two elementary parameters: the reordering threshold and the retransmission timeout. Explain those first. Then explain the limitations of those mechanisms: when the sender has nothing more to send, reordering no longer works, which slows repair toward the end of a transmission. Repairing gaps near the end on a shorter timer ensures that you don't fall back on the relatively slow RTO. Preemptively retransmitting data in an additional packet triggers that shorter timer and can be used to provide redundancy for trailing data. > - * Instead of a packet threshold to tolerate reordering, a QUIC sender may use - a time threshold. This allows for senders to be tolerant of short periods of - significant reordering. In this mechanism, a QUIC sender marks a packet as - lost when a packet larger than it is acknowledged and a threshold amount of - time has passed since the packet was sent. +The above mechanisms use a packet threshold to tolerate +reordering. Alternatively, a QUIC sender may use a time threshold. This allows I think that we need to be clearer about how the time threshold plays into this. I would prefer to see the reordering and time thresholds described together. If it makes sense in some cases to disable the time threshold, then describe those conditions. If it makes sense to disable the time threshold except for certain scenarios, you can effectively disable the time threshold by increasing its value. > - * 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 I would say shorter rather than more aggressive. "Aggressiveness" isn't really a property we care about. General comment: if you intend to talk about specific tuning variables (as you do for the reordering threshold), please be consistent about referencing all of those variables. -- 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-38947686
- [quicwg/base-drafts] Cleaning up Loss Detection o… janaiyengar
- Re: [quicwg/base-drafts] Cleaning up Loss Detecti… ianswett
- Re: [quicwg/base-drafts] Cleaning up Loss Detecti… janaiyengar
- Re: [quicwg/base-drafts] Cleaning up Loss Detecti… janaiyengar
- Re: [quicwg/base-drafts] Cleaning up Loss Detecti… Martin Thomson
- Re: [quicwg/base-drafts] Cleaning up Loss Detecti… ianswett
- Re: [quicwg/base-drafts] Cleaning up Loss Detecti… Martin Thomson
- Re: [quicwg/base-drafts] Cleaning up Loss Detecti… janaiyengar
- Re: [quicwg/base-drafts] Cleaning up Loss Detecti… janaiyengar