From e2b414923145796aa33852c36586eec967cb5ad8 Mon Sep 17 00:00:00 2001 From: Martin Thomson Date: Thu, 2 Sep 2021 10:35:51 +1000 Subject: [PATCH 1/2] Remove redefinition of IANA registries Better to just refer back to these. Closes #960. --- draft-ietf-httpbis-http2bis.xml | 460 +------------------------------- 1 file changed, 8 insertions(+), 452 deletions(-) diff --git a/draft-ietf-httpbis-http2bis.xml b/draft-ietf-httpbis-http2bis.xml index f999ed52..ea99a3d3 100644 --- a/draft-ietf-httpbis-http2bis.xml +++ b/draft-ietf-httpbis-http2bis.xml @@ -1286,8 +1286,8 @@ HTTP Frame { Extensions are permitted to use new frame types, new settings, or new error - codes. Registries are established for managing these extension points: frame types, settings, and - error codes. + codes. Registries for managing these extension points are defined in . Implementations MUST ignore unknown or unsupported values in all extensible protocol @@ -3999,417 +3999,15 @@ cookie: e=f
IANA Considerations - A string for identifying HTTP/2 is entered into the "Application-Layer Protocol Negotiation - (ALPN) Protocol IDs" registry established in . + This revision of the document marks the HTTP2-Settings header field and the + h2c Upgrade token, both defined in , as obsolete. - This document establishes a registry for frame types, settings, and error codes. These new - registries appear in the new "Hypertext Transfer Protocol version 2 (HTTP/2)" section. + registered the h2 and h2c ALPN + identifiers along with the PRI HTTP method. RFC 7540 also established a registry + for frame types, settings, and error codes. These registrations and registries apply to + HTTP/2, but are not redefined in this document. - - This revision of the document marks the HTTP2-Settings header field registered in - obsolete. - - - This document registers the PRI method for use in HTTP to avoid - collisions with the connection preface. - -
- Registration of HTTP/2 Identification Strings - - This document creates two registrations for the identification of HTTP/2 (see ) in the - "Application-Layer Protocol Negotiation (ALPN) Protocol IDs" registry established in . - - - The "h2" string identifies HTTP/2 when used over TLS: - -
-
Protocol:
-
HTTP/2 over TLS
-
Identification Sequence:
-
0x68 0x32 ("h2")
-
Specification:
-
This document
-
- - The "h2c" string identifies HTTP/2 when used over cleartext TCP: - -
-
Protocol:
-
HTTP/2 over TCP
-
Identification Sequence:
-
0x68 0x32 0x63 ("h2c")
-
Specification:
-
This document
-
-
-
- Frame Type Registry - - This document establishes a registry for HTTP/2 frame type codes. The "HTTP/2 Frame Type" - registry manages an 8-bit space. The "HTTP/2 Frame Type" registry operates under either - of the "IETF Review" () or "IESG Approval" () policies. - - - New entries in this registry require the following information: - -
-
Frame Type:
-
- A name or label for the frame type. -
-
Code:
-
- The 8-bit code assigned to the frame type. -
-
Specification:
-
- A reference to a specification that includes a description of the frame layout, its - semantics, and flags that the frame type uses, including any parts of the frame that - are conditionally present based on the value of flags. -
-
- - The entries in the following table are registered by this document. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Frame TypeCodeSection
DATA0x0 - -
HEADERS0x1 - -
PRIORITY0x2 - -
RST_STREAM0x3 - -
SETTINGS0x4 - -
PUSH_PROMISE0x5 - -
PING0x6 - -
GOAWAY0x7 - -
WINDOW_UPDATE0x8 - -
CONTINUATION0x9 - -
-
-
- Settings Registry - - This document establishes a registry for HTTP/2 settings. The "HTTP/2 Settings" registry - manages a 16-bit space. The "HTTP/2 Settings" registry operates under the "Expert Review" - policy (). - - - New registrations are advised to provide the following information: - -
-
Name:
-
- A symbolic name for the setting. Specifying a setting name is optional. -
-
Code:
-
- The 16-bit code assigned to the setting. -
-
Initial Value:
-
- An initial value for the setting. -
-
Specification:
-
- An optional reference to a specification that describes the use of the setting. -
-
- - The entries in the following table are registered by this document. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameCodeInitial ValueSpecification
HEADER_TABLE_SIZE0x14096 - -
ENABLE_PUSH0x21 - -
MAX_CONCURRENT_STREAMS0x3(infinite) - -
INITIAL_WINDOW_SIZE0x465535 - -
MAX_FRAME_SIZE0x516384 - -
MAX_HEADER_LIST_SIZE0x6(infinite) - -
-
-
- Error Code Registry - - This document establishes a registry for HTTP/2 error codes. The "HTTP/2 Error Code" - registry manages a 32-bit space. The "HTTP/2 Error Code" registry operates under the - "Expert Review" policy (). - - - Registrations for error codes are required to include a description of the error code. An - expert reviewer is advised to examine new registrations for possible duplication with - existing error codes. Use of existing registrations is to be encouraged, but not - mandated. - - - New registrations are advised to provide the following information: - -
-
Name:
-
- A name for the error code. Specifying an error code name is optional. -
-
Code:
-
- The 32-bit error code value. -
-
Description:
-
- A brief description of the error code semantics; longer if no detailed specification - is provided. -
-
Specification:
-
- An optional reference for a specification that defines the error code. -
-
- - The entries in the following table are registered by this document. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameCodeDescriptionSpecification
NO_ERROR0x0Graceful shutdown - -
PROTOCOL_ERROR0x1Protocol error detected - -
INTERNAL_ERROR0x2Implementation fault - -
FLOW_CONTROL_ERROR0x3Flow-control limits exceeded - -
SETTINGS_TIMEOUT0x4Settings not acknowledged - -
STREAM_CLOSED0x5Frame received for closed stream - -
FRAME_SIZE_ERROR0x6Frame size incorrect - -
REFUSED_STREAM0x7Stream not processed - -
CANCEL0x8Stream cancelled - -
COMPRESSION_ERROR0x9Compression state not updated - -
CONNECT_ERROR0xaTCP connection error for CONNECT method - -
ENHANCE_YOUR_CALM0xbProcessing capacity exceeded - -
INADEQUATE_SECURITY0xcNegotiated TLS parameters not acceptable - -
HTTP_1_1_REQUIRED0xdUse HTTP/1.1 for the request - -
-
HTTP2-Settings Header Field Registration @@ -4431,36 +4029,6 @@ cookie: e=f
Obsolete; see
-
- PRI Method Registration - - This section registers the PRI method in the "HTTP Method - Registry" (). - -
-
Method Name:
-
- PRI -
-
Safe:
-
- Yes -
-
Idempotent:
-
- Yes -
-
Specification document(s):
-
of this document -
-
Related information:
-
- This method is never used by an actual client. This method will appear to be used - when an HTTP/1.1 server or intermediary attempts to parse an HTTP/2 connection - preface. -
-
-
The h2c Upgrade Token @@ -4546,18 +4114,6 @@ cookie: e=f - - - Guidelines for Writing an IANA Considerations Section in RFCs - - - - - - - - - The Transport Layer Security (TLS) Protocol Version 1.2 From 1abd87eb3942d777a022c66448a73a0364a3f93c Mon Sep 17 00:00:00 2001 From: Martin Thomson Date: Fri, 3 Sep 2021 20:46:51 +1000 Subject: [PATCH 2/2] Add a (temporary) note to IANA regarding section references --- draft-ietf-httpbis-http2bis.xml | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/draft-ietf-httpbis-http2bis.xml b/draft-ietf-httpbis-http2bis.xml index ea99a3d3..dd327d25 100644 --- a/draft-ietf-httpbis-http2bis.xml +++ b/draft-ietf-httpbis-http2bis.xml @@ -328,7 +328,7 @@ protocol that does not use TLS. - Once TLS negotiation is complete, both the client and the server MUST send a connection preface. + Once TLS negotiation is complete, both the client and the server MUST send a connection preface.
@@ -339,14 +339,14 @@ A client that knows that a server supports HTTP/2 can establish a TCP connection and send - the connection preface followed by HTTP/2 frames. + the connection preface followed by HTTP/2 frames. Servers can identify these connections by the presence of the connection preface. This only affects the establishment of HTTP/2 connections over cleartext TCP; HTTP/2 connections over TLS MUST use protocol negotiation in TLS. - Likewise, the server MUST send a connection preface. + Likewise, the server MUST send a connection preface. Without additional information, prior support for HTTP/2 is not a strong signal that a @@ -355,7 +355,7 @@ clustered servers, or for network conditions to change.
-
+
HTTP/2 Connection Preface In HTTP/2, each endpoint is required to send a connection preface as a final confirmation @@ -3718,7 +3718,7 @@ cookie: e=f The cleartext version of HTTP/2 has minimal protection against cross-protocol attacks. - The connection preface contains a string that is + The connection preface contains a string that is designed to confuse HTTP/1.1 servers, but no special protection is offered for other protocols. @@ -4008,6 +4008,11 @@ cookie: e=f for frame types, settings, and error codes. These registrations and registries apply to HTTP/2, but are not redefined in this document. + + [RFC Editor: please remove this paragraph.] IANA is requested to update references in these + registries to refer to this document. The registration of the PRI method needs to + be updated to refer to ; all other section numbers have not changed. +
HTTP2-Settings Header Field Registration