Re: [quicwg/base-drafts] Keep-alive requirements (#744)

Mike Bishop <notifications@github.com> Tue, 22 August 2017 21:50 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 88A20132648 for <quic-issues@ietfa.amsl.com>; Tue, 22 Aug 2017 14:50:53 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -7.019
X-Spam-Level:
X-Spam-Status: No, score=-7.019 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_H4=-0.01, RCVD_IN_MSPIKE_WL=-0.01, 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 ehrt4DU0n9D7 for <quic-issues@ietfa.amsl.com>; Tue, 22 Aug 2017 14:50:50 -0700 (PDT)
Received: from github-smtp2a-ext-cp1-prd.iad.github.net (github-smtp2-ext7.iad.github.net [192.30.252.198]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 81DBF1329E5 for <quic-issues@ietf.org>; Tue, 22 Aug 2017 14:50:50 -0700 (PDT)
Date: Tue, 22 Aug 2017 14:50:49 -0700
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=github.com; s=pf2014; t=1503438649; bh=LlZSjhNZ0A3A0matxDmze6Rba3aOaw5fzRT1qydiM1c=; h=From:Reply-To:To:Cc:In-Reply-To:References:Subject:List-ID: List-Archive:List-Post:List-Unsubscribe:From; b=CaQNRXvsqa+7Q4PfCDf5LYSrPSaWRdV96EAknU9VgsLVolmhfGJaVsvCekGaDRoVg Mf9Smn46tqTeAvquKNIAEOohDiMllvaT5saGI344w2tpQpLPQFq7HalruJubIMkx1Z uY9+0e4Q6hkGaT7IgvAAEfs1aYgi7M3Lm0aG71Do=
From: Mike Bishop <notifications@github.com>
Reply-To: quicwg/base-drafts <reply+0166e4abf9d12f0dc7a99c5e8385e58d80471606f038a26c92cf0000000115b4693992a169ce0f02be56@reply.github.com>
To: quicwg/base-drafts <base-drafts@noreply.github.com>
Cc: Subscribed <subscribed@noreply.github.com>
Message-ID: <quicwg/base-drafts/pull/744/review/57921897@github.com>
In-Reply-To: <quicwg/base-drafts/pull/744@github.com>
References: <quicwg/base-drafts/pull/744@github.com>
Subject: Re: [quicwg/base-drafts] Keep-alive requirements (#744)
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="--==_mimepart_599ca739541ee_189c3f8dd24a9c382660dd"; charset="UTF-8"
Content-Transfer-Encoding: 7bit
Precedence: list
X-GitHub-Sender: MikeBishop
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/JjJECLxxhAB3CJL8Ej1BzPT_jBg>
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: Tue, 22 Aug 2017 21:50:53 -0000

MikeBishop approved this pull request.

LGTM, modulo what I hope is an extra negation rather than a real disagreement.

> @@ -841,6 +841,22 @@ A server MUST treat a MAX_PUSH_ID frame payload that is other than 4 octets in
 length as a connection error of type HTTP_MALFORMED_MAX_PUSH_ID.
 
 
+# Connection Management
+
+QUIC connections are persistent.  All of the considerations in Section 9.1 of
+{{?RFC7540}} apply to the management of QUIC connections.
+
+HTTP clients are expected to use QUIC PING frames to keep connections open.
+Servers SHOULD NOT use PING frames to keep a connection open.  A client SHOULD
+NOT use PING frames for this purpose unless there are no responses outstanding

I think you have one more negative here than you meant.  A client SHOULD NOT use PING frames for this purpose when there are no responses outstanding.  If you're waiting on a server response, that's exactly when it's critical to keep the connection alive and the NAT bindings fresh, so that you're sure you can get the server response when it finally arrives.  If you're not waiting on anything, that's when it's fine to let the connection idle and potentially close.

> @@ -841,6 +841,22 @@ A server MUST treat a MAX_PUSH_ID frame payload that is other than 4 octets in
 length as a connection error of type HTTP_MALFORMED_MAX_PUSH_ID.
 
 
+# Connection Management
+
+QUIC connections are persistent.  All of the considerations in Section 9.1 of
+{{?RFC7540}} apply to the management of QUIC connections.
+
+HTTP clients are expected to use QUIC PING frames to keep connections open.
+Servers SHOULD NOT use PING frames to keep a connection open.  A client SHOULD
+NOT use PING frames for this purpose unless there are no responses outstanding
+for requests or server pushes.  If the client is not expecting a response from
+the server, allowing an idle connection to time out (based on the idle_timeout
+transport parameter) is preferred over expending effort maintaining a connection
+that might not be needed.  A gateway MAY use PING to maintain connections in
+anticipation of need rather than incur the latency cost of connection
+establishment to servers.

Why does the 0-RTT argument not apply to gateways?  Why does the logic that applies to gateways not apply to clients?  I'd just generically say that letting the connection idle out is preferred, but you MAY keep a connection open if you think you'll need it again soon.

> @@ -1786,9 +1786,24 @@ than it has sent, unless this is a result of a change in the initial limits (see
 Endpoints can use PING frames (type=0x07) to verify that their peers are still
 alive or to check reachability to the peer. The PING frame contains no
 additional fields. The receiver of a PING frame simply needs to acknowledge the
-packet containing this frame. The PING frame SHOULD be used to keep a connection
-alive when a stream is open. The default is to send a PING frame after 15
-seconds of quiescence. A PING frame has no additional fields.
+packet containing this frame.
+
+A PING frame has no additional fields.
+
+The PING frame can be used to keep a connection alive when an application or
+application protocol wishes to avoid the connection from timing out.  An

Possible dialect difference:  "avoid ... from" doesn't sound right to me.  I'd have expected to see "keep ... from" or "prevent a connection time-out."

-- 
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/744#pullrequestreview-57921897