Internet-Draft Advertising WebSockets support in HTTPSR March 2023
Damjanovic Expires 11 September 2023 [Page]
Workgroup:
HTTP
Internet-Draft:
draft-damjanovic-websockets-https-rr-01
Published:
Intended Status:
Informational
Expires:
Author:
D. Damjanovic
Microsoft

Advertising the WebSockets support in the HTTPS resource record

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.

Table of Contents

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.

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].

6. IANA Considerations

This specification adds the following entry to the Service Parameter Keys (SvcParamKeys) registry:

Table 1
Number Name Meaning Format Reference
XX wss Support for WebSockets over HTTP/2 and HTTP/3 (This document) Section 3

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, , <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, , <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, , <https://www.rfc-editor.org/rfc/rfc8174>.
[RFC8441]
McManus, P., "Bootstrapping WebSockets with HTTP/2", RFC 8441, DOI 10.17487/RFC8441, , <https://www.rfc-editor.org/rfc/rfc8441>.
[RFC9113]
Thomson, M., Ed. and C. Benfield, Ed., "HTTP/2", RFC 9113, DOI 10.17487/RFC9113, , <https://www.rfc-editor.org/rfc/rfc9113>.
[RFC9114]
Bishop, M., Ed., "HTTP/3", RFC 9114, DOI 10.17487/RFC9114, , <https://www.rfc-editor.org/rfc/rfc9114>.
[RFC9220]
Hamilton, R., "Bootstrapping WebSockets with HTTP/3", RFC 9220, DOI 10.17487/RFC9220, , <https://www.rfc-editor.org/rfc/rfc9220>.

Acknowledgments

Author's Address

Dragana Damjanovic
Microsoft