Re: [quicwg/base-drafts] Handling of a lost push signal (#4930)

Kazuho Oku <notifications@github.com> Thu, 29 July 2021 05:38 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 9BDDF3A0FDC for <quic-issues@ietfa.amsl.com>; Wed, 28 Jul 2021 22:38:53 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.148
X-Spam-Level:
X-Spam-Status: No, score=-2.148 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.452, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HTML_IMAGE_ONLY_28=1.404, HTML_MESSAGE=0.001, MAILING_LIST_MULTI=-1, RCVD_IN_MSPIKE_H2=-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 (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 LKQhjRmoD8v2 for <quic-issues@ietfa.amsl.com>; Wed, 28 Jul 2021 22:38:51 -0700 (PDT)
Received: from out-24.smtp.github.com (out-24.smtp.github.com [192.30.252.207]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id D00563A0FD9 for <quic-issues@ietf.org>; Wed, 28 Jul 2021 22:38:50 -0700 (PDT)
Received: from github.com (hubbernetes-node-9a79bce.ac4-iad.github.net [10.52.207.40]) by smtp.github.com (Postfix) with ESMTPA id BBA806005AC for <quic-issues@ietf.org>; Wed, 28 Jul 2021 22:38:49 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=github.com; s=pf2014; t=1627537129; bh=91H9tI/yvCPqwUtIECrEqZzEPPfg8hYr+auCihIMiXE=; h=Date:From:Reply-To:To:Cc:In-Reply-To:References:Subject:List-ID: List-Archive:List-Post:List-Unsubscribe:From; b=Z0ASb3bz3+NOprCjpxqx1mEl4/cRoc8qlIpZKsvCr8cKBO8HJEIsWcoEtZzBs6SLU 4HtYZKCnsCeAIfnDF+8IqxZOPoY+pbfFJSK7WDOzA83IMN9aFnEqs9BgzqdF6Yv0sU c2P6KJCjaQS9Yp6jhfh+5a8OVbS7Ghv4+xf4G8Kk=
Date: Wed, 28 Jul 2021 22:38:49 -0700
From: Kazuho Oku <notifications@github.com>
Reply-To: quicwg/base-drafts <reply+AFTOJK3FROD4XM7HAEZS5SN7BYP6TEVBNHHDR4HSDQ@reply.github.com>
To: quicwg/base-drafts <base-drafts@noreply.github.com>
Cc: Subscribed <subscribed@noreply.github.com>
Message-ID: <quicwg/base-drafts/issues/4930/888818310@github.com>
In-Reply-To: <quicwg/base-drafts/issues/4930@github.com>
References: <quicwg/base-drafts/issues/4930@github.com>
Subject: Re: [quicwg/base-drafts] Handling of a lost push signal (#4930)
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="--==_mimepart_61023ee9b9085_6bc724123829"; charset="UTF-8"
Content-Transfer-Encoding: 7bit
Precedence: list
X-GitHub-Sender: kazuho
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/dhIvtlBK3SqKJBftKDocayfZKUI>
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: Thu, 29 Jul 2021 05:38:54 -0000

To fix the issue, we have to meet the following two requirements:
1. PUSH_PROMISE never gets lost, and
2. Require either of the following two:
  a. servers to make sure that Push Stream Headers are delivered to the client and clients never send STOP_SENDING frames for push streams until it receives Push Stream Headers, or
  b. change the push identifier to a value that can be guaranteed to be delivered even when the push stream is reset at any moment.

We can meet requirement 1 by sending PUSH_PROMISE on the control stream.

For requirement 2, the difficulty of _a_ is that there's no way of HTTP/3 stacks telling if something is delivered to the client at the transport level. We could introduce an HTTP/3-level acknowledgement frame much like we do in QPACK, but that's going to be complicated.

For option _b_, we might consider getting rid of Push ID and send the stream ID of the push stream on the PUSH_PROMISE frames. We require QUIC stacks to either guarantee the delivery of FIN or RESET_STREAM for the streams that have been used by the sender. The problem here would be that, at the moment, we do not require QUIC stacks have an API to notify HTTP/3 stacks that a stream has been reset when not a single byte of data have been received (we can assume that HTTP/3 stacks would be notified of resets once some bytes have been received and provided to the HTTP/3 stacks). But maybe fixing this would be easier than option _a_.

-- 
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/issues/4930#issuecomment-888818310