[quicwg/base-drafts] Stream correlation in Transport (#672)

Mike Bishop <notifications@github.com> Wed, 28 June 2017 22:22 UTC

Return-Path: <bounces+848413-a050-quic-issues=ietf.org@sgmail.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 859C212EB44 for <quic-issues@ietfa.amsl.com>; Wed, 28 Jun 2017 15:22:57 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.801
X-Spam-Level:
X-Spam-Status: No, score=-4.801 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, RCVD_IN_MSPIKE_H2=-2.8, RP_MATCHES_RCVD=-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 NnCIKCKwfzuE for <quic-issues@ietfa.amsl.com>; Wed, 28 Jun 2017 15:22:55 -0700 (PDT)
Received: from o8.sgmail.github.com (o8.sgmail.github.com [167.89.101.199]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 38F5D12EB39 for <quic-issues@ietf.org>; Wed, 28 Jun 2017 15:22:55 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=github.com; h=from:reply-to:to:cc:subject:mime-version:content-type:content-transfer-encoding:list-id:list-archive:list-post:list-unsubscribe; s=s20150108; bh=EslWejZqUrLG+RI2r/UChyrL6CU=; b=C1fIQk6IBI1K1Wb0 iJMPeUaeL42b1XozldEul0+bc9vu6VAl6R/oL3kyGzZ7+75YLZgRLdovGJC87FQI mf2osxIr+HXwdThN7F5k7hjZGk2odRV2PDr4AaC8p+G8TLJa2ZUcAqe2y+jI8wxj y2iUWSEyt8m4F23sV79F3NhQqbI=
Received: by filter0537p1mdw1.sendgrid.net with SMTP id filter0537p1mdw1-3957-59542C38-28 2017-06-28 22:22:48.460286861 +0000 UTC
Received: from github-smtp2a-ext-cp1-prd.iad.github.net (github-smtp2a-ext-cp1-prd.iad.github.net [192.30.253.16]) by ismtpd0029p1mdw1.sendgrid.net (SG) with ESMTP id sSCKj8SWTOSebIKa_JwghQ for <quic-issues@ietf.org>; Wed, 28 Jun 2017 22:22:48.389 +0000 (UTC)
Date: Wed, 28 Jun 2017 22:22:48 +0000
From: Mike Bishop <notifications@github.com>
Reply-To: quicwg/base-drafts <reply+0166e4abb1f834580b147702454cfc91c2ee6aabab8fbea292cf00000001156bee3892a169ce0e43a87c@reply.github.com>
To: quicwg/base-drafts <base-drafts@noreply.github.com>
Cc: Subscribed <subscribed@noreply.github.com>
Message-ID: <quicwg/base-drafts/pull/672@github.com>
Subject: [quicwg/base-drafts] Stream correlation in Transport (#672)
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="--==_mimepart_59542c3817b00_95a3f9809c8fc2c9543f"; charset="UTF-8"
Content-Transfer-Encoding: 7bit
Precedence: list
X-GitHub-Sender: MikeBishop
X-GitHub-Recipient: quic-issues
X-GitHub-Reason: subscribed
X-Auto-Response-Suppress: All
X-GitHub-Recipient-Address: quic-issues@ietf.org
X-SG-EID: l64QuQ2uJCcEyUykJbxN122A6QRmEpucztpreh3Pak18YUMJUu9FqfWHlDUvSN9I+XM/lO4OwjudXW wmZffgw/r8gbGUIojSR5XqnoT0tcdwUH+Q5fhkUYrrtX4rl7oK5GWnRip8b9x9KrjcIkhsYkhXBemV X/C5ek59uEubVrSLubuLSRB/hhb/Zn/h5aG9iP0gtg/8OSzFLyIXD+zArKGotZpxeixYz1+rNyfF7s Y=
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic-issues/AIe75wy7UTWYVnib_b-evOH7lu8>
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, 28 Jun 2017 22:22:57 -0000

This is an augmentation of @martinthomson's PR to add stream correlation, as promised.

# Major changes

Leveraging @igorlord's insight that OO=00 only occurs on the first STREAM frame of a stream, I used that as the trigger for a Stream Properties byte.  Two bits of that byte describe the directionality of the stream:

- Unidirectional (no response expected)
- Initial bidirectional (one response expected)
- Initial multi-response (one or more responses expected; needs a better name)
- Response

If the type is Response, there's an Associated Stream ID field, length given by two more bits following the same pattern as the SS bits in the STREAM frame ID.

# Personal Opinion

On the plus side, these stream types seem to cover the abstractions I can envision for most applications.  You can unilaterally send something (unidirectional), do request/response (bidirectional), or pub/sub (single subscription stream, series of update streams).

I don't care for the fact that I still need the stream type header in HTTP after putting this in the transport.  That will be ameliorated if we go back to one stream per request, since all unidirectional streams will be push streams.  (As a side-note, I considered using the multiple-response option in the HTTP mapping, but then I need a stream header again to indicate which is the response and which the pushes.)

I particularly don't like that you now have to look at the frame type header to find out whether a field exists which tells you the length of something else in the header.  I'd like to simplify that.  I went with this model over a CREATE_STREAM frame because of @mikkelfj's use-case of very small messages -- this adds only one byte to the first frame on a stream in one direction and 2-5 bytes to the first frame of response streams.  A separate frame type would be somewhat larger, but could be cleaner in that respect.
You can view, comment on, or merge this pull request online at:

  https://github.com/quicwg/base-drafts/pull/672

-- Commit Summary --

  * Add stream correlation at the transport layer
  * Merge remote-tracking branch 'origin/unidirectional_mt' into multidirectional

-- File Changes --

    M draft-ietf-quic-http.md (144)
    M draft-ietf-quic-transport.md (63)

-- Patch Links --

https://github.com/quicwg/base-drafts/pull/672.patch
https://github.com/quicwg/base-drafts/pull/672.diff

-- 
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/pull/672