Design Issue: Max Concurrent Streams Limit and Unidirectional Streams

James M Snell <jasnell@gmail.com> Thu, 25 April 2013 17:54 UTC

Return-Path: <ietf-http-wg-request@listhub.w3.org>
X-Original-To: ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com
Delivered-To: ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 774DC21F967F for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Thu, 25 Apr 2013 10:54:15 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -10.537
X-Spam-Level:
X-Spam-Status: No, score=-10.537 tagged_above=-999 required=5 tests=[AWL=0.062, BAYES_00=-2.599, RCVD_IN_DNSWL_HI=-8]
Received: from mail.ietf.org ([12.22.58.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 10Ga+eiHS-Zt for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Thu, 25 Apr 2013 10:54:14 -0700 (PDT)
Received: from frink.w3.org (frink.w3.org [128.30.52.56]) by ietfa.amsl.com (Postfix) with ESMTP id 4D82C21F9692 for <httpbisa-archive-bis2Juki@lists.ietf.org>; Thu, 25 Apr 2013 10:54:01 -0700 (PDT)
Received: from lists by frink.w3.org with local (Exim 4.72) (envelope-from <ietf-http-wg-request@listhub.w3.org>) id 1UVQKf-0001HS-C9 for ietf-http-wg-dist@listhub.w3.org; Thu, 25 Apr 2013 17:51:45 +0000
Resent-Date: Thu, 25 Apr 2013 17:51:45 +0000
Resent-Message-Id: <E1UVQKf-0001HS-C9@frink.w3.org>
Received: from lisa.w3.org ([128.30.52.41]) by frink.w3.org with esmtp (Exim 4.72) (envelope-from <jasnell@gmail.com>) id 1UVQKU-0001Gi-GZ for ietf-http-wg@listhub.w3.org; Thu, 25 Apr 2013 17:51:34 +0000
Received: from mail-ob0-f180.google.com ([209.85.214.180]) by lisa.w3.org with esmtps (TLS1.0:RSA_ARCFOUR_SHA1:16) (Exim 4.72) (envelope-from <jasnell@gmail.com>) id 1UVQKQ-00036g-2e for ietf-http-wg@w3.org; Thu, 25 Apr 2013 17:51:34 +0000
Received: by mail-ob0-f180.google.com with SMTP id uk5so2798824obc.11 for <ietf-http-wg@w3.org>; Thu, 25 Apr 2013 10:51:04 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=x-received:mime-version:from:date:message-id:subject:to :content-type; bh=4pSEaX7B0DgcFnshGIU0rPubEbFU8y57k2aezk5Wt0I=; b=UI3psfG5DMLpsrhBCHF4ByVbkmEtYp9gDgl1FOCHUqLP8rlsBFze09lROKNUsm3LEn /L/HGEmcRRKer1AoNYtQ/GlwWSQETSJN9EgMHQunNlI94PQo0Y9zQXgz8JcmmFL0orLu LhFIGRg/SqWUw9t0V15H8CtSAIX8F0JsOOeaxnxryqKrXneUxpLVedRiTd3yK83L6RA/ VCCI6DgGHUBOeZpQw9EbIKfbd0wm1jCNx/b1x6v1LmrTwL+0aRA/D2Y+XO/+ZJoVZiHB 6NpAGOXoIz+pyH8cVCjUiA+zn0vf6BJfFCvT0iL+5V6hC6S5vBVKeCsWVUVOJwGaxfHp OV9w==
X-Received: by 10.60.47.84 with SMTP id b20mr1631846oen.135.1366912264064; Thu, 25 Apr 2013 10:51:04 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.60.3.137 with HTTP; Thu, 25 Apr 2013 10:50:44 -0700 (PDT)
From: James M Snell <jasnell@gmail.com>
Date: Thu, 25 Apr 2013 10:50:44 -0700
Message-ID: <CABP7RbdBe-Xkx+CMvpN=_oNAqm6SyLyL+XNHRUKSqn8mjSDw1Q@mail.gmail.com>
To: "ietf-http-wg@w3.org" <ietf-http-wg@w3.org>
Content-Type: text/plain; charset="UTF-8"
Received-SPF: pass client-ip=209.85.214.180; envelope-from=jasnell@gmail.com; helo=mail-ob0-f180.google.com
X-W3C-Hub-Spam-Status: No, score=-3.5
X-W3C-Hub-Spam-Report: AWL=-2.682, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001
X-W3C-Scan-Sig: lisa.w3.org 1UVQKQ-00036g-2e 2927f5d5e23dc54d89a2139997a66e6f
X-Original-To: ietf-http-wg@w3.org
Subject: Design Issue: Max Concurrent Streams Limit and Unidirectional Streams
Archived-At: <http://www.w3.org/mid/CABP7RbdBe-Xkx+CMvpN=_oNAqm6SyLyL+XNHRUKSqn8mjSDw1Q@mail.gmail.com>
Resent-From: ietf-http-wg@w3.org
X-Mailing-List: <ietf-http-wg@w3.org> archive/latest/17566
X-Loop: ietf-http-wg@w3.org
Resent-Sender: ietf-http-wg-request@w3.org
Precedence: list
List-Id: <ietf-http-wg.w3.org>
List-Help: <http://www.w3.org/Mail/>
List-Post: <mailto:ietf-http-wg@w3.org>
List-Unsubscribe: <mailto:ietf-http-wg-request@w3.org?subject=unsubscribe>

https://github.com/http2/http2-spec/issues/78

In the current draft (-02), we state that:

A. Any endpoint can initiate and half-close a fully unidirectional
stream that does not require any action or acknowledgement from the
receiving peer. Once half-closed, these remain in a constant
half-closed state with the receiving peer having the option of sending
frames for that stream at any time for the full duration of the
session.

B. An endpoint MUST NOT exceed the maximum concurrent streams limit
set by it's peer and that streams initiated by the endpoint that are
half-closed in any direction count towards this limit.

C. Unless I missed it somewhere, clients are never required to
half-close PUSH_PROMISE streams.

The potential problem here is simple:

If a client sets a limit of 4 concurrent streams, and the server
initiates 4 separate PUSH_PROMISE streams that the server half-closes
but that are never half-closed by the client, the server will not be
able to initiate new push streams for the duration of the session.