MASQUE                                                         L. Pardue
Internet-Draft                                                Cloudflare
Intended status: Standards Track                            13 July 2021
Expires: 14 January 2022


                      HTTP Datagram Prioritization
                 draft-pardue-masque-dgram-priority-00

Abstract

   Application protocols using the QUIC transport protocol rely on
   streams, and optionally the DATAGRAM extension, to carry application
   data.  Streams and datagrams can be multiplexed but QUIC provides no
   interoperable prioritization scheme or signaling mechanism itself.
   The HTTP Extensible Prioritization scheme describes how to prioritize
   streams in HTTP/2 and HTTP/3.  This document adopts the scheme to
   support HTTP datagrams.

Note tho Readers

   _RFC EDITOR: please remove this section before publication_

   Source code and issues list for this draft can be found at
   https://github.com/LPardue/draft-pardue-masque-dgram-priority
   (https://github.com/LPardue/draft-pardue-masque-dgram-priority).

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 https://datatracker.ietf.org/drafts/current/.

   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 14 January 2022.

Copyright Notice

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



Pardue                   Expires 14 January 2022                [Page 1]


Internet-Draft        HTTP Datagram Prioritization             July 2021


   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents (https://trustee.ietf.org/
   license-info) 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.

Table of Contents

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   2
     1.1.  Notational Conventions  . . . . . . . . . . . . . . . . .   3
   2.  Signalling Datagram Priority  . . . . . . . . . . . . . . . .   3
     2.1.  Datagram Urgency  . . . . . . . . . . . . . . . . . . . .   3
   3.  Scheduling guidance . . . . . . . . . . . . . . . . . . . . .   4
   4.  Security Considerations . . . . . . . . . . . . . . . . . . .   4
   5.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .   4
   6.  References  . . . . . . . . . . . . . . . . . . . . . . . . .   4
     6.1.  Normative References  . . . . . . . . . . . . . . . . . .   4
     6.2.  Informative References  . . . . . . . . . . . . . . . . .   5
   Appendix A.  Acknowledgements . . . . . . . . . . . . . . . . . .   5
   Author's Address  . . . . . . . . . . . . . . . . . . . . . . . .   5

1.  Introduction

   Application protocols using the QUIC transport protocol [QUIC] rely
   on streams, and optionally the DATAGRAM extension [DATAGRAM], to
   carry application data.  Streams and datagrams can be multiplexed but
   QUIC provides no interoperable prioritization scheme or signaling
   mechanism itself.  The HTTP Extensible Prioritization scheme
   [I-D.ietf-httpbis-priority] describes how to prioritize streams in
   HTTP/2 and HTTP/3.  This document adopts the scheme to support HTTP
   datagrams [I-D.ietf-masque-h3-datagram].

   The Extensible Priorities scheme for HTTP describes how clients can
   send priority signals related to requests in order to suggest how a
   server allocates resources to serving responses.  When the protocol
   is HTTP/2, responses are carried on streams.  When the protocol is
   HTTP/3, responses are carries on QUIC streams.











Pardue                   Expires 14 January 2022                [Page 2]


Internet-Draft        HTTP Datagram Prioritization             July 2021


   While QUIC streams support multiplexing natively via use of a stream
   identifier, the QUIC DATAGRAM extension does not provide any such
   identifier.  [I-D.ietf-masque-h3-datagram] defines a set of
   identifiers that can be controlled and accessed by HTTP.  When the
   protocol is HTTP/2 or HTTP/3, one identifer relates to a request
   stream.  A second, optional, identifer relates to an abstract
   context.  [I-D.ietf-masque-h3-datagram] does not define any means for
   multiplexed datagram prioritization.

   This document describes how the Extensible Priorities scheme applies
   to HTTP datagrams.  Signals sent by clients related to requests can
   also be considered input to server scheduling decisions regarding
   HTTP datagrams.

1.1.  Notational Conventions

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
   "OPTIONAL" in this document are to be interpreted as described in
   BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all
   capitals, as shown here.

2.  Signalling Datagram Priority

   The Extensible Prioritization scheme [I-D.ietf-httpbis-priority]
   provides a framework for communicating and acting upon priority
   parameters.  It defines the urgency and incremental parameters and
   provides guidance to implementers about how to act on these
   parameters, in combination with other inputs, to make resource
   allocation and scheduling choices.  Urgency communicates the client-
   view of request importance and incremental communicates how the
   client intends to process response data as it arrives.  Parameters
   are communicated in HTTP headers or version-specific frames.
   Omitting a priority signal indicates to the server to apply default
   priorities.  The core scheme is extensible, new parameters can be
   defined to augment the base ones.

2.1.  Datagram Urgency

   The datagram-urgency parameter ("du") takes an integer between 0 and
   7, in descending order of priority.  This range matches the base
   urgency ("u") paramenter range.

   The value is encoded as an sf-integer.  The default value is 3.







Pardue                   Expires 14 January 2022                [Page 3]


Internet-Draft        HTTP Datagram Prioritization             July 2021


   This parameter indicates the sender's recommendation, based on the
   expectation that the server would transmit HTTP datagrams in the
   order of their urgency values if possible.  The smaller the value,
   the higher the precedence.

   The following example shows a request for a CSS file with the urgency
   set to "0", any associated datagrams will be delivered with the lower
   urgency of "2":

   :method = GET
   :scheme = https
   :authority = example.net
   :path = /style.css
   priority = u=0, du=2

3.  Scheduling guidance

   TBD - bikeshed

4.  Security Considerations

   TBD

5.  IANA Considerations

   TBD

6.  References

6.1.  Normative References

   [DATAGRAM] Pauly, T., Kinnear, E., and D. Schinazi, "An Unreliable
              Datagram Extension to QUIC", Work in Progress, Internet-
              Draft, draft-ietf-quic-datagram-02, 16 February 2021,
              <https://www.ietf.org/archive/id/draft-ietf-quic-datagram-
              02.txt>.

   [I-D.ietf-httpbis-priority]
              Oku, K. and L. Pardue, "Extensible Prioritization Scheme
              for HTTP", Work in Progress, Internet-Draft, draft-ietf-
              httpbis-priority-03, 11 January 2021,
              <https://www.ietf.org/archive/id/draft-ietf-httpbis-
              priority-03.txt>.








Pardue                   Expires 14 January 2022                [Page 4]


Internet-Draft        HTTP Datagram Prioritization             July 2021


   [I-D.ietf-masque-h3-datagram]
              Schinazi, D. and L. Pardue, "Using QUIC Datagrams with
              HTTP/3", Work in Progress, Internet-Draft, draft-ietf-
              masque-h3-datagram-02, 26 May 2021,
              <https://www.ietf.org/archive/id/draft-ietf-masque-h3-
              datagram-02.txt>.

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119,
              DOI 10.17487/RFC2119, March 1997,
              <https://www.rfc-editor.org/info/rfc2119>.

   [RFC8174]  Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
              2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
              May 2017, <https://www.rfc-editor.org/info/rfc8174>.

6.2.  Informative References

   [QUIC]     Iyengar, J., Ed. and M. Thomson, Ed., "QUIC: A UDP-Based
              Multiplexed and Secure Transport", RFC 9000,
              DOI 10.17487/RFC9000, May 2021,
              <https://www.rfc-editor.org/info/rfc9000>.

Appendix A.  Acknowledgements

   This document is inspired by discussion by many people across HTTP,
   QUIC and MASQUE WGs.

Author's Address

   Lucas Pardue
   Cloudflare

   Email: lucaspardue.24.7@gmail.com

















Pardue                   Expires 14 January 2022                [Page 5]