pub struct Bbr3 { /* private fields */ }Expand description
Experimental! Use at your own risk.
Aims for reduced buffer bloat and improved performance over high bandwidth-delay product networks. Based on https://www.ietf.org/archive/id/draft-ietf-ccwg-bbr-05.html equivalent to a combination of BBR and C states https://www.ietf.org/archive/id/draft-ietf-ccwg-bbr-05.html#section-2.4 https://www.ietf.org/archive/id/draft-ietf-ccwg-bbr-05.html#section-2.1
Trait Implementations§
Source§impl Controller for Bbr3
impl Controller for Bbr3
Source§fn on_spurious_congestion_event(&mut self)
fn on_spurious_congestion_event(&mut self)
equivalent to BBRHandleSpuriousLossDetection: https://www.ietf.org/archive/id/draft-ietf-ccwg-bbr-05.html#section-5.5.11.2
Source§fn on_ack(
&mut self,
now: Instant,
sent: Instant,
bytes: u64,
pn: u64,
_app_limited: bool,
rtt: &RttEstimator,
)
fn on_ack( &mut self, now: Instant, sent: Instant, bytes: u64, pn: u64, _app_limited: bool, rtt: &RttEstimator, )
Packet deliveries were confirmed Read more
Source§fn on_end_acks(
&mut self,
_now: Instant,
in_flight: u64,
app_limited: bool,
largest_packet_num_acked: Option<u64>,
)
fn on_end_acks( &mut self, _now: Instant, in_flight: u64, app_limited: bool, largest_packet_num_acked: Option<u64>, )
Packets are acked in batches, all with the same
now argument. This indicates one of those batches has completed.Source§fn on_congestion_event(
&mut self,
now: Instant,
_sent: Instant,
is_persistent_congestion: bool,
is_ecn: bool,
lost_bytes: u64,
largest_lost_pn: u64,
)
fn on_congestion_event( &mut self, now: Instant, _sent: Instant, is_persistent_congestion: bool, is_ecn: bool, lost_bytes: u64, largest_lost_pn: u64, )
Packets were deemed lost or marked congested Read more
Source§fn on_mtu_update(&mut self, new_mtu: u16)
fn on_mtu_update(&mut self, new_mtu: u16)
The known MTU for the current network path has been updated
Source§fn on_ack_frequency_update(
&mut self,
ack_eliciting_threshold: u64,
requested_max_ack_delay: Duration,
)
fn on_ack_frequency_update( &mut self, ack_eliciting_threshold: u64, requested_max_ack_delay: Duration, )
The peer’s ACK-frequency parameters have changed Read more
Source§fn metrics(&self) -> ControllerMetrics
fn metrics(&self) -> ControllerMetrics
Retrieve implementation-specific metrics used to populate
qlog traces when they are enabled
This is also used to alter the pacing of the connection with
pacing_rate and send_quantumSource§fn clone_box(&self) -> Box<dyn Controller>
fn clone_box(&self) -> Box<dyn Controller>
Duplicate the controller’s state
Source§fn initial_window(&self) -> u64
fn initial_window(&self) -> u64
Initial congestion window
Auto Trait Implementations§
impl Freeze for Bbr3
impl RefUnwindSafe for Bbr3
impl Send for Bbr3
impl Sync for Bbr3
impl Unpin for Bbr3
impl UnwindSafe for Bbr3
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
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more