| draft-ietf-httpbis-origin-h3-03.txt | draft-ietf-httpbis-origin-h3-latest.txt | |||
|---|---|---|---|---|
| HTTPbis Working Group M. Bishop | Internet Engineering Task Force (IETF) M. Bishop | |||
| Internet-Draft Akamai | Request for Comments: 9412 Akamai | |||
| Intended status: Standards Track January 24, 2023 | Category: Standards Track June 2023 | |||
| Expires: July 28, 2023 | ISSN: 2070-1721 | |||
| The ORIGIN Extension in HTTP/3 | The ORIGIN Extension in HTTP/3 | |||
| draft-ietf-httpbis-origin-h3-03 | ||||
| Abstract | Abstract | |||
| The ORIGIN frame for HTTP/2 is equally applicable to HTTP/3, but | The ORIGIN frame for HTTP/2 is equally applicable to HTTP/3, but it | |||
| needs to be separately registered. This document describes the | needs to be separately registered. This document describes the | |||
| ORIGIN frame for HTTP/3. | ORIGIN frame for HTTP/3. | |||
| Status of This Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This is an Internet Standards Track document. | |||
| 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 | This document is a product of the Internet Engineering Task Force | |||
| and may be updated, replaced, or obsoleted by other documents at any | (IETF). It represents the consensus of the IETF community. It has | |||
| time. It is inappropriate to use Internet-Drafts as reference | received public review and has been approved for publication by the | |||
| material or to cite them other than as "work in progress." | Internet Engineering Steering Group (IESG). Further information on | |||
| Internet Standards is available in Section 2 of RFC 7841. | ||||
| This Internet-Draft will expire on July 28, 2023. | Information about the current status of this document, any errata, | |||
| and how to provide feedback on it may be obtained at | ||||
| https://www.rfc-editor.org/info/rfc9412. | ||||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2023 IETF Trust and the persons identified as the | Copyright (c) 2023 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 12 ¶ | skipping to change at page 2, line 12 ¶ | |||
| the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
| described in the Simplified BSD License. | described in the Simplified BSD License. | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
| 1.1. Notational Conventions . . . . . . . . . . . . . . . . . 2 | 1.1. Notational Conventions . . . . . . . . . . . . . . . . . 2 | |||
| 2. The ORIGIN HTTP/3 Frame . . . . . . . . . . . . . . . . . . . 2 | 2. The ORIGIN HTTP/3 Frame . . . . . . . . . . . . . . . . . . . 2 | |||
| 2.1. Frame Layout . . . . . . . . . . . . . . . . . . . . . . 3 | 2.1. Frame Layout . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 3. Security Considerations . . . . . . . . . . . . . . . . . . . 3 | 3. Security Considerations . . . . . . . . . . . . . . . . . . . 3 | |||
| 4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 3 | 4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 5. References . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 5. References . . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 5.1. Normative References . . . . . . . . . . . . . . . . . . 4 | 5.1. Normative References . . . . . . . . . . . . . . . . . . 4 | |||
| 5.2. Informative References . . . . . . . . . . . . . . . . . 4 | 5.2. Informative References . . . . . . . . . . . . . . . . . 5 | |||
| Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 5 | Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 1. Introduction | 1. Introduction | |||
| Existing RFCs define extensions to HTTP/2 [HTTP2] which remain useful | Existing RFCs define extensions to HTTP/2 [RFC9113] that remain | |||
| in HTTP/3. Appendix A.2.3 of [HTTP3] describes the required updates | useful in HTTP/3. Appendix A.2 of [RFC9114] describes the required | |||
| for HTTP/2 frames to be used with HTTP/3. | updates for HTTP/2 frames to be used with HTTP/3. | |||
| [ORIGIN] defines the HTTP/2 ORIGIN frame, which indicates what | [ORIGIN] defines the HTTP/2 ORIGIN frame, which indicates what | |||
| origins are available on a given connection. It defines a single | origins are available on a given connection. It defines a single | |||
| HTTP/2 frame type. | HTTP/2 frame type. | |||
| 1.1. Notational Conventions | 1.1. Notational Conventions | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
| "OPTIONAL" in this document are to be interpreted as described in | "OPTIONAL" in this document are to be interpreted as described in | |||
| BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
| capitals, as shown here. | capitals, as shown here. | |||
| Frame diagrams in this document use the format defined in Section 1.3 | The frame diagram in this document uses the format defined in | |||
| of [QUIC-TRANSPORT] to illustrate the order and size of fields. | Section 1.3 of [QUIC-TRANSPORT] to illustrate the order and size of | |||
| fields. | ||||
| 2. The ORIGIN HTTP/3 Frame | 2. The ORIGIN HTTP/3 Frame | |||
| The ORIGIN HTTP/3 frame allows a server to indicate what origin(s) | The ORIGIN HTTP/3 frame allows a server to indicate what origin or | |||
| ([RFC6454]) the server would like the client to consider as members | origins [RFC6454] the server would like the client to consider as one | |||
| of the Origin Set (Section 2.3 of [ORIGIN]) for the connection within | or more members of the Origin Set (Section 2.3 of [ORIGIN]) for the | |||
| which it occurs. | connection within which it occurs. | |||
| The semantics of the frame payload are identical to those of the | The semantics of the frame payload are identical to those of the | |||
| HTTP/2 frame defined in [ORIGIN]. Where HTTP/2 reserves Stream 0 for | HTTP/2 frame defined in [ORIGIN]. Where HTTP/2 reserves stream 0 for | |||
| frames related to the state of the connection, HTTP/3 defines a pair | frames related to the state of the connection, HTTP/3 defines a pair | |||
| of unidirectional streams called "control streams" for this purpose. | of unidirectional streams called "control streams" for this purpose. | |||
| Where [ORIGIN] indicates that the ORIGIN frame should be sent on | ||||
| Stream 0, this should be interpreted to mean the HTTP/3 control | Where [ORIGIN] indicates that the ORIGIN frame is sent on stream 0, | |||
| stream. The ORIGIN frame is sent from servers to clients on the | this should be interpreted to mean the HTTP/3 control stream: that | |||
| server's control stream. | is, the ORIGIN frame is sent from servers to clients on the server's | |||
| control stream. | ||||
| HTTP/3 does not define a Flags field in the generic frame layout. As | HTTP/3 does not define a Flags field in the generic frame layout. As | |||
| no flags have been defined for the ORIGIN frame, this specification | no flags have been defined for the ORIGIN frame, this specification | |||
| does not define a mechanism for communicating such flags in HTTP/3. | does not define a mechanism for communicating such flags in HTTP/3. | |||
| 2.1. Frame Layout | 2.1. Frame Layout | |||
| The ORIGIN frame has a nearly identical layout to that used in | The ORIGIN frame has a layout that is nearly identical to the layout | |||
| HTTP/2, restated here for clarity. The ORIGIN frame type is 0xc | used in HTTP/2; the information is restated here for clarity. The | |||
| (decimal 12) as in HTTP/2. The payload contains zero or more | ORIGIN frame type is 0x0c (decimal 12), as in HTTP/2. The payload | |||
| instances of the Origin-Entry field. | contains zero or more instances of the Origin-Entry field. | |||
| HTTP/3 Origin-Entry { | HTTP/3 Origin-Entry { | |||
| Origin-Len (16), | Origin-Len (16), | |||
| ASCII-Origin (..), | ASCII-Origin (..), | |||
| } | } | |||
| HTTP/3 ORIGIN Frame { | HTTP/3 ORIGIN Frame { | |||
| Type (i) = 0x0c, | Type (i) = 0x0c, | |||
| Length (i), | Length (i), | |||
| Origin-Entry (..) ..., | Origin-Entry (..) ..., | |||
| skipping to change at page 3, line 44 ¶ | skipping to change at page 3, line 47 ¶ | |||
| Origin-Len: An unsigned, 16-bit integer indicating the length, in | Origin-Len: An unsigned, 16-bit integer indicating the length, in | |||
| octets, of the ASCII-Origin field. | octets, of the ASCII-Origin field. | |||
| ASCII-Origin: An OPTIONAL sequence of characters containing the | ASCII-Origin: An OPTIONAL sequence of characters containing the | |||
| ASCII serialization of an origin ([RFC6454], Section 6.2) that the | ASCII serialization of an origin ([RFC6454], Section 6.2) that the | |||
| sender asserts this connection is or could be authoritative for. | sender asserts this connection is or could be authoritative for. | |||
| 3. Security Considerations | 3. Security Considerations | |||
| This document introduces no new security considerations beyond those | This document introduces no new security considerations beyond those | |||
| discussed in [ORIGIN] and [HTTP3]. | discussed in [ORIGIN] and [RFC9114]. | |||
| 4. IANA Considerations | 4. IANA Considerations | |||
| This document registers a frame type in the "HTTP/3 Frame Type" | This document registers a frame type in the "HTTP/3 Frame Types" | |||
| registry ([HTTP3]). | registry defined by [RFC9114], located at | |||
| <https://www.iana.org/assignments/http3-parameters/>. | ||||
| +------------+-------+---------------+ | Value: 0x0c | |||
| | Frame Type | Value | Specification | | ||||
| +------------+-------+---------------+ | ||||
| | ORIGIN | 0xc | Section 2 | | ||||
| +------------+-------+---------------+ | ||||
| Table 1: Registered HTTP/3 Frame Types | Frame Type: ORIGIN | |||
| 5. References | Status: permanent | |||
| 5.1. Normative References | Reference: Section 2 | |||
| [HTTP2] Thomson, M., Ed. and C. Benfield, Ed., "HTTP/2", RFC 9113, | Date: 2023-03-14 | |||
| DOI 10.17487/RFC9113, June 2022, | ||||
| <https://www.rfc-editor.org/info/rfc9113>. | ||||
| [HTTP3] Bishop, M., Ed., "HTTP/3", RFC 9114, DOI 10.17487/RFC9114, | Change Controller: IETF | |||
| June 2022, <https://www.rfc-editor.org/info/rfc9114>. | ||||
| Contact: HTTP WG <ietf-http-wg@w3.org> | ||||
| 5. References | ||||
| 5.1. Normative References | ||||
| [ORIGIN] Nottingham, M. and E. Nygren, "The ORIGIN HTTP/2 Frame", | [ORIGIN] Nottingham, M. and E. Nygren, "The ORIGIN HTTP/2 Frame", | |||
| RFC 8336, DOI 10.17487/RFC8336, March 2018, | RFC 8336, DOI 10.17487/RFC8336, March 2018, | |||
| <https://www.rfc-editor.org/info/rfc8336>. | <https://www.rfc-editor.org/info/rfc8336>. | |||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
| DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
| <https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
| [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
| 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | |||
| May 2017, <https://www.rfc-editor.org/info/rfc8174>. | May 2017, <https://www.rfc-editor.org/info/rfc8174>. | |||
| [RFC9113] Thomson, M., Ed. and C. Benfield, Ed., "HTTP/2", RFC 9113, | ||||
| DOI 10.17487/RFC9113, June 2022, | ||||
| <https://www.rfc-editor.org/info/rfc9113>. | ||||
| [RFC9114] Bishop, M., Ed., "HTTP/3", RFC 9114, DOI 10.17487/RFC9114, | ||||
| June 2022, <https://www.rfc-editor.org/info/rfc9114>. | ||||
| 5.2. Informative References | 5.2. Informative References | |||
| [QUIC-TRANSPORT] | [QUIC-TRANSPORT] | |||
| Iyengar, J., Ed. and M. Thomson, Ed., "QUIC: A UDP-Based | Iyengar, J., Ed. and M. Thomson, Ed., "QUIC: A UDP-Based | |||
| Multiplexed and Secure Transport", RFC 9000, | Multiplexed and Secure Transport", RFC 9000, | |||
| DOI 10.17487/RFC9000, May 2021, | DOI 10.17487/RFC9000, May 2021, | |||
| <https://www.rfc-editor.org/info/rfc9000>. | <https://www.rfc-editor.org/info/rfc9000>. | |||
| [RFC6454] Barth, A., "The Web Origin Concept", RFC 6454, | [RFC6454] Barth, A., "The Web Origin Concept", RFC 6454, | |||
| DOI 10.17487/RFC6454, December 2011, | DOI 10.17487/RFC6454, December 2011, | |||
| End of changes. 23 change blocks. | ||||
| 54 lines changed or deleted | 59 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||