Internet DRAFT - draft-damjanovic-websockets-https-rr
draft-damjanovic-websockets-https-rr
HTTP D. Damjanovic
Internet-Draft Microsoft
Intended status: Informational 10 March 2023
Expires: 11 September 2023
Advertising the WebSockets support in the HTTPS resource record
draft-damjanovic-websockets-https-rr-01
Abstract
This specification introduces a mechanism to advertise the support
for WebSockets over different HTTP versions using HTTPS resource
records. This mechanism allows clients to avoid delays in
establishing WebSocket connections using HTTP-based advertisement for
WebSocket support.
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 11 September 2023.
Copyright Notice
Copyright (c) 2023 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 (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 Revised BSD License text as
described in Section 4.e of the Trust Legal Provisions and are
provided without warranty as described in the Revised BSD License.
Damjanovic Expires 11 September 2023 [Page 1]
Internet-Draft Advertising WebSockets support in HTTPSR March 2023
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
2. Conventions and Definitions . . . . . . . . . . . . . . . . . 2
3. Extending HTTPS DNS resource record . . . . . . . . . . . . . 3
4. The Client Behavior . . . . . . . . . . . . . . . . . . . . . 3
5. Security Considerations . . . . . . . . . . . . . . . . . . . 3
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 4
7. Normative References . . . . . . . . . . . . . . . . . . . . 4
Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 5
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 5
1. Introduction
The mechanisms for running the WebSocket Protocol over a single
stream of an HTTP/2 and HTTP/3 connection are defined in [RFC8441]
and [RFC9220]. For bootstrapping WebSockets from HTTP/2 and HTTP/3
the extended CONNECT is used. The support for the extended CONNECT
is advertised using HTTP/2 and HTTP/3 settings (see [RFC9113] and
[RFC9114]). A client needs to establish an HTTP/2 or HTTP/3
connection and wait for the setting frames to be exchanged to
discover whether it can try to use WebSockets over HTTP/2 or HTTP/3.
The request still may be rejected because the settings advertise the
support for the extended CONNECT but not explicitly the support for
the WebSockets Protocol. The clients may choose to attempt HTTP/2 or
HTTP/3 first and fall back to HTTP/1.1 or HTTP/2 if the WebSocket
Protocol is not supported. This may add a delay. The other option
is to try to use WebSockets over HTTP/2 or HTTP/3 only on connections
that are already established and where it is known the extended
CONNECT is supported. This approach leads to WebSockets over HTTP/2
or HTTP/3 being used less frequently.
This specification adds a way to advertise the support for WebSockets
over HTTP versions using HTTPS resource record [HTTPSRR]. The client
may choose to try using an HTTP/2 or HTTP/3 connection only if the
support for the protocol is advertised. This will eliminate the
delay in most cases and increase usage of WebSockets over HTTP/2 and
HTTP/3.
2. Conventions and Definitions
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.
Damjanovic Expires 11 September 2023 [Page 2]
Internet-Draft Advertising WebSockets support in HTTPSR March 2023
3. Extending HTTPS DNS resource record
This specification introduces the "wss" SvcParamKey (see [HTTPSRR])
that indicates a set of HTTP versions that support the WebSocket
Protocol on the particular service endpoint. The HTTP versions are
identified using alpn-id specified in [HTTPSRR].
The presentation value SHALL be a comma-separated list of one or more
alpn-ids. The wire format values for the "wss" SvcParamKey consists
of at least one alpn-id prefixed by its length as a single octet, and
these length-value pairs are concatenated to form the SvcParamValue.
These pairs MUST exactly fill the SvcParamValue; otherwise, the
SvcParamValue is malformed.
All alpn-ids listed in the "wss" MUST also be present in the "alpn"
key.
example.net IN HTTPS 1 . alpn=h2,h3 wss=h2,h3
4. The Client Behavior
Upon receiving an HTTPS RR, a client should use the "wss" SvcParamKey
as an indication of whether a particular service endpoint supports
the WebSocket Protocol over HTTP /2 or HTTP/3.
If the key is present, that is a strong indication that the service
endpoint supports WebSockets over HTTP/2 or HTTP/3 protocol and the
client can attempt using WebSockets over HTTP/2 or HTTP/3 protocol.
Due to difficulties of deployments, the client may discover that the
feature, although advertised, is not supported and in this case, the
client should fall back to using HTTP/1.1.
If the "no-default-alpn" key is present, the WebSocket Protocol over
HTTP/1.1 is not supported by the endpoint. Otherwise, it might be
supported whether the "wss" key is present or not.
If the "wss" key is not present, the client should not try using
WebSockets over HTTP/2 and HTTP/3, and should directly use HTTP/1.1.
5. Security Considerations
This specification only adds a new SvcParamKey that is a hint of
whether the WebSockets over HTTP/2 and HTTP/3 are supported.
Therefore, it does not introduce additional security considerations
beyond one described in [HTTPSRR], [RFC8441] and [RFC9220].
Damjanovic Expires 11 September 2023 [Page 3]
Internet-Draft Advertising WebSockets support in HTTPSR March 2023
6. IANA Considerations
This specification adds the following entry to the Service Parameter
Keys (SvcParamKeys) registry:
+========+======+========================+==================+
| Number | Name | Meaning | Format Reference |
+========+======+========================+==================+
| XX | wss | Support for WebSockets | (This document) |
| | | over HTTP/2 and HTTP/3 | Section 3 |
+--------+------+------------------------+------------------+
Table 1
7. Normative References
[HTTPSRR] Schwartz, B. M., Bishop, M., and E. Nygren, "Service
binding and parameter specification via the DNS (DNS SVCB
and HTTPS RRs)", Work in Progress, Internet-Draft, draft-
ietf-dnsop-svcb-https-11, 11 October 2022,
<https://datatracker.ietf.org/doc/html/draft-ietf-dnsop-
svcb-https-11>.
[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/rfc/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/rfc/rfc8174>.
[RFC8441] McManus, P., "Bootstrapping WebSockets with HTTP/2",
RFC 8441, DOI 10.17487/RFC8441, September 2018,
<https://www.rfc-editor.org/rfc/rfc8441>.
[RFC9113] Thomson, M., Ed. and C. Benfield, Ed., "HTTP/2", RFC 9113,
DOI 10.17487/RFC9113, June 2022,
<https://www.rfc-editor.org/rfc/rfc9113>.
[RFC9114] Bishop, M., Ed., "HTTP/3", RFC 9114, DOI 10.17487/RFC9114,
June 2022, <https://www.rfc-editor.org/rfc/rfc9114>.
[RFC9220] Hamilton, R., "Bootstrapping WebSockets with HTTP/3",
RFC 9220, DOI 10.17487/RFC9220, June 2022,
<https://www.rfc-editor.org/rfc/rfc9220>.
Damjanovic Expires 11 September 2023 [Page 4]
Internet-Draft Advertising WebSockets support in HTTPSR March 2023
Acknowledgments
Author's Address
Dragana Damjanovic
Microsoft
Email: dragana.damjano@gmail.com
Damjanovic Expires 11 September 2023 [Page 5]