An HTTP/2 extension for bidirectional messaging communication

The information below is for an old version of the document
Document Type Active Internet-Draft (individual)
Last updated 2019-03-24
Stream (None)
Intended RFC status (None)
Formats plain text pdf html bibtex
Stream Stream state (No stream defined)
Consensus Boilerplate Unknown
RFC Editor Note (None)
IESG IESG state I-D Exists
Telechat date
Responsible AD (None)
Send notices to (None)
httpbis Working Group                                             G. Xie
Internet-Draft                                               F. Frindell
Intended status: Standards Track                           Facebook Inc.
Expires: September 25, 2019                               March 24, 2019

     An HTTP/2 extension for bidirectional messaging communication


   This draft proposes a http2 protocol extension, which enables
   bidirectional messaging communication between client and server.

Status of This Memo

   This Internet-Draft is submitted in full conformance with the
   provisions of BCP 78 and BCP 79.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF).  Note that other groups may also distribute
   working documents as Internet-Drafts.  The list of current Internet-
   Drafts is at

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   This Internet-Draft will expire on September 25, 2019.

Copyright Notice

   Copyright (c) 2019 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents
   ( in effect on the date of
   publication of this document.  Please review these documents
   carefully, as they describe your rights and restrictions with respect
   to this document.  Code Components extracted from this document must
   include Simplified BSD License text as described in Section 4.e of
   the Trust Legal Provisions and are provided without warranty as
   described in the Simplified BSD License.

Xie & Frindell         Expires September 25, 2019               [Page 1]
Internet-Draft           bidirectional messaging              March 2019


   HTTP/2 is the de facto application protocol in Internet.  The
   optimizations developed in HTTP/2, like stream multiplexing, header
   compression, and binary message framing are very generic.  They can
   be useful in non web browsing applications, for example, Publish/
   Subscribe, RPC.  However, the request/response from client to server
   communication pattern limits HTTP/2 from wider use in these
   applications.  This draft proposes a HTTP/2 protocol extension, which
   enables bidirectional messaging between client and server.

   The only mechanism HTTP/2 provides for server to client communication
   is PUSH

   PROMISE and the bi-directionality of HEADERS.  Further, clients are
   also able group streams together for routing purposes, such that each
   individual stream does not need to carry additional routing


   The keywords









   , and

   , when they appear in this document, are to be interpreted as
   described in [RFC2119].

   All the terms defined in the Conventions and Terminology section in
   [RFC7540] apply to this document.

Xie & Frindell         Expires September 25, 2019               [Page 2]
Internet-Draft           bidirectional messaging              March 2019



   A routing stream (RStream) is a long lived HTTP/2 stream in nature.
   RStreams are initiated by clients, and can be routed independently by
   any intermediaries.  Though an RStream is effectively a regular
   HTTP/2 stream, RStreams are recommended for exchanging metadata, but
   not user data.

   A new HTTP/2 stream called ExStream is introduced for exchanging user
   data.  ExStreams are recommended for short lived transactions, so
   intermediaries and servers can gracefully shutdown ExStreams within a
   short time.  The typical use case can be a subscription or publish
   request/response in Publish/Subscribe use case, or an RPC call
   between two endpoints.

   An ExStream is opened by an EX_HEADERS frame, and continued by
   CONTINUATION and DATA frames.  An ExStream

   be associated with an open RStream, and

   be associated with any other ExStream.  ExStreams are routed
   according to their RStreams by intermediaries and servers.
   Effectively, all ExStreams with the same RStream form a logical
   stream group, and are routed to the same endpoint.


   With RStreams and ExStreams, HTTP/2 can be used for bidirectional
   messaging communication.  As shown in the follow diagrams, after an
   RStream is open from client to server, either endpoint can initiate
   an ExStreams to its peer.

   +--------+   RStream (5)   +---------+    RStream (1)   +--------+
   | client |>--------------->|  proxy  |>---------------->| server |
   +--------+                 +---------+                  +--------+
       v                        ^     v                        ^
Show full document text