[QUIC] 2 issues for the hopper: terminology of packet vs sequence # and byte order

Patrick McManus <pmcmanus@mozilla.com> Fri, 04 November 2016 21:01 UTC

Return-Path: <pmcmanus@mozilla.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 9AA7F129687 for <quic@ietfa.amsl.com>; Fri, 4 Nov 2016 14:01:20 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.235
X-Spam-Level:
X-Spam-Status: No, score=-1.235 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, SPF_HELO_PASS=-0.001, SPF_SOFTFAIL=0.665] autolearn=no autolearn_force=no
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 H9ii4Wwljvpm for <quic@ietfa.amsl.com>; Fri, 4 Nov 2016 14:01:19 -0700 (PDT)
Received: from linode64.ducksong.com (www.ducksong.com [192.155.95.102]) by ietfa.amsl.com (Postfix) with ESMTP id BF2F512968C for <quic@ietf.org>; Fri, 4 Nov 2016 14:01:18 -0700 (PDT)
Received: from mail-it0-f45.google.com (mail-it0-f45.google.com [209.85.214.45]) by linode64.ducksong.com (Postfix) with ESMTPSA id 0B2BD3A015 for <quic@ietf.org>; Fri, 4 Nov 2016 17:01:18 -0400 (EDT)
Received: by mail-it0-f45.google.com with SMTP id e187so6334085itc.0 for <quic@ietf.org>; Fri, 04 Nov 2016 14:01:18 -0700 (PDT)
X-Gm-Message-State: ABUngveqv7uQWapVsCbC2ga2PM3PMQpRC9MTzJclmC967i1q7Mfl+QeyIMD/C2j9TUq/2iiq/xCbIMAmwyakFw==
X-Received: by 10.107.57.135 with SMTP id g129mr7166952ioa.178.1478293277608; Fri, 04 Nov 2016 14:01:17 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.64.84.71 with HTTP; Fri, 4 Nov 2016 14:01:17 -0700 (PDT)
From: Patrick McManus <pmcmanus@mozilla.com>
Date: Fri, 04 Nov 2016 17:01:17 -0400
X-Gmail-Original-Message-ID: <CAOdDvNo_WjE-39uWm49aFH-_TCeaKdik2hsGbSduhowtKqNHqQ@mail.gmail.com>
Message-ID: <CAOdDvNo_WjE-39uWm49aFH-_TCeaKdik2hsGbSduhowtKqNHqQ@mail.gmail.com>
To: quic@ietf.org
Content-Type: multipart/alternative; boundary="001a114ac3e2af982705407ff92a"
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/u8nxWNWTNEjDikUTw6PAk1tDJ6c>
Subject: [QUIC] 2 issues for the hopper: terminology of packet vs sequence # and byte order
X-BeenThere: quic@ietf.org
X-Mailman-Version: 2.1.17
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: Fri, 04 Nov 2016 21:01:21 -0000

Hi All - two more things to raise.. one I hope editorial and one design -
when we start doing github, I'll open issues to track there.

First, editorially draft-hamilton-quic-transport-protocol-01 generally
refers to packet numbers instead of sequence numbers. There seem to be two
exceptions to that - in 6.2 and the identifier
SEQUENCE_NUMBER_LIMIT_REACHED. OTOH
https://tools.ietf.org/html/draft-thomson-quic-tls-01 almost always refers
to sequence numbers (with one exception). I think SN is not defined, but PN
is and it should standardize on the PN language.

Second, draft-hamilton-quic-transport-protocol-01 boldly uses little endian
encoding. Ya gotta admire that chutzpah in an IETF draft :) From a
processor alignment pov, it makes perfect sense and I would support it on a
clean slate or on a well layered protocol. quic however, by design, is
neither of those things.

So we get into a bit of a mess - the packet number is little endian when it
appears in transport fields, but in the TLS document the AEAD nonce is
formed by padding the big endian representation of the same number. That
smells like a bug waiting to happen. Likewise a Stream ID in a transport
STREAM frame would be big endian, but when that same ID is encoded via 7540
rules from the h2-mapping document (e.g. in a PUSH_PROMISE) then it needs
to be big endian. Again - seems like a footgun. So while I salute the
valiant effort to go little endian, I think we ought to bow to the
constraints this effort faces and go the traditional all network byte order
path.

-Patrick