40 std::chrono::microseconds{25000});
52 std::chrono::microseconds ack_delay,
53 bool is_handshake_confirmed =
true) -> void;
59 [[nodiscard]]
auto smoothed_rtt() const noexcept -> std::chrono::microseconds
68 [[nodiscard]]
auto rttvar() const noexcept -> std::chrono::microseconds
77 [[nodiscard]]
auto min_rtt() const noexcept -> std::chrono::microseconds
86 [[nodiscard]]
auto latest_rtt() const noexcept -> std::chrono::microseconds
97 [[nodiscard]]
auto pto() const noexcept -> std::chrono::microseconds;
112 [[nodiscard]]
auto max_ack_delay() const noexcept -> std::chrono::microseconds
129 auto reset() -> void;
157 static constexpr auto kInitialRtt = std::chrono::microseconds{333000};
RTT estimation for QUIC (RFC 9002 Section 5)
auto min_rtt() const noexcept -> std::chrono::microseconds
Get minimum observed RTT.
std::chrono::microseconds min_rtt_
Minimum observed RTT (RFC 9002 Section 5.2)
std::chrono::microseconds rttvar_
RTT variance (RFC 9002 Section 5.3)
auto update(std::chrono::microseconds latest_rtt, std::chrono::microseconds ack_delay, bool is_handshake_confirmed=true) -> void
Update RTT estimate from an ACK (RFC 9002 Section 5.3)
auto latest_rtt() const noexcept -> std::chrono::microseconds
Get latest RTT sample.
auto pto() const noexcept -> std::chrono::microseconds
Calculate probe timeout duration (RFC 9002 Section 6.2.1)
std::chrono::microseconds smoothed_rtt_
Smoothed RTT (RFC 9002 Section 5.3)
std::chrono::microseconds max_ack_delay_
Maximum ACK delay (from transport parameters)
static constexpr auto kInitialRtt
Default initial RTT (RFC 9002 Section 6.2.2)
std::chrono::microseconds initial_rtt_
Initial RTT value (used for reset)
auto set_max_ack_delay(std::chrono::microseconds delay) noexcept -> void
Set maximum ACK delay.
bool first_sample_
True if no RTT sample has been received yet.
auto reset() -> void
Reset RTT estimator to initial state.
auto smoothed_rtt() const noexcept -> std::chrono::microseconds
Get smoothed RTT.
auto has_sample() const noexcept -> bool
Check if any RTT sample has been received.
static constexpr auto kGranularity
Timer granularity (RFC 9002 Section 6.1.2)
auto max_ack_delay() const noexcept -> std::chrono::microseconds
Get maximum ACK delay.
auto rttvar() const noexcept -> std::chrono::microseconds
Get RTT variance.
static constexpr auto kDefaultMaxAckDelay
Default max ACK delay.
rtt_estimator()
Default constructor.
std::chrono::microseconds latest_rtt_
Most recent RTT sample.