Tor  0.4.8.0-alpha-dev
Data Fields
congestion_control_t Struct Reference

#include <congestion_control_st.h>

Data Fields

smartlist_tsendme_pending_timestamps
 
smartlist_tsendme_arrival_timestamps
 
uint64_t ewma_rtt_usec
 
uint64_t min_rtt_usec
 
uint64_t max_rtt_usec
 
uint64_t bdp [NUM_BDP_ALGS]
 
uint64_t cwnd
 
uint64_t inflight
 
uint16_t next_cc_event
 
uint16_t next_cwnd_event
 
bool in_slow_start
 
bool cwnd_full
 
bool blocked_chan
 
uint16_t cwnd_inc_pct_ss
 
uint16_t cwnd_inc
 
uint16_t cwnd_min
 
uint8_t cwnd_inc_rate
 
uint8_t sendme_inc
 
cc_alg_t cc_alg
 
bdp_alg_t bdp_alg
 
union {
   struct westwood_params_t   westwood_params
 
   struct vegas_params_t   vegas_params
 
   struct nola_params_t   nola_params
 
}; 
 

Detailed Description

Fields common to all congestion control algorithms

Definition at line 124 of file congestion_control_st.h.

Field Documentation

◆ 

union { ... }

Algorithm-specific parameters. The specific struct that is used depends upon the algorithm selected by the cc_alg parameter. These should not be accessed anywhere other than the algorithm-specific files.

◆ bdp_alg

bdp_alg_t bdp_alg

Which algorithm to estimate circuit bandwidth with. Taken from consensus parameter during circuit setup.

Definition at line 204 of file congestion_control_st.h.

Referenced by congestion_control_nola_process_sendme(), and congestion_control_westwood_process_sendme().

◆ blocked_chan

bool blocked_chan

Is the local channel blocked on us? That's a congestion signal

Definition at line 174 of file congestion_control_st.h.

Referenced by congestion_control_nola_process_sendme(), congestion_control_vegas_process_sendme(), and westwood_is_congested().

◆ cc_alg

cc_alg_t cc_alg

◆ cwnd

uint64_t cwnd

◆ cwnd_full

bool cwnd_full

Has the cwnd become full since last cwnd update?

Definition at line 171 of file congestion_control_st.h.

Referenced by congestion_control_vegas_process_sendme().

◆ cwnd_inc

uint16_t cwnd_inc

Number of cells to increment cwnd by during steady state

Definition at line 183 of file congestion_control_st.h.

◆ cwnd_inc_pct_ss

uint16_t cwnd_inc_pct_ss

Percent of cwnd to increment by during slow start

Definition at line 180 of file congestion_control_st.h.

Referenced by CWND_INC_SS(), and rfc3742_ss_inc().

◆ cwnd_inc_rate

uint8_t cwnd_inc_rate

Number of times per congestion window to update based on congestion signals

Definition at line 191 of file congestion_control_st.h.

Referenced by congestion_control_vegas_process_sendme(), and CWND_UPDATE_RATE().

◆ cwnd_min

uint16_t cwnd_min

Minimum congestion window (must be at least sendme_inc)

Definition at line 186 of file congestion_control_st.h.

Referenced by congestion_control_nola_process_sendme().

◆ ewma_rtt_usec

uint64_t ewma_rtt_usec

◆ in_slow_start

bool in_slow_start

◆ inflight

uint64_t inflight

◆ next_cc_event

uint16_t next_cc_event

For steady-state: the number of sendme acks until we will acknowledge a congestion event again. It starts out as the number of sendme acks in a congestion window and is decremented each ack. When this reaches 0, it means we should examine our congestion algorithm conditions. In this way, we only react to one congestion event per congestion window.

It is also reset to 0 immediately whenever the circuit's orconn is blocked, and when a previously blocked orconn is unblocked.

Definition at line 161 of file congestion_control_st.h.

Referenced by congestion_control_init(), congestion_control_nola_process_sendme(), congestion_control_vegas_process_sendme(), and congestion_control_westwood_process_sendme().

◆ next_cwnd_event

uint16_t next_cwnd_event

Counts down until we process a cwnd worth of SENDME acks. Used to track full cwnd status.

Definition at line 165 of file congestion_control_st.h.

Referenced by congestion_control_vegas_process_sendme().

◆ sendme_arrival_timestamps

smartlist_t* sendme_arrival_timestamps

Smartlist of uint64_t monotime timestamp of when sendme's arrived. FIFO queue that is managed similar to sendme_last_digests. Used to estimate circuitbandwidth and BDP.

Definition at line 135 of file congestion_control_st.h.

Referenced by congestion_control_free_(), and congestion_control_init().

◆ sendme_inc

uint8_t sendme_inc

◆ sendme_pending_timestamps

smartlist_t* sendme_pending_timestamps

Smartlist of uint64_t monotime usec timestamps of when we sent a data cell that is pending a sendme. FIFO queue that is managed similar to sendme_last_digests.

Definition at line 129 of file congestion_control_st.h.

Referenced by congestion_control_free_(), congestion_control_init(), congestion_control_note_cell_sent(), and congestion_control_update_circuit_rtt().


The documentation for this struct was generated from the following file: