[quicwg/base-drafts] Keep alive advice (#729)

Martin Thomson <notifications@github.com> Mon, 14 August 2017 09:31 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 00AEB1320DC for <quic-issues@ietfa.amsl.com>; Mon, 14 Aug 2017 02:31:29 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -9.8
X-Spam-Level:
X-Spam-Status: No, score=-9.8 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] 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 Qh7Gxadj36t6 for <quic-issues@ietfa.amsl.com>; Mon, 14 Aug 2017 02:31:27 -0700 (PDT)
Received: from github-smtp2a-ext-cp1-prd.iad.github.net (github-smtp2-ext4.iad.github.net [192.30.252.195]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 01F8A13208E for <quic-issues@ietf.org>; Mon, 14 Aug 2017 02:31:26 -0700 (PDT)
Date: Mon, 14 Aug 2017 02:31:26 -0700
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=github.com; s=pf2014; t=1502703086; bh=QZXuWUhXVxxnG8Z4ds86bVye2LWGLcPpi7mDt1WtDVo=; h=From:Reply-To:To:Cc:Subject:List-ID:List-Archive:List-Post: List-Unsubscribe:From; b=V/s2JVnvtVhCPCsMh/DaXVyyBoGm4m84oTKtAt67guElBjcAcynpmt6oQG1dFZhH6 mCNUNc37CfqdNhSfeBYq4RyWqceyedEKqlyzENLx/CwwKoj/GAdl2waFga2WqAQZAq eT6PdmVKEQgw7rwL1IjOlptN+EmPaCZmrdyrP+x4=
From: Martin Thomson <notifications@github.com>
Reply-To: quicwg/base-drafts <reply+0166e4ab2e85c827f612c2a881c567cfbd3bb36fc794bce892cf0000000115a92fee92a169ce0ee65d1b@reply.github.com>
To: quicwg/base-drafts <base-drafts@noreply.github.com>
Cc: Subscribed <subscribed@noreply.github.com>
Message-ID: <quicwg/base-drafts/issues/729@github.com>
Subject: [quicwg/base-drafts] Keep alive advice (#729)
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="--==_mimepart_59916dee4ebcf_1d693f995d5f3c3897512"; 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/24d29KpanVUTQ9ZneAMM6GHkbHo>
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: Mon, 14 Aug 2017 09:31:29 -0000

Providing the right sort of keep-alive mechanisms is hard.  TCP failed at this.

QUIC is currently following in august footsteps.  The PING frame description has this text:

> The PING frame SHOULD be used to keep a connection alive when a stream is open. 

This is bad advice: HTTP will have a stream open always.

What this wants to say is that a connection should be kept alive based on some application-driven signal that the connection is needed.  In HTTP, this might be reduced to if you have open requests or unfulfilled server push promises.  Other protocols have different keep-alive semantics.

I propose that we do this:

1. Change the description of the PING frame to say that if the application wishes to keep the connection live, then a PING frame can be sent periodically (along multiple path if maintaining multiple paths is desired).  This ensures that middleboxes don't drop state while the connection is still actively in use.  We might also say that experience with middleboxes suggests that a number between 15 and 30 seconds ensures that the greatest number of middleboxes will retain state (we can cite REQ-5 of RFC 4787 here and note that the internet sometimes doesn't pay attention to RFCs).

2. Add to that description a requirement on application protocols.  If the protocol requires keep-alive at any time, it should specify the conditions under which a keep-alive is required *and the peer that is expected to maintain that keep-alive*.  Experience with SIP has shown that the server often knows more about the keep-alive timers, so negotiating the time can be more effective than having the client drive things.

3. Change the HTTP draft to include specific advice on when to maintain the connection and say that the client should drive this.

-- 
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/729