Tor
0.4.8.0-alpha-dev
|
#include <congestion_control_st.h>
Data Fields | |
smartlist_t * | sendme_pending_timestamps |
smartlist_t * | sendme_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 | |
}; | |
Fields common to all congestion control algorithms
Definition at line 124 of file congestion_control_st.h.
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_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().
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_t cc_alg |
Which congestion control algorithm to use. Taken from consensus parameter and negotiation during circuit setup.
Definition at line 200 of file congestion_control_st.h.
Referenced by congestion_control_nola_process_sendme(), congestion_control_nola_set_params(), congestion_control_vegas_process_sendme(), congestion_control_vegas_set_params(), congestion_control_westwood_process_sendme(), and congestion_control_westwood_set_params().
uint64_t cwnd |
Congestion window
Definition at line 146 of file congestion_control_st.h.
Referenced by congestion_control_get_control_port_fields(), congestion_control_get_package_window(), congestion_control_init_params(), congestion_control_nola_process_sendme(), congestion_control_vegas_log(), congestion_control_vegas_process_sendme(), congestion_control_westwood_process_sendme(), CWND_INC_SS(), CWND_UPDATE_RATE(), rfc3742_ss_inc(), and SENDME_PER_CWND().
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().
uint16_t cwnd_inc |
Number of cells to increment cwnd by during steady state
Definition at line 183 of file congestion_control_st.h.
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().
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().
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().
uint64_t ewma_rtt_usec |
RTT time data for congestion control.
Definition at line 138 of file congestion_control_st.h.
Referenced by congestion_control_get_control_port_fields(), congestion_control_update_circuit_rtt(), and time_delta_should_use_heuristics().
bool in_slow_start |
Are we in slow start?
Definition at line 168 of file congestion_control_st.h.
Referenced by congestion_control_get_control_port_fields(), congestion_control_init(), congestion_control_nola_process_sendme(), congestion_control_vegas_exit_slow_start(), congestion_control_vegas_process_sendme(), congestion_control_westwood_process_sendme(), CWND_UPDATE_RATE(), n_ewma_count(), and time_delta_should_use_heuristics().
uint64_t inflight |
Number of cells in-flight (sent but awaiting SENDME ack).
Definition at line 149 of file congestion_control_st.h.
Referenced by circuit_sent_cell_for_sendme(), congestion_control_get_package_window(), congestion_control_nola_process_sendme(), congestion_control_note_cell_sent(), congestion_control_vegas_process_sendme(), congestion_control_westwood_process_sendme(), cwnd_became_full(), and cwnd_became_nonfull().
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().
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().
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().
uint8_t sendme_inc |
Number of cells to ack with every sendme. Taken from consensus parameter and negotiation during circuit setup.
Definition at line 196 of file congestion_control_st.h.
Referenced by circuit_sent_cell_for_sendme(), congestion_control_init_params(), congestion_control_nola_process_sendme(), congestion_control_vegas_process_sendme(), congestion_control_westwood_process_sendme(), CWND_UPDATE_RATE(), rfc3742_ss_inc(), sendme_get_inc_count(), and SENDME_PER_CWND().
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().