[quicwg/base-drafts] HTTP/3 frame encodings are unnecessarily difficult to serialize and parse (#2396)

ianswett <notifications@github.com> Wed, 30 January 2019 23:42 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 []) by ietfa.amsl.com (Postfix) with ESMTP id C79C4130E25 for <quic-issues@ietfa.amsl.com>; Wed, 30 Jan 2019 15:42:33 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -12.552
X-Spam-Status: No, score=-12.552 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-4.553, 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_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 ([]) by localhost (ietfa.amsl.com []) (amavisd-new, port 10024) with ESMTP id OOdgofaZolj8 for <quic-issues@ietfa.amsl.com>; Wed, 30 Jan 2019 15:42:32 -0800 (PST)
Received: from out-6.smtp.github.com (out-6.smtp.github.com []) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id CBE8112008A for <quic-issues@ietf.org>; Wed, 30 Jan 2019 15:42:31 -0800 (PST)
Date: Wed, 30 Jan 2019 15:42:30 -0800
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=github.com; s=pf2014; t=1548891750; bh=tcBj+1zRpsO8XD5y8u/sJczv82CTKg06D38S2rjHRik=; h=Date:From:Reply-To:To:Cc:Subject:List-ID:List-Archive:List-Post: List-Unsubscribe:From; b=Dm4bbIZ4y8US2ZYX7O1yCj8zgCFoyqdndBILJInJKHo1ZSuAPPHcwwBBQy04Z8+Ay bRjb2DR6Dm7cFEPF5BvakWFE9cKK/OlVpsE2x+cF6fDUzUPbgzEAZ4SyDt1NYE/3YZ OaQOMoenaR5EYquMxnE95W+51yIfz3dmN7zIOHRs=
From: ianswett <notifications@github.com>
Reply-To: quicwg/base-drafts <reply+0166e4abe965968dbffdaf85919ec52219452036964dd13f92cf000000011869f86692a169ce18240d30@reply.github.com>
To: quicwg/base-drafts <base-drafts@noreply.github.com>
Cc: Subscribed <subscribed@noreply.github.com>
Message-ID: <quicwg/base-drafts/issues/2396@github.com>
Subject: [quicwg/base-drafts] HTTP/3 frame encodings are unnecessarily difficult to serialize and parse (#2396)
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="--==_mimepart_5c523666eb2a1_28e23f912aed45b869589"; charset="UTF-8"
Content-Transfer-Encoding: 7bit
Precedence: list
X-GitHub-Sender: ianswett
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/5IxkCJOuqJqLCxfX_Al618Lz70Y>
X-BeenThere: quic-issues@ietf.org
X-Mailman-Version: 2.1.29
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: Wed, 30 Jan 2019 23:42:34 -0000

Multiple HTTP/3 frames have lengths, but do not require the length to deserialize.

On the serialization side, those require extra work to determine the size before serializing them, which may or may not be easy.  SETTINGs is fairly complex because it's a series of varints, so you either need to do a two-pass serialization or write the SETTINGs and then go back and write the length(possibly assuming it's a 2 byte length?).

On the parsing side, extra work is required to verify that the parsed length matches the specified length.

This also wastes a byte or two in a few cases.

I suggest we use the principle that if it's easier to serialize and deserialize without a frame length then the length should be omitted.

Related to #2395

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