Re: [quicwg/base-drafts] Make transport parameter ID and length varint (#3294)

Kazuho Oku <> Thu, 12 December 2019 00:31 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 4DB5F1201EF for <>; Wed, 11 Dec 2019 16:31:21 -0800 (PST)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -7.999
X-Spam-Status: No, score=-7.999 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_IMAGE_ONLY_32=0.001, HTML_MESSAGE=0.001, MAILING_LIST_MULTI=-1, RCVD_IN_DNSWL_HI=-5, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: (amavisd-new); dkim=pass (1024-bit key)
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id IWt9jyW8SvIw for <>; Wed, 11 Dec 2019 16:31:19 -0800 (PST)
Received: from ( []) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPS id 5C2161200FB for <>; Wed, 11 Dec 2019 16:31:19 -0800 (PST)
Received: from ( []) by (Postfix) with ESMTP id 7BE75521108 for <>; Wed, 11 Dec 2019 16:31:18 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=pf2014; t=1576110678; bh=aMkzU+bjihLqY9DYadpSCtHD1uNRlGaKR5pXycE5mLU=; h=Date:From:Reply-To:To:Cc:In-Reply-To:References:Subject:List-ID: List-Archive:List-Post:List-Unsubscribe:From; b=gWZWA3VzNmVO6cK1cQq2FN/PTvqp8BipxeSWwqKSnQIFvOsoBoh7rbXSqd5qCE6uQ vTNC1dq3We0zJG9H9Jal7fmbS33WJJTAWfAsTBsjNO/Irrp8osohHXQMBC0RpwDAcr rMzksZT44tO1HH5jHlGKQvoAW32sxpPtoc1RN0Pc=
Date: Wed, 11 Dec 2019 16:31:18 -0800
From: Kazuho Oku <>
Reply-To: quicwg/base-drafts <>
To: quicwg/base-drafts <>
Cc: Subscribed <>
Message-ID: <quicwg/base-drafts/issues/3294/>
In-Reply-To: <quicwg/base-drafts/issues/>
References: <quicwg/base-drafts/issues/>
Subject: Re: [quicwg/base-drafts] Make transport parameter ID and length varint (#3294)
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="--==_mimepart_5df18a566ccb5_5fd03fd9652cd96c9513e"; 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
Archived-At: <>
X-Mailman-Version: 2.1.29
List-Id: Notification list for GitHub issues related to the QUIC WG <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Thu, 12 Dec 2019 00:31:21 -0000

> This is like a 15 minute code change.

I think that this comment illustrates the difference of pain among the parties.

For people having a type-length-value codec specific to QUIC, the pain of sticking uint16 here is as small as something that can be modified in 15 minutes.

Compared to that, the pain would be much bigger for people sharing the codec with TLS, if we decide to move to a varint-based design. This is because that move would enforce those people to have two codecs instead of one, even though the logic would be equivalent with the exception of the integer representations being used.

The requirements on the type-length-value codec is not trivial. The decoder is required to:
* parse IDs and block lengths
* check that the block lengths were consistent for parameters that have been parsed
* detect duplicate IDs

For those who can share the codec, it helps a lot if these logic can be *kept and maintained* in one place.

I see that some people are arguing that the encoding can be different based on the view that TP belongs to QUIC. I dispute that. We deliberately decided to mix crypto handshake and transport negotiation in QUIC. TP is a cross-layer thing that is exchanged during the TLS handshake.

You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub: