Struct quicr_core::Config [−][src]
pub struct Config { pub max_remote_bi_streams: u16, pub max_remote_uni_streams: u16, pub idle_timeout: u16, pub stream_receive_window: u32, pub receive_window: u32, pub accept_buffer: u32, pub max_tlps: u32, pub reordering_threshold: u32, pub time_reordering_fraction: u16, pub using_time_loss_detection: bool, pub min_tlp_timeout: u64, pub min_rto_timeout: u64, pub delayed_ack_timeout: u64, pub default_initial_rtt: u64, pub default_mss: u64, pub initial_window: u64, pub minimum_window: u64, pub loss_reduction_factor: u16, pub protocols: Vec<Box<[u8]>>, pub keylog: Option<PathBuf>, pub use_stateless_retry: bool, }
Parameters governing the core QUIC state machine.
Fields
max_remote_bi_streams: u16
Maximum number of peer-initiated bidirectional streams that may exist at one time.
max_remote_uni_streams: u16
Maximum number of peer-initiated unidirectional streams that may exist at one time.
idle_timeout: u16
Maximum duration of inactivity to accept before timing out the connection (s).
Maximum value is 600 seconds. The actual value used is the minimum of this and the peer's own idle timeout.
stream_receive_window: u32
Maximum number of bytes the peer may transmit on any one stream before becoming blocked.
This should be set to at least the expected connection latency multiplied by the maximum desired
throughput. Setting this smaller than receive_window
helps ensure that a single stream doesn't monopolize
receive buffers, which may otherwise occur if the application chooses not to read from a large stream for a time
while still requiring data on other streams.
receive_window: u32
Maximum number of bytes the peer may transmit across all streams of a connection before becoming blocked.
This should be set to at least the expected connection latency multiplied by the maximum desired throughput. Larger values can be useful to allow maximum throughput within a stream while another is blocked.
accept_buffer: u32
Maximum number of incoming connections to buffer.
Calling Endpoint::accept
removes a connection from the buffer, so this does not need to be large.
max_tlps: u32
Maximum number of tail loss probes before an RTO fires.
reordering_threshold: u32
Maximum reordering in packet number space before FACK style loss detection considers a packet lost.
time_reordering_fraction: u16
Maximum reordering in time space before time based loss detection considers a packet lost. 0.16 format
using_time_loss_detection: bool
Whether time based loss detection is in use. If false, uses FACK style loss detection.
min_tlp_timeout: u64
Minimum time in the future a tail loss probe alarm may be set for (μs).
min_rto_timeout: u64
Minimum time in the future an RTO alarm may be set for (μs).
delayed_ack_timeout: u64
The length of the peer’s delayed ack timer (μs).
default_initial_rtt: u64
The default RTT used before an RTT sample is taken (μs)
default_mss: u64
The default max packet size used for calculating default and minimum congestion windows.
initial_window: u64
Default limit on the amount of outstanding data in bytes.
minimum_window: u64
Default minimum congestion window.
loss_reduction_factor: u16
Reduction in congestion window when a new loss event is detected. 0.16 format
protocols: Vec<Box<[u8]>>
List of supported application protocols.
If empty, application-layer protocol negotiation will not be preformed.
keylog: Option<PathBuf>
Path to write NSS SSLKEYLOGFILE-compatible key log.
Enabling this compromises security by committing secret information to disk. Useful for debugging communications when using tools like Wireshark.
use_stateless_retry: bool
Whether to force clients to prove they can receive responses before allocating resources for them.
This adds a round trip to the handshake, increasing connection establishment latency, in exchange for improved resistance to denial of service attacks.
Only meaningful for endpoints that accept incoming connections.