Closing on CONNECTION_CLOSE
Eric Rescorla <ekr@rtfm.com> Thu, 27 July 2017 13:48 UTC
Return-Path: <ekr@rtfm.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 AE8EA13201F for <quic@ietfa.amsl.com>; Thu, 27 Jul 2017 06:48:00 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.598
X-Spam-Level:
X-Spam-Status: No, score=-2.598 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=rtfm-com.20150623.gappssmtp.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 v6y53ZwwEdkL for <quic@ietfa.amsl.com>; Thu, 27 Jul 2017 06:47:58 -0700 (PDT)
Received: from mail-yw0-x229.google.com (mail-yw0-x229.google.com [IPv6:2607:f8b0:4002:c05::229]) (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 BD9B8120721 for <quic@ietf.org>; Thu, 27 Jul 2017 06:47:58 -0700 (PDT)
Received: by mail-yw0-x229.google.com with SMTP id u207so45049230ywc.3 for <quic@ietf.org>; Thu, 27 Jul 2017 06:47:58 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rtfm-com.20150623.gappssmtp.com; s=20150623; h=mime-version:from:date:message-id:subject:to; bh=ZZyY3yWcLXrvnNN5QE5oACP3RqNegU+oYtp04dm3AuM=; b=fccaR1/+6gBtGGCjEfBuoNaWqzERULD1mcd5+AQcMzUs6mG9K65AwJ65KSUsNp8ddd VE+Z1jh2eGdYjs+Nh/YCe++ekMqZjyrtrPFm7DTnbVSq1XlrU+JAwLy5q6HkiFeTLZk3 ExWQyOSnTgwutcyQtbU9uPoJLo6TWdTuDzDckPLibp6JVOLtcLg+PFw3tVo0pb6GAsro VqO8XMQqZB846iILYmWVQFPaYhHvg/t7ZhLZAQuFIKbb7k5h/2LEczFk7dxae65aSsO1 D/CtS70FmojZw+QjTumCn8go/iuyxzsTCQf7RBWS7Wk80PybZhaBwPcF+r5ODve31HPy Ba/A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=ZZyY3yWcLXrvnNN5QE5oACP3RqNegU+oYtp04dm3AuM=; b=Ip4ulsZSokMLp/Osw73f/zUxaMouL6aVcoRRaPhitv89kkkCiIr+bKxhm4tKZ0qEXk d+FtWxelrmfVUap4vDrVJshqZccYvr3QvifiP6TaRduEnmPkv9J+jk+VwYt7SxvH2MBo UxWZUbGlauB10lQJBeKNgHtuaF95xgBpItOUT0e0OCr+yzU1DuEm2PsZNDIpx0XSer/z tf98+TbrRXdUEBrwAeAYYvwgLAPjbwRy0dyMwDNgzgY3T3PKz5aAYlrj79U1ZHksLqDf iS204+XdQM1RRj9YePEwjmBtld6rcDcC+rQt1vawBA8pL4RPEK/YtBz5YZKee4FB/HoC KtHA==
X-Gm-Message-State: AIVw112Ko1u4sOCcZSqZIi++4beefNYPLAKKyp29acuuFRY6/GDNE6xA NWsuBxMu8t9dz5zdvZGOaCxvuPhlALKirxY=
X-Received: by 10.37.212.140 with SMTP id m134mr3608266ybf.256.1501163277705; Thu, 27 Jul 2017 06:47:57 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.129.36.12 with HTTP; Thu, 27 Jul 2017 06:47:17 -0700 (PDT)
From: Eric Rescorla <ekr@rtfm.com>
Date: Thu, 27 Jul 2017 06:47:17 -0700
Message-ID: <CABcZeBP_Xh1QC9Qxhy5HYiMiTfknPs7Yp7+X_KnQE1O-juxJ5g@mail.gmail.com>
Subject: Closing on CONNECTION_CLOSE
To: IETF QUIC WG <quic@ietf.org>
Content-Type: multipart/alternative; boundary="94eb2c07d966eb0ccf05554ccfd1"
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/nnWpRFyLnhx7WWUxub2Bo-zjZFo>
X-BeenThere: quic@ietf.org
X-Mailman-Version: 2.1.22
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, 27 Jul 2017 13:48:01 -0000
There have been a number of issues raised about the exact semantics of CONNECTION_CLOSE [0], but we have never really closed on them. As Ryan says, one might have think that CONNECTION_CLOSE is like TCP FIN or like TCP RST. In the FIN-like model: - The closing side sends a CONNECTION_CLOSE - The non-closing side ACKs it - The closing side keeps retransmitting until it gets an ACK or it times out. In the RST-like model: - The closing side sends a CONNECTION_CLOSE - The non-closing side just terminates the connection - The closing side responds to new packets from the non-closing side with a retransmitted CONNECTION_CLOSE (perhaps just a stored packet) for some time. The specification seems kind of vague on this point (there is a big TODO for TIME_WAIT) and in places suggests retransmission [1] I had previously assumed the FIN-like model but after talking to Ian this morning I think the RST-like model is better. It's easier to implement because you don't need to manage a post-close state machine on either side. The only downside I'm really aware of is that the closing side has to keep state for something like 2MSL (so that it can properly respond to late packets), rather than being able to clean up on receiving an ACK. However, this isn't that big a deal, because as noted above, you can throw away the connection and just send a stored packet, or alternately, just send public reset (or just go silent). Given that ID1 does include CONNECTION_CLOSE, albeit with limited semantics, it would be good to resolve this soon. Are there people who want to argue in favor of the FIN-like model? -Ekr [0] https://github.com/quicwg/base-drafts/issues/330 https://github.com/quicwg/base-drafts/issues/328 [1] See also the spec for ID1 which says: "The packet containing a connection close does not need to be retransmitted."
- Closing on CONNECTION_CLOSE Eric Rescorla
- Re: Closing on CONNECTION_CLOSE Ian Swett
- Re: Closing on CONNECTION_CLOSE Christian Huitema
- Re: Closing on CONNECTION_CLOSE Subodh Iyengar
- Re: Closing on CONNECTION_CLOSE Eric Rescorla
- Re: Closing on CONNECTION_CLOSE Willy Tarreau
- RE: Closing on CONNECTION_CLOSE Swindells, Thomas (Nokia - GB/Cambridge, UK)
- Re: Closing on CONNECTION_CLOSE Ian Swett
- Re: Closing on CONNECTION_CLOSE Eric Rescorla
- Re: Closing on CONNECTION_CLOSE Jana Iyengar
- Re: Closing on CONNECTION_CLOSE Eric Rescorla
- Re: Closing on CONNECTION_CLOSE Dmitri Tikhonov
- Re: Closing on CONNECTION_CLOSE Patrick McManus
- Re: Closing on CONNECTION_CLOSE Christian Huitema
- Re: Closing on CONNECTION_CLOSE Mikkel Fahnøe Jørgensen