Re: [quicwg/base-drafts] GREASE the flags byte (#311)
Martin Thomson <notifications@github.com> Thu, 16 February 2017 03:00 UTC
Return-Path: <bounces+848413-a050-quic-issues=ietf.org@sgmail.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 92F0C1295FA for <quic-issues@ietfa.amsl.com>; Wed, 15 Feb 2017 19:00:48 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.188
X-Spam-Level:
X-Spam-Status: No, score=-6.188 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_MED=-2.3, RCVD_IN_MSPIKE_H2=-1.887, RP_MATCHES_RCVD=-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 0PNM_lntCDWp for <quic-issues@ietfa.amsl.com>; Wed, 15 Feb 2017 19:00:45 -0800 (PST)
Received: from o4.sgmail.github.com (o4.sgmail.github.com [192.254.112.99]) (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 9847512944A for <quic-issues@ietf.org>; Wed, 15 Feb 2017 19:00:45 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=github.com; h=from:reply-to:to:cc:in-reply-to:references:subject:mime-version:content-type:content-transfer-encoding:list-id:list-archive:list-post:list-unsubscribe; s=s20150108; bh=ZgY6fgSQfD8sI5WrZvHMznJb+1A=; b=cttHKz5Iq//NkVeI MdiyvHRpqvQkauTFcf/moFEE3eNQjG4x8zhpMQGadT7ox04AX4yl92ZDvGIaU87D eYXOvhMIuuz0o9jDQILzrplVwq/XQMuSesdFZJMB7RbtvZqikuK9KyMSSESLblHD 8qyWOvL9aDFy6BViNb6bddfSK60=
Received: by filter0535p1mdw1.sendgrid.net with SMTP id filter0535p1mdw1-9137-58A515DA-11 2017-02-16 03:00:42.234693145 +0000 UTC
Received: from github-smtp2a-ext-cp1-prd.iad.github.net (github-smtp2a-ext-cp1-prd.iad.github.net [192.30.253.16]) by ismtpd0002p1iad1.sendgrid.net (SG) with ESMTP id 9PPKurkCSqOOLIFngIh1OA for <quic-issues@ietf.org>; Thu, 16 Feb 2017 03:00:42.158 +0000 (UTC)
Date: Wed, 15 Feb 2017 19:00:42 -0800
From: Martin Thomson <notifications@github.com>
To: quicwg/base-drafts <base-drafts@noreply.github.com>
Message-ID: <quicwg/base-drafts/issues/311/280216811@github.com>
In-Reply-To: <quicwg/base-drafts/issues/311@github.com>
References: <quicwg/base-drafts/issues/311@github.com>
Subject: Re: [quicwg/base-drafts] GREASE the flags byte (#311)
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="--==_mimepart_58a515da9cc0_36f53fb756b7f14010378a"; 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
X-SG-EID: l64QuQ2uJCcEyUykJbxN122A6QRmEpucztpreh3Pak2VjZQiL3drkeLKJjCciLr1nBlkoVqmmXjFFs 6icpWGDCrw3/OJ9JF7nxpQ8S8eDHHyJDNy2mGK4qyXm35o28WXe99HyVml6z55fqJNeGqYROrreYZD uU8nU00SbdJXkril461hHkPxAbB9l/ZYLoZbS8M3v2frAPVfRiCCFAD8tUF7/+UwpvoNdzFXzZ+KV0 Q=
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic-issues/rD2OEkMYjYxUAc9L6BEv7atOLQs>
Cc: Subscribed <subscribed@noreply.github.com>
X-BeenThere: quic-issues@ietf.org
X-Mailman-Version: 2.1.17
Reply-To: quic@ietf.org
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, 16 Feb 2017 03:00:48 -0000
This requires positive identification of short vs. long form. I think that it also fixes the size of the space in which long form packets can be sent. If the next version of the protocol needs an additional long-form packet, then n_long increases and greased packets suddenly fall into different slots. That's not workable if you ever want to change this protocol. I believe that long form packets are most in need of this sort of protection - experience with TLS shows that issues are most likely to occur on the very first packet. That doesn't mean that greasing the short form isn't valuable, it's just that greasing the initial packets is more important. We need to balance that with having an escape valve - a way to deploy a new version of the protocol. We could say that version has to be understood before identifying type (else, send a version negotiation packet and don't grease type there). That requires that only long form packets either be distinct from short form or that only long form packets arrive prior to establishing state. The latter of these doesn't work in light of NAT rebinding, since short form packets will arrive with no context. That leads me to conclude the distinguishing long and short is still useful. So we say that long form packets are identified by some clearly defined operation. Pick a permutation operation. &0x08 or &0x80 could work, or even something like n%3!=1 so that there can be twice as many long form layouts as short form. After that you know that version is present and can use version to determine if you even have a hope of recovering the type. Here is where I think @marten-seemann is right about packing the space of valid codepoints. A sparsely populated space makes this easier to build. A complicated PRP hurts, especially since this octet is likely to to need hardware implementation. That accepts that greasing the type loses any hope of preserving bitwise compatibility with Google-QUIC (why didn't anyone pick up on that in Jana's proposal, or am I just being dense through severe lack of sleep?). That means that adding a new long form packet layout and type requires a new version. I think that's a perfectly reasonable compromise. Short form packets are easier in a way: since those are only exchanged after version negotiation, the only wrinkle is how they are managed after NAT rebinding. For that, the connection ID remains our best way to ensure that they can be correctly recovered. Once the server can correlate the packet with a connection, then it's easy to recover type. @martinduke, @RyanAtGoogle, see #302. -- 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/311#issuecomment-280216811
- [quicwg/base-drafts] GREASE the flags byte (#311) ianswett
- Re: [quicwg/base-drafts] GREASE the flags byte (#… Marten Seemann
- Re: [quicwg/base-drafts] GREASE the flags byte (#… ianswett
- Re: [quicwg/base-drafts] GREASE the flags byte (#… martinduke
- Re: [quicwg/base-drafts] GREASE the flags byte (#… Ryan Hamilton
- Re: [quicwg/base-drafts] GREASE the flags byte (#… Martin Thomson
- Re: [quicwg/base-drafts] GREASE the flags byte (#… ianswett
- Re: [quicwg/base-drafts] GREASE the flags byte (#… Mike Bishop
- Re: [quicwg/base-drafts] GREASE the flags byte (#… ianswett
- Re: [quicwg/base-drafts] GREASE the flags byte (#… Mike Bishop
- Re: [quicwg/base-drafts] GREASE the flags byte (#… Martin Thomson
- Re: [quicwg/base-drafts] GREASE the packet type o… Martin Thomson
- Re: [quicwg/base-drafts] GREASE the packet type o… ekr
- Re: [quicwg/base-drafts] GREASE the packet type o… Mark Nottingham
- Re: [quicwg/base-drafts] GREASE the packet type o… ekr
- Re: [quicwg/base-drafts] GREASE the packet type o… Kazuho Oku
- Re: [quicwg/base-drafts] GREASE the packet type o… ekr
- Re: [quicwg/base-drafts] GREASE the packet type o… Kazuho Oku
- Re: [quicwg/base-drafts] GREASE the packet type o… ekr
- Re: [quicwg/base-drafts] GREASE the packet type o… Christian Huitema
- Re: [quicwg/base-drafts] GREASE the packet type o… Christian Huitema
- Re: [quicwg/base-drafts] GREASE the packet type o… Mike Bishop
- Re: [quicwg/base-drafts] GREASE the packet type o… ianswett
- Re: [quicwg/base-drafts] GREASE the packet type o… MikkelFJ
- Re: [quicwg/base-drafts] GREASE the packet type o… ianswett
- Re: [quicwg/base-drafts] GREASE the packet type o… Martin Thomson
- Re: [quicwg/base-drafts] GREASE the packet type o… Martin Thomson
- Re: [quicwg/base-drafts] GREASE the packet type o… ianswett