pub struct RenoController { /* private fields */ }Expand description
TCP Reno congestion controller
Implementations§
Source§impl RenoController
impl RenoController
Sourcepub fn state(&self) -> &CongestionState
pub fn state(&self) -> &CongestionState
Access the underlying congestion state.
Sourcepub fn phase(&self) -> CongestionPhase
pub fn phase(&self) -> CongestionPhase
Return the current congestion phase.
Sourcepub fn dup_ack_count(&self) -> u32
pub fn dup_ack_count(&self) -> u32
Return the duplicate ACK count.
Trait Implementations§
Source§impl Clone for RenoController
impl Clone for RenoController
Source§fn clone(&self) -> RenoController
fn clone(&self) -> RenoController
Returns a duplicate of the value. Read more
1.0.0§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl CongestionController for RenoController
impl CongestionController for RenoController
Source§fn on_ack(&mut self, bytes_acked: u32, rtt_us: u64)
fn on_ack(&mut self, bytes_acked: u32, rtt_us: u64)
Handle acknowledgment of new data.
In SlowStart: cwnd += MSS per ACK (doubles per RTT) In CongestionAvoidance: cwnd += MSS * MSS / cwnd per ACK (~MSS per RTT) In FastRecovery: transition to CongestionAvoidance, cwnd = ssthresh (deflate)
Source§fn on_duplicate_ack(&mut self)
fn on_duplicate_ack(&mut self)
Handle a duplicate ACK.
After 3 duplicate ACKs: enter fast retransmit / fast recovery. During fast recovery: inflate cwnd by MSS per additional dup ACK.
Source§fn on_timeout(&mut self)
fn on_timeout(&mut self)
Handle a retransmission timeout.
This is the most severe congestion signal:
- ssthresh = max(cwnd / 2, 2 * MSS)
- cwnd = 1 MSS
- Back to slow start
- Double the RTO (exponential backoff)
Source§fn congestion_window(&self) -> u32
fn congestion_window(&self) -> u32
Returns the current congestion window in bytes.
Source§fn slow_start_threshold(&self) -> u32
fn slow_start_threshold(&self) -> u32
Returns the current slow-start threshold in bytes.
Source§impl Debug for RenoController
impl Debug for RenoController
Auto Trait Implementations§
impl Freeze for RenoController
impl RefUnwindSafe for RenoController
impl Send for RenoController
impl Sync for RenoController
impl Unpin for RenoController
impl UnwindSafe for RenoController
Blanket Implementations§
§impl<T> Any for Twhere
T: 'static + ?Sized,
impl<T> Any for Twhere
T: 'static + ?Sized,
§impl<T> Borrow<T> for Twhere
T: ?Sized,
impl<T> Borrow<T> for Twhere
T: ?Sized,
§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§unsafe fn clone_to_uninit(&self, dest: *mut u8)
unsafe fn clone_to_uninit(&self, dest: *mut u8)
🔬This is a nightly-only experimental API. (
clone_to_uninit)