[quicwg/base-drafts] Order of Compound Packets (#1287)

Nick Banks <notifications@github.com> Wed, 11 April 2018 17:52 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 92940128959 for <quic-issues@ietfa.amsl.com>; Wed, 11 Apr 2018 10:52:38 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -8.01
X-Spam-Level:
X-Spam-Status: No, score=-8.01 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, MAILING_LIST_MULTI=-1, RCVD_IN_DNSWL_HI=-5, SPF_PASS=-0.001, T_DKIMWL_WL_HIGH=-0.01] 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 c0J27IW-Qve4 for <quic-issues@ietfa.amsl.com>; Wed, 11 Apr 2018 10:52:32 -0700 (PDT)
Received: from out-3.smtp.github.com (out-3.smtp.github.com [192.30.252.194]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 71C5B126D3F for <quic-issues@ietf.org>; Wed, 11 Apr 2018 10:52:32 -0700 (PDT)
Date: Wed, 11 Apr 2018 10:52:31 -0700
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=github.com; s=pf2014; t=1523469151; bh=79cF083IwJC1FvwOErUECWxqs29VK+Vy67F295jA8mg=; h=Date:From:Reply-To:To:Cc:Subject:List-ID:List-Archive:List-Post: List-Unsubscribe:From; b=BoGwPBADB5N2W30f/NaZMOK/f1YXglnG0OliQzkASMWALYo4Ac2jjINucPBYMcEuy Uo2BR3naapGvJ3xgbiXbwsm/ZObzmMgOEVxy6+jtsWL4ph4xHQsk7Gzr695i88xewJ S3Cc9ghQc5okLKxNeIcek3n5A3fK6X8DfaBpObVM=
From: Nick Banks <notifications@github.com>
Reply-To: quicwg/base-drafts <reply+0166e4ab2807518f995a6aca0804a7edafa42e904d4f543292cf0000000116e60d5f92a169ce12ae7fcb@reply.github.com>
To: quicwg/base-drafts <base-drafts@noreply.github.com>
Cc: Subscribed <subscribed@noreply.github.com>
Message-ID: <quicwg/base-drafts/issues/1287@github.com>
Subject: [quicwg/base-drafts] Order of Compound Packets (#1287)
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="--==_mimepart_5ace4b5fd3223_59ce2b27d05caecc37976f5"; charset="UTF-8"
Content-Transfer-Encoding: 7bit
Precedence: list
X-GitHub-Sender: nibanks
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/x3DskriQnnXhd0agO1XE2jCbLbE>
X-BeenThere: quic-issues@ietf.org
X-Mailman-Version: 2.1.22
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, 11 Apr 2018 17:52:38 -0000

I am implementing the QUIC compound packets and I am coming across some implementation pain points related to the order of processing the packets in the UDP payload.

Generally, I have a model of "current buffer pointer" and "bytes left" and this continues though the UDP payload, processing QUIC packets until it runs out of space, encounters an invalid packet header that prevents any further processing, or it encounters a packet that requires a particular key to decrypt, that we don't have yet.

1. This model doesn't work if the client Initial packet isn't the first packet in UDP payload, because I use "bytes left" to do the packet length comparison, not UDP payload length. Obviously this could be fixed just by passing "total payload length" around, but that does make the implementation a bit messier.

2. I currently support deferring packets (up to a limit) that I don't have the keys for yet, so that I can process them when/if I do get the key. As you can see from my description of my processing logic above, if I get to a QUIC packet that I don't have the key for, I stop (for the time being) processing the rest of the packet, mark the packet to keep my place, and defer it for later. This would cause problems if a peer packaged up 0-RTT packets before Handshake.

The simple way to fix all these is just to require than Handshake packets be before 0-RTT packets. 1-RTT packets (short headers) are already last because they consume the rest of the UDP payload. Would it be acceptable to make "Handshake before 0-RTT" a MUST?

-- 
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/1287