draft-kazuho-httpbis-priority-01.txt   draft-kazuho-httpbis-priority-02.txt 
HTTP K. Oku HTTP K. Oku
Internet-Draft Fastly Internet-Draft Fastly
Intended status: Standards Track L. Pardue Intended status: Standards Track L. Pardue
Expires: January 22, 2020 Cloudflare Expires: January 24, 2020 Cloudflare
July 21, 2019 July 23, 2019
The Priority HTTP Header Field The Priority HTTP Header Field
draft-kazuho-httpbis-priority-01 draft-kazuho-httpbis-priority-02
Abstract Abstract
This document describes the Priority HTTP header field. This header This document describes the Priority HTTP header field. This header
field can be used by endpoints to specify the absolute precedence of field can be used by endpoints to specify the absolute precedence of
an HTTP response in an HTTP-version-independent way. an HTTP response in an HTTP-version-independent way.
Status of This Memo Status of This Memo
This Internet-Draft is submitted in full conformance with the This Internet-Draft is submitted in full conformance with the
skipping to change at page 1, line 33 skipping to change at page 1, line 33
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/. Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on January 22, 2020. This Internet-Draft will expire on January 24, 2020.
Copyright Notice Copyright Notice
Copyright (c) 2019 IETF Trust and the persons identified as the Copyright (c) 2019 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(https://trustee.ietf.org/license-info) in effect on the date of (https://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
skipping to change at page 2, line 22 skipping to change at page 2, line 22
2.1.2. default . . . . . . . . . . . . . . . . . . . . . . . 5 2.1.2. default . . . . . . . . . . . . . . . . . . . . . . . 5
2.1.3. supplementary . . . . . . . . . . . . . . . . . . . . 5 2.1.3. supplementary . . . . . . . . . . . . . . . . . . . . 5
2.1.4. background . . . . . . . . . . . . . . . . . . . . . 6 2.1.4. background . . . . . . . . . . . . . . . . . . . . . 6
2.2. progressive . . . . . . . . . . . . . . . . . . . . . . . 6 2.2. progressive . . . . . . . . . . . . . . . . . . . . . . . 6
3. Merging Client- and Server-Driven Parameters . . . . . . . . 7 3. Merging Client- and Server-Driven Parameters . . . . . . . . 7
4. Coexistence with HTTP/2 Priorities . . . . . . . . . . . . . 7 4. Coexistence with HTTP/2 Priorities . . . . . . . . . . . . . 7
4.1. The SETTINGS_HEADER_BASED_PRIORITY SETTINGS Parameter . . 8 4.1. The SETTINGS_HEADER_BASED_PRIORITY SETTINGS Parameter . . 8
5. Considerations . . . . . . . . . . . . . . . . . . . . . . . 8 5. Considerations . . . . . . . . . . . . . . . . . . . . . . . 8
5.1. Why use an End-to-End Header Field? . . . . . . . . . . . 8 5.1. Why use an End-to-End Header Field? . . . . . . . . . . . 8
5.2. Why do Urgencies Have Meanings? . . . . . . . . . . . . . 9 5.2. Why do Urgencies Have Meanings? . . . . . . . . . . . . . 9
6. Security Considerations . . . . . . . . . . . . . . . . . . . 9 5.3. Reprioritization . . . . . . . . . . . . . . . . . . . . 9
7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 9 6. Security Considerations . . . . . . . . . . . . . . . . . . . 10
8. References . . . . . . . . . . . . . . . . . . . . . . . . . 10 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 10
8.1. Normative References . . . . . . . . . . . . . . . . . . 10 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 11
8.2. Informative References . . . . . . . . . . . . . . . . . 10 8.1. Normative References . . . . . . . . . . . . . . . . . . 11
Appendix A. Acknowledgements . . . . . . . . . . . . . . . . . . 11 8.2. Informative References . . . . . . . . . . . . . . . . . 11
Appendix B. Change Log . . . . . . . . . . . . . . . . . . . . . 11 Appendix A. Acknowledgements . . . . . . . . . . . . . . . . . . 12
B.1. Since draft-kazuho-httpbis-priority-00 . . . . . . . . . 11 Appendix B. Change Log . . . . . . . . . . . . . . . . . . . . . 12
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 11 B.1. Since draft-kazuho-httpbis-priority-01 . . . . . . . . . 12
B.2. Since draft-kazuho-httpbis-priority-00 . . . . . . . . . 12
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 12
1. Introduction 1. Introduction
It is common for an HTTP ([RFC7230]) resource representation to have It is common for an HTTP ([RFC7230]) resource representation to have
relationships to one or more other resources. Clients will often relationships to one or more other resources. Clients will often
discover these relationships while processing a retrieved discover these relationships while processing a retrieved
representation, leading to further retrieval requests. Meanwhile, representation, leading to further retrieval requests. Meanwhile,
the nature of the relationship determines whether the client is the nature of the relationship determines whether the client is
blocked from continuing to process locally available resources. For blocked from continuing to process locally available resources. For
example, visual rendering of an HTML document could be blocked by the example, visual rendering of an HTML document could be blocked by the
skipping to change at page 9, line 40 skipping to change at page 9, line 40
Or, a graphical user-agent could send a "visible" parameter to Or, a graphical user-agent could send a "visible" parameter to
indicate if the resource being requested is within the viewport. indicate if the resource being requested is within the viewport.
A server can combine the hints provided in the Priority header field A server can combine the hints provided in the Priority header field
with other information in order to improve the prioritization of with other information in order to improve the prioritization of
responses. For example, a server that receives requests for a font responses. For example, a server that receives requests for a font
[RFC8081] and images with the same urgency might give higher [RFC8081] and images with the same urgency might give higher
precedence to the font, so that a visual client can render textual precedence to the font, so that a visual client can render textual
information at an early moment. information at an early moment.
5.3. Reprioritization
Once a client sends a request, it cannot reprioritize the
corresponding response by using the Priority header field. This is
because an HTTP header field can only be sent as part of an HTTP
message.
Therefore, to support reprioritization, it is necessary to define a
HTTP-version-dependent mechanism for transmitting the priority
parameters.
One approach that we can use in HTTP/2 ([RFC7540]) is to use a frame
that carries the priority parameters.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+---------------------------------------------------------------+
|R| Stream ID (31) |
+---------------------------------------------------------------+
| Priority Field Value (*) ...
+---------------------------------------------------------------+
Figure 1: Reprioritization frame payload
The Reprioritization frame would be sent on stream 0. This frame
carries the stream ID of the response that is being reprioritized,
and the updated priority in ASCII text, using the same
represententation as that of the Priority header field value.
As an example, a web browser might issue a prefetch request for an
HTML on stream 31, with the urgency parameter of the Priority request
header field set to "background". Then, when the user navigates to
the HTML while prefetch is in action, it would send a
reprioritization frame with the stream ID set to 31, and the priority
field value set to "urgency=0".
6. Security Considerations 6. Security Considerations
TBD TBD
7. IANA Considerations 7. IANA Considerations
This specification registers the following entry in the Permanent This specification registers the following entry in the Permanent
Message Header Field Names registry established by [RFC3864]: Message Header Field Names registry established by [RFC3864]:
Header field name: Priority Header field name: Priority
skipping to change at page 11, line 38 skipping to change at page 12, line 24
representing priorities in http://tools.ietf.org/agenda/83/slides/ representing priorities in http://tools.ietf.org/agenda/83/slides/
slides-83-httpbis-5.pdf [1]. In https://github.com/pmeenan/http3- slides-83-httpbis-5.pdf [1]. In https://github.com/pmeenan/http3-
prioritization-proposal [2], Patrick Meenan advocates for prioritization-proposal [2], Patrick Meenan advocates for
representing the priorities using a tuple of urgency and concurrency. representing the priorities using a tuple of urgency and concurrency.
Many thanks to Robin Marx, Patrick Meenan and Ian Swett for their Many thanks to Robin Marx, Patrick Meenan and Ian Swett for their
feedback. feedback.
Appendix B. Change Log Appendix B. Change Log
B.1. Since draft-kazuho-httpbis-priority-00 B.1. Since draft-kazuho-httpbis-priority-01
o Explain how reprioritization might be supported.
B.2. Since draft-kazuho-httpbis-priority-00
o Expand urgency levels from 3 to 8. o Expand urgency levels from 3 to 8.
Authors' Addresses Authors' Addresses
Kazuho Oku Kazuho Oku
Fastly Fastly
Email: kazuhooku@gmail.com Email: kazuhooku@gmail.com
Lucas Pardue Lucas Pardue
Cloudflare Cloudflare
Email: lucaspardue.24.7@gmail.com Email: lucaspardue.24.7@gmail.com
 End of changes. 7 change blocks. 
14 lines changed or deleted 57 lines changed or added

This html diff was produced by rfcdiff 1.45. The latest version is available from http://tools.ietf.org/tools/rfcdiff/