Re: [quicwg/base-drafts] Don't use bitmap frames to describe varint structures (#3115)

Nick Harper <notifications@github.com> Mon, 28 October 2019 18:25 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 EA2CC120137 for <quic-issues@ietfa.amsl.com>; Mon, 28 Oct 2019 11:25:09 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -8
X-Spam-Level:
X-Spam-Status: No, score=-8 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_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: 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 vbZhfMgmvReI for <quic-issues@ietfa.amsl.com>; Mon, 28 Oct 2019 11:25:08 -0700 (PDT)
Received: from out-23.smtp.github.com (out-23.smtp.github.com [192.30.252.206]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 6235B120125 for <quic-issues@ietf.org>; Mon, 28 Oct 2019 11:25:08 -0700 (PDT)
Date: Mon, 28 Oct 2019 11:25:07 -0700
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=github.com; s=pf2014; t=1572287107; bh=h+dkxBC+6YldnMOj2F54G3Wf7KHginUFBnu1/uC9IW4=; h=Date:From:Reply-To:To:Cc:In-Reply-To:References:Subject:List-ID: List-Archive:List-Post:List-Unsubscribe:From; b=Whm1PxJhiddt8F+CLtDh9BysjoWYwNuYEIEuCmzd/WQZ9/40opAMR+qg1p+gGF1kj TJR56/l4lhMzZqOUEyr96WDdIc/IXlf+mwsqTmg2Ba/kmJs5W5KsO6KbZ1FV5rn8Zj PB/18r0vNguhrZD3isBKUay0JpYVzGdVPLwsfmdM=
From: Nick Harper <notifications@github.com>
Reply-To: quicwg/base-drafts <reply+AFTOJK34HMK5OIH5QO3PPN53YRZRHEVBNHHB4UPZEI@reply.github.com>
To: quicwg/base-drafts <base-drafts@noreply.github.com>
Cc: Subscribed <subscribed@noreply.github.com>
Message-ID: <quicwg/base-drafts/issues/3115/547082729@github.com>
In-Reply-To: <quicwg/base-drafts/issues/3115@github.com>
References: <quicwg/base-drafts/issues/3115@github.com>
Subject: Re: [quicwg/base-drafts] Don't use bitmap frames to describe varint structures (#3115)
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="--==_mimepart_5db73283604e6_4b2a3f8c1f0cd95c835f"; charset=UTF-8
Content-Transfer-Encoding: 7bit
Precedence: list
X-GitHub-Sender: nharper
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/Ocp6aY-5npZrjV30F8XVRqhcgkI>
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: Mon, 28 Oct 2019 18:25:10 -0000

My preference is something closer to the TLS presentation language for specifying packet formats (at least in the transport draft).

For example, the initial packet header format is currently described as 

```
+-+-+-+-+-+-+-+-+
|1|1| 0 |R R|P P|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                         Version (32)                          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| DCID Len (8)  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|               Destination Connection ID (0..160)            ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| SCID Len (8)  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                 Source Connection ID (0..160)               ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                         Token Length (i)                    ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                            Token (*)                        ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           Length (i)                        ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                    Packet Number (8/16/24/32)               ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                          Payload (*)                        ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
```

Only one of fields drawn to be 32 bits wide is actually 32 bits (the version) - for the rest of them that drawing style (even though there's a `...` instead of a `|` at the end of the line) isn't particularly helpful.

Here's an example of what that would look like done in something like the TLS presentation language:

```
struct {
  uint8 flags;
  uint32 version;
  uint8 dcid_len;
  blob[dcid_len] dcid;
  uint8 scid_len;
  blob[scid_len] scid;
  varint token_len;
  blob[token_len] token;
  varint length;
  blob[pn_len] packet_number;
  blob[length-pn_len] payload;
} InitialPacket;
```

The only place where this struct loses clarity compared to the diagram is the `flags` field (and regardless of whether a struct or a diagram is used, prose is still needed to describe what the bits are). For the rest of this struct layout, it's a list of fields, which is essentially what the diagram is, but the types and/or lengths of the fields are described in better detail.

If there's interest in making such a change to the drafts, I volunteer to help make those changes.

-- 
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/3115#issuecomment-547082729