Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

docs: unhiding HTTP/3 and adding docs #15926

Merged
merged 27 commits into from
May 7, 2021
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion api/envoy/config/listener/v3/udp_listener_config.proto
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ message UdpListenerConfig {
// Configuration for QUIC protocol. If empty, QUIC will not be enabled on this listener. Set
// to the default object to enable QUIC without modifying any additional options.
//
// .. note::
// .. warning::
// QUIC support is currently alpha and should be used with caution.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

im wondering if this note should be a warning - and also thinking it might be better placed in docs/root/intro/arch_overview/http/http3.rst as its linked to from various places - feels a bit arbitrary to add it to one proto

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I lean towards the API because I think folks will actually read it here, where I'm less confident of folks reading the docs. Happy to make it a warning through.

Copy link
Member

@phlax phlax May 6, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

im wondering if this should make use of the experimental annotation that has just been added

agreed that there needs to be a warning here - but i would put the fuller explanation in the ref docs and point to that - as is done in most of the the api protos - mho

//
// For known outstanding issues before Envoy QUIC support is GA, issues
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ option (udpa.annotations.file_status).package_version_status = ACTIVE;
// [#next-free-field: 6]
message HttpProtocolOptions {
// If this is used, the cluster will only operate on one of the possible upstream protocols.
// Note that HTTP/2 or above should generally be used for upstream clusters doing gRPC.
// Note that HTTP/2 or above should generally be used for upstream gRPC clusters.
message ExplicitHttpConfig {
oneof protocol_config {
option (validate.required) = true;
Expand All @@ -68,7 +68,7 @@ message HttpProtocolOptions {

config.core.v3.Http2ProtocolOptions http2_protocol_options = 2;

// .. note::
// .. warning::
// QUIC support is currently alpha and should be used with caution.
//
// See comments :ref:`here <envoy_v3_api_field_config.listener.v3.UdpListenerConfig.quic_options>`
Expand All @@ -84,7 +84,7 @@ message HttpProtocolOptions {

config.core.v3.Http2ProtocolOptions http2_protocol_options = 2;

// .. note::
// .. warning::
// QUIC support is currently alpha and should be used with caution.
//
// See comments :ref:`here <envoy_v3_api_field_config.listener.v3.UdpListenerConfig.quic_options>`
Expand Down Expand Up @@ -112,7 +112,7 @@ message HttpProtocolOptions {
// See :ref:`here <arch_overview_http3_upstream>` for more information on
// when HTTP/3 will be used, and when Envoy will fail over to TCP.
//
// .. note::
// .. warning::
// QUIC support is currently alpha and should be used with caution.
// AutoHttpConfig config is undergoing especially rapid change and as it
// is alpha is not guaranteed to be API-stable.
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion docs/root/configuration/http/http_filters/lua_filter.rst
Original file line number Diff line number Diff line change
Expand Up @@ -659,7 +659,7 @@ protocol()
streamInfo:protocol()

Returns the string representation of :repo:`HTTP protocol <include/envoy/http/protocol.h>`
used by the current request. The possible values are: *HTTP/1.0*, *HTTP/1.1*, *HTTP/2* and *HTTP/3*.
used by the current request. The possible values are: ``HTTP/1.0``, ``HTTP/1.1``, ``HTTP/2`` and ``HTTP/3*``.

downstreamLocalAddress()
^^^^^^^^^^^^^^^^^^^^^^^^
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -140,11 +140,11 @@ upstream.healthy_panic_threshold
Defaults to 50%.

upstream.use_http2
Whether the cluster uses *http2* if configured in `HttpProtocolOptions <envoy_v3_msg_config.upstreams.http.v3.HttpProtocolOptions>`.
Whether the cluster uses ``HTTP/2`` if configured in `HttpProtocolOptions <envoy_v3_msg_config.upstreams.http.v3.HttpProtocolOptions>`.
Set to 0 to disable HTTP/2 even if the feature is configured. Defaults to enabled.

upstream.use_http3
Whether the cluster uses *http3* if configured in `HttpProtocolOptions <envoy_v3_msg_config.upstreams.http.v3.HttpProtocolOptions>`.
Whether the cluster uses ``HTTP/3`` if configured in `HttpProtocolOptions <envoy_v3_msg_config.upstreams.http.v3.HttpProtocolOptions>`.
Set to 0 to disable HTTP/3 even if the feature is configured. Defaults to enabled.


Expand Down
2 changes: 1 addition & 1 deletion docs/root/faq/configuration/timeouts.rst
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ context request/stream is interchangeable.
is the amount of time that the connection manager will allow a stream to exist with no upstream
or downstream activity. The default stream idle timeout is *5 minutes*. This timeout is strongly
recommended for all requests (not just streaming requests/responses) as it additionally defends
against a peer that does not open stream window once an entire response has been buffered
against a peer that does not open the stream window once an entire response has been buffered
to be sent to a downstream client.
* The HTTP protocol :ref:`max_stream_duration <envoy_v3_api_field_config.core.v3.HttpProtocolOptions.max_stream_duration>`
is defined in a generic message used by the HTTP connection manager. The max stream duration is the
Expand Down
9 changes: 6 additions & 3 deletions docs/root/intro/arch_overview/http/http3.rst
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
.. _arch_overview_http3:

phlax marked this conversation as resolved.
Show resolved Hide resolved
HTTP3 overview
==============

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

whatever we keep in the api docs - i think a warning is warranted here too

HTTP3 downstream
================
----------------

HTTP/3 downstream support is still in Alpha, and should be used with caution.
Outstanding issues required for HTTP/3 to go GA can be found
Expand All @@ -14,7 +17,7 @@ ensuring the downstream transport socket is a QuicDownstreamTransport.
See example :repo:`downstream HTTP/3 configuration </configs/envoyproxy_io_proxy_http3_downstream.template.yaml1>` for example configuration.

Note that the example configuration includes both a TCP and a UDP listener, and the TCP
listener is advertising http/3 support via an alt-svc header. Advertising HTTP/3 is not necessary for
listener is advertising http/3 support via an ``alt-svc header``. Advertising HTTP/3 is not necessary for
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i think the backticks should just be around alt-svc as that is the literal part - my rule of thumb ~is "should it be translated" if we were translating the docs

in-house deployments where HTTP/3 is explicitly configured, but is needed for internet facing deployments
where TCP is the default, and clients such as Chrome will only attempt HTTP/3 if it is explicitly advertised.

Expand All @@ -24,7 +27,7 @@ use BPF by default if multiple worker threads are configured, but may require ro
(e.g. sudo setcap cap_bpf+ep). Envoy will log a warning on start-up if BPF is attempted and fails.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe also worth to mention that if BPF is not supported by the platform and multiple worker threads are configured, Envoy will route packets across workers by itself and log a warning of performance degrading, or something similar.


HTTP3 upstream
===============
--------------

HTTP/3 upstream support is still in Alpha, and should be used with caution.
Outstanding issues required for HTTP/3 to go GA can be found
Expand Down
2 changes: 1 addition & 1 deletion docs/root/intro/deployment_types/service_to_service.rst
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ Service to service egress listener
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

This is the port used by applications to talk to other services in the infrastructure. For example,
*http://localhost:9001*. HTTP and gRPC requests use the HTTP/1.1 *host* header or the HTTP/2 or HTTP/3
http://localhost:9001. HTTP and gRPC requests use the HTTP/1.1 *host* header or the HTTP/2 or HTTP/3
*:authority* header to indicate which remote cluster the request is destined for. Envoy handles
service discovery, load balancing, rate limiting, etc. depending on the details in the
configuration. Services only need to know about the local Envoy and do not need to concern
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.