Re: Hole in loss recovery algorithm?

Martin Duke <martin.h.duke@gmail.com> Thu, 30 April 2020 01:28 UTC

Return-Path: <martin.h.duke@gmail.com>
X-Original-To: quic@ietfa.amsl.com
Delivered-To: quic@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 04BCE3A0C4C for <quic@ietfa.amsl.com>; Wed, 29 Apr 2020 18:28:44 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.098
X-Spam-Level:
X-Spam-Status: No, score=-2.098 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.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 7K8IsNNA76_I for <quic@ietfa.amsl.com>; Wed, 29 Apr 2020 18:28:41 -0700 (PDT)
Received: from mail-il1-x12d.google.com (mail-il1-x12d.google.com [IPv6:2607:f8b0:4864:20::12d]) (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 152993A0853 for <quic@ietf.org>; Wed, 29 Apr 2020 18:28:41 -0700 (PDT)
Received: by mail-il1-x12d.google.com with SMTP id u189so4420071ilc.4 for <quic@ietf.org>; Wed, 29 Apr 2020 18:28:41 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=DwYCfhWDuvlmK2Qrq71doWcKuGatPPkPsNaDjgE9tus=; b=uBxfp8C0XLg/sySY8FaLKxA+ZWZAfwzG0sDYcxKC2RhCRJ8ZSO3K+XsNmoEEAwzKrg SMsVD0qdvccSDLIoERrcenXFo27jBb8Sl1NNzd1o/C5v7i+V9LEgwv2gcjzyA/Bqy4md GrpuEWs4Off2Lizl/cKcM6/1K/GnjsTFsT0Q6M8blXDE/huKy8W0KJfbB43C1lE4oQzP 5N6hklBFXC1U2yLlZ3fLz1H7K/NEegKOdUQYDeFsfT05tnRD8dqHIinMyNtP0FvvuC33 zd2PwDl+XhPDHl67S+6/UPneQh313+Mye1W5/IvJoHuItNk9y00rGOY6h6CLCHSUAMTr iNkw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=DwYCfhWDuvlmK2Qrq71doWcKuGatPPkPsNaDjgE9tus=; b=KMe1lRetJsUUGO33dsS8dsnkj2uJ0bB8sdo2+OvAteCxX4nkhiHqkgXOYEK9G0jxyb TaRQSCqrIZYkZbSKVfv9FbQYGoFMKLGWkJxgyhfnDC6mWDXahp376OdNBzVZc8R96+G5 1lCOUWqSsDc1QYrif+6n1t2snDrRi8bUHz9pfnl/tifelNR27oFds26DOgI0wmf7gblQ mRBzP2E6F6XVirUVgXdACySbOma4hvHxr9Vnx1EzMIz0GgbjjXM3Npu9rcvQIioXtu0K xBqsHrhoukKpY5KHNvEDrKiwROEkQ8N6gt5Wjg/4CpulayMLi6TefjruN6qm9hbTqwEY BQJQ==
X-Gm-Message-State: AGi0PuYVn6K6rfF4rHKT0U9cMmVAckt4+izx5JFM9KIgCn3SfpOKfAJo rQq58Mb2osjIaW0CNutYYYI+nYh/M8HSSuPH1+g=
X-Google-Smtp-Source: APiQypKehEPi/NCvqpIlUooV9EK9oOsMX7tH9+zarERe/i0T5CVz0ToUUF/Q2/bU9q483ZDH62WIgvrFlUGS52d9gZ0=
X-Received: by 2002:a92:8c92:: with SMTP id s18mr1198178ill.272.1588210120316; Wed, 29 Apr 2020 18:28:40 -0700 (PDT)
MIME-Version: 1.0
References: <CAM4esxQYh3W2GW-kxsBDw_Z8YLB3+-CSyLZsFQXp+LTxk92yNw@mail.gmail.com> <CAKcm_gNxoBYxiS4WxtjDs+mWdrBQMdxNkpbp+NfTjSH5XsT=8g@mail.gmail.com> <CAM4esxQAgqh4JmqSW+jULHxMUmNsdkgzyjz-oFvHjJozV+YS5w@mail.gmail.com> <CAM4esxS9-EMDnmhubsNi4aLG7aJFG-+fZy2g_R80Ub12CWLgTA@mail.gmail.com>
In-Reply-To: <CAM4esxS9-EMDnmhubsNi4aLG7aJFG-+fZy2g_R80Ub12CWLgTA@mail.gmail.com>
From: Martin Duke <martin.h.duke@gmail.com>
Date: Wed, 29 Apr 2020 18:28:29 -0700
Message-ID: <CAM4esxSOYKSsygGigFa+xNtyiztr_RFZ3G=m_9zWj6eKpHz=Tw@mail.gmail.com>
Subject: Re: Hole in loss recovery algorithm?
To: Ian Swett <ianswett@google.com>
Cc: IETF QUIC WG <quic@ietf.org>
Content-Type: multipart/alternative; boundary="0000000000000cdcc305a477fc70"
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/vIfE50A3XgW7E4R-Lx_cLCYmAoI>
X-BeenThere: quic@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Main mailing list of the IETF QUIC working group <quic.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/quic>, <mailto:quic-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/quic/>
List-Post: <mailto:quic@ietf.org>
List-Help: <mailto:quic-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/quic>, <mailto:quic-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 30 Apr 2020 01:28:44 -0000

also, the pseudocode sets the PTO timer when receiving an ACK. I'm not 100%
sure that's necessary, but it's not described in 5.2.1.

But wait, I see 5.2.2 says this: When Initial or Handshake keys are
discarded, the PTO and loss detection timers MUST be reset, because
discarding keys indicates forward progress and the loss detection timer
might have been set for a now discarded packet number space.

I think we're good.

On Wed, Apr 29, 2020 at 6:22 PM Martin Duke <martin.h.duke@gmail.com> wrote:

> Filed #3613 <https://github.com/quicwg/base-drafts/issues/3613>. A couple
> of more notes:
>
> - HANDSHAKE_DONE doesn't cover the client case where all 0RTT is lost and
> the client doesn't have any more data to send. It may never send a 1RTT
> ack-eliciting packet.
> - Doing it when discarding the keys works, but it would be better to do it
> when the handshake completes, not confirms. That's when the 1RTT PTO
> prohibition lifts.
>
> On Wed, Apr 29, 2020 at 5:59 PM Martin Duke <martin.h.duke@gmail.com>
> wrote:
>
>> I would personally put it both there and in 5.2.1.
>>
>> On Wed, Apr 29, 2020 at 3:03 PM Ian Swett <ianswett@google.com> wrote:
>>
>>> When the Client Finished arrives, the server is handshake complete, so
>>> it should arm PTO for the 1RTT data, though I don't see text making that
>>> explicit.  Should it be added here
>>> <https://github.com/quicwg/base-drafts/blob/master/draft-ietf-quic-recovery.md#discarding-keys-and-packet-state-discarding-packets>
>>> ?
>>>
>>> In the psuedocode, the PTO timer is reset when a PN space(the server's
>>> Handshake in this case) is dropped.
>>>
>>> Also, after the Client Finished arrives, the server sends
>>> HANDSHAKE_DONE, which would also re-arm the timer and fix the issue, but
>>> I'd rather not rely on HANDSHAKE_DONE to solve all the problems.
>>>
>>> On Wed, Apr 29, 2020 at 5:23 PM Martin Duke <martin.h.duke@gmail.com>
>>> wrote:
>>>
>>>> I'm probably missing something silly, but I'll file an issue if there
>>>> is in fact a problem here:
>>>>
>>>> - Server sends its handshake flight and some 1RTT data.
>>>> - The PTO is timer is set for the handshake data only per 5.2.1 of
>>>> quic-recovery.
>>>> - HS ACKs arrive, but the 1RTT is lost.
>>>> - Client Finished arrives.
>>>>
>>>> If this order of operations occurs, and there is no further 1RTT
>>>> communication, is the 1RTT ever going to recover? A literal reading of the
>>>> spec, if IIUC, is that when the HS acks arrive we're going to cancel the
>>>> PTO timer and, as the handshake is not yet complete, we will not restart it
>>>> for the outstanding 1RTT.
>>>>
>>>> A sentence saying you have to start it when completing the handshake,
>>>> if 1RTT data is outstanding, would solve the problem. Perhaps I'm missing
>>>> something more obvious?
>>>>
>>>