mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2025-02-24 14:51:11 +01:00
Ensure CIRC_BW event is emitted immediately upon slow start exit.
This ensures sbws gets this information quickly, so it can begin measurement.
This commit is contained in:
parent
646a1d5f9a
commit
7cb050bd7d
3 changed files with 32 additions and 2 deletions
|
@ -22,6 +22,7 @@
|
|||
#include "core/or/origin_circuit_st.h"
|
||||
#include "core/or/channel.h"
|
||||
#include "feature/nodelist/networkstatus.h"
|
||||
#include "feature/control/control_events.h"
|
||||
|
||||
#define NOLA_BDP_OVERSHOOT 100
|
||||
|
||||
|
@ -70,9 +71,20 @@ congestion_control_nola_process_sendme(congestion_control_t *cc,
|
|||
/* If we get a congestion event, the only thing NOLA
|
||||
* does is note this as if we exited slow-start
|
||||
* (which for NOLA just means we finished our ICW). */
|
||||
if (cc->next_cc_event == 0)
|
||||
if (cc->next_cc_event == 0) {
|
||||
if (cc->in_slow_start) {
|
||||
cc->in_slow_start = 0;
|
||||
|
||||
/* We need to report that slow start has exited ASAP,
|
||||
* for sbws bandwidth measurement. */
|
||||
if (CIRCUIT_IS_ORIGIN(circ)) {
|
||||
/* We must discard const here because the event modifies fields :/ */
|
||||
control_event_circ_bandwidth_used_for_circ(
|
||||
TO_ORIGIN_CIRCUIT((circuit_t*)circ));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* If we did not successfully update BDP, we must return. Otherwise,
|
||||
* NOLA can drift downwards */
|
||||
if (!congestion_control_update_circuit_estimates(cc, circ, layer_hint)) {
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
#include "core/or/origin_circuit_st.h"
|
||||
#include "core/or/channel.h"
|
||||
#include "feature/nodelist/networkstatus.h"
|
||||
#include "feature/control/control_events.h"
|
||||
|
||||
#define OUTBUF_CELLS (2*TLS_RECORD_MAX_CELLS)
|
||||
|
||||
|
@ -236,6 +237,14 @@ congestion_control_vegas_process_sendme(congestion_control_t *cc,
|
|||
cc->cwnd = vegas_bdp_mix(cc) + cc->vegas_params.gamma;
|
||||
cc->in_slow_start = 0;
|
||||
log_info(LD_CIRC, "CC: TOR_VEGAS exiting slow start");
|
||||
|
||||
/* We need to report that slow start has exited ASAP,
|
||||
* for sbws bandwidth measurement. */
|
||||
if (CIRCUIT_IS_ORIGIN(circ)) {
|
||||
/* We must discard const here because the event modifies fields :/ */
|
||||
control_event_circ_bandwidth_used_for_circ(
|
||||
TO_ORIGIN_CIRCUIT((circuit_t*)circ));
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (queue_use > cc->vegas_params.delta) {
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
#include "core/or/origin_circuit_st.h"
|
||||
#include "core/or/channel.h"
|
||||
#include "feature/nodelist/networkstatus.h"
|
||||
#include "feature/control/control_events.h"
|
||||
|
||||
#define USEC_ONE_MS (1000)
|
||||
|
||||
|
@ -179,6 +180,14 @@ congestion_control_westwood_process_sendme(congestion_control_t *cc,
|
|||
|
||||
log_info(LD_CIRC, "CC: TOR_WESTWOOD congestion. New max RTT: %"PRIu64,
|
||||
cc->max_rtt_usec/1000);
|
||||
|
||||
/* We need to report that slow start has exited ASAP,
|
||||
* for sbws bandwidth measurement. */
|
||||
if (CIRCUIT_IS_ORIGIN(circ)) {
|
||||
/* We must discard const here because the event modifies fields :/ */
|
||||
control_event_circ_bandwidth_used_for_circ(
|
||||
TO_ORIGIN_CIRCUIT((circuit_t*)circ));
|
||||
}
|
||||
}
|
||||
|
||||
/* cwnd can never fall below 1 increment */
|
||||
|
|
Loading…
Add table
Reference in a new issue