pub struct QuicProtocolOptions {
pub max_concurrent_streams: Option<UInt32Value>,
pub initial_stream_window_size: Option<UInt32Value>,
pub initial_connection_window_size: Option<UInt32Value>,
pub num_timeouts_to_trigger_port_migration: Option<UInt32Value>,
pub connection_keepalive: Option<QuicKeepAliveSettings>,
pub connection_options: String,
pub client_connection_options: String,
pub idle_network_timeout: Option<Duration>,
}
Expand description
QUIC protocol options which apply to both downstream and upstream connections. [#next-free-field: 9]
Fields§
§max_concurrent_streams: Option<UInt32Value>
Maximum number of streams that the client can negotiate per connection. 100 if not specified.
initial_stream_window_size: Option<UInt32Value>
Initial stream-level flow-control receive window <<https://tools.ietf.org/html/draft-ietf-quic-transport-34#section-4.1>
_> size. Valid values range from
1 to 16777216 (2^24, maximum supported by QUICHE) and defaults to 16777216 (16 * 1024 * 1024).
NOTE: 16384 (2^14) is the minimum window size supported in Google QUIC. If configured smaller than it, we will use 16384 instead. QUICHE IETF Quic implementation supports 1 bytes window. We only support increasing the default window size now, so it’s also the minimum.
This field also acts as a soft limit on the number of bytes Envoy will buffer per-stream in the QUIC stream send and receive buffers. Once the buffer reaches this pointer, watermark callbacks will fire to stop the flow of data to the stream buffers.
initial_connection_window_size: Option<UInt32Value>
Similar to initial_stream_window_size
, but for connection-level
flow-control. Valid values rage from 1 to 25165824 (24MB, maximum supported by QUICHE) and defaults
to 25165824 (24 * 1024 * 1024).
NOTE: 16384 (2^14) is the minimum window size supported in Google QUIC. We only support increasing the default window size now, so it’s also the minimum.
num_timeouts_to_trigger_port_migration: Option<UInt32Value>
The number of timeouts that can occur before port migration is triggered for QUIC clients. This defaults to 4. If set to 0, port migration will not occur on path degrading. Timeout here refers to QUIC internal path degrading timeout mechanism, such as PTO. This has no effect on server sessions.
connection_keepalive: Option<QuicKeepAliveSettings>
Probes the peer at the configured interval to solicit traffic, i.e. ACK or PATH_RESPONSE, from the peer to push back connection idle timeout. If absent, use the default keepalive behavior of which a client connection sends PINGs every 15s, and a server connection doesn’t do anything.
connection_options: String
A comma-separated list of strings representing QUIC connection options defined in
QUICHE <<https://github.com/google/quiche/blob/main/quiche/quic/core/crypto/crypto_protocol.h>
_> and to be sent by upstream connections.
client_connection_options: String
A comma-separated list of strings representing QUIC client connection options defined in
QUICHE <<https://github.com/google/quiche/blob/main/quiche/quic/core/crypto/crypto_protocol.h>
_> and to be sent by upstream connections.
idle_network_timeout: Option<Duration>
The duration that a QUIC connection stays idle before it closes itself. If this field is not present, QUICHE default 600s will be applied. For internal corporate network, a long timeout is often fine. But for client facing network, 30s is usually a good choice.
Trait Implementations§
Source§impl Clone for QuicProtocolOptions
impl Clone for QuicProtocolOptions
Source§fn clone(&self) -> QuicProtocolOptions
fn clone(&self) -> QuicProtocolOptions
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for QuicProtocolOptions
impl Debug for QuicProtocolOptions
Source§impl Default for QuicProtocolOptions
impl Default for QuicProtocolOptions
Source§impl Message for QuicProtocolOptions
impl Message for QuicProtocolOptions
Source§fn encoded_len(&self) -> usize
fn encoded_len(&self) -> usize
Source§fn encode(&self, buf: &mut impl BufMut) -> Result<(), EncodeError>where
Self: Sized,
fn encode(&self, buf: &mut impl BufMut) -> Result<(), EncodeError>where
Self: Sized,
Source§fn encode_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
fn encode_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
Source§fn encode_length_delimited(
&self,
buf: &mut impl BufMut,
) -> Result<(), EncodeError>where
Self: Sized,
fn encode_length_delimited(
&self,
buf: &mut impl BufMut,
) -> Result<(), EncodeError>where
Self: Sized,
Source§fn encode_length_delimited_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
fn encode_length_delimited_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
Source§fn decode(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
fn decode(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
Source§fn decode_length_delimited(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
fn decode_length_delimited(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
Source§fn merge(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
fn merge(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
self
. Read moreSource§fn merge_length_delimited(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
fn merge_length_delimited(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
self
.Source§impl Name for QuicProtocolOptions
impl Name for QuicProtocolOptions
Source§const NAME: &'static str = "QuicProtocolOptions"
const NAME: &'static str = "QuicProtocolOptions"
Message
.
This name is the same as it appears in the source .proto file, e.g. FooBar
.Source§const PACKAGE: &'static str = "envoy.config.core.v3"
const PACKAGE: &'static str = "envoy.config.core.v3"
.
, e.g. google.protobuf
.Source§fn full_name() -> String
fn full_name() -> String
Message
.
It’s prefixed with the package name and names of any parent messages,
e.g. google.rpc.BadRequest.FieldViolation
.
By default, this is the package name followed by the message name.
Fully-qualified names must be unique within a domain of Type URLs.Source§impl PartialEq for QuicProtocolOptions
impl PartialEq for QuicProtocolOptions
impl StructuralPartialEq for QuicProtocolOptions
Auto Trait Implementations§
impl Freeze for QuicProtocolOptions
impl RefUnwindSafe for QuicProtocolOptions
impl Send for QuicProtocolOptions
impl Sync for QuicProtocolOptions
impl Unpin for QuicProtocolOptions
impl UnwindSafe for QuicProtocolOptions
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T
in a tonic::Request