Re: [quicwg/base-drafts] Prevent an unlikely deadlock (#1965)

ianswett <notifications@github.com> Mon, 05 November 2018 15:32 UTC

Return-Path: <bounces+848413-a050-quic-issues=ietf.org@sgmail.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 79389130E85 for <quic-issues@ietfa.amsl.com>; Mon, 5 Nov 2018 07:32:28 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.47
X-Spam-Level:
X-Spam-Status: No, score=-3.47 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.47, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, MAILING_LIST_MULTI=-1, RCVD_IN_DNSWL_NONE=-0.0001, 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 GIQz9b0cNAaY for <quic-issues@ietfa.amsl.com>; Mon, 5 Nov 2018 07:32:26 -0800 (PST)
Received: from o11.sgmail.github.com (o11.sgmail.github.com [167.89.101.202]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 10DF7130E02 for <quic-issues@ietf.org>; Mon, 5 Nov 2018 07:32:24 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=github.com; h=from:reply-to:to:cc:in-reply-to:references:subject:mime-version:content-type:content-transfer-encoding:list-id:list-archive:list-post:list-unsubscribe; s=s20150108; bh=x1Diqpn2G27J5CAzhO2E13wIyR0=; b=ErO9xR+fXlucvesn tzqAy2mEQxqr5wdgocNzC+hkQXjZMGm0FKI/F89TjLNQ5mn/o8PSe7PGkiZrzZ9+ 0vWF67bT/paJOjcSA5+VAbQuqyLW3O7z52q1KYcBLePGQ44F+kr6LmzW2YaJLV61 K+OzzNm+zYKCpF9NoPJPfrjDPmg=
Received: by filter0680p1las1.sendgrid.net with SMTP id filter0680p1las1-28296-5BE06286-57 2018-11-05 15:32:23.08455069 +0000 UTC m=+402592.689347302
Received: from github-lowworker-c7d2ff2.cp1-iad.github.net (unknown [192.30.252.32]) by ismtpd0003p1iad1.sendgrid.net (SG) with ESMTP id 1pzrpaEeRi-lWIhPHkAh2g for <quic-issues@ietf.org>; Mon, 05 Nov 2018 15:32:22.980 +0000 (UTC)
Received: from github.com (localhost [127.0.0.1]) by github-lowworker-c7d2ff2.cp1-iad.github.net (Postfix) with ESMTP id ECCA04C02CF for <quic-issues@ietf.org>; Mon, 5 Nov 2018 07:32:22 -0800 (PST)
Date: Mon, 05 Nov 2018 15:32:23 +0000
From: ianswett <notifications@github.com>
Reply-To: quicwg/base-drafts <reply+0166e4abac6e23c277969084f8bedd48c13455cc65416aa992cf0000000117f8248692a169ce167cded5@reply.github.com>
To: quicwg/base-drafts <base-drafts@noreply.github.com>
Cc: Subscribed <subscribed@noreply.github.com>
Message-ID: <quicwg/base-drafts/pull/1965/c435917790@github.com>
In-Reply-To: <quicwg/base-drafts/pull/1965@github.com>
References: <quicwg/base-drafts/pull/1965@github.com>
Subject: Re: [quicwg/base-drafts] Prevent an unlikely deadlock (#1965)
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="--==_mimepart_5be06286eb0b7_415b3febc46d45bc22367e"; 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
X-SG-EID: l64QuQ2uJCcEyUykJbxN122A6QRmEpucztpreh3Pak2DHUlDfdl0rOuYuTnIj3hUZjzHYrczLCqfnc sWRbdPj1q4VpfU+gXpTG7lLetqXNCNMDRoxhOw0aq11M1wKQNRNSSlNYLiP5p6jmfbxqy9ZpH2Il5t 0Wvs2ViyQzXhMEy+kJlCcjc9sldlpR0jxw/duT79R67jIov0g1vOJLi1kgrXzMOZY+3OoB4NSw5XWC 8=
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic-issues/-E363bPraoant5bvSkMODNgbX3w>
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: Mon, 05 Nov 2018 15:32:34 -0000

Good question, @ekr 

It's definitely a detail point, but I think the above approach is likely the ideal fix.  But here's what I expect to happen now.

If the implementation stores some state saying "the tlp alarm fired, but I couldn't send anything, and I'll remember that in case there is some data I can send in the near future." then when there's new data, everything should be fixed, though you'll also only be able to send a single packet.  And if that packet or the corresponding ACK is lost, it'll be another TLP before you can send a packet.

Alternately, an implementation could fire the alarm, realize it can't send anything, then not re-arm the alarm(since if it was re-armed, it would just fire immediately and you'd spin).

The second approach is a deadlock.  The first one is just going to be very slow recovery.  Both seem somewhat suboptimal.

There's another solution to this, which is to declare all in-flight packets lost.  But that goes against the approach we use throughout QUIC loss recovery where we don't declare packets lost until a larger packet is acknowledged.

OT: @martinduke pointed out that this should be fixed for RTO as well, since it's possible between TLP and RTO(or between two RTOs) in-flight data is cancelled, so now there's nothing to retransmit.

-- 
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/1965#issuecomment-435917790