HTTP2 server-side stream creation

Ben Maurer <> Thu, 01 August 2019 21:03 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id C7BEE12022E for <>; Thu, 1 Aug 2019 14:03:44 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -2.799
X-Spam-Status: No, score=-2.799 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.201, HTML_MESSAGE=0.001, MAILING_LIST_MULTI=-1, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: (amavisd-new); dkim=pass (2048-bit key)
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id YHECCbI8Pyjw for <>; Thu, 1 Aug 2019 14:03:42 -0700 (PDT)
Received: from ( [IPv6:2603:400a:ffff:804:801e:34:0:38]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPS id B3BE41201BB for <>; Thu, 1 Aug 2019 14:03:42 -0700 (PDT)
Received: from lists by with local (Exim 4.89) (envelope-from <>) id 1htICA-0000gu-VZ for; Thu, 01 Aug 2019 21:01:06 +0000
Resent-Date: Thu, 01 Aug 2019 21:01:06 +0000
Resent-Message-Id: <>
Received: from ([2603:400a:ffff:804:801e:34:0:4f]) by with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from <>) id 1htIC7-0000g7-BW for; Thu, 01 Aug 2019 21:01:03 +0000
Received: from ([2a00:1450:4864:20::22a]) by with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.89) (envelope-from <>) id 1htIC5-00070k-TJ for; Thu, 01 Aug 2019 21:01:03 +0000
Received: by with SMTP id d24so70732867ljg.8 for <>; Thu, 01 Aug 2019 14:00:41 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=OqmzllhHcfA9cImGAQ0ag/rHzp4C+MdJnnFd8YOWc4Q=; b=Bf2Eohec2blAggFVM0hj1QHvJLomItxg8X50BvJvXftlHqsf5Nm2fVELSXtdnIyjPV 62NkPA8fJKd7TWwvs0qo0XXRAGSYfGRQvRql5kaj40yX7zSGKMI/USvUA/hVZ/68DRl9 ZQ0dOt+4cZ0CKLUA/qc0Loh+g63KBhfkzf5yzYOTUjUMitSM5fXxJwF1T54usHS1qDeJ 1MdyimVahZtP7Ei42Z9X8+3rCKgIHdwQ+3nUOKhFrMMZUNKwxdGRKTHqaE76KTaBbErZ pZH3//pkC8463wM2kPAqgv1Ky2jvVPv2YFfL1gEVpiRy2ggGbg/TlzyYliUwgn1o20vl UgSA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=OqmzllhHcfA9cImGAQ0ag/rHzp4C+MdJnnFd8YOWc4Q=; b=iiODhpw0782COp1zH6dZPiGJ8vVShFyZyNKpw1zA5EKnC5j6vbO2rErVA6P8xY88PS cdEPagzXn7WVAqa18PFeVGRBUHjg/paJOneteWQC9ZK4OqrhWNQhkvemuZCHFxAkTh7o 1KLc4Zs+Ex1ZQj6KbO9O9VqNt5OZqbKxs6KdLVgvTpfM92V0voVCzeIoe0tmiE1lUMsL xzqmMv6MBoZrXqyEm6LKyCqbLp+ATWUpc5Yd3z5z2FV7MGPFy+J3He76Ki/mefJFSrzV vXpMq6wizCwUrONWl29GBViNoQ2EtSD+WX7sN3HYeqzMdt+CVM9FKHa66z4KLnqNN1UQ DCMw==
X-Gm-Message-State: APjAAAWczQMBfrpVvqjVfprMdHlS3NVTwZJ4zfvILdnI659b4aW2FxVE czTFH0AcKV6Rmf+WX8YuC5lS2uHNnlXkx4LKpWtau3Iye1w=
X-Google-Smtp-Source: APXvYqwOeQV0qH0H/F+4v9XKHXDyNgnoYZcL/bt9IQrO/aXBMzY9xM7Qn+mbtcKjL+NUwL5p03Gf0zGtYk8Kff8vbNc=
X-Received: by 2002:a2e:3a01:: with SMTP id h1mr11881053lja.132.1564693239842; Thu, 01 Aug 2019 14:00:39 -0700 (PDT)
MIME-Version: 1.0
From: Ben Maurer <>
Date: Thu, 1 Aug 2019 14:00:28 -0700
Message-ID: <>
To: HTTP Working Group <>
Content-Type: multipart/alternative; boundary="000000000000be4afc058f148816"
Received-SPF: pass client-ip=2a00:1450:4864:20::22a;;
X-W3C-Hub-Spam-Status: No, score=-4.1
X-W3C-Hub-Spam-Report: BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, W3C_AA=-1, W3C_WL=-1
X-W3C-Scan-Sig: 1htIC5-00070k-TJ a618a5d1e4bfa8be3396821d50869b70
Subject: HTTP2 server-side stream creation
Archived-At: <>
X-Mailing-List: <> archive/latest/36926
Precedence: list
List-Id: <>
List-Help: <>
List-Post: <>
List-Unsubscribe: <>

I've currently been looking at framing protocols that are appropriate to
use in a peer to peer context where there is less of a distinction between
client and server.

This 4-year-old thread (which I selected an email in the middle of, that
best represents the core of the question) discusses this type of approach.

Even though the spec says that "Clients send HTTP requests and receive HTTP
responses" it also states that "Streams initiated by a client MUST use
odd-numbered stream identifiers; those initiated by the server MUST use
even-numbered stream identifiers". This implies that servers can in fact
receive some sort of request and provide a response.

The thread seems to conclude that it's at least plausible to use HTTP2 in
this context.

I attempted to find conversations since that time and couldn't find any.
I'm curious if people are aware of any attempts to take this approach.

As a more concrete example, imagine one were creating a protocol like
bittorrent (where both peers of a connection may initiate requests) would
HTTP2 be an appropriate base layer for that protocol (allowing either peer
to initiate a request a chunk of data in the case of bittorrent).