overload: scale http stream idle timeout (#14155)

The connection timeout applies to the idle timeout in the common HTTP
protocol options message in the HttpConnectionManager, not to the
RouteAction idle timeout.

Signed-off-by: Alex Konradi <akonradi@google.com>

Mirrored from https://github.com/envoyproxy/envoy @ 6246920219ac0ba215bfd0b5462ef78036363b75
pull/623/head
data-plane-api(Azure Pipelines) 4 years ago
parent f014fc0ab5
commit 90b9bafe0d
  1. 4
      envoy/config/core/v3/protocol.proto
  2. 4
      envoy/config/core/v4alpha/protocol.proto
  3. 9
      envoy/config/overload/v3/overload.proto
  4. 2
      envoy/config/route/v3/route_components.proto
  5. 2
      envoy/config/route/v4alpha/route_components.proto
  6. 4
      envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.proto
  7. 4
      envoy/extensions/filters/network/http_connection_manager/v4alpha/http_connection_manager.proto

@ -77,6 +77,10 @@ message HttpProtocolOptions {
// .. warning:: // .. warning::
// Disabling this timeout has a highly likelihood of yielding connection leaks due to lost TCP // Disabling this timeout has a highly likelihood of yielding connection leaks due to lost TCP
// FIN packets, etc. // FIN packets, etc.
//
// If the :ref:`overload action <config_overload_manager_overload_actions>` "envoy.overload_actions.reduce_timeouts"
// is configured, this timeout is scaled for downstream connections according to the value for
// :ref:`HTTP_DOWNSTREAM_CONNECTION_IDLE <envoy_api_enum_value_config.overload.v3.ScaleTimersOverloadActionConfig.TimerType.HTTP_DOWNSTREAM_CONNECTION_IDLE>`.
google.protobuf.Duration idle_timeout = 1; google.protobuf.Duration idle_timeout = 1;
// The maximum duration of a connection. The duration is defined as a period since a connection // The maximum duration of a connection. The duration is defined as a period since a connection

@ -77,6 +77,10 @@ message HttpProtocolOptions {
// .. warning:: // .. warning::
// Disabling this timeout has a highly likelihood of yielding connection leaks due to lost TCP // Disabling this timeout has a highly likelihood of yielding connection leaks due to lost TCP
// FIN packets, etc. // FIN packets, etc.
//
// If the :ref:`overload action <config_overload_manager_overload_actions>` "envoy.overload_actions.reduce_timeouts"
// is configured, this timeout is scaled for downstream connections according to the value for
// :ref:`HTTP_DOWNSTREAM_CONNECTION_IDLE <envoy_api_enum_value_config.overload.v3.ScaleTimersOverloadActionConfig.TimerType.HTTP_DOWNSTREAM_CONNECTION_IDLE>`.
google.protobuf.Duration idle_timeout = 1; google.protobuf.Duration idle_timeout = 1;
// The maximum duration of a connection. The duration is defined as a period since a connection // The maximum duration of a connection. The duration is defined as a period since a connection

@ -91,8 +91,15 @@ message ScaleTimersOverloadActionConfig {
UNSPECIFIED = 0; UNSPECIFIED = 0;
// Adjusts the idle timer for downstream HTTP connections that takes effect when there are no active streams. // Adjusts the idle timer for downstream HTTP connections that takes effect when there are no active streams.
// This affects the value of :ref:`RouteAction.idle_timeout <envoy_v3_api_field_config.route.v3.RouteAction.idle_timeout>`. // This affects the value of :ref:`HttpConnectionManager.common_http_protocol_options.idle_timeout
// <envoy_v3_api_field_config.core.v3.HttpProtocolOptions.idle_timeout>`
HTTP_DOWNSTREAM_CONNECTION_IDLE = 1; HTTP_DOWNSTREAM_CONNECTION_IDLE = 1;
// Adjusts the idle timer for HTTP streams initiated by downstream clients.
// This affects the value of :ref:`RouteAction.idle_timeout <envoy_v3_api_field_config.route.v3.RouteAction.idle_timeout>` and
// :ref:`HttpConnectionManager.stream_idle_timeout
// <envoy_v3_api_field_extensions.filters.network.http_connection_manager.v3.HttpConnectionManager.stream_idle_timeout>`
HTTP_DOWNSTREAM_STREAM_IDLE = 2;
} }
message ScaleTimer { message ScaleTimer {

@ -980,7 +980,7 @@ message RouteAction {
// //
// If the :ref:`overload action <config_overload_manager_overload_actions>` "envoy.overload_actions.reduce_timeouts" // If the :ref:`overload action <config_overload_manager_overload_actions>` "envoy.overload_actions.reduce_timeouts"
// is configured, this timeout is scaled according to the value for // is configured, this timeout is scaled according to the value for
// :ref:`HTTP_DOWNSTREAM_CONNECTION_IDLE <envoy_api_enum_value_config.overload.v3.ScaleTimersOverloadActionConfig.TimerType.HTTP_DOWNSTREAM_CONNECTION_IDLE>`. // :ref:`HTTP_DOWNSTREAM_STREAM_IDLE <envoy_api_enum_value_config.overload.v3.ScaleTimersOverloadActionConfig.TimerType.HTTP_DOWNSTREAM_STREAM_IDLE>`.
google.protobuf.Duration idle_timeout = 24; google.protobuf.Duration idle_timeout = 24;
// Indicates that the route has a retry policy. Note that if this is set, // Indicates that the route has a retry policy. Note that if this is set,

@ -980,7 +980,7 @@ message RouteAction {
// //
// If the :ref:`overload action <config_overload_manager_overload_actions>` "envoy.overload_actions.reduce_timeouts" // If the :ref:`overload action <config_overload_manager_overload_actions>` "envoy.overload_actions.reduce_timeouts"
// is configured, this timeout is scaled according to the value for // is configured, this timeout is scaled according to the value for
// :ref:`HTTP_DOWNSTREAM_CONNECTION_IDLE <envoy_api_enum_value_config.overload.v3.ScaleTimersOverloadActionConfig.TimerType.HTTP_DOWNSTREAM_CONNECTION_IDLE>`. // :ref:`HTTP_DOWNSTREAM_STREAM_IDLE <envoy_api_enum_value_config.overload.v3.ScaleTimersOverloadActionConfig.TimerType.HTTP_DOWNSTREAM_STREAM_IDLE>`.
google.protobuf.Duration idle_timeout = 24; google.protobuf.Duration idle_timeout = 24;
// Indicates that the route has a retry policy. Note that if this is set, // Indicates that the route has a retry policy. Note that if this is set,

@ -340,6 +340,10 @@ message HttpConnectionManager {
// <envoy_api_field_config.core.v3.HttpProtocolOptions.max_stream_duration>` does not apply to // <envoy_api_field_config.core.v3.HttpProtocolOptions.max_stream_duration>` does not apply to
// this corner case. // this corner case.
// //
// If the :ref:`overload action <config_overload_manager_overload_actions>` "envoy.overload_actions.reduce_timeouts"
// is configured, this timeout is scaled according to the value for
// :ref:`HTTP_DOWNSTREAM_STREAM_IDLE <envoy_api_enum_value_config.overload.v3.ScaleTimersOverloadActionConfig.TimerType.HTTP_DOWNSTREAM_STREAM_IDLE>`.
//
// Note that it is possible to idle timeout even if the wire traffic for a stream is non-idle, due // Note that it is possible to idle timeout even if the wire traffic for a stream is non-idle, due
// to the granularity of events presented to the connection manager. For example, while receiving // to the granularity of events presented to the connection manager. For example, while receiving
// very large request headers, it may be the case that there is traffic regularly arriving on the // very large request headers, it may be the case that there is traffic regularly arriving on the

@ -339,6 +339,10 @@ message HttpConnectionManager {
// <envoy_api_field_config.core.v4alpha.HttpProtocolOptions.max_stream_duration>` does not apply to // <envoy_api_field_config.core.v4alpha.HttpProtocolOptions.max_stream_duration>` does not apply to
// this corner case. // this corner case.
// //
// If the :ref:`overload action <config_overload_manager_overload_actions>` "envoy.overload_actions.reduce_timeouts"
// is configured, this timeout is scaled according to the value for
// :ref:`HTTP_DOWNSTREAM_STREAM_IDLE <envoy_api_enum_value_config.overload.v3.ScaleTimersOverloadActionConfig.TimerType.HTTP_DOWNSTREAM_STREAM_IDLE>`.
//
// Note that it is possible to idle timeout even if the wire traffic for a stream is non-idle, due // Note that it is possible to idle timeout even if the wire traffic for a stream is non-idle, due
// to the granularity of events presented to the connection manager. For example, while receiving // to the granularity of events presented to the connection manager. For example, while receiving
// very large request headers, it may be the case that there is traffic regularly arriving on the // very large request headers, it may be the case that there is traffic regularly arriving on the

Loading…
Cancel
Save